The following supervisor state, key 0 program (CREATOR) creates
an address space and a cross memory environment in which programs
in the new address space (NEWADS) can PC to the creating address space.
In this example, CREATOR builds a linkage table (LT) and a corresponding
entry table (ET) that allows programs in NEWADS to PC to the routine
PCTARGET, which is loaded in the creating address space. CREATOR passes
the PC number needed to get to PCTARGET through the ASPARM field on
the ASCRE macro. A program in NEWADS can then use the ASEXT macro
to extract ASPARM. CREATOR also builds NEWADS's authority table (AT)
so that it can PT and SSAR to NEWADS. Note that NEWADS is the name
of a procedure (PROC) that resides in SYS1.PROCLIB. This PROC contains
the JCL that identifies the first program to run in NEWADS.
CREEXMPL CSECT
CREEXMPL AMODE 31
CREEXMPL RMODE ANY
BAKR 14,0 SAVE CALLER'S STATUS ON STACK
BASR 12,0 SET BASE REGISTER GR
USING *,12
.
.
*RESERVE AN LX
LA R4,1
ST R4,LXCOUNT NEED ONLY ONE LX
LXRES LXLIST=LX_LIST RESERVE AN LX
.
*RESERVE AN AX AND SET THE CURRENT ADDRESS SPACE'S AX TO IT
LA R4,1
STH R4,AXENTRIES NEED ONLY ONE AX
AXRES AXLIST=AX_LIST RESERVE AN AX
AXSET AX=AXENTRY SET HOME'S AX TO THE RESERVED AX
.
*DEFINE AN ENTRY TABLE ENTRY FOR THE ROUTINE PCTARGET
ETELIST ETDEF TYPE=INITIAL START AN ET ENTRY LIST
ETDEF TYPE=ENTRY,ROUTINE=PCTARGET,AKM=0,EK=0,EKM=0,PKM=OR, X
PC=STACKING,SASN=OLD,SSWITCH=YES,STATE=SUPERVISOR
ETDEF TYPE=FINAL COMPLETED THE ET ENTRY LIST
.
*CREATE AN ENTRY TABLE PUTTING IN THE ENTRY FOR PCTARGET
ETCRE ENTRIES=ETELIST CREATE AN ENTRY TABLE
ST R0,TKVALUE GET THE ET TOKEN FROM REG 0
LA R4,1
ST R4,TKCOUNT SET THE NUMBER OF ETS TO 1
*COMPUTE THE PC NUMBER (LX|EX) EX=0
L R4,LXVALUE
N R4,PCMASK CLEAR NON-LX VALUES
ST R4,PC_NUMBER
.
.
*NEWADS CAN USE PC_NUMBER TO GET TO PCTARGET IN CREATOR FROM NEWADS
ASCRE INIT='IEFBR14 ',ASNAME='NEWADS',TRMEXIT=TERMEXIT, X
AXLIST=AX_LIST,TKLIST=TOKENLIST,LXLIST=LX_LIST, X
ASPARM=PC_NUMBER,ODA=ODA_AREA
.
*TERMINATION ROUTINE
TERMEXIT DS 0H
USING *,15 REGISTER 15 CONTAINS ENTRY ADDRESS
SAVE (14,12),,* SAVE REGISTERS
.
*PERFORM ADDRESS SPACE TERMINATION PROCESSING
.
RETURN (14,12) RESTORE REGISTERS; RETURN TO SYSTEM
.
*DECLARATIONS
PCMASK DC '000FFF00' MASK TO CLEAR EX VALUE
PC_NUMBER DS F PC NUM USED TO GET TO PCTARGET
ODA_AREA DS CL24 OUTPUT DATA AREA
TOKENLIST DS CL8 LIST OF ET TOKENS
LX_LIST DS CL8 LIST OF LXS
AX_LIST DS CL4 LIST OF AXS
ORG LX_LIST
LXCOUNT DS FL4 NUMBER OF LX REQUESTED
LXVALUE DS FL4 ONE LX ENTRY
ORG AX_LIST
AXENTRIES DS FL2 NUMBER OF AX REQUESTED
AXENTRY DS FL2 ONE AX ENTRY
ORG TOKENLIST
TKCOUNT DS FL4 NUMBER OF ET TOKENS
TKVALUE DS FL4 ET TOKEN
In the following example, a supervisor state key zero program deletes
an address space that was created through the ASCRE macro. The address
of the ASEO (ASE output area), passed back from ASCRE after creating
the address space, is passed to this routine in general purpose register
1.
DESEXMPL CSECT
DESEXMPL AMODE 31
DESEXMPL RMODE ANY
BAKR 14,0 SAVE CALLER'S STATUS ON STACK
BASR 12,0 SET BASE REGISTER
USING *,12
USING ASEO,1 ESTABLISH ADDRESSABILITY TO ASEO
.
.
* DELETE THE ADDRESS SPACE
ASDES STOKEN=ASEOSTKN
.
* DECLARES THE DSECT FOR THE ASE OUTPUT AREA PASSED BACK FROM ASCRE.
* THE IHAASEO MACRO CONTAINS THIS MAPPING
.
ASEO DSECT
ASEOSTKN DS XL8 64-BIT STOKEN OF THE NEW ASCB
ASEOASCB DS A ASCB OF NEW ADDRESS SPACE
ASEOECB DS A ECBs, BASING FOR IEZEAECB
ASEORSV1 DS XL8 RESERVED