【发布时间】:2011-04-18 13:57:21
【问题描述】:
我有一些旧的(~1995 年)遗留的 fortran 代码,这些代码是用 g77 编译器编译的,但在 gfortran 上失败了。 问题出在以下几行(不兼容的类型转换,字符到整数):
INTEGER CKYAN
DATA CKYAN / 'KYAN' /
变量 CKYAN 仅作为触发器使用一次:
IF(IWVTX.EQ.CKYAN)THEN
CALL FDCVERTEXSWITCHTOKYAN()
ENDIF
整数 IWVTX 从输入文件(字符串 'KYAN' 或其他字符串)中读取。
我在 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 相同且可用的函数?
- 或者有没有一种简单的方法来解决这个问题,而不涉及任何其他文件?
谁能帮我解决这个问题?提前谢谢你。
【问题讨论】: