GO TO如何控制COBOL中的流量工作?

Sid*_*rth 4 cobol ibm-midrange

PROCEDURE DIVISION
MAINPARA
    DISPLAY "HELLO MAIN".
    GO TO PARA1.
    DISPLAY " SECOND DISPLAY".
    STOP RUN.

PARA1.
    DISPLAY " I AM IN PARA1".

PARA2.
    DISPLAY "I AM IN PARA2"
....
PARA200
Run Code Online (Sandbox Code Playgroud)

我对流程了解不多.但是,我很困惑.当控制跳转到时GO TO PARA1,它将执行PARA1.

现在我的问题是:

  1. 它会执行PARA2并返回MAINPARA吗?
  2. 或者它会从PARA2程序结束时执行?

我不是一个COBOL程序员,我需要从一个迁移工具/程序,AMXW COBOL理解的代码.目标系统是IBM AS/400.

小智 6

您的程序将显示:

HELLO MAIN
 I AM IN PARA1
I AM IN PARA2
...
Run Code Online (Sandbox Code Playgroud)

因为GO TO移动程序的执行点.然后它从移动到的地方顺序执行.

在这个对立面上,如果用GO TO动词替换PERFORM动词,程序:

PROCEDURE DIVISION
MAINPARA
    DISPLAY "HELLO MAIN".
    PERFORM PARA1.
    DISPLAY " SECOND DISPLAY".
    STOP RUN.

PARA1.
    DISPLAY " I AM IN PARA1".

PARA2.
    DISPLAY "I AM IN PARA2"
....
PARA200
Run Code Online (Sandbox Code Playgroud)

会显示:

HELLO MAIN
 I AM IN PARA1
SECOND DISPLAY
Run Code Online (Sandbox Code Playgroud)


Tam*_*Tas 5

GO TO声明永久地将执行从程序的一部分转移到程序的另一部分.之后GO TO PARA1,执行将跳转到PARA1标签,执行以下段落然后从那里继续.

OUTPUT:

HELLO MAIN
 I AM IN PARA1
I AM IN PARA2
.
.
I AM IN PARA200
Run Code Online (Sandbox Code Playgroud)

因此,执行将继续,直到遇到STOP RUN语句或运行时错误.

注意: GO TO语句通常被认为是不好的做法.记录这些GO TO陈述的位置变得更加困难.我建议PERFORM改用.它将控制返回到执行过程后的位置.