Dynamic output programming example

The following example uses dynamic output to create an output descriptor and allocates a SYSOUT data set that references the descriptor. Then it deletes the descriptor. The characteristics of the descriptor are specified in the program's input, except for BURST, which is hard-coded.
 DYN      CSECT                        ENTRY LINKAGE
          USING *,15
          STM   14,12,12(13)
          BALR  12,0
 BEGIN    DS    0H
          USING BEGIN,12
 *
 * REG 1 POINTS TO TWO INPUT WORDS: WORD 1 POINTS TO
 * REQUESTED SYSOUT OPTIONS.  WORD 2 POINTS TO OUTPUT
 * AREA FOR RETURN AND REASON CODES.
 *
          LA    4,OUTPUT_DATA          ADR OF OUTPUT DATA
          ST    4,4(0,1)               PUT ADR IN PARM LIST
          L     4,0(0,1)               POINTER TO INPUT
 *
 * MOVE INPUT DATA INTO THE TEXT UNITS
 *
          USING INPUT_DATA,4           MAP INPUT DATA
          MVC   COPYPRM,COPYIN         HOW MANY COPIES
          MVC   GROUP#1,GROUPIN1       FIRST GROUP VAL
          MVC   GROUP#2,GROUPIN2       SECOND GROUP VAL
          MVC   FORMDPRM,FORMDIN       WHAT KIND OF FORM
          OC    POINTER4,ENDMASK       HIGH ORDER BIT ON
 *                                     INDICATES END OF
 *                                     TEXT UNIT POINTER
 *                                     LIST
 *
 * ISSUE OUTADD TO CREATE AN OUTPUT DESCRIPTOR
 *
          OUTADD NAME=ODNAME,TEXTPTR=TXTPTRS1,        C
                MF=(E,ADDPARML)
          ST    15,OUTADD_RETCODE      SAVE RETURN CODE
          ST    0,OUTADD_RESCODE       SAVE REASON CODE
          ST    1,OUTADD_KEY           SAVE KEY IN ERROR
          LTR   15,15                  OUTADD RETCODE
          BNZ   SKIP                   BRANCH IF BAD
 *
 * INVOKE DYNALLOC TO ALLOCATE THE SYSOUT DATA SET THAT
 * GOES WITH THE OUTPUT DESCRIPTOR OUT1.
 *
          B     DYNAL                  DYNALLOC ROUTINE
 *
 * INVOKE OUTDEL TO DELETE THE DESCRIPTOR, THEN EXIT
 *
 DELETE   OUTDEL NAME=ODNAME,MF=(E,DELPARML)
          ST    15,OUTDEL_RETCODE      SAVE RETURN CODE
          ST    0,OUTDEL_RESCODE       SAVE REASON CODE
 SKIP     DS    0H                     HERE IF CREATE BAD
          LM    14,12,12(13)           RETURN TO CALLER
          SLR   15,15
          BR    14