OS V5R3M0 から CRTPGM
コマンドの活動化グループ(ACTGRP) パラメータの
省略値は、それまでの *NEW
から *ENTMOD
に変更された。
活動化グループを *ENTMOD
でコンパイルすると、 *PGM
の活動化グループは
「QILE」 という名前の固定値として作成されてしまっていた。
これは大きな問題であり QILE で作成された *PGM
は一旦、実行されると
明示的に RCLACTGRP
(活動化グループの再利用)コマンドによって
削除してやらないとメモリ内に留まり続けるのである。
従って、次に同じプログラムを実行するとフィールド値は前の値のままで
開始されるし、*INZSR
も実行されない。
これは RPG III などでお馴染みの「プログラムは終了するとメモリ内からは解放される」
という 「活動化グループ *NEW
」 の挙動とは全く異なるものである。
このサイトでは *ENTMOD
は明示的に *NEW
に変更してコンパイルすべきであると
再三警告してきたが、弊社のユーザーでも時々誤って *ENTMOD
のままで
コンパイルしている例が見つかる。
米国では *ENTMOD
に変更されてからユーザーは *NEW
に明示的に変更してコンパイルすることが
常識となっていた。
これに IBM がようやく気づいたのが OS Ver7.1 になってからのことである。
OS Ver7.1 では活動化グループは *ENTMOD
のままではあるが、 *ENTMOD
でコンパイルしても
プログラムの活動化グループは QILE ではなく *NEW
として生成されるのである。
ちょっとずるい気もするがようやく IBM も自分の大きなミスに気づいたというところだろうか ?
ただし現行の OS V5R3M0 および V5R4M0, Ver6.1 のユーザーには、この問題は残っている。
*ENTMOD
は *NEW
に変更してコンパイルすること !!
を忘れてはいけない。