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


Example of an srb routine using a data space

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

In the following example, an SRB routine creates a data space, assigning ownership to the scheduling TCB (that is, the TCB that represents the program that schedules the SRB). The example includes the deletion of the data space. To assign the ownership, the routine must know the TTOKEN of the TCB. For this example, assume that the scheduling program has passed the address of the scheduling TCB through the user field in the SRB, SRBPARM. (The system loads the address of this field into GPR 1 when the system dispatches the SRB.) Before it creates the data space, the routine uses the scheduling TCB address as input to the TCBTOKEN macro to obtain the TTOKEN of the TCB.
*  EXAMPLE ASSUMES CALLER RUNNING WITH PASN=HASN AND THE
*    DATA SPACE WILL BE OWNED BY THE TCB THAT SCHEDULED THE SRB
         .
         BAKR  14,0                    SAVE CALLER'S STATUS ON STACK
         LAE   10,0                    SET BASE REGISTER AR
         BASR  10,0                    SET BASE REGISTER GR
         USING *,10
         SAC   0                       ENSURE IN PRIMARY MODE
         SYSSTATE ASCENV=P             SET THE GLOBAL BIT
         .
*  GET HOME ADDRESS SPACE LOCAL LOCK FOR THE TCBTOKEN SERVICE
         .
         SETLOCK OBTAIN,TYPE=LOCAL,MODE=UNCOND,REGS=USE
         .
         USING PSA,0
         L     2,PSAAOLD               GET HOME ASCB ADDRESS
         .
*  GET ADDRESS OF SCHEDULING TCB (CONTENTS OF SRBPARM) FROM REGISTER 1
         .
         LR    3,1                     GET ADDRESS OF SCHEDULING TCB
         .
         TCBTOKEN TYPE=TOTTOKEN,TTOKEN=TCBTTOKN,ASCB=(2),TCB=(3)
         .
*             RELEASE LOCAL LOCK
         SETLOCK RELEASE,TYPE=LOCAL,REGS=USE
         .
         DSPSERV CREATE,NAME=DSPCNAME,STOKEN=DSPCSTKN,BLOCKS=DSPBLCKS,    X
               ORIGIN=DSPCORG,SCOPE=ALL,TTOKEN=TCBTTOKN
         .
         ALESERV ADD,STOKEN=DSPCSTKN,ALET=DSPCALET,AL=WORKUNIT
         .
*  ESTABLISH ADDRESSABILITY TO THE DATA SPACE
         .
         SAC   512                     SWITCH INTO AR ADDRESSING MODE
         SYSSTATE ASCENV=AR            SET GLOBAL BIT FOR AR MODE
         .
*  USE DATA SPACE
         .
*  DELETE DATA SPACE
         .
         ALESERV DELETE,ALET=DSPCALET     REMOVE DS FROM AL
         DSPSERV DELETE,STOKEN=DSPCSTKN   DELETE THE DS
         .
         PR                            RETURN TO CALLER
         .
DSPCNAME DC   CL8'TEMP    '            DATA SPACE NAME
DSPCSTKN DS   CL8                      DATA SPACE STOKEN
DSPCALET DS   F                        DATA SPACE ALET
DSPCORG  DS   F                        DATA SPACE ORIGIN RETURNED
DSPCSIZE EQU  10000000                 10 MILLION BYTES OF SPACE
DSPBLCKS DC   A((DSPCSIZE+4095)/4096)  NUMBER OF BLOCKS NEEDED FOR
*                                      A 10 MILLION BYTE DATA SPACE
TCBTTOKN DS   CL16                     16 BYTE FIELD FOR TCBTOKEN
In the following example, a TCB routine creates a data space and then schedules an SRB which can immediately address the data space.
*   THE SCHEDULING ROUTINE
         .
         DSPSERV CREATE,NAME=DSPCNAME,STOKEN=DSPCSTKN,BLOCKS=DSPBLCKS,    X
               ORIGIN=DSPCORG,SCOPE=ALL,TTOKEN=TCBTTOKN
         .
         ALESERV ADD,STOKEN=DSPCSTKN,ALET=DSPCALET,AL=WORKUNIT
         .
*  ESTABLISH ADDRESSABILITY TO THE DATA SPACE
         .
         SAC   512                     SWITCH INTO AR ADDRESSING MODE
         SYSSTATE ASCENV=AR            SET GLOBAL BIT FOR AR MODE
         .
*  INITIALIZE DATA SPACE
         .
*  USE DATA SPACE
         .
