Мне было поручено сохранить какой-то унаследованный код на 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
, все строки, начинающиеся с оператора common
, являются ошибками (например, Error: Unexpected COMMON statement at (1)
для каждой следующей строки, пока она не достигнет предела 25 ошибок). Я скомпилировал с -Wall -pedantic
, но исправление предупреждений не решило эту проблему.
Сумасшедшая вещь в том, что если я закомментирую все 4 строки, начинающиеся с IF='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)?