CまたはCOBOLでのアプリケーション開発時に発生したトラブルの事例、およびその対処方法について説明します。
動的プログラム構造のアプリケーションを実行すると、JMP00151-Uのエラーが発生する
動的プログラム構造のアプリケーションを実行すると、以下のエラーが発生することがあります。
JMP00151-U プログラム'SQLST1'を呼び出すのに失敗しました.
sqlcobolコマンドによりアプリケーションのコンパイルを行うと、埋込みSQL文はEsql-COBOLのランタイム呼び出し(CALL文)に変換されます。「SQLST1」はEsql-COBOLのランタイムに含まれるプログラムの1つです。
また、動的プログラム構造でコンパイルした場合、CALL文で呼び出されるプログラムは、CALL文の実行時にCOBOLのランタイムによってロードされます。このとき、呼び出すプログラムがどのDLLに含まれるかを実行時に指定する必要があり、指定がない場合、COBOLランタイムは呼び出すプログラム名をプレフィックスとしてDLLを検索します。
そのため、CALL "SQLST1"…と展開されたSQLプログラムの実行時にCOBOLランタイムがSQLST1.dllのロード処理に失敗し、上記のエラーとなります。
アプリケーション実行時にEsql-COBOLランタイムのエントリ情報を指定します。
エントリ情報の指定方法には、以下の2つがあります。
実行用の初期化ファイル(COBOL85.CBR)に指定する方法
ENTRY情報ファイルを作成し、環境変数“@CBR_ENTRYFILE”にファイル名を指定する方法
参照
詳細については、以下のマニュアルを参照してください。
“NetCOBOL 使用手引書”の“サブプログラムを呼び出す~プログラム間連絡機能”
“アプリケーション開発ガイド(埋込みSQL編)”の“アプリケーションの起動”
sqlccコマンドでcオプションを指定して実行すると、警告が出力される
sqlccコマンドでcオプションを指定して実行すると、以下の警告が出力されます。
cc: [ライブラリ名]: リンクが完了しなかったのでリンカの入力ファイルは使われませんでした
出力された警告は無視してください。