JCL has been the backbone of IBM mainframe batch processing for decades. It’s powerful and deeply integrated into MVS/OS environments — but it’s also famously rigid, cryptic, and difficult to learn.
Jol was created specifically to fix those problems.
Below is a clean, structured comparison that highlights how the two languages differ in purpose, design, and day‑to‑day usability.
Low‑level job control language built into MVS.
Designed in the 1960s/70s with strict syntax rules.
Controls programs, datasets, and batch execution.
Requires deep system knowledge.
High‑level, English‑like language that replaces or simplifies JCL.
Designed to make batch jobs easier to write and maintain.
Adds automation, scheduling, and job networking.
Reduces the learning curve dramatically.
JCL is the engine.
Jol is the modern dashboard on top of it.
Positional parameters
Heavy punctuation
Strict column rules
Hard to read and debug
Example:
Code
//STEP1 EXEC PGM=SORT
//SORTIN DD DSN=MY.DATA,DISP=SHR
//SORTOUT DD DSN=MY.OUTPUT,DISP=(NEW,CATLG),
// SPACE=(CYL,(5,2)),UNIT=SYSDA
Free‑form text
English‑like commands
Minimal punctuation
Easy to understand
Example:
Code
SORT MY.DATA TO MY.OUTPUT;
5 CYLS;
CATLG MY.OUTPUT;
Jol reads like instructions.
JCL reads like machine directives.
Requires explicit coding of:
RECFM
LRECL
SPACE
UNIT
DISP
DSORG
Errors are common and often cryptic.
Uses a dataset attribute database.
Automatically fills in attributes.
Only specify what’s unique.
Example:
Code
COPY INPUT TO OUTPUT;
Jol looks up all attributes for both datasets.
Jol removes 80–90% of dataset coding.
No built‑in scheduling.
Requires external tools (CA‑7, Control‑M, OPC, etc.).
No concept of job dependencies.
Built‑in scheduler.
Day‑based rules (MON, HOLIDAY, JUL12, WORKDAY).
Job dependencies and networks.
Conditional submission.
Example:
Code
SUBMIT JOB3 AFTER JOB1 & JOB2 ENDED;
Jol is both a language and a scheduler.
Restart logic is manual and error‑prone.
GDG handling requires careful coding.
Automatic restart support.
Recalculates GDG numbers.
STARTAT lets you resume at any step safely.
Example:
Code
STARTAT PRINT;
Very limited.
You can include PROCs, but that’s about it.
Macro system for creating new commands.
User exits for enforcing standards and security.
Many Jol commands are implemented as macros.
Jol can evolve.
JCL cannot.
Required for low‑level system control.
Needed for legacy environments.
Best for system programmers and JCL experts.
Ideal for operations teams, schedulers, and batch developers.
Perfect for organizations modernizing legacy workloads.
Great for onboarding new staff quickly.
Feature Jol JCL
Learning Curve - Low - High
Dataset Attributes - Automatic - Manual
Scheduling - Built-in - External
Job Networks - Yes - No
Restarts - Automatic - Manual
GDG Handling - Smart - Manual
Extensibility - Macros, exits - Limited
Purpose - Simplify/replace JCL - Native job control
JCL is the traditional, low‑level way to run batch jobs.
Jol is the modern, high‑level way to make those jobs easier, safer, and faster.
Jol doesn’t just simplify JCL — it elevates mainframe operations with automation, readability, and built‑in scheduling that JCL simply doesn’t have.