编译旧Fortran代码的语法错误

时间:2017-12-19 20:11:27

标签: debugging fortran fortran77 legacy-code

我尝试使用fort77编译旧版Fortran代码。命令:

fort77 -c leg_code.f leg_code.o

失败了:

Error on line XXX: syntax error

XXX显示:

CHARACTER(LEN=10) TREE(2,MAXF)

其中MAXF定义为上面的某些行:

  INTEGER MAXF, MAXC
  PARAMETER (MAXF=400, MAXC=20)

如果我删除(LEN=10),则代码编译时没有问题。

有人知道这个错误的原因吗?

1 个答案:

答案 0 :(得分:2)

如评论中所述,声明声明

CHARACTER(LEN=10) TREE(2,MAXF)

在Fortran 77中无效。此形式声明了长度为10的rank-2数组,已在Fortran 90修订版中引入标准Fortran。

在Fortran 77中声明这样一个变量的替代形式

CHARACTER*10 TREE(2,MAXF)

CHARACTER TREE(2,MAXF)*10

将是必需的。只需删除(len=10),如

CHARACTER TREE(2,MAXF)

将变量声明为长度为1的字符数组,但这在Fortran 77中有效。