AI Generate JCL docs instantly

JCL Cheat Sheet

Quick reference guide with copy-paste ready code snippets

Try DocuWriter Free

Getting Started

3 snippets

Basic JCL job structure

Simple Job

//MYJOB    JOB  (ACCT),'PROGRAMMER NAME',CLASS=A,MSGCLASS=X
//STEP1    EXEC PGM=IEFBR14
//

Job Statement

//JOBNAME  JOB  (ACCOUNT-INFO),
//             'PROGRAMMER-NAME',
//             CLASS=A,
//             MSGCLASS=X,
//             MSGLEVEL=(1,1),
//             NOTIFY=&SYSUID

Comments

//MYJOB    JOB  (ACCT),'JOB DESCRIPTION'
//*
//* THIS IS A COMMENT LINE
//*
//STEP1    EXEC PGM=IEFBR14

EXEC Statements

4 snippets

Execute programs and procedures

Execute Program

//STEP1    EXEC PGM=IEFBR14
//STEP2    EXEC PGM=SORT
//STEP3    EXEC PGM=IEBGENER

Execute Procedure

//STEP1    EXEC PROC=MYPROC
//STEP2    EXEC MYPROC

Execute with Parms

//STEP1    EXEC PGM=MYPROG,
//             PARM='OPTION1,OPTION2',
//             REGION=4M,
//             TIME=(0,30)

Conditional Execution

//STEP1    EXEC PGM=PROG1
//STEP2    EXEC PGM=PROG2,COND=(0,NE)
//STEP3    EXEC PGM=PROG3,COND=((0,NE,STEP1),(4,LT,STEP2))

DD Statements

4 snippets

Data definition statements

Sequential File

//INFILE   DD  DSN=MY.INPUT.FILE,
//             DISP=SHR

New Dataset

//OUTFILE  DD  DSN=MY.OUTPUT.FILE,
//             DISP=(NEW,CATLG,DELETE),
//             UNIT=SYSDA,
//             SPACE=(CYL,(10,5),RLSE),
//             DCB=(RECFM=FB,LRECL=80,BLKSIZE=800)

Temporary Dataset

//TEMPFILE DD  DSN=&&TEMP,
//             DISP=(NEW,PASS),
//             UNIT=SYSDA,
//             SPACE=(TRK,(5,2))

Concatenation

//INFILES  DD  DSN=FILE1,DISP=SHR
//         DD  DSN=FILE2,DISP=SHR
//         DD  DSN=FILE3,DISP=SHR

Tired of looking up syntax?

DocuWriter.ai generates documentation and explains code using AI.

Try Free

Common Utilities

3 snippets

IBM utility programs

IEBGENER - Copy

//COPY     EXEC PGM=IEBGENER
//SYSPRINT DD  SYSOUT=*
//SYSUT1   DD  DSN=INPUT.FILE,DISP=SHR
//SYSUT2   DD  DSN=OUTPUT.FILE,
//             DISP=(NEW,CATLG),
//             SPACE=(TRK,(10,5)),
//             DCB=(RECFM=FB,LRECL=80)
//SYSIN    DD  DUMMY

SORT

//SORT     EXEC PGM=SORT
//SYSOUT   DD  SYSOUT=*
//SORTIN   DD  DSN=UNSORTED.FILE,DISP=SHR
//SORTOUT  DD  DSN=SORTED.FILE,
//             DISP=(NEW,CATLG),
//             SPACE=(CYL,(5,1))
//SYSIN    DD  *
  SORT FIELDS=(1,10,CH,A)
