本文概述
程序中有一些语句需要重复执行, 例如读取文件的每个记录直到其结尾。程序中的语句将按一系列顺序运行, 直到或除非流程中执行的任何语句改变了执行顺序。
对于迭代编程, 在COBOL中使用PERFORM语句。这些循环语句是:
- 直通
- 直到执行
- 执行时间
- 执行变化
直通
Perform Thru通过按顺序给出段落的名字和姓氏来执行一系列的段落。执行最后一段后, 控件将返回。
根据语句的编码方式, PERFORM主要分为两种类型:
- 内联执行
- 大纲执行
让我们看看它们之间的区别:
排队 | 大纲 |
---|---|
INLINE在PERFORM和END-PERFORM之间执行一系列语句或语句块。 | OUTLINE Perform用于执行一系列在单独的部分或段落中编码的语句或语句块, 这些语句或语句块未与PERFORM语句一起编码。 |
这不需要执行任何需要编码的单独的PARAGRAPH或SECTION。 | 它需要一个单独的PARAGRAPH或SECTION, 需要对要执行的语句进行编码。 |
在这种情况下, 必须使用范围终止符(END-PERFORM)。 | 在这种情况下, 不需要范围终止符(END-PERFORM)。 |
语法:-以下是INLINE PERFORM的语法:PERFORM DISPLAY’HELLO WORLD’END-PERFORM。 | 语法:-以下是OUTLINE PERFORM的语法:PERFORM PARAGRAPH1 THRU PARAGRAPH2 |
例子:
让我们看一个PERFORM THRU语句的例子:
IDENTIFICATION DIVISION.
PROGRAM-ID. HELLO.
PROCEDURE DIVISION.
A-PARA.
PERFORM DISPLAY 'IN A-PARA'
END-PERFORM.
PERFORM C-PARA THRU E-PARA.
B-PARA.
DISPLAY 'IN B-PARA'.
STOP RUN.
C-PARA.
DISPLAY 'IN C-PARA'.
D-PARA.
DISPLAY 'IN D-PARA'.
E-PARA.
DISPLAY 'IN E-PARA'.
输出如下:
当你编译并执行上述程序时, 它将显示以下输出:
直到执行
语句块或段落/节将在PERFORM UNTIL语句中执行, 直到指定条件成立。
默认条件为” WITH TEST BEFORE”, 它指定在执行段落中的语句之前测试条件。
语法如下:
以下是PERFORM UNTIL的语法:
PERFORM A-PARA UNTIL COUNT=5
PERFORM A-PARA WITH TEST BEFORE UNTIL COUNT=5
PERFORM A-PARA WITH TEST AFTER UNTIL COUNT=5
例子:
让我们看一个PERFORM UNTIL语句的例子:
IDENTIFICATION DIVISION.
PROGRAM-ID. HELLO.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 WS-CNT PIC 9(1) VALUE 0.
PROCEDURE DIVISION.
A-PARA.
PERFORM B-PARA WITH TEST AFTER UNTIL WS-CNT>3.
STOP RUN.
B-PARA.
DISPLAY 'WS-CNT : 'WS-CNT.
ADD 1 TO WS-CNT.
输出如下:
当你编译并执行上述程序时, 它将显示以下输出:
执行时间
PERFORM TIMES主要用于以指定的次数重复执行语句或段落/节的块。
语法如下:
以下是PERFORM TIMES的语法:
PERFORM A-PARA 5 TIMES.
例子:
让我们看一个PERFORM TIMES的例子:
IDENTIFICATION DIVISION.
PROGRAM-ID. HELLO.
PROCEDURE DIVISION.
A-PARA.
PERFORM B-PARA 3 TIMES.
STOP RUN.
B-PARA.
DISPLAY 'IN B-PARA'.
输出如下:
当你编译并执行上述程序时, 它将显示以下输出:
执行变化
语句或段落/节的块将在PERFORM VARYING中执行, 直到条件在UNTIL短语中变为真。
语法如下:
以下是PERFORM VARYING的语法:
PERFORM A-PARA VARYING A FROM 1 BY 1 UNTIL A = 5.
例子:
让我们看一个PERFORM VARYING的例子:
IDENTIFICATION DIVISION.
PROGRAM-ID. HELLO.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 WS-A PIC 9(2) VALUE 0.
PROCEDURE DIVISION.
A-PARA.
PERFORM B-PARA VARYING WS-A FROM 2 BY 2 UNTIL WS-A=12
STOP RUN.
B-PARA.
DISPLAY 'IN B-PARA ' WS-A.
输出如下:
当你编译并执行上述程序时, 它将显示以下输出:
转到声明
在程序中, GO TO语句更改执行流程。在此语句中, 控制仅在向前方向上转移。它用于退出程序。各种类型的GO TO语句如下:
无条件转到
以下是无条件转到的语法:
GO TO para-name.
有条件转到
以下是有条件转到的语法:
GO TO para-1 para-2 para-3 DEPENDING ON x.
在这里, 如果x = 1, 则控件将转移到第一段, 如果x = 2, 则控件将转移到第二段, 依此类推。
例子:
让我们来看一个GO To语句的示例:
IDENTIFICATION DIVISION.
PROGRAM-ID. HELLO.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 WS-A PIC 9 VALUE 2.
PROCEDURE DIVISION.
A-PARA.
DISPLAY 'IN A-PARA'
GO TO B-PARA.
B-PARA.
DISPLAY 'IN B-PARA '.
GO TO C-PARA D-PARA DEPENDING ON WS-A.
C-PARA.
DISPLAY 'IN C-PARA '.
D-PARA.
DISPLAY 'IN D-PARA '.
STOP RUN.
输出如下:
当你编译并执行上述程序时, 它将显示以下输出:
评论前必须登录!
注册