ILE COBOL 解説書


BLOCK CONTAINS 文節

BLOCK CONTAINS 文節は、物理レコードのサイズを指定します。

BLOCK CONTAINS 文節 - 形式
 
>>-BLOCK--+----------+--+-------------+--整数-2----------------->
          '-CONTAINS-'  '-整数-1-- TO-'
 
>--+------------+----------------------------------------------><
   +-CHARACTERS-+
   '-RECORDS----'
 
 

したがってこの文節は、各物理レコードにただ 1 つの完全な論理レコードが入っているときは、省くことができます。

FORMATFILE ファイルとプリンター・ファイルでは、この文節は構文検査されます。 この文節を他のファイル・タイプに対して活動化するには、OPTION パラメーター値の *BLK または PROCESS オプション BLK を使用してください。

整数-1、整数-2
ゼロ以外の符号なしの整数でなければなりません。 この整数は、文字数またはレコード数を指定します。整数-2 が 0 の場合には、システムによってブロック・サイズが決定されます。
CHARACTERS
データ・レコード内の文字がどのような USAGE をもっているかには関係なく、物理レコードを保管するのに要する文字位置の数を指定します。

整数-2 だけを指定するならば、それは物理レコードの正確な大きさを示します。 整数-1 と整数-2 の両方を指定するならば、それらはそれぞれ物理レコードの最小と最大の文字サイズを表します。

整数-1 と整数-2 には、物理レコードに含まれる制御バイトや埋め込みバイトも入れなければなりません。 (論理レコードには埋め込みバイトは含まれません。)

非テープ・ファイルの場合、整数-2 だけがブロック化因数を制御します。 整数-2 が 0 の場合には、システム・デフォルトのブロック化因数が適用されます。

CHARACTERS 句がデフォルトです。 CHARACTERS は、物理レコードに埋め込みが行われているときに指定しなければなりません。

一般的に、RELEASE、REWRITE、または WRITE ステートメントの可変長レコードの長さは、データ名-1 (指定されている場合) で決まります。 データ名-1 が指定されていなくて、レコード記述にテーブルが入っていないときは、長さはそのレコード記述内の文字数になります。 データ名-1 は指定されていないけれど、レコードにテーブルが入っているときは、長さは、そのレコードの固定部分にその現行テーブル長を加算したものになります。

可変長レコードをディスク・ファイルに使うとき、BLOCK CONTAINS 文節はそのブロック・サイズを指定します。 READ 操作後、データ名-1 の中に実際のレコード・サイズが入ります。 可変長レコードで WRITE を実行するには、データ名-1 をそのレコード長に設定しなければなりません。

テープ・ファイルの場合に、データをテープに転送するときは、それぞれの可変長レコードには 4 バイトのヘッダーが、またそれぞれのブロックにも 4 バイトのヘッダーが入ります。 しかし、これらの 4 バイトのヘッダーはシステムにより提供され、可変長レコードの最大サイズは 32 764 に制限されていることを除いて、COBOL ユーザーには関係がありません。

テープ・ファイルに可変長レコードが使用されるとき、BLOCK CONTAINS 文節は最大物理レコード長を指定します。 これに対して各レコードの論理レコード長は、コンパイラーによって WRITE ステートメントに使用されるレコード名から推測されます。 明示的な長さが READ ステートメントの後に必要とされる場合は、ユーザーは I-O-FEEDBACK 簡略名によって、それを得ることができます。

RECORDS
各物理レコードに含まれる論理レコード数を指定します。

最大レコード・サイズは 32 767 で、最大ブロック・サイズは 32 767 です。 これらの最大値には、可変長ブロック・レコードに必要な任意の制御バイトが含まれているため、可変長ブロック・レコードの最大サイズ・データ・レコードは 32 759 になります。


[ ページのトップ | 前ページ | 次ページ | 目次 | 索引 ]