I'm trying to simplify my life a tad and want to use SET statements to pass values versus hard coding them. My JCL looks like this:

Code:
//SET01    SET HLQ='TOTI',DBNAME='TOTDB01',SUBSYS='DB2DB2B',
//             SUBID='DB2B',SYSMSG='I'     
//*
.
.
. (few lines deleted)
.
.
//DELETE2  EXEC PGM=IKJEFT1B,DYNAMNBR=20,REGION=0M
//STEPLIB  DD DSN=&SUBSYS..DSNLOAD.TEMP,DISP=SHR
//         DD DSN=&SUBSYS..DSNLOAD.PERM,DISP=SHR
//         DD DSN=&SUBSYS.****NLIB.LOAD.TEMP,DISP=SHR
//         DD DSN=&SUBSYS.****NLIB.LOAD.PERM,DISP=SHR
//SYSPRINT DD SYSOUT=&SYSMSG
//SYSTSPRT DD SYSOUT=&SYSMSG
//SYSTSIN  DD DSN=TOPER.CONTROL(OT&SUBID),DISP=SHR
//SYSOUT   DD SYSOUT=&SYSMSG
//SYSIN    DD DSN=TOPER.CONTROL(SQL500),DISP=SHR

SQL500 looks like this:

Code:
                          
    DSN SYS(DB2B)           

    RUN  PROGRAM(DSNTEP2) PARMS('/ALIGN(LHS)')  
    END
At the top, I have a SET statement for SUBID='DB2B' and I want to change SQL500 to use the SET statement

Code:
                          
   DSN SYS(&SUBID)           

   RUN  PROGRAM(DSNTEP2) PARMS('/ALIGN(LHS)')  
   END
Something isn't happy. What am I doing wrong?