Batch Processing and the Job Entry Subsystem (JES)
The Traffic Controller Behind Every Job
What Is Batch Processing?
Batch processing is the execution of a program, or series of programs, against a defined set of data without requiring a person to interact with it while it runs. Think of it like a washing machine cycle, or a bakery: you load a batch, it processes, and you come back once it's done.
Batch vs. Live: Switch the Scenario
Toggle between a real overnight batch job and a real online transaction to see how differently they behave
Neither is "better" — a bank needs both: authorising your card in under two seconds right now, and reconciling every transaction from the entire day in one overnight run.
What JES Actually Does
The Job Entry Subsystem, JES, is the component of z/OS responsible for managing the entire lifecycle of a batch job — from the moment it's submitted to the moment its output has been delivered and it's cleared from the system. If batch processing is the washing machine cycle, JES is the appliance itself, quietly managing the sequence of events that turns a submitted job into a completed one.
JES doesn't just move jobs through in the order they arrive, either. Alongside the Workload Manager, it handles scheduling and prioritisation — deciding which jobs get access to resources and when, based on job class, priority, and current system load. On a busy production system, there might be thousands of jobs moving through these phases at any given moment, and JES is what keeps that flow orderly rather than descending into chaos.
A category grouping jobs with similar resource needs or execution characteristics. Installations configure how many jobs from each class can run at once.
Within a class, jobs are further ordered by priority — giving JES a clear basis for deciding which of potentially thousands of waiting jobs runs next.
Click through the five phases below to see what happens at each stage.
The Job Lifecycle
Click a phase to expand
- Job name & number assigned
- Placed into input queue
- JCL parsed & validated
- Actual program logic executes
- WLM & JES coordinate scheduling
- SYSOUT routed / printed
- Job removed from system
Live Job Queue Simulator
Submit jobs at different priorities and watch JES move them through Input → Conversion → Processing → Output → Purge — high-priority jobs get dispatched faster, exactly as JES would in production
JCL Basics
Job Control Language is declarative — it describes what a job needs, not how to compute something. Click any line below to see what it actually does.
Annotated JCL Explorer
Click a line for a plain-English explanation
Click any line above to see what it does.
JES2 vs. JES3
IBM provides two different implementations of the Job Entry Subsystem. Both manage the same job lifecycle — they just coordinate very differently across a multi-system environment.
JES2 / JES3 Topology
JES2
own decisions
JES2
own decisions
JES2
own decisions
JES3
decisions
JES3
the plan
JES3
the plan
Batch vs. Online (CICS)
CICS keeps transactions running continuously — short, discrete requests completing in a fraction of a second. JES-managed batch jobs have a defined beginning and end. They're complementary, not competitors.
Summary
JES manages the entire lifecycle of a batch job — from submission through JCL-defined execution to output and purge — while CICS handles the online side. JES2's decentralised model and JES3's centralised one solve the same problem in different ways, and understanding both halves of this picture is key to understanding how a mainframe balances enormous overnight workloads with instant, everyday transactions.