In a non-interactive computer system, particularly IBM mainframes, a job stream, jobstream, or simply job is the sequence of job control language statements (JCL) and data (called instream data) that comprise a single "unit of work for an operating system". The term job traditionally means a one-off piece of work, and is contrasted with a batch (executing the same steps over many inputs), but non-interactive computation has come to be called "batch processing", and thus a unit of batch processing is often called a job, or by the oxymoronic term batch job; see job for details. Performing a job consists of executing one or more programs. Each program execution, called a job step, jobstep, or step, is usually related in some way to the others in the job. Steps in a job are executed sequentially, possibly depending on the results of previous steps, particularly in batch processing.
The term "job stream" is particularly associated with mainframes; in the IBM z/OS operating system, a job is initiated by a
// JOB and terminated by the next
// JOB or
// statement. Each job step consists of one
// EXEC statement indicating the program to be executed and usually multiple
// DD statements defining the files and devices to be used.
A simple example of a job stream is a system to print payroll checks which might consist of the following steps, performed on a batch of inputs:
Each step depends on successful completion of the previous step. For example, if incorrect data is input to the first step the job might terminate without executing the subsequent steps to allow the payroll department to correct the data and rerun the edit. If there are no errors the job will run to completion with no manual intervention.