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