*  GET INTO PRIMARY ADDRESSING MODE TO ISSUE GETMAIN AND SCHEDULE
         .
         SAC   0                       SWITCH INTO PRIMARY ADDRESSING
*                                      MODE
         SYSSTATE ASCENV=PRIMARY       SET GLOBAL BIT FOR PRIMARY MODE
         .
*  OBTAIN AND INITIALIZE AN SRB AND AN SRB PARAMETER AREA
         .
         GETMAIN RU,SP=213,LV=PSRBSIZE GET THE STORAGE
         .
         USING  SRB,1
         XC     SRB,SRB                CLEAR THE SRB
         MVC    SRBPTCB,PSATOLD        SET PURGE TCB ADDRESS TO CURRENT
*                                      TCB ADDRESS
         L      8,PSAAOLD              LOCATE CURRENT ASCB
         USING  ASCB,8
         MVC    SRBPASID,ASCBASID      SET PURGE ASID TO CURRENT ASID
         MVC    SRBRMTR,RMTRADDR       SET RMTR ADDRESS
         OI     SRBRMTR,X'80000000'    SET ADDRESS TO 31-BIT MODE
         LA     7,ENTSRB               GET ENTRY POINT ADDRESS
         ST     7,SRBEP                SET ENTRY POINT ADDRESS
         OI     SRBEP,X'80000000'      SET ADDRESS TO 31-BIT MODE
         LA     2,SRBEND               PARAMETERS FOLLOW SRB
         ST     2,SRBPARM              SET PARAMETER ADDRESS
         USING  PARMS,2
         MVC    DALET,DSPCALET         SAVE DATASPACE ALET IN PARAMETERS
         XC     ECB1,ECB1              CLEAR THE ECB
         DROP   2
         .
*  SCHEDULE SRB WHICH USES THE DATASPACE
         .
         SCHEDULE SRB=(1),MODE=FULLXM
         .
*  FREE ONLY THE SRB STORAGE
         .
         FREEMAIN RU,LV=SRBSIZE,SP=213
         .
*  WAIT FOR SRB TO COMPLETE
         .
         WAIT  ECB=ECB1
         .
*  FREE THE PARAMETER STORAGE
         .
         FREEMAIN RU,LV=8,SP=213
         .
*  DELETE DATA SPACE
         .
         ALESERV DELETE,ALET=DSPCALET     REMOVE DS FROM AL
         DSPSERV DELETE,STOKEN=DSPCSTKN   DELETE THE DS
         .
         .
DSPCNAME DC   CL8'TEMP    '            DATA SPACE NAME
DSPCSTKN DS   CL8                      DATA SPACE STOKEN
DSPCALET DS   F                        DATA SPACE ALET
DSPCORG  DS   F                        DATA SPACE ORIGIN RETURNED
DSPCSIZE EQU  10000000                 10 MILLION BYTES OF SPACE
DSPBLCKS DC   A((DSPCSIZE+4095)/4096)  NUMBER OF BLOCKS NEEDED FOR
*                                      A 10 MILLION BYTE DATA SPACE
PSRBSIZE DC   A(SRBSIZE+8)             SIZE OF AN SRB PLUS AN 8 BYTE
*                                      PARAMETER AREA
RMTRADDR DC   A(RMTRXX)
*
PARMS    DSECT                         SRB PARAMETER AREA
DALET    DS   F                        DATASPACE ALET FOR SRB
ECB1     DS   F                        ECB FOR SRB TO POST
         .
*  THE SRB ROUTINE
         .
         SRBENT   DS   0H
         .
         LR   4,14                     SAVE RETURN ADDRESS
         .
*  ESTABLISH ADDRESSABILITY TO THE DATA SPACE
         .
         USING PARMS,1
         LAM  5,5,DALET                USE REGISTER 5 TO ADDRESS DATA
         SPACE
         .
         SAC   512                     SWITCH INTO AR ADDRESSING MODE
         SYSSTATE ASCENV=AR            SET GLOBAL BIT FOR AR MODE
         .
*  USE DATA SPACE
        .
*  POST THE WAITING TASK
         .
         SAC   0                       SWITCH INTO PRIMARY ADDRESSING
*                                      MODE
SYSSTATE ASCENV=PRIMARY       SET GLOBAL BIT FOR PRIMARY MODE
         .
         POST  ECB1,LINKAGE=SYSTEM
         .
* EXIT
         .
         BR    4

Go to the previous page Go to the next page




Copyright IBM Corporation 1990, 2014