COBOL/エンタープライズ製品 技術情報(FAQ)


Pro*COBOL アプリケーションからの Oracle アクセス時に「エラーコード:173 呼び出すプログラムが見つからない」のエラーが発生する

一般的に以下のような問題が考えられます。以下の対応を行った後も解決しない場合は、オラクル社のサポートに問合せを行ってください。


Linux/UNIX

以下の環境変数が設定されていない場合に発生するようですので、環境変数の設定をご確認ください。

  • PATH
    • $ORACLE_HOME/bin
  • 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 を利用できるようになります。