0

CBL_EXEC_RUN_UNIT を使用してプログラム A からプログラム B を呼び出そうとすると、プログラム A から非同期的にプログラム B を呼び出そうとすると、次のエラーが発生します。

error code: 203, pc=43, call=1, seg=0
203     CALL parameter not supplied
Prog A:
       procedure division.
       00.
           display "INSIDE PROGRAM CALLPRG".
           string w-prog-name delimited by size
                  " " delimited size
                  w-a w-b delimited by size
                       into w-work
           initialize flags run-unit-id stack-size
           call "CBL_EXEC_RUN_UNIT" using w-work
                                     by value 11
                         by reference run-unit-id
                         by value stack-size flags
                                returning status-code
prog B:
       working-storage section.
       01 C pic 9(03).
       linkage section.
       01 A pic 9(02).
       01 B pic 9(02).
       procedure division using a b.
       00.
           display "INSIDE PROGRAM ADDTWO".
           display a.
           display b.
           add a b giving C.
           display "SUM IS ".
           display c.
           display "EXITING PROGRAM ADDTWO".
       ex.  exit.

マイクロフォーカス COBOL を使用しています。

4

2 に答える 2

1

203 メッセージは、PROCEDURE DIVISION USING の項目が正しく設定されていないことを示しています。パラメータの 1 つまたは両方が、ADDTWO プログラムへの実際の呼び出しから欠落しています。

「コマンド ライン」で 2 つのパラメータを指定しているかどうかはわかりません。また、ADDTWO を呼び出すためにそれらを正しく指定しているかどうかもわかりません。ADDTWO は、メイン プログラムであるかのように実行されます。実行環境 (オペレーティング システムと Micro Focus のランタイム) のメイン COBOL プログラムに複数のパラメーター値をどのように指定しますか。

コマンドラインの長さをそのように指定する必要があるかどうかはわかりません。ドキュメントには別の推奨事項があります。

于 2013-10-04T16:29:01.307 に答える
1

STARTマルチスレッドのステートメントを使用してみてください。

例は、Cobol MicroFocus インストール ディレクトリの にありBASE\DEMO\MTHREAD\MTHREAD.CBLます。

このSTARTステートメントを使用すると、コードは次のようになります。

   IDENTIFICATION DIVISION.
   PROGRAM-ID.    PROGA.
   WORKING-STORAGE SECTION.

   01  THREAD-HANDLE              usage thread-pointer.

   77  W77-ACCEPT-KEY PIC X.

   01  W01-NUMBERS.
   03  Num1 Pic s9(005).
   03  Num2 Pic s9(005).

   PROCEDURE DIVISION.
   0000-MAIN SECTION.
   0000.
       MOVE 1 TO Num1.
       MOVE 2 TO Num2.

       START "PROGB"  USING W01-NUMBERS
                      IDENTIFIED BY THREAD-HANDLE.


       DISPLAY "Press any key to end me...".
       ACCEPT W77-ACCEPT-KEY.

       PERFORM 9999-FINISH-IT.
   0000-EXIT.
        EXIT.

   9999-FINISH-IT SECTION.
   9999.
       EXIT PROGRAM.
       STOP RUN.
   9999-EXIT.
        EXIT.

   END PROGRAM PROGA.

   IDENTIFICATION DIVISION.
   PROGRAM-ID.    PROGB.
   WORKING-STORAGE SECTION.

   77  W77-RESULT PIC S9(006).
   LINKAGE SECTION.

   01  W01-NUMBERS.
       03 Num1 Pic s9(005).
       03 Num2 Pic s9(005).

   PROCEDURE DIVISION USING W01-NUMBERS.
   0000-MAIN SECTION.
   0000.
       compute W77-RESULT = Num1 + Num2.
       DISPLAY "Hello from ProgB".
       Display "Result is: " W77-RESULT.

       PERFORM 9999-FINISH-IT.
   0000-EXIT.
        EXIT.

   9999-FINISH-IT SECTION.
   9999.
       EXIT PROGRAM.
       STOP RUN.
   9999-EXIT.
        EXIT.

   END PROGRAM PROGB.
于 2013-10-04T17:55:23.657 に答える