DLI

資源名IWAITの資源タイプDLIを待機している場合を除き、タスクがDL/I関連の資源を待機しているかどうかをオンラインで確認するのは困難です。ただし、トランザクションに関する知識があれば、これを推測できる場合もあります。

待機中のタスクのCICSリージョンは、ローカルの場合もリモートの場合もありますが、DL/I関連の資源を待機している理由はいずれの場合も同じです。

待機の原因としては、以下の状況が考えられます。

  • 複数のタスクがPSBのスケジューリング機能をめぐって競合している。

  • 利用可能なDLスレッドがない。

  • 他のタスクがPSBのスケジューリングを行っている最中に、タスクが終了呼び出しを発行した。

  • PSBプールの記憶域が不足している。

  • DMBプールの記憶域が不足している。

  • 複数のタスクがPCBの取得をめぐって競合している(同時使用が不可能な場合)。

このうちのどれが待機の原因かを知るには、タスクが待機状態の間にダンプを取得し、そのダンプを分析する必要があります。まずダンプをフォーマット化して、XMとディスパッチャーの要約およびDL/I情報を取得します。そして、ディスパッチャーの要約を参照し、待機中のECBを特定します。次に、その待機要求を発行したIMSモジュールのアドレスを確認します。このアドレスは、DFHDLRのIWAITルーチンに渡されたIMS保存域のレジスター14にあります。

トレース機能を有効にした状態で待機の発生を再現できる場合は、トレースとダンプを使用して同じ情報を得ることができます。

ダンプとトレースを使用したDL/I待機の調査

ここで説明している手法により、タスクが待機しているDL/I資源を確認できます。そのためには、適切なトレース オプションを選択して、問題を再現する必要があります。たとえば、実動システムでトランザクションのスループットが一定レベルに達した時点など、問題の兆候が認識されたときの状況を再現する必要があります。これは、複数のタスク間の資源をめぐる競争が激しくなり始めたときに、最も問題が発生しやすいためです。

特殊トレースを行う場合は、CETRトランザクションを使用して、FC(ファイル制御)コンポーネントに対してレベル1トレース ポイントを選択します。CETRトランザクションの使用方法については、『CICS Problem Determination Guide』の「Using traces in problem determination」を参照してください。1以外のトレース ポイントが定義されていないことを確認してください。次に、CETRを使用して、問題の影響を受けているタスクに対して特殊トレースを選択します。トレース データは補助記憶装置にのみ出力してオーバーヘッドを極力抑え、マスター システムのトレース フラグをオフに設定して、通常のタスク トレースが行われないようにしておきます。

トレースを開始し、問題となっているタスクを、待機状態になるまで呼び出し続けます。タスクが待機状態になったらトレースを停止し、CEMT PERFORM SNAPを使用してCICSシステム ダンプを取得します。このときタスクが待機していたDL/I資源が問題の初回発生時と同じであれば、待機の原因を突き止めるために必要な情報をすべてそのダンプから入手できるはずです。つまり、残りの調査はすべてオフラインで実行可能です。