Мне поручили поддерживать некоторый устаревший код 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)?