有没有办法做到这一点?我希望仅在执行 exit 语句时才退出。如果不是,我希望它继续循环。
4 回答
我喜欢使用“PERFORM FOREVER”,因为它清楚地将代码标识为无限循环。“PERFORM UNTIL EXIT”也可以。下面是一些使用无限循环和“EXIT PERFORM”语句打印数字 1 到 10 的示例代码。此代码适用于 GNUCobol 2.0。
IDENTIFICATION DIVISION.
PROGRAM-ID. INFINITE-LOOP.
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
DATA DIVISION.
FILE SECTION.
WORKING-STORAGE SECTION.
01 COUNTER PIC 99 VALUE ZERO.
PROCEDURE DIVISION.
* USE EITHER OF THE TWO FOLLOWING LINES
* WHICHEVER YOU FIND MORE MEANINGFUL
* PERFORM UNTIL EXIT
PERFORM FOREVER
ADD 1 TO COUNTER
DISPLAY COUNTER
IF COUNTER > 9
EXIT PERFORM
END-IF
END-PERFORM
STOP RUN
.
在 Cobol 中有三种基本方法可以做到这一点:
- 循环展开 - 你重复一些代码,所以 P
- 退出表演
去
使用Next Sentence而不是 Go To 可能会起作用,但我不建议这样做
循环展开
下面的Part-a是在测试之前要执行的代码。
Perform Part-a
Perform until condition
.....
Perform Part-a
end-perform
退出执行
Perform until end-of-the-world
.....
if condition
Exit Perform
end-if
...
end-perform
Exit-Label.
continue.
去
Perform until end-of-the-world
.....
if condition
Go To Exit-Label
end-if
...
end-perform
Exit-Label.
continue.
PERFORM
这是Gary Cutler 的 GnuCOBOL 2.0 编程指南中的语法图:
从下面的描述来看,第 4 点:
UNTIL EXIT 选项将在 PERFORM 范围内重复执行代码,而 PERFORM 语句本身没有定义用于终止重复的条件。程序员可以在 PERFORM 的范围内包含一个退出循环的 EXIT PERFORM。
而且,最初并没有意识到它是在一个单独的点上,第 5 点:
FOREVER 选项与 UNTIL EXIT 具有相同的效果。
在进一步澄清之前,这可能是也可能不是您想要的。
获取相关的编程指南,并使用它。读。实验。重复直到理解或没有进展。如果没有进展,请询问。同事,GnuCOBOL 讨论区,或这里。
您可以使用具有给定条件的“执行直到”退出