データ制御ブロックの完了

DD ステートメントまたは動的割り振り要求に含まれる情報は、ジョブ・ファイル制御ブロック (JFCB) と呼ばれるテーブルに保管されます。また、処理される各データ・セットも、処理プログラムによりストレージに作成されたデータ制御ブロック (DCB) で表される必要があります。必要に応じて、処理プログラムは DCB 拡張 (DCBE) も提供します。完了時、 DCB および DCBE は、データ・セットについての完全な記述情報を含み、データ・セット、処理プログラム、およびオペレーティング・システムの間の関連付けを提供します。

システムは、新規のテープ・データ・セットに対して、最適なブロック・サイズを決定できます。詳しくは、「z/OS DFSMS データ・セットの使用法」を参照してください。

DCB および DCBE に記録される情報の大部分は、以下の手段で取得します。
  • 処理プログラム内の DCB および DCBE マクロ、あるいはコンパイラーにより作成された DCB または DCBE
  • システムが、入力ストリームの DD ステートメントまたは動的割り振りパラメーターから作成した JFCB および他の制御ブロック
  • データ・クラス定義 (ある場合)
  • データ・セット・ラベル (これが既存データ・セットの場合)

DCB は、実行時にオープンされると入力されます。図 1 は、DCB 情報の入力順序を図示しています。ステップ 3 および 8 は、テープに標準外ラベルが付いているか、ラベルなしの場合は迂回されます。

図 1. データ制御ブロックを完了するためのソースおよび順序
データ制御ブロックを完了するためのソースおよび順序

順方向マージ (ステップ 3 と 4): テープ・データ・セットが INPUT、INOUT、RDBACK または EXTEND 用にオープンされているか、または DISP=MOD と共に OUTPUT 用にオープンされている場合、標準のデータ・セット・ラベルからの情報は JFCB の空フィールドにマージされます。 (DD ステートメントにより既に指定されたフィールドは、いずれも変更されません。) いずれの OPEN オプションの場合でも、JFCB からの情報は、DCB および DCBE の空フィールドにマージされます。 (DCB および DCBE のマクロにより既に指定されたフィールドは、いずれも変更されません。) 順方向マージが完了すると、処理プログラムは、DCB OPEN ユーザー出口ルーチンを使用して DCB または DCBE を変更できます。DCB OPEN ユーザー出口ルーチンの詳細については、「z/OS DFSMS データ・セットの使用法」を参照してください。 システムは、オプションの DCB OPEN ユーザー出口ルーチンの後に、インストール・システム OPEN 出口ルーチンを呼び出します。インストール・システム出口についての詳細は、「z/OS DFSMS Installation Exits」を参照してください。

逆マージ (ステップ 7 と 8): DCB 完了後、マージ処理は逆方向になります。入力データ・セットの場合、DCB からの情報は、JFCB の空フィールドを埋めるために使用されます。出力データ・セットの場合、DCB 情報は JFCB 情報をオーバーライドします (データ・セット編成フィールド以外)。更新された JFCB は、新規ラベル作成のための情報を提供します。