Open considerations for sequential-only processing

Here are the considerations for opening files when sequential-only processing is specified.

If the system determines that sequential-only processing is not allowed, a message is sent to the program to indicate that the request for sequential-only processing is not being accepted; however, the file is still opened for processing.

  • If the program opened the member for output only, and if SEQONLY(*YES) was specified (number of records was not specified) and either the opened member is a logical member, a uniquely keyed physical member, or there are other access paths to the physical member, SEQONLY(*YES) is changed to SEQONLY(*NO) so the program can handle possible errors (for example, duplicate keys, conversion mapping, and select/omit errors) at the time of the output operation. If you want the system to run sequential-only processing, change the SEQONLY parameter to include both the *YES value and number of records specification.
  • Sequential-only processing can be specified only for input-only (read) or output-only (add) operations. If the program specifies update or delete operations, sequential-only processing is not allowed by the system.
  • If a file is being opened for output, it must be a physical file or a logical file based on one physical file member.
  • Sequential-only processing can be specified with commitment control only if the member is opened for output-only.
  • If sequential-only processing is being used for files opened with commitment control and a rollback operation is performed for the job, the records that are in the job's storage area during the rollback operation are not written to the system storage area and never appear in the journal for the commitment control transaction. If no records were ever written to the system storage area prior to a rollback operation being performed for a particular commitment control transaction, the entire commitment control transaction is not reflected in the journal.
  • For output-only, the number of records specified to be moved as a unit and the force ratio are compared and automatically adjusted as necessary. If the number of records is larger than the force ratio, the number of records is reduced to equal the force ratio. If the opposite is true, the force ratio is reduced to equal the number of records.
  • If the program opened the member for output only, and if SEQONLY(*YES) was specified (number of records was not specified), and duplicate or insert key feedback has been requested, SEQONLY(*YES) will be changed to SEQONLY(*NO) to provide the feedback on a record-by-record basis when the records are inserted into the file.
  • The number of records in a block will be changed to one if all of the following conditions are true:
    • The member was opened for output-only processing.
    • No override operations are in effect that have specified sequential-only processing.
    • The file being opened is a file that cannot be extended because its increment number of records was set to zero.
    • The number of bytes available in the file is less than the number of bytes that fit into a block of records.
The following considerations apply when sequential-only processing is not specified and the file is opened using the Open Query File (OPNQRYF) command. If these conditions are satisfied, a message is sent to indicate that sequential-only processing will be performed and the query file is opened.
  • If the OPNQRYF command specifies the name of one or more fields on the group field (GRPFLD) parameter, or OPNQRYF requires group processing.
  • If the OPNQRYF command specifies one or more fields, or *ALL on the UNIQUEKEY parameter.
  • If a view is used with the DISTINCT option on the SQL SELECT statement, then SEQONLY(*YES) processing is automatically performed.