2012-05-05 31 views
1

我要问什么是该我的菜单程序中的问题,当我调用另一个程序获取想法使用Call语句

通过点击1或2,而当程序调用我不能回到我的菜单程序,

你能帮助我,我请怎样才能找回我的菜单当我按下Esc键,或做

我的电话statment是错误的。

这是我的菜单程序代码。

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 
    ..... 
    .....  

回答

4

你应该GOBACK更换STOP RUN声明中呼吁PROGRAMM。

这是使用STOP RUNGOBACK的一般规律:

的GoBack的声明标志着一个叫做程序的逻辑结束。

总规则 如果GoBack的语句在一个程序,它是一个主叫运行元件的控制下执行的,所述目标程序,仿佛执行具有相同条款作为GoBack的语句中的出口程序语句操作。请参阅EXIT声明主题。 如果在不受调用运行时元素控制的程序中执行没有ADDRESS OF子句的GOBACK语句,则目标程序就像执行与GOBACK语句具有相同子句的STOP RUN语句一样运行。 如果在不受调用运行时元素控制的程序中执行带有ADDRESS OF子句的GOBACK语句,则目标程序就像执行STOP RUN语句一样运行,除了在系统区域中设置任意返回值。 GOBACK语句可能导致比等效的EXIT PROGRAM和STOP RUN语句更紧凑的代码。 在执行声明性程序时,不得执行GOBACK语句,其中指定GLOBAL短语,除非执行该声明性程序时调用的程序除外。 如果在一个函数中执行一个GOBACK语句,该函数就像执行一个EXIT FUNCTION语句一样操作。 如果在方法中执行GOBACK语句,则该方法的运行方式与执行EXIT METHOD语句相同。 如果在迭代器中执行GOBACK语句,那么迭代器就像执行EXIT ITERATOR语句一样操作。

STOP RUN。这取决于你的系统。 大多数编译器的STOP RUN会终止程序,如果它被另一个cobol程序调用,则整个过程终止。

在这个link结束时,您可以找到一个很好的模式来表示所有这些关系。

编辑:(从旧的Microsoft Cobol语言文档)

出口程序声明: 退出计划的语句,出现在一个名为 子程序,使控制返回到调用后 下一个可执行语句在拨打 方案。 此语句必须是 本身就是一个段落。

+0

嗨alain.janinm,感谢您的快速回复和讨论,可以帮助我启发我的想法。非常感谢您通过GOBACK STATEMENT为MS COBOl 2.20工作的方式 – jemz

+0

? – jemz

+0

其实我从来没有使用MS Cobol语言,我已经与微焦的Cobol工作。我试图找到一些文档,但没有成功,现在看来,这是相当老了......所以我想你可以使用GoBack的,尽量让我知道! –