当我打电话给另一个程序时,我需要问一下这个菜单程序中的问题是什么
点击1或2,当名为i的程序无法返回我的菜单程序时,
你可以帮助我,当我按下Esc键时,我怎么能回到我的菜单,或者
我的通话声明错误。
这是我的菜单程序的代码。
LINKAGE SECTION.
01 MY-PROG1 PIC X.
01 MY-PROG2 PIC X.
......
......
......
MAIN.
DISPLAY MENU-HEADER ERROR-MESSAGE.
PERFORM ENTRY-MENU UNTIL CHOICE = 3.
STOP RUN.
ENTRY-MENU.
ACCEPT MENU-SELECT.
PERFORM INPUT-CHOICE UNTIL CHOICE = 3.
STOP RUN.
INPUT-CHOICE.
IF CHOICE = 1
CALL 'MY-PROGRAM1' USING MY-PROG1
ELSE IF CHOICE =2
CALL 'MY-PROGRAM2' USING MY-PROG2
ELSE
MOVE "INVALID INPUT....." TO ERRMSG
DISPLAY ERROR-MESSAGE.
这是MY-PROGRAM1.COB这是我按Esc键时回调菜单程序的方式
LINKAGE SECTION.
01 MY-PROG1 PIC X.
01 MY-MENU PIC X.
......
......
......
MAIN.
.......
.......
STOP RUN.
ENTER-BIRTHDATE.
ACCEPT...
.......
IF ESC-KEY
DISPLAY CLEAR-SCREEN
CALL 'MENU'
ELSE IF F10
.....
.....
答案 0 :(得分:4)
您应该使用STOP RUN
替换被叫程序中的GOBACK
语句。
这是使用STOP RUN
和GOBACK
的一般规则:
GOBACK语句标记被调用程序的逻辑结束。
一般规则 如果在受调用运行时元素控制的程序中执行GOBACK语句,则目标程序的操作就像执行与GOBACK语句具有相同子句的EXIT PROGRAM语句一样。请参阅EXIT语句主题。 如果在不受调用运行时元素控制的程序中执行没有ADDRESS OF子句的GOBACK语句,则对象程序的操作就像执行与GOBACK语句具有相同子句的STOP RUN语句一样。 如果在不受调用运行时元素控制的程序中执行带有ADDRESS OF子句的GOBACK语句,则对象程序的操作就像执行STOP RUN语句一样,只不过在系统区域中设置了任意返回值。与等效的EXIT PROGRAM和STOP RUN语句相比,GOBACK语句可能会产生更紧凑的代码。 在执行指定GLOBAL短语的声明性过程时,不得执行GOBACK语句,但执行该声明性过程时调用的程序除外。 如果在函数中执行GOBACK语句,则该函数的操作就像执行EXIT FUNCTION语句一样。 如果在方法中执行GOBACK语句,则该方法的操作就像执行EXIT METHOD语句一样。 如果在迭代器中执行GOBACK语句,则迭代器的操作就像执行EXIT ITERATOR语句一样。
停止运行。这取决于您的系统。 大多数编译器上的STOP RUN终止程序,如果它被另一个cobol程序调用,则整个过程终止。
在这个link的末尾,您可以找到代表所有这些关系的漂亮模式。
编辑:(来自旧的Microsoft Cobol文档)
退出计划声明: EXIT PROGRAM语句出现在一个被调用的语句中 子程序,导致控制返回到 调用CALL后的下一个可执行语句 程序。 该声明必须是段落 本身。