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 -
//JOBA JOB ,CLASS=B,MSGCLASS=A
//STEP01 EXEC PGM=IKJEFT01,DYNAMNBR=30
//SYSPRINT DD SYSOUT=*
//SYSEXEC DD DISP=SHR,DSN=MYREXX PDS
//SYSTSPRT DD SYSOUT=*
//SYSTSIN DD *
&name
/*
//
//STEP01 EXEC PGM=IKJEFT01,DYNAMNBR=30
//SYSPRINT DD SYSOUT=*
//SYSEXEC DD DISP=SHR,DSN=MYREXX PDS
//SYSTSPRT DD SYSOUT=*
//SYSTSIN DD *
&name
/*
//
Using file tailoring is fairly simple. Do you know how parameters are substituted in JCL Procedures? This hardly requires any Rexx programming experience.
ADDRESS ISPEXEC
"FTOPEN TEMP"
"FTOPEN TEMP"
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.
ADDRESS ISPEXEC
"FTINCL MYSKEL"
"FTINCL MYSKEL"
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.
ADDRESS ISPEXEC
"FTCLOSE"
"FTCLOSE"
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.
ADDRESS ISPEXEC
"VGET ZTEMPF SHARED"
"VGET ZTEMPF SHARED"
You may choose to either edit the dataset or submit the file.