HTTPサーバーとWeb開発

57. CGI で OVRDBF の機能を実現するには ?

セミナーでの質問で

「CLPでOVRDBFを使って使用ファイルのライブラリーを指定しているが、
これをWeb適用業務で使用できるのか?」

という質問があった。
答えは2つあるのだが1つしか答えていなかったので、ここで補足しよう。
方法は2つある。

(1)従来どおりに CLP の 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)DLTOVRLVL(*JOB)
ILEでは必須であるので忘れないように。
MYCLP は ILEである必要はないし、特殊なコンパイルも必要ない。
これまでと同様のCRTCLPGM で十分である。

(2) ILE-RPG CGI で 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 は必要でなくなる。