Jol is a universal command language designed to replace or massively simplify IBM mainframe JCL. Think of it as a high‑level, English‑like scripting language that controls jobs, data sets, programs, scheduling, and networking on MVS/TSO systems.
It sits above the operating system and gives you a cleaner, more powerful way to run and manage batch workloads.
Here’s what that means in practice.
JCL is notoriously rigid and error‑prone. Jol removes most of that pain:
Free‑form syntax
English‑like commands
No positional parameters
Minimal keywords
Far fewer coding rules
Example from the manual:
Code: 5 TRKS
instead of: SPACE=(TRK,(5))
Or Code: IF A=10 | B=2
instead of: COND=((10,NE,A),(2,NE,B))
It’s basically JCL without the suffering.
You can declare:
Programs
Data sets (old, new, temporary)
Printers
Card images
Symbolic variables
And then run them with simple commands like:
Code
RUN UPDATE;
PRINT OUTPUT;
CATLG OUTPUT;
This is one of its biggest strengths.
Jol can:
Run jobs on specific days (MON, TUE, HOLIDAY, JUL12, etc.)
Run jobs only on workdays or weekends
Trigger jobs based on dates, conditions, or symbolic variables
Build job networks (dependencies)
Example:
Code
NETWORK ONE;
SUBMIT JOB1;
SUBMIT JOB2;
SUBMIT JOB3 AFTER JOB1 & JOB2 ENDED;
ENDNET;
This is basically a built‑in job scheduler and dependency engine — written entirely in Jol itself.
You can choose:
Dynamic Allocation Mode
Jol runs jobs directly under TSO or batch without generating JCL.
JCL Generate Mode
Jol produces optimized JCL for the OS to run.
This makes it compatible with legacy environments while still modernizing workflows.
This is surprisingly modern for 1999.
Instead of coding DSNs, RECFM, LRECL, SPACE, UNIT, etc., you can store all attributes in a central database.
Then Jol automatically merges them when needed.
Example:
Code
SORT CARDS TO SORTED.CARDS;
No attributes needed — Jol looks them up.
This also gives it UNIX‑like portability.
It has built‑in commands for:
ALLOCATE
OPEN
READ
WRITE
COPY
DELETE
CATALOG
LISTCAT
RENAME
COMPRESS
MERGE
SORT
It’s basically a scripting language with full dataset I/O.
It has real programming constructs:
IF / THEN / ELSE
DO / END
AND / OR
Arithmetic
String manipulation
Date/time access
Error handling
Example:
Code
IF %DAY='THURSDAY'
THEN SUBMIT PAYROLL;
Or:
Code
IF UPDATE=0 THEN CATLG OUTPUT;
This makes it far more expressive than JCL.
It can:
Reset relative generation numbers automatically
Skip to specific steps with STARTAT
Handle reruns without recoding
Manage GDGs more safely than JCL
Example:
Code
STARTAT PRINT;
Jol recalculates generation numbers so the job still works.
You can write exits to:
Validate job cards
Enforce naming conventions
Restrict dataset access
Block dangerous operations
Insert setup cards
This gives installations strong governance.
You can extend the language itself.
Macros let you define new Jol instructions that behave like built‑ins. This is how many of Jol’s own commands are implemented.
It has an interactive “Teach Yourself Jol” course with menus, tests, and panels.
Jol is:
A high‑level, English‑like command language that replaces JCL, automates scheduling, manages datasets, networks jobs, and provides a powerful scripting environment for IBM mainframes.
It’s basically:
JCL + CLIST + REXX + Scheduler + Job Network Engine + Dataset Manager + Macro Language
all rolled into one unified system.
If you want, I can also:
Summarize Jol in one paragraph
Compare Jol to JCL, REXX, or modern tools
Extract all commands and describe them
Explain how Jol would map to a modern Kubernetes or cloud workflow (this could be fun given your ARM cluster project)
Just tell me what direction you want to go.