我有一些旧的(~1995 年)遗留 fortran 代码,这些代码是用 g77 编译器编译的,在 gfortran 上失败。问题在于以下几行(不兼容的类型转换,字符到整数):
INTEGER CKYAN
DATA CKYAN / 'KYAN' /
变量 CKYAN 仅用作触发器一次:
IF(IWVTX.EQ.CKYAN)THEN
CALL FDCVERTEXSWITCHTOKYAN()
ENDIF
从输入文件(字符串 'KYAN' 或其他字符串)中读取整数 IWVTX。
我在 fortran 方面没有任何重要的经验,并且当我从字符串初始化整数变量时,我找不到任何关于发生了什么的文档。我已经检查了 g77 编译器。以下代码:
INTEGER it,ita,it1,it2,it3,it4,it5,it6
DATA it / 'KYAN' /
DATA ita / 'KYAN' /
DATA it1 / 'K' /
DATA it2 / 'Y' /
DATA it3 / 'A' /
DATA it4 / 'N' /
DATA it5 / 'O' /
DATA it6 / 'o' /
write(*,*) 'test', it, ita, it1, it2, it3, it4, it5, it6
产生输出:
1312905547 1312905547 538976331 538976345 538976321 538976334 538976335 538976367
因此,如果字符串相等,则数字也相等。如果一个字母紧挨着另一个字母,则其代码加 1。
问题如下:
- 这里发生了什么?
- 是否有功能与 gfortran 相同且可用?
- 或者有没有一种简单的方法来解决这个问题,而不涉及任何其他文件?
有人可以帮我吗?先感谢您。