2012-06-20 23 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

這是從FORTRAN 77.一個arithmetic if statement從FORTRAN 77規格(重點煤礦)改編:

算術IF語句的形式:

IF (e) s1 , s2 , s2

  • 其中:e是整數,實數或雙精度表達式

  • s1,s2s3各自是與算術IF語句出現在相同程序單元中的可執行語句的語句標籤。相同的語句標籤可能在相同的算術IF聲明中出現多次。

算術IF語句的執行使隨後的傳送控制的表達e的評價。 接下來執行由s1,s2s3標識的語句,因爲e的值分別小於零,等於零或大於零。

對於你的問題的例子,從上面的最後一句,

  • 如果J1-3 < 0聲明
  • 如果J1-3 = 0聲明20也將執行20將被執行
  • 如果J1-3 > 0聲明21將執行

編輯:一個現代化的,更可讀的方式來寫,這將是:

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 :) –