Rational Developer for System z
Enterprise COBOL for z/OS バージョン 4.1 言語解説書


BLOCK CONTAINS 節

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 として指定されているかにはよりません。

整数-1整数-2
ゼロ以外の符号なし整数でなければなりません。 これらは、以下のものを指定します。
CHARACTERS
データ・レコード内のデータ項目の USAGE には関係なく、 物理レコードを保管するために必要とされるバイト数を指定します。

整数-2 だけを指定すると、それは物理レコードの正確なバイト数を指定します。整数-1 および整数-2 を両方とも指定すると、それぞれ物理レコードの最小バイト数と最大バイト数を指定したことになります。

整数-1 および整数-2 には、 物理レコードに含まれるべき制御バイトと埋め込みバイトも含めてください。(論理レコードには埋め込みバイトはありません。)

CHARACTERS 句がデフォルト値です。 CHARACTERS 句は、次の場合には必ず指定しなければなりません。

  • 物理レコードに埋め込みバイトが含まれている場合。
  • 物理レコードのサイズが間違って解釈されるような方法で、 論理レコードがグループ化されている場合。 例えば、100 バイトの可変長レコードを記述していて、 4 レコードのブロックを書き込むたびに、50 バイト・レコードを 1 つと、 それに続けて 100 バイト・レコードを 3 つ書き込むとします。この場合、RECORDS 句を指定していると、 コンパイラーはブロック・サイズを、実際のサイズである 370 バイトではなく 420 バイトと計算します。 (この計算には、ブロック記述子とレコード記述子が含まれています。)
RECORDS
これは、各物理レコードに含まれる論理レコード数を指定します。

コンパイラーは、ブロック・サイズとして最大サイズが 整数-2 レコードのものを用意しなければならないものとみなし、さらに制御バイトに必要な余分なスペースを準備します。

QSAM ファイルでは、BLOCK CONTAINS 0 を指定することができます。BLOCK CONTAINS 0 が QSAM ファイルに指定されている場合には、以下のようになります。

BLOCK CONTAINS 節は、SD で指定された際に、 構文チェックされますが、プログラムの実行には何も影響しません。

BLOCK CONTAINS 節を、 RECORDING MODE U 節と共に使用することはできません。


ご利用条件 | フィードバック

このインフォメーション・センターでは Eclipse テクノロジーが採用されています。(http://www.eclipse.org)