2016-08-22 125 views
2

我遇到的Fortran 77碼(gfortran編譯器), 以下行完美的作品一個奇怪的行爲(跳躍標記202爲iprob = 202):計算GOTO未能執行

 if(iprob .eq. 202) goto 202 
     !...some commands... 
    202 continue 

然而,其對應:

 GO TO (202), iprob 
     !...some commands... 
    202 continue 

沒有。該程序剛剛通過iprob = 202。

也許任何人有關於這個問題的想法?

+0

你是說在計算出來的goto情況下,'iprob'的值是'202',而不是'1'? – francescalus

+0

是的,在兩種情況下iprob = 202。我知道這些文檔,並且在計算出來的案例中找不到任何錯誤。因此我感到困惑,爲什麼失敗。可能在其他地方有一個錯誤,但我迄今沒有看到它。 – user92202

+0

我的錯誤!我誤解了命令,因爲iprob = 1它會跳轉。對不起,我感到困惑 – user92202

回答

3

形式

go to (202), iprob 

是計算goto語句。在這樣的語句中有一個標籤列表(這裏只是一個202)和一個整數表達式(這裏是iprob),它選擇標籤。

標籤選擇按列表中的順序排列。所以,要選擇第一個標籤,表達式的值應該是1iprob的值爲202將選擇第202個標籤(如果存在)。如果整數表達式超出範圍(小於1,超過列表中標籤的數量),則繼續執行下一行。像你一樣穿過goto。

您可能正在考慮分配轉到語句,其中標籤由表達式的值決定。但我不會詳細討論這個細節,因爲它不再是Fortran標準的一部分。

+0

非常感謝!這解決了這個問題。 – user92202

+0

計算的GOTO我總是發現有些混亂。我知道這是fortran77,但fortran90中的SELECTED CASE似乎值得在這種情況下看待。 – Holmz