|
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
|