Dynamic output programming example (continued)

This is the subroutine that dynamically allocates the SYSOUT data set that references the output descriptor.
 * INVOKE DYNALLOC TO ALLOCATE A SYSOUT DATA SET.  SPECIFY
 * SYSOUT CLASS A AND REFERENCE THE OUTPUT DESCRIPTOR
 * 'OUT1'.  SET UP ADDRESSABILITY TO THE DYNAMIC ALLOCATION
 * (SVC 99) REQUEST BLOCK.
 *
 DYNAL    DS    0H
          LA    10,SVC99PRM         PTR TO SVC 99 RB PTR
          LA    11,SVC99PRM+4       PTR TO SVC 99 RB
          USING S99RBP,10           RB PTR
          USING S99RB,11            RB
          ST    11,S99RBPTR         SET RB PTR TO RB
          OI    S99RBPTR,S99RBPND   PTR HIGH ORDER BIT ON
 *
 * INITIALIZE THE SVC 99 REQUEST BLOCK
 *
          XC    S99RB(RBLEN),S99RB  ZERO THE RB
          MVI   S99RBLN,RBLEN       RB LENGTH
          MVI   S99VERB,S99VRBAL    RB VERB CODE=ALLOC
          LA    1,TXTPTRS2          ADR SVC 99 TEXT PTRS
          ST    1,S99TXTPP          STORED IN RB
          OI    POINTERB,S99TUPLN   HIGH ORDER BIT ON
 *                                  INDICATES LAST TEXT
 *                                  UNIT POINTER
          LR    1,10                ADR OF RB POINTER
 *
 * ISSUE DYNALLOC TO ALLOCATE A SYSOUT DATA SET THAT
 * REFERENCES THE OUTPUT DESCRIPTOR, OUT1
 *
          DYNALLOC                  INVOKES SVC99
          ST    15,DYNAL_RETCODE    SAVE RETURN CODE
          MVC   DYNAL_REASON,S99RSC SAVE REASON CODE
          B     DELETE              TO DEL THE OUT DES
 *
 * DECLARE SPACE FOR THE RB, WHICH IS MAPPED BY IEFZB4D0
 *
          DS 0F
 SVC99PRM DS    CL(RBLEN+4)          RB PTR & RB STORAGE
 RBLEN    EQU   (S99RBEND-S99RB)     LENGTH OF RB