Learn TSO-ISPF-SCRIPTING with Real Code Examples
Updated Nov 27, 2025
Code Sample Descriptions
1
Simple CLIST to Run a COBOL Program
PROC 0
SUBMIT 'MYCOBOL' DATASET('MY.INPUT.FILE') OUTDATASET('MY.OUTPUT.FILE')
IF RC = 0 THEN
WRITE 'COBOL program completed successfully'
ELSE
WRITE 'COBOL program failed'
ENDIF
END
Submit a COBOL program using TSO/ISPF batch environment via CLIST.
2
CLIST Conditional Execution
PROC 0
SUBMIT 'PROG1'
IF RC = 0 THEN
SUBMIT 'PROG2'
ELSE
WRITE 'Step 1 failed, skipping Step 2'
ENDIF
END
Run a second program only if the first program completes successfully.
3
CLIST Allocate Temporary Dataset
PROC 0
ALLOC FI(TEMPDS) DA('&&TEMP.DATA') NEW SPACE(5,1) RECFM(FB) LRECL(80)
IF RC = 0 THEN
WRITE 'Temporary dataset allocated'
ENDIF
END
Allocate a temporary dataset for processing within CLIST.
4
CLIST Multi-Step Batch Job
PROC 0
SUBMIT 'PROG1'
SUBMIT 'PROG2'
SUBMIT 'PROG3'
WRITE 'All steps executed'
END
Run multiple programs sequentially in a single CLIST.
5
CLIST Pass Parameters to Program
PROC 0
SET PARAM1='INPUT1'
SET PARAM2='OUTPUT1'
SUBMIT 'MYPROG' PARM(&PARAM1 &PARAM2)
END
Pass command-line parameters to a program using PARM keyword.
6
CLIST Execute DB2 Program
PROC 0
SUBMIT 'MYDB2PGM' REGION(4M)
IF RC = 0 THEN
WRITE 'DB2 program ran successfully'
ELSE
WRITE 'DB2 program failed'
ENDIF
END
Run a DB2 program with DB2 precompiler environment using CLIST.
7
CLIST Redirect Output
PROC 0
SUBMIT 'PROG1' OUTDATASET('PROG1.OUT')
SUBMIT 'PROG2' OUTDATASET('PROG2.OUT')
WRITE 'Output directed to separate datasets'
END
Direct output of different programs to different datasets or SYSOUT classes.
8
CLIST Retry Step on Failure
PROC 0
SUBMIT 'PROG1'
IF RC > 0 THEN
WRITE 'Retrying Step'
SUBMIT 'PROG1'
ENDIF
END
Automatically re-run a program if it fails.
9
CLIST Read and Process File
PROC 0
ALLOC FI(INFILE) DA('MY.INPUT.FILE') SHR
DO WHILE NOT EOF(INFILE)
READ INFILE INTO LINE
WRITE LINE
ENDDO
FREE FI(INFILE)
END
Read lines from a dataset and display them sequentially.
10
CLIST Submit Another Job
PROC 0
SUBMIT 'USER.TEST.JOB'
IF RC = 0 THEN
WRITE 'Submitted job successfully'
ELSE
WRITE 'Job submission failed'
ENDIF
END
Trigger another job from this CLIST program using SUBMIT command.