[請益] 請問副程式或函式的回傳位址

看板Fortran作者 (yiyi)時間14年前 (2010/12/17 17:11), 編輯推噓1(1015)
留言16則, 3人參與, 最新討論串1/1
請問一下 一般副程式或函式被呼叫時,當執行結束後會回到呼叫的副程式或函式再繼續往下執行 請問有辦法可以直接跳到最初的副程式嗎? 舉例如下 A呼叫B,B呼叫C,C呼叫D 如果讓B有一個ENTRY,讓D呼叫B的ENTRY後,可以回到A 目前的感覺好像不行 D呼叫B的ENTRY後,似乎還是會回到C -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.114.120.114

12/17 17:28, , 1F
遞迴?!
12/17 17:28, 1F

12/17 19:40, , 2F
四個sub都自己寫的嗎
12/17 19:40, 2F

12/20 09:49, , 3F
我剛試了一下,流程還是是一條龍的去跟回,不知是否有像VB
12/20 09:49, 3F

12/20 09:50, , 4F
的Try Catch的攔截功能
12/20 09:50, 4F

12/20 13:11, , 5F
若要針對IO錯誤進行攔截,得要自己寫相關偵測函式
12/20 13:11, 5F

12/20 13:13, , 6F
不過我不太瞭解你副程式D要如何呼叫副程式B的Entry?
12/20 13:13, 6F

12/20 13:14, , 7F
印象中Fortran沒有System.Exception,想攔截其他錯誤
12/20 13:14, 7F

12/20 13:15, , 8F
就等他炸掉看Debug資訊吧xd
12/20 13:15, 8F

12/20 16:58, , 9F
主要是想要讓別人的程式轉為module包裝,可是他的錯誤訊息
12/20 16:58, 9F

12/20 16:59, , 10F
是呼叫某一個sub來處理,但是中間過程有太多function
12/20 16:59, 10F

12/20 17:01, , 11F
這樣沒辦法用主程式來控制錯誤訊息的處理,除非大改寫=.=
12/20 17:01, 11F

12/21 11:38, , 12F
可以改寫就代表有程式碼可以用,開個全域變數
12/21 11:38, 12F

12/21 11:39, , 13F
到他處理錯誤訊息的sub,將各種情況賦值給全域變數
12/21 11:39, 13F

12/21 11:41, , 14F
在將處理錯誤訊息的sub,轉到你自己要處理的sub
12/21 11:41, 14F

12/21 11:41, , 15F
用全域變數判斷情況
12/21 11:41, 15F

12/21 11:43, , 16F
僅供參考,這得看你程式架構才能決定何種處理方式最好
12/21 11:43, 16F
文章代碼(AID): #1D2oaiTu (Fortran)
文章代碼(AID): #1D2oaiTu (Fortran)