z/OS concepts
Previous topic | Next topic | Contents | Glossary | Contact z/OS | PDF

What is JES?

z/OS concepts

z/OS® uses a job entry subsystem or JES to receive jobs into the operating system, to schedule them for processing by z/OS, and to control their output processing.

JES is the component of the operating system that provides supplementary job management, data management, and task management functions such as scheduling, control of job flow, and the reading and writing of input and output streams on auxiliary storage devices, concurrently with job execution.

z/OS manages work as tasks and subtasks. Both transactions and batch jobs are associated with an internal task queue that is managed on a priority basis. JES is a component of z/OS that works on the front end of program execution to prepare work to be executed. JES is also active on the back end of program execution to help clean up after work is performed. This activity includes managing the printing of output generated by active programs.

More specifically, JES manages the input and output job queues and data.

For example, JES handles the following aspects of batch processing for z/OS:
  • Receiving jobs into the operating system
  • Scheduling them for processing by z/OS
  • Controlling their output processing
z/OS has two versions of job entry systems: JES2 and JES3. Of these, JES2 is the most common by far. JES2 and JES3 have many functions and features, but their most basic functions are as follows:
  • Accept jobs submitted in various ways:
    • From ISPF through the SUBMIT command
    • Over a network
    • From a running program, which can submit other jobs through the JES internal reader
    • From a card reader (very rare!)
  • Queue jobs waiting to be executed. Multiple queues can be defined for various purposes.
  • Queue jobs for an initiator, which is a system program that requests the next job in the appropriate queue.
  • Accept printed output from a job while it is running and queue the output.
  • Optionally, send output to a printer, or save it on spool for PSF, InfoPrint, or another output manager to retrieve.

JES uses one or more disk data sets for spooling, which is the process of reading and writing input and output streams on auxiliary storage devices, concurrently with job execution, in a format convenient for later processing or output operations. Spool is an acronym that stands for simultaneous peripheral operations online.

JES combines multiple spool data sets (if present) into a single conceptual data set. The internal format is not in a standard access-method format and is not written or read directly by applications. Input jobs and printed output from many jobs are stored in the single (conceptual) spool data set. In a small z/OS system, the spool data sets might be a few hundred cylinders of disk space; in a large installation, they might be many complete volumes of disk space.

The basic elements of batch processing are shown in Figure 1.

Figure 1. Basic batch flow

The initiator is an integral part of z/OS that reads, interprets, and executes the JCL. It is normally running in several address spaces (as multiple initiators). An initiator manages the running of batch jobs, one at a time, in the same address space. If ten initiators are active (in ten address spaces), then ten batch jobs can run at the same time. JES does some JCL processing, but the initiator does the key JCL work

The jobs in Basic batch flow represent JCL and perhaps data intermixed with the JCL. Source code input for a compiler is an example of data (the source statements) that might be intermixed with JCL. Another example is an accounting job that prepares the weekly payroll for different divisions of a firm (presumably, the payroll application program is the same for all divisions, but the input and master summary files may differ).

The diagram represents the jobs as punched cards (using the conventional symbol for punched cards) although real punched card input is very rare now. Typically, a job consists of card images (80-byte fixed-length records) in a member of a partitioned data set.

Copyright IBM Corporation 1990, 2010