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.
现在我的问题是:
PARA2并返回MAINPARA吗?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)
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改用.它将控制返回到执行过程后的位置.