我的任务是维护一些遗留的 fortran 代码,但我无法让它与 gfortran 一起编译。我已经写了相当多的 Fortran 95,但这是我第一次使用 Fortran 77。这段代码是有问题的:
CHARACTER*22 IFILE, OFILE
IFILE='TEST.IN'
OFILE='TEST.OUT'
OPEN(5,FILE=IFILE,STATUS='NEW')
OPEN(6,FILE=OFILE,STATUS='NEW')
common/pabcde/nfghi
当我用 编译时,以语句gfortran file.FOR
开头的所有行都是错误的(例如,对于接下来的每一行,直到它达到 25 个错误限制)。我用 编译,但修复警告并没有解决这个问题。common
Error: Unexpected COMMON statement at (1)
-Wall -pedantic
疯狂的是,如果我注释掉以开头的所有 4IF='TEST.IN'
行,程序将按预期编译和工作,但我必须将它们全部注释掉。将其中任何一个不加注释都会给我从common
语句开始的相同错误。如果我注释掉该common
语句,我会得到相同的错误,只是从下一行开始。
我在 OS X Leopard(不是 Snow Leopard)上使用gfortran
. 我已经广泛使用这个系统gfortran
来编写 Fortran 95 程序,所以理论上编译器本身是理智的。这段代码到底是怎么回事?
编辑:用 g77 编译给出:
test.FOR: In program `MAIN__':
test.FOR:154:
IFILE='TEST.IN'
1
test.FOR:158: (continued):
common/pabcde/nfghi
2
Statement at (2) invalid in context established by statement at (1)
呃,在(1)处建立了什么上下文?