Будет ли код Fortran 90 всегда работать с компилятором Fortran 95?

У нас есть сложная программа, написанная на Fortran 90, мне удалось найти только компиляторы Fortran 95. К сожалению, у меня ограниченный доступ и опыт, но мне нужно немедленно разобраться в проблеме.

Будет ли код Fortran 90 всегда корректно компилироваться компилятором Fortran 95, таким как gfortran?


person Sparky    schedule 29.10.2012    source источник
comment
Они не обязательно должны быть обратно совместимыми, но все, что я знаю, совместимы.   -  person Austin Henley    schedule 29.10.2012
comment
На вашем месте я бы не волновался - радикальные изменения в Фортране происходят примерно три раза в столетие.   -  person Hristo Iliev    schedule 30.10.2012


Ответы (2)


Версии Fortran обратно совместимы, возможно, с ошибкой. В стандарте Fortran95 были некоторые очень (заслуженно) непонятные конструкции, которые были окончательно удалены: например, из эта страница:

Fortran 95 указывает, что следующие функции Fortran 90 и FORTRAN 77 были удалены:

  • ASSIGN и назначенные операторы GO TO
  • ПАУЗА оператор
  • О управляющие переменные и выражения типа real
  • H редактировать дескриптор
  • Переход к оператору END IF из-за пределов блока IF

Но если ваш код не использует их (а этого не должно быть), вы должны быть в порядке с F95; в противном случае большинство компиляторов F95 по-прежнему будут иметь режим, с помощью которого вы сможете скомпилировать этот старый код, например, -std=legacy для gfortran.

person Jonathan Dursi    schedule 29.10.2012
comment
Кроме того, большинство компиляторов находятся на пути к тому, чтобы стать компиляторами Fortran 2003, которые по-прежнему будут компилировать код F90, если вы будете держаться подальше от старых малоизвестных конструкций, которые еще не были удалены в F90. На самом деле стандарты тщательно определены с учетом обратной совместимости, и поэтому современные компиляторы все еще способны компилировать F77 или даже более старые диалекты. Отношение F95 к F90 с точки зрения удаленных функций всегда будет фиксированным, как описано Джонатаном. Хотя я был бы больше обеспокоен любой новой итерацией, и, как было сказано, даже это не проблема. - person haraldkl; 30.10.2012

Компиляторы Fortran, за исключением IBM, обратно совместимы. Таким образом, любой допустимый код F90 будет компилироваться компилятором F95.

IBM делает вещи по-другому, они, похоже, совместимы с предыдущими версиями. Таким образом, xlf будет компилировать 77 и далее, а xlf90 будет выполнять 90/95 и т. д.

Обратите внимание, что всегда — это сильно сказано. И это действительно будет зависеть от вашего производителя компилятора. Но GNU Fortran или Intel Fortran в настоящее время имеют только один компилятор для всех разновидностей Fortran, хотя поддержка F2003/2008 иногда неравномерна.

person tpg2114    schedule 29.10.2012