cobol基本動詞
基本動詞用于過程部中的數據處理。每個語句總是以cobol動詞開頭。
input(輸入)/output(輸出)
輸入輸出動詞用于從用戶獲取數據。并顯示cobol程序的輸出。
accept
用于從操作系統或者用戶獲取數據,例如日期、時間等。如果程序從用戶獲取數據,需要通過jcl傳遞,從操作系統獲取數據from選項如下:
accept yourname.
accept currdate from system-date.
display
用于顯示cobol程序的輸出。
例:
display yourname.
display '66666'.
initialize(初始化)
用來初始化組或基本項。數據名為rename的子句不能被初始化。
數字數據項由zeroes代替。
字母數據項或字母數字由spaces代替。
如果包含replacing語句,則數據項可被初始化為給定替換的值。
IDENTIFICATION DIVISION.
PROGRAM-ID. HELLO.DATA DIVISION.WORKING-STORAGE SECTION.01 WS-NAME PIC A(30) VALUE 'ABCDEF'.01 WS-ID PIC 9(5).01 WS-ADDRESS. 05 WS-HOUSE-NUMBER PIC 9(3).05 WS-COUNTRY PIC X(15).05 WS-PINCODE PIC 9(6) VALUE 123456.PROCEDURE DIVISION.A000-FIRST-PARA.INITIALIZE WS-NAME, WS-ADDRESS.INITIALIZE WS-ID REPLACING NUMERIC DATA BY 12345.DISPLAY "My name is : "WS-NAME.DISPLAY "My ID is : "WS-ID.DISPLAY "Address : "WS-ADDRESS.DISPLAY "House Number : "WS-HOUSE-NUMBER.DISPLAY "Country : "WS-COUNTRY.DISPLAY "Pincode : "WS-PINCODE.STOP RUN.
move(移動)
移動動詞是用來將數據從源數據復制到目標數據的。
它可以用于基本和組數據項。
對于組數據項,使用MOVE CORRESPONDING/CORR。
在嘗試其它選項的時候,MOVE CORR不工作;但是在大型機服務器上工作。
對于從字符串移動數據,則使用MOVE(x:l),其中x是起始位置,l是長度。
如果目標數據項PIC子句少于源數據項PIC子句,則數據將被截斷。
如果目標數據項PIC子句多于源數據項PIC子句,則將添加額外的ZEROS或SAPCES字節。
例:
IDENTIFICATION DIVISION.
PROGRAM-ID. HELLO.DATA DIVISION.WORKING-STORAGE SECTION.01 WS-NUM1 PIC 9(9).01 WS-NUM2 PIC 9(9).01 WS-NUM3 PIC 9(5).01 WS-NUM4 PIC 9(6).01 WS-ADDRESS. 05 WS-HOUSE-NUMBER PIC 9(3).05 WS-COUNTRY PIC X(5).05 WS-PINCODE PIC 9(6).01 WS-ADDRESS1. 05 WS-HOUSE-NUMBER1 PIC 9(3).05 WS-COUNTRY1 PIC X(5).05 WS-PINCODE1 PIC 9(6).PROCEDURE DIVISION.A000-FIRST-PARA.MOVE 123456789 TO WS-NUM1.MOVE WS-NUM1 TO WS-NUM2 WS-NUM3.MOVE WS-NUM1(3:6) TO WS-NUM4.MOVE 123 TO WS-HOUSE-NUMBER.MOVE 'INDIA' TO WS-COUNTRY.MOVE 112233 TO WS-PINCODE.MOVE WS-ADDRESS TO WS-ADDRESS1.DISPLAY "WS-NUM1 : " WS-NUM1DISPLAY "WS-NUM2 : " WS-NUM2DISPLAY "WS-NUM3 : " WS-NUM3DISPLAY "WS-NUM4 : " WS-NUM4DISPLAY "WS-ADDRESS : " WS-ADDRESSDISPLAY "WS-ADDRESS1 : " WS-ADDRESS1STOP RUN.
合法移動
字母 | 字母數字 | 數字 | |
---|---|---|---|
字母 | 可能 | 可能 | 不可能 |
字母數字 | 可能 | 可能 | 可能 |
數字 | 不可能 | 可能 | 可能 |
add(加法)
加法動詞用于兩個或多個數字相加,并將結果存儲在目標運算對象中。
語法
以下為兩個或多個數字相加的語法:
ADD A B TO C DADD A B C TO D GIVING EADD CORR WS-GROUP1 TO WS-GROUP2
在語法句1中,A,B,C相加,結果存儲在C(C=A+B+C)。A,B,D相加,結果存儲在D(D=A+B+D)。
在語法句2中,A,B,C,D相加,結果存儲在E(E=A+B+C+D)。
在語法句3中,WS-GROUP1和WS-GROUP2中的子組項相加,結果存儲在WS-GROUP2中。
例:
IDENTIFICATION DIVISION.
PROGRAM-ID. HELLO.DATA DIVISION.WORKING-STORAGE SECTION.01 WS-NUM1 PIC 9(9) VALUE 10 .01 WS-NUM2 PIC 9(9) VALUE 10.01 WS-NUM3 PIC 9(9) VALUE 10.01 WS-NUM4 PIC 9(9) VALUE 10.01 WS-NUMA PIC 9(9) VALUE 10.01 WS-NUMB PIC 9(9) VALUE 10.01 WS-NUMC PIC 9(9) VALUE 10.01 WS-NUMD PIC 9(9) VALUE 10.01 WS-NUME PIC 9(9) VALUE 10.PROCEDURE DIVISION.ADD WS-NUM1 WS-NUM2 TO WS-NUM3 WS-NUM4.ADD WS-NUMA WS-NUMB WS-NUMC TO WS-NUMD GIVING WS-NUME.DISPLAY "WS-NUM1 : " WS-NUM1DISPLAY "WS-NUM2 : " WS-NUM2DISPLAY "WS-NUM3 : " WS-NUM3DISPLAY "WS-NUM4 : " WS-NUM4DISPLAY "WS-NUMA : " WS-NUMADISPLAY "WS-NUMB : " WS-NUMBDISPLAY "WS-NUMC : " WS-NUMCDISPLAY "WS-NUMD : " WS-NUMDDISPLAY "WS-NUME : " WS-NUMESTOP RUN.
subtract(減法)
用于減法運算
語法
SUBTRACT A B FROM C DSUBTRACT A B C FROM D GIVING ESUBTRACT CORR WS-GROUP1 TO WS-GROUP2
在語法句1中,A和B相加并從C中減去,結果存儲在C(C=C-(A+B))。A和B相加并從D中減去,結果存儲在D(D=D-(A+B))。
在語法句2中,A,B,C相加并從D中減去,結果存儲在E(E=D-(A+B+C))。
在語法句3中,WS-GROUP1和WS-GROUP2中的子組項相減,結果存儲在WS-GROUP2中。
例:
IDENTIFICATION DIVISION.
PROGRAM-ID. HELLO.DATA DIVISION.WORKING-STORAGE SECTION.01 WS-NUM1 PIC 9(9) VALUE 10 .01 WS-NUM2 PIC 9(9) VALUE 10.01 WS-NUM3 PIC 9(9) VALUE 100.01 WS-NUM4 PIC 9(9) VALUE 100.01 WS-NUMA PIC 9(9) VALUE 10.01 WS-NUMB PIC 9(9) VALUE 10.01 WS-NUMC PIC 9(9) VALUE 10.01 WS-NUMD PIC 9(9) VALUE 100.01 WS-NUME PIC 9(9) VALUE 10.PROCEDURE DIVISION.SUBTRACT WS-NUM1 WS-NUM2 FROM WS-NUM3 WS-NUM4.SUBTRACT WS-NUMA WS-NUMB WS-NUMC FROM WS-NUMD GIVING WS-NUME.DISPLAY "WS-NUM1 : " WS-NUM1DISPLAY "WS-NUM2 : " WS-NUM2DISPLAY "WS-NUM3 : " WS-NUM3DISPLAY "WS-NUM4 : " WS-NUM4DISPLAY "WS-NUMA : " WS-NUMADISPLAY "WS-NUMB : " WS-NUMBDISPLAY "WS-NUMC : " WS-NUMCDISPLAY "WS-NUMD : " WS-NUMDDISPLAY "WS-NUME : " WS-NUMESTOP RUN.
multiply(乘法)
用于乘法運算
語法
MULTIPLY A BY B CMULTIPLY A BY B GIVING E
在語法句1中,A和B相乘,結果存儲在B(B=AB)。A和C相乘,結果存儲在C(C=AC)。
在語法句2中,A和B相乘,結果存儲在E(E=A*B)。
例:
IDENTIFICATION DIVISION.
PROGRAM-ID. HELLO.DATA DIVISION.WORKING-STORAGE SECTION.01 WS-NUM1 PIC 9(9) VALUE 10 .01 WS-NUM2 PIC 9(9) VALUE 10.01 WS-NUM3 PIC 9(9) VALUE 10.01 WS-NUMA PIC 9(9) VALUE 10.01 WS-NUMB PIC 9(9) VALUE 10.01 WS-NUMC PIC 9(9) VALUE 10.PROCEDURE DIVISION.MULTIPLY WS-NUM1 BY WS-NUM2 WS-NUM3.MULTIPLY WS-NUMA BY WS-NUMB GIVING WS-NUMC.DISPLAY "WS-NUM1 : " WS-NUM1DISPLAY "WS-NUM2 : " WS-NUM2DISPLAY "WS-NUM3 : " WS-NUM3DISPLAY "WS-NUMA : " WS-NUMADISPLAY "WS-NUMB : " WS-NUMBDISPLAY "WS-NUMC : " WS-NUMCSTOP RUN.
divide(除法)
用于除法運算
語法
DIVIDE A INTO BDIVIDE A BY B GIVING C REMAINDER R
在語法句1中,B除以A,結果存儲在B(B=B/A)。
在語法句2中,A除以B,結果存儲在C(C=A/B),余數存儲在R。
例:
IDENTIFICATION DIVISION.
PROGRAM-ID. HELLO.DATA DIVISION.WORKING-STORAGE SECTION.01 WS-NUM1 PIC 9(9) VALUE 5.01 WS-NUM2 PIC 9(9) VALUE 250.01 WS-NUMA PIC 9(9) VALUE 100.01 WS-NUMB PIC 9(9) VALUE 15.01 WS-NUMC PIC 9(9).01 WS-REM PIC 9(9). PROCEDURE DIVISION.DIVIDE WS-NUM1 INTO WS-NUM2.DIVIDE WS-NUMA BY WS-NUMB GIVING WS-NUMC REMAINDER WS-REM.DISPLAY "WS-NUM1 : " WS-NUM1DISPLAY "WS-NUM2 : " WS-NUM2DISPLAY "WS-NUMA : " WS-NUMADISPLAY "WS-NUMB : " WS-NUMBDISPLAY "WS-NUMC : " WS-NUMCDISPLAY "WS-REM : " WS-REMSTOP RUN.
compute(計算)
用于在cobol中寫入算術表達式,替代加減乘除。
例:
IDENTIFICATION DIVISION.
PROGRAM-ID. HELLO.DATA DIVISION.WORKING-STORAGE SECTION.01 WS-NUM1 PIC 9(9) VALUE 10 .01 WS-NUM2 PIC 9(9) VALUE 10.01 WS-NUM3 PIC 9(9) VALUE 10.01 WS-NUMA PIC 9(9) VALUE 50.01 WS-NUMB PIC 9(9) VALUE 10.01 WS-NUMC PIC 9(9).PROCEDURE DIVISION.COMPUTE WS-NUMC= (WS-NUM1 * WS-NUM2) - (WS-NUMA / WS-NUMB) + WS-NUM3.DISPLAY "WS-NUM1 : " WS-NUM1DISPLAY "WS-NUM2 : " WS-NUM2DISPLAY "WS-NUM3 : " WS-NUM3DISPLAY "WS-NUMA : " WS-NUMADISPLAY "WS-NUMB : " WS-NUMBDISPLAY "WS-NUMC : " WS-NUMCSTOP RUN.
注:本系列文章參考下面網站
參考地址