Debugging 编译旧Fortran代码时出现语法错误
我正试图用Debugging 编译旧Fortran代码时出现语法错误,debugging,fortran,fortran77,legacy-code,Debugging,Fortran,Fortran77,Legacy Code,我正试图用fort77编译传统的Fortran代码。命令: fort77 -c leg_code.f leg_code.o 在以下情况下失败: Error on line XXX: syntax error 第XXX行XXX内容如下: CHARACTER(LEN=10) TREE(2,MAXF) 其中,MAXF在上面的一些行中定义为: INTEGER MAXF, MAXC PARAMETER (MAXF=400, MAXC=20) 如果删除(LEN=10),则代码编译时不会出现任
fort77
编译传统的Fortran代码。命令:
fort77 -c leg_code.f leg_code.o
在以下情况下失败:
Error on line XXX: syntax error
第XXX行XXX
内容如下:
CHARACTER(LEN=10) TREE(2,MAXF)
其中,MAXF
在上面的一些行中定义为:
INTEGER MAXF, MAXC
PARAMETER (MAXF=400, MAXC=20)
如果删除(LEN=10)
,则代码编译时不会出现任何问题
有人知道这个错误的原因吗?如评论中所述,声明声明
CHARACTER(LEN=10) TREE(2,MAXF)
在Fortran 77中无效。此表单声明长度为10的字符的秩2数组,在Fortran 90修订版中引入标准Fortran
在Fortran 77中声明这样一个变量的另一种形式
CHARACTER*10 TREE(2,MAXF)
或
这是必需的。只需删除(len=10)
,如中所示
CHARACTER TREE(2,MAXF)
将变量声明为长度为1的字符数组,但这在Fortran 77中有效。只需尝试:character(10)tree(2,maxf)或使用更现代的Fortran编译器(>=f90)进行编译。看起来您的代码位于lesst Fortran 90,您使用的是Fortran 77编译器。这是一段相当旧的代码,所以我想我应该用它来编译。我不认为应该尝试更现代的编译器。我尝试了
gfortran
,但它没有问题。你们两个能不能把你们的评论变成一个答案,这样我就可以接受了?谢谢你们两位!我不记得以前接触过variantCHARACTER TREE*10
,很高兴能学到一些关于它的知识f77@aka.nice,形式字符x*10
仍然是现代Fortran语言。实际上,它仍然很有用:它是重写字符长度声明的唯一方法,例如在字符(len=27)x,y*10,z
中(就像重写数组大小声明整数,维度(12)::a,b(5),c
)。
CHARACTER TREE(2,MAXF)