z/OS DFSMS Installation Exits
Previous topic | Next topic | Contents | Contact z/OS | Library | PDF


Example of the IFG0EX0B Exit Routine

z/OS DFSMS Installation Exits
SC23-6850-01

The following program listing is a sample of IFG0EX0B. The four subroutines (BUFNO, SCREEN, RLSE, and SQTY) show examples of the process you can do in your installation's version of IFG0EX0B.

Figure 1. Sample Listing of IFG0EX0B Part 1 of 13.
 IFG0EX0B CSECT
 ***********************************************************************
 *                                                                     *
 * FUNCTION =                                                          *
 *        FOUR SAMPLE ROUTINES ARE SUPPLIED.                           *
 *                                                                     *
 *    BUFNO - DEFAULT DCBBUFNO                                         *
 *        DCBBUFNO (NUMBER OF BUFFERS) IS DEFAULTED FOR                *
 *        OPENS TO PHYSICAL SEQUENTIAL AND PARTITIONED DATA SETS       *
 *        ON DASD AND TAPE USING QSAM, FOR WHICH DCBBUFNO IS ZERO.     *
 *        DCBBUFNO FOR SYSIN, SYSOUT, TERMINAL, AND DUMMY DATA SETS    *
 *        IS SET TO THE EQUATE, INOUTBNO, OR THE VALUE IN THE          *
 *        FULLWORD, INOUTBN.                                           *
 *                                                                     *
 *        DCBBUFNO IS SET TO THE NUMBER OF DCBBLKSZ BUFFERS WHICH      *
 *        FIT IN A GIVEN AMOUNT OF STORAGE. THE AMOUNT OF STORAGE IS   *
 *        DEFINED BY THE EQUATES, DAMXK AND TPMXK (OR THE FULLWORDS    *
 *        AT LABELS, DAMAXK AND TPMAXK), FOR DASD AND                  *
 *        TAPE, RESPECTIVELY.
 *        THE EQUATES DEFINE THE AMOUNT OF
 *        STORAGE FOR BUFFERS IN UNITS OF 1024 (IF DAMXK IS 32, THEN   *
 *        THE AMOUNT OF STORAGE IS 32K, OR 32768).                     *
 *        DAMXK OR TPMXK TIMES 1024 IS DIVIDED BY DCBBLKSI TO          *
 *        DETERMINE THE NUMBER OF BUFFERS TO DEFAULT.                  *
 *                                                                     *
 *        THE EQUATES, DAMXBNO AND TPMXBNO, OR THE FULLWORDS           *
 *        AT LABELS, DAMAXBNO AND TPMAXBNO,                            *
 *        DEFINE THE MAXIMUM NUMBER OF BUFFERS TO BE                   *
 *        DEFAULTED FOR DASD AND TAPE IF THE CALCULATION, ABOVE,       *
 *        RESULTS IN A LARGER NUMBER.                                  *
 *                                                                     *
 *    SCREEN - SCREEN OUT CASES FOR RLSE, SQTY                         *
 *                                                                     *
 *    RLSE - SET OR ZERO PARTIAL RELEASE                               *
