Fortran Coder

标题: ivf中如何设置使用BYTE数据类型? [打印本页]

作者: 一路有我    时间: 2017-11-17 19:45
标题: ivf中如何设置使用BYTE数据类型?
今天用IVF编译固定格式的源文件(注该文件可以在cvf编译成功)出现如下错误:形参与实参不匹配如图:

下面是一些具体的定义:


感觉ivf中对BYTE类型处理跟cvf不同,不知道如何设置,请大神赐教。
另外我把图1中call entier1(tab(num_octet:num_octet),iresult(num_champ),bsigne)
改成 call entier1(tab(num_octet),iresult(num_champ),bsigne)是可以编译的,但是不知道是否正确?



作者: li913    时间: 2017-11-18 11:12
形参是标量,实参就只能是标量,不能是数组或数组片段。
作者: vvt    时间: 2017-11-18 11:37
BYTE不是标准的fortran变量类型,尽量不要使用它。
可以用character或Integer(Kind=1)代替
作者: pasuka    时间: 2017-11-18 18:56
本帖最后由 pasuka 于 2017-11-18 18:58 编辑

这种类似union的黑魔法请慎用

传送门 https://docs.oracle.com/cd/E1995 ... 07365fe9/index.html
BYTE @
The BYTE data type provides a data type that uses only one byte of storage. It is a logical data type, and has the synonym, LOGICAL*1.

A variable of type BYTE can hold any of the following:

One character

An integer between -128 and 127

The logical values, .TRUE. or .FALSE.

If it is interpreted as a logical value, a value of 0 represents .FALSE., and any other value is interpreted as .TRUE.

f77 allows the BYTE type as an array index, just as it allows the REAL type, but it does not allow BYTE as a DO loop index (where it allows only INTEGER, REAL, and DOUBLE PRECISION). Wherever the compiler expects INTEGER explicitly, it will not allow BYTE.

Examples:

         BYTE         Bit3 / 8 /, C1 / 'W' /,
&                 Counter / 0 /, Switch / .FALSE. /
A BYTE item occupies 1 byte (8 bits) of storage, and is aligned on 1-byte boundaries.


作者: 一路有我    时间: 2017-11-27 09:36
pasuka 发表于 2017-11-18 18:56
这种类似union的黑魔法请慎用

传送门 https://docs.oracle.com/cd/E1995 ... 07365fe9/index.html

好的,谢谢
作者: 一路有我    时间: 2017-11-27 09:36
vvt 发表于 2017-11-18 11:37
BYTE不是标准的fortran变量类型,尽量不要使用它。
可以用character或Integer(Kind=1)代替 ...

好的,谢谢
作者: 一路有我    时间: 2017-11-27 09:37
li913 发表于 2017-11-18 11:12
形参是标量,实参就只能是标量,不能是数组或数组片段。

好的,谢谢




欢迎光临 Fortran Coder (http://bbs.fcode.cn/) Powered by Discuz! X3.2