COBOL動(dòng)詞用在程序劃分進(jìn)行數(shù)據(jù)處理。聲明總是以一個(gè)COBOL動(dòng)詞。有幾種COBOL動(dòng)詞使用不同類型,如下面的操作:
輸入和輸出動(dòng)詞用于從用戶獲取數(shù)據(jù)并顯示COBOL程序的輸出。下面兩個(gè)動(dòng)詞用于此進(jìn)程:
從操作系統(tǒng)接受動(dòng)詞,比如日期,從用戶的時(shí)間和日期,或直接獲取數(shù)據(jù)。如果程序從用戶接收數(shù)據(jù),然后它需要通過(guò)JCL通過(guò)。同時(shí)由操作系統(tǒng)獲得,然后數(shù)據(jù)選項(xiàng)包括如圖下面的例子:
ACCEPT WS-STUDENT-NAME. ACCEPT WS-DATE FROM SYSTEM-DATE.
顯示動(dòng)詞是用來(lái)顯示COBOL程序的輸出。
DISPLAY WS-STUDENT-NAME. DISPLAY "System date is : " WS-DATE.
COBOL程序
IDENTIFICATION DIVISION. PROGRAM-ID. HELLO. DATA DIVISION. WORKING-STORAGE SECTION. 01 WS-STUDENT-NAME PIC X(25). 01 WS-DATE PIC X(10). PROCEDURE DIVISION. ACCEPT WS-STUDENT_NAME. ACCEPT WS-DATE FROM DATE. DISPLAY "Name : " WS-STUDENT_NAME. DISPLAY "Date : " WS-DATE. STOP RUN.
JCL以上COBOL程序執(zhí)行。
//SAMPLE JOB(TESTJCL,XXXXXX),CLASS=A,MSGCLASS=C //STEP1 EXEC PGM=HELLO //INPUT DD DSN=PROGRAM.DIRECTORY,DISP=SHR //SYSIN DD * YiiBai /*
當(dāng)編譯并執(zhí)行上面的程序它會(huì)產(chǎn)生以下結(jié)果:
Name : YiiBai Date : 2014-08-30
初始化動(dòng)詞被用來(lái)初始化組項(xiàng)目或基本事項(xiàng)。用RENAME子句中的數(shù)據(jù)名稱不能被初始化。數(shù)值數(shù)據(jù)項(xiàng)都受到ZEROES取代。字母數(shù)字或字母數(shù)據(jù)項(xiàng)之間用SPACES代替。如果包括REPLACING期限后的數(shù)據(jù)項(xiàng)可以被初始化,如圖下面的例子給出的替換值:
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.
JCL以上COBOL程序執(zhí)行。
//SAMPLE JOB(TESTJCL,XXXXXX),CLASS=A,MSGCLASS=C //STEP1 EXEC PGM=HELLO
當(dāng)編譯并執(zhí)行上面的程序它會(huì)產(chǎn)生以下結(jié)果:
My name is : My ID is : 12345 Address : 000 000000 House Number : 000 Country : Pincode : 000000
移動(dòng)動(dòng)詞被用來(lái)從源數(shù)據(jù)的數(shù)據(jù)復(fù)制到目標(biāo)數(shù)據(jù)。它可用于在兩個(gè)初級(jí)和組數(shù)據(jù)項(xiàng)。對(duì)于組數(shù)據(jù)項(xiàng)對(duì)應(yīng)MOVE/ CORR使用。在嘗試,選擇MOVE CORR無(wú)法正常工作,但主機(jī)服務(wù)器上它會(huì)工作。用于從一個(gè)字符串移動(dòng)數(shù)據(jù)MOVE(x:l)用于其中x是起始位置和l是長(zhǎng)度。如果目標(biāo)數(shù)據(jù)項(xiàng)的PIC子句小于源數(shù)據(jù)項(xiàng)的PIC子句中的數(shù)據(jù)將被截?cái)?。此外,如果目?biāo)數(shù)據(jù)項(xiàng)的PIC子句多于源數(shù)據(jù)項(xiàng)的PIC子句則零或空間將額外的字節(jié)增加。這將是通過(guò)查看下面的例子更清楚:
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-NUM1 DISPLAY "WS-NUM2 : " WS-NUM2 DISPLAY "WS-NUM3 : " WS-NUM3 DISPLAY "WS-NUM4 : " WS-NUM4 DISPLAY "WS-ADDRESS : " WS-ADDRESS DISPLAY "WS-ADDRESS1 : " WS-ADDRESS1 STOP RUN.
JCL以上COBOL程序執(zhí)行。
//SAMPLE JOB(TESTJCL,XXXXXX),CLASS=A,MSGCLASS=C //STEP1 EXEC PGM=HELLO
當(dāng)編譯并執(zhí)行上面的程序它會(huì)產(chǎn)生以下結(jié)果:
WS-NUM1 : 123456789 WS-NUM2 : 123456789 WS-NUM3 : 56789 WS-NUM4 : 345678 WS-ADDRESS : 123INDIA112233 WS-ADDRESS1 : 123INDIA112233
下表給出了關(guān)于合法的移動(dòng)信息:
字母 | 字母數(shù)字 | 數(shù)字 | |
---|---|---|---|
字母 | Possible | Possible | Not Possible |
字母數(shù)字 | Possible | Possible | Possible |
數(shù)字 | Not Possible | Possible | Possible |
添加動(dòng)詞是用來(lái)將兩個(gè)或多個(gè)數(shù)字和結(jié)果存儲(chǔ)在目標(biāo)操作數(shù)。以下是其中可以使用的語(yǔ)法:
語(yǔ)法
以下是語(yǔ)法來(lái)將兩個(gè)或多個(gè)數(shù)字:
ADD A B TO C D ADD A B C TO D GIVING E ADD CORR WS-GROUP1 TO WS-GROUP2
在語(yǔ)法-1,A,B,C添加和結(jié)果存儲(chǔ)在C(C = A+ B + C)。 A,B,D補(bǔ)充和結(jié)果保存在D(D = A + B+ D)。
在語(yǔ)法2中,A,B,C,D添加和結(jié)果存儲(chǔ)在E(E = A + B + C + D)
在語(yǔ)法3,附屬小組項(xiàng)目中WS-Group1和WS_GROUP2相加,結(jié)果存儲(chǔ)在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-NUM1 DISPLAY "WS-NUM2 : " WS-NUM2 DISPLAY "WS-NUM3 : " WS-NUM3 DISPLAY "WS-NUM4 : " WS-NUM4 DISPLAY "WS-NUMA : " WS-NUMA DISPLAY "WS-NUMB : " WS-NUMB DISPLAY "WS-NUMC : " WS-NUMC DISPLAY "WS-NUMD : " WS-NUMD DISPLAY "WS-NUME : " WS-NUME STOP RUN.
JCL以上COBOL程序執(zhí)行。
//SAMPLE JOB(TESTJCL,XXXXXX),CLASS=A,MSGCLASS=C //STEP1 EXEC PGM=HELLO
當(dāng)編譯并執(zhí)行上面的程序它會(huì)產(chǎn)生以下結(jié)果:
WS-NUM1 : 000000010 WS-NUM2 : 000000010 WS-NUM3 : 000000030 WS-NUM4 : 000000030 WS-NUMA : 000000010 WS-NUMB : 000000010 WS-NUMC : 000000010 WS-NUMD : 000000010 WS-NUME : 000000040
減法動(dòng)詞用于減法運(yùn)算。以下是其中可以使用的語(yǔ)法:
語(yǔ)法
以下是語(yǔ)法減法運(yùn)算:
SUBTRACT A B FROM C D SUBTRACT A B C FROM D GIVING E SUBTRACT CORR WS-GROUP1 TO WS-GROUP2
在語(yǔ)法-1,A,B相加,并從C結(jié)果中減去存儲(chǔ)在C(C = C-(A + B))。 A,B被添加,并從D.結(jié)果減去存放在D(D = D-(A + B))。
在語(yǔ)法-2,A,B,C添加,并從D結(jié)果中減去存儲(chǔ)在E(E = D-(A + B+ C))
在語(yǔ)法3,附屬小組項(xiàng)目,在WS-Group1和WS_GROUP2被減去結(jié)果存儲(chǔ)在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-NUM1 DISPLAY "WS-NUM2 : " WS-NUM2 DISPLAY "WS-NUM3 : " WS-NUM3 DISPLAY "WS-NUM4 : " WS-NUM4 DISPLAY "WS-NUMA : " WS-NUMA DISPLAY "WS-NUMB : " WS-NUMB DISPLAY "WS-NUMC : " WS-NUMC DISPLAY "WS-NUMD : " WS-NUMD DISPLAY "WS-NUME : " WS-NUME STOP RUN.
JCL以上COBOL程序執(zhí)行。
//SAMPLE JOB(TESTJCL,XXXXXX),CLASS=A,MSGCLASS=C //STEP1 EXEC PGM=HELLO
當(dāng)編譯并執(zhí)行上面的程序它會(huì)產(chǎn)生以下結(jié)果:
WS-NUM1 : 000000010 WS-NUM2 : 000000010 WS-NUM3 : 000000080 WS-NUM4 : 000000080 WS-NUMA : 000000010 WS-NUMB : 000000010 WS-NUMC : 000000010 WS-NUMD : 000000100 WS-NUME : 000000070
乘法動(dòng)詞用于乘法運(yùn)算。以下是其中可以使用的語(yǔ)法:
語(yǔ)法
以下是語(yǔ)法來(lái)將兩個(gè)或多個(gè)數(shù)字相乘:
MULTIPLY A BY B C MULTIPLY A BY B GIVING E
在語(yǔ)法-1,相乘A,B和存儲(chǔ)結(jié)果B(B = A * B)。相乘由C和存儲(chǔ)結(jié)果C(C = A* C)。
在語(yǔ)法2,相乘A,B和存儲(chǔ)結(jié)果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-NUM1 DISPLAY "WS-NUM2 : " WS-NUM2 DISPLAY "WS-NUM3 : " WS-NUM3 DISPLAY "WS-NUMA : " WS-NUMA DISPLAY "WS-NUMB : " WS-NUMB DISPLAY "WS-NUMC : " WS-NUMC STOP RUN.
JCL以上COBOL程序執(zhí)行。
//SAMPLE JOB(TESTJCL,XXXXXX),CLASS=A,MSGCLASS=C //STEP1 EXEC PGM=HELLO
當(dāng)編譯并執(zhí)行上面的程序它會(huì)產(chǎn)生以下結(jié)果:
WS-NUM1 : 000000010 WS-NUM2 : 000000100 WS-NUM3 : 000000100 WS-NUMA : 000000010 WS-NUMB : 000000010 WS-NUMC : 000000100
除以動(dòng)詞用于除法運(yùn)算。以下是其中可以使用的語(yǔ)法:
語(yǔ)法
以下是除法運(yùn)算的語(yǔ)法:
DIVIDE A INTO B DIVIDE A BY B GIVING C REMAINDER R
在語(yǔ)法-1,B除以A和結(jié)果存儲(chǔ)在B(B= B / A)。
在語(yǔ)法-2,A除以B和結(jié)果除以存放在C(C = A/ B)和余數(shù)被存儲(chǔ)在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-NUM1 DISPLAY "WS-NUM2 : " WS-NUM2 DISPLAY "WS-NUMA : " WS-NUMA DISPLAY "WS-NUMB : " WS-NUMB DISPLAY "WS-NUMC : " WS-NUMC DISPLAY "WS-REM : " WS-REM STOP RUN.
JCL以上COBOL程序執(zhí)行。
//SAMPLE JOB(TESTJCL,XXXXXX),CLASS=A,MSGCLASS=C //STEP1 EXEC PGM=HELLO
當(dāng)編譯并執(zhí)行上面的程序它會(huì)產(chǎn)生以下結(jié)果:
WS-NUM1 : 000000005 WS-NUM2 : 000000050 WS-NUMA : 000000100 WS-NUMB : 000000015 WS-NUMC : 000000006 WS-REM : 000000010
計(jì)算語(yǔ)句用來(lái)寫COBOL的算術(shù)表達(dá)式。這是一個(gè)替代加,減,乘,除。
例子
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-NUM1 DISPLAY "WS-NUM2 : " WS-NUM2 DISPLAY "WS-NUM3 : " WS-NUM3 DISPLAY "WS-NUMA : " WS-NUMA DISPLAY "WS-NUMB : " WS-NUMB DISPLAY "WS-NUMC : " WS-NUMC STOP RUN.
JCL以上COBOL程序執(zhí)行。
//SAMPLE JOB(TESTJCL,XXXXXX),CLASS=A,MSGCLASS=C //STEP1 EXEC PGM=HELLO
當(dāng)編譯并執(zhí)行上面的程序它會(huì)產(chǎn)生以下結(jié)果:
WS-NUM1 : 000000010 WS-NUM2 : 000000010 WS-NUM3 : 000000010 WS-NUMA : 000000050 WS-NUMB : 000000010 WS-NUMC : 000000105