z/OS TSO/E Programming Services
Previous topic | Next topic | Contents | Contact z/OS | Library | PDF


Example 2

z/OS TSO/E Programming Services
SA32-0973-00

Figure 1 is an example of the code required to use the STACK macro instruction to place a pointer to an in-storage list on the input stack.

In the example, the GETMAIN macro instruction is used to obtain storage in subpool 78 for the list source descriptor and the in-storage list itself. The execute form of the STACK macro instruction initializes the input/output parameter list required by the STACK service routine. The list form of the STACK macro instruction expands into a STACK parameter block, and its address is passed to the STACK service routine via the PARM operand in the execute form of the STACK macro instruction.

Figure 1. Example of STACK Specifying an In-storage List as the Input Source
*  THIS CODE ASSUMES ENTRY FROM THE TMP - REGISTER ONE CONTAINS THE
* ADDRESS OF THE COMMAND PROCESSOR PARAMETER LIST.
*
*      SET UP ADDRESSABILITY
*      PERFORM SAVE AREA CHAINING
*               .
*               .
*               .
*
         LR    2,1                    SAVE THE ADDRESS OF THE CPPL
         USING CPPL,2                 SET UP ADDRESSABILITY FOR THE
*                                     CPPL
         L     3,CPPLUPT              PLACE THE ECT ADDRESS INTO A
*                                     REGISTER
         L     4,CPPLECT              PLACE THE ECB ADDRESS INTO A
*                                     REGISTER
* ISSUE A GETMAIN FOR SUBPOOL 78.  THE LIST SOURCE DESCRIPTOR AND THE
* IN-STORAGE LIST ITSELF MUST BE LOCATED IN SUBPOOL 78.
*
         GETMAIN    LU,LA=REQUEST,A=ANSWER,SP=78,LOC=BELOW
*
* OBTAIN THE ADDRESS IN SUBPOOL 78 FOR THE LIST SOURCE DESCRIPTOR
* AND MOVE THE LSD INTO THAT AREA.
*
         L     5,ANSWER
         MVC   0(16,5),ANLSD
*
* OBTAIN THE ADDRESS IN SUBPOOL 78 FOR THE IN-STORAGE LIST AND MOVE
* THE IN-STORAGE LIST INTO THAT AREA
*
         L     6,ANSWER+4
         ST    6,0(5)                 STORE THE ADDRESS OF THE IN-
         ST    6,8(5)                 STORAGE LIST INTO TWO FIELDS
*                                     IN THE LIST SOURCE DESCRIPTOR
         MVC   0(100,6),INLIST
*
* ISSUE AN EXECUTE FORM OF THE STACK MACRO INSTRUCTION TO PUT A
* POINTER TO THE IN-STORAGE LIST ON THE INPUT STACK.
*
         STACK PARM=STCKLST,UPT=(3),ECT=(4),ECB=ECBADS,                X
               STORAGE=((5),PROCN),MF=(E,IOPLADS)
*
* TEST THE RETURN CODE FOR SUCCESSFUL COMPLETION OF THE STACK
* SERVICE ROUTINE.
*
         LTR   15,15
         BNZ   ERRTN
*            .
*            .
ERRTN
*            .
*            .
*            .
* STORAGE DECLARATIONS
*
ANLSD    DS    A                      THE TOTAL LENGTH OF THE LIST
         DC    X'0000'                SOURCE DESCRIPTOR, ANLSD, IS
         DC    X'0064'                16 BYTES (DECIMAL).
         DS    A
         DC    F'0'
*
INLIST   DC    X'00140000'
         DC    C'EDIT OPA OPB OPC'
         DC    X'00180000'
         DC    C'TEST OPTA OPTB OPTC '
         DC    X'00240000'
         DC    C'PROFILE     NOMSGID    NOPROMPT'
         DC    X'00140000'
         DC    C'EXEC MYPROG LIST'
*
* THE TOTAL LENGTH OF THE IN-STORAGE LIST, INLIST, IS 100 DECIMAL
* BYTES.
*
* SET UP THE LIST OF STORAGE AMOUNTS REQUIRED.  THE ADDRESS OF THIS
* LIST IS CODED AS THE LA= OPERAND ON THE GETMAIN MACRO INSTRUCTION.
*
REQUEST  DC    F'16'                  SIXTEEN BYTES FOR THE LSD.
         DC    X'80'                  END OF LIST INDICATOR
         DC    AL3(104)               100 BYTES FOR THE IN-STORAGE LIST
*                                     SINCE THE GETMAIN MACRO REQUIRES
*                                     THAT THE REQUEST BE DIVISIBLE BY
*                                     8, WE REQUEST 104 BYTES.
*
* SET ASIDE 2 FULLWORDS TO RECEIVE THE ADDRESS RETURNED BY THE GETMAIN
* MACRO INSTRUCTION.
*
ANSWER   DC    2F'0'
*
STCKLST  STACK MF=L                   THIS LIST FORM OF THE STACK
*                                     MACRO INSTRUCTION PROVIDES SPACE
*                                     FOR THE STACK PARAMETER BLOCK
*
ECBADS   DC    F'0'                   EVENT CONTROL BLOCK
IOPLADS  DC    4F'0'                  INPUT/OUTPUT PARAMETER LIST
         IKJCPPL                      DSECT FOR THE COMMAND PROCESSOR
*                                     PARAMETER LIST
         END

Go to the previous page Go to the next page




Copyright IBM Corporation 1990, 2014