下面通過具體的程式示例,以便更好地說明動態呼叫的特點及用法。首先,假設在動態呼叫中,某一主程式**如下。
identificationdivision.
program-iddynamic-main.
auther***.
*environmentdivision.
*datadivision.
working storage section.
01identifpicx(10).
77test-numpic99.
*proceduredivision.
performinit-test-num.
move『dynamic-sub』toidentif.
callidentifusingtest-num.
display 『test-num after the first call: 』test-num.
performinit-test-num.
cancelidentif./*
此處將第一次呼叫後的子程式從記憶體中移除
*/move『dynamic-entry』 toidentif.
call
identifusingtest-num.
display 『test-num after the second call: 』test-num.
stop run.
init-test-num.
move10totest-num.
令該主程式中呼叫的子程式
dynamic-sub
的**如下。
identificationdivision.
program-iddynamic-sub.
auther***.
*environmentdivision.
*datadivision.
working storage section.
01plus-numpic99value15.
linkage section.
77main-numpic99.
*proceduredivisionusingmain-num.
addmain-numtoplus-num.
moveplus-numtomain-num.
goback.
entry『dynamic-entry』usingmain-num.
addmain-numtoplus-num.
moveplus-numtomain-num.
goback.
以上程式執行後,將產生如下輸出結果。
test-num after the first call: 25
test-num after the second call: 25
可以看到,以上這兩段程式實際上和靜態呼叫中的兩段示例程式是類似的。不過,此處子程式中雖然沒有手工進行初始化,但每次呼叫時仍為最初始的狀態。原因是在主程式中,第一次呼叫該子程式後使用了
cancel
語句將其從記憶體中移除掉了。這樣,在第二次呼叫時,該子程式將被重新讀入記憶體,其狀態和第一次呼叫時是一樣的。
最後,對本節所講的動態呼叫與其所對應的靜態呼叫總結如下。q在
cobol
程式中,靜態呼叫通常使用
call literal
語句實現。
call literal
語句實際上就是將所呼叫的程式名,或選擇性入口位址名作為直接數進行呼叫。靜態呼叫的子程式每次被呼叫時的狀態,為其上一次呼叫之後的狀態。
q動態呼叫通常使用
call identifier
語句實現。
call identifier
語句實際上就是將所呼叫的程式名,或選擇性入口位址名
move
到變數中呼叫。並且,凡是使用
call identifier
語句進行的呼叫都為動態呼叫。在動態呼叫中,可以通過
cancel identifier
語句,將呼叫後的子程式從記憶體中移除掉。這樣,便可使得下一次呼叫時該子程式為最初始的狀態。
Swift中動態呼叫例項方法介紹
在 swift 中有一類很有意思的寫法,可以讓我們不直接使用例項來呼叫這個例項上的方法,而是通zgorityqbm過型別取出這個型別的某個例項方法的簽名,然後再通過傳遞例項來拿到實際需要呼叫的方法。比如我們有這樣的定義 複製 如下 class myclass 想要呼叫 method 方法的話,最普通...
oracle動態呼叫 動態呼叫儲存過程
關鍵字 execute immediate sqlname using in 1 in 2 out c sql create or replace procedure p test a in varchar2,b in varchar2,c out varchar2 2 is 3 begin 4 c...
Oracle procedure呼叫例項
oracle經常需要進行一些儲存過程來進行其它資料庫呼叫或資料庫資料智慧型更新,下面就乙個例項來展示其全過程。首先,編寫乙個procedure 文字。然後,登陸sql developer 新增procedure 單擊procedure 新建,輸入乙個名字,單擊確定。然後將寫好的語句接入 begin ...