2014-09-15 3 views
0

Я преобразование старого кода в Fortran, который я думаю, что это 77. Есть несколько использования IF следующим образом, что я не могу понять, что он делает:Fortran IF заявление без логического выражения

IF(x1-x2) 12, 13, 14 

12 WRITE(*,*) x1 
    . 
    . 
    . 
13 y=... 
    . 
    . 
14 DO x=x1,x2 
    IF(x-x2) 33, 34, 40 
    . 
    . 
    . 

Код соответствует и работает отлично, и он дает результаты. Кто-нибудь сталкивался с таким использованием IF?

+1

См. Также http://stackoverflow.com/q/6789946/3157076. – francescalus

+1

Был здесь несколько раз. –

ответ

4

Это arithmetic IF. Он относится к первой, второй или третьей метке в зависимости от того, является ли выражение отрицательным, нулевым или положительным.

В очень старых версиях Fortran (или FORTRAN) это была единственная форма заявления IF, которая была доступна.

Это, вероятно, немного странно, что он используется в версии, такой же, как и Fortran 77, которая имела более современный логический IF. Эта функция была объявлена ​​устаревшей в Fortran 90, но я не удивлюсь, если ее будут поддерживать более современные компиляторы Fortran.

+0

О, хорошо, поэтому порядок 1, 2, 3 для отрицательных, нулевых, положительных. спасибо – user3780714

+0

gfortran все еще поддерживает его, да. Я использую его с некоторым устаревшим кодом в Fortran 77. – siritinga

+1

В 1984 году я рассказывал своим ученикам, что это была плохая практика, и это, вероятно, скоро станет устаревшим. Добро пожаловать в мир реальных вычислений. – Jakub