OS/360、MVS、z/OSなどのIBM メインフレーム オペレーティング システムでは、データ制御ブロック( DCB ) はプログラム内のデータセットの説明です。DCB は、DCB マクロ命令 (多数の「定数定義」命令に展開される) を使用してアセンブラープログラムでコーディングされます。高級言語プログラマーは、DCB を含むライブラリ ルーチンを使用します。
DCB は、これらのオペレーティング システムで使用される多くの制御ブロックの 1 つです。制御ブロックは、定義済みの構造を持つデータ領域で、C に非常に似ていますが、通常はシステムの機能にのみ関連しています。DCB は C の FILE 構造に似ていますが、はるかに複雑で、さまざまなアクセス方法structに対してより多くのオプションを提供します。
制御ブロックは、論理IOCSとアプリケーション プログラム間のアプリケーション プログラミング インターフェイスとして機能し、通常はアプリケーション プログラム自体の中で定義され (アプリケーション プログラム自体の中に存在します)。I/O サブルーチンのアドレスは、コンパイル後のリンク編集フェーズ中に解決されるか、OPEN 時に動的に挿入されます。
IBM DOS/360、DOS/VSE、z/VSEオペレーティング システムの場合、同等の制御ブロックは「DTF」(ファイル定義)です。
DCBの典型的な内容
- シンボリック ファイル名 (ファイルを開くためのJCLステートメントと一致)
- アクセスの種類(ランダム、シーケンシャル、インデックスなど)
- 物理的特性(ブロックサイズ、論理レコード長)
- I/Oの重複を許可するために処理に割り当てるI/O バッファの数
- I/O オペレーティング システム ライブラリ サブルーチンのアドレス(例: 読み取り/書き込み)
- サブルーチンの種類に応じて必要なその他の変数
プロトタイプ DCB
DCB 内に含まれる定数と変数の多くは空白のままにすることができます (つまり、これらはデフォルトでゼロになります)。
OPEN プロセスの結果、 DD JCL ステートメントで指定された定数と変数、および既存の磁気テープと直接アクセス データ セットのデータ セット ラベルが DCB にマージされ、ゼロ値が実際のゼロ以外の値に置き換えられます。
JFCB (ジョブ ファイル コントロール ブロック) と呼ばれるコントロール ブロックには、最初にデータセットの DD ステートメントから抽出された情報が保持されます。マージの結果は JFCB に保存され、CLOSE プロセス中に DSCB に書き込まれることもあります。これにより、データセット定義が永続的になります。
一例として、BLKSIZE= 変数が挙げられます。これは DCB でゼロに指定できます (通常はゼロに指定されます)。DD ステートメントでは、BLKSIZE はゼロ以外の値に指定され、その結果、プログラム指定の LRECL (論理レコード長) と JCL 指定の BLKSIZE (物理ブロック サイズ) が生成され、この 2 つが結合されてデータ セットの永続的な定義になります。
参照
- VTOC の一部であるデータセット制御ブロック(DSCB)
- レコード指向ファイルシステム
