当我调用另一个程序时,我需要问一下我的菜单程序有什么问题
通过点击1或2,当程序呼叫我不能返回我的菜单程序时,
你能帮我吗?当我按Esc键的时候,我怎样才能回到我的菜单?
我的Call语句是错误的。
这是我的菜单程序的代码。
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
.....
..... 发布于 2012-05-05 23:16:27
您应该用GOBACK替换被调用的programm中的STOP RUN语句。
这是使用STOP RUN和GOBACK的一般规则
GOBACK语句标记被调用程序的逻辑结束。
一般规则如果在调用运行时元素控制下的程序中执行GOBACK语句,则目标程序就像执行与GOBACK语句具有相同子句的EXIT程序语句一样运行。请参阅主题EXIT语句。如果在不受调用的运行时元素控制的程序中执行不带ADDRESS OF子句的GOBACK语句,则目标程序的操作就像执行具有与GOBACK语句相同的子句的STOP RUN语句一样。如果在不受调用运行时元素控制的程序中执行带有ADDRESS OF子句的GOBACK语句,则目标程序的操作就像执行STOP RUN语句一样,只是在系统区域中设置了任意返回值。与等效的EXIT程序和STOP RUN语句相比,GOBACK语句可能会产生更紧凑的代码。在执行指定了全局短语的声明性过程时,不能执行GOBACK语句,除非在执行该声明性过程时调用的程序中。如果在函数中执行GOBACK语句,则该函数的操作就像执行EXIT function语句一样。如果在方法中执行GOBACK语句,则该方法的操作就像执行EXIT method语句一样。如果在迭代器中执行GOBACK语句,则迭代器的操作方式就像执行EXIT iterator语句一样。
停止奔跑。这取决于您的系统。在大多数编译器上,STOP RUN都会终止程序,如果它被另一个cobol程序调用,那么整个进程就会终止。
在这个link的末尾,您可以找到一个很好的模式来表示所有这些关系。
编辑:(来自旧的Microsoft Cobol文档)
EXIT program语句: EXIT PROGRAM语句出现在被调用的子程序中,导致在调用程序中的CALL之后将控制返回到下一个可执行语句。此语句本身必须是一个段落。
https://stackoverflow.com/questions/10463069
复制相似问题