精通COBOL 11 5 2 靜態呼叫程式示例

2021-04-17 05:11:47 字數 2563 閱讀 9093

下面通過具體的程式示例,以便更好地說明靜態呼叫的特點及用法。首先,假設在靜態呼叫中,某一主程式**如下。

identificationdivision.

program-idstatic-main.

auther***.

*environmentdivision.

*datadivision.

working storage section.

77test-numpic99.

*proceduredivision.

performinit-test-num.

call『static-sub』usingtest-num.

display 『test-num after the first call: 』test-num.

performinit-test-num.

call『static-entry』usingtest-num.

display 『test-num after the second call: 』test-num.

stop run.

init-test-num.

move10totest-num.

令該程式的子程式,即與之所對應的被呼叫程式

static-sub

的**如下。

identificationdivision.

program-idstatic-sub.

auther***.

*environmentdivision.

*datadivision.

working storage section.

01plus-numpic99value15.

linkage section.

77main-num pic99.

*proceduredivisionusingmain-num.

addmain-numtoplus-num.

moveplus-numtomain-num.

goback.

entry『static-entry』usingmain-num.

addmain-numtoplus-num.

moveplus-numtomain-num.

goback.

以上程式執行後,將有如下輸出結果。

test-num after the first call: 25

test-num after the second call: 35

這是因為,在第一次呼叫前,子程式中的變數

plus-num

通過value

語句初始化為

15。將該變數中的

15和主程式中所傳遞的引數

test-num

中的10

相加後,結果將為

25。並且,此時子程式中的變數

plus-num

在相加運算結束後已由

15變成了25。

當進行第二次呼叫時,子程式為第一次呼叫結束後的狀態。此時,子程式中的變數

plus-num為25

,而並非如第一次呼叫前的

15。雖然第二次實際上仍然是對於子程式

static-sub

的呼叫,但此時該程式中的資料已不同了。第二次呼叫是將

plus-num

中的25

和test-num

中的10

相加,因此最終結果為35。

若要希望兩次呼叫時子程式的狀態都一致,則需要在子程式中進行相應的初始化。此處所說的初始化通常是指在該程式中的每乙個入口位址後,對工作儲存節中的本地資料進行初始化。進行初始化後的子程式如下。

identificationdivision.

program-idstatic-sub.

auther***.

*environmentdivision.

*datadivision.

working storage section.

01plus-numpic99value15.

linkage section.

77main-numpic99.

*proceduredivisionusingmain-num.

performinit-plus-num.

addmain-numtoplus-num.

moveplus-numtomain-num.

goback.

entry『static-entry』usingmain-num.

performinit-plus-num.

addmain-numtoplus-num.

moveplus-numtomain-num.

goback.

init-plus-num.

move15toplus-num.

仍然採用前面的主程式對以上子程式進行呼叫,則執行後的結果將如下。

test-num after the first call: 25

test-num after the second call: 25

總之,靜態呼叫的程式每次呼叫前都為其上一次呼叫後的狀態。這一點是關於靜態呼叫最需注意的地方,一定要牢記。

精通cobol 9 1 3 表的基本用途

表的基本用途是減少 編寫量,優化資料操作,便於資料查詢。對於如何利用表進行資料查詢,在本章後面幾節中將詳細講到。對於如何通過表減少 編寫量和優化資料操作,下面將結合乙個簡單例項進行具體講解。在銀行系統的應用軟體中,乙個類似於零存整取的系統是十分常見的。為突出本節討論的問題,可以對此進行乙個抽象模型的...

精通COBOL 11 2 1 子程式的命名規則

子程式的命名通常和普通程式的命名方式相同。但是需要注意的是,對於子程式而言,不可將其字首命名為以下這幾個名字。afbafh cbccee edcibm ifyigy igzilb 實際上,以上名字都屬於 ibm相關產品的名字。如果將子程式的字首命名為以上名字,則在主程式中將不能對其進行呼叫。當在主程...

精通COBOL 11 2 2 子程式的呼叫順序

首先需要說明的是,子程式實際上就是普通的程式。當某一程式被其他程式呼叫時,該程式才相對呼叫的程式而言被稱作子程式。因此,當某一程式作為子程式被呼叫後,該程式也可再將其他程式作為子程式進行呼叫。當多個程式進行呼叫時,便存在乙個呼叫順序的問題。關於子程式的呼叫順序,通常是提倡進行線形呼叫的。例如,以下這...