z/OS MVS Programming: Sysplex Services Guide
Previous topic | Next topic | Contents | Contact z/OS | Library | PDF


Checking for status update resumed

z/OS MVS Programming: Sysplex Services Guide
SA23-1400-00

If XCF is checking for status update resumed, the routine checks a bit that the member turns on when it resumes updating its status field:
  • If the bit is on, the status user routine sets a return code of SEUPDRES and issues the WTO macro to alert the operator that the member's status update has resumed.
  • If the bit is off, the routine sets a return code of SEUPDMIS to alert XCF that the member still has not resumed updating its status field.
 ***************************************************************
 *                                                             *
 *  STATUS USER ROUTINE                                        *
 *                                                             *
 ***************************************************************
 SEXIT3   CSECT
 SEXIT3   AMODE 31
 SEXIT3   RMODE ANY
 @MAINENT DS    0H
          USING *,R15
          B     @PROLOG
          DC    AL1(16)
          DC    C'SE 90006 SEXIT'
          DROP  R15
 ***************************************************************
 *                                                             *
 *  ENTRY LINKAGE                                              *
 *                                                             *
 ***************************************************************
 @PROLOG  STM   R14,R12,12(R13)
          LR    R12,R15
 @PSTART  EQU   SEXIT3
 *
 *  SET UP BASE REGISTER TO 12
 *
          USING @PSTART,R12
          SLR   R15,R15
          IC    R15,@SIZDATD
          SLR   R0,R0
          ICM   R0,7,@SIZDATD+1
          STORAGE OBTAIN,LENGTH=(0),SP=(15)
          LR    R10,R1
          USING @DATD,R10
          ST    R13,4(,R10)
          ST    R10,8(,R13)
          LM    R15,R1,16(R13)
          LR    R13,R10
 ***************************************************************
 *                                                             *
 *  STATUS USER CODE                                           *
 *                                                             *
 ***************************************************************
 *
 *  GET ADDRESSABILITY TO THE PARAMETER LIST
 *
          USING SEPL,R1
