LLE
LLE(Load List Element)は、タスクがローディングしたロードモジュールを示すコントロール・ブロックです。タスクが最後にロードしたモジュールのLLEがTCBLLSフィールドからポイントされます。LLEには1つ前のLLEへのポインター、およびローディングしたモジュールを管理するCDEへのポインターがあり、LLEのチェインをたどることで、タスクがローディングしたモジュールとその順番がわかります。LLEはIHALLEマクロによってマッピングできます。
CDE
CDE(Contents Directory Entry)は、タスクで実行中のプログラム・モジュールおよびローディングされたロードモジュールを管理するコントロール・ブロックです。LLEはLOADマクロによってローディングされたモジュールに対して作成されますが、CDEはLOADマクロだけでなくLINKやXCTLあるいはATTACHマクロによってローディングされたモジュールに対しても作成されます。また、IDENTIFYマクロやリンケージエディターのALIASなどによる別名に対しても作成されます。
別名だけでモジュールがローディングされた場合は、別名だけでなく元の名前(本名あるいは主名)に対してのCDEも作成されます。別名に対応して作成されたCDEは副CDE(Minor CDE)、本名に対して作成されたCDEは主CDE(Major CDE)と呼ばれます。CDEにはモジュール名、入口点アドレス、モジュールの使用回数、属性情報(再入可能や再使用可能、アドレスモードや常駐モード、APFなどの属性)、ローディングされたサブプール番号、1つ前のCDEへのポインターなどが格納されています。
オフセット | フィールド名 | 意味、内容 |
---|---|---|
+x00 | CDCHAIN | JPQ内の次のCDEへのポインター(1つ前にローディングされたモジュールのCDE) |
+x08 | CDNAME | モジュール(プログラム)の名前 |
+x10 | CDENTPT | モジュール(プログラム)の入口点アドレス |
+x14 | CDXLMJP | XTLSTもしくは主CDEへのポインター |
+x18 | CDUSE | モジュールの使用回数 |
+x1C | CDATTR | モジュールの属性を示すフラグバイト |
LLEはタスク単位に管理されますが、CDEはジョブステップで共通して管理されます。アドレス空間内でタスクが最後に呼び出したあるいはロードしたモジュールのCDEは、ジョブステップ・タスクのTCBのTCBJPQフィールドからポイントされます。ジョブ・ステップ内のプログラムがローディングしたロードモジュールは、ジョブ・パック・エリア(JPA)と呼ばれるリージョン内のPVT域(サブプール251または252)に格納されます。JPA内のロードモジュールはCDEによって管理され、個々のCDEの次のCDEをポイントすることでJPQ(Job Pack Queue)と呼ばれる一連のCDEチェインを作ります。
なお、CDEはJPQだけでなく実行中プログラムを管理するRBやLLEからもポイントされています。ダンプ・リストにはタスク毎にCDEが編集されて表示されますが、これはJPQのCDEリストではなくRBやLLEからのチェインによってリスト・アップされたタスク内のプログラムによってローディングされたモジュールに関するCDEです。
XTLST
XTLST(Extent List)は、CDEが管理するロードモジュールの実体データを示すコントロール・ブロックです。つまり、ローディングされたロードモジュールのJPA内のアドレスと長さを示します。XTLSTはIHAXTLSTマクロによってマッピングできます。(※入口点アドレスはCDEだが、モジュールの先頭アドレスはXTLSTにある)