BLOCK CONTAINS 節は、物理レコードのサイズを指定します。
CHARACTERS 句は、BLOCK CONTAINS 節で指定する整数は、 レコード内のバイト数を反映することを示します。 例えば、DBCS 文字が 10 文字または国別文字が 10 文字のブロックの場合、BLOCK CONTAINS 節は BLOCK CONTAINS 20 CHARACTERS となります。
ファイル内のレコードがブロック化されていない場合には、 BLOCK CONTAINS 節は省略できます。 省略した場合、 コンパイラーはレコードがブロック化されていないものとみなします。 各物理レコードの内容がそれぞれただ 1 つの完全な論理レコードの場合でも、BLOCK CONTAINS 1 RECORD と指定すると、固定長ブロック化レコードになります。
BLOCK CONTAINS 節は、関連したファイル制御項目が VSAM ファイルを指定している場合には省略できます。ブロック化の概念は VSAM ファイルに対しては意味がありません。BLOCK CONTAINS 節は構文チェックされますが、プログラムの実行には何も影響しません。
外部ファイルに関しては、 対応する外部ファイルのすべての BLOCK CONTAINS 節の値は、 実行単位内部で一致していなければなりません。 この一致はバイトに関するもので、 値が CHARACTERS として指定されているか、 あるいは RECORDS として指定されているかにはよりません。
整数-2 だけを指定すると、それは物理レコードの正確なバイト数を指定します。整数-1 および整数-2 を両方とも指定すると、それぞれ物理レコードの最小バイト数と最大バイト数を指定したことになります。
整数-1 および整数-2 には、 物理レコードに含まれるべき制御バイトと埋め込みバイトも含めてください。(論理レコードには埋め込みバイトはありません。)
CHARACTERS 句がデフォルト値です。 CHARACTERS 句は、次の場合には必ず指定しなければなりません。
コンパイラーは、ブロック・サイズとして最大サイズが 整数-2 レコードのものを用意しなければならないものとみなし、さらに制御バイトに必要な余分なスペースを準備します。
QSAM ファイルでは、BLOCK CONTAINS 0 を指定することができます。BLOCK CONTAINS 0 が QSAM ファイルに指定されている場合には、以下のようになります。
SYSIN ファイルおよび SYSOUT ファイルの場合は、BLOCK CONTAINS を省略することができます。その場合、ブロック化はオペレーティング・システムによって決定されます。
BLOCK CONTAINS 節は、SD で指定された際に、 構文チェックされますが、プログラムの実行には何も影響しません。
BLOCK CONTAINS 節を、 RECORDING MODE U 節と共に使用することはできません。