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 finished
4
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.