2012-05-05 25 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的,儘量讓我知道! –