我一直负责维护一些传统的fortran代码,并且在使用gfortran编译时遇到了麻烦。我已经写了Fortran 95的相当数量的,但是这是我与Fortran 77中第一次经历的这段代码是有问题的一个:这个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
编译,所有行开始与common
声明都是错误的(例如,对于后面的每一行,如果是Error: Unexpected COMMON statement at (1)
,直到达到25的错误限制)。我编译-Wall -pedantic
,但修复警告并没有解决这个问题。
疯狂的事情是,如果我注释掉所有4条线开始IF='TEST.IN'
,程序编译和按预期工作,但我必须注释掉所有这些的。留下他们中的任何一个都不会给我带来同样的错误,从common
声明开始。如果我注释掉common
声明,我会得到相同的错误,从下面一行开始。
我在使用gfortran
的OS X Leopard(不是Snow Leopard)。我用这个非常系统来编写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)成立什么情况下?
啊,当然。我想到了这一点,但我需要将可执行语句向外移动,并且最初并没有将它们移动得足够远。阅读规范帮助解读了我也遇到的其他一些错误。 – notJim 2010-05-16 21:05:30