2012-06-20 2 views
6

Что это Fortran код среднее:Fortran IF заявление с номерами/этикетками, а не другое заявление

IF (J1-3) 20, 20, 21 
21 J1 = J1 - 3 
20 IF (J2-3) 22, 22, 23 
23 J2 = J2 - 3 
22 CONTINUE 

Я видел в старом проекте и я не имею ни малейшего представления, что это IF с номерами (этикетки) означает.

+3

Это не было, что странно в первые дни FORTRAN - это _The only_ условный оператор доступен на языке то. –

ответ

7

Это arithmetic if statement из FORTRAN 77. Адаптированная из спецификации Fortran 77 (курсив мой):

виде арифметического IF утверждения:

IF (e) s1 , s2 , s2

  • где: e - целочисленное, реальное или двойное точное выражение

  • s1, s2 и s3 - это метка оператора исполняемого оператора, которая появляется в том же программном блоке, что и оператор арифметики IF. Тот же ярлык оператора может появляться более одного раза в одном и том же арифметическом операторе IF.

Выполнение арифметических IF заявления вызывает вычисление выражения e с последующей передачей управления. Заявление, обозначенное s1, s2 или s3, выполняется следующим образом, когда значение e меньше нуля, равное нулю или больше нуля, соответственно.

Для примера в вашем вопросе, из последнего предложения выше,

  • Если J1-3 < 0 оператор 20 будет выполнен
  • Если J1-3 = 0 оператор 20 также будет выполнена
  • Если J1-3 > 0 заявление 21 будет выполнен

Edit: Современный и гораздо более удобным для чтения способом, чтобы написать это было бы:

if (J1-3 > 0) J1 = J1 - 3 
if (J2-3 > 0) J2 = J2 - 3 
+0

спасибо. –

+0

Нет проблем. Обратите внимание, что мое редактирование по-прежнему действует FORTRAN 77 (и, конечно, действительный Fortran 90, 95 и т. Д.). Он использует * логический оператор if *. Другим типом оператора if является оператор * block if *. – Chris

+4

Нижний регистр 'if' не является стандартным FORTRAN 77 :) –

Смежные вопросы