JMP0811I-U Ошибка времени выполнения Fujitsu после компиляции Fujitsu COBOL с DB2 SQL: причина / способ устранения? - PullRequest
0 голосов
/ 29 сентября 2008

Я могу (в Windows XP) предварительно скомпилировать, скомпилировать и связать образец (Fujitsu NetCobol) тестовой программы COBOL, которая содержит встроенный SQL. Эта тестовая программа предназначена для чтения и отображения количества строк в таблице базы данных DB2 (UDB 9.5 в Linux).

Во время выполнения я получаю следующее сообщение об ошибке:

JMP0811I-U [PID: ... TID: ...] СБОЙ В ПРАВИЛАХ СВЯЗИ ИЛИ ПАРАМЕТР ПРОГРАММЫ 'sqlgstrt'. PGM = DB2TST1

Исходный код прекомпиляции, на который ссылается эта ошибка, выглядит следующим образом:

     * ... in WORKING-STORAGE section:

      01  SQLA-PROGRAM-ID.
       05 SQL-PART1 pic 9(4) COMP-5 value 172.
       05 SQL-PART2 pic X(6) value "AEAMAI".
       05 SQL-PART3 pic X(24) value "gBSdTdJY01111 2         ".
       05 SQL-PART4 pic 9(4) COMP-5 value 13.
       05 SQL-PART5 pic X(13) value "ADMINISTRATOR".
       05 SQL-PART6 pic X(115) value LOW-VALUES.
       05 SQL-PART7 pic 9(4) COMP-5 value 8.
       05 SQL-PART8 pic X(8) value "COBOL/DB".
       05 SQL-PART9 pic X(120) value LOW-VALUES.

      * .. in PROCEDURE DIVISION:

      *EXEC SQL CONNECT TO :DB-SERVER USER :DB-USER USING :DB-PWD
      *     END-EXEC
           CALL "sqlgstrt" USING
              BY CONTENT SQLA-PROGRAM-ID
              BY VALUE 0
              BY REFERENCE SQLCA

Кто-нибудь знает, что означает это сообщение об ошибке?

1 Ответ

1 голос
/ 30 сентября 2008

Описание ошибки было связано с: *) опция компилятора CHECK (LINKAGE) (доступно только в NetCOBOL для Windows, но не для Linux) без этой опции ошибка все еще существует, но еще менее описательная

Фактическая ошибка произошла из-за: *) CALL "sqlgstrt" USING ..., сгенерированный прекомпилятором DB2, подразумевает неправильное (= COBOL) соглашение о вызовах => изменение вызовов вручную на CALL "sqlgstrt" WITH STDCALL LINKAGE USING... разрешил ошибку времени выполнения

Это решение подразумевает изменение результатов прекомпилятора, поэтому я все еще ищу вариант прекомпилятора DB2 для генерации правильных CALL.

...