Learn JCL-SCRIPTING with Real Code Examples
Updated Nov 27, 2025
Code Sample Descriptions
1
Simple JCL Job to Run a COBOL Program
//JOB001 JOB (ACCT),'RUN COBOL',CLASS=A,MSGCLASS=X
//STEP1 EXEC PGM=MYCOBOL
//INFILE DD DSN=MY.INPUT.FILE,DISP=SHR
//OUTFILE DD DSN=MY.OUTPUT.FILE,DISP=(NEW,CATLG,DELETE),
// UNIT=SYSDA,SPACE=(TRK,(10,1))
//SYSOUT DD SYSOUT=*
Submit a COBOL program with input and output datasets.
2
JCL Conditional Job Step
//STEP2 EXEC PGM=ANOTHERPGM,COND=(0,NE,STEP1)
//SYSOUT DD SYSOUT=*
Execute STEP2 only if STEP1 completes successfully.
3
JCL Allocate Temporary Dataset
//TEMPDATA DD DSN=&&TEMP,DISP=(NEW,PASS),UNIT=SYSDA,SPACE=(CYL,(5,1)),
// DCB=(RECFM=FB,LRECL=80,BLKSIZE=800)
Define a temporary dataset for program processing.
4
JCL Execute Multiple Steps
//JOB002 JOB (ACCT),'MULTI STEP',CLASS=A,MSGCLASS=X
//STEP1 EXEC PGM=PROG1
//SYSOUT DD SYSOUT=*
//STEP2 EXEC PGM=PROG2
//SYSOUT DD SYSOUT=*
Run multiple steps in a single job.
5
JCL Pass Parameters to Program
//JOB003 JOB (ACCT),'PARAM TEST',CLASS=A,MSGCLASS=X
//STEP1 EXEC PGM=MYPROG,PARM='INPUT1 OUTPUT1'
//SYSOUT DD SYSOUT=*
Pass command-line parameters to a program using PARM keyword.
6
JCL Include Cataloged Procedure
//JOB004 JOB (ACCT),'CAT PROC',CLASS=A,MSGCLASS=X
//STEP1 EXEC PROC=MYPROC,PARM='DATA1 DATA2'
//SYSOUT DD SYSOUT=*
Use a pre-defined cataloged procedure in your job.
7
JCL Execute a DB2 Program
//JOB005 JOB (ACCT),'DB2 JOB',CLASS=A,MSGCLASS=X
//STEP1 EXEC PGM=MYDB2PGM,REGION=4M
//DB2OUT DD SYSOUT=*
//SYSIN DD DUMMY
Run a DB2 program with DB2 precompiler environment.
8
JCL Handle Job Output to Different SYSOUT Classes
//JOB006 JOB (ACCT),'SYSOUT TEST',CLASS=A,MSGCLASS=X
//STEP1 EXEC PGM=PROG1
//SYSOUT DD SYSOUT=A
//STEP2 EXEC PGM=PROG2
//SYSOUT DD SYSOUT=B
Direct output of different steps to different SYSOUT classes.
9
JCL Re-run Job Step on Failure
//JOB007 JOB (ACCT),'RETRY STEP',CLASS=A,MSGCLASS=X
//STEP1 EXEC PGM=PROG1,COND=(4,LT)
//SYSOUT DD SYSOUT=*
Automatically re-run a step if it fails using RESTART and COND.
10
JCL Submit Another Job from Job
//JOB008 JOB (ACCT),'SUBMIT JOB',CLASS=A,MSGCLASS=X
//STEP1 EXEC PGM=IKJEFT01
//SYSTSPRT DD SYSOUT=*
//SYSTSIN DD *
submit 'USER.TEST.JOB'
END
Use the SUBMIT statement to trigger another job from this job.