1

別のプログラムを呼び出すときに、このメニュー プログラムの問題点を尋ねる必要があります。

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

1 に答える 1

4

STOP RUN呼び出されたプログラムのステートメントを に置き換える必要がありGOBACKます。

STOP RUNこれは、およびを使用する一般的な規則ですGOBACK

GOBACK ステートメントは、呼び出されたプログラムの論理的な終了を示します。

一般規則 GOBACK ステートメントが、呼び出し側ランタイム要素の制御下にあるプログラムで実行される場合、オブジェクト プログラムは、GOBACK ステートメントと同じ句を持つ EXIT PROGRAM ステートメントを実行するかのように動作します。EXIT ステートメントのトピックを参照してください。ADDRESS OF 句のない GOBACK ステートメントが、呼び出し側ランタイム要素の制御下にないプログラムで実行される場合、オブジェクト プログラムは、GOBACK ステートメントと同じ句を持つ STOP RUN ステートメントを実行するかのように動作します。ADDRESS OF 句を指定した GOBACK ステートメントが、呼び出し側ランタイム要素の制御下にないプログラムで実行される場合、オブジェクト プログラムは、任意の戻り値がシステム領域に設定されることを除いて、STOP RUN ステートメントを実行するかのように動作します。GOBACK ステートメントは、同等の EXIT PROGRAM および STOP RUN ステートメントよりもコンパクトなコードになる場合があります。GLOBAL指定を指定した宣言手続の実行中にGOBACK文を実行してはなりません。ただし、宣言手続の実行中に呼び出されるプログラムの中を除きます。関数内で GOBACK 文を実行すると、関数は EXIT FUNCTION 文を実行したかのように動作します。メソッド内で GOBACK 文を実行すると、メソッドは EXIT METHOD 文を実行したかのように動作します。反復子で GOBACK ステートメントを実行すると、反復子は EXIT ITERATOR ステートメントを実行したかのように動作します。GLOBAL指定を指定した宣言手続の実行中にGOBACK文を実行してはなりません。ただし、宣言手続の実行中に呼び出されるプログラムの中を除きます。関数内で GOBACK 文を実行すると、関数は EXIT FUNCTION 文を実行したかのように動作します。メソッド内で GOBACK 文を実行すると、メソッドは EXIT METHOD 文を実行したかのように動作します。反復子で GOBACK ステートメントを実行すると、反復子は EXIT ITERATOR ステートメントを実行したかのように動作します。GLOBAL指定を指定した宣言手続の実行中にGOBACK文を実行してはなりません。ただし、宣言手続の実行中に呼び出されるプログラムの中を除きます。関数内で GOBACK 文を実行すると、関数は EXIT FUNCTION 文を実行したかのように動作します。メソッド内で GOBACK 文を実行すると、メソッドは EXIT METHOD 文を実行したかのように動作します。反復子で GOBACK ステートメントを実行すると、反復子は EXIT ITERATOR ステートメントを実行したかのように動作します。

ストップラン。これはシステムによって異なります。ほとんどのコンパイラの STOP RUN はプログラムを終了し、それが別の cobol プログラムによって呼び出されると、プロセス全体が終了します。

このリンクの最後に、これらすべての関係を表す優れたスキーマがあります。

編集:(古いMicrosoft Cobolドキュメントから)

EXIT PROGRAM ステートメント : 呼び出されたサブプログラムにある EXIT PROGRAM ステートメントは、呼び出し側プログラムの CALL の後の次の実行可能ステートメントに制御を戻します。このステートメントは、それ自体が段落でなければなりません。

于 2012-05-05T15:16:26.580 に答える