V5R2M0 以前では活動化グループの属性の初期値は *NEW
でありRPGなどのプログラムが
起動される度にプログラムは初期化されてきた。
当然と言えば当然のことであるが V5R3M0 では CRTPGM
コマンドの活動化グループ
(ACTGRP
)パラメータの値は *ENTMOD に変更された。
*ENTMOD
で プログラムを作成してみると
ACTGRP(QILE)
として作成されてしまう。
これは通常の業務でも2回目以降の再呼び出しではプログラムは初期化されずに以前に
実行した変数の値なども残ったままで起動されてしまうことを意味する。
*INZSR
を使用している場合には2回目の呼び出しでは *INZSR
は実行されない。
例えば配列指標 N は起動時に 0 としてセットされているものと期待していても、2回目の起動
では 350 という値から始まるかも知れない。
あなたのプログラムは間違いなく誤動作を始めてしまう。
親プログラムが長時間、終了されることのないWeb業務では特に問題となり動作不安定だけで
なく、想定していなかった誤動作の原因となる。そこでユーザーは
CRTPGM MYLIB/MYPGM .... ACTGRP(*NEW) ....
と ACTGRP(*NEW)
を明示的に指定することを決して忘れてはならない。
このようにコマンド特にコンパイラー・コマンドのパラメーター初期値をリリース・アップ時に簡単に
変更してしまうのは疑問である。
このことに気づかないでいつものように単純にコンパイルしていただけでは見えない罠にはまって
しまう。ACTGRP(*NEW)
の指定は是非お忘れなく。