|
|
|
86. 実行環境を分割する活動化グループとは?
|
|
ILE になって活動化グループという概念が導入されたが、
活動化グループをひとくちで 説明すると実行環境を分割する仕組みのことである。
活動化グループのことをある程度、学習した人であれば
最上位の *PGM は *NEW の 活動化グループとして作成され、*SRVPGM は
*CALLER として作成されることは ご存知であろう。
*CALLER とは、その呼び出し親PGM の活動化グループとしてメモリ内に留まり
続けて 親の活動化グループの消滅とともに自分自身も消滅するものである。
それでは名前つきの活動化グループはどうなるのであろうか?
V5R3M0 からは CRTPGM は *NEW ではなく、QILE という名前で作成されるようになった。
このような名前つきで作成された*PGM は LR を ON にせずに RETURN で終了すると
メモリ内に留まり続ける。
同じJOB内で別の*PGM が名前つきの *PGM や *SRVPGM を再呼び出しすると
呼び出された名前つきの活動化グループは、内部的には以前のフィールド値などが
残ったままで起動されることになる。
そこで IBM では ANSI-C言語などのメモリー割り振り(malloc) と同じような
メモリ割り振りの 仕組みを ILE で提供するようになった。
親PGM 別に別々のメモリーの変数を使用できるようにするためである。
しかし、やってみるとわかることであるが、これはかなり大掛かりな仕掛けが
必要となってしまう。
それよりは活動化グループの名前を実行時に動的に与えることができるような
仕組みがあれば と筆者は期待している。
名前つきの活動化グループは完全に実行環境を同一JOB内で分離するものであるが
動的に名前を与えることができれば、メモリ・アロケーションのような面倒な
手間が不要と なるからである。
|
|
|
|
|