Sequential access mode
Format 1 must be used for all files in sequential access mode.
Execution of a format-1 READ statement retrieves the next logical record from the file. The next record accessed is determined by the file organization.
Sequential files
The NEXT RECORD is the next record in a logical sequence of records. The NEXT phrase need not be specified; it has no effect on READ statement execution.
If SELECT OPTIONAL is specified in the file-control entry for this file, and the file is unavailable during this execution of the object program, execution of the first READ statement causes an at-end condition; however, since no file is available, the system-defined end-of-file processing is not performed.
- AT END condition
If the file position indicator indicates that no next logical record exists, or that an optional input file is not available, at-end condition processing occurs in a specific order.
The order is:
- A value derived from the setting of the file position indicator is placed into the I-O status associated with file-name-1 to indicate the at-end condition.
- If the AT END phrase is specified in the statement causing the condition, control is transferred to imperative-statement-1 in the AT END phrase. Any USE AFTER STANDARD EXCEPTION procedure associated with file-name-1 is not executed.
- If the AT END phrase is not specified and an applicable USE AFTER
STANDARD EXCEPTION procedure exists, the procedure is executed. Return
from that procedure is to the next executable statement following
the end of the READ statement.
Both the AT END phrase and an applicable EXCEPTION/ERROR procedure can be omitted.
When the at-end condition occurs, execution of the READ statement is unsuccessful. The contents of the associated record area are undefined and the file position indicator is set to indicate that no valid next record has been established.
For QSAM files, attempts to access or move data into the record area after an unsuccessful read can result in a protection exception.
If an at-end condition does not occur during the execution of a READ statement, the AT END phrase is ignored, if specified, and the following actions occur:
- The file position indicator is set and the I-O status associated with file-name-1 is updated.
- If an exception condition that is not an at-end condition exists,
control is transferred to the end of the READ statement after the
execution of any USE AFTER STANDARD EXCEPTION procedure applicable
to file-name-1.
If no USE AFTER STANDARD EXCEPTION procedure is specified, control is transferred to the end of the READ statement or to imperative-statement-2, if specified.
- If no exception condition exists, the record is made available in the record area and any implicit move resulting from the presence of an INTO phrase is executed. Control is transferred to the end of the READ statement or to imperative-statement-2, if specified. In the latter case, execution continues according to the rules for each statement specified in imperative-statement-2. If a procedure branching or conditional statement which causes explicit transfer of control is executed, control is transferred in accordance with the rules for that statement; otherwise, upon completion of the execution of imperative-statement-2, control is transferred to the end of the READ statement.
After the unsuccessful execution of a READ statement, the contents of the associated record area are undefined and the file position indicator is set to indicate that no valid next record has been established. Attempts to access or move data into the record area after an unsuccessful read can result in a protection exception.
Indexed or relative files
The NEXT RECORD is the next logical record in the key sequence.
For indexed files, the key sequence is the sequence of ascending values of the current key of reference. For relative files, the key sequence is the sequence of ascending values of relative record numbers for records that exist in the file.
Before the READ statement is executed, the file position indicator must have been set by a successful OPEN, START, or READ statement. When the READ statement is executed, the record indicated by the file position indicator is made available if it is still accessible through the path indicated by the file position indicator.
If the record is no longer accessible (because it has been deleted, for example), the file position indicator is updated to point to the next existing record in the file, and that record is made available.
For files in sequential access mode, the NEXT phrase need not be specified.
For files in dynamic access mode, the NEXT phrase must be specified for sequential record retrieval.
- AT END condition
This condition exists when the file position indicator indicates that no next logical record exists or that an optional input file is not available. The same procedure occurs as for sequential files (see AT END condition).
If neither an at-end nor an invalid key condition occurs during the execution of a READ statement, the AT END or the INVALID KEY phrase is ignored, if specified. The same actions occur as when the at-end condition does not occur with sequential files (see AT END condition).
- Sequentially accessed indexed files
When an ALTERNATE RECORD KEY with DUPLICATES is the key of reference, file records with duplicate key values are made available in the order in which they were placed in the file.
- Sequentially accessed relative files
If the RELATIVE KEY clause is specified for this file, READ statement execution updates the RELATIVE KEY data item to indicate the relative record number of the record being made available.