The SET statement defines and assigns values to JCL symbolic parameters. These parameters can then be referenced throughout the job stream, allowing for variable substitution and more flexible JCL.
1//[name] SET parameter-name=value[,parameter-name=value]...
1234567//MYJOB JOB (ACCT123),'JOHN SMITH' // SET DATASET='USER.PAYROLL.DATA', // CLASS=A, // REGION=4M //STEP1 EXEC PGM=PAYROLL,REGION=®ION //INPUT DD DSN=&DATASET,DISP=SHR //OUTPUT DD SYSOUT=&CLASS
1234567891011//MYJOB JOB (ACCT123),'JOHN SMITH' // SET SYSID=PROD // SET DAY=&SYSDATE // SET OUTCLASS=A // SET PREFIX=SYS1 //* //STEP1 EXEC PGM=REPORT //SYSPRINT DD SYSOUT=&OUTCLASS //INPUT DD DSN=&PREFIX..&SYSID..MASTER,DISP=SHR //OUTPUT DD DSN=&PREFIX..&SYSID..&DAY..REPORT, // DISP=(NEW,CATLG,DELETE)
1234567891011//MYJOB JOB (ACCT123),'JOHN SMITH' // SET SYSID=TEST //* // IF SYSID='PROD' THEN // SET DATASET='PROD.PAYROLL.DATA' // ELSE // SET DATASET='TEST.PAYROLL.DATA' // ENDIF //* //STEP1 EXEC PGM=PAYROLL //INPUT DD DSN=&DATASET,DISP=SHR