Как определить стандарт Fortran - 77, 90 или 95? - PullRequest
12 голосов
/ 24 декабря 2008

У меня есть фрагмент кода Fortran, и я не уверен, какой стандарт это - '77, '90 или '95. Существует ли стандартный инструмент для определения того, какому стандарту он соответствует?

Ответы [ 3 ]

25 голосов
/ 24 декабря 2008

Возможно, есть автоматизированные инструменты, но мои методы в основном эвристические:

  • Используют ли комментарии ! в любом месте строки (F90 +) или C в первом столбце (F77)?
  • Используются ли циклы do .. end do (F90 +) или do .. continue (F77)?
  • Продолжаются ли строки, используя & в конце строки (F90 +) или в столбце 6 (f77)?
  • Использует ли код module или type структуры (F90)?
  • Если в коде используются массивы, он работает с ними как с одной структурой (F90) или всегда использует циклы (F77)?
  • Используется ли динамическая память (с использованием методов allocatable или pointer) (F90)?

Обычно этого достаточно, чтобы различать F90 и F77. Различия между Фортраном 90 и Фортраном 77 намного, намного больше, чем различия между Фортраном 90 и Фортраном 95, поэтому я обычно на этом остановлюсь.

3 голосов
/ 04 октября 2011

Я добавляю функции в Фортран 2003 и 2008 (которые только что у меня в голове)

если программа имеет параметризованные типы данных (fortran 2003.) если конструктор массива использует квадратные скобки [] вместо (/ /) (fortran 2003.) если видите, есть возможность использования каррей (fortran 2008)

хотя многие компиляторы имеют специальные функции (например, функции Бесселя) как часть расширений, это истинная функция Fortran 2008 года.

(если есть какие-либо расхождения, дайте мне знать, что я отредактирую)

3 голосов
/ 24 декабря 2008

Если у вас есть доступ к GNU Fortran (gfortran), вы можете попробовать скомпилировать его с различными параметрами для --std и посмотреть, какой из них работает. Вы можете найти подробную информацию о вариантах диалекта здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...