セミナーでの質問で
「CLPでOVRDBFを使って使用ファイルのライブラリーを指定しているが、
これをWeb適用業務で使用できるのか?」
という質問があった。
答えは2つあるのだが1つしか答えていなかったので、ここで補足しよう。
方法は2つある。
OVRDBF を使って CGIを呼び出すURL で通常では
「http://218.44..../cgi-bin/MYPGM?SHCODE= ...」
のようにしてCGI を呼び出すのであるが
CGI : MYPGM の代わりに CLP : MYCLP を
PGM OVRDBF SHOHIN TOFILE(QTRFIL/SHOHIN) SECURE(*YES) OVRSCOPE(*JOB) CALL CGIBIN.MYPGM DLTOVR SHOHIN LVL(*JOB) ENDPGM
のようにして呼び出す MYCLP を作成するURL は
「http://218.44. ... /cgi-bin/MYCLP?SHCODE= ...」
のようにしてMYCLP を指定する。
ここで SECURE(*YES) とは他の OVRDBF に左右されないで、
このOVRDBF を最優先することを意味する。
以前のCLP でのOVRDBF の影響を受けないようにするためである。
また OVRSCOPE(*JOB) と DLTOVR の LVL(*JOB) は
ILEでは必須であるので忘れないように。
MYCLP は ILEである必要はないし、特殊なコンパイルも必要ない。
これまでと同様のCRTCLPGM で十分である。
EXTFILE を使用する。OS400 V5R1M0 からは実行時のファイル/ライブラリーの名前を指定することができる
EXTFILE パラメータが追加された。
0003.00 FSHOHIN IF E K DISK EXTFILE(SHOHIN_LIB)
: 0052.00 D SHOHIN_LIB S 21 INZ('QTRFIL/SHOHIN')
と RPG の中で指定すると実行時にはライブラリー QTRFIL のファイル SHOHIN が
選択されて使用されるのである。
ライブラリー・リストにはライブラリー QTRFIL が存在している必要はない。
(ただしコンパイル時には存在している必要がある。)
CLP が必要な理由が OVRDBF であるだけならば、
この EXTFILE を使用することによって CLP は必要でなくなる。