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
改用.它将控制返回到执行过程后的位置.