It doesn't work the way you seem to think it should work. Mr. Scherrrer is proposing that you change something that looks like -
//stpname EXEC PGM=yourpgm,...
... (Some JCL)
//yourDD DD SYSOUT=x,...
... (More JCL)
to something that looks something like -
//stpname EXEC PGM=yourpgm,...
... (Some JCL)
//yourDD DD DISP=(,CATLG),DSN=your-dataset,...
... (More JCL)
//CTLD EXEC PGM=IEBGENER
//SYSPRINT DD SYSOUT=*
//SYSUT1 DD DISP=OLD,DSN=your-dataset
//SYSUT2 DD SYSOUT=x,...
//SYSIN DD DUMMY
This will work most of the time, but not always. For example, in researching for a recent post to the Assembler forum I wrote a small program that did a dynamic allocation call, then called another program that listed the allocated DD statements to a DD statement that was allocated as a SYSOUT data set, then did another dynamic allocation call, then called the DD statement lister. If the output DD in the DD statement lister had been allocated to a data set rather than a JES data set, the second call to the DD statement lister would have rewritten the output data set rather than add to the data set as it did when I ran my test.