プログラムで既存のファイルを処理するときには、COBOL プログラム内のファイルの記述をデータ・セットのファイル属性と矛盾しないようにコーディングします。 以下の指針を使用して、最大レコード長を定義します。
| 形式: | 指定: |
|---|---|
| V または S | データ・セットの長さ属性よりも 4 バイト小さくする。 |
| F | データ・セットの長さ属性と同じ値。 |
| U | データ・セットの長さ属性と同じ値。 |
プログラムで可変長 (フォーマット V) レコードを定義する最も簡単な方法は、 FD 項目で RECORD IS VARYING FROM integer-1 TO integer-2 節を使用して、integer-2 に適切な値を設定する方法です。 レコードのデータ項目の基礎となる USAGE にかかわらず、整数サイズをバイト数で表してください。 例えば、データ・セットの長さ属性を 104 バイト (LRECL=104) にすると想定しましょう。 最大レコード長がレベル 01 レコード記述ではなく RECORD IS VARYING 節から判別されることを念頭に置いて、プログラム内で以下のコードを使用して形式 V ファイルを定義することができます。
FILE SECTION.
FD COMMUTER-FILE-MST
RECORDING MODE IS V
RECORD IS VARYING FROM 4 TO 100 CHARACTERS.
01 COMMUTER-RECORD-A PIC X(4).
01 COMMUTER-RECORD-B PIC X(75).
前の例の既存のファイルが、形式 V ではなく形式 U である場合を想定します。104 バイトがすべてユーザー・データである場合、プログラム内で以下のコードを使用してファイルを定義することができます。
FILE SECTION.
FD COMMUTER-FILE-MST
RECORDING MODE IS U
RECORD IS VARYING FROM 4 TO 104 CHARACTERS.
01 COMMUTER-RECORD-A PIC X(4).
01 COMMUTER-RECORD-B PIC X(75).
プログラムで固定長レコードを定義するには、RECORD CONTAINS integer 節をコーディングするか、またはこの節は省略し、すべてのレベル 01 レコード記述が同じ固定サイズになるようにコーディングしてください。どちらの場合も、データ・セットの長さ属性の値と等しい値を使用してください。 同じプログラムを使用して実行時に種々のファイルを処理しようとする場合に、それらのファイルの固定長が異なっている場合、RECORD CONTAINS 0 をコーディングすることによりレコード長の矛盾を回避してください。
既存のファイルが ASCII データ・セット (DCB=(OPTCD=Q)) である場合には、ファイルについての FD 記入項目で CODE-SET 節を使用しなければなりません。
関連参照
FILE SECTION 記入項目