0

我的任务是维护一些遗留的 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 个错误限制)。我用 编译,但修复警告并没有解决这个问题。commonError: 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)处建立了什么上下文?

4

1 回答 1

4

我认为您不能将COMMON语句放在 FORTRAN 77 中的可执行语句下方,请参阅规范,Sec。3.5. 只需将COMMON语句移到接近过程的开头,在任何可执行语句之前。

于 2010-05-16T20:56:50.970 回答