0

当我们尝试使用 CBL_EXEC_RUN_UNIT 从 prog A 调用 prog 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

Try using the START statement for multi-threading.

You can find an example in your Cobol MicroFocus installation directory under BASE\DEMO\MTHREAD\MTHREAD.CBL.

Using the START statement your code will look something like this:

   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 回答
1

203信息是告诉你没有正确建立PROCEDURE DIVISION USING上的项目。对 ADDTWO 程序的实际调用中缺少一个或两个参数。

我不知道您是否在“命令行”中提供了两个参数,也不知道您是否正确提供了它们以便能够调用 ADDTWO。ADDTWO 将像主程序一样运行。如何在运行环境(操作系统和 Micro Focus 的运行时)中向主 COBOL 程序提供多个参数值。

我不确定您是否应该以这种方式指定命令行的长度。文档中有不同的建议。

于 2013-10-04T16:29:01.307 回答