DB2 LUW を使用した PL/I ストアド プロシージャのコンパイルとリンクは、大半の PL/I アプリケーションのコンパイルとリンクとは多少異なります。次の手順を使用して、DB2 LUW で DB2 ストアド プロシージャをコンパイルおよびリンクします。
mfplx -sql db2 -optsql DB=SAMPLE getprml.pli -nolaxdcl –ppsql -c
Windows:
プログラムをダイナミック リンク ライブラリ (.dll) としてリンクするには、通常の PL/I リンク コマンドではなく CBLLINK を使用します。
PL/I DB2 ストアド プロシージャをリンクするには、追加のモジュールをリンクして DB2 LUW で PL/I ランタイムと PL/I ルーチンを適切にロードできるようにする必要があります。
ストアド プロシージャが MAIN の OPTION によって定義されない場合、systemsql.obj および setupdeffiles.obj オブジェクト モジュールを mfplimd.lib ライブラリ ファイルおよび 32 ビット db2api.lib ライブラリ ファイルとともにリンク コマンドに追加します。次に例を示します。
cbllink /d /V /K GETPRML.obj db2api.lib mfplimd.lib systemsql.obj setupdeffiles.obj
ストアド プロシージャが MAIN の OPTION によって定義されない場合、これらの追加モジュールをリンク コマンドでリンクします。
次に例を示します。
cbllink /d /V /K GETPRML.obj db2api.lib mfplimd.lib mfexttbl.lib systemsql.obj setupdeffiles.obj lpimainstub.obj lpimain.obj
UNIX:
ストアド プロシージャをリンクするには、cob を使用してモジュールをビルドすることで、ファイル拡張子がないモジュールにする必要があります。
AIX プラットフォームでは、次のコマンドを使用して、ストアド プロシージャを実行可能ファイルとしてビルドします。
cob -x GETPRML.o -e GETPRML -L$COBDIR/lib -lmfpliz -lplidump
他の UNIX プラットフォームでは、次の形式のコマンドを使用して、ストアド プロシージャを自己格納式の呼び出し可能な共有オブジェクトとしてビルドします。
cob -y GETPRML.o -o GETPRML -e GETPRML $COBDIR/lib/32/dllmain_cob.o -L$COBDIR/lib -lmfpliz -lplidump
生成されたストアド プロシージャ オブジェクトを DB2 インスタンスの function ディレクトリにコピーします。
db2stop を実行し、DLL をコピーして、DB2 管理コマンド プロンプトから db2start を実行します。
次のコマンドを DB2 コマンド プロンプトから実行します。
db2 update dbm cfg using KEEPFENCED NO
本番環境では、このコマンドを実行するとパフォーマンスに著しく影響するため、使用しないでください。このコマンドの詳細については、IBM のドキュメントを参照してください。