Figure 2. Sample Listing of IFG0EX0B Part 2 of 13.
 *        THIS ROUTINE SETS PARTIAL RELEASE FOR DASD PS (NOT PO) DATA  *
 *        SETS BEING OPENED FOR OUTPUT OR OUTIN.                       *
 *                                                                     *
 *        PARTIAL RELEASE IS SET ON IF THE NUMBER OF EXTENTS IS LESS   *
 *        THAN A QUANTITY DEFINED BY THE EQUATE, RLSE1, OR THE BYTE,   *
 *        EXTRLSE1.                                                    *
 *                                                                     *
 *        PARTIAL RELEASE IS SET OFF IF THE NUMBER OF EXTENTS IS NOT   *
 *        LESS THAN A QUANTITY DEFINED BY THE EQUATE, RLSE0, OR THE    *
 *        BYTE, EXTRLSE0.                                              *
 *                                                                     *
 *    SQTY - SET OR UPDATE SECONDARY SPACE QUANTITY                    *
 *        THIS ROUTINE UPDATES THE SECONDARY SPACE                     *
 *        QUANTITY FOR DASD PS OR PO DATA SETS BEING                   *
 *        OPENED FOR OUTPUT OR OUTIN.                                  *
 *        IF THE SECONDARY QUANTITY IS NOT ZERO,                       *
 *        AND IF THE NUMBER OF EXTENTS IN THE DATA SET IS              *
 *        AT LEAST EQUAL TO THE QUANTITY IN THE EQUATE, EXTSQT (OR     *
 *        THE BYTE AT LABEL, EXTSQTY), THEN:                           *
 *        1. IF THE SECONDARY QUANTITY IS GREATER THAN ONE,            *
 *        SECONDARY QUANTITY IS INCREASED BY ONE HALF                  *
 *        (50%).                                                       *
 *                                                                     *
 *        2. IF THE SECONDARY QUANTITY IS ONE,                         *
 *        SECONDARY QUANTITY IS SET TO THE VALUE IN THE FULLWORD       *
 *        AT LABEL, SQTYDFLT (EQUAL TO THE EQUATE, SQTYDFL).           *
 *                                                                     *
 *        IF THE SECONDARY QUANTITY IS NOT ZERO,                       *
 *        AND IF THE NUMBER OF EXTENTS IN THE DATA SET IS              *
 *        LESS THAN THE QUANTITY IN THE EQUATE, EXTSQT (OR             *
 *        THE BYTE AT LABEL, EXTSQTY), SECONDARY QUANTITY              *
 *        IS LEFT UNCHANGED.                                           *
 *                                                                     *
 *        IF SECONDARY QUANTITY IS ZERO, IT IS SET TO ONE HALF         *
 *        OF PRIMARY QUANTITY IF PRIMARY IS NOT ZERO OR ONE.           *
 *        IF PRIMARY QUANTITY IS ZERO, THE SPACE TYPE IS SET TO TRACKS,*
 *        AND SECONDARY QUANTITY IS SET TO THE VALUE IN THE FULLWORD   *
 *        AT LABEL SQTYDFLT (EQUAL TO THE EQUATE, SQTYDFL).            *
 *        IF PRIMARY QUANTITY IS ONE, SECONDARY QUANTITY IS SET TO     *
 *        VALUE IN THE FULLWORD AT LABEL SQTYDFLT (EQUAL TO THE        *
 *        EQUATE, SQTYDFL).                                            *
 *                                                                     *
 * NOTES = SEE BELOW                                                   *
 *                                                                     *
 *    DEPENDENCIES =                                                   *
Figure 3. Sample Listing of IFG0EX0B Part 3 of 13.
 *            CLASS ONE CHARACTER CODE.  THE EBCDIC CHARACTER CODE     *
 *            WAS USED FOR ASSEMBLY.  THE MODULE MUST BE REASSEMBLED   *
 *            IF A DIFFERENT CHARACTER SET IS USED FOR EXECUTION.      *
 *                                                                     *
 *    RESTRICTIONS = NONE                                              *
 *                                                                     *
 *    REGISTER CONVENTIONS =                                           *
 *            R1  OIEXL ADDRESS                                        *
 *            R2  DCB ADDRESS                                          *
 *            R3  UCB ADDRESS                                          *
 *            R4  DCB BLOCK SIZE                                       *
 *            R5  ADDRESS OF TPMAX OR DAMAX TABLES                     *
 *            R6  EVEN REGISTER OF EVEN/ODD PAIR                       *
 *            R7  ODD REGISTER OF EVEN/ODD PAIR                        *
 *            R8  TIOT ENTRY ADDRESS                                   *
 *            R9  JFCB ADDRESS                                         *
 *            R10 FORMAT 1 DSCB ADDRESS                                *
 *            R11 SAVE RETURN CODE                                     *
 *            R13 SAVE AREA ADDRESS                                    *
 *            R14 RETURN ADDRESS                                       *
 *            R15 BASE REGISTER                                        *
 *                                                                     *
 *    PATCH LABEL = PATCH                                              *
 *                                                                     *
 *    ATTRIBUTES = REENTRANT, REFRESHABLE,READ-ONLY, ENABLED,          *
 *                  PRIVILEGED, SUPERVISOR STATE, KEY ZERO,            *
 *                  LINK PACK AREA RESIDENT/PAGEABLE                   *
 *                                                                     *
 * ENTRY POINT = IFG0EX0B                                              *
 *                                                                     *
 *    PURPOSE = SEE FUNCTION                                           *
 *                                                                     *
 *    LINKAGE =                                                        *
 *           BALR 14,15                                                *
 *                                                                     *
 * INPUT = STANDARD LINKAGE CONVENTIONS                                *
 *                                                                     *
 * OUTPUT =   DCBBUFNO DEFAULTED                                       *
 *            PARTIAL RELEASE SET OR RESET                             *
 *            CONTIGUOUS FLAG SET TO ZERO                              *
 *            SECONDARY SPACE REQUEST MODIFIED                         *
 *          RETURN CODE IN REGISTER 15                                 *
 *            0 IF JFCB NOT MODIFIED                                   *
 *            4 IF JFCB MODIFIED                                       *
 *                                                                     *
