个性化阅读
专注于IT技术分析

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

输出如下:

COBOL动词

以下是法律措施:

字母顺序 字母数字 数字
字母顺序 可能 可能 不可能
字母数字 可能 可能 可能
数字 不可能 可能 可能

此动词加两个或多个数字, 并将结果存储在目标操作数中。

语法如下:

ADD   {  literal-1 / data-item-1 } ..   TO   target-data-item-1 ..
ADD   {  literal-1 / data-item-1 } ..  GIVING   target-data-item-1 ..

让我们看一些例子:

范例1:

ADD   10  TO 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-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.

输出如下:

COBOL动词

减去

该动词用于执行减法运算。

语法如下:

SUBTRACT  data-item1/constant FROM data-item2.
SUBTRACT  data-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-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.

输出如下:

COBOL动词

乘法动词用于执行乘法运算。

语法如下:

MULTIPLY  data-item1 or constant BY data-item2.
MULTIPLY  data-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-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.

输出如下:

COBOL动词

划分

DIVIDE动词用于执行除法运算。

语法如下:

DIVIDE  data-item1/constant INTO data-item2.
DIVIDE  data-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-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.

输出如下:

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

输出如下:

COBOL动词

赞(1)
未经允许不得转载:srcmini » COBOL-动词详细图解

评论 抢沙发

评论前必须登录!