Pro*COBOL アプリケーションからの Oracle アクセス時に「エラーコード:173 呼び出すプログラムが見つからない」のエラーが発生する
一般的に以下のような問題が考えられます。以下の対応を行った後も解決しない場合は、オラクル社のサポートに問合せを行ってください。
Linux/UNIX
以下の環境変数が設定されていない場合に発生するようですので、環境変数の設定をご確認ください。
- PATH
- LD_LIBRARY_PATH (AIX では LIBPATH)
- $ORACLE_HOME/lib
- $ORACLE_HOME/precomp/lib
Windows
状況により、以下のエラーが発生します。
- ロードエラー 'ORASQL8'
- 動作モードの問題
Oracle 製品には、動作モードの異なる 32 ビット版と 64 ビット版の製品があります。Oracle 製品の動作モードに合わせて COBOL アプリケーションを作成いただく必要があります。異なる動作モードで実行された場合、このエラーが発生します。
- orasql8.dll の利用環境に関する問題
orasql8.dll が存在するディレクトリ (一般的には Oracle 製品インストール先の bin ディレクトリ) が、環境変数:PATH に設定されている必要があります。アプリケーション実行時に未設定の場合、このエラーが発生します。
- ロードエラー 'SQLADR'
- orasql8.dll ファイル自体の問題
Oracle は Oracle 9i 以降、orasql8.dll に加えて orasql<バージョン番号>.dll を提供しています。Pro*COBOL が利用する API は orasql8.dll ではなく orasql<バージョン番号>.dll の方に含まれるようです。
しかし、Oracle Pro*COBOL は埋め込み SQL 文をプリコンパイルする際、最初の SQL 文展開の先頭に CALL "ORASQL8" を挿入しているため、そのまま実行すると orasql8.dll がロードされ正しく API を参照できません。
この問題は Oracle 10g の頃から存在し、オラクル社のマニュアル (リンク確認: 2019/08/07) の末尾 (「既知の問題、制限事項および対処方法」の「2」部分) に類似問題が記載されています。
orasql<バージョン番号>.dll をロードするよう、orasql8.dll をバックアップした上で orasql<バージョン番号>.dll を orasql8.dll へコピーすることで COBOL アプリケーションより正しく Oracle の API を利用できるようになります。