Getting Started
3 snippetsBasic 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=&SYSUIDComments
//MYJOB JOB (ACCT),'JOB DESCRIPTION'
//*
//* THIS IS A COMMENT LINE
//*
//STEP1 EXEC PGM=IEFBR14EXEC Statements
4 snippetsExecute programs and procedures
Execute Program
//STEP1 EXEC PGM=IEFBR14
//STEP2 EXEC PGM=SORT
//STEP3 EXEC PGM=IEBGENERExecute Procedure
//STEP1 EXEC PROC=MYPROC
//STEP2 EXEC MYPROCExecute 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 snippetsData definition statements
Sequential File
//INFILE DD DSN=MY.INPUT.FILE,
// DISP=SHRNew 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=SHRTired of looking up syntax?
DocuWriter.ai generates documentation and explains code using AI.
Common Utilities
3 snippetsIBM 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 DUMMYSORT
//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 snippetsCataloged 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 MYPROCProcedure 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=MEM1System Symbols
2 snippetsJCL 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=SHRGeneration Data Groups
3 snippetsWorking 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=SHRRead Previous GDG
//OLDINPUT DD DSN=MY.GDG.FILE(-1),DISP=SHR
//OLDER DD DSN=MY.GDG.FILE(-2),DISP=SHRControl Statements
2 snippetsJob 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
// ENDIFCondition 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