ISPF has a powerful feature called File-Tailoring, that allows you to create generic JCL streams, that can be configured on-the-fly, without destroying the original template. These templates are called skeletons and are stored in a skeleton-library (ISPSLIB).
This is what, your skeleton, let's call it MYSKEL would look like -
//STEP01 EXEC PGM=IKJEFT01,DYNAMNBR=30
//SYSPRINT DD SYSOUT=*
//SYSEXEC DD DISP=SHR,DSN=MYREXX PDS
//SYSTSPRT DD SYSOUT=*
//SYSTSIN DD *
Using file tailoring is fairly simple. Do you know how parameters are substituted in JCL Procedures? This hardly requires any Rexx programming experience.
FTOPEN starts the file-tailoring process. The TEMP option tells, that the output after having tailoredl and customized the skeleton, should be stored in a temporary dataset.
Next, the FTINCL MYSKEL command gets the MYSKEL skeleton file and processes it - scans each line of the skeleton, one-by-one and substitutes any variables.
An FTCLOSE finalizes this dataset. In ISPF, the name of the temporary output dataset is stored in a special variable(in the shared ISR Pool) called ZTEMPF. You can query this name by a VGET.
"VGET ZTEMPF SHARED"
You may choose to either edit the dataset or submit the file.