Figure 4. Sample Listing of IFG0EX0B Part 4 of 13.
 * EXIT-NORMAL =                                                       *
 *          BR 14                                                      *
 *                                                                     *
 * EXIT-ERROR =                                                        *
 *        NONE                                                         *
 *                                                                     *
 * EXTERNAL REFERENCES = SEE BELOW                                     *
 *                                                                     *
 *    ROUTINES = NONE                                                  *
 *                                                                     *
 *    DATA AREAS = NONE                                                *
 *                                                                     *
 *    CONTROL BLOCK = DCB, JFCB, UCB, TIOT, DSCB                       *
 *                                                                     *
 * TABLES = NONE                                                       *
 *                                                                     *
 * MACROS = MODESET, IECOIEXL, DCBD, IEFUCBOB, IEFTIOT1, IEFJFCBN,     *
 *          IECSDSL1                                                   *
 *                                                                     *
 ***********************************************************************
 ***********************************************************************
 *
 *        REGISTER EQUATES
 *
 ***********************************************************************
 R1       EQU   1                  OIEXL PARAMETER LIST ADDRESS
 RDCB     EQU   2                  DCB ADDRESS
 RUCB     EQU   3                  UCB ADDRESS
 RBKSIZ   EQU   4                  DCB BLOCK SIZE
 RMAX     EQU   5                  ADDRESS OF TPMAX OR DAMAX
 REVEN    EQU   6                  EVEN REGISTER OF EVEN/ODD PAIR
 RODD     EQU   7                  ODD REGISTER OF EVEN/ODD PAIR. HAS   *
                                   DCBBUFNO DEFAULT
 RTIOT    EQU   8                  TIOT ENTRY ADDRESS
 RJFCB    EQU   9                  JFCB ADDRESS
 RDSCB    EQU   10                 FORMAT 1 DSCB ADDRESS
 RINCODE  EQU   11                 INTERNAL RETURN CODE
 R12      EQU   12
 RSAVE    EQU   13                 SAVE AREA ADDRESS
 RET      EQU   14                 RETURN ADDRESS
 RCODE    EQU   15                 BASE REGISTER/RETURN CODE ON EXIT
 ***********************************************************************
 *
 *        RETURN CODE
 *
Figure 5. Sample Listing of IFG0EX0B Part 5 of 13.
 ***********************************************************************
 MODJFCB  EQU   4                  RETURN CODE IF JFCB MODIFIED
          USING IFG0EX0B,RCODE
 ***********************************************************************
 *
 *        START OF SAMPLE PROGRAM
 *
 ***********************************************************************
          B     AFTRID1
          DC    C'IFG0EX0B JDM1137 &SYSDATE'
 AFTRID1  SAVE  (14,12)            SAVE REGISTERS
          XR    RINCODE,RINCODE    ZERO RETURN CODE
          USING OIEXL,R1           PARAMETER LIST
          BAL   RET,BUFNO          DEFAULT BUFNO
          BAL   RET,SCREEN         SCREEN OUT CASES WHERE RLSE,        *
                                   AND SQTY SHOULD NOT BE CALLED
          BAL   RET,RLSE           SET PARTIAL RELEASE
          BAL   RET,SQTY           SET SECONDARY QUANTITY
 EXIT     EQU   *                  RETURN TO CALLER
 ***********************************************************************
 *        RETURN TO CALLER
 ***********************************************************************
          LR    RCODE,RINCODE
          RETURN (14,12),RC=(15)   RESTORE REGISTER
 BUFNO    EQU   *                  DEFAULT DCB BUFNO
 ***********************************************************************
 *
 *        DEFINE DEFAULT VALUES
 *          DAMXK   = NUMBER OF K (1024) OF BUFFERS FOR DASD
 *          TPMXK   = NUMBER OF K (1024) OF BUFFERS FOR TAPE
 *          DAMXBNO = MAXIMUM NUMBER OF BUFFERS FOR DASD
 *          TPMXBNO = MAXIMUM NUMBER OF BUFFERS FOR TAPE
 *        NOTE THAT DAMXBNO AND TPMXBNO MUST NOT BE GREATER THAN 255
 *
 ***********************************************************************
 DAMXK    EQU   64                 64K BUFFERS FOR DASD
 TPMXK    EQU   64                 64K BUFFERS FOR TAPE
 DAMXBNO  EQU   32                 32 BUFFERS MAXIMUM FOR DASD
 TPMXBNO  EQU   32                 32 BUFFERS MAXIMUM FOR TAPE
 INOUTBNO EQU   1                  DCBBUFNO DEFAULT FOR SYSIN, SYSOUT,  *
                                   AND DD DUMMY
 ONEK     EQU   10                 SHIFT ARGUMENT TO MULTIPLY BY 1024
          B     AFTRID2
          DC    CL8'BUFNO'         BUFNO ROUTINE ID
 AFTRID2  BCR   0,RET              NOP RETURN
				 L     RDCB,OIEXPDCB      PROTECTED COPY OF DCB
          USING IHADCB,RDCB
