Data set integrity processing

The system performs data set integrity processing once for each job, for the following types of data sets:

The system does not perform data set integrity processing for subsystem data sets.

Data set integrity processing for permanent data sets

To secure control for all permanent data sets for the job, the system enqueues each data set, marking the data set as requested by that job and noting the kind of control requested: shared or exclusive.

If not using the DSENQSHR function, the system assigns control of the data set until completion of the last step in the job that refers to the data set. If using the DSENQSHR function, the system may downgrade the ENQ from exclusive control to shared control on the last step which requests exclusive control and there is a later step which requests shared control.

A statement requesting exclusive control overrides any number of statements requesting shared control. One of two methods can be used to request exclusive control: For example, utility control statements that delete/scratch a data set will result in exclusive use of that data set.
The job receives control of the data set if:
The job does not receive control of a data set if:

If a job requests data sets that are not available, the system issues the message ‘JOB jjj WAITING FOR DATA SETS’ to the operator. The job waits until the required data sets become available, unless the operator cancels the job.

When the system has secured control of all permanent data sets, it allocates and unallocates resources for each step of the job. The job terminates after the system has unallocated all resources for the last step in the job.

Data set integrity processing for other data sets

Non-VIO temporary data sets, data sets with alias names, and members of generation data groups are reserved or enqueued for each step within the job. The job receives control of the data set for that step in the same way as for permanent data sets.

When each step terminates, the system releases control of any data sets that are not used in any subsequent step of the job, except non-VIO temporary data sets, data sets with alias names, or a member of a generation data group.