DISPATCH

CICSディスパッチャーがタスクを待機させている場合、その理由は5つあり、それぞれ次の資源名または資源タイプが関連しています。

HP_POOL

タスクの開始時にH8モードのオープンTCBを取得する必要がある場合、ディスパッチャー ドメインは、H8プールで空いているTCBを見つけようとします。空いているH8 TCBがない場合、CICSリージョン内のオープンTCBの数が、MAXHPTCBSに設定されている上限値に達していなければ、CICSは新しいTCBを生成し、要求の発行元タスクに割り振ります。

H8プール中のTCB数がMAXHPTCBS値に達している場合、ディスパッチャーは要求の発行元タスクを待ち行列に入れ、そのタスクを一時停止状態にします(DSタスク ブロックで一時停止トークンAWAITING_OPEN_TCB_TOKENを使用)。オープンTCBが解放された場合、またはMAXHPTCBS値が大きな値に変更された場合は、待ち行列の先頭にあるタスクが再開され、オープンTCBの割り振り処理が再試行されます。

JVM_POOL

タスクの開始時にJ8またはJ9モードのオープンTCBを取得する必要がある場合、ディスパッチャー ドメインは、J8またはJ9プールで空いているTCBを見つけようとします。空いているJ8またはJ9 TCBがない場合、J8またはJ9プール内のオープンTCBの数が、MAXJVMTCBSに設定されている上限値に達していなければ、CICSは新しいTCBを生成し、要求の発行元タスクに割り振ります。

J8またはJ9プール中のTCB数がMAXJVMTCBS値に達している場合、ディスパッチャーは要求の発行元タスクを待ち行列に入れ、そのタスクを一時停止状態にします(DSタスク ブロックで一時停止トークンAWAITING_OPEN_TCB_TOKENを使用)。オープンTCBが解放された場合、またはMAXJVMTCBS値が大きな値に変更された場合は、待ち行列の先頭にあるタスクが再開され、オープンTCBの割り振り処理が再試行されます。

OPENPOOL

タスクの開始時にL8モードのオープンTCBを取得する必要がある場合、ディスパッチャー ドメインは、適切なサブスペース属性を持つこのモードのTCBを見つけようとします。条件に合致するサブスペースに関連付けられたL8モードのTCBが空いていない場合、CICSは以下の処理を行います。

  • L8オープンTCBプール内のオープンTCBの数がMAXOPENTCBSに達していない場合は、要求されたサブスペースに関連付けた新しいL8モードTCBを生成し、要求の発行元タスクに割り振ります。

  • オープンTCBの数がMAXOPENTCBSに達しているが、異なるサブスペースに関連付けられているL8モードのオープンTCBが1つ空いている場合は、まずそのTCBを削除します。そのあとで新しいL8モードTCBを生成し、要求の発行元タスクに割り振ります(あるタイプの空きTCBを削除して別のタイプのTCBを生成する処理のことを、TCBスチールと呼びます)。

しかし、これらのいずれも当てはまらない場合は、ディスパッチャーは要求の発行元タスクを待ち行列に入れ、そのタスクを一時停止状態にします(DSタスク ブロックで一時停止トークンAWAITING_OPEN_TCB_TOKENを使用)。オープンTCBが解放された場合、またはMAXOPENTCBS値が大きな値に変更された場合は、待ち行列の先頭にあるタスクが再開され、オープンTCBの割り振り処理が再試行されます。

OPEN_DEL

タスクが資源名OPEN_DELを待機している場合、ディスパッチャーが、新しいTCBを割り振るために不要なTCBを削除中です(スチール)。タスクは、ディスパッチャーが新しいTCBを生成できるように、不要なTCBが終了するのを待機しています。

タスクにオープンTCBが必要だが、適当なTCBが空いてなく、使用中のTCB数がMAXOPENTCBS値に達しているため新しいTCBを生成することもできない場合には、CICSは、現在使用されていないTCBを選択して終了し、タスクが要求しているタイプのTCBを生成できるようにします。ただし、不要TCBの終了処理が完了するまでは、新しいTCBを生成できません。そうしないと、L8プール内のオープンTCBの数が一時的にMAXOPENTCBS値を超えてしまうためです。

DSTSKDEF

資源タイプDSTSKDEFを待機しているタスクは一時停止状態ではありません。このタスクは、タスク生成が行われているため、ディスパッチャーのチェーンに追加されており、ディスパッチされるのを待機しています。たとえば、タスクがダンプの完了を待機している場合などです。