Синтаксическая ошибка в INQUIRE (inpunit, flen = iflen) в gfortran, но не в Lahey - PullRequest
0 голосов
/ 03 марта 2019

Я пытаюсь скомпилировать свой код, используя gfortran.Я получил эту ошибку:

   **INQUIRE(inpunit,flen=iflen)
                  1
   Error: Syntax error in INQUIRE statement at (1)**

Этот код был скомпилирован ранее с lahey.Проведя быстрое исследование, я обнаружил, что параметры INQUIRE имеют различное значение в gfortran по сравнению с lahey.

  1. inpunit - это скалярное выражение INTEGER, которое оценивает номер единицы ввода / вывода внешнего файла.
  2. flen - это скалярная переменная INTEGER по умолчанию, имеющая длину файла в байтах.

Мой вопрос заключается в том, правильно ли использовать gfortran для получения той же функциональности, что и в Lahey:

   **INQUIRE(inpunit,RECL=iflen) **

Схожи ли эти два утверждения?Спасибо

1 Ответ

0 голосов
/ 03 марта 2019

Нет, эти два абсолютно разные.

flen= - это нестандартное расширение, специфичное для компилятора Leahy, и возвращает длину файла.

recl= - максимальная записьдлина в файле (если файл подключен - открыт, в противном случае он равен 0) https://software.intel.com/en-us/fortran-compiler-developer-guide-and-reference-inquire-recl-specifier

Для соответствия стандарту вы должны использовать size=.Имейте в виду, что результат будет в единицах хранения файлов.Gfortran использует байты, но другие компиляторы могут использовать 4-байтовые слова.См. Какой хороший способ получить размер файла в байтах с помощью Fortran (ifort)? Найти размер входного файла в fortran90

...