本文概述
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.
编译并运行该程序后, 该程序将提示你输入名称和日期。输入主题名称和日期。
然后按Enter。它将显示以下输出:
输出如下:
数据处理/算术动词
这些动词用于数据处理和执行算术运算。
初始化
该动词用于初始化特定项目或组项目。零替换数字数据项。无法使用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.
输出如下:
移动
移动动词用于将数据从源数据复制到目标数据。我们可以将其用于组和基本数据项。对于组项目, 使用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.
输出如下:
以下是法律措施:
字母顺序 | 字母数字 | 数字 | |
---|---|---|---|
字母顺序 | 可能 | 可能 | 不可能 |
字母数字 | 可能 | 可能 | 可能 |
数字 | 不可能 | 可能 | 可能 |
加
此动词加两个或多个数字, 并将结果存储在目标操作数中。
语法如下:
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.
输出如下:
减去
该动词用于执行减法运算。
语法如下:
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.
输出如下:
乘
乘法动词用于执行乘法运算。
语法如下:
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.
输出如下:
划分
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中的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.
输出如下:
评论前必须登录!
注册