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) の指定は是非お忘れなく。
|