(Originally posted 2011-10-25.)
One of the nice enhancements in z/OS Release 13 JES2 was the support for SYSIN in a JCL procedure. (See here for the announcement letter.)
I have a personal example of where it would’ve been handy. You probably have your own.
We used to distribute sample JCL to use DB2 DSNTIAUL to unload the DB2 Catalog, one table at a time. Obviously with such a repetitive use in a single job step you’d want to use a JCL procedure. And so we did. But there’s a snag:
Each invocation of DSNTIAUL needed the same SYSTSIN DD data. The example below is for DB2 Version 8.
RUN PROGRAM(DSNTIAUL) PLAN(DSNTIB81) PARMS('SQL') END
You can see that for Version 9 you’d need to change it to DSNTIB91 and anyway neither the program nor the plan name are fixed – as DSNTIAUL is a sample you compile etc yourself. So if you change it you either change it in the PROC or you don’t have one and make a global change.
Changing it in the PROC would be preferable, of course. But it couldn’t be done. So we added a step to copy these two lines to a temporary data set and refer to that from the PROC. Cumbersome but a well-known circumvention.
Enter Release 13. The need to do this has gone as you can now have SYSIN instream in a PROC.
Of course, if I were maintaining this JCL still I wouldn’t rush to publish a version that assumed Release 13. 🙂 I hope in your shop you can use it sooner than I can.