Hello -
Many years ago I used "dynamic allocation' to allocate a dataset from an
assembler program. In order to issue the DYNALLOC macro (I believe that it
is still documented in z/OS JOB MGMT) you must setup values in 'RB' request
block, 'RBPTR' request block pointer, 'TU' text unit and ''TUPL' text unit
pointer list'.
***********************************************************************
*  FOR MORE INFORMATION ON "DYNAMIC ALLOCATION" SEE OS/VS2 JOB MNGMT. *
*                                                                     *
*  NOTE:  'RB' INDICATES 'REQUEST BLOCK'.                             *
*         'RBPTR' INDICATES 'REQUEST BLOCK POINTER'.                  *
*         'TU' INDICATES 'TEXT UNIT'.                                 *
*         'TUPL' INDICATES 'TEXT UNIT POINTER LIST'.                  *
***********************************************************************
*
BUILD    LA    R8,72                   72 BYTES NEEDED FOR STORAGE
         GETMAIN RC,LV=(R8),SP=001
         LTR   R15,15                  SUCCESSFUL GETMAIN?
         BNZ   NODYNAM                 IF = 0, NO CORE FOR DYNAMIC
*                                        ALLOCATION OF UADS DATASET.
         LR    R8,R1                   LOAD ADDR. OF GETMAINED AREA.
         USING S99RBP,R8               ESTABLISH ADDR FOR 'REQUEST
*                                        BLOCK PTR' DSECT.
         LA    R2,S99RBPTR+4           'RB' BEGINS 4 BYTES BEYOND
*                                        START OF 'RBPTR'
         USING S99RB,2                 ESTABLISH ADDR. FOR 'RB' DSECT.
         ST    R2,S99RBPTR             MAKE 'RBPTR' POINT TO 'RB'.
         OI    S99RBPTR,S99RBPND       TURN LEFTMOST (HIGHORDER) BIT
*                                        IN 'RBPTR' ON.
         XC    S99RB(RBLEN),S99RB      ZERO THE 'RB' ENTIRELY.
         MVI   S99RBLN,RBLEN           PUT THE LENGTH OF 'RB' IN ITS
*                                        LENGTH FIELD.  ( THE LENGH IS
*                                        ALWAYS 20 BYTES LONG.)
         MVI   S99VERB,S99VRBAL        SET VERB CODE FIELD FOR DSNAME
*                                        ALLOCATION.
         LA    R10,S99RB+RBLEN         MOVE PTR 20 BYTES BEYOND 'RB'
*                                       TO START OF 'TUPL'.
         USING S99TUPL,R10             ESTABLISH ADDR. TO 'TEXT UNIT
*                                        PTR LIST'.
         ST    R10,S99TXTPP            SET UP 'TUPL' ADDRESS IN 'RB'.
*
*   THERE ARE 3 'TEXT UNIT' PTRS AND 3 'TEXT UNIT BLOCKS'
*
         LA    R6,S99TUPL+12           MOVE PTR PAST 'TEXT PTRS'
*                                        FIELD TO START OF 1ST TEXT
*                                        UNIT' BLOCK.
        USING S99TUNIT,R6             SET ADDR. FOR THE FIRST TEXT
                                        UNIT BLOCK.
        ST    R6,S99TUPTR             MAKE 1ST 'TEXT UNIT PTR' POINT
                                        TO 1ST 'TEXT UNIT'.
        LA    R7,DALDSNAM             GET THE 'KEY' FOR DSNAME
                                        ALLOCATION.
        STH   R7,S99TUKEY             PUT THE 'KEY' IN THE 'TEST
                                        UNIT KEY' FIELD.
        LA    R7,1                    DSNAME ONLY REQUIRES 1 PARM,
                                        HENCE, LOAD AND STORE 1 IN
                                          # FIELD.
        STH   R7,S99TUNUM

        LA    R7,L'UADSDSN            GET LENGTH OF THE DSNAME
        STH   R7,S99TULNG             STORE LENGTH OF 'UADS' NAME

        MVC   S99TUPAR(9),UADSDSN     MOVE 'SYS1.UADS' INTO THE
                                        'TEXT UNIT' PARM. FIELD.
   BEGIN TO BUILD 'TEXT UNIT CONTROL BLOCK FOR DISPOSTION OF 'SHARE'
        LA    R6,S99TUNIT+15          MOVE PTR JUST PASSED THE FIRST
