データ・セット内のレコードは、次のいずれかのフォーマットを持っています。
レコードは、必要に応じて、ブロック化することができます。 オペレーティング・システムは、 固定長レコードと可変長レコードを非ブロック化しますが、 不定長レコードを非ブロック化するには、 ユーザーのプログラム内にコードを提供する必要があります。
レコード・フォーマットは、DD ステートメント の RECFM パラメーター内、OPEN ステートメントの TITLE オプション内、 または ENVIRONMENT 属性のオプションとして指定します。
固定長レコードには、次に挙げるフォーマットを指定することがでます。
固定長レコードを持っているデータ・セットの 場合は、図 18 に示すように、すべてのレコードの長さが等しくなります。 レコードがブロック化されていると、通常、 各ブロックには同じ数の固定長レコードが入っています (ただし、 ブロックは切り捨てられる場合もあります)。 レコードがブロック化されていない場合は、 各レコードがブロックを構成します。
オペレーティング・システムでは、一定のレコード長に基づいてブロック化、 非ブロック化が行われるため、可変長レコードより固定長レコードの方が速く処理されます。
指定できる可変長レコードのフォーマットは、次のとおりです。
V フォーマットでは、可変長レコードと可変長ブロックの両方を使用することができます。 各レコードの 4 バイトの接頭部と、 各ブロックの最初の 4 バイトには、オペレーティング・システムが使用 する場合の制御情報が入ります (レコードまたはブロックのバイト単位の 長さを含む)。 このような制御フィールドのため、可変長レコードは逆方向に読み込むことができません。
V フォーマットは、非ブロック化可変長レコードを表します。 各レコードは、レコードが 1 つだけを持つブロックとして扱われます。 ブロックの最初の 4 バイトにはブロック制御情報が入り、 次の 4 バイトにはレコード制御情報が入ります。
VB フォーマットは、ブロック化可変長レコードを表します。 各ブロックには、そのブロックに収容可能なレコード数と同じ数のレコードが入ります。 ブロックの最初の 4 バイトにはブロック制御情報が入り、 各レコードの 4 バイト接頭部にはレコード制御情報が入ります。
スパン・レコード: スパン・レコードは可変長レコードで、 レコードの長さがブロック・サイズを超えることもできます。 超えた場合は、レコード・フォーマットを VS または VBS のいずれかで指定して、 レコードを複数のセグメントに分割し、2 つ以上の連続ブロックに置きます。 セグメンテーションおよび組み立ては、オペレーティング・システムによって処理されます。 スパン・レコードを使用すると、レコードの長さを問わず、 ブロック・サイズが選択でき、補助記憶域を最大限に活用し、伝送の効果を最大限に高めます。
VS フォーマットは、V フォーマットに似ています。それぞれのブロックは、1 つのレコードまたは レコードのセグメントのみを含みます。 ブロックの最初の 4 バイトにはブロック制御情報が入り、 次の 4 バイトにはレコードまたはセグメント制御情報 (レコードが単体のものか、 または最初、中間、最後のセグメントであるかということを示す情報を含む) が入ります。
VBS フォーマットでは、各ブロックが、単体のレコードまたはセグメントを できるだけ多く保持することができるという点において、VS フォーマットと 異なっています。したがって、各ブロックのサイズがほとんど同じになります (ただし、 各セグメントは最低 1 バイトのデータを含まなければならないため、最大で 4 バイトの 変化幅があります)。
U フォーマットでは、F フォーマットにも V フォーマットにも 当てはまらないレコードを処理することができます。 オペレーティング・システムおよびコンパイラーは各ブロックをレコード として扱います。 ユーザー・プログラムで必要に応じてブロック化あるいは非ブロック化を 行わなくてはなりません。