COBOL-动词详细图解

本文概述

  • 输入/输出动词
  • 数据处理/算术动词
Procedure部门包含用于执行数据部门中描述的数据操作的代码。过程划分使用COBOL动词进行数据处理。语句始终以COBOL动词开头。在COBOL中, 有几个具有不同动作类型的动词。
  • 输入/输出动词
    • 接受
    • 显示
  • 数据处理/算术动词
    • 初始化
    • 移动
    • 减去
    • 划分
    • 计算
  • 字符串处理动词
    • String
    • 解锁
    • 检查
  • 文件处理动词
    • 打开
    • 改写
    • 开始
    • 删除
  • 程序分支动词
    • 呼叫
    • 出口
    • 退出程序
    • 表现
    • 停止运行
让我们详细讨论这些动词:
输入/输出动词 输入/输出动词用于获取用户数据并显示COBOL程序的输出。在此过程中, 使用以下两个动词:
接受
接受动词从OS或用户获取数据。它获取日期, 日期, 时间等数据。
如果程序接受用户数据, 则该数据需要由用户传递。从操作系统提取数据时, 我们可以使用FROM选项, 如下例所示:
ACCEPT JT-SUBJECT-NAME.ACCEPT JT-DATE FROM SYSTEM-DATE.

显示
该动词显示COBOL程序的输出。
DISPLAY JT-SUBJECT-NAME.DISPLAY "System date is : " WS-DATE.

例子:
IDENTIFICATION DIVISION.PROGRAM-ID. HELLO.DATA DIVISION.WORKING-STORAGE SECTION.01 JT-SUBJECT-NAME PIC X(25).01 JT-USER-DATE PIC X(10).01 JT-DATE PIC X(6).PROCEDURE DIVISION.ACCEPT JT-SUBJECT-NAME.ACCEPT JT-USER-DATE.ACCEPT JT-DATE FROM DATE.DISPLAY "Name :" JT-SUBJECT-NAME.DISPLAY "Date Entered by the User: " JT-USER-DATE.DISPLAY "System Date : " JT-DATE.STOP RUN.

编译并运行该程序后, 该程序将提示你输入名称和日期。输入主题名称和日期。
COBOL-动词详细图解

文章图片
然后按Enter。它将显示以下输出:
输出如下:
COBOL-动词详细图解

文章图片
数据处理/算术动词 这些动词用于数据处理和执行算术运算。
初始化
该动词用于初始化特定项目或组项目。零替换数字数据项。无法使用RENAME子句初始化数据名称。
字母数字或字母数据对象被替换为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 00011.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.

输出如下:
COBOL-动词详细图解

文章图片
移动
移动动词用于将数据从源数据复制到目标数据。我们可以将其用于组和基本数据项。对于组项目, 使用MOVE CORRESPONDING / 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-NUM1DISPLAY "WS-NUM2: " WS-NUM2DISPLAY "WS-NUM3: " WS-NUM3DISPLAY "WS-NUM4: " WS-NUM4DISPLAY "WS-ADDRESS: " WS-ADDRESSDISPLAY "WS-ADDRESS1 : " WS-ADDRESS1STOP RUN.

输出如下:
COBOL-动词详细图解

文章图片
以下是法律措施:
字母顺序 字母数字 数字
字母顺序 可能 可能 不可能
字母数字 可能 可能 可能
数字 不可能 可能 可能

此动词加两个或多个数字, 并将结果存储在目标操作数中。
语法如下:
ADD{literal-1 / data-item-1 } ..TOtarget-data-item-1 ..ADD{literal-1 / data-item-1 } ..GIVINGtarget-data-item-1 ..

让我们看一些例子:
范例1:
ADD10TO A.

这里, 假设A的值为5;执行上述语句后, a将为15。均值(10 + A)。
范例2:
ADD A B C TO D GIVING E

在此, 将A, B, C, D相加并将结果存储在E中(E = A + B + C + D)。
范例3:
ADD CORR WS-A TO WS-B

在此, 添加A和B中的子组项, 并添加结果, 结果存储在B中。
例子:
现在, 让我们看一下通过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-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.

输出如下:
COBOL-动词详细图解

文章图片
减去
该动词用于执行减法运算。
语法如下:
SUBTRACTdata-item1/constant FROM data-item2.SUBTRACTdata-item1/constant FROM data-item2 GIVING data-item3 ROUNDED.

在这里, ROUNDED是可选的。在使用SUBTRACT动词之前, 有一些规则:将FROM单词之前的所有值相加并从FROM单词之后的每个数据项/常量中减去。
  • 使用GIVING选项时, 结果将存储在单词GIVING之后的数据项中。
  • 不使用GIVING选项时, 结果将存储在FROM后面给出的数据项中。
范例1:
SUBTRACT 10 FROM A

在这里, 将从A中减去10, 结果将存储在A.中, 即(10 + A)。
范例2:
SUBTRACT A B C FROM GIVING E

此处, A, B, C与D相加和相减。结果存储在E中(E = D-(A + B + C))。
范例3:
SUBTRACT CORR WS-GROUP1 TO WS-GROUP2

在此, 减去WS-GROUP1和WS-GROUP2中的子组项, 并将结果存储在WS-GROUP2中。
例子:
现在, 让我们看一下通过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 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.

输出如下:
COBOL-动词详细图解

文章图片

乘法动词用于执行乘法运算。
语法如下:
MULTIPLYdata-item1 or constant BY data-item2.MULTIPLYdata-item1 or constant BY data-item2 GIVING data-item3 ROUNDED.

在这里, ROUNDED是可选的。
范例1:
MULTIPLY A BY B

此处, A和B中的值将相乘, 结果将存储在B中。(B = A * B)。
范例2:
MULTIPLY A BY B C

此处, A和B中的值将相乘, 结果存储在B中(B = A * B)。 A和C中的值相乘, 结果存储在C中(C = A * C)。
范例3:
MULTIPLY A BY B GIVING E

在此, 将A和B中的值相乘, 结果存储在E中(E = A * B)。
例子:
现在, 让我们看一下通过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 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.

输出如下:
COBOL-动词详细图解

文章图片
划分
DIVIDE动词用于执行除法运算。
语法如下:
DIVIDEdata-item1/constant INTO data-item2.DIVIDEdata-item1/constant BY (or INTO) data-item2 GIVING data-item3 ROUNDED? REMAINDER data-item4.

范例1:
DIVIDE A INTO B

在此, 将B的值除以A的值, 并将结果存储在B中(B = B / A)。
DIVIDE A BY B GIVING C REMAINDER R

在此, A的值除以B的值, 结果存储在C中(C = A / B), 余数存储在R中。
例子:
现在, 让我们看一下通过COBOL中的程序的一个示例:
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.

输出如下:
COBOL-动词详细图解

文章图片
计算
COBOL中的COMPUTE动词可编写算术表达式。计算动词替代加, 减, 乘和除动词。
例子:
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.

【COBOL-动词详细图解】输出如下:
COBOL-动词详细图解

文章图片

    推荐阅读