*                                        TEXT UNIT.
         LA    R10,S99TUPL+4           POINT TO 2ND 'TEXT UNIT' PTR
*                                        IN LIST.
         ST    R6,S99TUPTR             POINT 2ND 'TEXT UNIT' PTR TO
*                                        2ND 'TEXT' UNIT.
         LA    R7,DALSTATS             GET THE 'KEY' FOR STATUS SPEC-
*                                        IFICATION.
         STH   R7,S99TUKEY             PUT THE 'KEY' IN THE 'TEXT
*                                        UNIT'.
         LA    R7,1                    SINCE 'STATUS KEY' REQUIRES
*                                        ONLY ONE PARAMETER, LOAD AND
*                                        STORE 1 IN THE # FIELD.
         STH   R7,S99TUNUM
         STH   R7,S99TULNG             SET THE STATUS PARM LENGTH
*                                        FIELD TO 1.
         MVI   S99TUPAR,X'08'          SET THE PARM FIELD TO INDICATE
*                                        SHARE DISP.
*
         LA    R6,S99TUNIT+7           MOVE PTR JUST PASSED THE
*                                        SECOND 'TEXT UNIT'
         LA    R10,S99TUPL+4           POINT TO 3RD 'TEXT UNIT' PTR
*                                        IN LIST.
         ST    R6,S99TUPTR             POINT 3RD 'TEXT UNIT' PTR TO
*                                        3RD 'TEXT UNIT'.
         OI    S99TUPTR,S99TUPLN       TURN ON HIGH ORDER BIT TO IN-
*                                        DICATE LAST PTR.
         LA    R7,DALDDNAM             ASSOCIATE DDNAME 'SYSUADS' FOR
*                                        ALLOCATION.
         STH   R7,S99TUKEY             PUT THE 'DDNAME KEY' IN THE
*                                        'TEXT UNIT' FIELD.
         LA    R7,1                    DDNAME REQUIRES ONLY 1 PARM,
         STH   R7,S99TUNUM               LOAD AND STORE 1 IN # FIELD.
*
         LA    R7,7                    LOAD INTO R(7) AND STORE THE
         STH   R7,S99TULNG               # CHAR IN 'SYSUADS'.
         MVC   S99TUPAR(7),UADSDDN     MOVE 'SYSUADS' INTO 'TEXT UNIT'
*                                        PARM FIELD.
*
        LR    R1,R8                   PUT REQ. BLOCK PTR ADDRESS IN
                                        R(1) FOR 'DYNALLOC' INVOKE
                                        DYNAMIC ALLOC. TO PROCESS
                                        REQ.

        DYNALLOC
        B     *+4(R15)
        B     BUILDA                  'DYNAMIC ALLOCATION' OF 'UADS'
                                         WAS SUCCESSFUL.
        B     UNAVAIL                 'SYS1.UADS' IS UNAVAILABLE.
        B     DENY                    DENIED REQUEST FOR 'SYS1.UADS'
        B     BADPARM                 BAD PARMETER PASSED.




Hope this is of some help.   It has been awhile.

Regards,
Ken
==========================================================-

On Fri, May 4, 2012 at 10:43 AM, Roland Kinsman <[email protected]>wrote:

> Chip,
>
> Thanks for mentioning IPLINFO, I didn't know about it.  I learn so much by
> reading this list!
>
> -Roland
>
> ----------------------------------------------------------------------
> For IBM-MAIN subscribe / signoff / archive access instructions,
> send email to [email protected] with the message: INFO IBM-MAIN
>



-- 
Kenneth R. Barkhau

----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to [email protected] with the message: INFO IBM-MAIN

Reply via email to