新彩天欢迎您!
幻海优品

COBOL - 基本动词

COBOL动词用于程序分区进行数据处理.语句始终以COBOL动词开头.有几个COBOL动词具有不同类型的动作.

输入/输出动词

输入/输出动词用于从用户获取数据和显示COBOL程序的输出.以下两个动词用于此过程 :

接受动词

接受动词用于获取日期,时间和日期等数据来自操作系统或直接来自用户.如果程序正在接受来自用户的数据,那么它需要通过JCL传递.从操作系统获取数据时,包括FROM选项,如以下示例所示 :

ACCEPT WS-STUDENT-NAME.ACCEPT WS-DATE FROM SYSTEM-DATE.


显示动词

显示动词用于显示COBOL程序的输出.

DISPLAY WS-STUDENT-NAME.DISPLAY "System date is : " WS-DATE.
COBOL PROGRAM
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程序 :

//SAMPLE JOB(TESTJCL,XXXXXX),CLASS = A,MSGCLASS = C//STEP1 EXEC PGM = HELLO//INPUT DD DSN=PROGRAM.DIRECTORY,DISP=SHR//SYSIN DD *TutorialsPoint/*

编译并执行上述程序时,它会生成以下结果 :

Name : TutorialsPointDate : 2014-08-30

初始化动词

初始化动词用于初始化组项或基本项.无法初始化具有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.

JCL 执行上述COBOL程序 :

//SAMPLE JOB(TESTJCL,XXXXXX),CLASS = A,MSGCLASS = C//STEP1 EXEC PGM = HELLO


当您编译并执行上述程序时,它会产生以下结果 :

My name is   :                               My ID is     : 12345Address      : 000               000000House Number : 000Country      :                Pincode      : 000000

移动动词

移动动词用于将数据从源数据复制到目标数据.它可以用于基本数据项和组数据项.对于组数据项,使用MOVE CORRESPONDING/CORR.在尝试它选项,MOVE CORR不起作用;但是在大型机服务器上,它会工作.

对于从字符串移动数据,使用MOVE(x:l),其中x是起始位置,l是长度.如果目标数据项PIC子句小于源数据项PIC子句,则将截断数据.如果目标数据项PIC子句大于源数据项PIC子句,则将在额外字节中添加ZEROS或SPACES.以下示例说明了这一点.

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-ADDRESS1STOP RUN.

JCL 执行上述COBOL程序.

//SAMPLE JOB(TESTJCL,XXXXXX),CLASS = A,MSGCLASS = C//STEP1 EXEC PGM = HELLO

当你编译并执行上面的程序时,它产生以下结果 :

WS-NUM1     : 123456789WS-NUM2     : 123456789WS-NUM3     : 56789WS-NUM4     : 345678WS-ADDRESS  : 123INDIA112233WS-ADDRESS1 : 123INDIA112233

法律移动

下表提供了有关合法移动和减去的信息;


字母字母数字数字
字母可能可能不可能
字母数字可能可能可能
数字不可能可能可能

添加动词

添加动词用于添加两个或多个数字并将结果存储在目标操作数中.

语法

下面给出的是添加两个的语法或更多数字和减号;

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-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-NUMESTOP RUN.

JCL 执行上述COBOL程序 :

//SAMPLE JOB(TESTJCL,XXXXXX),CLASS = A,MSGCLASS = C//STEP1 EXEC PGM = HELLO

当您编译并执行上述程序时,它会产生以下结果 :

WS-NUM1     : 000000010WS-NUM2     : 000000010WS-NUM3     : 000000030WS-NUM4     : 000000030WS-NUMA     : 000000010WS-NUMB     : 000000010WS-NUMC     : 000000010WS-NUMD     : 000000010WS-NUME     : 000000040

减去动词

使用减法动词对于减法运算.

语法

以下是Subtract运算的语法 :

SUBTRACT A B FROM C DSUBTRACT A B C FROM D GIVING ESUBTRACT CORR WS-GROUP1 TO WS-GROUP2

在synta中加入x-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-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-NUMESTOP RUN.


JCL 执行上述COBOL程序 :

//SAMPLE JOB(TESTJCL,XXXXXX),CLASS = A,MSGCLASS = C//STEP1 EXEC PGM = HELLO

当您编译并执行上述程序时,它会产生以下结果 :

WS-NUM1     : 000000010WS-NUM2     : 000000010WS-NUM3     : 000000080WS-NUM4     : 000000080WS-NUMA     : 000000010WS-NUMB     : 000000010WS-NUMC     : 000000010WS-NUMD     : 000000100WS-NUME     : 000000070


乘以动词

使用乘法动词用于乘法运算.

语法

下面给出的是将两个或多个数字乘以减去的语法;

MULTIPLY A BY B CMULTIPLY A BY B GIVING E

语法 - 1,A和B相乘,结果为st在B中存在(B = A * B). A和C相乘,结果存储在C(C = A * C).

在语法-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-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程序 :

//SAMPLE JOB(TESTJCL,XXXXXX),CLASS = A,MSGCLASS = C//STEP1 EXEC PGM = HELLO

当您编译并执行上述程序时,它会产生以下结果 :

WS-NUM1     : 000000010WS-NUM2     : 000000100WS-NUM3     : 000000100WS-NUMA     : 000000010WS-NUMB     : 000000010WS-NUMC     : 000000100

除以动词

除法动词用于除法运算.

语法

下面给出了除法运算的语法 :

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-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程序 :

//SAMPLE JOB(TESTJCL,XXXXXX),CLASS = A,MSGCLASS = C//STEP1 EXEC PGM = HELLO


编译并执行上述程序时,它会产生以下结果 :

WS-NUM1     : 000000005WS-NUM2     : 000000050WS-NUMA     : 000000100WS-NUMB     : 000000015WS-NUMC     : 000000006WS-REM      : 000000010

计算语句

计算语句用于在COBOL中编写算术表达式.这是Add,Subtract,Multiply和Divide的替代.

示例

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-NUMCSTOP RUN.


JCL 执行上述COBOL程序.

//SAMPLE JOB(TESTJCL,XXXXXX),CLASS = A,MSGCLASS = C//STEP1 EXEC PGM = HELLO


当你编译并执行上面的程序时,它产生以下结果 :

WS-NUM1     : 000000010WS-NUM2     : 000000010WS-NUM3     : 000000010WS-NUMA     : 000000050WS-NUMB     : 000000010WS-NUMC     : 000000105

免责声明:以上内容(如有图片或视频亦包括在内)有转载其他网站资源,如有侵权请联系删除