Figure 6. Sample Listing of IFG0EX0B Part 6 of 13.
          ***********************************************************************
 *        DO NOT PROCESS EXCP, BSAM, DSORG NOT PS OR PO,
 *                       DCBBUFNO SPECIFIED
 ***********************************************************************
          TM    DCBMACF1,DCBMRECP  EXCP DCB?
          BO    RETBUFNO           RETURN IF EXCP
          TM    DCBMACF1,DCBMRRD   READ MACRO
          BO    RETBUFNO           RETURN IF READ-NOT QSAM
          TM    DCBMACF2,DCBMRWRT  WRITE MACRO
          BO    RETBUFNO           RETURN IF WRITE-NOT QSAM
          TM    DCBDSRG1,DCBDSGPS+DCBDSGPO PS OR PO
          BZ    RETBUFNO           EXIT IF NOT PS OR PO
          CLI   DCBBUFNO,0         IS DCBBUFNO SPECIFIED
          BNE   RETBUFNO           RETURN IF DCBBUFNO SPECIFIED
 ***********************************************************************
 *        DEFAULT DCBBUFNO TO 1 FOR SYSIN, SYSOUT, TERMINAL, DUMMY
 ***********************************************************************
          L     RTIOT,OIEXTIOT     TIOT ENTRY ADDRESS
          USING TIOENTRY,RTIOT
          L    RODD,INOUTBN        BUFNO DEFAULT FOR SYSIN/SYSOUT/      *
                                   DD DUMMY
          TM    TIOELINK,TIOESSDS+TIOTTERM SYSIN/SYSOUT OR TERMINAL
          BNZ   STORE              BRANCH IF SYSIN OR SYSOUT OR TERMINAL
          L     RJFCB,OIEXJFCB     JFCB ADDRESS
          USING INFMJFCB,RJFCB
          CLC   JFCBDSNM(L'NULLFILE),NULLFILE DUMMY DATA SET
          BE    STORE              BRANCH IF DUMMY
 ***********************************************************************
 *        EXIT IF NO UCB ADDRESS OR BLOCK SIZE NOT POSITIVE
 ***********************************************************************
          L     RUCB,OIEXUCB       UCB ADDRESS
          LTR   RUCB,RUCB          ANY UCB?
          BZ    RETBUFNO           EXIT IF NO UCB
          LH    RBKSIZ,DCBBLKSI    DCB BLOCK SIZE
          LTR   RBKSIZ,RBKSIZ      ANY BLOCK SIZE?
          BNP   RETBUFNO           RETURN IF NO BLOCK SIZE
 
 ***********************************************************************
 *        GET TAPE OR DASD MAX TABLE
 ***********************************************************************
          USING UCBOB,RUCB
          TM    UCBTBYT3,UCB3DACC  DASD UCB?
          BZ    BUFTAPE            BRANCH IF NOT DASD 
Figure 7. Sample Listing of IFG0EX0B Part 7 of 13.
          LA    RMAX,DAMAX         MAX TABLE FOR DASD
          L     RDSCB,OIEXDSCB     POINT TO DSCB
          USING DS1FMTID,RDSCB
          CLI   DS1FMTID,C'1'      BRANCH IF NOT FORMAT 1
          BNE   CALC
          TM    DS1SMSFG,DS1STRP   GO IF EXTENDED SEQ., SYSTEM
          BO    RETBUFNO           DEFAULT BUFNO IS BETTER
          B     CALC               GO CALCULATE BUFNO
 BUFTAPE  EQU   *
          TM    UCBTBYT3,UCB3TAPE  TAPE UCB?
          LA    RMAX,TPMAX         MAX TABLE FOR TAPE
          BZ    RETBUFNO           RETURN IF NOT DASD OR TAPE
 CALC     EQU   *                  DEFAULT DCBBUFNO
 
 ***********************************************************************
 *        CALCULATE DEFAULT BUFFER NUMBER
 ***********************************************************************
          USING MAX,RMAX
          XR    REVEN,REVEN        ZERO EVEN REG
          L     RODD,MAXBUF        MAXIMUM STORAGE FOR BUFFERS
          SLL   RODD,ONEK          SHIFT TO MULTIPLY BY 1024
          DR    REVEN,RBKSIZ       DIVIDE MAX BUFFER SPACE BY BKSI
          C     RODD,MAXBNO        ARE THERE TOO MANY BUFFERS?
          BNH   STORE              USE CALCULATION IF NOT TOO LARGE
          L     RODD,MAXBNO        USE MAXIMUM NUMBER OF BUFFERS
 STORE    EQU   *                  DEFAULT DCBBUFNO FOR USER/COPY DCB
          STC   RODD,DCBBUFNO      PUT IN PROTECTED COPY OF DCB
          L     RDCB,OIEXUDCB      USER DCB
          XR    REVEN,REVEN        MODESET USES REG 6 = REVEN
          MODESET KEYADDR=OIEXUKEY,WORKREG=6 GET IN USER KEY
          STC   RODD,DCBBUFNO      PUT IN USER DCB
          MODESET EXTKEY=ZERO      BACK TO KEY ZERO
 RETBUFNO EQU   *                  RETURN FROM BUFNO
          BR    RET                RETURN
 INOUTBN  DC    A(INOUTBNO)        SYSIN/SYSOUT/DUMMY BUFNO DEFAULT
 ***********************************************************************
 *
 *        MAX TABLE FOR TAPE
 *
 ***********************************************************************
          DS    0F
          DC    CL8'TPMAX'         TPMAX ID
 TPMAX    DS    0F
 TPMAXK   DC    A(TPMXK)           MAXIMUM SIZE FOR BUFFERS IN UNITS    *
                                   OF 1024
 TPMAXBNO DC    A(TPMXBNO)         MAXIMUM NUMBER OF BUFFERS
 
Figure 8. Sample Listing of IFG0EX0B Part 8 of 13.
 ***********************************************************************
 *
 *        MAX TABLE FOR DASD
 *
 ***********************************************************************
          DS    0F
          DC    CL8'DAMAX'         DAMAX ID
 DAMAX    DS    0F
 DAMAXK   DC    A(DAMXK)           MAXIMUM SIZE FOR BUFFERS IN UNITS    *
                                   OF 1024
 DAMAXBNO DC    A(DAMXBNO)         MAXIMUM NUMBER OF BUFFERS
 SCREEN   EQU   *                  SCREEN OUT CASES WHERE RLSE,         *
                                   AND SQTY SHOULD NOT RUN
 ***********************************************************************
 *        DO NOT PROCESS IF
 *           SYSIN/SYSOUT/TERMINAL
 *           DD DUMMY
 *           USER ASKS JFCB NOT BE RE-WRITTEN
 *           SYSTEM DATA SET ('SYS1.XXX')
 *           NON-DASD UCB
 *           NOT A FORMAT 1 DSCB
 *           EXCP DCB
 *           DSORG IN DCB IS NEITHER PS NOR PO
 *           DSORG IN DSCB IS NEITHER PS NOR PO
 *           NEITHER PUT NOR WRITE MACRO CODED IN DCB
 *           OPEN FOR OTHER THAN OUTPUT OR OUTIN
 ***********************************************************************
          B     AFTRID3
          DC    CL8'SCREEN'        SCREEN ROUTINE ID
 AFTRID3  L     RTIOT,OIEXTIOT     TIOT ENTRY ADDRESS
          TM    TIOELINK,TIOESSDS+TIOTTERM SYSIN/SYSOUT OR TERMINAL
          BNZ   EXIT               EXIT IF SYSIN OR SYSOUT OR TERMINAL
          L     RJFCB,OIEXJFCB     JFCB ADDRESS
          CLC   JFCBDSNM(L'NULLFILE),NULLFILE DUMMY DATA SET
          BE    EXIT               EXIT IF DUMMY
          CLC   SYS1,JFCBDSNM      SYS1.XXX DATA SET
          BE    EXIT               EXIT IF SYSTEM DATA SET
          TM    JFCBTSDM,JFCNWRIT   DON'T MODIFY JFCB
          BO    EXIT               EXIT IF YES
          L     RUCB,OIEXUCB       UCB ADDRESS
          LTR   RUCB,RUCB          ANY UCB?
          BZ    EXIT               EXIT IF NO UCB
          TM    UCBTBYT3,UCB3DACC  DASD UCB?
          BNO   EXIT               EXIT IF NOT DASD
Figure 9. Sample Listing of IFG0EX0B Part 9 of 13.
          L     RDSCB,OIEXDSCB     FORMAT 1 DSCB ADDRESS
          USING DS1FMTID,RDSCB
          CLI   DS1FMTID,C'1'      IS THIS A FORMAT 1 DSCB
          BNE   EXIT               EXIT IF NOT
          L     RDCB,OIEXPDCB      PROTECTED DCB ADDRESS
          TM    DCBMACF1,DCBMRECP  EXCP DCB?
          BO    EXIT               EXIT IF EXCP
          TM    DCBDSRG1,DCBDSGPS+DCBDSGPO PS OR PO DCB
          BZ    EXIT               EXIT IF NOT PS OR PO
          NC    DS1DSORG,DS1DSORG  IS DSORG SPECIFIED
          BZ    TSTMACRF           TRUST DCB IF NOT SPECIFIED
          TM    DS1DSORG,DS1DSGPS+DS1DSGPO IS DATA SET PS OR PO
          BZ    EXIT               EXIT IF NOT PS OR PO
 TSTMACRF EQU   *                  TEST MACRF IN DCB
          TM    DCBMACF2,DCBMRPUT  PUT MACRO
          BO    TSTOOPT            TEST OPEN OPTION
          TM    DCBMACF2,DCBMRWRT  WRITE MACRO
          BZ    EXIT               EXIT IF NOT WRITE
 TSTOOPT  EQU   *                  TEST OPEN OPTION
          TM    OIEXOOPT,OIEXOOUT  OPEN FOR OUTPUT
          BO    SCREENOK           BRANCH IF YES
          TM    OIEXOOPT,OIEXOOIN  OPEN FOR OUTIN
          BNO   EXIT               EXIT IF NO
 SCREENOK EQU   *
          BR    RET                RETURN TO CALL RLSE, SQTY
 RLSE     EQU   *                  SET PARTIAL RELEASE
 ***********************************************************************
 *
 *        DEFINE DEFAULT VALUES
 *          RLSE0   = NUMBER OF EXTENTS. IF THE DATA SET HAS THIS
 *                    NUMBER OF EXTENTS OR MORE, THEN PARTIAL RELEASE
 *                    IS NOT BE ALLOWED.
 *          RLSE1   = NUMBER OF EXTENTS. IF THE DATA SET HAS LESS THAN
 *                    THIS NUMBER OF EXTENTS, PARTIAL RELEASE IS
 *                    REQUIRED.
 *
 *        NOTE THAT RLSE0 MUST NOT BE GREATER THAN RLSE1
 *
 *        SETTING RLSE0 TO 17 OR GREATER CAUSES THIS ROUTINE TO
 *          NEVER PREVENT A REQUEST FOR PARTIAL RELEASE
 *
 *        SETTING RLSE1 TO 0 CAUSES THIS ROUTINE TO
 *          NEVER FORCE A REQUEST FOR PARTIAL RELEASE
 *
 ***********************************************************************
Figure 10. Sample Listing of IFG0EX0B Part 10 of 13.
 RLSE0    EQU   8                  SET RELEASE BIT TO ZERO IF NUMBER OF *
                                   EXTENTS EQUAL OR GREATER THAN THIS
 RLSE1    EQU   8                  SET RELEASE BIT TO ONE IF NUMBER OF  *
                                   EXTENTS LESS THAN THIS
          B     AFTRID4
          DC    CL8'RLSE'          RLSE ROUTINE ID
 AFTRID4  BCR   0,RET              NOP RETURN
          L     RDSCB,OIEXDSCB     FORMAT 1 DSCB ADDRESS
          TM    DS1DSORG,DS1DSGPO  IS DATA SET PARTITIONED
          BO    TSTRLSE            DO NOT SET RELEASE FOR PARTITIONED
          CLC   DS1NOEPV,EXTRLSE1  FEW ENOUGH TO SET RELEASE
          BNL   TSTRLSE            BRANCH IF NOT
          L     RJFCB,OIEXJFCB
          OI    JFCBIND1,JFCRLSE   SET RELEASE
          LA    RINCODE,MODJFCB    JFCB MODIFIED
          B     RETRLSE            RETURN
 TSTRLSE  CLC   DS1NOEPV,EXTRLSE0  ENOUGH TO ZERO RELEASE
          BL    RETRLSE            BRANCH IF NO
          NI    JFCBIND1,255-JFCRLSE ZERO RELEASE
          LA    RINCODE,MODJFCB    JFCB MODIFIED
 RETRLSE  EQU   *                  RETURN FROM RLSE
          BR    RET                RETURN
          DC    CL8'RLSECONS'      RLSE CONSTANTS ID
          DS    0H
 EXTRLSE1 DC    AL1(RLSE1)         IF FEWER THAN THIS NUMBER OF EXTENTS,*
                                   PARTIAL RELEASE IS SET
 EXTRLSE0 DC    AL1(RLSE0)         IF THIS NUMBER OR MORE EXTENTS,      *
                                   PARTIAL RELEASE IS ZEROED
 SQTY     EQU   *                  SET SECONDARY QUANTITY
 ***********************************************************************
 *
 *        DEFINE DEFAULT VALUES
 *          SQTYDFL = DEFAULT SECONDARY QUANTITY. THIS QUANTITY IS
 *                    SET IF THE SECONDARY QUANTITY IS ZERO AND THE
 *                    PRIMARY QUANTITY IS ZERO OR ONE. IT IS USED
 *                    IF SECONDARY QUANTITY IS ONE, AND THE NUMBER OF
 *                    EXTENTS IS EQUAL OR GREATER TO EXTSQT.
 *          EXTSQT  = NUMBER OF EXTENTS. IF THE DATA SET HAS THIS MANY
 *                    EXTENTS OR MORE, THEN INCREASE SECONDARY QUANTITY.
 *
 ***********************************************************************
 SQTYDFL  EQU   5                  DEFAULT SECONDARY QUANTITY
 EXTSQT   EQU   10                 IF DATA SET HAS THIS MANY EXTENTS,   *
                                   THEN INCREASE SECONDARY QUANTITY
          B     AFTRID6
 
Figure 11. Sample Listing of IFG0EX0B Part 11 of 13.
          DC    CL8'SQTY'          SQTY ROUTINE ID
 AFTRID6  BCR   0,RET              NOP RETURN
          L     RJFCB,OIEXJFCB     JFCB ADDRESS
          NC    JFCBSQTY,JFCBSQTY  ANY SECONDARY QUANTITY
          BZ    TSTPRIM            TEST PRIMARY IF NOT
          L     RDSCB,OIEXDSCB     FORMAT 1 DSCB ADDRESS
          CLC   DS1NOEPV,EXTSQTY   ENOUGH TO ADD TO SECONDARY QTY
          BL    RETSQTY            BRANCH IF NOT
          XR    RODD,RODD
          ICM   RODD,7,JFCBSQTY    GET SECONDARY QUANTITY
          LR    REVEN,RODD         SAVE IN REVEN
          SRL   REVEN,1            HALVE SECONDARY QUANTITY
          LTR   REVEN,REVEN        IS SECONDARY ONE
          BZ    SETDFLT            DEFAULT SECONDARY IF ONE
          AR    RODD,REVEN         150% OF SECONDARY
          B     STSQTY
 TSTPRIM  EQU   *                  SECONDARY QUANTITY IS ZERO
          NC    JFCBPQTY,JFCBPQTY  IS PRIMARY QUANTITY ZERO
          BZ    DFLTSQTY           DEFAULT SECONDARY
          XR    RODD,RODD
          ICM   RODD,7,JFCBPQTY
          SRL   RODD,1             HALVE PRIMARY
          LTR   RODD,RODD          IS PRIMARY ONE
          BNZ   STSQTY             BRANCH IF NOT
 SETDFLT  EQU   *                  USE QUANTITY IN SQTYDFLT
          L     RODD,SQTYDFLT      DEFAULT SECONDARY
          B     STSQTY             STORE SECONDARY
 DFLTSQTY EQU   *                  PRIMARY AND SECONDARY ZERO
          L     RODD,SQTYDFLT      GET DEFAULT SECONDARY
          TM    JFCBCTRI,JFCBSPAC
          BNZ   STSQTY
          CLI   DS1EXT1,X'01'      TRACK EXTENT
          BE    DFLTTRK            YES -- SET TRACKS
          CLI   DS1EXT1,X'81'      CYL EXTENT
          BNE   RETSQTY            NO -- RETURN
          OI    JFCBCTRI,JFCBCYL   SET CYLINDER UNITS
          B     STSQTY
 DFLTTRK  EQU   *                  SET TRACK UNITS
          OI    JFCBCTRI,JFCBTRK   MAKE TRACK REQUEST
 STSQTY   EQU   *                  STORE SECONDARY QTY
          STCM  RODD,7,JFCBSQTY
          LA    RINCODE,MODJFCB    JFCB MODIFIED
 RETSQTY  EQU   *                  RETURN FROM SQTY
          BR    RET                RETURN
          DS    0F
Figure 12. Sample Listing of IFG0EX0B Part 12 of 13.
          DC    CL8'SQTYCONS'      SQTY ROUTINE CONSTANTS ID
 SQTYDFLT DC    A(SQTYDFL)         DEFAULT SECONDARY QUANTITY
          DC    AL1(0)             NOTE ONE BYTE OF ZERO BEFORE EXTSQTY
 EXTSQTY  DC    AL1(EXTSQT)        IF DATA SET HAS THIS MANY EXTENTS,   *
                                   THEN ADD TO SECONDARY QUANTITY
 ***********************************************************************
 *
 *        CONSTANTS / PATCH AREA
 *
 ***********************************************************************
 NULLFILE DC    C'NULLFILE '       DD DUMMY DATA SET NAME
 SYS1     DC    C'SYS1.'           START OF SYSTEM DATA SET NAMES
          DS    0F
 PATCH    DC    C'IFG0EX0B PATCH AREA '
          DC    XL50'00'
 ***********************************************************************
 *
 *        MAX TABLE MAPPING DSECT (MAPS TPMAX OR DAMAX)
 *
 ***********************************************************************
 MAX      DSECT
 MAXBUF   DS    A                  MAXIMUM SIZE FOR BUFFERS
 MAXBNO   DS    A                  MAXIMUM NUMBER OF BUFFERS
 ***********************************************************************
 *
 *        DCB OPEN INSTALLATION EXIT PARAMETER LIST
 *        --THE IECOIEXL MACRO
 *
 ***********************************************************************
          IECOIEXL
 ***********************************************************************
 *
 *        DCB - THE DCBD MACRO
 *
 ***********************************************************************
          DCBD DSORG=PS,DEVD=DA
 ***********************************************************************
 *
 *        UCB - THE IEFUCBOB MACRO
 *
 ***********************************************************************
 UCB      DSECT
          IEFUCBOB LIST=YES
 ***********************************************************************
 *
Figure 13. Sample Listing of IFG0EX0B Part 13 of 13.
 *        TIOT - THE IEFTIOT1 MACRO
 *
 ***********************************************************************
 TIOT     DSECT
          IEFTIOT1
 ***********************************************************************
 *
 *        JFCB - THE IEFJFCBN MACRO
 *
 ***********************************************************************
 JFCB     DSECT
          IEFJFCBN LIST=YES
 ***********************************************************************
 *
 *        FORMAT 1 DSCB - THE IECSDSL1 MACRO *
 ***********************************************************************
 F1DSCB   DSECT
          IECSDSL1 (1)
          END

Go to the previous page Go to the next page




Copyright IBM Corporation 1990, 2014