Requesting variable-length format
Variable-length records can be in format V or format D. Format-D records are variable-length records on ASCII tape files. Format-D records are processed in the same way as format-V records.
Use RECORDING MODE V
for both. You
can omit the RECORDING MODE
clause. The compiler
determines the recording mode to be V
if the largest
level-01 record associated with the file is not greater than the block
size set in the BLOCK CONTAINS
clause, and you take
one of the following actions:
- Use the
RECORD IS VARYING
clause (format-3RECORD
clause).If you provide values for integer-1 and integer-2 (
RECORD IS VARYING FROM
integer-1TO
integer-2), the maximum record length is the value coded for integer-2 regardless of the lengths coded in the level-01 record description entries associated with the file. The integer sizes indicate the minimum and maximum record lengths in numbers of bytes regardless of theUSAGE
of the data items in the record.If you omit integer-1 and integer-2, the maximum record length is determined to be the size of the largest level-01 record description entry associated with the file.
- Use the
RECORD CONTAINS
integer-1TO
integer-2 clause (format-2RECORD
clause). Make integer-1 and integer-2 match the minimum length and the maximum length in bytes of the level-01 record description entries associated with the file. The maximum record length is the integer-2 value. - Omit the
RECORD
clause, but code multiple level-01 records (associated with the file) that are of different sizes or contain anOCCURS DEPENDING ON
clause.The maximum record length is determined to be the size of the largest level-01 record description entry associated with the file.
When you specify a READ INTO
statement for
a format-V file, the record size read for that file is used in the MOVE
statement
generated by the compiler. Consequently, you might not get the result
you expect if the record just read does not correspond to the level-01
record description. All other rules of the MOVE
statement
apply. For example, when you specify a MOVE
statement
for a format-V record read in by the READ
statement,
the size of the record moved corresponds to its level-01 record description.
When
you specify a READ
statement for a format-V file
followed by a MOVE
of the level-01 record, the actual
record length is not used. The program will attempt to move the number
of bytes described by the level-01 record description. If this number
exceeds the actual record length and extends outside the area addressable
by the program, results are unpredictable. If the number of bytes
described by the level-01 record description is shorter than the physical
record read, truncation of bytes beyond the level-01 description occurs.
To find the actual length of a variable-length record, specify data-name-1 in
format 3 of the RECORD
clause of the File Definition
(FD
).
Requesting fixed-length format
Requesting spanned format
Requesting undefined format
Establishing record formats
FILE SECTION entries
Layout of format-V records
Enterprise COBOL for z/OS® Migration Guide (Moving from the
VS COBOL II run time)