JCLbeginner
Batch Job Scheduling Fundamentals
Understand how enterprise schedulers trigger, sequence, and monitor batch jobs beyond what raw JCL alone controls.
Production batch is not submitted by a person at a terminal. A scheduler — CA-7, Control-M, IBM Workload Scheduler — triggers, sequences and monitors it.
A batch scheduler is an air traffic control tower for jobs — individual JCL is just each plane's own flight plan, but the tower decides takeoff order, holds one flight until another has safely landed, and pages someone the moment a flight is dangerously late.
Key Concepts
1
Knowing this layer is what separates writing JCL from understanding how batch runs.
2
What the scheduler holds that JCL cannot. JCL sequences steps inside one job. It says nothing about the
relationships between jobs:
3
job B runs after job A completes with RC <= 4
job C runs when a dataset arrives from an external partner
job D runs only on the last business day of the month
job E runs at 02:00, but only if jobs A, B and C all finished4
That dependency graph — a job stream — is defined once in the scheduler and runs unattended every night.
5
Calendar awareness is a real feature, not a convenience. "The last business day of the month, skipping
public holidays" is a genuine requirement in finance, and encoding it in JCL is not possible.
6
Triggers beyond time. A job can wait for a dataset to exist, for a file to arrive by FTP, for a manual
release by an operator, or for a message from another system. Time is only one trigger among several.
7
Automatic rerun and alerting. A job that fails with a known recoverable condition can be retried by
the scheduler. One that fails otherwise raises an alert — and, importantly, the scheduler knows which jobs
are on the critical path, so "this job is late" can be escalated before the deadline is missed rather than
after.
8
That matters when the SLA is "accounts must be updated before branches open at 09:00". The useful alert is
at 03:00 when the chain falls behind, not at 09:00 when it has failed.
9
The scenario interviewers use: "the 2 a.m. job did not run. How do you investigate?"The answer starts at the scheduler, not the JCL:
10
1. Is the job in the schedule for today at all — calendar, holiday, or a manual hold?
2. Were its predecessors complete? A late or failed upstream job is the usual cause.
3. Was its trigger satisfied — did the expected dataset or file arrive?
4. Was it submitted and held in the queue behind something else — an initiator or class problem?
5. Only then: did it run and fail, in which case look at the job log and `ST22`-equivalent output.ST22
11
Going straight to the JCL is the wrong first move, because a job that never ran has no log to read. In real
incidents the cause is usually in the first three steps.
12
What the interviewer is probing.1. "What is a batch window and why does it constrain design?" Probing: the operational
reality. Stalls: "A schedule." Moves up: the overnight period when online systems are down and
batch must finish — a job that overruns delays the business day opening.
13
2. "How are dependencies between jobs expressed?" Probing: the mechanism. Stalls: "Timing."
Moves up: through the scheduler as predecessor relationships and dataset triggers, not by hoping
the earlier job finished in time.
14
3. "What happens when a job fails overnight?" Probing: the process. Stalls: "It retries."
Moves up: operations follow a documented runbook — which is why every production job needs a
restart procedure written before it goes live.
15
4. "How do you shorten a critical path?" Probing: the engineering. Stalls: "Faster
hardware." Moves up: parallelise independent jobs, split large ones, and remove unnecessary sorts
— the critical path, not total CPU, is what sets the window.