3

有没有办法做到这一点?我希望仅在执行 exit 语句时才退出。如果不是,我希望它继续循环。

4

4 回答 4

5

我喜欢使用“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
       .
于 2015-03-16T14:15:55.193 回答
1

在 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.
于 2015-03-16T10:58:41.153 回答
1

PERFORM这是Gary Cutler 的 GnuCOBOL 2.0 编程指南中的语法图:

在此处输入图像描述

从下面的描述来看,第 4 点:

UNTIL EXIT 选项将在 PERFORM 范围内重复执行代码,而 PERFORM 语句本身没有定义用于终止重复的条件。程序员可以在 PERFORM 的范围内包含一个退出循环的 EXIT PERFORM。

而且,最初并没有意识到它是在一个单独的点上,第 5 点:

FOREVER 选项与 UNTIL EXIT 具有相同的效果。

在进一步澄清之前,这可能是也可能不是您想要的。

获取相关的编程指南,并使用它。读。实验。重复直到理解或没有进展。如果没有进展,请询问。同事,GnuCOBOL 讨论区,或这里。

于 2015-03-16T12:59:21.330 回答
0

您可以使用具有给定条件的“执行直到”退出

于 2015-03-16T03:25:38.657 回答