0

埋め込み SQL を含むサンプル (Fujitsu NetCobol) COBOL テスト プログラムを (Windows XP 上で) プリコンパイル、コンパイル、およびリンクできます。このテスト プログラムは、DB2 (Linux では UDB 9.5) データベース テーブルの行数を読み取って表示します。

実行時に次のエラー メッセージが表示されます。

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

このエラーメッセージの意味を知っている人はいますか?

4

1 に答える 1

1

*) CHECK(LINKAGE) コンパイラ オプション (Linux ではなく、Windows の NetCOBOL でのみ使用可能) を使用していない場合、エラーは依然として存在しますが、さらに説明が少なくなります。

実際のエラーの原因: *) CALL "sqlgstrt" USING ...DB2 プリコンパイラーによって生成されたものは、間違った (= COBOL) 呼び出し規約を意味する => への呼び出しを手動で変更すると CALL "sqlgstrt" WITH STDCALL LINKAGE USING...、実行時エラーが解決された

ただし、この解決策はプリコンパイラの結果を変更することを意味するため、適切な CALL を生成するための DB2 プリコンパイラ オプションをまだ探しています。

于 2008-09-30T17:00:03.927 に答える