[問題] 沒有endif的版本

作者: BanPeeBan (踢屁屁)   2019-05-02 09:29:35
最近看到一個程式 感覺是很舊的版本了
用了不少DIMENSION EQUIVALANCE 甚至是
DO 3 I=1,10
3 I = I + 1
這種沒有enddo的形式
其中裡面的if函數也找不到endif
其中裡面的if函數也找不到endif
其中裡面的if函數也找不到endif
範例如下
READ (*,*) CODE_NO
IF (CODE_NO .GE. 50) THEN KK=999
DO 3 I=1,10
3 I = I + 1
範例中 if條件成立時
程式是僅多執行KK=999(與IF同行的statement)
抑或是連下方的DO-loop也算在IF裡面?
作者: fragmentwing (片翼碎夢)   2019-05-02 09:51:00
有疑惑+1 有的則是沒else卻又不是一行寫完然後你的問題應該改成if不成立do是否會執行吧不然就算if跟do的狀況分開,if沒執行do還是會執行啊另外編譯器好像do if的end常常會當同一種東西明明就是do沒end卻回報if出問題……喔喔,原來是因為手機版拆成兩行這樣我可以回答你這其實可以寫成if(邏輯成立)執行a有時候那個then不拔掉編譯還不給過當if寫成一行時,是可以不用end if的另外,這樣當然與下一行的do沒關係 這個if只是判斷要不要讓k輸入999而已kk補充一點,學C的朋友跟我是我,do這種行代碼寫法根本是在整人是“跟我說”……自動選字的鍋另外fortran的行代碼應用很廣,write read 的format格式、 do 迴圈和goto都有其實還挺好奇哪些用同樣行代碼會撞到哪些不會猜測write和goto不會撞的可能性最高equivalence不熟,dimension只是宣告成矩陣寫法,我也習慣這樣寫,會比單純各別宣告成例如a(10:10)還要明顯是矩陣integer,dimension(10:10) :: a,b,c這樣a,b,c都是10*10的二維矩陣應該說是陣列
作者: espresso1   2019-05-02 18:08:00
block if 的 then 右邊不能再放 statement,fortran 77就是這樣了,現在的 compiler 應該不給過
作者: special1990 (痞子)   2019-06-15 11:16:00
我老闆就是用這種行代碼的寫法...第一次看的時候超級崩潰
作者: blc (Anemos)   2019-06-27 21:13:00
if(i)10,20,30
作者: CGS0 (Mike Chen)   2019-07-08 14:25:00
F77 應該就有 ,很多程式語言都有類似的單行精簡版 if
作者: erre (erre)   2019-07-13 22:42:00
現在還用福船,誰聽到不生氣!

Links booklink

Contact Us: admin [ a t ] ucptt.com