可変長レコードは、形式 V または形式 D です。 形式 D レコードは、ASCII テープ・ファイル上の可変長レコードです。形式 D レコードは、形式 V レコードと同じ方法で処理されます。
いずれの場合も、RECORDING MODE V を使用してください。RECORDING MODE 節は省略することができます。ファイルに関連付けられている最大のレベル 01 レコードの長さが、BLOCK CONTAINS 節でコーディングされているブロック・サイズを超えておらず、かつ次のいずれかを行った場合は、コンパイラーは記録モードを V と見なします。
値を integer-1 および integer-2 (RECORD IS VARYING FROM integer-1 TO integer-2) に与えた場合、最大レコード長は、ファイルに関連したレベル 01 レコード記述項目にコーディングされた長さにかかわらず、 integer-2 にコーディングされた値です。 整数サイズは、レコードのデータ項目の USAGE にかかわらず、最小および最大レコード長 (バイト数) を示します。
integer-1 および integer-2 を省略する場合、最大レコード長は、ファイルに関連付けられた最大のレベル 01 レコード記述項目のサイズであると判別されます。
最大レコード長は、ファイルに関連付けられた最大のレベル 01 レコード記述項目のサイズであると判別されます。
形式 V ファイルに READ INTO ステートメントを指定すると、そのファイルに関して読み取られたレコード・サイズが、コンパイラーによって生成される MOVE ステートメントで使用されます。したがって、読み取られたレコードがレベル 01 レコード記述に対応していない場合には、予期したとおりの結果が得られないことがあります。MOVE ステートメントに関するその他の規則はすべて適用されます。例えば、READ ステートメントによって読み込まれる形式 V レコードに MOVE ステートメントを指定すると、移動されるレコードのサイズは、そのレベル 01 レコード記述に相当します。
形式 V ファイルに対する READ ステートメントを指定し、その後にレベル 01 レコードの MOVE を続けて指定すると、実際のレコード長が使用されません。プログラムは、レベル 01 レコード記述で記述されたバイト数を移動しようとします。このバイト数が実際のレコード長を超え、プログラムによってアドレッシング可能な領域外に及ぶと、結果は予測できません。 レベル 01 レコード記述によって記述されたバイト数が、読み取られた物理レコードより短い場合は、レベル 01 記述を超えるバイトは切り捨てられます。 可変長レコードの実際の長さを見つけるには、ファイル定義 (FD) の RECORD 節の形式 3 で data-name-1 を指定してください。
関連タスク
固定長フォーマットの要求
スパン形式の要求
不定形式の要求
レコード形式の指定
関連参照
FILE SECTION 記入項目
形式 V レコードのレイアウト
Enterprise COBOL コンパイラーおよびランタイム 移行ガイド
(VS COBOL II ランタイムからの移行)