/*

IEFBR14 - Allocate/Delete

//DELETE   EXEC PGM=IEFBR14
//FILE1    DD  DSN=OLD.FILE,
//             DISP=(OLD,DELETE)

Procedures (PROCs)

2 snippets

Cataloged and in-stream procedures

In-Stream Procedure

//MYJOB    JOB  (ACCT),'PROC EXAMPLE'
//MYPROC   PROC
//STEP1    EXEC PGM=PROG1
//STEP2    EXEC PGM=PROG2
//         PEND
//RUN1     EXEC MYPROC
//RUN2     EXEC MYPROC

Procedure with Symbolic

//GENPROC  PROC DSN=,MEMBER=
//COPY     EXEC PGM=IEBGENER
//SYSUT1   DD  DSN=&DSN(&MEMBER),DISP=SHR
//SYSUT2   DD  SYSOUT=*
//SYSIN    DD  DUMMY
//         PEND
//STEP1    EXEC GENPROC,DSN=MY.PDS,MEMBER=MEM1

System Symbols

2 snippets

JCL symbolic parameters

Common Symbols

//STEP1    EXEC PGM=PROG1
//OUTFILE  DD  DSN=&SYSUID..MY.FILE,
//             DISP=(NEW,CATLG)
//LOGFILE  DD  DSN=LOG.&SYSDATE..D&SYSTIME,
//             DISP=(NEW,CATLG)

SET Statement

//MYJOB    JOB  (ACCT),'SET EXAMPLE'
//         SET HLQ=MY.PROJECT
//         SET ENVIR=PROD
//STEP1    EXEC PGM=PROG1
//INFILE   DD  DSN=&HLQ..&ENVIR..INPUT,DISP=SHR

Generation Data Groups

3 snippets

Working with GDG datasets

Create GDG Entry

//NEWGDG   EXEC PGM=MYPROG
//OUTPUT   DD  DSN=MY.GDG.FILE(+1),
//             DISP=(NEW,CATLG),
//             SPACE=(CYL,(5,1)),
//             DCB=(RECFM=FB,LRECL=80)

Read Current GDG

//INPUT    DD  DSN=MY.GDG.FILE(0),DISP=SHR

Read Previous GDG

//OLDINPUT DD  DSN=MY.GDG.FILE(-1),DISP=SHR
//OLDER    DD  DSN=MY.GDG.FILE(-2),DISP=SHR

Control Statements

2 snippets

Job flow control

IF-THEN-ELSE

//STEP1    EXEC PGM=PROG1
//STEP2    IF (STEP1.RC = 0) THEN
//RUN2     EXEC PGM=PROG2
//         ENDIF
//STEP3    IF (STEP1.RC > 4) THEN
//ERROR    EXEC PGM=ERRPROG
//         ELSE
//SUCCESS  EXEC PGM=OKPROG
//         ENDIF

Condition Codes

//STEP1    EXEC PGM=PROG1
//STEP2    IF (RC = 0) THEN
//RUN      EXEC PGM=PROG2
//         ENDIF
//STEP3    IF (RC <= 4 AND STEP1.RC = 0) THEN
//FINAL    EXEC PGM=PROG3
//         ENDIF

More Cheat Sheets

FAQ

Frequently asked questions

What is a JCL cheat sheet?

A JCL cheat sheet is a quick reference guide containing the most commonly used syntax, functions, and patterns in JCL. It helps developers quickly look up syntax without searching through documentation.

How do I learn JCL quickly?

Start with the basics: variables, control flow, and functions. Use this cheat sheet as a reference while practicing. For faster learning, try DocuWriter.ai to automatically explain code and generate documentation as you learn.

What are the most important JCL concepts?

Key JCL concepts include variables and data types, control flow (if/else, loops), functions, error handling, and working with data structures like arrays and objects/dictionaries.

How can I document my JCL code?

Use inline comments for complex logic, docstrings for functions and classes, and README files for projects. DocuWriter.ai can automatically generate professional documentation from your JCL code using AI.

Code Conversion Tools

Convert JCL to Other Languages

Easily translate your JCL code to other programming languages with our AI-powered converters

Related resources

Stop memorizing. Start shipping.

Generate JCL Docs with AI

DocuWriter.ai automatically generates comments, docstrings, and README files for your code.

Auto-generate comments
Create README files
Explain complex code
API documentation
Start Free - No Credit Card

Join 33,700+ developers saving hours every week