z/OS MVS Programming: Extended Addressability Guide
Previous topic | Next topic | Contents | Contact z/OS | Library | PDF


Obtaining storage outside the primary address space

z/OS MVS Programming: Extended Addressability Guide
SA23-1394-00

The STORAGE macro allows you to obtain storage in an address space other than the primary address space. The program must be in primary mode or AR mode and in PSW key 0 - 7 or supervisor state. The ALET parameter on the STORAGE macro identifies the address space.

The following example shows how a program can obtain storage in another address space, provided it has the proper authorization. The caller uses ALESERV ADD to obtain an ALET representing the address space (or uses an ALET with the value 1 or 2) and then STORAGE OBTAIN to obtain storage. The example assumes that the caller passes the STOKEN of the target address space by a pointer in AR/GPR 1 on entry. It also assumes that this program has the proper authorization to the target address space.

The program requests one page (4096 bytes) of storage above 16 megabytes in subpool 0 in the target address space.
STOR2    CSECT
STOR2    AMODE 31
STOR2    RMODE ANY
         .
*  ENTRY LINKAGE
         .
         BAKR  14,0               SAVE CALLER'S STATUS ON LINKAGE STACK
         SAC   512                SWITCH INTO AR MODE
         SYSSTATE ASCENV=AR       SET GLOBAL BIT INDICATING AR MODE
         LAE   12,0(15,0)         ESTABLISH ADDRESSABILITY
         USING STOR2,12
         STORAGE OBTAIN,LENGTH=72 GET STANDARD SAVE AREA
         LAE   13,0(1,0)          SET UP SAVE AREA POINTER
         MVC   4(4,13),=C'F1SA'   INDICATE IN SAVE AREA THAT CALLER'S
*                                 STATUS IS ON THE LINKAGE STACK
         .
         EREG  R1,R1              RESTORE CALLER'S PARAMETER REGISTER
         USING PARMLIST,R1        ESTABLISH ADDRESSABILITY TO
*                                 PARAMETER LIST
         MVC   ASTOKEN,CSTOKEN    COPY STOKEN INTO LOCAL STORAGE
         DROP  R1                 DROP BASING REGISTER
         .
*   ADD THE ADDRESS SPACE REPRESENTED BY THE TARGET STOKEN TO
*   THE DU-AL AS A PUBLIC ENTRY.
         .
         ALESERV ADD,STOKEN=ASTOKEN,AL=WORKUNIT,ACCESS=PUBLIC,         X
               ALET=ASALET
         .
*   NOW OBTAIN ONE PAGE (4096 BYTES) OF STORAGE IN SUBPOOL 0 IN THAT
*   ADDRESS SPACE,  ABOVE 16MB.
         .
         STORAGE OBTAIN,LENGTH=4096,SP=0,ALET=ASALET,LOC=ANY,ADDR=ASADDR
         .
*   SET UP REGISTERS TO POINT AT THE STORAGE JUST OBTAINED.
         .
         L     R4,ASADDR    LOAD ADDRESS OF STORAGE INTO GPR4
         L     R3,ASALET    LOAD ALET OF STORAGE INTO GPR3
         SAR   R4,R3        LOAD ALET INTO AR4
         .
*     AR/GPR 4 CAN NOW BE USED TO REFERENCE THE STORAGE IN
*     THE OTHER ADDRESS SPACE.
         .
         USING ARSTOR,R4
         MVC   FIELD1,DATA1    MOVE DATA INTO THE ADDRESS SPACE
         MVC   FIELD2,DATA2
         DROP  R4
         .
*   RELEASE THE STORAGE PREVIOUSLY OBTAINED.
         .
         STORAGE RELEASE,LENGTH=4096,ALET=ASALET,ADDR=ASADDR,SP=0
         .
*   REMOVE THE ENTRY FROM OUR ACCESS LIST
         .
         ALESERV DELETE,ALET=ASALET
         .
*  EXIT LINKAGE
         .
         LAE   1,0(13,0)          GET ADDRESS OF SAVE AREA
         STORAGE RELEASE,ADDR=(1),LENGTH=72  RELEASE THE SAVE AREA
         SLR   15,15              SET A RETURN CODE OF ZERO
         PR                       RETURN TO CALLER
         .
*    VARIABLES AND REGISTERS
         .
ASTOKEN  DS    CL8           STOKEN OF ADDRESS SPACE
ASADDR   DS    F             ADDRESS OF STORAGE IN ADDRESS SPACE
ASALET   DS    F             ALET REPRESENTING ADDRESS SPACE
DATA1    DC    CL4'BLUE'
DATA2    DC    CL4'PINK'
         LTORG
         .
R1       EQU   1
R3       EQU   3
R4       EQU   4
         .
*    PARAMETER LIST MAPPING
         .
PARMLIST DSECT
CSTOKEN  DS    CL8           USER'S STOKEN
         .
*    MAPPING OF STORAGE IN TARGET ADDRESS SPACE
         .
ARSTOR   DSECT
FIELD1   DS    CL4           Area 1
FIELD2   DS    CL4           Area 2
         END

Go to the previous page Go to the next page




Copyright IBM Corporation 1990, 2014