*
 *  IS XCF CHECKING FOR STATUS UPDATE MISSING? IF SO, BRANCH
 *
          CLI   SEPLSTCH,SEUPDMIS
          BZ    @MISSING
 *
 *  XCF IS CHECKING FOR STATUS UPDATE RESUMED
 *  GET ADDRESSABILITY TO THE MEMBER DATA, WHICH CONTAINS
 *  THE ADDRESS OF MDATASTR.  MDATASTR CONTAINS THE BYTE
 *  (RESUMEB) THAT THE MEMBER TURNS ON IF IT RESUMED
 *  UPDATING ITS STATUS FIELD.
 *
 @FOUND   L     R2,SEPLMDAT
          USING MDATASTR,R2
          CLI   RESUMEB,X'01'         IS THE RESUME VALID?
          BNZ   @NOGOOD               IF NOT, BRANCH
 *
 *  LOAD INDICATOR FOR STATUS UPDATE RESUMED INTO REGISTER 7. THIS
 *  WILL BE TRANSFERRED TO REGISTER 15 DURING EXIT LINKAGE.
 *  THEN CLEAR REGISTER 8 TO INDICATE NO USER DATA BEING PASSED.
 *  REGISTER 8 GETS TRANSFERRED TO REGISTER 0 DURING EXIT LINKAGE.
 *
          LA    R7,SEUPDRES           IF VALID, SET RETURN CODES
          SR    R8,R8
          WTO   'STATUS UPDATE HAS BEEN RESUMED',ROUTCDE=11,            X
                LINKAGE=BRANCH,MF=(E,WTOLST1)
          B     @OVER
 *
 *  STATUS UPDATE IS MISSING SO CHECK QUEUE.  TO DO SO,
 *  GET ADDRESSABILITY TO THE MEMBER DATA, WHICH CONTAINS
 *  THE ADDRESS OF MDATASTR.  MDATASTR CONTAINS THE WORK QUEUE
 *  ADDRESS (WRKQADDR) AND THE ADDRESS OF THE NEXT ITEM OF
 *  WORK (NXTWRKAD).
 *
 @MISSING L     R2,SEPLMDAT
 *
 *  IF WORK ADDRESS IS ZERO, THE QUEUE IS EMPTY.
 *
          CLC   WRKQADDR(4),ZERO      IS THE QUEUE EMPTY?
          BE    @NOWORK               IF YES, BRANCH
 *
 *  LOAD INDICATOR FOR STATUS UPDATE MISSING INTO REGISTER 7
 *
          LA    R7,SEUPDMIS
 *
 *  LOAD USER DATA INTO REGISTER 8
 *
          L     R8,UDATACD
          DROP  R2
          B     @OVER
 *
 *  BRANCH HERE WHEN THE QUEUE IS EMPTY
 * 
 *
 *  LOAD INDICATOR FOR STATUS UPDATE RESUMED INTO REGISTER 7
 *
 @NOWORK  LA    R7,SEUPDRES           SET RETURN CODE
          B     @OVER
 *
 *  BRANCH HERE WHEN STATUS UPDATE DID NOT RESUME
 *
 *
 *  LOAD INDICATOR FOR STATUS UPDATE MISSING INTO REGISTER 7
 *
 @NOGOOD  LA    R7,SEUPDMIS           SET RETURN CODE
 *
 *  RELEASE DYNAMIC AREA
 *
 @OVER    LR    R1,R10
          L     R13,4(,R13)
          SLR   R15,R15
          IC    R15,@SIZDATD
          SLR   R0,R0
          ICM   R0,7,@SIZDATD+1
          STORAGE RELEASE,LENGTH=(0),ADDR=(1),SP=(15)
 ***************************************************************
 *                                                             *
 *  EXIT LINKAGE                                               *
 *                                                             *
 ***************************************************************
 *
 *  LOAD REGISTER 15 WITH THE RETURN CODE AND REGISTER 0 WITH
 *  THE USER DATA TO BE PASSED TO THE GROUP USER ROUTINES
 *
          LR    R15,R7
          LR    R0,R8
          L     R14,12(R13)
          LM    R1,R12,24(R13)
          BR    R14
          DS    0H
          DS    0H
 @PSIZE   EQU   ((*-SEXIT3+99)/100)*5
          DC    C'PATCH AREA - SEXIT3 90.006'
          PUSH  PRINT
          PRINT ON,GEN,DATA
 @PSPACE  DC    25S(*)
          ORG   @PSPACE
          DC    ((@PSIZE+1)/2)S(*)
          ORG   ,
          POP   PRINT
 @DATA    DS    0H
 @DATD    DSECT
          DS    0F
 SAVEAREA DS    18F
 @ENDDATD DS    0X
 @DYNSIZE EQU   ((@ENDDATD-@DATD+7)/8)*8
 SEXIT3   CSECT ,
          LTORG
          DS    0D
 UDATACD DC     F'16'
 ZERO     DC    F'0'
 WTOLST1  WTO   'STATUS UPDATE HAS BEEN RESUMED',ROUTCDE=11,MF=L
 WTOLNTH  DC    A(*-WTOLST1)
 @SIZDATD DS    0A
          DC    AL1(0)
          DC    AL3(@DYNSIZE)
 R0       EQU   0
 R1       EQU   1
 R2       EQU   2
 R3       EQU   3
 R4       EQU   4
 R5       EQU   5
 R6       EQU   6
 R7       EQU   7
 R8       EQU   8
 R9       EQU   9
 R10      EQU   10
 R11      EQU   11
 R12      EQU   12
 R13      EQU   13
 R14      EQU   14
 R15      EQU   15
 @ENDDATA EQU   *
 ***************************************************************
 *                                                             *
 *  MAPPING OF THE DATA STRUCTURE (MDATASTR) POINTED TO BY     *
 *  MEMDATA (SEPLMDAT FIELD IN PARAMETER LIST)                 *
 *                                                             *
 *  THIS SAME DATA STRUCTURE IS USED BY THE GROUP USER         *
 *  ROUTINE.  SOME FIELDS ARE NOT USED BY THE STATUS USER      *
 *  ROUTINE, BUT ARE USED ONLY BY THE GROUP USER ROUTINE.      *
 *                                                             *
 *  TBLADDR         ADDRESS OF TABLE MAINTAINED BY             *
 *                    GROUP USER ROUTINE                       *
 *  NEXTITEM        ADDRESS OF NEXT AVAILABLE SLOT IN          *
 *                    TABLE                                    *
 *  WRKQADDR        ADDRESS OF MEMBER'S WORK QUEUE             *
 *  NXTWRKAD        ADDRESS OF NEXT AVAILABLE SLOT IN          *
 *                    MEMBER'S WORK QUEUE                      *
 *  TASKECB         ADDRESS OF THE ATTACHED TASK'S ECB         *
 *                    (THIS TASK IS ATTACHED BY THE MAIN       *
 *                    ROUTINE.  THIS FIELD IS USED BY          *
 *                    THE GROUP USER ROUTINE.)                 *
 *  MAINECB         ADDRESS OF ECB USED FOR SYNCHRONIZING      *
 *                    (THE MAIN ROUTINE WAITS ON THIS ECB,     *
 *                    WHICH THE ATTACHED TASK POSTS WHEN       *
 *                    IT COMPLETES ITS WORK.)                  *
 *  FUNCTON         GROUP USER ROUTINE TURNS THIS SWITCH ON    *
 *                    WHEN CALLED FOR THE FIRST TIME FOR A     *
 *                    STATUS UPDATE MISSING.                   *
 *  RESUMEB         MAIN ROUTINE TURNS THIS SWITCH ON          *
 *                    WHEN IT RESUMES UPDATING ITS STATUS      *
 *                    FIELD.                                   *
 *                                                             *
 ***************************************************************
 MDATASTR DSECT
 TBLADDR  DS    1F
 NEXTITEM DS    1F
 WRKQADDR DS    1F
 NXTWRKAD DS    1F
 TASKECB  DS    1F
 MAINECB  DS    1F
 FUNCTON  DS    X
 RESUMEB  DS    X
 ***************************************************************
 *                                                             *
 *  MAPPING MACROS                                             *
 *                                                             *
 ***************************************************************
          IXCYSEPL
          END   SEXIT3

Go to the previous page Go to the next page




Copyright IBM Corporation 1990, 2014