MBCB_xxx

タスクが、資源名が区画内待ち行列の名前である資源タイプMBCB_xxxを待機している場合、一時データの入出力バッファーに対する競合が発生しています。通常、この待機が長引くことはありませんが、待機時間は、一時データ要求を発行した他のタスクを処理するために発生するVSAM入出力によって大きく左右されます。何らかの理由でこの入出力に時間がかかる場合、それに応じて、資源タイプMBCB_xxx上の待機も長くなります(一時データのVSAM入出力処理中に発生する可能性がある待機については、Any_MRCBおよびMRCB_xxxの説明を参照してください)。

このタイプの待機の理由について、例を使って以下に説明します。

1.タスク1が、区画内待ち行列にアクセスする必要がある一時データ要求を発行します。この要求を処理する前に、タスク1に、他のタスクが現在使用していない一時データ入出力バッファーを割り当てる必要があります。

各入出力バッファーには、データセットから制御インターバル(CI)がコピーされています。各CIには、区画内待ち行列内のエレメントに対応するレコードが含まれます。タスク1に必要なCIが、すでにいずれかの入出力バッファーに存在していないかどうかが確認されます。存在している場合は、その入出力バッファーを使用して、タスク1が発行した要求を処理できるため、VSAM入出力が関与することはありません。存在していない場合は、タスク1に任意のバッファーが割り振られ、必要なCIがそのバッファーに読み込まれます。バッファー中の現在の内容は上書きされます。

入出力バッファーは、R/O(読み取り専用)状態またはR/W(読み取り/書き込み)状態の場合があります。タスク1に割り振られたバッファーがR/W状態の場合、このバッファーには他のタスクが更新したCIのコピーが含まれていますが、このCIはまだデータセットに書き戻しされていません。このバッファーをタスク1で使用する前に、バッファー内のCIをデータセットに書き戻し、保存する必要があります。

2. タスク2から要求が発行されます。この要求では、現在データセットに書き込み中のCIが必要です。2つのバッファーに同一のCIを読み込むことはできないため、VSAM入出力の結果が判明するまで、タスク2は資源タイプMRCB_xxxを待機することになります。

VSAM入出力が正常に終了した場合は、タスク2が再開され、他の入出力バッファーが割り当てられます。

VSAM入出力が失敗した場合は、タスク2はすでに必要なCIが読み込まれている入出力バッファーを使用できます。