A JES initiator performs several functions to ensure that multiple jobs run at the same time, without conflicts.
To run multiple jobs asynchronously, the system must perform a number of functions:
– Select jobs from the input queues (JES does this).
– Ensure that multiple jobs (including TSO users and other interactive applications) do not conflict in data set usage.
– Ensure that single-user devices, such as tape drives, are allocated correctly.
– Find the executable programs requested for the job.
– Clean up after the job ends and then request the next job.
Most of this work is done by the initiator, based on JCL information for each job. The most complex function is to ensure there are no conflicts due to data set utilization. For example, if two jobs try to write in the same data set at the same time (or one reads while the other writes), there is a conflict. This event would normally result in corrupted data. The primary purpose of JCL is to tell an initiator what is needed for the job.
The prevention of conflicting data set usage is critical to z/OS and is one of the defining characteristics of the operating system. When the JCL is properly constructed, the prevention of conflicts is automatic. For example, if job A and job B must both write to a particular data set, the system (through the initiator) does not permit both jobs to run at the same time. Instead, whichever job starts first causes an initiator attempting to run the other job to wait until the first job completes.