技術情報 - Server Express - Oracle Pro*COBOLアプリケーションをアニメートする
Pro*COBOLのアプリケーションを INT や GNT で実行・アニメートすると EXEC SQL文のところで RTSエラー 173 が出てストップしてしまう現象が起こりえます。
これは、Pro*COBOLをかけた後の COBOLソースに埋めこまれる CALL文がCALLしているOracleライブラリが INT/GNTコードからロードできないために発生しています。実行形式にリンクしてしまう場合にはOracleライブラリがリンクインされるためにこのような問題が発生しません。
この問題を解決するためには、Oracle Pro*COBOLが提供している makefile を使用して、Server Expressランタイムシステムに、Oracleライブラリをリンクインしたバージョンを作成し、これを、COBOLがインストールされているディレクトリ下の rts32 モジュールに上書きコピーする必要があります。以下にその手順を示します:
- 作業用ディレクトリを新規作成する。
- # cp $ORACLE_HOME/precomp/lib/*.mk .
で、ランタイムシステムリンク用のMakefileを作業用ディレクトリにコピーする。 - # make rtsora -f ins_precomp.mk
で、rtsora という実行形式モジュールが作成される。 - ここからはルート権限のユーザーが作業します。
# su
でrootパスワードを入力します。 - # cd $COBDIR/bin
# mv rts32 rts32.bak
で、ランタイムシステムのバックアップを取ります。 - # cp <作業用ディレクトリ>/rtsora rts32
で、ステップ 3) で作成された rtsora を、rts32 に上書きコピーします。 - # chmod a+x rts32
で、rts32 に実行権限を与えておきます。
以上でCOBOLランタイムシステムへ Oracleライブラリを組み込む作業が完了しました。以後、Pro*COBOLアプリケーションをアニメートしたり、cobrun実行したりできるようになります。