RESDEQ subroutine using IEFDDSRV

The assembler language subroutine in Figure 1 can be used by assembler language programs to issue the RESERVE and DEQ macros. Parameters that must be passed to the RESDEQ routine, if the RESERVE macro is to be issued, are:

DDNAME - the eight character name of the DD statement for the device to be reserved.

QNAME - an eight character name.

RNAME LENGTH - one byte (a binary integer) that contains the RNAME length value.

RNAME - a name from 1 to 255 characters in length.

The DEQ macro does not require the UCB=ucb addr as a parameter. If the DEQ macro is to be issued, a fullword of binary zeroes must be placed in the leftmost four bytes of the DDNAME field before control is passed.
Figure 1. Example of Subroutine Issuing RESERVE and DEQ Using GETDSAB
  RESDEQ   CSECT
  RESDEQ   AMODE 24
  RESDEQ   RMODE 24
           SAVE  (14,12),T        SAVE REGISTERS
           BALR  12,0             SET UP ADDRESSABILITY
           USING *,12
           ST    13,SAVE+4
           LA    11,SAVE          ADDRESS OF MY SAVE AREA IS
  *                               STORED IN THIRD WORD OF CALLER'S
           ST    11,8(13)         SAVE AREA
           LR    13,11            ADDRESS OF MY SAVE AREA
           LR    9,1              ADDRESS OF PARAMETER LIST
           L     3,0(9)           DDNAME PARAMETER OR WORD OF ZEROES
           CLC   0(4,3),=F'0'     WORD OF ZEROS IF DEQ IS REQUESTED
           BE    WANTDEQ
  *PROCESS FOR DETERMINING THE UCB ADDRESS USING IEFDDSRV.
           IEFDDSRV RETRIEVE,DEVENTRY,DDNAME=(3),LOC=ANY,           X 
               DEVAREA=DDINFO   INVOKE IEFDDSRV USING DDNAME
           LTR   15,15            CHECKS RETURN CODE
           BZ    FINDUCB          BRANCH IF RETURN CODE IS ZERO
           ABEND 200,DUMP         DDNAME IS NOT IN TIOT, ERROR
  FINDUCB  L     11,DDINFO        ADDRESS OF DD INFORMATION
                 USING DVAR,11
           L     8,DVAR_DEVLST_ADDR  ADDRESS OF AN ENTRY
           USING DVAR_DEVICE_LIST,8
 *PROCESS FOR DETERMINING THE QNAME REQUESTED
  WANTDEQ  L     7,4(9)           ADDRESS OF QNAME
           MVC   QNAME(8),0(7)    MOVE IN QNAME
  *PROCESS FOR DETERMINING THE RNAME AND THE LENGTH OF RNAME
           L     7,8(9)           ADDRESS OF RNAME LENGTH
           MVC   RNLEN+3(1),0(7)  MOVE BYTE CONTAINING LENGTH
           L     7,RNLEN
           STC   7,RNAME          STORE LENGTH OF RNAME IN THE
  *                               FIRST BYTE OF RNAME PARAMETER
  *                               FOR RESERVE/DEQ MACROS
           L     6,12(9)          ADDRESS OF RNAME REQUESTED
           BCTR  7,0              SUBTRACT ONE FROM RNAME LENGTH
           EX    7,MOVERNAM       MOVE IN RNAME
           CLC   0(4,3),=F'0'
           BE    ISSUEDEQ
           RESERVE (QNAME,RNAME,E,0,SYSTEMS),UCB=DVAR_DEV_ADDR
           * FREE THE AREA RETURNRF BY IEFDDSRV.
           SR    0,0              PREPARE FOR IC
           IC    0,B'0111',DVAR_LENGTH GET AREA LENGTH
           SR    8,8
           DROP  8
           IC    8,DVAR_SUBPOOL   GET SUBPOOL
           STORAGE RELEASE,LENGTH=(0),ADDR=(11),SUBPOOL=(8)
           DROP  11
           B     RETURN
  ISSUEDEQ DEQ   (QNAME,RNAME,0,SYSTEMS)
  RETURN   L     13,SAVE+4        RESTORE REGISTERS AND RETURN
           RETURN (14,12),T
  MOVERNAM MVC   RNAME+1(0),0(6)
  SAVE     DS    18F              STANDARD SAVE AREA
  DDINFO   DS    A                ADDRESS OF DD INFORMATION
  QNAME    DS    2F               MAJOR NAME FOR RESERVE AND DEQ MACROS
  RNAME    DS    CL256            MINOR NAME
  RNLEN    DC    F'0'             LENGTH OF MINOR NAME
           END