В моем коде fortran я пытаюсь включить цикл DO, но я заканчиваю «DO-цикл или BLOCK IF not closed». Он появляется, если какие-либо другие DO-петли после инструкции INCLUDE открыты, они рассматривают их как вложенные циклы, указывая на то, что включенная начальная строка DO интерпретируется правильно, но не оператор END DO. Я сократил включенный код до bare-bones, чтобы убедиться, что это цикл, а не инструкции в цикле, дающие проблемы. Контрольная переменная объявляется до цикла DO.Использование Do-Loops в include-файлах
DO A = 1,3
END DO
Не допускает ли Fortran77 кодов DO в INCLUDE-файлах?
Я использую gfortran для моего компилятора, если он сильно меняется.
Edit: грамматика
Edit2: Я использую GCC 4.6.2. Теперь, если это имеет значение, gfortran запускается из make-файла, созданного PSCAD. Я могу предоставить информацию об этом, если это уместно.
Вот код, который переживает этот вопрос:
TEST.F:
SUBROUTINE TESTFX()
INTEGER A
INCLUDE '../HDR.INC'
END
HDR.INC:
DO A = 1,3
END DO
Edit3: Отредактированные опечатки в коде и удален ВОЗВРАТ из подпрограммы.
Я думаю, эти паразитные кавычки после окончания и в конце этого являются непреднамеренным. и включение на самом деле в свою очередь? Я бы сделал чистое редактирование, но, может быть, тэты - ваша проблема. – agentp
Каков полный и точный текст сообщения об ошибке, которое вы получаете? Как и Джордж, я полагаю, что форматирование и кавычки не находятся в исходном исходном коде. –
«Ошибка в строке 6 TEST.f: цикл DO или BLOCK IF не закрыт» - это ошибка. Кроме того, я сделал предположение, что PSCAD использовал gfortran, что было неправильно. PSCAD фактически компилируется с использованием f2c, и я не уверен, что f2c использует g77, который находится в том же каталоге, что и f2c, вызываемый make-файлом. Это заканчивается компилятором: «f2c.exe -r8 -w -Nn5000 -NL400 -Nx400 -I» C: \ PROGRA ~ 1 \ PSCAD42 \ emtdc \ gnu \ inc "-I" C: \ PROGRA ~ 1 \ PSCAD42 \ emtdc \ gnu \ windows "-g TEST.f" из файла makefile. –