Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Debugging 编译旧Fortran代码时出现语法错误_Debugging_Fortran_Fortran77_Legacy Code - Fatal编程技术网

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
,但它没有问题。你们两个能不能把你们的评论变成一个答案,这样我就可以接受了?谢谢你们两位!我不记得以前接触过variant
CHARACTER TREE*10
,很高兴能学到一些关于它的知识f77@aka.nice,形式
字符x*10
仍然是现代Fortran语言。实际上,它仍然很有用:它是重写字符长度声明的唯一方法,例如在
字符(len=27)x,y*10,z
中(就像重写数组大小声明
整数,维度(12)::a,b(5),c
)。
CHARACTER TREE(2,MAXF)