./ ADD SSI=01011473,NAME=IECBBFB1,SOURCE=0 TITLE 'IECBBFB1 BUILD BUFFER POOL' 00020000 *FUNCTION:THIS BUILD ROUTINE IS ENTERED VIA A LINK SVC WHEN THE USER * 00040000 * ISSUES A BUILD MACRO. THE ROUTINE THEN BUILDS THE BUFFERS * 00060000 *ENTRY POINT-BY LINK TO IECBBFB1 00080000 *INPUT:REGISTER 13 USER SAVE AREA ADDRESS * 00100000 * REGISTER 14 RETURN ADDRESS * 00120000 * REGISTER 15 UECBBFB1 FIRST LOCATION ADDRESS 00140000 * REGISTER 1 MAIN STORAGE POOL ADDR CONTAINING 00160000 * NUMBER AND LENGTH OF BUFFERS REQUESTED 00180000 *OUTPUT:BUILT BUFFERS AT SPECIFIED ADDRESS WITH ASSOCIATED BUFFER CB * 00200000 *MODULE TYPE:QSAM ROUTINE LOADED BY LINKAGE EDITOR * 00220000 *EXTERNAL REFERENCES:USER SAVE AREA * 00240000 *EXITS-NORMAL:RETURN ON REGISTER 14 TO CALLER. * 00260000 *EXITS-ERRORS:RETURN ON REGISTER 14 TO CALLER. NO BUFFERS BUILT. * 00280000 * FORCE OPEN TO BUILD BUFFERS SINCE USER SPECIFIED 0 BUFFER * 00300000 * NUMBER OR LENGTH * 00320000 *WORK AREAS: N/A * 00340000 IECBBFB1 CSECT 00360000 * 00362018 * 00364018 * 00366018 * 00368018 * 00370018 * 00372018 * 00374018 * 00376018 * 00378018 SAVE (14,6) SAVE REGISTERS 00380000 BALR BASR,0 00400000 USING *,BASR 00420000 L WRKR,0(BUFPTR) PLACE BUFFER DESCRIPTION IN REG 00440000 LA WRKR,3(WRKR) BEGIN ROUNDING 00460000 LA BUFADR,8(BUFPTR) CALCULATE FIRST BUFFER ADDRESS 00480000 ST BUFADR,0(BUFPTR) PLACE LINK ADDRESS IN BCB 00500000 ST WRKR,4(BUFPTR) PLACE DESCRIPTION IN BCB 00520000 NI 7(BUFPTR),252 COMPLETE ROUDING TO FULL WORD 00540000 LH BUFNOR,4(BUFPTR) OBTAIN EXACT NUMBER OF BUFFERS 00560000 LH LBUFLR,6(BUFPTR) OBTAIN LENGTH OF EACH BUFFER 00580000 LTR BUFNOR,BUFNOR Q-ZERO NUMBER REQUESTED 00600000 BZ RETURN YES,RETURN 00620000 LTR LBUFLR,LBUFLR Q-ZERO LENGTH REQUESTED 00640000 BZ RETURNA YES,RETURN 00660000 BILDLOOP LR BUFPTR,BUFADR UPDATE BUFFER ADDRESS POINTER 00680000 BCT BUFNOR,LOOP Q-ALL BUFFERS BUILT 00700000 RETURN ST BUFNOR,0(BUFPTR) YES, CLEAR LAST BUFFER LINK ADR 00720000 RETURNB RETURN (14,6) RETURN TO CALLER 00740000 LOOP LA BUFADR,0(3,BUFPTR) NO, CALCULATE NEXT BUFFER ADDR 00760000 ST BUFADR,0(BUFPTR) STORE BUFFER LINK ADDRESS 00780000 BC 15,BILDLOOP BUILD NEXT BUFFER 00800000 RETURNA ST LBUFLR,0(BUFPTR) YES,CLEAR LAST BUFFER LINK ADR 00820000 B RETURNB 00840000 BUFPTR EQU 1 00860000 LBUFLR EQU 3 00880000 WRKR EQU 4 00900000 BUFNOR EQU 2 00920000 BUFADR EQU 5 00940000 SAVR EQU 13 00960000 RETR EQU 14 00980000 BASR EQU 6 01000000 END IECBBFB1 01020000 ./ ADD SSI=01011146,NAME=IECQBFG1,SOURCE=0 TITLE 'IECQBFG1 GET POOL' 00020000 COPY LCGASMSW 00020402 * RELEASE 17 DELETIONS 00022000 *2060009200,009400 DM0E 00023000 *2060005800 7M379 00023500 * RELEASE 18 DELETIONS 00024000 * RELEASE 19 DELETIONS 00026000 * RELEASE 20 DELETIONS 00028000 * RELEASE 21 DELETIONS 00030000 * REFER TO CODE FLAGGED XA03130 SA66030 00038000 * 00038402 * VS1-2 DELETIONS 00038802 * 0000 XM0909 00038902 * VS1-3 DELETIONS 00044100 * XA03130 00046100 *STATUS CHANGE LEVEL 004 00049600 *FUNCTION:THIS GETPOOL ROUTINE IS ENTERED VIA AN LINK SVC WHEN THE USER 00054800 * ISSUES A GETPOOL MACRO. THE ROUTINE THEN GETS CORE AND BUILD * 00060000 * THE POOL OF BUFFERS. * 00080000 *ENTRY POINT-BY LINK TO IECQBFG1 00100000 *INPUT:REGISTER 13 USER SAVE AREA ADDRESS * 00120000 * REGISTER 14 RETURN ADDRESS * 00140000 * REGISTER 15 IECQBFG1 FIRST LOCATION ADDRESS 00160000 * REGISTER 0 HIARCHY SPECIFICATION (EITHER HI SPEED DM0E 00162000 * STORAGE, LCS OR NEITHER,WHICH DEFAULTS TO HI DM0E 00164000 * SPEED). C(REG0) SIGNIFICANCE DM0E 00166000 * =X'00' HIARCHY NOT CODED ON GETPOOL(LOOK IN DCB) DM0E 00168000 * =X'01' HIARCHY=0 (HI SPEED STORAGE) DM0E 00170000 * =X'02' HIARCHY=1 (LCS) DM0E 00172000 * REGISTER 1 DCB ADDRESS FOR POOL ASSIGNMENT 00180000 * IF REGISTER 1 IS POSITIVE, HIARCHY 0 WILL BE 7M379 00184000 * ASSUMED. 7M379 00188000 * IF REGISTER 1 IS NEGATIVE, REGISTER 0 WILL BE 7M379 00192000 * EXAMINED TO DETERMINE HIARCHY SPECIFICATION. 7M379 00196000 * +22 NUMBER OF BUFFERS REQUESTED 00200000 * +24 LENGTH OF BUFFERS REQUESTED 00220000 *OUTPUT:NUMBER AND ADDRESS OF BUILT BUFFERS IN DCB BUFNO AND BUFCB * 00240000 *MODULE TYPE:QSAM ROUTINE LOADED BY LINKAGE EDITOR * 00260000 *EXTERNAL REFERENCES:DCB,USER SAVE AREA * 00280000 *EXITS-NORMAL:RETURN ON REGISTER 14 TO CALLER. NUMBER AND ADDRESS OF * 00300000 * BUILT BUFFERS IN DCB BUFNO AND BUFCB * 00320000 *EXITS-ERRORS:RETURN ON REGISTER 14 TO CALLER. NO BUFFERS BUILT. * 00340000 * FORCE OPEN TO BUILD BUFFERS SINCE USER SPECIFIED 0 BUFFER * 00360000 * NUMBER OR LENGTH * 00380000 *ATTRIBUTES - REENTRANT 00400000 *WORKAREAS - USERS SAVE AREA 00420000 *NOTES:THIS MODULE WAITS FOR AVAILABLE CORE IF NECESSARY DURING * 00440000 * GETMAIN OPERATION * 00460000 * 00480000 IECQBFG1 CSECT 00500000 SAVE (14,6) SAVE REGISTERS 00520000 BALR BASR,0 00540000 USING *,BASR 00560000 LCR DCBR,BUFPTR Q. DCB ADDR PASSED NEG 7M379 00563000 BC 2,LCSTEST BRANCH IF YES - NOTE THAT 7M379 00566000 * BUFPTR REMAINS NEGATIVE 7M379 00569000 LCR DCBR,DCBR NO, MAKE DCB ADDR POS 7M379 00572000 B SETH0 ASSUME HIARCHY=0 7M379 00575000 LCSTEST EQU * 7M379 00578000 BCTR BUFPAR,BUFPAR DECREMENT FOR LTR CONVENIENCE. DM0E 00581000 LTR BUFPAR,BUFPAR TEST PARM PASSED BY MACRO. DM0E 00582000 BZ SETH0 HIARCHY=0 CODED ON GETPOOL.DM0E 00583000 SETH1 L PLAYREG,LCS SETUP FOR HIARCHY=1. DM0E 00584000 BP H1OK BIF HIARCHY=1 ON GETPOOL. DM0E 00585000 * HIARCHY NOT CODED ON GETPOOL MACRO. GET IT FROM DCB. DM0E 00586000 TM DCBBFTEK(DCBR),HIARCHY IS LCS SPEC'D IN DCB. DM0E 00587000 BO H1OK DM0E 00588000 SETH0 SR PLAYREG,PLAYREG PARM NOT EQUAL TO -LCT IS A DM0E 00589000 * REQUEST FOR HI SPEED STORAGE DM0E 00590000 H1OK EQU * DM0E 00591000 * PLAYREG HOLDS THE HIARCHY PARM WHICH WILL BE PASSED TO GETMAIN INDM0E 00592000 * REG 0. DM0E 00593000 LH BUFNOR,22(DCBR) PLACE NUMBER OF BUFFERS IN REG 00600000 LH LBUFLR,24(DCBR) PLACE LENGTH OF BUFFERS IN REG 00620000 LTR BUFNOR,BUFNOR Q-ZERO NUMBER REQUESTED 00640000 BZ RETURNA YES,RETURN 00660000 LTR LBUFLR,LBUFLR Q-ZERO LENGTH REQUESTED 00680000 BZ RETURNA YES, RETURN 00700000 LA LBUFLR,7(LBUFLR) ROUND LENGTH 00720000 SRL LBUFLR,3 TO MULTIPLE 00740000 SLL LBUFLR,3 OF EIGHT 00760000 LR BUFPTR,LBUFLR ROUNDED LENGTH TIMES 00780000 MR BUFPAR,BUFNOR NUMBER FOR TOTAL LENGTH 00800000 TM 32(DCBR),1 Q-FULL WORD ALIGNMENT SPECIFIED 00820000 BO POOL1 YES 00840000 LA BUFPAR,8(BUFPTR) NO,ADD 8 TO LGN FOR BCB 00860000 B POOL2 00880000 POOL1 LA BUFPAR,16(BUFPTR) YES,ADD 16 FOR BCB AND ALIGN 00900000 POOL2 LTR PLAYREG,PLAYREG TEST HIARCHY ID DM0E 00906000 BZ HID0 BRANCH HIARCHY=0 DM0E 00912000 AIF ('&LIB' EQ 'LIB2').LIB01 XM0909 00914002 GETMAIN R,LV=(0),HIARCHY=1 DM0E 00918000 .LIB01 ANOP XM0909 00920002 * XM0909 00922102 AIF ('&LIB' EQ 'LIB1').LIB02 XM0909 00922502 GETMAIN R,LV=(0) XM0909 00922802 .LIB02 ANOP XM0909 00923202 B STORE DM0E 00924000 HID0 GETMAIN R,LV=(0),HIARCHY=0 DM0E 00930000 STORE ST BUFPTR,20(DCBR) PLACE BUFCB IN DCB DM0E 00940000 STC BUFNOR,20(DCBR) PLACE BUFNO IN DCB 00960000 STH LBUFLR,24(DCBR) PLACE ROUNDED LENGTH IN DCB 00980000 TM 32(DCBR),1 Q-FULL WORD ALIGNMENT SPECIFIED 01000000 BO POOL3 YES 01020000 LA BUFPAR,8(BUFPTR) NO,DETERMINE BCB LINK ADDR 01040000 B POOL4 01060000 POOL3 LA BUFPAR,12(BUFPTR) YES,LINK ADDR AROUND ALIGN PAD 01080000 POOL4 ST BUFPAR,0(BUFPTR) PLACE LINK ADDR IN BCB 01100000 STH LBUFLR,6(BUFPTR) PLACE LENGTH IN BCB 01120000 STH BUFNOR,4(BUFPTR) PLACE NUMBER IN BCB 01140000 TM 32(DCBR),1 FULL WORD ALIGNMENT XA03130 01150003 BNO POOLLOOP NO, BRANCH XA03130 01152003 OI 4(BUFPTR),X'40' SET EXTEND FLAG IN BCB XA03130 01154003 POOLLOOP LR BUFPTR,BUFPAR UPDATE BUFFER ADDRESS POINTER 01160000 BCT BUFNOR,LOOP Q-ALL BUFFERS BUILT 01180000 RETURN MVC 0(4,BUFPTR),ZERO CLEAR BUFFER LINK ADDRESS 01200000 RETURNA RETURN (14,6) RETURN TO CALLER 01220000 LOOP LA BUFPAR,0(3,BUFPTR) NO, CALCULATE NEXT BUFFER ADDR 01240000 ST BUFPAR,0(BUFPTR) STORE BUFFER LINK ADDRESS 01260000 BC 15,POOLLOOP BUILD NEXT BUFFER 01280000 ZERO DC X'00000000' 01300000 DS 0F DM0E 01305000 LCS DC X'80' REG1 CONTENTS FOR GETMAIN FROM DM0E 01310000 DC C'LCT' LCS. NOTE THE 'T'. DM0E 01315000 BUFPAR EQU 0 01320000 BUFPTR EQU 1 01340000 BUFNOR EQU 2 01360000 LBUFLR EQU 3 01380000 DCBR EQU 4 01400000 SAVR EQU 13 01420000 RETR EQU 14 01440000 PLAYREG EQU 5 USED TO DEVELOP AND HOLD DM0E 01442000 * HIARCHY REQUEST UNTIL NEEDED DM0E 01444000 * BY GETMAIN. DM0E 01446000 DCBBFTEK EQU 32 BFTEK OFFSET IN DCB. DM0E 01448000 HIARCHY EQU X'80' TEST DCBBFTEK FOR WHICH STORAGE DM0E 01450000 * BOX, HI SPEED OR LCS. DM0E 01452000 BASR EQU 6 01460000 END IECQBFG1 01480000 ./ ADD SSI=21880133,NAME=IFG019RA,SOURCE=0 TITLE 'IFG019RA--OPEN/CLOSE/END OF VOLUME RESIDENT ROUTINE' 00200000 COPY LCGASMSW 00250000 IFG019RA CSECT 00400000 *********************************************************************** 00500000 * * 00600000 * * 00700000 * RELEASE 25 DELETIONS/CHANGES * 00800000 * RELEASE 24 DELETIONS/CHANGES * 00900000 * RELEASE 23 DELETIONS/CHANGES * 01000000 * RELEASE 21.6 DELETIONS/CHANGES 01100000 * 01150000 *0000 SM4377 01160000 * RELEASE 21 DELETIONS/CHANGES * 01200000 *0000023000-025000,080000-083000,117000 S21940 01250021 * * 01300000 * STATUS CHANGE LEVEL 000 * 01400000 * * 01500000 * FUNCTION - * 01600000 * THIS MODULE CONTAINS THE FUNCTION(S) OR PART(S) OF FUNCTION(S)-- * 01700000 * OPEN/CLOSE/EOV RESIDENT ROUTINE FUNCTION. * 01800000 * REFER TO THE FOLLOWING 'FUNCTION PROLOG(S)' FOR DETAILS. * 01900000 * * 02000000 * ENTRY POINTS - * 02100000 * IFG019RA * 02200000 * * 02600000 * INPUT - * 02700000 * REFER TO THE FOLLOWING 'FUNCTION PROLOG(S)'. * 02800000 * * 02900000 * OUTPUT - * 03000000 * REFER TO THE FOLLOWING 'FUNCTION PROLOG(S)'. * 03100000 * * 03200000 * EXTERNAL REFERENCES - * 03300000 * REFER TO THE FOLLOWING 'FUNCTION PROLOG(S)'. * 03400000 * * 03500000 * EXITS, NORMAL - * 03600000 * REFER TO THE FOLLOWING 'FUNCTION PROLOG(S)'. * 03700000 * * 03800000 * EXITS, ERROR - * 03900000 * NONE * 04000000 * * 04100000 * TABLES/WORK AREAS - * 04200000 * REFER TO THE FOLLOWING 'FUNCTION PROLOG(S)'. * 04300000 * * 04400000 * ATTRIBUTES - * 04500000 * REENTRANT, REFRESHABLE, READ-ONLY, ENABLED, PRIVILEGED, * 04600000 * ONLY LOADABLE * 04700000 * * 04800000 * CHARACTER CODE DEPENDENCY - * 04900000 * CLASS TWO CHARACTER CODE DEPENDENCY - THE EBCIDIC CHARACTER SET * 05000000 * WAS USED FOR ASSEMBLY. THE MODULE MUST BE MODIFIED IF A * 05100000 * DIFFERENT CHARACTER SET IS TO BE USED DURING EXECUTION. THE * 05200000 * CHARACTER SET CHARACTERISTICS THAT THIS MODULE IS DEPENDENT * 05300000 * UPON ARE - * 05400000 * 1. X'FF' IS NOT AN ALPHANUMERIC. * 05500000 * 2. X'00' IS NOT AN ALPHANUMERIC. * 05600000 * 3. A-Z,0-9 ARE IN COLLATING SEQUENCE, IN THAT ORDER. * 05700000 * THESE CHARACTERISTICS ARE USED IN DETERMINING WHICH MODULE IS * 05800000 * TO BE XCTLED TO, AND APPLY TO THE TWO BYTE MODULE ID. THE * 05900000 * MODULE ID IS THE LAST TWO CHARACTERS OF THE MODULE NAME, FOR * 06000000 * MODULES THAT ARE PART OF OPEN/CLOSE/EOV. * 06100000 * * 06200000 * NOTES - * 06300000 * A CHARACTER CODE DEPENDENCY FLAG OF 'CC' APPEARS IN COLUMNS 70, * 06400000 * 71 OF ALL STATEMENTS DEPENDENT ON THE CHARACTER CODE. * 06500000 * REFER TO THE FOLLOWING 'FUNCTION PROLOG(S)'. * 06600000 * * 06700000 *********************************************************************** 06800000 EJECT 06900000 *********************************************************************** 07000000 * * 07100000 * FUNCTION PROLOG * 07200000 * * 07300000 *********************************************************************** 07400000 * * 07500000 * FUNCTION NAME - * 07600000 * OPEN/CLOSE/EOV RESIDENT ROUTINE FUNCTION * 07700000 * * 07800000 * FUNCTION - * 07900000 * THIS MODULE IS RESIDENT IN THE NUCLEUS, LOCATED BY A POINTER * 08000021 * IN THE CVT. OPEN, CLOSE, AND END OF VOLUME USE THIS ROUTINE. * 08100021 * * 08400000 * THE RESIDENT ROUTINE PERFORMS THE FUNCTION OF AN INPUT/OUTPUT * 08500000 * SUPERVISOR FOR THE COMPONENT, ESSENTIALLY ALLOWING THE * 08600000 * COMPONENT TO PROCESS PARALLEL DCB'S IN A SERIAL MANNER WITHIN * 08700000 * PARTICULAR MODULES. THE RESIDENT ROUTINE CONTROLS PROCESSING * 08800000 * BY ISSUING ALL WAIT'S, XCTL'S, AND SWITCHING DCB'S TO BE * 08900000 * PROCESSED BY MODIFYING REGISTERS. * 09000000 * * 09100000 * A MODULE DESIRING TO ISSUE A WAIT FOR A DCB BRANCHES TO THE * 09200000 * RESIDENT ROUTINE FOR THIS PURPOSE. THE RESIDENT ROUTINE THEN * 09300000 * RETURNS TO THE MODULE WITH ANOTHER DCB IMMEDIATELY, RATHER * 09400000 * THAN ISSUING A WAIT. WHEN ALL DCB'S HAVE A WAIT PENDING, * 09500000 * THE RESIDENT ROUTINE ISSUES A MULTIPLE WAIT, RETURNING TO THE * 09600000 * MODULE WITH THE DCB WHOSE ECB WAS FIRST POSTED. THIS ALLOWS * 09700000 * OVERLAP OF I/O BETWEEN DCB'S IN THE MODULE. * 09800000 * * 09900000 * RATHER THAN A DCB ISSUING AN XCTL WITHIN A MODULE, THE DCB * 10000000 * INDICATES WHICH MODULE IT WOULD LIKE TO XCTL TO BY PLACING * 10100000 * THAT MODULE'S TWO BYTE MODULE ID AND TTR IN ITS WHERE-TO-GO * 10200000 * (WTG) TABLE ENTRY AND BRANCHING TO THE RESIDENT ROUTINE. * 10300000 * THE RESIDENT ROUTINE THEN CHECKS WHETHER ANY DCB'S REMAIN * 10400000 * IN NEED OF THE CURRENT MODULE IN THE TRANSIENT AREA (CHECKS * 10500000 * WHETHER ANY DCB'S ARE 'ACTIVE'). IT DOES THIS BY COMPARING * 10600000 * THE MODULE ID'S IN THE WTG TABLE BASIC SECTION AND THE WTG * 10700000 * TABLE DCB ENTRY. IF THE ID'S MATCH, THE DCB IS ACTIVE. * 10800000 * * 10900000 * AN ACTIVE DCB IS RETURNED TO THE MODULE. IF NONE ARE ACTIVE, * 11000000 * THE ID THAT IS LOWEST IN COLLATING SEQUENCE OF THE ID'S IN * 11100000 * THE WTG ENTRIES IS FOUND, THE FIRST DCB ACTIVE IN THAT MODULE * 11200000 * WITH THE LOWEST ID IS FOUND, AND AN XCTL IS ISSUED TO THAT * 11300000 * MODULE. * 11400000 * * 11500000 * IN SOME INSTANCES, SUCH AS INTERFACING WITH MODULES NOT USING * 11600000 * THE RESIDENT ROUTINE, IT IS DESIRABLE TO EXIT FROM THE * 11700021 * RESIDENT ROUTINE'S CONTROL OF DCB LOOPING, ETC. * 11800000 * THIS IS ACCOMPLISHED BY THE DCB SYNCHRONIZATION FACILITY * 11900000 * OF THE RESIDENT ROUTINE, THAT OPERATES SIMILARLY TO THE WAIT * 12000000 * FACILITY. RATHER THAN A DCB IN CONTROL IN A MODULE * 12100000 * BRANCHING TO THE RESIDENT ROUTINE FOR A WAIT, A BRANCH IS * 12200000 * TAKEN FOR A PSEUDO-WAIT. IN THIS CASE, WHEN ALL DCB'S HAVE * 12300000 * PSEUDO-WAITS, A WAIT IS NOT ISSUED, BUT CONTROL IS RETURNED * 12400000 * TO THE MODULE, WITH REGISTERS POINTING TO THE FIRST ACTIVE * 12500000 * DCB IN THE OPEN/CLOSE PARAMETER LIST. THIS ENSURES * 12600000 * THAT ALL DCB'S ACTIVE IN THE MODULE HAVE COMPLETED EXECUTION UP * 12700000 * TO THAT POINT AND EFFECTIVELY EXITS FROM RESIDENT ROUTINE * 12800000 * CONTROL. RESIDENT ROUTINE CONTROL MAY BE RE-ESTABLISHED BY RE- * 12900000 * ESTABLISHING THE BASE REGISTER IN THE MODULE, AS THE RESIDENT * 13000000 * ROUTINE USES THE MODULE'S BASE REGISTER TO DETERMINE THE * 13100000 * BEGINNING OF THE MODULE. DETAILS ARE SIMILAR TO THE WAIT * 13200000 * FACILITY. * 13300000 * * 13400000 * A DUMMY DCB IS INDICATED BY A MODULE ID OF X'00'. THIS WILL * 13500000 * RESULT IN THE DCB NEVER BEING ACTIVE, AS NO MODULE HAS AN ID OF * 13600000 * X'00'. * 13700000 * * 13800000 * IF THE RESIDENT ROUTINE IS ENTERED FOR AN XCTL, THE OPTIONAL * 13900000 * TRACE ROUTINE IS IN CORE, AND TRACE IS REQUESTED FOR THE DCB * 14000000 * ENTERING THE RESIDENT ROUTINE, THE TRACE ROUTINE IS CALLED BY * 14100000 * THE RESIDENT ROUTINE VIA A BALR. THE TRACE ROUTINE RETURNS * 14200000 * CONTROL TO THE RESIDENT ROUTINE AT THE LINK ADDRESS AFTER * 14300000 * TRACING REGISTER AND STORAGE CONTENTS. * 14400000 * * 14500000 * ENTRY POINTS - * 14600000 * * 14700000 * ENTRY TO THIS MODULE IS MADE BY A DIRECT BRANCH FROM ANY MODULE * 14800000 * IN THE COMPONENT. THERE ARE THREE ENTRY POINTS-- * 14900000 * IFG019RA - ENTRY FOR WAIT FACILITY * 15000000 * IFG019RA+4 - ENTRY FOR XCTL FACILITY * 15100000 * IFG019RA+8 - ENTRY FOR DCB SYNCHRONIZATION FACILITY * 15200000 * * 15300000 * INPUT - * 15400000 * REGISTERS - * 15500000 * 0 - SAVED BY RESIDENT ROUTINE IN WORK AREA * 15600000 * 1 - SAVED BY RESIDENT ROUTINE IN WORK AREA * 15700000 * 3 - BASE REGISTER OF CALLING MODULE * 15800000 * 4 - ADDRESS OF DCB'S WORK AREA * 15900000 * 6 - WHERE-TO-GO TABLE ADDRESS * 16000000 * 9 - SAVED BY RESIDENT ROUTINE IN WORK AREA * 16100000 * 10 - SAVED BY RESIDENT ROUTINE IN WORK AREA * 16200000 * 11 - SAVED BY RESIDENT ROUTINE IN WORK AREA * 16300000 * 12 - SAVED BY RESIDENT ROUTINE IN WORK AREA * 16400000 * 13 - SAVED BY RESIDENT ROUTINE IN WORK AREA * 16500000 * 14 - RETURN ADDRESS TO CALLING MODULE FOR WAIT FACILITY AND * 16600000 * DCB SYNCHRONIZATION FACILITY (MAY BE A BRANCH TABLE * 16700000 * OFFSET FOR THE NEXT MODULE WHEN XCTLING). SAVED BY * 16800000 * RESIDENT ROUTINE IN WORK AREA. * 16900000 * * 17000000 * WHERE-TO-GO TABLE BASIC SECTION - * 17100000 * + 0 - EIGHT BYTE CURRENT MODULE NAME * 17200000 * + 6 - TWO BYTE CURRENT MODULE ID * 17300000 * +16 - FULLWORD WITH RESIDENT ROUTINE WORK AREA ADDRESS * 17400000 * IN LOW ORDER THREE BYTES * 17500000 * +31 - (WTGPATHS+1) TRACE ROUTINE INDICATOR * 17600000 * * 17700000 * WHERE-TO-GO TABLE DCB ENTRY - * 17800000 * + 0 - TWO BYTE MODULE ID * 17900000 * + 2 - THREE BYTE MODULE TTR * 18000000 * + 5 - DCB WORK AREA ADDRESS * 18100000 * * 18200000 * WORK AREA - * 18300000 * JFCBMASK+6 - TRACE ROUTINE DCB INDICATOR * 18400000 * DXREG9 - REGISTER SAVE AREA (REGISTER 9) * 18500000 * DXREGA - REGISTER SAVE AREA (REGISTER 10) * 18600000 * DXREGB - REGISTER SAVE AREA (REGISTER 11) * 18700000 * DXREGC - REGISTER SAVE AREA (REGISTER 12) * 18800000 * DXREGD - REGISTER SAVE AREA (REGISTER 13) * 18900000 * DXREGE - REGISTER SAVE AREA (REGISTER 14) * 19000000 * DXREG0 - REGISTER SAVE AREA (REGISTER 0) * 19100000 * DXREG1 - REGISTER SAVE AREA (REGISTER 1) * 19200000 * DXRESIND - * 19300000 * X'80' - WAIT PENDING BIT * 19400000 * X'40' - PSUEDO-WAIT BIT * 19500000 * DXECB - ECB * 19600000 * * 19700000 * RESIDENT ROUTINE WORK AREA * 19800000 * - 8 - PREFIX FOR OPTIONAL TRACE FUNCTION, ADDRESS OF * 19900000 * OPTIONAL TRACE ROUTINE * 20000000 * + 0 - FULLWORD WITH PARAMETER LIST ADDRESS * 20100000 * + 4 - MULTIPLE WAIT ECBLIST * 20200000 * * 20300000 * OUTPUT - * 20400000 * * 20500000 * REGISTERS - * 20600000 * 0 - CONTENTS OF DXREG0 * 20700000 * 1 - CONTENTS OF DXREG1 * 20800000 * 2 - DCB ADDRESS (FROM OPEN/CLOSE PARAMETER LIST) * 20900000 * 4 - DCB WORK AREA ADDRESS (FROM WTG TABLE DCB ENTRY) * 21000000 * 7 - ADDRESS OF CURRENT PARAMETER LIST ENTRY * 21100000 * 8 - ADDRESS OF CURRENT WTG DCB ENTRY * 21200000 * 9 - (ADDRESS OF OPTIONAL TRACE FUNCTION PREFIX TO THE * 21300000 * RESIDENT ROUTINE WORK AREA WHEN CALLING THE OPTIONAL * 21400000 * TRACE ROUTINE.) * 21500000 * 9 - CONTENTS OF DXREG9 * 21600000 * 10 - CONTENTS OF DXREGA * 21700000 * 11 - CONTENTS OF DXREGB * 21800000 * 12 - CONTENTS OF DXREGC * 21900000 * 13 - CONTENTS OF DXREGD * 22000000 * 14 - CONTENTS OF DXREGE * 22100000 * * 22200000 * WHERE-TO-GO TABLE BASIC SECTION - * 22300000 * + 0 - EIGHT BYTE MODULE NAME * 22400000 * +14 - THREE BYTE TTR * 22500000 * * 22600000 * WORK AREA - * 22700000 * DXREG9 - REGISTER SAVE AREA (REGISTER 9) * 22800000 * DXREGA - REGISTER SAVE AREA (REGISTER 10) * 22900000 * DXREGB - REGISTER SAVE AREA (REGISTER 11) * 23000000 * DXREGC - REGISTER SAVE AREA (REGISTER 12) * 23100000 * DXREGD - REGISTER SAVE AREA (REGISTER 13) * 23200000 * DXREGE - REGISTER SAVE AREA (REGISTER 14) * 23300000 * DXREG0 - REGISTER SAVE AREA (REGISTER 0) * 23400000 * DXREG1 - REGISTER SAVE AREA (REGISTER 1) * 23500000 * DXRESIND - * 23600000 * X'80' - WAIT-PENDING BIT * 23700000 * X'40' - PSEUDO-WAIT BIT * 23800000 * * 23900000 * EXTERNAL REFERENCES - * 24000000 * THE OPTIONAL TRACE ROUTINE IS CALLED ON XCTL, WHEN REQUESTED. * 24100000 * CONTROL IS RETURNED TO THIS FUNCTION AT THE FOLLOWING * 24200000 * INSTRUCTION. * 24300000 * * 24400000 * EXITS, NORMAL - * 24500000 * TO CALLING MODULE - AT BASE REGISTER ADDRESS (REGISTER 3) * 24600000 * - AT RETURN REGISTER ADDRESS (REGISTER 14) * 24700000 * TO NEXT MODULE IN COMPONENT DETERMINED BY WTG TABLE ENTRY * 24800000 * CONTENTS (VIA XCTL) * 24900000 * * 25000000 * EXITS, ERROR - NONE * 25100000 * * 25200000 * TABLES/WORKAREAS - * 25300000 * THE FORMAT AND CONTENTS OF THE WORKAREA USED ARE DESCRIBED BY * 25400000 * THE DSECT AT THE END OF THE LISTING. * 25500000 * * 25600000 * THE WHERE-TO-GO TABLE IS DESCRIBED BY THE OPEN/CLOSE/EOV PLM. * 25700000 * * 25800000 * THE RESIDENT ROUTINE WORK AREA CONSISTS OF A FULLWORD * 25900000 * CONTAINING THE OPEN/CLOSE PARAMETER LIST ADDRESS FOLLOWED BY * 26000000 * A NORMAL ECBLIST FOR MULTIPLE WAIT, WITH FOUR BYTES FOR EACH * 26100000 * DCB BEING PROCESSED IN PARALLEL. IF THE OPTIONAL TRACE FUNCTION * 26200000 * IS SPECIFIED, THE FIRST WORD OF AN EIGHT BYTE PREFIX TO THE * 26300000 * RESIDENT ROUTINE WORK AREA CONTAINS THE TRACE ROUTINE ADDRESS. * 26400000 * * 26500000 * CHARACTER CODE DEPENDENCY - * 26600000 * REFER TO THE PRECEEDING MODULE PROLOG. * 26700000 * * 26800000 * ATTRIBUTES - * 26900000 * REFER TO THE PRECEDING MODULE PROLOG. * 27000000 * * 27100000 *********************************************************************** 27200000 EJECT 27300000 IECEQU 27400000 *********************************************************************** 27500000 * * 27600000 * ENTRY TO RESIDENT ROUTINE * 27700000 * * 27800000 *********************************************************************** 27900000 USING *,RES ADDRESS OF THIS MODULE 28000000 USING FORCORE,RCORE WORK AREA ADDRESS 28100000 USING WTG,RWTG ADDRESS OF WTG TABLE 28200000 USING WTGENTRY,RWTGC WTG TABLE ENTRY ADDR 28300000 RES00100 B RES00500 ENTRY FOR WAIT 28400000 RES00200 B RES01900 ENTRY FOR XCTL 28500000 RES00300 EQU * ENTRY FOR EXITING RESIDENT 28600000 * ROUTINE CONTROL OF LOOPING 28700000 *********************************************************************** 28800000 * * 28900000 * WAIT AND PSEUDO WAIT HANDLING SECTION OF RESIDENT ROUTINE * 29000000 * * 29100000 * THIS SECTION RECIEVES CONTROL FROM THE CALLING MODULE WHEN THE * 29200000 * CALLING MODULE REQUESTS A WAIT OR PSEUDO-WAIT FOR A PARTICULAR DCB * 29300000 * AND FROM THE XCTL SECTION OF THE RESIDENT ROUTINE WHEN THERE REMAINS* 29400000 * ONE OR MORE ACTIVE DCB'S IN THE CALLING MODULE SO THAT AN XCTL MAY * 29500000 * NOT BE TAKEN. * 29600000 * * 29700000 * THE WAIT-PENDING BIT OR THE PSEUDO-WAIT BIT IS SET AS APPROPRIATE. * 29800000 * ALL ACTIVE DCB'S ARE SCANNED, SEARCHING FOR A DCB WITH NEITHER A * 29900000 * WAIT-PENDING NOR A PSEUDO-WAIT WHILE SIMULTANEOUSLY BUILDING AN * 30000000 * ECBLIST FOR DCB'S WITH A WAIT PENDING. UPON ENCOUNTERING AN ACTIVE * 30100000 * DCB WITH NEITHER A WAIT PENDING OR A PSEUDO-WAIT, OR A DCB WITH A * 30200000 * WAIT PENDING THAT IS ALREADY POSTED, CONTROL IS RETURNED TO THE * 30300000 * CALLING MODULE FOR THAT DCB. OTHERWISE, IF THERE ARE ANY DCB'S * 30400000 * WITH A WAIT PENDING, A MULTIPLE WAIT IS ISSUED ON THE ECBLIST, * 30500000 * THE POSTED DCB IS FOUND ON RETURN FROM WAIT, AND A RETURN IS TAKEN * 30600000 * TO THE CALLING MODULE. IF THERE ARE NO WAITS PENDING, ALL ACTIVE * 30700000 * DCB'S MUST HAVE PSEUDO-WAITS SO THE PSEUDO-WAIT BITS FOR ALL THE * 30800000 * DCB'S ARE RESET AND A RETURN IS TAKEN TO THE CALLING MODULE FOR * 30900000 * THE FIRST ACTIVE DCB. * 31000000 * * 31100000 *********************************************************************** 31200000 * 31300000 * ENTRY FOR EXITING RESIDENT ROUTINE CONTROL 31400000 * 31500000 RES00400 EQU * 31600000 MVI DXRESIND,PSEUDOWT SET PSEUDO-WAIT (SYNCH) BIT 31700000 B RES02000 GO PROCESS AS IF THIS WAS AN 31800000 * XCTL REQUEST SO THAT THE TRACE 31900000 * RTN MAY BE CALLED. THE XCTL 32000000 * ENTRY WILL FIND AN ACTIVE DCB 32100000 * SO IT WILL GO TO THE ENTRY 32200000 * FOR WAIT (RES00500). 32300000 * ENTRY FOR WAIT 32400000 * 32500000 RES00500 EQU * 32600000 MVI DXRESIND,WAITBIT SET WAIT PENDING BIT 32700000 BAL R7,RES03000 GO SAVE REGS 32800000 BAL RET,RES03100 GO INITIALIZE 32900000 * SCAN THE DCB'S FOR WAIT-PENDING AND PSEUDO-WAIT CONDITION TO 33000000 * DETERMINE WHETHER A DCB MAY BE PROCESSED WITHOUT WAITING. IF YES, 33100000 * SWITCH DCB'S AND RETURN. IF NOT, BUILD ECBLIST AND ISSUE MULTIPLE 33200000 * WAIT. IF NO DCB MAY BE STARTED AND NONE HAVE A WAIT PENDING, ALL 33300000 * DCB'S MUST HAVE A PSEUDO-WAIT, IN WHICH CASE GO RESET PSEUDO-WAIT 33400000 * BITS PREPATORY TO RETURNING TO THE CALLING MODULE 33500000 * 33600000 RES00600 EQU * 33700000 RES00700 CLC WTGMODID,WTGIDTTR IS THIS DCB ACTIVE 33800000 * (MODULE ID'S EQUAL) 33900000 BNE RES00800 NO, GO CHECK FOR LAST ENTRY 34000000 TM DXRESIND,WAITBIT YES, IS A WAIT PENDING 34100000 BO RES01000 YES, GO SEE IF POSTED 34200000 TM DXRESIND,PSEUDOWT NO, IS IT A PSEUDO-WAIT 34300000 BNO RES01200 NO, GO RETURN TO BEGINNING OF 34400000 * CALLING MODULE 34500000 RES00800 EQU * 34600000 TM PLISTOPT(RPARC),LASTNTRY YES, IS THIS LAST PARAMETER 34700000 * LIST ENTRY 34800000 BNO RES01100 NO, GO INCREMENT AND LOOP 34900000 C RTIOT,WTGECBAD YES, HAS ECBLIST PTR BEEN 35000000 * INCREMENTED (IE HAVE THERE 35100000 * BEEN ANY WAIT'S PENDING WITH 35200000 * CORRESPONDING ENTRIES IN THE 35300000 * ECBLIST) 35400000 BE RES01500 NO, MUST HAVE ALL PSEUDO-WAITS, 35500000 * GO INITIALIZE AND RESET ALL 35600000 * PSEUDO-WAIT BITS 35700000 RES00900 EQU * 35800000 OI 0(RTIOT),LASTNTRY YES, HAVE WAIT'S PENDING AND 35900000 * NO DCB'S TO PROCESS, INDICATE 36000000 * END OF ECBLIST 36100000 BAL RET,RES03100 INITIALIZE AND RESET ECBLIST 36200000 * ADDRESS 36300000 WAIT 1,ECBLIST=ECBLIST(RTIOT) MULTIPLE WAIT ON ANY ECB IN 36400000 * ECBLIST 36500000 B RES00600 GO FIND THE DCB WITH A POSTED 36600000 * ECB 36700000 RES01000 EQU * 36800000 TM DXECB,ECBPOST IS ECB POSTED ALREADY 36900000 BO RES01300 YES, GO RETURN TO CALLING 37000000 * MODULE 37100000 LA RTIOT,K4(,RTIOT) NO, INCREMENT TO NEXT ECBLIST 37200000 * ENTRY 37300000 LA RUCB,DXECB GET ECB ADDRESS FOR THIS DCB 37400000 ST RUCB,0(,RTIOT) ADD ECB ADDRESS TO ECBLIST 37500000 TM PLISTOPT(RPARC),LASTNTRY IS THIS LAST PARAMETER LIST 37600000 * ENTRY 37700000 BO RES00900 YES, GO WAIT ON ECBLIST 37800000 * NO, INCREMENT AND LOOP 37900000 RES01100 EQU * 38000000 BAL RET,RES03200 INCREMENT TO NEXT DCB 38100000 B RES00600 LOOP TO CHECK NEXT DCB 38200000 * 38300000 * RETURN TO START OF CALLING MODULE SINCE THERE WAS NO WAIT PENDING 38400000 * OR PSEUDO-WAIT FOR THIS DCB. 38500000 * 38600000 RES01200 EQU * 38700000 L RDCB,0(,RPARC) GET DCB ADDRESS FROM PARAMETER 38800000 * LIST ENTRY 38900000 LM RTIOT,RET,DXREG9 RESTORE REGISTERS 9 THROUGH 14 39000000 LM R0,R1,DXREG0 RESTORE REGISTERS 0 AND 1 39100000 BR RBASE RETURN TO START OF CALLING 39200000 * MODULE VIA CALLING MODULE'S 39300000 * BASE REGISTER 39400000 * 39500000 * RESET WAIT PENDING BIT 39600000 * 39700000 RES01300 EQU * 39800000 NI DXRESIND,X'FF'-WAITBIT RESET WAIT PENDING BIT 39900000 * 40000000 * RETURN TO CALLING MODULE VIA CALLING MODULE'S LINK REGISTER 40100000 * 40200000 RES01400 EQU * 40300000 L RDCB,0(,RPARC) GET DCB ADDRESS FROM PARAMETER 40400000 * LIST ENTRY 40500000 LM RTIOT,RET,DXREG9 RESTORE REGISTERS 9 THROUGH 14 40600000 LM R0,R1,DXREG0 RESTORE REGISTERS 0 AND 1 40700000 BR RET RETURN TO CALLING MODULE VIA 40800000 * CALLING MODULE'S LINK REGISTER 40900000 * 41000000 * RESET ALL PSEUDO-WAIT BITS AND FIND THE FIRST ACTIVE DCB IN THE 41100000 * PARAMETER LIST FOR THE RETURN. 41200000 * 41300000 RES01500 EQU * 41400000 BAL RET,RES03100 INITIALIZE 41500000 RES01600 EQU * 41600000 EX 0,RES00700 IS THIS DCB ACTIVE 41700000 * (MODULE ID'S EQUAL) 41800000 BNE RES01700 NO, GO INCREMENT AND LOOP 41900000 TM DXRESIND,PSEUDOWT YES, IS PSEUDO-WAIT BIT ON 42000000 BNO RES01400 NO, GO RETURN VIA LINK REGISTER 42100000 NI DXRESIND,X'FF'-PSEUDOWT YES, RESET PSEUDO-WAIT BIT 42200000 RES01700 TM PLISTOPT(RPARC),LASTNTRY IS THIS LAST PARAMETER LIST 42300000 * ENTRY 42400000 BNO RES01800 NO, GO INCREMENT AND LOOP 42500000 B RES01500 YES, INITIALIZE TO START OF 42600000 * PARAMETER LIST AND LOOP 42700000 RES01800 EQU * 42800000 BAL RET,RES03200 INCREMENT TO NEXT DCB 42900000 B RES01600 GO LOOP 43000000 *********************************************************************** 43100000 * * 43200000 * XCTL-HANDLING SECTION OF RESIDENT ROUTINE * 43300000 * * 43400000 * THIS SECTION OF CODE DETERMINES WHETHER THERE ARE ANY ACTIVE DCB'S * 43500000 * FOR THE CALLING MODULE. IF THERE IS, THE WAIT-HANDLING SECTION OF * 43600000 * THE RESIDENT ROUTINE TAKES OVER. IF THERE ARE NO ACTIVE DCB'S, * 43700000 * THE LOWEST NEXT MODULE ID IS FOUND, A DCB THAT IS ACTIVE IN THAT * 43800000 * LOWEST NEXT MODULE IS FOUND, AND AN XCTL IS TAKEN. * 43900000 * * 44000000 *********************************************************************** 44100000 * 44200000 * ENTRY FOR XCTL 44300000 * 44400000 RES01900 EQU * 44500000 MVI DXRESIND,K0 ENSURE WAIT, PSUEDO-WAIT OFF 44600000 RES02000 EQU * 44700000 BAL R7,RES03000 GO SAVE REGS 44800000 TM WTGPATHS+1,WTGTRACE IS TRACE RTN SPECIFIED AND 44900000 * IN CORE 45000000 BNO RES02100 NO, SKIP TRACE 45100000 TM JFCBMASK+6,JFCTRACE IS TRACE REQUESTED FOR THIS DCB 45200000 BNO RES02100 NO, SKIP TRACE 45300000 L RTIOT,WTGECBAD YES, GET RESIDENT ROUTINE 45400000 * WORK AREA ADDR 45500000 SH RTIOT,RRWAPRFX BACK UP TO TRACE RTN PTR IN 45600000 * PREFIX TO RESIDENT ROUTINE 45700000 * WORK AREA 45800000 L RF,0(,RTIOT) TRACE RTN PTR 45900000 BALR RET,RF GO TO TRACE RTN TO TRACE 46000000 * THIS DCB AND RETURN. 46100000 * 46200000 * RETURN FROM THE OPTIONAL TRACE ROUTINE 46300000 * 46400000 RES02100 EQU * 46500000 BAL RET,RES03100 GO INITIALIZE 46600000 * 46700000 * SCAN DCB'S FOR A DCB ACTIVE IN THIS MODULE. IF ONE IS FOUND, LET 46800000 * WAIT SECTION HANDLE IT. 46900000 * 47000000 RES02200 EQU * 47100000 EX 0,RES00700 IS THIS DCB ACTIVE 47200000 * (MODULE ID'S EQUAL) 47300000 BE RES00600 YES, LET WAIT SECTION HANDLE IT 47400000 TM PLISTOPT(RPARC),LASTNTRY NO, IS THIS LAST PARAMETER 47500000 * LIST ENTRY 47600000 BO RES02300 YES, NONE ACTIVE, GO INITIALIZE 47700000 BAL RET,RES03200 NO, INCREMENT TO NEXT DCB 47800000 B RES02200 GO LOOP TO CHECK NEXT DCB 47900000 RES02300 EQU * 48000000 BAL RET,RES03100 INITIALIZE 48100000 HIGHID EQU X'FF' HIGH ID (GRATER THAN ALL CC 48200000 * ALPHANUMERIC CHARACTERS) CC 48300000 MVI WTGMODID,HIGHID SET HIGH ID IN WTG TABLE CC 48400000 * BASIC SECTION SO PRESENT CC 48500000 * MODULE IN BASIC SECTION WILL CC 48600000 * NOT BE LOWEST ID. CC 48700000 * 48800000 * SCAN DCB'S TO FIND LOWEST NEXT MODULE ID. WHEN FINISHED (LAST 48900000 * PARAMETER LIST ENTRY), GO EXIT VIA XCTL. 49000000 * 49100000 * 49200000 * COMPARE NEXT MODULE ID IN WTG ENTRY WITH THAT IN WTG BASIC SECTION. 49300000 * IF ID IN ENTRY IS SMALLER, GO MOVE IT INTO BASIC SECTION. 49400000 * 49500000 RES02400 EQU * 49600000 EX 0,RES00700 IS ID IN BASIC SECTION LESS CC 49700000 * THAN ID IN ENTRY CC 49800000 BL RES02500 YES, GO LOOP CC 49900000 CLI WTGIDTTR,CHAR00 IS MOD ID BINARY ZEROS IN CC 50000000 * ENTRY (IGNORED DCB) CC 50100000 BE RES02500 YES, DO NOT MOVE MOD ID CC 50200000 * TO BASIC SECTION OF WTG CC 50300000 * TABLE CC 50400000 * 50500000 * MOVE NEXT ID AND TTR FROM WTG TABLE ENTRY TO WTG TABLE BASIC SECTION. 50600000 * 50700000 MVC WTGMODID,WTGIDTTR MOVE MODULE ID FROM WTG 50800000 * ENTRY TO WTG BASIC SECTION 50900000 MVC WTGTTR,WTGIDTTR+L'WTGMODID MOVE MODULE TTR FROM WTG 51000000 * ENTRY TO WTG BASIC SECTION 51100000 RES02500 EQU * 51200000 TM PLISTOPT(RPARC),LASTNTRY IS THIS LAST PARAMETER LIST 51300000 * ENTRY 51400000 BO RES02600 YES, GO EXIT VIA XCTL 51500000 * NO, COMPARE MODULE ID'S 51600000 BAL RET,RES03200 GO INCREMENT TO NEXT DCB 51700000 B RES02400 GO LOOP 51800000 * 51900000 * FIND THE FIRST ACTIVE DCB AND EXIT VIA XCTL 52000000 * 52100000 RES02600 EQU * 52200000 BAL RET,RES03100 INITIALIZE 52300000 RES02700 EQU * 52400000 EX 0,RES00700 IS THIS DCB ACTIVE 52500000 BE RES02800 YES, GO XCTL 52600000 BAL RET,RES03200 NO, GO INCREMENT TO NEXT DCB 52700000 B RES02700 GO LOOP TO CHECK NEXT DCB 52800000 RES02800 EQU * 52900000 L RDCB,0(,RPARC) GET DCB ADDRESS FROM PARAMETER 53000000 * LIST ENTRY 53100000 *********************************************************************** 53106021 * * 53112021 * THE FOLLOWING INSTRUCTION IS A MODIFIABLE NOP BRANCH TO A WTO * 53118021 * MODULE TRACE ROUTINE RESIDING IN THE MAINTENANCE SPACE OF THIS * 53124021 * MODULE. * 53130021 * * 53136021 * CHANGE THIS INSTRUCTION TO AN UNCONDITIONAL BRANCH X'47F0' TO * 53142021 * ENABLE THE MODULE TRACE. THE ADDRESS OF THIS MODULE MAY BE * 53148021 * FOUND IN THE CVT WORD CVTDMSVR AT CVT OFFSET X'110'. * 53154021 * * 53160021 * FURTHER DESCRIPTION PRECEDES THE WTO MODULE TRACE ROUTINE BELOW. * 53166021 * * 53172021 *********************************************************************** 53178021 RESTRACE NOP RES03300 GO TO MODULE TRACE RTN S21940 53184021 RES02850 EQU * RETURN FROM MOD TRACE S21940 53190021 LM RTIOT,RET,DXREG9 RESTORE REGISTERS 9 THROUGH 14 53200000 LM R0,R1,DXREG0 RESTORE REGISTERS 0 AND 1 53300000 LA RF,DXXCTL ADDRESS OF SUPERVISOR 53400000 * USE AREA IN WORK AREA FOR 53500000 * THE SUPERVISOR PARAMATER LIST 53600000 * RWTG HAS ADDRESS OF SIMULATED 53700000 * BLDL LIST IN BASIC SECTION OF 53800000 * WTG TABLE 53900000 CLI WTGTTR+2,K0 IS TTR ZERO (IE IS R ZERO) 54000000 BZ RES02900 YES, XCTL BY NAME 54100000 AIF ('&LIB' EQ 'LIB1').LIB1BW TEST FOR LIB1(OS) 54105000 * 54110000 * CALCULATE BYTE LENGTH OF MODULE FROM DWD LENGTH 54115000 * GIVEN IN REGISTER 14 (RET) 54120000 * 54125000 SRL RET,K24 SHIFT DWD LENGTH AND 54130000 * CLEAR HI ORDER BYTES 54135000 SLL RET,K3 MULTIPLY Y EIGHT 54140000 C RET,ONEK IS MODULE UNDER 1K 54145000 BH TRULEN NO 54150000 L RET,ONEK YES, MAKE IT ONE K 54155000 TRULEN SLL RET,K8 MOVE LEFT ONE BYTE 54160000 ST RET,WTGMODSZ PUT LENGTH AND 54165000 MVC WTGTXTLN,WTGMODSZ+K1 SIZE IN WTG TABLE 54170000 L RET,DXREGE RESTORE R14 AGAIN 54175000 LA RET,K0(RET) CLEAR HIGH ORDER LENGTH BYTE 54180000 * 54185000 ST RET,DXREGE SAVE REGISTER 14 54187000 .LIB1BW ANOP 54190000 XCTL DE=(RWTG),SF=(E,(15)) 54200000 RES02900 EQU * 54300000 XCTL EPLOC=(RWTG),SF=(E,(15)) 54400000 *********************************************************************** 54500000 * * 54600000 * ROUTINE TO SAVE REGISTERS * 54700000 * * 54800000 *********************************************************************** 54900000 * 55000000 RES03000 EQU * 55100000 STM RTIOT,RET,DXREG9 SAVE REGISTERS 9 THROUGH 14 55200000 * IN THE WORK AREA. 55300000 STM R0,R1,DXREG0 SAVE REGISTERS 0 AND 1 IN THE 55400000 * WORK AREA. 55500000 BR R7 RETURN 55600000 *********************************************************************** 55700000 * * 55800000 * ROUTINE TO INITIALIZE WTG TABLE ENTRY PTR, PARAMETER LIST ENTRY * 55900000 * PTR, RESIDENT ROUTINE WORK AREA ADDRESS, AND WORK AREA ADDRESS * 56000000 * * 56100000 *********************************************************************** 56200000 * 56300000 RES03100 EQU * 56400000 L RTIOT,WTGECBAD ECBLIST PREFIX ADDR FROM WTG 56500000 L RPARC,ECBPARM(,RTIOT) PARAMETER LIST ADDRESS FROM 56600000 * ECBLIST PREFIX 56700000 DROP RWTGC DROP TO LOAD BASE REG 56800000 LA RWTGC,WTGENTRY PTR TO FIRST WTG ENTRY 56900000 USING WTGENTRY,RWTGC WTG TABLE ENTRY ADDR 57000000 L RCORE,WTGCORE-1 PTR TO WORK AREA FROM THIS 57100000 * DCB'S WTG ENTRY 57200000 BR RET RETURN 57300000 *********************************************************************** 57400000 * * 57500000 * ROUTINE TO INCREMENT TO THE NEXT DCB THE PARAMETER LIST ENTRY AND * 57600000 * THE WTG TABLE ENTRY, AND GET THE WORK AREA ADDRESS OF THAT DCB. * 57700000 * * 57800000 *********************************************************************** 57900000 * 58000000 RES03200 EQU * 58100000 LA RPARC,K4(,RPARC) INCREMENT TO NEXT PARAMETER 58200000 * LIST ENTRY 58300000 LA RWTGC,L'WTGENTRY(,RWTGC) INCREMENT TO NEXT WTG TABLE 58400000 * ENTRY 58500000 L RCORE,WTGCORE-1 PTR TO WORK AREA FROM THIS 58600000 * DCB'S WTG ENTRY 58700000 BR RET RETURN 58800000 *********************************************************************** 58900000 * * 59000000 * CONSTANTS * 59100000 * * 59200000 *********************************************************************** 59300000 AIF ('&LIB' EQ 'LIB1').LIB1BX TEST FOR LIB1(OS) 59310000 * 59320000 DS 0F FULL WORD ALIGN 59330000 ONEK DC X'00000400' 1024 BYTES FOR LENGTH CALC 59340000 * 59350000 .LIB1BX ANOP 59360000 RRWAPRFX DC H'8' RESIDENT ROUTINE WORK AREA 59400000 * OPTIONAL TRACE FUNCTION 59500000 * PREFIX LENGTH 59600000 *********************************************************************** 59700000 * * 59800000 * MAINTENANCE SPACE * 59900000 * * 60000000 *********************************************************************** 60100000 * 60101021 *********************************************************************** 60102021 * * 60103021 * WTO MODULE TRACE ROUTINE RESIDING IN MAINTENANCE SPACE * 60104021 * * 60105021 * THIS ROUTINE ISSUES A WRITE TO OPERATOR OF THE NAME OF THE * 60106021 * MODULE THAT WILL BE XCTL'D TO NEXT. * 60107021 * * 60108021 * ONLY OPEN/CLOSE/EOV MODULES USING THIS RESIDENT ROUTINE (IFG019RA) * 60109021 * WILL HAVE THE NAME OF THE MODULE BEING XCTL'D TO TRACED. * 60110021 * INITIAL LOADS, ACCESS METHOD EXECUTORS, AND OPEN/CLOSE/ * 60111021 * EOV MODULES INTERFACING WITH OTHER FUNCTIONS, SUCH AS NSL * 60112021 * MODULES, ISSUE THEIR OWN XCTL. IN THESE CASES, THE NAME OF THE * 60113021 * MODULE XCTL'D TO WILL NOT APPEAR. * 60114021 * * 60115021 * THIS TRACE ROUTINE MAY BE ENABLED BY CHANGING THE NOP BRANCH * 60116021 * INSTRUCTION AT LABEL RESTRACE TO AN UNCONDITIONAL BRANCH * 60117021 * X'47F0'. THE ADDRESS OF THIS MODULE MAY BE FOUND IN THE CVT * 60118021 * WORD NAMED CVTDMSVR AT CVT OFFSET X'110'. * 60119021 * * 60120021 RESNOP EQU RESTRACE LOCATION OF NOP BRANCH S21940 60121021 * * 60122021 * THE EIGHT BYTE MESSAGE IS ROUTED TO THE CONSOLE (BIT 1, FIRST * 60123021 * BYTE OF ROUTE CODE) AND THE PROGRAMMER (BIT 2, SECOND BYTE OF * 60124021 * ROUTE CODE). THE ROUTING MAY BE CHANGED BY MODIFYING THE ROUTE * 60125021 * CODE. * 60126021 * * 60127021 * NOTE THAT THESE MESSAGES ARE ISSUED BY THIS ROUTINE * 60128021 * OPERATING IN A NON-REENTRANT MANNER. IF THE MESSAGE * 60129021 * BUFFER IS FILLED, AND TWO TASKS ARE CONCURRENTLY USING * 60130021 * THIS ROUTINE, SOME MESSAGES MAY BE OVERLAID. IN ANY EVENT, * 60131021 * THE SIMULTANEOUS TRACE OF MORE THAN ONE TASK WOULD TEND TO * 60132021 * GIVE A CONFUSING TRACE. * 60133021 * * 60134021 * IF SMF IS ACTIVE, EOV MAY TRANSFER CONTROL TO SEVERAL CLOSE * 60135021 * MODULES IN ORDER TO PROCESS SMF RECORDS. THIS RESULTS IN CLOSE * 60136021 * MODULE NAMES APPEARING BETWEEN EOV MODULE NAMES. IN ADDITION, * 60137021 * SINCE THE SMF FACILITY INVOKES TCLOSE, TCLOSE MODULE NAMES WILL * 60138021 * APPEAR BETWEEN THE CLOSE SMF-PROCESSING MODULE NAMES. * 60139021 * * 60140021 * AT THE TIME THIS MODULE TRACE ROUTINE GAINS CONTROL, REGISTER * 60141021 * CONTENTS ARE AS FOLLOWS-- * 60142021 * REG 2 - PTR TO DCB THAT WILL FIRST BE PROCESSED AFTER THE XCTL * 60143021 * REG 3 - BASE ADDRESS OF CURRENT MODULE IN CONTROL IN THE * 60144021 * TRANSIENT AREA * 60145021 * REG 4 - PTR TO DCB WORK AREA FOR DCB THAT WILL FIRST BE * 60146021 * PROCESSED (ADDR IN REGISTER 2) * 60147021 * REG 5 - BASE REGISTER FOR THIS MODULE * 60148021 * REG 6 - WHERE-TO-GO TABLE ADDRESS (FIRST EIGHT BYTES ARE * 60149021 * MODULE NAME * 60150021 * REG 7 - ADDRESS OF PARAMETER LIST ENTRY FOR NEXT DCB (ADDR * 60151021 * IN REGISTER 2) * 60152021 * REG 8 - ADDRESS OF WHERE-TO-GO TABLE ENTRY FOR NEXT DCB * 60153021 * * 60154021 * IF THIS ROUTINE IS MODIFIED TO PERFORM ADDITIONAL FUNCTION, * 60155021 * REGISTERS 0,1,3,9-15 MAY BE USED WITHOUT BEING SAVED OR * 60156021 * RESTORED. * 60157021 * * 60158021 *********************************************************************** 60159021 * 60160021 RES03300 EQU * ENTRY TO TRACE RTN S21940 60161021 MVC MODNAME,WTGMODNM MOVE NEXT MODULE'S NAME S21940 60162021 * TO WTO MESSAGE 60163021 WTO MF=(E,MESSAGE) ISSUE MESSAGE S21940 60164021 B RES02850 RETURN TO XCTL S21940 60165021 * 60166021 * MESSAGE 60167021 * 60168021 DS 0F S21940 60169021 MESSAGE DC H'12' MESSAGE LENGTH S21940 60170021 DC X'8000' MCS FLAGS S21940 60171021 MODNAME DC CL8'IFG019RA' MODULE NAME S21940 60172021 DC X'0100' DESCRIPTOR CODE S21940 60173021 DC X'40' ROUTE TO MASTER CONSOLE S21940 60174021 DC X'20' ROUTE TO PROGRAMMER S21940 60175021 * 60176021 AIF ('&LIB' EQ 'LIB1').LIB1RA1 60186000 PATCH9RA EQU IFG019RA+540-* NO. BYTES LEFT IN MODULE 60200000 .LIB1RA1 ANOP 60250000 AIF ('&LIB' NE 'LIB1').LIB1RA2 60260000 PATCH9RA EQU IFG019RA+504-* NO. BYTES LEFT IN MODULE SM4377 60270000 .LIB1RA2 ANOP 60280000 DC (PATCH9RA)X'00' REMAINDER OF MODULE IS 60300000 * ZEROED MAINTENANCE SPACE 60400000 *********************************************************************** 60500000 * * 60600000 * DESECTS * 60700000 * * 60800000 *********************************************************************** 60900000 IECDSECS MAIN,WTG,EXPAND=YES 61000000 END 61100000 ./ ADD SSI=21280200,NAME=IFG019TR,SOURCE=0 TITLE 'IFG019TR - OPEN/CLOSE/EOV OPTIONAL TRACE ROUTINE' 00600000 GBLC &LIB DEFINE GLOBAL CHAR VARIABLE 01200000 &LIB SETC 'LIB1' SET VALUE FOR &LIB 01800000 *********************************************************************** 02400000 * 03000000 * 03600000 * RELEASE 21 DELETIONS/CHANGES 04200000 *0000870000 M0037 04500021 * RELEASE 22 DELETIONS/CHANGES 04800000 * RELEASE 23 DELETIONS/CHANGES 05400000 * RELEASE 24 DELETIONS/CHANGES 06000000 * RELEASE 25 DELETIONS/CHANGES 06600000 * 07200000 * STATUS CHANGE LEVEL 000 07800000 * 08400000 * FUNCTION - 09000000 * THIS MODULE TRACES THE USER'S DCB AND THE OPEN/CLOSE/EOV 09600000 * WKAREA ON A MODULE BY MODULE BASIS THROUGHOUT MAINLINE 10200000 * OPEN/CLOSE/EOV. IT USES THE GTRACE MACRO TO CALL GTF 10800000 * TO PERFORM THE TRACE FUNCTION. UPON ENTRY, IT PICKS 11400000 * UP THE BUFFER POINTER FROM OFFSET -4 OF THE ECBLIST. 12000000 * IT MOVES THE DCB POINTED TO BY RDCB TO THE BUFFER AND 12600000 * ISSUES GTRACE. IT THEN TRACES THE OPEN/CLOSE/EOV WKAREA 13200000 * IN FOUR PARTS IN A SIMILAR MANNER. FINALLY IT TRACES 13800000 * THE WTG TABLE AND CURRENT ENTRY FROM REGS 6 AND 8 AND 14400000 * RETURNS TO THE RESIDENT ROUTINE. 15000000 * 15600000 * ENTRY POINTS - 16200000 * IFG019TR VIA BALR FROM IFG019RA 16800000 * 17400000 * INPUT - 18000000 * RDCB POINTS TO THE USER'S DCB 18600000 * RCORE POINTS TO THE OPEN/CLOSE/EOV WKAREA 19200000 * RWTG POINTS POINTS TO THE WTG TABLE 19800000 * RWTGC POINTS TO THE CURRENT ENTRY IN THE WTG TABLE 20400000 * RTIOT POINTS TO TRACE PARALIST 21000000 * 21600000 * OUTPUT - 22200000 * DCB, WORKAREA WTG TABLE BASE AND CURRENT ENTRY ARE TRACED VIA GTF 22800000 * 23400000 * EXTERNAL REFERENCES - N/A 24000000 * 24600000 * EXITS, NORMAL - 25200000 * RETURN VIA REG 14 TO CALLER 25800000 * 26400000 * EXITS, ERROR - N/A 27000000 * 27600000 * TABLES/WORK AREAS - 28200000 * REFER TO THE DSECTS AT THE END OF THE LISTING. 28800000 * 29400000 * ATTRIBUTES - 30000000 * REENTRANT, REFRESHABLE, READ-ONLY, ENABLED, PRIVELEGED 30600000 * 31200000 * CHARACTER CODE DEPENDENCY 31800000 * CLASS ONE CHARACTER CODE DEPENDENCY - THE EBCDIC 32400000 * CHARACTER CODE WAS USED FOR ASSEMBLY. THE MODULE MUST 33000000 * BE REASSEMBLED IF A DIFFERENT CHARACTER SET IS USED 33600000 * FOR EXECUTION. 34200000 * 34800000 * NOTES - N/A 35400000 * 36000000 *********************************************************************** 36600000 EJECT 37200000 IFG019TR CSECT 37800000 R0 EQU 0 WORK/PARAMETER REG 38400000 R1 EQU 1 WORK/PARAMETER REG 39000000 RDCB EQU 2 PTR TO DCB 39600000 RBASE EQU 3 BASE REG 40200000 RCORE EQU 4 PTR TO O/C/EOV WKAREA 40800000 RES EQU 5 PTR TO RESIDENT RTN 41400000 RWTG EQU 6 PTR TO WTG TABLE 42000000 RPARC EQU 7 PTR TO PARALIST CURRENT ENTRY 42600000 RWTGC EQU 8 PTR TO WTG TABLE CURRENT ENTRY 43200000 RTIOT EQU 9 PTR TO TIOT ENTRY 43800000 RUCB EQU 10 PTR TO UCB 44400000 RB EQU 11 WORK/PARAMETER REG 45000000 RC EQU 12 WORK/PARAMETER REG 45600000 RD EQU 13 WORK/PARAMETER REG 46200000 RET EQU 14 WORK/PARAMETER REG 46800000 RF EQU 15 WORK/PARAMETER REG 47400000 FOUR EQU 4 WORK VALUE 48000000 EIGHT EQU 8 WORK VALUE 48600000 ORG EQU 0 WORK VALUE 49200000 NINE EQU 9 WORK VALUE 49800000 ONE EQU 1 WORK VALUE 50400000 DCBLNG EQU 96 LNG OF DCB TRACED 51000000 WKAREA1 EQU 72 TRACE CODE FOR START OF WKAREA 51600000 WKAREA2 EQU 76 TRACE CODE FOR 2ND PART OF 52200000 * O/C/EOV WKAREA 52800000 WKAREA3 EQU 80 TRACE CODE FOR THIRD PART OF 53400000 * O/C/EOV WKAREA 54000000 WKAREA4 EQU 84 TRACE CODE FOR FOURTH PART OF 54600000 * O/C/EOV WKAREA 55200000 WTGCOD EQU X'60' TRACE CODE FOR WTG TABLE 55800000 DCBTCODE EQU 40 TRACE CODE FOR DCB 56400000 EQUAL EQU 8 BRANCH CONDITION 57000000 BALR RC,R0 USE R 12 AS BASE SO AS NOT TO 57600000 * DESTROY REG 3 58200000 USING *,RC 58800000 USING FORCORE,RCORE 59400000 USING WTG,RWTG 60000000 L R1,FOUR(RTIOT) PTR TO TRACE BUFFER 60600000 LA RF,DCBLNG+ONE LENGTH OF DCB TO BE TRACED 61200000 STH RF,ORG(R1) STORE IN TRACE PARALIST 61800000 MVI EIGHT(R1),DCBTCODE MOVE DCB CODE TO BUFFER 62400000 MVC NINE(DCBLNG,R1),ORG(RDCB) 63000000 * MOVE DCB TO TRACE BUFFER 63600000 BAL RD,PDF80010 TRACE DCB 64200000 LA RF,DXJBF-DXDSCB+ONE LNG OF 1ST PART OF WKAREA 64800000 * TO BE TRACED 65400000 STH RF,ORG(R1) STORE IN TRACE PARMLIST 66000000 MVI EIGHT(R1),WKAREA1 MOVE CODE TO BUFFER 66600000 MVC NINE(DXJBF-DXDSCB,R1),DXDSCB 67200000 * MOVE DSCB FROM WKAREA TO BUFFER 67800000 BAL RD,PDF80010 TRACE DSCB 68400000 LA RF,JFCBEND-DXJBF+ONE LNG OF JFCB 69000000 STH RF,ORG(R1) STORE IN BUFFER 69600000 MVI EIGHT(R1),WKAREA2 MOVE CODE TO BUFFER 70200000 MVC NINE(JFCBEND-DXJBF,R1),DXJBF 70800000 * MOVE JFCB TO BUFFER 71400000 BAL RD,PDF80010 TRACE JFCB 72000000 LA RF,DXCCW-DXECB+ONE LNG OF ECB, IOB, DEB 72600000 STH RF,ORG(R1) STORE IN BUFFER 73200000 MVI EIGHT(R1),WKAREA3 MOVE CODE TO WKAREA 73800000 MVC NINE(DXCCW-DXECB,R1),DXECB 74400000 * MOVE ECB, IOB, DEB TO BUFFER 75000000 BAL RD,PDF80010 TRACE ECB, IOB, DEB 75600000 LA RF,DXDCBLST+FOUR-DXCCW+ONE 76200000 * LNG OF CCWS AND EXTENDED W/A 76800000 STH RF,ORG(R1) STORE IN BUFFER 77400000 MVI EIGHT(R1),WKAREA4 MOVE CODE TO BUFFER 78000000 MVC NINE(DXDCBLST+FOUR-DXCCW,R1),DXCCW 78600000 * MOVE CCWS TO WKAREA 79200000 BAL RD,PDF80010 GO TRACE CCWS 79800000 LA RB,DXXAREA PTR TO EOV WTG TABLE 80400000 CR RWTG,RB ARE WE IN EOV 81000000 BCR EQUAL,RET IF YES, RETURN TO CALLER 81600000 * WTG TABLE FOR EOV IS INCLUDED 82200000 * IN THE EOV WKAREA 82800000 LA RF,WTGENTRY-WTG+EIGHT+ONE 83400000 * LENGHT OF WTG TABLE TRACE 84000000 STH RF,ORG(R1) STORE IN BUFFER 84600000 MVI EIGHT(R1),WTGCOD MOVE CODE OF WTGTBL TO BUFFER 85200000 MVC NINE(WTGENTRY-WTG,R1),WTG 85800000 * MOVE WTG TBL BASE TO BUFFER 86400000 MVC WTGENTRY-WTG+NINE(EIGHT,R1),ORG(RWTGC) M0037 87000021 * MOVE CURRENT ENTRY TO BUFFER 87600000 BAL RD,PDF80010 TRACE WTG TABLE 88200000 BR RET RETURN TO RESIDENT RTN 88800000 PDF80010 EQU * 89400000 GTRACE ID=4095,MF=(E,(1)) TRACE DATA IN BUFFER 90000000 BR RD RETURN TO CALLER 90600000 IECDSECS MAIN,WTG,EXPAND=YES 91200000 END 91800000 ./ ADD SSI=00011380,NAME=IFG0190P,SOURCE=0 COPY LCGASMSW SM5268 30000021 IECPDINI OPEN SM5268 30050021 END 60000021 ./ ADD SSI=00010330,NAME=IFG0190R,SOURCE=0 TITLE 'IFG0190R - DISPLAY DSNAME/SPACE FOR O/C/EOV - ALIASES*00200001 IFG0200R, IFG0550R' 00210001 COPY LCGASMSW 00250000 IFG0190R CSECT 00800000 *********************************************************************** 01000000 * * 01200000 AIF ('&LIB' EQ 'LIB1').LIB10R0 01250002 * * 01300002 * VS1 RELEASE 02 DELETIONS/CHANGES * 01350002 * * 01360002 *0000 XM0246 01370002 * * 01380002 .LIB10R0 ANOP 01390002 * * 01400000 * RELEASE 25 DELETIONS/CHANGES * 01600000 * RELEASE 24 DELETIONS/CHANGES * 01800000 * RELEASE 23 DELETIONS/CHANGES * 02000000 * RELEASE 22 DELETIONS/CHANGES * 02200000 * RELEASE 21 DELETIONS/CHANGES * 02400000 *0000044000,150000,190000 A43226 02500021 *0000 A47334 02550021 *0000 SA47795 02560021 *0000412000,508000,520000-528500,548000,570500-584000,678000, SA58669 02570001 *0000728000-732000,756000,760000,768000-784000,812000-826000 SA58669 02572001 * * 02600000 * STATUS CHANGE LEVEL 000 * 02800000 * * 03000000 * FUNCTION - * 03200000 * THIS MODULE CONTAINS THE FUNCTION(S) OR PART(S) OF FUNCTION(S)-- * 03400000 * DISPLAY DSNAME WTO FUNCTION. * 03600000 * REFER TO THE FOLLOWING 'FUNCTION PROLOG(S)' FOR DETAILS. * 03800000 * * 04000000 * ENTRY POINTS - * 04200000 * IFG0190R - ALIAS ENTRY POINTS IFG0200R AND IFG0550R. * 04400021 * ENTERED VIA THE RESIDENT ROUTINE XCTL FROM ANY MODULE REQUIRING * 04600000 * THE DATA SET NAME OR SPACE INFORMATION ON A MESSAGE. * 04800000 * * 05000000 * INPUT - * 05200000 * REFER TO THE FOLLOWING 'FUNCTION PROLOG(S)'. * 05400000 * * 05600000 * OUTPUT - * 05800000 * REFER TO THE FOLLOWING 'FUNCTION PROLOG(S)'. * 06000000 * * 06200000 * EXTERNAL REFERENCES - * 06400000 * IFG019RA - OPEN/CLOSE/EOV RESIDENT ROUTINE FOR XCTL AND * 06600000 * WAIT. * 06800000 * REFER TO THE FOLLOWING 'FUNCTION PROLOG(S)'. * 07000000 * * 07200000 * EXITS, NORMAL - * 07400000 * EXIT TO THE MODULE SPECIFIED BY THE CALLING MODULE. * 07600000 * REFER TO THE FOLLOWING 'FUNCTION PROLOG(S)'. * 07800000 * * 08000000 * EXITS, ERROR - * 08200000 * NONE. * 08400000 * * 08600000 * TABLES/WORK AREAS - * 08800000 * REFER TO THE FOLLOWING 'FUNCTION PROLOG(S)'. * 09000000 * * 09200000 * ATTRIBUTES - * 09400000 * REENTRANT, REFRESHABLE, READ-ONLY, ENABLED, PRIVILEGED * 09600000 * * 09800000 * CHARACTER CODE DEPENDENCY - * 10000000 * CLASS ONE CHARACTER CODE DEPENDENCY - THE EBCDIC CHARACTER CODE * 10200000 * WAS USED FOR ASSEMBLY. THE MODULE MUST BE REASSEMBLED IF A * 10400000 * DIFFERENT CHARACTER SET IS USED FOR EXECUTION. * 10600000 * * 10800000 * NOTES - * 11000000 * REFER TO THE FOLLOWING 'FUNCTION PROLOG(S)'. * 11200000 * * 11400000 *********************************************************************** 11600000 EJECT 11800000 *********************************************************************** 12000000 * * 12200000 * FUNCTION PROLOG * 12400000 * * 12600000 *********************************************************************** 12800000 * * 13000000 * FUNCTION NAME - * 13200000 * DISPLAY DSNAME WTO FUNCTION. * 13400000 * * 13600000 * (STATUS) - * 13800000 * NOT APPLICABLE * 14000000 * * 14200000 * FUNCTION - * 14400000 * COMPLETE THE MESSAGE TEXT BY INSERTING THE SPACE INFORMATION * 14600000 * AND/OR THE DATA SET NAME AS REQUIRED FOR THE MESSAGE. * 14800000 * ISSUE MESSAGES AS FOLLOWS-- * 15000021 * ONE WTO FOR ONE LINE MESSAGES. * 15200000 * TWO WTO'S FOR MESSAGES THAT CANNOT BE CONTAINED ON ONE LINE. * 15400000 * ONE WTOR FOR MESSAGES THAT REQUIRE A REPLY. * 15600000 * ONE WTO FOLLOWED BY ONE WTOR FOR MESSAGES THAT REQUIRE * 15800000 * A REPLY, BUT CANNOT BE CONTAINED ON ONE LINE. * 16000000 * * 16200000 * ENTRY POINTS - * 16400000 * ENTERED VIA THE RESIDENT ROUTINE XCTL FROM THE OPEN/CLOSE/EOV * 16600000 * FUNCTIONS THAT REQUIRE SPACE INFORMATION AND/OR THE DATA SET * 16800000 * NAME ON A MESSAGE. * 17000000 * REFER TO THE PRECEEDING MODULE PROLOG. * 17200000 * * 17400000 * INPUT - * 17600000 * REGISTERS-- * 17800000 * R1 - A POINTER TO THE LAST CHARACTER OF THE MESSAGE. * 18000000 * HIGH ORDER BIT INDICATING THE TYPE OF ENTRY. * 18200000 * 0 - DSNAME ENTRY. * 18400000 * 1 - SPACE ENTRY. * 18600000 * RUCB - A POINTER TO THE UCB OR SUB UCB. * 18800000 * RB - MCS ROUTING AND DESCRIPTOR CODES. * 19000021 * WORK AREA-- * 19200000 * THE IDTTR OF THE RETURN MODULE. * 19400000 * REPLY - AN INDICATORS AS TO WHETHER THE MESSAGE IS A WTO * 19600000 * OR WTOR, AND IF THE DSNAME IS TO BE TAKEN FROM * 19800000 * THE JFCB OR THE WORK AREA. * 20000000 * * 20200000 * OUTPUT - * 20400000 * THE MESSAGE IS WRITTEN WITH THE REQUIRED SPACE AND/OR DATA SET * 20600000 * NAME. * 20800000 * REGISTER RB INDICATES WHETHER A ONE OR TWO LINE WTOR WAS ISSUED. * 21000000 * ZERO - ONE LINE. * 21200000 * NEGATIVE - TWO LINE. * 21400000 * * 21600000 * EXTERNAL REFERENCES - * 21800000 * REFER TO THE PRECEEDING MODULE PROLOG. * 22000000 * * 22200000 * EXITS, NORMAL - * 22400000 * REFER TO THE PRECEEDING MODULE PROLOG. * 22600000 * EXIT TO THE FUNCTION INDICATED BY THE CALLING FUNCTION. * 22800000 * * 23000000 * EXITS, ERROR - * 23200000 * NONE. * 23400000 * * 23600000 * TABLES/WORK AREAS - * 23800000 * THE OPEN, CLOSE, OR EOV WORK AREA AND THE WHERE-TO-GO (WTG) * 24000000 * TABLE ARE DESCRIBED BY THE DSECTS AT THE END OF THE LISTING. * 24200000 * * 24400000 * ATTRIBUTES - * 24600000 * REFER TO THE PRECEEDING MODULE PROLOG. * 24800000 * * 25000000 * CHARACTER CODE DEPENDENCY - * 25200000 * REFER TO THE PRECEEDING MODULE PROLOG. * 25400000 * * 25600000 * NOTES - * 25800000 * * 26000000 *********************************************************************** 26200000 EJECT 26400000 * 26600000 USING FORCORE,RCORE 26800000 USING UCBOB,RUCB 27000000 USING CVT,RF 27200000 USING BASE,RDCB ADDRESSABILITY 27400000 BALR RBASE,0 ESTABLISH BASE 27600000 USING *,RBASE BASE REG. ADDRESSABILITY 27800000 L RF,CVTPTR GET CVT ADDRESS 28000000 L RDCB,CVTMSLT MASTER SCHED LINK TABLE PTR 28200000 SR RB,RB CLEAR SPACE INFO PTR 28400000 LA RC,MSGLSTSZ GET START OF MSG BUFFER 28600000 LTR R1,R1 DETERMINE ENTRY POINT 28800000 BM OCM00100 SPACE INFO NEEDED 29000000 LR RD,R1 GET POINTER TO LAST CHAR 29200000 SR RD,RC SUBTRACT BEGINNING OF BUFFER 29400000 LA RD,K1(RD) GET CHARACTER COUNT 29600000 STC RD,K1(RC) STORE NUMBER OF CHARACTERS 29800000 B OCM01000 GO TO PUT DSNAME ON MSG 30000000 OCM00100 EQU * 30200000 N R1,BITOFF TURN OFF SPACE INDICATOR 30400000 OCM00200 EQU * 30600000 LR RET,R1 SAVE MSG POINTER 30800000 XR R1,R1 SET PARM REG TO ZERO 31000000 TM MSSSB,MSSSPACE CONSOLE WANT SPACE INFO 31200000 BO OCM00300 BRANCH IF YES 31400000 TM CVTDCB,CVT4MS1 IS THIS MVT 31600000 BZ OCM00400 BRANCH IF NOT 31800000 TM BAMONITR,BAMSPACE TRMNLS WANT SPACE INFO 32000000 BZ OCM00400 BRANCH IF NO 32200000 OCM00300 EQU * 32400000 MVI K1(RET),COMMA DELIMIT STEPNAME 32600000 LA RET,K2(RET) SET PTR FOR SPACE INFO 32800000 LR R1,RET PUT PTR INTO PARM REG 33000000 LA RET,K29(RET) UPDATE MSG BUFF PTR 33200000 OCM00400 EQU * 33400000 L RD,CVTSMCA GET SMCA ADDRESS 33600000 LTR RD,RD TEST FOR SMF SYSTEM 33800000 BZ OCM00500 BRANCH IF NON-SMF SYSTEM 34000000 USING SMCABASE,RD 34200000 TM SMCAOPT,SMCAVOL TEST FOR SMF VOL ACCT'G 34400000 DROP RD 34600000 BZ OCM00500 BRANCH IF NO ACCT'G 34800000 LA RF,X'80' SET UP LSPACE SMF FLAG 35000000 SLL RF,K24 MOVE FLAG TO BIT 0 35200000 OR R1,RF PUT FLAG INTO PARM REG 35400000 OCM00500 EQU * 35600000 LTR R1,R1 IS LSPACE SVC REQUIRED 35800000 BZ OCM00700 BRANCH IF NO 36000000 LA R0,0(RUCB) PT TO UCB IN REG 0 36200000 OCM00600 EQU * 36400000 LR RB,R1 PTR TO SPACE INFO 36600000 SVC 78 ISSUE SPACE SVC 36800000 OCM00700 LR R1,RET RESTORE MSG POINTER 37000000 OCM00800 LR RD,R1 DETERMINE LENGTH OF 37200000 SR RD,RC PRESENT MSG 37400000 LA RD,K1(RD) NUMBER OF CHARS IN MSG 37600000 STC RD,K1(RC) SET UP MSG LENGTH 37800000 * 38000000 * TEST IF DSNAME IS ALSO REQUIRED. 38200000 * 38400000 CLI K76(RC),K0 THIS MSG ALWAYS WANT DSN 38600000 BNE OCM01000 YES,BRANCH 38800000 TM JFCBIND2,JFCTEMP TEMPORARY DATA SET 39000000 BO OCM00900 YES,DSN NOT REQUIRED 39200000 TM MSSSB,MSSSDSN DOES CONSOLE WANT DSN 39400000 BO OCM01000 YES,BRANCH 39600000 L RF,CVTPTR RESTORE CVT ADDR 39800000 TM CVTDCB,CVT4MS1 IS THIS MVT 40000000 BZ OCM00900 BRANCH IF NOT 40200000 TM BAMONITR,BAMDSN DO TRMNLS WANT DSN 40400000 BO OCM01000 YES,BRANCH 40600000 OCM00900 EQU * DSNAME NOT REQUIRED 40800000 MVC K1(K4,R1),DXREGB MOVE IN MCS CODES 41000000 LA R9,K80(RC) PTR TO MSG ID SAVE AREA SA58669 41250001 B OCM01900 GO WTO 41400000 * 41600000 * PUT DSNAME ON MESSAGE. 41800000 * 42000000 OCM01000 EQU * 42200000 CLC K7(K6,RC),EOVRMSG CHECK FOR END OF VOLUME A47334 42250021 * RETAIN MESSAGE A47334 42300021 BE OCM00900 YES, BRANCH-DO NOT WANT A47334 42350021 * DSNAME IN MSG A47334 42360021 MVI K1(R1),COMMA INSERT DELIMITING COMMA 42400000 LA R1,K1(R1) POINT TO LAST CHAR IN BFFR 42600000 LA RD,K1(RD) RESET MSG LENGTH 42800000 STC RD,K1(RC) SET MSG LENGTH 43000000 LR RET,R1 SAVE MSG PTR 43200000 TM K76(RC),JFCNEW DSNAME FROM JFCB 43400000 BO OCM01100 NO, FROM FL1ID 43600000 LA R1,JFCBDSNM+K43 POINT TO LAST CHAR OF DSN 43800000 BAL RF,OCM02100 REMOVE THE BLANKS 44000000 LA RF,JFCBDSNM PT TP STRT OF DSN 44200000 B OCM01200 GO CALCULATE DSN LENGTH 44400000 OCM01100 EQU * 44600000 LA R1,DXDSNAME+K16 POINT TO MAX END OF DSNAME 44800000 BAL RF,OCM02100 REMOVE THE BLANKS 45000000 LA RF,DXDSNAME PTR TO START OF DSNAME 45200000 OCM01200 EQU * 45400000 SR R1,RF SUB STRT DSN FROM END 45600000 LTR R1,R1 IS DSN LENGTH NEGATIVE A43226 45640021 BNM OCM01250 NO, GO CONTINUE A43226 45680021 SR R1,R1 YES, SET LENGTH TO ZERO A43226 45720021 OCM01250 EQU * A43226 45760021 LA R1,K1(R1) EXACT LENGTH OF DSN 45800000 LA RF,71(RC) MAX ADDR OF ONE LINE 46000000 LR RD,R1 SAVE DSN LENGTH 46200000 AR RD,RET DSN LENGTH PLUS MSG LENGTH 46400000 LA RD,K1(RD) ONE PAST END OF MESSAGE 46600000 TM K76(RC),X'C0' IS THIS A ONE LINE WTOR 46800000 BO OCM01300 YES 47000000 B OCM01600 GO CHK DSNM LNGTH 47200000 OCM01300 EQU * 47400000 BCTR R1,R0 SET NUM CHAR FOR EXECUTE 47600000 EX R1,MVCFL1ID MOVE DSN ON LINE 1 47800000 MVC K0(K4,RD),DXREGB MCS CODES AFTER MSG 48000000 SR RD,RC MSG LENGTH CODE 48200000 STC RD,K1(RC) SET MSG LENGTH 48400000 OCM01400 EQU * 48600000 XC DXREGB,DXREGB INDICATE ONE LINE WTOR 48800000 OCM01500 EQU * 49000000 SH RC,HAFEIGHT PTR TO WTOR PREFIX 49200000 WTOR MF=(E,(12)) ISSUE WTOR 49400000 LA RC,K8(RC) POINT TO MSG SIZE IN WTO 49600000 B OCM02000 PREPARE TO XCTL TO CALLER 49800000 OCM01600 EQU * 50000000 CR RD,RF 50200000 BNH OCM01800 IF NOR EXCESS BRANCH 50400000 LR RD,R1 SAVE DSN LENGTH 50600000 LR R1,RC POINT TO MSG BUF IN R1 51000000 SR RET,RET CLEAR REGISTER 51200000 IC RET,K1(RC) GET MESSAGE LENGTH 51400000 AR RET,RC POINT TO END OF MESSAGE 51600000 MVC K0(K4,RET),DXREGB MCS CODES AFTER MSG 51800000 LA R9,K80(RC) PTR TO MSG ID SAVE AREA SA58669 51810001 XR RET,RET INDICATE 1ST LINE OF MSGSA58669 51820001 BAL RB,OCM03310 BR TO WRITE MSG SA58669 51850001 BAL RET,OCM02600 LINK TO TPUT SA58669 51950001 * REGISTER RET IS NOW NON-ZERO SA58669 52900001 * INDICATING 2ND LINE OF MSG SA58669 52950001 * BEING PROCESSED SA58669 52960001 LR R1,RC RESTORE REG 1 53000000 MVI K12(R1),BLANK BLANK OUT COMMAND CODE 53200000 LA RB,K14(R1) SET UP PTR FOR DSNAME 53400000 MVC 0(K44,RB),JFCBDSNM PUT DSNAME ON 2ND LINE 53600000 AR RB,RD DSN LENGTH PLUS MSG LEN 53800000 MVC K0(K4,RB),DXREGB MOVE IN MCS CODES 54000000 SR RB,RC END MSG MINUS BEGN MSG 54200000 STC RB,K1(RC) INDICATE MSG LEN 54400000 TM K76(RC),X'80' IS THIS A WTOR 54600000 LA R9,K84(RC) PTR TO MSG ID SAVE AREA SA58669 54850001 BZ OCM01900 BRANCH IF NOT WTOR 55000000 XC DXREGB,DXREGB ZERO OUT RETURN INDICATOR 55200000 OI DXREGB,X'80' INDICATE TWO LINE WTOR 55400000 B OCM01500 GO ISSUE WTOR 55600000 OCM01800 BCTR R1,R0 SET NUM CHAR FOR EXECUTE 55800000 EX R1,MVCDSN MOVE DSNAME ON LINE1 56000000 MVC K0(K4,RD),DXREGB MCS CODES AFTER MSG 56200000 SR RD,RC GET MSG LENGTH 56400000 STC RD,K1(RC) STORE THE MSG LENGTH 56600000 TM K76(RC),X'80' IS THIS A WTOR 56800000 BO OCM01400 YES 57000000 LA R9,K80(RC) PTR TO MSG ID SAVE AREA SA58669 57010001 XR RET,RET INDICATE 1ST LINE OF MSGSA58669 57012001 OCM01900 EQU * SA58669 57020001 LR RD,RB SAVE REG RB CONTENTS SA58669 57050001 LR R1,RC POINT TO MSG BUF IN R1 SA58669 57100001 BAL RB,OCM03310 BR TO WRITE MSG SA58669 57200001 LR RB,RD RESTORE REG RB CONTENTS SA58669 57250001 OCM02000 EQU * SA58669 57300001 BAL RET,OCM02600 SEE IF TRMNLS WANT MSGS 58600000 BAL RET,OCM02200 SEE IF TSO TASK 58800000 L RDCB,K0(RPARC) RESTORE DCB REGISTER 59000000 LM RTIOT,RET,DXREG9 RESTORE REGS 9 - 14 59200000 LM R0,R1,DXREG0 RESTORE REGS 0 AND 1 59400000 AIF ('&LIB' EQ 'LIB1').LIB10RS 59410002 XC DXRETTTR,DXRETTTR ZERO TTR FIELD XM0246 59450002 .LIB10RS ANOP 59500002 IECRES XCTL,DXRETMOD,(RET) 59600000 * 59800000 * REMOVE BLANKS 60000000 * 60200000 OCM02100 EQU * 60400000 CLI 0(R1),BLANK FIND THE LAST CHAR 60600000 BCR 7,RF WHEN FOUND, BRANCH 60800000 BCT R1,OCM02100 LOOK AGAIN 61000000 OCM02200 EQU * 61200000 L RF,CVTPTR RESTORE CVT ADDR 61400000 TM CVTDCB,CVT4MS1 IS THIS MVT 61600000 BCR K8,RET BRANCH IF NOT 61800000 TM CVTTSFLG,CVTTSRDY IS TSO STILL UP 62000000 BCR 8,RET RETURN IF NOT 62200000 L RDCB,CVTTCBP LOCATE THE 62400000 DROP RF CURRENT 62600000 L RDCB,K4(RDCB) TCB 62800000 USING TCB,RDCB ESTABLISH ADDRESSABILITY 63000000 TM TCBTSFLG,TCBTSTSK IS THIS A TSO TASK 63200000 BCR K8,RET RETURN IF NOT 63400000 CLI K10(RC),CHARA IS MESSAGE TYPE=A 63600000 BE OCM02300 YES - ISSUE MESSAGE. 63800000 CLI K10(RC),CHARD IS MESSAGE TYPE=D 64000000 BNE OCM02500 NO - DO NOT SEND MESSAGE 64200000 OCM02300 LA R1,K1(RC) GET MESSAGE BUFFER POINTER 64400000 MVC K0(L'TSOMSG,R1),TSOMSG MOVE MESSAGE TO BUFFER. 64600000 LA R0,L'TSOMSG SET MESSAGE LENGTH. 64800000 L RF,TCBJSCB LOCATE JSCB. 65000000 USING IEZJSCB,RF ADDRESSABILITY FOR JSCB 65200000 LH RB,JSCBTJID GET TJID FOR TPUT. 65400000 L RF,JSCBPSCB LOCATE PSCB. 65600000 USING PSCB,RF ADDRESSABILITY FOR PSCB 65800000 LTR RF,RF IS PSCB INITIALIZED 66000000 BZ OCM02400 DEFAULT TO TPUT W/MSG ID PSCB 66200000 L RF,PSCBUPT LOCATE UPT. 66400000 USING UPT,RF ADDRESSABILITY FOR UPT. 66600000 TM UPTSWS,UPTMID IS MESSAGE ID REQUIRED 66800000 BO OCM02400 YES. 67000000 LA R1,K8(R1) NO - ADJUST MSG BUFR POINTER 67200000 SH R0,HAFEIGHT AND MESSAGE LENGTH. 67400000 OCM02400 EQU * 67600000 SLL RB,K16 MOVE TO HIGH ORDER BYTESSA58669 67810001 OR R0,RB LOAD INTO PARM REG SA58669 67820001 SRL RB,K16 REST TJB COUNT SA58669 67830001 TPUT (1),(0),R SEND TPUT TO TRMNL SA58669 67840001 DROP RF,RDCB DROP UPT, TCB ADDRESSINGSA58669 67850001 OCM02500 EQU * 68000000 BR RET RETURN TO MAINLINE 68200000 OCM02600 EQU * 68400000 L RTIOT,CVTPTR LOCATE CVT 68600000 USING CVT,RTIOT ESTABLISH ADDRESSABILITY 68800000 TM CVTDCB,CVT4MS1 IS THIS MVT 69000000 BCR K8,RET NO, BRANCH 69200000 TM CVTTSFLG,CVTTSRDY IS TSO UP 69400000 BCR 8,RET BRANCH IF NOT 69600000 L RDCB,CVTMSLT MASTER SCHED LINK TABLE 69800000 USING BASE,RDCB 70000000 L RTIOT,CVTTSCVT LOCATE TSOCVT 70200000 LA RTIOT,0(RTIOT) CLEAR HIGH ORDER BYTE 70400000 USING TSCVT,RTIOT ESTABLISH ADDRESSABILITY 70600000 LTR RB,RB IS THERE SPACE INFO 70800000 BZ OCM02700 NO,CHECK DSNAME 71000000 TM BAMONITR,BAMSPACE YES,DOES TRMNL WANT SPACE 71200000 BO OCM02800 YES,SEND IT 71400000 OCM02700 EQU * 71600000 TM BAMONITR,BAMDSN DO TRMNLS WANT DSN 71800000 BO OCM02800 YES,SEND IT 72000000 BR RET NO,RETURN TO MAINLINE 72200000 OCM02800 EQU * 72400000 SR RB,RB CLEAR TJB COUNTER 72600000 L RDCB,TSCVTTJB START OF TJB TABLE SA58669 72650001 AH RDCB,TSCVTSZU LOCATE 1ST TJB SA58669 72700001 USING TJB,RDCB ESTABLISH ADDRESSABILITYSA58669 72750001 OCM02900 EQU * 73400000 LA RB,K1(RB) INCREMENT TJB COUNT 73600000 TM TJBMONI,TJBMSPA+TJBMDSN THIS TRMNL WANT SPACE/DSN 73800000 BZ OCM03200 NO,LOCATE NEXT TJB 74000000 OCM03000 EQU * 74200000 TM TJBSTAT,TJBNJB YES,IS TJB IN USE 74400000 BO OCM03200 NO,LOOK FOR NEXT TJB 74600000 LH R0,K0(RC) GET MSG LENGTH 74800000 SH R0,HALFWRD4 ADJUST 75000000 LA R1,K4(RC) SET BUFFER ADDRESS 75200000 O R1,NOWAIT SET NOWAIT OPTION 75400000 SLL RB,K16 MOVE TO HIGH ORDER BYTESSA58669 75650001 OR R0,RB LOAD INTO PARM REG SA58669 75700001 SRL RB,K16 REST TJB COUNT SA58669 75750001 TPUT (1),(0),R SEND TPUT TO TRMNL SA58669 75760001 OCM03200 EQU * 75800000 AH RDCB,TSCVTSZU LOCATE NEXT TJB SA58669 76050001 CH RB,TSCVTNTJ IS THIS THE LAST 76200000 BL OCM02900 NO,BRANCH 76400000 DROP RDCB,RTIOT DROP TJB, TSCVT ADDR SA58669 76450001 BR RET YES,RETURN TO MAINLINE 76600000 * SA58669 78450001 *********************************************************************** 78500001 * SUBROUTINE FOR WTO (WRITE MESSAGES TO OPERATOR) * 78550001 *********************************************************************** 78560001 * SA58669 78570001 OCM03310 EQU * SA58669 78580001 WTO MF=(E,(1)) WRITE LINE OF MSG SA58669 78590001 TM DXREGB,X'40' NEED WE SAVE MSG ID SA58669 78592001 BCR 8,RB NO SA58669 78594401 ST R1,0(R9) SAVE MSG ID SA58669 78596401 CLI UCBID,UCBMAIN IS THIS 2321 SA58669 78598001 BCR 7,RB BR IF YES SA58669 78598401 CLI UCBTBYT3,UCB3TAPE IS THIS TAPE SA58669 78598801 BCR 7,RB BR IF NO SA58669 78599201 OI UCBSTAB,UCBBNUL TURN ON UCB DOM INDR SA58669 78599601 LTR RET,RET TEST FOR 2ND LINE SA58669 78599701 BZ OCM03320 BR IF 1ST LINE MSG SA58669 78599801 MVC UCBFSER+K3(K3),K1(R9) SAVE MSG ID IN UCB SA58669 78609901 BR RB RETURN TO CALLER SA58669 78649901 OCM03320 EQU * SA58669 78659901 MVC UCBFSER(K3),K1(R9) SAVE MSG ID IN UCB SA58669 78671901 XC UCBFSER+K3(K3),UCBFSER+K3 ZERO OUT 2ND MSG ID SA58669 78679901 BR RB RETURN TO CALLER SA58669 78689901 * 78699901 * CONSTANTS 78800000 * 79000000 HALFWRD4 DC H'4' MESSAGE LENGTH ADJUST 79200000 EOVRMSG DC C'003E R' EOV RETAIN MSG ID A47334 79250021 NOWAIT DS 0F TPUT WITH 79400000 DC X'10000000' NOWAIT OPTION 79600000 HAFEIGHT DC X'0008' DECREMENT 79800000 MVCDSN MVC K1(K0,RET),JFCBDSNM MOVE DSNAME FROM JFCB 80000000 MVCFL1ID MVC K1(K0,RET),DXDSNAME MOVE DSNAME FROM LABEL 80200000 TSOMSG DC C'IEC108I OPERATOR ACTION HAS BEEN REQUESTED FOR YOUR DAX80400000 TA SET' 80600000 DS 0F 80800000 BITOFF DC X'7FFFFFFF' MASK TO TURN OFF INDICATOR 81000000 XCTLTABL ID=,SVC=019 GENERATE PATCH AREA SA58669 81050001 IECDSECS JSCB,PSCB,UPT,TJB,TSCVT,SMF,BASE 82800000 IECDSECS CVT,TCB,TIOT,DCB,UCB,MAIN,WTG,EXPAND=YES 83000000 IECEQU 83200000 END 83400000 ./ ADD SSI=00010442,NAME=IFG0193A,SOURCE=0 TITLE 'IFG0193A/OPEN - INITIAL JFCB PROCESSING' 00100000 COPY LCGASMSW 00360000 IFG0193A CSECT 00400000 *********************************************************************** 00500000 * * 00600000 * * 00700000 * RELEASE 25 DELETIONS/CHANGES * 00800000 * RELEASE 24 DELETIONS/CHANGES * 00900000 * RELEASE 23 DELETIONS/CHANGES * 01000000 * RELEASE 22 DELETIONS/CHANGES * 01100000 * RELEASE 21.7 DELETIONS/CHANGES * 01110001 *0000 SA55582 01120001 * RELEASE 21.6 DELETIONS/CHANGES * 01150021 *0000234000 A53209 01160021 * RELEASE 21 DELETIONS/CHANGES * 01200000 *0000387000-388000,536000 A40552 01210021 *0000104000-105000,434000-435000,446000-465000,471000-472000, A42112 01230021 *0000541000-543000 A42112 01260021 *0000 M2557 01270000 *0000088000-089000,160000-171000,173000,175000-177840,185500, A39979 01275021 *0000 SA53186 01280002 *0000189000,192000-194000,196000,230000,239000,249000,253100- A39979 01280121 *0000253500,273000,526000-526600 A39979 01285021 *0000 A44135 01295021 AIF ('&LIB' EQ 'LIB1').LIB13AZ 01295400 * VS1 RELEASE 02 DELETIONS * 01295502 *0000273630-273780 X02989 01295602 *0000274899,274999,275932 XM0856 01295702 *0000273600,526300,526600 XM1037 01302202 * VS1 RELEASE 01 DELETIONS * 01308902 *0000 XM5719 01315402 *0000 XM5629 01321900 .LIB13AZ ANOP 01348000 * * 01374000 * STATUS CHANGE LEVEL 000 * 01400000 * * 01500000 * FUNCTION - * 01600000 * THIS MODULE CONTAINS THE FUNCTION(S) OR PART(S) OF FUNCTION(S)-- * 01700000 * OPEN INITIAL VOLUME SERIAL FUNCTION * 01800000 * REFER TO THE FOLLOWING 'FUNCTION PROLOG(S)' FOR DETAILS. * 01900000 * * 02000000 * ENTRY POINTS - * 02100000 * IFG0193A * 02200000 * * 02300000 * INPUT - * 02400000 * REFER TO THE FOLLOWING 'FUNCTION PROLOG(S)'. * 02500000 * * 02600000 * OUTPUT - * 02700000 * REFER TO THE FOLLOWING 'FUNCTION PROLOG(S)'. * 02800000 * * 02900000 * EXTERNAL REFERENCES - * 03000000 * IFG019RA - OPEN/CLOSE/EOV RESIDENT ROUTINE FOR XCTL AND * 03100000 * WAIT. * 03200000 * REFER TO THE FOLLOWING 'FUNCTION PROLOG(S)'. * 03300000 * * 03400000 * EXITS, NORMAL - * 03500000 * REFER TO THE FOLLOWING 'FUNCTION PROLOG(S)'. * 03600000 * * 03700000 * EXITS, ERROR - * 03800000 * EXIT IS TO THE PROBLEM DETERMINATION MODULE IFG0190P, IF AN * 03900000 * ABEND SITUATION OCCURS IN THIS MODULE. REFER TO THE FOLLOWING * 04000000 * 'FUNCTION PROLOG(S)'. * 04100000 * * 04200000 * TABLES/WORK AREAS - * 04300000 * REFER TO THE FOLLOWING 'FUNCTION PROLOG(S)'. * 04400000 * * 04500000 * ATTRIBUTES - * 04600000 * REENTRANT, REFRESHABLE, READ-ONLY, ENABLED, PRIVILEGED * 04700000 * * 04800000 * CHARACTER CODE DEPENDENCY - * 04900000 * CLASS ONE CHARACTER CODE DEPENDENCY - THE EBCDIC CHARACTER CODE * 05000000 * WAS USED FOR ASSEMBLY. THE MODULE MUST BE REASSEMBLED IF A * 05100000 * DIFFERENT CHARACTER SET IS USED FOR EXECUTION. * 05200000 * * 05300000 * NOTES - * 05400000 * REFER TO THE FOLLOWING 'FUNCTION PROLOG(S)'. * 05500000 * * 05600000 *********************************************************************** 05700000 EJECT 05800000 *********************************************************************** 05900000 * * 06000000 * FUNCTION PROLOG * 06100000 * * 06200000 *********************************************************************** 06300000 * * 06400000 * FUNCTION NAME - * 06500000 * OPEN INITIAL VOLUME SERIAL FUNCTION * 06600000 * * 06700000 * (STATUS) - * 06800000 * NOT APPLICABLE * 06900000 * * 07000000 * FUNCTION - * 07100000 * WAIT FOR THE JFCB TO BE READ IN. * 07200000 * DETERMINE THE INITAIL VOLUME SERIAL NUMBER TO BE USED BY THE * 07300000 * DATA SET AND PLACE IT IN DXVOLMT1. JFCB EXTENSIONS MAY HAVE * 07400000 * TO BE READ TO OBTAIN THE DESIRED VOLUME SERIAL NUMBER. * 07500000 * INDICATE IN THE WHERE-TO-GO TABLE (WTG), THE OPEN MODULES * 07600000 * NEEDED TO PROCESS THE DCB'S IN THE PARAMETER LIST. * 07700000 * * 07800000 * ENTRY POINTS - * 07900000 * IFG0193A - VIA XCTL FROM IGC0001I OR IGC0002B, OR BY RETURN * 08000000 * XCTL FROM IFG0199R. * 08100000 * REFER TO THE PRECEEDING MODULE PROLOG. * 08200000 * * 08300000 * INPUT - * 08400000 * *A JFCB IN EACH OF THE DCB WORK AREAS. * 08500000 * *A POINTER TO THE WTG TABLE IN REGISTER RWTG. * 08600000 * *A POINTER TO THE DCB PARAMETER LIST IN REGISTER RPAR. * 08700000 * *A POINTER TO EACH DCB WORK AREA IN EACH WTG ENTRY. * 08800021 * *A BRANCH TABLE OFFSET IN REGISTER RET. * 09000000 * * 09100000 * OUTPUT - * 09200000 * *THE VOLUME SERIAL NUMBER OF THE FIRST VOLUME TO USE IN DXVOLMT1. * 09300000 * *THE WTG TABLE BASE AND ENTRIES INITIALIZED FOR USE BY THE * 09400000 * RESIDENT ROUTINE. EACH WTG ENTRY POINTS TO THE NEXT MODULE * 09500000 * FOR THE CORRESPONDING DCB. * 09600000 * *REGISTER RES - ADDRESS OF THE RESIDENT ROUTINE. * 09700000 * REGISTER RWTG - ADDRESS OF START OF XCTL/WTG TABLE. * 09800000 * REGISTER RTIOT - ADDRESS OF TIOT DD ENTRY FOR DATA SET. * 09900000 * REGISTER RUCB - ADDRESS OF FIRST UCB POINTED TO IN TIOT DD ENTRY* 10000000 * REGISTER RET - BRANCH TABLE ENTRY OFFSET OF 0. * 10100000 * * 10200000 * EXTERNAL REFERENCES - * 10300000 * IECPCNVT - SUBROUTINE TO CONVERT A RELATIVE DIRECT ACCESS * 10305021 * ADDRESS AND CONCATENATION NUMBER, TTRN, * 10310021 * INTO ITS ABSOLUTE EQUIVALENT, MBBCCHHR. * 10315021 * IT IS RESIDENT IN THE NUCLEUS. * 10320021 * REGISTER ENTRY EXIT * 10325021 * 0 - ACTUAL TTRN DESTROYED * 10330021 * 1 - DEB ADDRESS TRANSPARENT * 10335021 * 2 - ADDRESS OF 8 BYTE TRANSPARENT * 10340021 * AREA FOR MBBCCHHR * 10345021 * 3-8 - IGNORED TRANSPARENT * 10350021 * 9-13 - IGNORED DESTROYED * 10355021 * 14 - RETURN ADDRESS TRANSPARENT * 10360021 * 15 - ENTRY ADDRESS ERROR CODE * 10365021 * IEFQCNVT - SUBROUTINE TO COMPUTE THE NUMBER OF DATA BYTES * 10370021 * PRECEEDING A JOBQUEUE RECORD FOR INPUT TO THE * 10375021 * IEC0SCR1 SECTOR CONVERT ROUTINE. * 10380021 * IT IS RESIDENT IN THE NUCLEUS. * 10385021 * INPUT -- * 10390021 * - REG 0 CONTAINS THE TTR0 OF THE RECORD. * 10395021 * - REG 3 CONTAINS THE ADDRESS OF THE JOB * 10400021 * SCHEDULER DCB, WHICH IS PART OF THE * 10405021 * QUEUE MANAGER RESIDENT CORE. * 10410021 * - REG 14 CONTAINS THE RETURN ADDRESS. * 10415021 * - REG 15 CONTAINS THE ADDRESS OF THE ENTRY * 10420021 * POINT OF THIS ROUTINE AND IS USED AS A BASE * 10425021 * REGISTER. * 10430021 * OUTPUT -- * 10435021 * - REG 0 IS SET UP FOR ENTRY TO THE IEC0SCR1 * 10440021 * SECTOR CONVERT ROUTINE IN BBIR FORM, * 10445021 * WHERE BB IS THE NUMBER OF PRECEEDING BYTES, * 10450021 * I=0 FOR NON-KEYED RECORDS, AND R IS THE * 10455021 * RECORD NUMBER. * 10460021 * - REG 3 IS THE SAME AS AT INPUT. * 10465021 * - REGS 1,2,9-13 ARE USED BY THIS ROUTINE AND * 10470021 * ARE NOT RESTORED. * 10475021 * IEC0SCR1 - SUBROUTINE TO CONVERT A RECORD NUMBER INTO AN * 10480021 * RPS SECTOR ID. IT IS RESIDENT IN THE NUCLEUS. * 10485021 * FOR VARIABLE LENGTH RECORDS -- * 10490021 * - REG 0 IS LOADED WITH A FOUR-BYTE VALUE IN * 10495021 * THE FORM OF BBIR, WHERE BB IS THE TOTAL * 10500021 * NUMBER OF KEY AND DATA BYTES UP TO BUT NOT * 10505021 * INCLUDING THE TARGET RECORD, I IS A ONE-BYTE* 10510021 * KEY INDICATOR (1 FOR KEYED RECORDS, 0 FOR * 10515021 * NON-KEYED RECORDS), AND R IS THE RECORD * 10520021 * NUMBER FOR WHICH A SECTOR VALUE IS DESIRED. * 10525021 * - REG 2 CONTAINS THE ONE-BYTE UCB DEVICE TYPE * 10530021 * CODE (UCB + 19) IN THE HIGH ORDER BYTE, * 10535021 * AND THE REMAINING 3 BYTES ARE THE ADDRESS * 10540021 * OF A ONE BYTE AREA THAT IS TO RECEIVE THE * 10545021 * SECTOR VALUE. * 10550021 * - REG 14 CONTAINS THE ADDRESS TO WHICH CONTROL* 10555021 * IS TO BE RETURNED AFTER EXECUTION OF THE * 10560021 * SECTOR CONVERT ROUTINE. * 10565021 * - REG 15 CONTAINS THE ADDRESS OF THE ENTRY * 10570021 * POINT TO THIS ROUTINE AND IS USED AS A BASE * 10575021 * REGISTER. * 10580021 * - REGS 1,3-8,12-13 ARE NOT USED. * 10585021 * * 10600000 * EXITS, NORMAL - * 10700000 * TO IFG0194E IF DATA SET IS ON DIRECT ACCESS DEVICE. * 10800000 * TO IFG0193B IF DATA SET IS ON MAGNETIC TAPE DEVICE. * 10900000 * TO IFG0196J IF DATA SET IS ON UNIT RECORD OR ANY OTHER DEVICE. * 11000000 AIF ('&LIB' EQ 'LIB1').LIB13AB 11050002 * TO IFG0192A IF DATA SET IS FOR VSAM X02989 11060002 .LIB13AB ANOP 11070002 * * 11100000 * EXITS, ERROR - * 11200000 * NONE. * 11300000 * * 11400000 * TABLES/WORK AREAS - * 11500000 * THE FORMAT AND CONTENTS OF THE WORK AREAS USED ARE DESCRIBED BY * 11600000 * THE DSECTS AT THE END OF THE LISTING. * 11700000 * * 11800000 * ATTRIBUTES - * 11900000 * REFER TO THE PRECEEDING MODULE PROLOG. * 12000000 * * 12100000 * CHARACTER CODE DEPENDENCY - * 12200000 * REFER TO THE PRECEEDING MODULE PROLOG. * 12300000 * * 12400000 * NOTES - * 12500000 * * 12600000 *********************************************************************** 12700000 EJECT 12800000 * 13100000 AIF ('&LIB' NE 'LIB1').LIB23A1 13150000 IECDSECS CVT,TCB,TIOT, DEFINE DESIRED DSECTS TO BE X13160002 UCB,DCB,MAIN,WTG EXPANDED AT THE END 13170002 IECEQU , DEFINE EQUATES 13200000 .LIB23A1 ANOP 13210000 AIF ('&LIB' EQ 'LIB1').LIB13A1 13220000 IECDSECS CVT,TCB,TIOT, DEFINE DESIRED DSECTS TO BE X13222002 UCB,DCB,MAIN,WTG,IDAPDPRM EXPANDED AT THE END XM0856 13224002 IECEQU AOS=YES 13230000 QMWORK EQU X'224' SIZE OF WORK AREA FOR QMNGRIO 13240000 QMREG EQU X'144' OFFSET TO REG. SAVE AREA 13250000 TIOTSPOL EQU X'06' SPOOL INDICATOR 13260000 ACBMJEP EQU X'40' ACB JEPS INDICATOR X02989 13262002 .LIB13A1 ANOP 13270000 * 13300000 USING IHADCB,RDCB DEFINE BASE TO USER'S DCB 13400000 USING FORCORE,RCORE DEFINE BASE TO MAIN WORK AREA 13500000 USING WTG,RWTG DEFINE BASE TO XCTL/WTG TABLE 13600000 USING TIOENTRY,RTIOT DEFINE BASE TO TIOT DD ENTRY 13700000 USING UCBOB,RUCB DEFINE BASE TO MAIN UCB 13800000 * 13900000 BALR RBASE,0 ESTABLISH BASE REGISTER 14000000 USING *,RBASE DEFINE BASE REGISTER 14100000 * 14200000 B OIN30200(RET) BR TO INDICATED FUNCTION 14300000 * 14400000 OIN30200 B OIN30400 RET=0 INITIAL ENTRY FROM OPEN 14500000 B OIN32800 RET=4 PARALLEL OPEN DCB START 14600000 B OIN32000 RET=8 RETURN FROM LOAD TRACE 14700000 B OIN34600 RET=12 ENTRY FROM 5B SA55582 14710001 * 14800000 *********************************************************************** 14900000 * 15000000 * INTIALIZE WTG TABLE ENTRIES 15100000 * 15200000 OIN30400 EQU * 15300000 LA RD,K4 INIT LENGTH OF ECB WAIT LIST 15400000 LR RPARC,RPAR ADDR FIRST ENTRY IN PARM LIST 15500000 LA RWTGC,WTGENTRY ADDR FIRST ENTRY IN WTG TABLE 15600000 USING WTGENTRY,RWTGC DEFINE BASE TO CURRENT WTG 15700000 * 15800000 OIN30600 EQU * 15900000 L RF,WTGCORE-K1 LOAD DCB WORK AREA ADDR A39979 16000021 LTR RF,RF IS DCB BEING OPENED A39979 16400021 BZ OIN31300 BR IF NO A39979 16800021 * 17200000 LR RCORE,RF WORK AREA ADDR TO RCORE A39979 17300021 LA RD,K4(RD) INCR LENGTH OF ECB LIST 17400000 MVC WTGIDTTR(K2),OIN3930X ID OF THIS MOD FOR RESIDENT RTN 17800000 AIF ('&LIB' NE 'LIB1').LIB23A2 17850000 LA RET,K4 IND PARALLEL OPEN DCB START 17900000 .LIB23A2 ANOP 17910000 AIF ('&LIB' EQ 'LIB1').LIB13A2 17920000 IC RET,OIN3930X+K5 17930000 SLL RET,K24 SHIFT LENGTH TO HIGH ORDER 17940000 LA RF,K4 BRANCH INDEX 17950000 OR RET,RF SETUP BRANCH INDEX IN RET 17960000 .LIB13A2 ANOP 17970000 ST RET,DXREGE STORE FOR LOAD BY RESIDENT RTN 18000000 * 18100000 AIF ('&LIB' NE 'LIB1').LIB23A3 18150000 TM DXECB,ECBCOMPL TEST IF READ JFCB ECB POSTED 18200000 BO OIN31200 BR IF YES 18300000 * 18400000 WAIT ECB=DXECB WAIT FOR READ TO COMPLETE 18500000 * 18600000 OIN31200 EQU * 18700000 .LIB23A3 ANOP 18750000 TM JFCBMASK+K6,JFCTRACE IS TRACE ROUTINE DESIRED 18800000 BZ OIN31300 BR IF NO TO NEXT DCB A39979 18900021 * 19000000 OI WTGPATHS+K1,WTGTRACE SET TRACE ROUTINE INDR 19100000 * 19200021 OIN31300 EQU * A39979 19240021 TM PLISTOPT(RPARC),LASTNTRY CHECK FOR LAST ENTRY A39979 19280021 LA RPARC,K4(RPARC) ADVANCE TO NEXT PARM DCB A39979 19320021 LA RWTGC,L'WTGENTRY(,RWTGC) ADVANCE NEXT WTG ENTRY A39979 19360021 BZ OIN30600 BR IF NO TO NEXT DCB A39979 19400021 * 19440021 XC WTGENTRY,WTGENTRY CLEAR EXTRA WTG ENTRY 19500000 * 19700000 *********************************************************************** 19800000 * 19900000 * GETMAIN THE RESIDENT WORK AREA, WHICH WILL SAVE 20000000 * RPAR - THE ADDRESS OF THE DCB PARAMETER LIST, AND WILL CONTAIN 20100000 * THE MULTIPLE ECB WAIT LIST USED BY THE RESIDENT ROUTINE. 20200000 * 20300000 TM WTGPATHS+K1,WTGTRACE IS TRACE ROUTINE DESIRED 20400000 BZ OIN31600 BR IF NO 20500000 * 20600000 LA RD,K8(RD) INCR LENGTH OF RES WORK AREA 20700000 * 20800000 OIN31600 EQU * 20900000 GETMAIN R,LV=(RD) GETMAIN RESIDENT WORK AREA 21000000 * 21100000 TM WTGPATHS+K1,WTGTRACE WAS EXTRA 8 BYTES GOTTEN 21200000 BZ OIN31800 BR IF NO 21300000 * 21400000 LA R1,K8(R1) INCR ADDR BEYOND 8 BYTES 21500000 * 21600000 OIN31800 EQU * 21700000 ST R1,WTGECBAD SAVE ADDR IN WTG TABLE BASE 21800000 ST RPAR,ECBPARM(,R1) SAVE RPAR AT START WORK AREA 21900000 * 22000000 *********************************************************************** 22100000 * 22200000 * XCTL TO LOAD TRACE ROUTINE MODULE IF TRACE FUNCTION DESIRED 22300000 * 22400000 TM WTGPATHS+K1,WTGTRACE IS TRACE ROUTINE DESIRED 22500000 BZ OIN32200 BR IF NO 22600000 * 22700000 * SAVE FIRST WTG TABLE ENTRY IDTTR IN LAST DCB WORK AREA 22800000 * 22900000 MVC DXCCW6(L'WTGIDTTR),WTGIDTTR-WTG(RWTG) SAVE IDTTR A39979 23000021 MVC WTGIDTTR-WTG(,RWTG),OIN3930X RETURN IDTTR OF THIS MOD 23100000 AIF ('&LIB' NE 'LIB1').LIB23A4 23150000 LA RET,K8 LOAD RETURN ENTRY INDICATOR 23200000 .LIB23A4 ANOP 23210000 AIF ('&LIB' EQ 'LIB1').LIB13A3 23220000 IC RET,OIN3930X+K5 INSERT LENGTH 23230000 SLL RET,K24 SHIFT LEFT TO HIGH ORDER 23240000 LA RF,K8 LOAD BRANCH INDEX FACTOR 23250000 OR RET,RF 23260000 SR RF,RF CLEAR WORK REG XM5719 23262000 IC RF,OIN3970X+K5 PICK UP LENGTH BYTE XM5719 23264000 SLL RF,K11 MOVE LEFT 11 BITS XM5719 23266000 ST RF,WTGMODSZ PUT LENGTH AND XM5719 23268000 MVC WTGTXTLN,WTGMODSZ+K1 SIZE IN WTG TABLE XM5719 23268400 .LIB13A3 ANOP 23270000 MVC WTGMODID,OIN3970X ID OF LOAD TRACE MODULE 23300000 MVC WTGTTR,OIN3970X+K2 TTR OF LOAD TRACE MODULE A53209 23400021 * 23500000 XCTL DE=(RWTG),SF=(E,DXXCTL) XCTL TO LOAD TRACE MODULE 23600000 * 23700000 OIN32000 EQU * 23800000 MVC WTGIDTTR-WTG(,RWTG),DXCCW6 RESTORE SAVED IDTTR A39979 23900021 * 24000000 OIN32200 EQU * 24100000 * 24200000 *********************************************************************** 24300000 * 24400000 * LOCATE A DCB TO START PARALLEL PROCESSING. 24500000 * 24600000 LA RWTGC,WTGENTRY-WTG(,RWTG) POINT TO FIRST ENTRY IN WTG 24700000 LR RPARC,RPAR POINT TO FIRST DCB IN PARM LIST 24800000 L RES,CVTPTR GET CVT ADDR A39979 24900021 L RES,CVTDMSR-CVT(,RES) GET RESIDENT RTN ADDR A39979 24950021 * 25000000 OIN32400 EQU * 25100000 CLC WTGIDTTR(K2),OIN3930X IS DCB ACTIVE IN THIS MODULE 25200000 BE OIN32600 BR IF YES 25300000 * 25400000 LA RPARC,K4(RPARC) ADVANCE TO NEXT PARM DCB ADDR 25500000 LA RWTGC,L'WTGENTRY(,RWTGC) ADVANCE TO NEXT WTG ENTRY 25600000 B OIN32400 BR TO FIND ACTIVE DCB 25700000 * 25800000 OIN32600 EQU * 25900000 L RDCB,PLISTDCB(,RPARC) LOAD CURRENT DCB ADDR 26000000 L RCORE,WTGCORE-K1 LOAD CURRENT WORK AREA ADDR 26100000 L RTIOT,DXREG9 LOAD ADDR TIOT DD ENTRY A39979 26150021 * 26200000 DROP RWTG,RWTGC 26300000 * 26400000 *********************************************************************** 26500000 * 26600000 * FROM THIS POINT ON, ALL PARALLELISM OF DCB'S IS HANDLED BY THE 26700000 * RESIDENT ROUTINE. 26800000 * 26900000 *********************************************************************** 27000000 * 27100000 OIN32800 EQU * 27200000 AIF ('&LIB' EQ 'LIB1').LIB13A4 27300000 * 27303021 * DETERMINE IF THE CONTROL BLOCK IS FOR A SPOOLED DATA SET 27306021 * TIOELINK FIELD = X'04' FOR SPOOLED SYSIN 27309021 * X'02' FOR SPOOLED SYSOUT 27312021 * 27315021 TM TIOELINK,TIOTSPOL IS DS SPOOLED SYSIN-OUT A39979 27318021 BM OIN32900 BR IF YES A39979 27321021 * 27324021 * TEST FOR AN ACB 27327021 * 27330021 TM DCBMACRF,DCBMEXCP IS ACCESS METHOD EXCP A39979 27333021 BO OIN32950 BR IF YES, NOT AN ACB A39979 27336021 * 27339021 TM DCBDSORG+K1,ACBDORGA IS CONTROL BLOCK AN ACB A39979 27342000 BZ OIN32950 BR IF NO A39979 27345021 * 27348021 * A JES DCB OR ACB IS BEING PROCESSED 27351021 * 27354021 OIN32900 EQU * A39979 27357021 TM DXECB,ECBNOERR JFCB READ SUCCESSFULLY XM1037 27360002 BO OIN32930 BR IF YES X02989 27410002 USING IFGACB,RACB DEFINE BASE TO ACB X02989 27410402 * X02989 27412402 * IF A VSAM ACB IS BEING PROCESSED, INITIALIZE PARAMETER LIST X02989 27412502 * AND BRANCH TO VSAM PROBLEM DETERMINATION. X02989 27412602 * X02989 27412702 TM ACBINFL,ACBMJEP IS THIS A JEPS ACB X02989 27416002 BO OIN32950 BR IF YES X02989 27418002 TM TIOELINK,TIOTSPOL IS THIS A SPOOLED ACB X02989 27418402 BM OIN32950 BR IF YES X02989 27418802 MVI ACBERFLG,VSOJFBER SET READ JFCB ERROR X02989 27419502 LA RC,DXIOB LD ADDR OF WORK AREA X02989 27435202 USING IDAPDPRM,RC SET BASE FOR PARM LIST X02989 27437202 XC IDAPDPRM(PDPLNGTH),IDAPDPRM ZERO PARAMETER LIST X02989 27439702 MVI PDPCALL,PDPOPEN INDICATE CALLER X02989 27439802 MVI PDPCODE,VSJFBERR SET INTERNAL ERROR CODE X02989 27439902 MVI PDPFUNC,VSOPEN LOAD FUNCTION CODE X02989 27449902 ST RDCB,PDPACB LOAD ADDR OF ACB X02989 27459902 ST RTIOT,PDPTIOT LOAD ADDR OF TIOT ENTRY X02989 27469902 L RD,CVTADDR GET CVT ADDR X02989 27479902 L RD,CVTSVDCB-CVT(,RD) GET SVCLIB DCB ADDR XM0856 27489902 MVC DXXCTL,OIN3860K LD NAME OF PROB DET RTN XM0856 27491902 LOAD EPLOC=DXXCTL,DCB=(RD) GET ADDR OF ROUTINE XM0856 27499902 LR RF,R0 LOAD ADDR OF PD ROUTINE X02989 27533202 LR R1,RCORE LD ADDR OF WORK AREA X02989 27543202 BALR RET,RF BR TO VSAM PD ROUTINE X02989 27583202 DELETE EPLOC=DXXCTL DELETE VSAM PD ROUTINE XM0856 27593202 XC DXXCTL,DXXCTL ZERO MODULE NAME XM0856 27593602 MVI JFCDSRG2,JFCORGAM SET VSAM INDICATOR X02989 27595202 NI ACBOFLGS,X'FF'-DCBOBUSY TURN OFF BUSY BIT X02989 27597202 B OIN37500 BR TO XCTL X02989 27647202 DROP RC X02989 27649202 * X02989 27732002 * SET LOCK BIT ON IN ALL ACBS, AND SET VSAM FLAG IN VSAM ACBS. X02989 27734002 * X02989 27736002 OIN32930 EQU * X02989 27736402 NI ACBOFLGS,X'FF'-DCBOLOCK SET LOCK BIT ON (0) X02989 27738002 TM JFCDSRG2,JFCORGAM TEST FOR VSAM X02989 27738102 BNO OIN32940 BRANCH IF NO X02989 27738202 MVI ACBAMETH,ACBVSAM SET VSAM FLAG IN ACB X02989 27743902 TM DXWORK1,ACBCAT IS OPEN FOR VSAM CATLG X02989 27745902 BO OIN32935 BR IF YES X02989 27747902 SR RTIOT,RTIOT ZERO TIOT PTR X02989 27749902 OIN32935 EQU * X02989 27751902 XC DXWORK1,DXWORK1 ZERO VSAM CATLG FLAG X02989 27752302 B OIN37500 BR TO XCTL TO VSAM MOD X02989 27753902 OIN32940 EQU * X02989 27754702 USING IHADCB,RDCB DEFINE BASE TO DCB X02989 27768202 * 27782102 IECRES XCTL,LOAD6V3A,0 XCTL TO SELECT A.M. EXEC A39979 27795202 * 27808302 OIN32950 EQU * A39979 27821402 .LIB13A4 ANOP 27834502 L RUCB,TIOEFSRT-K1 LOAD FIRST UCB ADDR FROM TIOT 27847602 * 27860702 TM DXECB,ECBNOERR CHECK FOR I/O ERROR 27873802 BO OIN33200 BR IF NO ERROR 27886902 OABD034 EQU 34 JFCB EXIT LIST ENTRY MISSING 27900000 LA R0,OABD034 LOAD OPEN J ERROR CODE 28000000 CLI DXECB,ECBCOD7F-ECBNOERR IS THIS OPEN J EXIT LIST ERROR 28100000 BE OIN33000 BR IF YES 28200000 * 28300000 OABD033 EQU 33 I/O ERROR READING JFCB 28400000 LA R0,OABD033 LOAD JFCB ERROR CODE 28500000 * 28600000 OIN33000 EQU * 28700000 DMABCOND (0),OIN3920X XCTL TO PROBLEM DET / ABEND 28800000 * 28900000 OIN33200 EQU * 29000000 LA RF,DXCCW1 RESTORE START CCW ADDR IN 29100000 ST RF,IOBSTART-K1 WORK IOB IN CASE RPS JFCB 29200000 AIF ('&LIB' EQ 'LIB1').LIB13AA 29250002 * X02989 29260002 * IF ISAM TO VSAM INTERFACE IS INDICATED, X02989 29270002 * SET WTGIDTTR FOR DCB TO ISAM INTERFACE MODULE. X02989 29280002 * X02989 29292002 TM DCBMACRF,DCBMEXCP IS ACCESS METHOD EXCP X02989 29294002 BO OIN33300 BR IF YES X02989 29296002 TM DCBDSRG1,DCBDSGIS ISAM DCB X02989 29298002 BNO OIN33300 BR IF NO X02989 29298402 TM JFCDSRG2,JFCORGAM IS DATA SET VSAM X02989 29298802 BNO OIN33300 BR IF NO X02989 29299202 NI DCBOFLGS,X'FF'-DCBOLOCK TURN OFF LOCK BIT X02989 29299602 IECRES XCTL,OIN3990Y,0 X02989 29309602 OIN33300 EQU * X02989 29324702 .LIB13AA ANOP 29350002 *********************************************************************** 29400000 * 29500000 * PERFORM ANY PROCESSING REQUIRED FOR AN OPEN OVERRIDE REQUEST. 29600000 * THE REQUEST IS MADE BY THE LABEL=(,,,IN) 29700000 * OR LABEL=(,,,OUT) DD STATEMENT PARAMETER. 29800000 * 29900000 TM JFCBMASK+K6,JFCINOP+JFCOUTOP IS AN OVERRIDE REQUESTED 30000000 BZ OIN33800 BR IF NO 30100000 BO OIN33600 IF BOTH ON, IGNORE THEM 30200000 TM JFCBMASK+K6,JFCINOP IS IT LABEL=(,,,IN) 30300000 BO OIN33400 BR IF YES 30400000 * LABEL=(,,,OUT) 30500000 TM 0(RPARC),PLISTOIN IS OPEN REQUEST FOR OUTIN 30600000 BNO OIN33800 BR IF NO 30700000 TM 0(RPARC),PLISTOP1-PLISTOIN MAKE SURE IT ISN'T OUTPUT 30800000 BNZ OIN33800 BR IF OUTPUT 30900000 OI 0(RPARC),PLISTOUT CHANGE OPEN TO OUTPUT 31000000 OI JFCBMASK+K6,JFCINOP SET FLAG FOR LAST LOAD 31100000 B OIN33800 PERFORM OUTPUT PROCESSING 31200000 * 31300000 OIN33400 TM 0(RPARC),PLISTIO IS OPEN REQUEST FOR INOUT 31400000 BNO OIN33800 BR IF NO 31500000 TM 0(RPARC),PLISTOP1-PLISTIO ENSURE IT IS ONLY INOUT 31600000 BNZ OIN33800 BR IF ANYTHING ELSE 31700000 NI 0(RPARC),X'FF'-PLISTOP1+PLISTIN CHANGE OPEN TO INPUT 31800000 OI JFCBMASK+K6,JFCOUTOP SET FLAG FOR LAST LOAD 31900000 B OIN33800 PERFORM INPUT PROCESSING 32000000 * 32100000 OIN33600 NI JFCBMASK+K6,X'FF'-JFCINOP-JFCOUTOP IGNORE OVERRIDE 32200000 * REQUEST BECAUSE OF 32300000 * CONFLICTING INFORMATION 32400000 OIN33800 EQU * 32500000 * 32600000 *********************************************************************** 32700000 * 32800000 * NEGATIVE INDICATOR FOR OPEN ACCESS METHOD EXECUTORS. 32900000 * WILL BE TURNED OFF IF DIRECT ACCESS WITH RPS FEATURE. 33000000 OI JFCBMASK+K6,JFCMNRPS TURN ON NO RPS INDICATOR BIT 33100000 * 33200000 CLC OIN3820K,JFCBDSNM CHECK FOR DUMMY, NULL DATA SET 33300000 BE OIN34000 BR IF YES 33400000 * 33500000 TM TIOELINK,TIOEQNAM IS THIS A TCAM DUMMY 33600000 BZ OIN34200 BRANCH IF NO 33700000 * 33800000 OIN34000 EQU * 33900000 OI JFCBMASK+K4,JFCMNULL SET NULL DATA SET SW ON 34000000 XC TIOEFSRT(K3),TIOEFSRT ZERO UCB ADDR FOR NULL DATA SET 34100000 B OIN37000 BR TO GO TO MERGE MODULE 34200000 * 34300000 OIN34200 EQU * 34400000 TM JFCDSORG,JFCORGIS IS THIS ISAM SA53186 34460002 BZ OIN34300 BRANCH IF NO SA53186 34470002 NI JFCBIND1,X'FF'-JFCRLSE YES, SET PARTIAL RLSE SA53186 34480002 * BITS TO ZERO SA53186 34490002 OIN34300 EQU * SA53186 34492002 CLI UCBID,UCBMAIN CHECK FOR 2321 34500000 BNE OIN34400 BR IF YES 34600000 * 34700000 TM UCBTBYT3,UCB3TAPE+UCB3DACC TEST IF MAGNETIC TAPE OR 34800000 BZ OIN36600 DIRECT ACCESS, BR IF NO 34900000 * 35000000 OIN34400 EQU * 35100000 CLI JFCBNVOL,K0 CHECK FOR ZERO NO. VOL 35200000 BNE OIN34600 BR IF NO 35300000 MVI JFCBNVOL,K1 SET NO. VOL TO ONE 35400000 * 35500000 OIN34600 EQU * 35600000 * 35700000 *****************************************************************A44135 35705021 * A44135 35710021 * MERGE DSORG FROM JFCB TO DCB PRIOR TO SELECTING VOLUME SERIAL A44135 35715021 * NUMBER A44135 35720021 * A44135 35725021 TM DCBMACRF,DCBMEXCP IS DCB EXCP A44135 35730021 BZ OIN34620 NO, BR, DSORG IS PRESENT A44135 35735021 TM DCBMACRF,DCBMFOUN DOES DSORG FIELD EXIST A44135 35740021 BZ OIN34660 NO, BR, TREAT EXCP WITH A44135 35745021 * NO DSORG AS PS A44135 35750021 OIN34620 EQU * A44135 35755021 NC DCBDSORG,DCBDSORG DSORG SPECIFIED A44135 35760021 BNZ OIN34640 YES, SKIP MERGE A44135 35765021 MVC DCBDSORG,JFCDSORG MERGE DSORG JFCB TO DCB A44135 35770021 OI JFCBMASK+3,X01 SET DSORG MERGE MASK BIT A44135 35775021 OIN34640 EQU * A44135 35780021 * A44135 35785021 *********************************************************************** 35800000 * 35900000 * TEST FOR A VALID VOLUME SEQUENCE NUMBER. WHEN PROCESSING IS 36000000 * TO BEGIN WITH A SELECTED VOLUME OF A PHYSICAL SEQUENTIAL 36100000 * DATA SET, THIS NUMBER IS USED AS AN INDEX TO THE APPROPRIATE 36200000 * VOLUME SERIAL NUMBER IN THE JFCB. IT MUST BE LESS THAN OR 36300000 * EQUAL TO THE NUMBER OF VOLUMES ALLOCATED TO THE DATA SET. 36400000 * 36500000 TM DCBDSORG,DCBORGPS IS THIS PHYSICAL SEQUENCIAL 36600000 BNO OIN35400 DATA SET, BR IF NO 36700000 * 36800000 OIN34660 EQU * A44135 36830021 * A44135 36860021 SR RC,RC CLEAR COMPARE REGISTER 36900000 IC RC,JFCBNVOL GET NO. OF VOLUMES IN JFCB 37000000 CH RC,JFCBVLSQ IS SEQ NO. GREATER THAN NO. 37100000 BNL OIN34800 OF VOLS ALLOCATED, BR IF NO 37200000 * 37300000 OABD037 EQU 37 VOLUME SEQUENCE NO IS TOO BIG 37400000 DMABCOND OABD037,OIN3920X XCTL TO PROBLEM DET / ABEND 37500000 * 37600000 OIN34800 EQU * 37700000 * 37800000 *********************************************************************** 37900000 * 38000000 * USE THE VOLUME SEQUENCE NUMBER TO PICK UP THE VOLUME SERIAL 38100000 * NUMBER FROM THE JFCB. (ONLY FOR PHYSICAL SEQUENTIAL ORGANIZATION 38200000 * CAN VOLUME SEQUENCE NUMBER BE USED AS AN INDEX TO SELECT THE 38300000 * VOLUME WHERE PROCESSING IS TO BEGIN.) 38400000 * 38500000 LH RC,JFCBVLSQ LOAD VOLUME SEQUENCE NO. 38600000 LTR RC,RC IS VOL SEQ NO. .GT. 0 A40552 38700021 BP OIN35200 BR IF YES, USE IT A40552 38800021 * 38900000 TM 0(RPARC),PLISTM03 CHECK FOR RDBACK 39000000 BM OIN35000 BR IF YES 39100000 * 39200000 TM 0(RPARC),PLISTM01 IS IT UPDAT OR INPUT 39300000 BZ OIN35400 BR IF YES, IGNORE MOD 39400000 TM 0(RPARC),PLISTM06 IS IT INOUT 39500000 BM OIN35400 BR IF YES, IGNORE MOD 39600000 * 39700000 TM JFCBIND2,JFCOLD IS OPEN FOR MOD (NOT OLD, NEW) 39800000 BNZ OIN35400 BR IF NO 39900000 * 40000000 OIN35000 EQU * 40100000 SR RC,RC USE NO. OF VOL SER NOS. AS 40200000 IC RC,JFCBNVOL VOL SEQ NO. OF LAST VOLUME 40300000 * 40400000 OIN35200 EQU * 40500000 CH RC,OIN3760K IS SEQ NO. GREATER THAN 5 40600000 BH OIN35600 BR IF YES TO READ EXTENSION 40700000 * 40800000 MH RC,OIN3800K MULTIPLY BY SIX 40900000 AR RC,RCORE 41000000 MVC DXVOLMT1,JFCBVOLS-K6-DXLBL(RC) SAVE VOL SER NO. 41100000 B OIN36600 BR TO CONTINUE 41200000 * 41300000 OIN35400 MVC DXVOLMT1,JFCBVOLS SAVE FIRST VOL SER NO. 41400000 B OIN36600 BR TO CONTINUE 41500000 * 41600000 *********************************************************************** 41700000 * 41800000 * READ JFCB EXTENSIONS TO GET THE ONE WITH THE DESIRED 41900000 * VOLUME SERIAL NUMBER IN IT. 42000000 * 42100000 OIN35600 EQU * 42200000 SH RC,OIN3760K REDUCE VOLUME NUMBER BY 5 42300000 AIF ('&LIB' NE 'LIB1').LIB23A5 42350000 * 42400000 XC DXCCW3,DXCCW3 CLEAR CCW TO BE MODIFIED 42500000 LA RF,DXLBL JFCB EXTENSION BUFFER 42600000 ST RF,DXCCW3 ADDRESS 42700000 OC DXCCW3,OIN3720K OR IN CMND, FLAGS, LENGTH 42800000 * 42900000 L R0,JFCBEXTL TTR OF FIRST JFCB EXTN 43000000 SLL R0,K8 SET TO TTR0 43100000 * 43200000 OIN35800 EQU * 43300000 STM RTIOT,RET,DXREG9 SAVE REGS 9-14 A42112 43400021 STM RDCB,RBASE,DXREG0 SAVE DCB AND BASE REGS A42112 43500021 L RB,CVTPTR GET CVT ADDR 43600000 LA R1,DXDEB POINT TO WORK DEB 43700000 L RF,CVTPCNVT-CVT(,RB) GET ADDR OF IECPCNVT ROUTINE 43800000 LA RDCB,DXDAADDR POINT TO MBBCCHHR RESULT FIELD 43900000 BALR RET,RF BR TO CONVERT TTR TO MBBCCHHR 44000000 * 44100000 L RUCB,DXDEBUCB GET TS UCB ADDR 44200000 TM UCBTBYT2,UCBRPS IS THIS AN RPS DEVICE 44300000 BZ OIN36000 BR IF NOT RPS 44400000 * 44500000 L RTIOT,DXREG9 RESTORE REG 9 TIOT ADDR M2557 44550021 L R0,TIOEJFCB LOAD REG 0 WITH TTR0 A42112 44600021 L RF,CVTPTR GET CVT ADDR A42112 44700021 L R3,CVTJOB-CVT(,RF) GET ADDR JOB SCHED DCB A42112 44800021 L RF,CVT0SCR1-CVT(,RF) GET ADDR OF IEC0SCR1 RTN A42112 44900021 L RF,K4(,RF) GET ADDR OF IEFQCNVT RTN A42112 45000021 BALR RET,RF BR CONVERT TTR0 TO BBIR A42112 45100021 * 45200021 LA R2,DXCCW7 PTR TO SECTOR ID RESULT A42112 45300021 L RF,DXDEBUCB GET ADDR JOB SCHED UCB A42112 45400021 IC RF,UCBTBYT4-UCBOB(,RF) GET JOBQUEUE UCB DEVICE A42112 45500021 SLL RF,K24 TYPE IN HIGH ORDER BYTE A42112 45600021 OR R2,RF PUT DEVICE TYPE IN REG 2 A42112 45700021 L RF,CVTPTR GET CVT ADDR A42112 45800021 L RF,CVT0SCR1-CVT(,RF) GET ADDR OF IEC0SCR1 RTN A42112 45900021 BALR RET,RF BR CONVERT BBIR TO SECID A42112 46000021 * 46600000 LA RF,DXCCW4 SET IOB START CCW ADDR TO 46700000 ST RF,IOBSTART-K1 SET SECTOR CCW FOR RPS 46800000 * 46900000 OIN36000 EQU * 47000000 LM RTIOT,RET,DXREG9 RESTORE REGS 9-14 A42112 47100021 LM RDCB,RBASE,DXREG0 RESTORE DCB AND BASE REG A42112 47200021 * 47300000 EXCP DXIOB READ JFCB EXTENSION 47400000 * 47500000 IECRES WAIT WAIT FOR READ COMPLETE 47600000 * 47700000 TM DXECB,ECBNOERR CHECK FOR I/O ERROR 47800000 BO OIN36200 BR IF NO ERROR 47900000 .LIB23A5 ANOP 47901000 AIF ('&LIB' EQ 'LIB1').LIB13A5 47902000 * 47903000 * * 47904000 * CREATE PARAMETER LIST FOR READ/WRITE JFCB MACRO * 47905000 * * 47906000 LA R0,QMWORK SIZE OF QMI WORK AREA 47907000 * 47908000 GETMAIN R,LV=(0) GET CORE FOR JES WORK AREA 47909000 * 47910000 * 47911000 LR RB,R1 ESTABLISH BASE FOR QMIOLIST 47912000 USING QMIOP,RB 47913000 ST R1,DXWORK1 SAVE POINTER TO QMI WORK AREA 47914000 * 47915000 LA R1,K96(RB) POINT TO JES WORK AREA XM5629 47916000 ST R1,QMIWRKAD STORE ADDRESS OF WORK AREA 47917000 * 47918000 L RF,CVTPTR ADDRESS OF CVT 47919000 L RF,CVTTCBP-CVT(RF) GET ADDRESS OF TCB POINTERS 47920000 L RF,K4(RF) GET CURRENT TCB ADDRESS 47921000 * 47922000 ST RF,QMITCBAD STORE CURRENT TCB ADDR IN 47923000 * QMIOLIST 47924000 * 47925000 K366 EQU 366 CONSTANT 366 XM5629 47925400 LA R1,K366(RB) POINT TO JFCB EXT. AREA XM5629 47926000 ST R1,QMIRECAD STORE POINTER TO BUFFER 47927000 * 47928000 * 47929000 * 47930000 L R0,JFCBEXTL JFCB EXTENSION TTR 47931000 SLL R0,K8 SET TO TTR0 47932000 MVI QMIRECL+K1,JFCBLGTH SETUP READ LENGTH 47933000 MVI QMIRECL,K0 ZERO HIGH ORDER BYTE 47934000 * 47935000 MVI QMIFLAGS,QMIOREAD INDICATE READ OPERATION 47936000 * 47937000 OIN35800 EQU * 47938000 * 47939000 ST R0,QMIDSKAD STORE JFCB TTR0 47940000 * 47941000 LR R1,RB POINT TO PARAMETER LIST 47942000 LA RD,K24(R1) SET UP SAVE AREA FOR XM5629 47943000 * MACRO 47943400 * 47944000 * ISSUE READ/WRITE JFCB MACRO 47945000 * 47946000 QMNGRIO 47947000 * 47948000 MVC DXLBL(JFCBEXT),K366(RB) MOVE JFCB EXT XM5629 47949000 * MOVE FIRST 94 BYTES OF JFCB EXT 47950000 * 47951000 LTR RF,RF SUCCESSFUL READ/WRITE 47952000 BZ OIN36200 BR IF NO ERROR 47953000 * 47954000 .LIB13A5 ANOP 47955000 * 48000000 OABD032 EQU 32 I/O ERROR READING JFCB EXT 48100000 DMABCOND OABD032,OIN3920X XCTL TO PROBLEM DET / ABEND 48200000 AIF ('&LIB' EQ 'LIB1').LIB13A6 48209000 QMIFREE EQU * 48218000 L R1,DXWORK1 LOAD ADDRESS OF WORK STORAGE 48227000 LA R0,QMWORK SPECIFY 500 BYTE SIZE 48236000 * 48245000 FREEMAIN R,LV=(0),A=(1) 48254000 DROP RB 48263000 BR RET RETURN TO CALLER 48272000 * 48281000 .LIB13A6 ANOP 48290000 * 48300000 OIN36200 EQU * 48400000 CH RC,OIN3740K GREATER THAN 15 VOLS 48500000 BNH OIN36400 BR IF NO 48600000 SH RC,OIN3740K SUBTRACT 15 48700000 * 48800000 L R0,0(,RCORE) TTR OF NEXT JFCB 48900000 IC R0,OIN3840K SET TO TTR0 49000000 B OIN35800 BR TO READ NEXT JFCB EXT 49100000 * 49200000 OIN36400 BCTR RC,0 DECR BY 1. 49300000 MH RC,OIN3800K MULTIPLY BY 6 49400000 AR RC,RCORE ADDR OF VOL SERIAL-4 49500000 MVC DXVOLMT1,K4(RC) SAVE DESIRED VOL SER NO. 49600000 AIF ('&LIB' EQ 'LIB1').LIB13A7 49620000 BAL RET,QMIFREE FREE QMI WORK AREA 49640000 .LIB13A7 ANOP 49660000 * 49700000 LA RF,DXCCW1 RESTORE START CCW ADDR IN 49800000 ST RF,IOBSTART-K1 WORK IOB IN CASE RPS JFCB 49900000 * 50000000 *********************************************************************** 50100000 * 50200000 * DETERMINE THE NEXT MODULE TO GO TO ACCORDING TO WHETHER THE 50300000 * DEVICE IS DIRECT ACCESS, MAGNETIC TAPE, OR UNIT RECORD AND OTHER. 50400000 * 50500000 OIN36600 EQU * 50600000 CLI UCBID,UCBMAIN CHECK IF 2321 50700000 BNE OIN36800 BR IF YES TO GO TO DA STRING 50800000 * 50900000 LA RUCB,0(,RUCB) CLEAR HIGH ORDER BYTE 51000000 ST RUCB,DXDEBUCB STORE UCB ADDR IN WORK DEB 51100000 * 51200000 TM UCBTBYT3,UCB3DACC TEST IF DIRECT ACCESS 51300000 BO OIN36800 BR IF YES TO GO TO DA STRING 51400000 * 51500000 TM UCBTBYT3,UCB3TAPE TEST IF MAGNETIC TAPE 51600000 BZ OIN37000 BR IF NOT TO GO TO MERGE MOD 51700000 * 51800000 * BR TO MAGNETIC TAPE STRING 51900000 IECRES XCTL,OIN3940X,0 XCTL TO FIRST TAPE MODULE 52000000 * 52100000 OIN36800 EQU * BR TO DIRECT ACCESS STRING 52200000 IECRES XCTL,OIN3950X,0 XCTL TO 1ST DIRECT ACCESS MOD 52300000 * 52400000 OIN37000 EQU * UNIT RECORD, NULLFILE, ETC. 52500000 IECRES XCTL,OIN3960X,0 XCTL TO FIRST COMMON MERGE MOD 52600000 AIF ('&LIB' EQ 'LIB1').LIB13AC 52610002 OIN37500 EQU * VSAM STRING XM1037 52630002 IECRES XCTL,OIN3980X,0 XCTL TO VSAM STRING XM1037 52660002 .LIB13AC ANOP 52670002 * 52700000 *********************************************************************** 52800000 * 52900000 * CONSTANTS 53000000 * 53100000 AIF ('&LIB' NE 'LIB1').LIB23A6 53150000 OIN3720K DC X'060000002000005E' READ DATA (SLI, 94 BYTES) 53200000 .LIB23A6 ANOP 53250000 * 53300000 OIN3740K DC H'15' FOR JFCB EXT CHKING 53400000 OIN3760K DC H'5' NO. VOL SER NOS IN FIRST JFCB 53500000 OIN3800K DC H'6' NO CHARS PER VOL SERIAL NO 53700000 OIN3820K DC C'NULLFILE ' DSNAME FOR NULL DATA SET 53800000 * 53900000 OIN3840K DC X'00' CONSTANT 0 54000000 * 54400000 AIF ('&LIB' NE 'LIB1').LIB23A7 54450000 XCTLTABL ID=(OIN3920X,0P,OIN3930X,3A,OIN3940X,3B, X54500000 OIN3950X,4E,OIN3960X,6J,OIN3970X,9R) 54600000 .LIB23A7 ANOP 54610000 AIF ('&LIB' EQ 'LIB1').LIB13A8 54620000 OIN3860K DC C'IDA0192P' VSAM PROB DET RTN NAME XM0856 54622002 XCTLTABL ID=(OIN3920X,0P,OIN3930X,3A,OIN3940X,3B, X54630000 OIN3950X,4E,OIN3960X,6J,OIN3970X,9R,OIN3980X,2A, X02989X54640002 OIN3990X,8N,OIN3990Y,2I,LOAD6V3A,6V), X02989X54645002 SVC=019,LENGTH=2048,PATCH=100 X02989 54650002 .LIB13A8 ANOP 54660000 * 54700000 AIF ('&LIB' EQ 'LIB1').LIB13A9 54720000 IFGACB 54730000 IEFQMIOP 54740000 IEFJESCT 54760000 .LIB13A9 ANOP 54780000 IECDSECS EXPAND=YES EXPAND DESIRED DSECTS HERE 54800000 * 54900000 END 55000000 ./ ADD SSI=00011369,NAME=IFG0193B,SOURCE=0 TITLE 'IFG0193B/OPEN TAPE - RESOLVE DENSITY - VERIFY ASCII' 00200021 COPY LCGASMSW 00250000 IFG0193B CSECT 00800021 *********************************************************************** 01000021 * * 01200021 * * 01400021 * RELEASE 25 DELETIONS/CHANGES * 01450021 * RELEASE 24 DELETIONS/CHANGES * 01500021 * RELEASE 23 DELETIONS/CHANGES * 01550021 * RELEASE 22 DELETIONS/CHANGES * 01560021 * RELEASE 21.8 DELETIONS/CHANGES * 01570003 *000 SA65007 01580003 * RELEASE 21 DELETIONS/CHANGES * 01600021 *0000044000-046000,204000-208000,232000-238000,436000,540000, M0034 01660021 *0000544000,602000-748000,754000,756000 M0034 01720021 *0000408000 S21940 02500021 *0000012000-014000,018000-024000,628000-629500 M1996 02550021 *0000690500,691500-695000,696000 SA58669 02560001 * * 02600021 * STATUS CHANGE LEVEL 000 * 02800021 * * 03000021 * FUNCTION - * 03200021 * THIS MODULE CONTAINS THE FUNCTION(S) OR PART(S) OF FUNCTION(S)-- * 03400021 * OPEN TAPE INITIAL COMMON FUNCTION. * 03600021 * OPEN TAPE ERROR DEMOUNT MESSAGE FUNCTION M0034* 03700021 * REFER TO THE FOLLOWING 'FUNCTION PROLOG(S)' FOR DETAILS. * 03800021 * * 04000021 * ENTRY POINTS - * 04200021 * IFG0193B - ENTERED FROM IFG0194H, IFG0195K, IFG0196N M0034* 04300021 * IFG0193A M0034* 04400021 * BRANCH TABLE OFFSETS IN REGISTER RET-- M0034* 04500021 * 0 - ENTRY TO OPEN TAPE INITIAL COMMON FUNCTION M0034* 04600021 * 4 - ENTRY TO OPEN TAPE ERROR DEMOUNT FUNCTION M0034* 04700021 * * 04800021 * INPUT - * 05000021 * REFER TO THE FOLLOWING 'FUNCTION PROLOG(S)'. * 05200021 * * 05400021 * OUTPUT - * 05600021 * REFER TO THE FOLLOWING 'FUNCTION PROLOG(S)'. * 05800021 * * 06000021 * EXTERNAL REFERENCES - * 06200021 * IFG019RA - OPEN/CLOSE/EOV RESIDENT ROUTINE FOR * 06400021 * XCTL AND WAIT. * 06600021 * REFER TO THE FOLLOWING 'FUNCTION PROLOG(S)'. * 06800021 * * 07000021 * EXITS, NORMAL - * 07200021 * EXIT VIA THE RESIDENT ROUTINE XCTL TO ONE OF THE FOLLOWING-- * 07400021 * IFG0194D - NON SPECIFIC OR VOLUME REFERENCE REQUESTS. * 07600021 * IFG0194F - SPECIFIC VOLUME REQUESTS. * 07800021 * IFG0194G - FOR A REMOUNT WHEN ERROR DEMOUNT FUNCTION M0034* 07860021 * BUILDS THE MESSAGE M0034* 07920021 * REFER TO THE FOLLOWING 'FUNCTION PROLOG(S)'. * 08000021 * * 08200021 * EXITS, ERROR - * 08400021 * EXIT IS TO THE PROBLEM DETERMINATION MODULE IFG0190P, IF AN * 08600021 * ABEND SITUATION OCCURS IN THIS MODULE. REFER TO THE FOLLOWING * 08800021 * 'FUNCTION PROLOG(S)'. * 09000021 * * 09200021 * TABLES/WORK AREAS - * 09400021 * REFER TO THE FOLLOWING 'FUNCTION PROLOG(S)'. * 09600021 * * 09800021 * ATTRIBUTES - * 10000021 * REENTRANT, REFRESHABLE, READ-ONLY, ENABLED, PRIVILEGED * 10200021 * * 10400021 * CHARACTER CODE DEPENDENCY - * 10600021 * CLASS ONE CHARACTER CODE DEPENDENCY - THE EBCDIC CHARACTER CODE * 10800021 * WAS USED FOR ASSEMBLY. THE MODULE MUST BE REASSEMBLED IF A * 11000021 * DIFFERENT CHARACTER SET IS USED FOR EXECUTION. * 11200021 * * 11400021 * NOTES - * 11600021 * REFER TO THE FOLLOWING 'FUNCTION PROLOG(S)'. * 11800021 * * 12000021 *********************************************************************** 12200021 EJECT 12400021 *********************************************************************** 12600021 * * 12800021 * FUNCTION PROLOG * 13000021 * * 13200021 *********************************************************************** 13400021 * * 13600021 * FUNCTION NAME - * 13800021 * OPEN TAPE INITIAL COMMON FUNCTION. * 14000021 * * 14200021 * (STATUS) - * 14400021 * NOT APPLICABLE * 14600021 * * 14800021 * FUNCTION - * 15000021 * VERIFY THAT A FILE SEQUENCE NUMBER HAS BEEN SPECIFIED. SET * 15200021 * TO A DEFAULT VALUE OF ONE IF NOT SPECIFIED. * 15400021 * CLEAR SMF COUNTERS AND FLAGS FOR SMF REQUESTS. * 15600021 * SET RER FOR NL TAPES. * 15800021 * RESOLVE DENSITY AND RECORDING TECHNIQUE. SET IN WORK AREA DEB. * 16000021 * FOR ASCII REQUESTS VERIFY THAT ASCII IS SYSGENED AND THAT IT * 16200021 * IS NOT A SEVEN TRACK TAPE DRIVE. * 16400021 * SET THE CONDITIONS TO PROCESS A SYSOUT TAPE AS DISPOSITION MOD. * 16600021 * * 16800021 * ENTRY POINTS - * 17000021 * ENTERED FROM OPEN TAPE INITIAL VOLUME SERIAL FUNCTION FOR ALL * 17200021 * TAPE DCBS. * 17400021 * REFER TO THE PRECEEDING MODULE PROLOG. * 17600021 * * 17800021 * INPUT - * 18000021 * A POINTER TO EACH OF THE FOLLOWING-- * 18200021 * CURRENT PARAMETER LIST ENTRY. * 18400021 * DD ENTRY IN THE TIOT. * 18600021 * WTG TABLE. * 18800021 * CURRENT WTG TABLE ENTRY. * 19000021 * DCB. * 19200021 * OPEN WORK AREA. * 19400021 * RESIDENT ROUTINE. * 19600021 * * 19800021 * OUTPUT - * 20000021 * DENSITY AND RECORDING TECHNIQUE SET IN THE WORK AREA DEB. * 20200021 * WHEN EXITING TO THE OPEN TAPE ERROR DEMOUNT FUNCTION-- M0034* 20400021 * R0 - IEC114E MESSAGE MODIFIER CHARACTER M0034* 20600021 * RC - INTERNAL ABEND CODE M0034* 20800021 * * 21000021 * EXTERNAL REFERENCES - * 21200021 * REFER TO THE PRECEEDING MODULE PROLOG. * 21400021 * * 21600021 * EXITS, NORMAL - * 21800021 * OPEN TAPE VOLUME REFERENCE FUNCTION - NON-SPECIFIC OR VOLUME * 22000021 * REFERENCE REQUESTS. * 22200021 * OPEN TAPE MOUNT VERIFICATION FUNCTION - SPECIFIC REQUESTS. * 22400021 * * 22600021 * EXITS, ERROR - * 22800021 * REFER TO THE PRECEEDING MODULE PROLOG. * 23000021 * AN EXIT IS TAKEN TO ABEND INTERPRETATION AND RECOVERY WITH M0034* 23300021 * THE INTERNAL CODE(S)-- M0034* 23600021 * 23 - 413 ABEND - 800 BPI SPECIFIED TO A PHASE ENCODED * 24000021 * NON DUAL DENSITY DRIVE. * 24200021 * AN EXIT IS TAKEN TO OPEN TAPE ERROR DEMOUNT MESSAGE FUNCTIONM0034* 24240021 * WITH THE INTERNAL CODE(S)-- M0034* 24280021 * 17 - 013 ABEND - ASCII REQUESTED, NOT SYSGENED M0034* 24320021 * 18 - 013 ABEND - ASCII SPECIFIED TO A SEVEN TRACK DRIVE M0034* 24360021 * * 24400021 * TABLES/WORK AREAS - * 24600021 * THE OPEN, CLOSE, OR EOV WORK AREA AND THE WHERE-TO-GO (WTG) * 24800021 * TABLE ARE DESCRIBED BY THE DSECTS AT THE END OF THE LISTING. * 25000021 * * 25200021 * ATTRIBUTES - * 25400021 * REFER TO THE PRECEEDING MODULE PROLOG. * 25600021 * * 25800021 * CHARACTER CODE DEPENDENCY - * 26000021 * REFER TO THE PRECEEDING MODULE PROLOG. * 26200021 * * 26400021 * NOTES - * 26600021 * * 26800021 *********************************************************************** 27000021 EJECT 27200021 * 27400021 USING FORCORE,RCORE WORK AREA 27600021 USING TIOENTRY,RTIOT TIOT ENTRY 27800021 USING IHADCB,RDCB DCB 28000021 USING UCBOB,RUCB UCB 28200021 BALR RBASE,0 SET BASE REGISTER 28400021 USING *,RBASE 28600021 * 28800021 * BRANCH TABLE M0034 28820021 * M0034 28840021 B OTA00000(RET) GO TO PROPER FUNCTION M0034 28860021 OTA00000 EQU * BRANCH TABLE ENTRIES M0034 28880021 B OTA00050 INITIAL COMMON FUNCTION M0034 28900021 B OTA02620 ERROR DEMOUNT MSG FUNCT. M0034 28920021 * M0034 28940021 OTA00050 EQU * ENTRY M0034 28960021 LH RD,JFCBFLSQ GET JFCB FILE SEQUENCE NO. 29000021 LTR RD,RD CHECK FILE SEQ NO. 29200021 BNZ OTA00100 BR IF NOT ZERO 29400021 MVI JFCBFLSQ+K1,K1 SET FILE SEQ TO ONE 29600021 * 29800021 OTA00100 EQU * 30000021 L RUCB,TIOESTTB RESET UCB POINTER 30200021 * 30400021 OTA00200 EQU * TAPE PROCESSING 30600021 CLI UCBTBYT4,X'03' CHECK DEVICE FOR ASPEN 30800021 BNE OTA00300 BRANCH IF NOT 31000021 MVI K11(RUCB),X'18' POINT TO ATTENTION ROUTINE 31200021 OTA00300 EQU * 31400021 L RC,K48(K0,RUCB) ADDR OF UCB EXTENTION. 31600021 TM K48(RUCB),X'C0' Q. VOLUME STATISTICS KEPT. 31800021 BZ OTA00400 NONE. 99223 32000003 XC K8(K2,RC),K8(RC) CLEAR S.U.M. 32200021 NI K48(RUCB),X'E0' CLEAR FLAGS. 32250003 OTA00400 EQU * 32749603 NI DXDEBOFL,X'FE' ZERO OUT RER BIT 7 IN WORK DEB 32800021 TM JFCBLTYP,JFCNL TEST FOR NL TAPES SPEC 33000021 BZ OTA00500 BRANCH IF NOT NL TAPES 33200021 OI DXDEBOFL,X'01' SET RER BIT 7 IN WORK DEB 33400021 * 33600021 OTA00500 EQU * 33800021 TM UCBWGT,UCBOUT TEST FOR SYSOUT 34000021 BNO OTA00600 BRANCH IF NOT SYSOUT 34200021 MVC JFCBFLSQ,UCBFSEQ MOVE UCB FIL SEQ TO JFCB 34400021 * 34600021 OTA00600 EQU * 34800021 * 35000021 OTA00700 EQU * 35200021 SPACE 35400021 * THE FOLLOWING CODE WILL BUILD THE DXDEBMOD FIELD 35600021 * TO SET THE DENSITY IN WHICH THE LABELS ARE TO BE 35800021 * WRITTEN AND TO INSURE COMPLETION OF THE JFCDEN FLD 36000021 SPACE 36200021 TM DCBMACRF,DCBMEXCP IF ACC METH NOT EXCP 36400021 BZ OTA00800 GO TEST FOR DEN IN DCB 36600021 SPACE 36800021 TM DCBMCRF1,DEPEND IF NO TAPE DEPEND FLDS 37000021 BZ OTA00900 GO FIND DEVICE TYPE 37200021 SPACE 37400021 OTA00800 EQU * TEST IF DENSITY SPECIFIED 37600021 SPACE 37800021 CLI DCBDEN,K0 IF NO DENSITY IN THE DCB 38000021 BE OTA00900 GO FIND DEVICE TYPE 38200021 SPACE 38400021 MVC JFCDEN,DCBDEN USE DCB DENSITY IF AVAIL 38600021 SPACE 38800021 OTA00900 EQU * FIND DEVICE TYPE 39000021 SPACE 39200021 TM UCBTBYT2,UCB3TAPE IF 7 TRACK UNIT CONNECTED 39400021 BO OTA01200 GO PROCESS DENSITY RQRMTS 39600021 SPACE 39800021 * NINE TRACK TAPE UNITS 40000021 SPACE 40200021 MVI DXDEBMOD,DCBD1600 TRY 1600 BPI FIRST 40400021 TM UCBTBYT1,PE IS THIS A PE UNIT 99223 40600003 BO OTA00950 GO CHECK DCB FOR 800 BPI S21940 40800003 SPACE 41000021 TM UCBTBYT1,UCB1FEA6 IS THIS A 6250 BPI UNIT 99223 41050003 BZ OTA01060 NO,MUST BE 800 BPI 99223 41100003 MVI DXDEBMOD,DCBD6250 SET FOR 6250 BPI 99223 41150003 CLI JFCDEN,K0 IF DENSITY IS SPECIFIED 99223 41160003 BNE OTA00930 GO FIND OUT WHICH 99223 41170003 MVI JFCDEN,DCBD6250 NO,6250 BPI 99223 41180003 OTA00930 EQU * CHECK 6250 OR 1600 BPI 99223 41190003 CLI JFCDEN,DCBD6250 IF DENSITY = 6250 BPI 99223 41192003 BE OTA01500 PROCESSING FINISHED 99223 41194003 SPACE 41196003 TM UCBTBYT2,UCB2OPT3 6250/1600 BPI FEATURE 99223 41198003 BZ OTA01040 NO,WRONG DENSITY SPECIFIED92223 41198403 MVI DXDEBMOD,DCBD1600 SET FOR 1600 BPI 99223 41198803 MVI JFCDEN,DCBD1600 INSURE CMPL OF JFCDEN FLD 99223 41199203 B OTA01500 PROCESSING FINISHED 99223 41199603 SPACE 41199703 OTA00950 EQU * CHECK PE UNIT DENSITY 99223 41199803 CLI JFCDEN,K0 IF DENSITY WAS SPECIFIED 41200021 BNE OTA01000 GO FIND OUT WHICH 41400021 SPACE 41600021 MVI JFCDEN,DCBD1600 IF NOT DEFAULT TO 1600BPI 41800021 SPACE 42000021 OTA01000 EQU * 1600 BPI 42200021 SPACE 42400021 CLI JFCDEN,DCBD1600 IF DENSITY = 1600 BPI 42600021 BE OTA01500 PROCESSING FINISHED 42800021 SPACE 43000021 TM UCBTBYT2,X'20' IS DEV DUAL DENSITY 43200021 BNZ OTA01100 YES, BRANCH 43400021 SPACE 43460021 SPACE 43564203 OTA01040 EQU * WRONG DENSITY ABEND S21940 43587103 OABD023 EQU 23 INTERNAL ABEND CODE M0034 43610021 LA R0,OABD023 INTERNAL ABEND CODE M0034 43700021 B OTA03000 GO ABEND 43800021 SPACE 43820021 OTA01060 EQU * ARE DCB, UNIT DENSITIES S21940 43840021 * CONSISTENT 43860021 CLI JFCDEN,K0 IS DENSITY SPECIFIED S21940 43880021 BE OTA01100 NO, GO SET TO 800 BPI S21940 43900021 CLI JFCDEN,DCBD800 YES, IS IT 800 BPI S21940 43920021 BNE OTA01040 NO, GO ABEND S21940 43940021 * YES, CONTINUE 43960021 SPACE 44000021 OTA01100 EQU * 800 BPI 44200021 SPACE 44400021 MVI DXDEBMOD,DX800 MUST BE 800 BPI 44600021 MVI JFCDEN,JFC800 INSURE CMPL OF JFCDEN FLD 44800021 B OTA01500 PROCESSING FINISHED 45000021 SPACE 45200021 OTA01150 EQU * 1600 BPI 99223 45250003 MVI DXDEBMOD,DCBD1600 MUST BE 1600 BPI 99223 45300003 MVI JFCDEN,DCBD1600 INSURE CMPL OF JFCDEN FLD 99223 45350003 B OTA01500 PROCESSING FINISHED 99223 45360003 *** 45400021 SPACE 45600021 * SEVEN TRACK TAPE UNITS 45800021 SPACE 46000021 OTA01200 EQU * 7 TRACK PROCESSING 46200021 SPACE 46400021 MVI DXDEBMOD,DCBD800 TRY DEFAULT DENSITY FIRST 46600021 CLI JFCDEN,K0 IF DENSITY WAS SPECIFIED 46800021 BNE OTA01300 GO FIND OUT WHICH 47000021 SPACE 47200021 MVI JFCDEN,DCBD800 IF NOT, LOAD DEFAULT DEN 47400021 SPACE 47600021 OTA01300 EQU * DEFAULT DENSITY 47800021 SPACE 48000021 CLI JFCDEN,DCBD800 IF DENSITY = DEFAULT 48200021 BE OTA01400 GO GET RECORDING TECH 48400021 SPACE 48600021 MVC DXDEBMOD,JFCDEN GET USER SPEC DENSITY 48800021 SPACE 49000021 OTA01400 EQU * TRACK RECORDING TECHNIQUE 49200021 SPACE 49400021 OI DXDEBMOD,DCBTRTET EVEN PARITY & TRANSLATOR 49600021 SPACE 49800021 * 50000021 * THIS SECTION WILL TEST IF THE ASCII OPTION WAS SYSGENED WHEN 50200021 * THE USER SPECIFIED ASCII PROCESSING, OR 7-TRACK TAPE REQUEST 50400021 * 50600021 OTA01500 EQU * 50800003 TM JFCBLTYP,JFCBAL WAS AL REQUESTED 51000021 BO OTA01600 YES, GO TEST IF SYSGENED 51200021 TM JFCBLTYP,JFCNL NO LABEL SPECIFIED 51400021 BNO OTA01800 NO, BRANCH 51600021 TM JFCOPTCD,JFCBUL OPT CODE Q SPECIFIED 51800021 BO OTA01700 YES, BRANCH 52000021 TM DCBMACRF,DCBMEXCP IS DCB FOR EXCP 52200021 BO OTA02200 YES, BRANCH 52400021 TM DCBOPTCD,JFCBUL OPT CODE Q IN DCB 52600021 BO OTA01700 YES, BRANCH 52800021 B OTA02200 NO, CONTINUE 53000021 OTA01600 EQU * 53200021 OI JFCOPTCD,JFCBUL DEFAULT TO OPTCD = Q 53400021 OTA01700 L R1,CVTPTR LOAD ADDRESS OF CVT 53600021 TM CVTOPTA-CVT(R1),CVTASCII WAS ASCII SYSGENED 53800021 BZ OTA02400 NO, GO SET UP FOR ERR M0034 53900021 * MSG FUNCTION M0034 54000021 TM UCBTBYT2,UCB3TAPE SEVEN TRACK TAPE 54200021 BO OTA02420 YES, GO SET UP FOR ERR M0034 54300021 * MSG FUNCTION M0034 54400021 OTA01800 EQU * CONTINUE TAPE PROCESSING 54600021 TM JFCBLTYP,JFCBLP+JFCNL CK FOR UNLABEL 54800021 BM OTA02200 YES, BRANCH 55000021 OTA01900 EQU * 55200021 TM UCBWGT,UCBOUT TEST FOR SYSOUT 55400021 BZ OTA02200 BR IF NOT SYSOUT 55600021 OI JFCBIND2,JFCOLD INSURE DISP IS NOT MOD 55800021 LH RD,UCBFSEQ GET FILE SEQUENCE NO. 56000021 BCT RD,OTA02100 BR, IF NOT FIRST DATASET 56200021 OTA02000 EQU * 56400021 B OTA02200 CONTINUE IF FIRST DATA SET 56600021 OTA02100 EQU * 56800021 MVC DXVOLMT1,UCBVOLI MOVE VOLUME SERNO TO WORK AREA 57000021 MVC JFCBVOLS(K6),UCBVOLI MOVE VOLUME SERNO TO JFCB 57200021 * 57400021 OTA02200 EQU * 57600021 LA RF,ID3B4I POINT TO FINAL COMMON IDTTR 57800021 TM UCBWGT,UCBIN SYSIN DATA SET 58000021 BO OTA02300 YES, GO TO FINAL COMMON 58200021 LA RF,ID3B4D POINT TO VOL REF IDTTR 58400021 CLI DXVOLMT1,VIRTUAL TEST FOR PSEUDO VOLID IN JFCB 58600021 BE OTA02300 BRANCH TO EXIT MODULE 58800021 CLI DXVOLMT1,BLANK IS VOLSER BLANK SA65007 58850003 BE OTA02300 BRANCH TO EXIT MOD SA65007 58900003 LA RF,ID3B4F POINT TO MOUNT VERIFICATION 59000021 LA RET,K0 INITIAL ENTRY VALUE 59200021 * 59400021 OTA02300 EQU * 59600021 IECRES XCTL,(RF) 59800021 * 60000021 * SET UP FOR OPEN TAPE ERROR DEMOUNT MESSAGE FUNCTION M0034 60050021 OTA02400 EQU * AL, ASCII NOT SYSGENED M0034 60100021 OABD017 EQU 17 INTERNAL ABEND CODE M0034 60150021 LA RC,OABD017 INT CODE M0034 60200021 LA R0,CHAR3 MSG MODIFIER CHAR M0034 60250021 B OTA02600 GO TO PROPER ENTRY IN M0034 60300021 * ERROR DEMOUNT MSG FUNCT M0034 60350021 OTA02420 EQU * AL, 7 TRACK INVALID M0034 60400021 OABD018 EQU 18 INTERNAL ABEND CODE M0034 60450021 LA RC,OABD018 INT CODE M0034 60500021 LA R0,CHAR4 MSG MODIFIER CHAR M0034 60550021 * GO TO PROPER ENTRY IN M0034 60600021 * OPEN TAPE ERROR DEMOUNT M0034 60650021 * FUNCTION M0034 60700021 EJECT 60750021 *********************************************************************** 60800021 * * 60850021 * FUNCTION PROLOG * 60900021 * * 60950021 *********************************************************************** 61000021 * * 61050021 * FUNCTION NAME - * 61100021 * OPEN TAPE ERROR DEMOUNT FUNCTION * 61150021 * * 61200021 * (STATUS) - * 61250021 * NOT APPLICABLE * 61300021 * * 61350021 * FUNCTION - * 61400021 * THIS FUNCTION RECEIVES CONTROL WHEN AN ERROR IS DETECTED FOR * 61450021 * ASCII TAPE PROCESSING RESULTING IN AN IEC114E D MESSAGE AND * 61500021 * SUBSEQUENT TERMINATION THROUGH THE ABEND INTERPRETATION AND * 61550021 * RECOVERY STRING. * 61600021 * * 61650021 * THE IEC114E D DEMOUNT MESSAGE IS BUILT. IF A NON-SPECIFIC * 61700021 * VOLUME REQUEST WAS MADE, AN EXIT IS TAKEN TO THE OPEN TAPE * 61750021 * MESSAGE MODULE FOR A REMOUNT. OTHERWISE, THE TAPE IS UNLOADED, * 61800021 * CONTROL BLOCKS ARE RESET, THE PREVIOUS MOUNT MESSAGE IS DELETED, * 61850021 * THE DEMOUNT MESSAGE IS ISSUED, AND THE APPROPRIATE ERROR CODE * 61900021 * IS PASSED TO ABEND INTERPRETATION AND RECOVERY. * 61950021 * * 62000021 * ENTRY POINTS - * 62050021 * REFER TO THE PRECEEDING MODULE PROLOG. * 62100021 * THERE ARE TWO ENTRY POINTS TO THIS FUNCTION-- * 62150021 * ERROR DETECTED PRIOR TO MOUNT VERIFICATION - ENTERED FROM-- * 62200021 * OPEN TAPE INITIAL COMMON FUNCTION FOR INTERNAL ABEND * 62250021 * CODES 17 AND 18. * 62300021 * ERROR DETECTED AFTER MOUNT VERIFICATION - ENTERED FROM-- * 62350021 * OPEN TAPE VOLUME VERIFICATION FUNCTION FOR INTERNAL * 62400021 * ABEND CODE 19, AND A REMOUNT SITUATION. * 62450021 * OPEN TAPE INPUT/MOD HDR1 FUNCTION FOR INTERNAL ABEND * 62500021 * CODE 20. * 62550021 * OPEN TAPE OUTPUT SECURITY FUNCTION FOR INTERNAL ABEND * 62600021 * CODE 20. * 62650021 * * 62700021 * INPUT - * 62750021 * REGISTER R0 - MODIFIER CHARACTER FOR MESSAGE. * 62950021 * REGISTER RC - INTERNAL ABEND CODE, OR * 62960021 * - 0 IF A SCRATCH VOLUME WAS REQUESTED, INDICATING A * 62970021 * REMOUNT SITUATION. * 62980021 * REGISTER RET- BRANCH TABLE ENTRY OF 4. * 63000021 * VOLSER FIELD OF MESSAGE IN WORK AREA FILLED IN IF ENTRY FROM * 63050021 * OTHER THAN OPEN INITIAL COMMON FUNCTION. * 63100021 * * 63150021 * OUTPUT - * 63200021 * IF EXITING TO OPEN TAPE MESSAGE MODULE-- * 63250021 * REGISTER RET- BRANCH TABLE ENTRY OF 0. * 63300021 * WORK AREA - MESSAGE IEC114E D BUILT IN WORK AREA. * 63350021 * * 63400021 * EXTERNAL REFERENCES - * 63450021 * REFER TO THE PRECEEDING MODULE PROLOG. * 63500021 * * 63550021 * EXITS, NORMAL - * 63600021 * REFER TO THE PRECEEDING MODULE PROLOG. * 63650021 * OPEN TAPE VOLUME MOUNT FUNCTION (OPEN TAPE MESSAGE MODULE) * 63700021 * * 63750021 * EXITS, ERROR - * 63800021 * REFER TO THE PRECEEDING MODULE PROLOG. * 63850021 * ABEND INTERPRETATION AND RECOVERRY STRING FOR INTERNAL ABEND * 63900021 * CODES 17, 18, 19, 20. * 63950021 * * 64000021 * TABLES/WORK AREAS - * 64050021 * THE OPEN, CLOSE, OR EOV WORK AREA AND THE WHERE-TO-GO (WTG) * 64100021 * TABLE ARE DESCRIBED BY THE DSECTS AT THE END OF THE LISTING. * 64150021 * * 64200021 * ATTRIBUTES - * 64250021 * REFER TO THE PRECEEDING MODULE PROLOG. * 64300021 * * 64350021 * CHARACTER CODE DEPENDENCY - * 64400021 * REFER TO THE PRECEEDING MODULE PROLOG. * 64450021 * * 64500021 * NOTES - * 64550021 * * 64600021 *********************************************************************** 64650021 EJECT 64700021 * ENTRY USED WHEN ERROR IS DETECTED PRIOR TO MOUNT VERIFICATION. M0034 64750021 * ENTERED FROM OPEN TAPE INITIAL COMMON FUNCTION FOR INTERNAL M0034 64800021 * ABEND CODES 17 AND 18. M0034 64850021 OTA02600 EQU * ENTRY PRIOR TO MOUNT VER M0034 64900021 TM UCBDMCT,UCBMOUNT WAS MOUNT ISSUED M0034 64950021 BNO OTA02800 NO, SKIP RUN, DOM, MSG, M0034 65000021 * GO ABEND M0034 65050021 MVC MSGVOLSR,BLANKS SET VOL SER IN MSG TO M0034 65100021 * BLANKS, AS PREVIOUS M0034 65150021 * TAPE MAY BE MOUNTED M0034 65200021 * M0034 65250021 * ENTRY USED WHEN ERROR IS DETECTED AFTER MOUNT VERIFICATION. M0034 65300021 * M0034 65350021 OTA02620 EQU * ENTRY AFTER MOUNT M0034 65400021 * VERIFICATION M0034 65450021 * M0034 65500021 * BUILD DEMOUNT MESSAGE M0034 65550021 * M0034 65600021 * BASIC MESSAGE M0034 65650021 MVC MCSFLAGS(L'BASICMSG),BASICMSG GET BASIC MSG 65700021 * UNIT NAME M0034 65750021 MVC MSGUN,UCBNAME UNIT NAME IN MESSAGE M0034 65800021 * VOL SER M0034 65850021 LA RB,MSGVOLSR+L'MSGVOLSR-1 POINT TO LAST CHAR OF 65900021 * VOL SER WHICH HAS BEEN M0034 65950021 * INSERTED BY CALLING M0034 66000021 * FUNCTION OR THIS FUNCTION 66050021 BAL RET,OTA02900 GO REMOVE BLANKS M0034 66100021 * JOB NAME M0034 66150021 L R1,CVTPTR CVT ADDR M0034 66200021 L R1,CVTTCBP-CVT(R1) TCB WORDS ADDR M0034 66250021 L R1,K4(R1) CURRENT TCB PTR M0034 66300021 L R1,TCBTIO-TCB(R1) TIOT PTR M0034 66350021 MVC 0(L'TIOCNJOB,RB),TIOCNJOB-TIOT(R1) JOBNAME IN MSG 66400021 LA RB,L'TIOCNJOB-1(RB) BUMP MSG PTR 66450021 BAL RET,OTA02900 GO REMOVE BLANKS M0034 66500021 * STEP NAME M0034 66550021 MVC 0(K8,RB),TIOCSTEP-TIOT(R1) STEPNAME IN MSG M0034 66600021 LA RB,K8-1(RB) BUMP MSG PTR M0034 66650021 BAL RET,OTA02900 GO REMOVE BLANKS M0034 66700021 * DD NAME M0034 66750021 MVC 0(L'TIOEDDNM,RB),TIOEDDNM DDNAME IN MSG 66800021 LA RB,L'TIOEDDNM-1(RB) BUMP MSG PTR 66850021 BAL RET,OTA02900 GO REMOVE BLANKS M0034 66900021 * MODIFIER CHARACTER M0034 66950021 MVI 0(RB),C'-' INSERT DASH M0034 67000021 STC R0,K1(RB) INSERT MODIFIER CHAR M0034 67050021 * PASSED IN R0 M0034 67100021 LA RB,K2(RB) BUMP MSG PTR PAST '-N' M0034 67150021 * DESCRIPTOR AND ROUTING CODES M0034 67200021 MVC 0(L'DESCROUT,RB),DESCROUT INSERT DESC, ROUT CODES 67250021 * MSG LENGTH M0034 67300021 * MSG PTR (RB) NOW POINTS M0034 67350021 * PAST LAST MSG TEXT CHAR M0034 67400021 LA R0,MSGLSTSZ ADDR OF START OF MSG M0034 67450021 SR RB,R0 GET MSG LENGTH M0034 67500021 STH RB,MSGLSTSZ INSERT MSG LENGTH M0034 67550021 * M0034 67600021 * GO TO OPEN TAPE VOLUME MOUNTING FUNCTION FOR A REMOUNT M0034 67650021 * RATHER THAN ABEND INTERPRETATION IF A SCRATCH TAPE WAS M0034 67700021 * REQUESTED. M0034 67750021 LTR RC,RC IS PASSED INTERNAL ABEND M0034 67800021 * CODE ZERO M0034 67850021 BNZ OTA02640 NO, DON'T REMOUNT M0034 67900021 SR RET,RET YES, ZERO MSG MOD ENTRY M0034 67950021 LA RF,ID3B4G IDTTR FOR REMOUNT MSG M0034 68000021 * MOD M0034 68050021 B OTA02300 GO REMOUNT M0034 68100021 OTA02640 EQU * CONTINUE M0034 68150021 * M0034 68200021 * REWIND AND UNLOAD TAPE, CLEAR UCB FIELDS M0034 68250021 * M0034 68300021 MVC DXCCW1,RUNCCW3B RUN CCW IN DCB WORK AREA M0034 68350021 BAL RD,OTA03100 GO EXECUTE RUN M0034 68400021 * RETURN AFTER WAIT M0034 68450021 XC UCBFSCT(L'UCBFSCT+L'UCBFSEQ),UCBFSCT M0034 68500021 * CLEAR UCB SEQUENCE COUNT M0034 68550021 * AND SEQUENCE NUMBER M0034 68600021 MVI UCBDMCT,K0 CLEAR MOUNT BIT AND DM M0034 68650021 * COUNT M0034 68700021 OI UCBFL1,UCBNOTRD SET UCB NOT READY BIT M0034 68750021 NI UCBSTAB,X'FF'-UCBBSTR RESET ANSI BIT M0034 68800021 * CLEAR VOL SER IN UCB (UCBVOLI) PRIOR TO ABEND M0034 68850021 * M0034 68900021 * DOM OUTSTANDING MESSAGES M0034 68950021 * M0034 69000021 TM UCBSTAB,UCBBNUL ANY MSG IDS IN UCB SA58669 69050001 BZ OTA02700 NO, SKIP DOM M0034 69100021 MVI REPLY+K4,LASTNTRY INDICATE 1 MSG TO DELETESA58669 69150001 MVC REPLY+(K3),UCBFSER FIRST MSG ID IN DOM LISTSA58669 69200001 MVC REPLY+K9(K3),UCBFSER+K3 2ND MSG ID IN DOM LIST SA58669 69250001 NC REPLY+K9(K3),REPLY+K9 IS THERE A SECOND MSG IDSA58669 69370001 BZ OTA02650 NO, GO DELETE ONE MSG SA58669 69400001 MVI REPLY+K4,K0 INDICATE MORE MSG IDS SA58669 69450001 MVI REPLY+K8,LASTNTRY INDICATE END OF DOM LISTSA58669 69500001 OTA02650 EQU * ISSUE DOM M0034 69550021 DOM MSGLIST=REPLY+K4 DELETE MESSAGE(S) SA58669 69600001 NI UCBSTAB,X'FF'-UCBBNUL TURN OFF UCB DOM INDR SA58669 69610001 XC UCBFSER(K6),UCBFSER CLEAR UCB MSG IDS FIELD SA58669 69620001 OTA02700 EQU * SKIP DOM M0034 69650021 * M0034 69700021 * ISSUE DEMOUNT MESSAGE M0034 69750021 * M0034 69800021 WTO MF=(E,MSGLSTSZ) ISSUE DEMOUNT MSG M0034 69850021 * M0034 69900021 * GO TO ABEND INTERPRETATION AND RECOVERY STRING M0034 69950021 * M0034 70000021 OTA02800 EQU * GO TO ABEND M0034 70050021 * INTERPRETATION M0034 70100021 LR R0,RC GET INTERNAL CODE FROM M0034 70150021 * RC, PASSED FROM CALLER M0034 70200021 * PASS TO ABEND INTERPRET. M0034 70250021 * IN R0 M0034 70300021 B OTA03000 GO EXIT TO ABEND INTERP. M0034 70350021 * M0034 70400021 * BLANK REMOVER ROUTINE FOR MESSAGE FIELDS M0034 70450021 * M0034 70500021 OTA02900 EQU * REMOVE TRAILING BLANKS M0034 70550021 CLI 0(RB),BLANK BLANK CHAR M0034 70600021 BNE OTA02950 NO, GO INSERT COMMA M0034 70650021 BCT RB,OTA02900 YES, DECR TO POINT TO M0034 70700021 * PRECEEDING CHAR AND GO M0034 70750021 * CHECK IT FOR BLANKS M0034 70800021 OTA02950 EQU * INSERT COMMA AND RETURN M0034 70850021 MVI K1(RB),C',' COMMA PAST LAST MSG CHAR M0034 70900021 LA RB,K2(RB) UPDATE MSG PTR PAST M0034 70950021 * COMMA TO NEXT MSG FIELD M0034 71000021 BR RET RETURN TO CALLER M0034 71050021 SPACE 71100021 ** M0034 71150021 ** COMMON ROUTINES FOR THIS MODULE M0034 71200021 ** M0034 71250021 SPACE 71300021 * M0034 71350021 * EXIT TO ABEND INTERPRETATION AND RECOVERY M0034 71400021 * M0034 71450021 OTA03000 EQU * EXIT TO ABEND INTERP. M0034 71500021 XC UCBVOLI,UCBVOLI UNCONDITIONALLY CLEAR M0034 71550021 * VOL SER IN UCB-- M0034 71600021 * -PREVIOUS VOL SER MAY M0034 71650021 * ..BE PRESENT IF THIS IS M0034 71700021 * ..DEFERRED MOUNT M0034 71750021 * -IF CONTAINS FFTTR, M0034 71800021 * ..ABEND INTERPRETATION M0034 71850021 * ..WILL BE UNABLE TO M0034 71900021 * ..PRINT IT M0034 71950021 DMABCOND (0),ID3B0P EXIT TO ABEND INTERPRET. M0034 72000021 * M0034 72050021 * EXCP ROUTINE M0034 72100021 * M0034 72150021 OTA03100 EQU * ISSUE EXCP M0034 72200021 EXCP DXIOB M0034 72250021 IECRES WAIT WAIT FOR COMPLETION M0034 72300021 TM DXECB,ECBNOERR ANY I/O ERROR M0034 72350021 BCR 1,RD NO, RETURN M0034 72400021 OABD002 EQU 2 INTERNAL ABEND CODE M0034 72450021 LA R0,OABD002 INTERNAL CODE--I/O ERROR M0034 72500021 B OTA03000 GO ABEND M0034 72550021 * 72600021 * CONSTANTS 72650021 * 72700021 BLANKS DC CL6' ' BLANK VOL SER FOR MSG M0034 72750021 BASICMSG DS 0XL16 BASIC DEMOUNT MESSAGE M0034 72800021 DC X'8000' MCS FLAGS M0034 72850021 DC C'IEC114E D DDD,' MESSAGE TEXT M0034 72900021 DESCROUT DS 0XL4 MCS DESCRIPTOR, ROUTING M0034 72950021 * CODES 73000021 DC X'2000' DESCRIPTOR CODE 3 M0034 73050021 DC X'2020' ROUTING CODES 3, 11 M0034 73100021 RUNCCW3B DS 0XL8 REWIND UNLOAD CCW M0034 73150021 DC X'0F' RUN OP CODE M0034 73200021 DC X'000000' DATA ADDR M0034 73250021 DC X'2000' SLI FLAG M0034 73300021 DC X'0001' BYTE COUNT M0034 73350021 CCWCON1 DS 0XL4 REST OF SENSE OP 99223 73400003 DC X'2000' SLI FLAG 99223 73450003 DC X'0018' BYTE COUNT 99223 73500003 LTORG 75000021 * 75200021 XCTL3B XCTLTABL ID=(ID3B4D,4D,ID3B4F,4F,ID3B4I,4I,ID3B0P,0P, M0034 X75300021 ID3B4G,4G) M0034 75400021 IECDSECS CVT,TCB,TIOT,DCB,UCB,MAIN,EXPAND=YES M0034 75600021 IECEQU 75800021 END 76000021 ./ ADD SSI=00011890,NAME=IFG0193C,SOURCE=0 TITLE 'IFG0193C/OMODVOL1 - STANDARD LABEL EDITING ROUTINE' 00400021 COPY LCGASMSW 00450000 IFG0193C CSECT 01600021 *********************************************************************** 02000021 * * 02400021 * * 02800021 * RELEASE 25 DELETIONS/CHANGES * 03200021 * RELEASE 24 DELETIONS/CHANGES * 03600021 * RELEASE 23 DELETIONS/CHANGES * 04000021 * RELEASE 22 DELETIONS/CHANGES * 04400021 * RELEASE 21 DELETIONS/CHANGES * 04800021 * RELEASE 21.8 DELETIONS/CHANGES * 04850021 *0000756500-7585000 SA70384 04900021 * * 05200021 * STATUS CHANGE LEVEL 000 * 05600021 * * 06000021 * FUNCTION - * 06400021 * THIS MODULE CONTAINS THE FUNCTION(S) OR PART(S) OF FUNCTION(S)-- * 06800021 * OPEN TAPE LABEL EDITOR FUNCTION. * 07200021 * REFER TO THE FOLLOWING 'FUNCTION PROLOG(S)' FOR DETAILS. * 07600021 * * 08000021 * ENTRY POINTS - * 08400021 * IFG0193C - ENTERED FROM ONE OF THE FOLLOWING-- * 08800021 * IFG0194J - VIA XCTL TO OMODVOL1 FOR LABEL OR DENSITY * 09200021 * CONFLICT. * 09600021 * IFG0193D - IFG0193E - VIA THE RESIDENT ROUTINE XCTL WHEN * 10000021 * A REMOUNT IS NEEDED. * 10400021 * * 10800021 * INPUT - * 11200021 * REFER TO THE FOLLOWING 'FUNCTION PROLOG(S)'. * 11600021 * * 12000021 * OUTPUT - * 12400021 * REFER TO THE FOLLOWING 'FUNCTION PROLOG(S)'. * 12800021 * * 13200021 * EXTERNAL REFERENCES - * 13600021 * IFG019RA - OPEN/CLOSE/EOV RESIDENT ROUTINE FOR XCTL AND * 14000021 * WAIT. * 14400021 * REFER TO THE FOLLOWING 'FUNCTION PROLOG(S)'. * 14800021 * * 15200021 * EXITS, NORMAL - * 15600021 * EXIT VIA THE RESIDENT ROUTINE XCTL TO ONE OF THE FOLLOWING-- * 16000021 * IFG0193D - TO DESTROY STANDARD LABEL. * 16400021 * IFG0193E - TO CREATE STANDARD LABEL. * 16800021 * IFG0194G - TO ISSUE MOUNT MESSAGE AND REPROCESS DCB. * 17200021 * IFG0194I - IMMEDIATELY EXIT ON DENSITY CONFLICT TO * 17600021 * CONTINUE NORMAL PROCESSING. * 18000021 * REFER TO THE FOLLOWING 'FUNCTION PROLOG(S)'. * 18400021 * * 18800021 * EXITS, ERROR - * 19200021 * NONE. * 19600021 * * 20000021 * TABLES/WORK AREAS - * 20400021 * REFER TO THE FOLLOWING 'FUNCTION PROLOG(S)'. * 20800021 * * 21200021 * ATTRIBUTES - * 21600021 * REENTRANT, REFRESHABLE, READ-ONLY, ENABLED, PRIVILEGED * 22000021 * * 22400021 * CHARACTER CODE DEPENDENCY - * 22800021 * CLASS ONE CHARACTER CODE DEPENDENCY - THE EBCDIC CHARACTER CODE * 23200021 * WAS USED FOR ASSEMBLY. THE MODULE MUST BE REASSEMBLED IF A * 23600021 * DIFFERENT CHARACTER SET IS USED FOR EXECUTION. * 24000021 * * 24400021 * NOTES - * 24800021 * REFER TO THE FOLLOWING 'FUNCTION PROLOG(S)'. * 25200021 * * 25600021 *********************************************************************** 26000021 EJECT 26400021 *********************************************************************** 26800021 * * 27200021 * FUNCTION PROLOG * 27600021 * * 28000021 *********************************************************************** 28400021 * * 28800021 * FUNCTION NAME - * 29200021 * OPEN TAPE LABEL EDITOR FUNCTION. * 29600021 * * 30000021 * (STATUS) - * 30400021 * NOT APPLICABLE * 30800021 * * 31200021 * FUNCTION - * 31600021 * RESTORE RESIDENT ROUTINE SEQUENTIAL PROCESSING. * 32000021 * RETURN TO NORMAL PROCESSING ON A DENSITY CONFLICT. * 32400021 * EXITS TO THE FUNCTION REQUIRED FOR A LABEL CONFLICT WITH * 32800021 * A NON-SPECIFIC VOLUME REQUEST. * 33200021 * FOR A LABEL CONFLICT ON A SPECIFIC VOLUME REQUEST, OR IF * 33600021 * THE CREATE OR DESTROY FUNCTIONS REQUIRE A REMOUNT, THE * 34000021 * VOLUME IS DEMOUNTED AND AN EXIT TAKEN FOR REMOUNT. * 34400021 * * 34800021 * ENTRY POINTS - * 35200021 * ENTERED FROM THE FOLLOWING-- * 35600021 * OPEN TAPE LABEL EDITOR INTERFACE FUNCTION FOR A LABEL OR * 36000021 * DENSITY CONFLICT. * 36400021 * OPEN TAPE CREATE LABEL FUNCTION OR OPEN TAPE DESTROY LABEL * 36800021 * FUNCTION WHEN A REMOUNT IS REQUIRED. * 37200021 * REFER TO THE PRECEEDING MODULE PROLOG. * 37600021 * * 38000021 * INPUT - * 38400021 * A POINTER TO EACH OF THE FOLLOWING-- * 38800021 * CURRENT PARAMETER LIST ENTRY. * 39200021 * DD ENTRY IN THE TIOT. * 39600021 * WTG TABLE. * 40000021 * CURRENT WTG TABLE ENTRY. * 40400021 * DCB. * 40800021 * OPEN WORK AREA. * 41200021 * RESIDENT ROUTINE. * 41600021 * UCB * 42000021 * THE CONFLICT BITS IN THE JFCBMASK+5 MUST BE SET. * 42400021 * * 42800021 * OUTPUT - * 43200021 * A MOUNT MESSAGE IS CONSTRUCTED IN THE WORK AREA WHEN A * 43600021 * REMOUNT IS REQUIRED. * 44000021 * * 44400021 * EXTERNAL REFERENCES - * 44800021 * REFER TO THE PRECEEDING MODULE PROLOG. * 45200021 * * 45600021 * EXITS, NORMAL - * 46000021 * REFER TO THE PRECEEDING MODULE PROLOG. * 46400021 * OPEN TAPE DESTROY LABEL FUNCTION TO DESTROY A STANDARD LABEL. * 46800021 * OPEN TAPE CREATE LABEL FUNCTION TO CREATE A STANDARD LABEL. * 47200021 * OPEN TAPE VOLUME MOUNTING FUNCTION FOR A REMOUNT. * 47600021 * OPEN TAPE FINAL COMMON FUNCTION TO CONTINUE NORMAL PROCESSING. * 48000021 * * 48400021 * EXITS, ERROR - * 48800021 * NONE. * 49200021 * * 49600021 * TABLES/WORK AREAS - * 50000021 * THE OPEN, CLOSE, OR EOV WORK AREA AND THE WHERE-TO-GO (WTG) * 50400021 * TABLE ARE DESCRIBED BY THE DSECTS AT THE END OF THE LISTING. * 50800021 * * 51200021 * ATTRIBUTES - * 51600021 * REFER TO THE PRECEEDING MODULE PROLOG. * 52000021 * * 52400021 * CHARACTER CODE DEPENDENCY - * 52800021 * REFER TO THE PRECEEDING MODULE PROLOG. * 53200021 * * 53600021 * NOTES - * 54000021 * * 54400021 *********************************************************************** 54800021 EJECT 55200021 * SYMBOLIC REGISTER USAGE 55600021 * 56000021 * 56400021 * ESTABLISH ADDRESSABILITY 56800021 BALR RBASE,0 SET BASE REGISTER 57200021 USING *,RBASE 57600021 USING FORCORE,RCORE WORK AREA 58000021 USING IHADCB,RDCB DCB 58400021 USING UCBOB,RUCB UCB 58800021 USING TIOENTRY,RTIOT TIOT ENTRY 59200021 * 59600021 B OTA19500(RET) GO TO PROPER ENTRY 60000021 OTA19500 EQU * 60400021 B OTA19600 INITAL ENTRY FOR ALL DCBS BUT 60800021 * THE FIRST ONE 61200021 B OTA19800 REMOUNT ENTRY 61600021 * THE XCTL TO OMODVOL1 ENTERS HERE AND PROCESSING 62000021 * FOR THE FIRST DCB STARTS AFTER RESTORING THE RESIDENT 62400021 * ROUTINE ADDRESS AND THE WTG TABLE 62800021 LR RES,RD RESTORE RES ROURINE POINTER 63200021 MVC K0(K8,RWTG),MODNAME RESTORE MODULE NAME 63600021 OTA19600 EQU * 64000021 SPACE 64400021 *CHECK JFCB MASK TO DETERMINE IF PROCESSING IS REQUIRED ON THIS DCB 64800021 TM JFCBMASK+K5,LBLERR TEST FOR CONFLICT IN LABEL 65200021 BNZ OTA19700 BRANCH IF LABEL CONFLICT 65600021 LA RF,ID3C4I POINT TO FINAL COMMON IDTTR 66000021 B OTA20100 EXIT - DENSITY CONFLICT 66400021 SPACE 66800021 OTA19700 EQU * 67200021 * 67600021 CLC DXVOLMT1,SCRATCH1+K1 IS THIS A SCRATCH REQUEST 68000021 BE OTA20000 YES, BRANCH 68400021 * 68800021 SPACE 69200021 *INITIALIZE STANDARD PORTION OF MOUNT MESSAGE 69600021 SPACE 70000021 OTA19800 EQU * 70400021 XC MSGTEXT(K9),MSGTEXT CLEAR MESSAGE AREA 70800021 MVC MCSFLAGS(K12),FLAG91 INSERT BASIC MSG 71200021 MVC MSGUN,UCBNAME UNIT NAME TO MSG BUFFER 71600021 SPACE 72000021 LA R1,K17 LOAD MSG LENGTH 72400021 MVC MSGLSTSZ+K17(K4),DESROUT1 MCS CODES IN MSG 72800021 STH R1,MSGLSTSZ STORE MSG LENGTH IN MSG HDR 73200021 LA R1,MSGLSTSZ LOAD ADDRESS OF MSG HDR 73600021 WTO MF=(E,(1)) ISSUE 'D' MSG 74000021 MVC MSGIOSUP+K4(K5),VMCLMSGE CHANGE MSG TO MOUNT 74400021 MVC MSGVOLSR-K1(K8),SCRATCH1 INSERT SCRATCH IN MSG 74800021 CLC JFCBVOLS(K6),BLANKS1 IS JFCB VOLSER BLANK 75200021 BE OTA19900 YES, BRANCH 75600021 CLC DXVOLMT1,SCRATCH1+1 IS IT A SCRATCH REQUEST SA70384 75650021 BNE OTA19850 BRANCH IF NOT SA70384 75700021 MVC JFCBVOLS(K6),BLANKS1 BLANK VOL=SER IN JFCB SA70384 75750021 OTA19850 EQU * SA70384 75800021 MVC MSGVOLSR(K6),DXVOLMT1 NO, INSERT VOLSER FROM JFCB 76000021 OTA19900 EQU * 76400021 OI UCBDMCT,UCBMOUNT SET MOUNT BIT ON 76800021 LA RC,K8 BRANCH TABLE VALUE 77200021 LNR RC,RC NEGATE TO INDICATE OMOD ENTRY 77600021 LA R1,MSGLSTSZ ADDRESS OF MESSAGE BUFFER 78000021 L RB,MCSDES91 MCS CODES 78400021 LA RF,ID3C4G POINT TO MSG MODULE IDTTR 78800021 LA RET,K12 ENTRY VALUE FOR MSG MOD 79200021 B OTA20100 GO WRITE MESSAGE 79600021 SPACE 80000021 OTA20000 EQU * 80400021 LA RET,K4 ENTRY VALUE FOR NEXT LOAD 80800021 LA RF,ID3C3D DESTROY LABEL MOD IDTTR 81200021 TM JFCBMASK+K5,JFCSLDES DESTROY MOD NEEDED 81600021 BO OTA20100 YES, BRANCH 82000021 LA RF,ID3C3E CREATE LABEL MOD IDTTR 82400021 * 82800021 OTA20100 EQU * 83200021 IECRES XCTL,(RF),(RET) 83600021 SPACE 84000021 *PROGRAM CONSTANTS 84400021 SPACE 84800021 MODNAME DC C'IFG0193C' THIS MODULE NAME 85200021 FLAG91 DC X'8000' MCS FLAG 85600021 VMCLMSGD DC C'IEC114E D ' BASIC DISMOUNT MSG 86000021 VMCLMSGE DC C'01A M' INSERT FOR MOUNT MSG 86400021 REWCCW1 DC X'20000001' REWIND CCW 86800021 SCRATCH1 DC C',SCRTCH,' SCRATCH VOL SER FOR MSG 87200021 BLANKS1 DC C' ' BLANKS TO TEST FOR VOL SER 87600021 * IN JFCB 88000021 DS 0F FULL WORD ALIGNMENT 88400021 MCSDES91 DC X'4000' MCS DESCRIPTOR CODE 88800021 DESROUT1 DC X'2000' DESCRIPTOR CODE FOR DEMOUNT 89200021 * ROUT CODE FOR MOUNT 89600021 DC X'2000' ROUT CODE FOR DEMOUNT 90000021 LTORG 90400021 XCTL3C XCTLTABL ID=(ID3C4G,4G,ID3C3D,3D,ID3C4I,4I,ID3C3E,3E) 90800021 IECDSECS CVT,TCB,TIOT,DCB,UCB,MAIN,WTG,EXPAND=YES 91200021 IECEQU 91600021 END 92000021 ./ ADD SSI=00011369,NAME=IFG0193D,SOURCE=0 TITLE 'IFG0193D/OPEN - DESTROY STANDARD LABEL' 00200021 COPY LCGASMSW 00250000 * 00800021 IFG0193D CSECT 01000021 *********************************************************************** 01200021 * * 01400021 * * 01600021 * RELEASE 25 DELETIONS/CHANGES * 01800021 * RELEASE 24 DELETIONS/CHANGES * 02000021 * RELEASE 23 DELETIONS/CHANGES * 02200021 * RELEASE 22 DELETIONS/CHANGES * 02400021 * RELEASE 21.8 DELETIONS/CHANGES * 02410002 *000584500-584550 SA62814 02450002 * RELEASE 21.7 DELETIONS/CHANGES * 02590001 *0000 SA49476 02591001 *0000720000 SA59358 02610001 *0000 M0185 02650021 *0000822000,870000 A39467 02700021 *0000 A48556 02750021 *0000328100-329700 SA58696 02760001 * * 02800021 * STATUS CHANGE LEVEL 000 * 03000021 * * 03200021 * FUNCTION - * 03400021 * THIS MODULE CONTAINS THE FUNCTION(S) OR PART(S) OF FUNCTION(S)-- * 03600021 * OPEN TAPE DESTROY LABEL FUNCTION. * 03800021 * REFER TO THE FOLLOWING 'FUNCTION PROLOG(S)' FOR DETAILS. * 04000021 * * 04200021 * ENTRY POINTS - * 04400021 * IFG0193D - ENTRY POINT VIA THE RESIDENT XCTL FROM THE FOLLOWING--* 04600021 * IFG0193C - TO DESTROY A STANDARD LABEL. * 04800021 * IFG0190R - RETURN TO WAIT FOR REPLY TO MESSAGES. * 05000021 * * 05200021 * INPUT - * 05400021 * REFER TO THE FOLLOWING 'FUNCTION PROLOG(S)'. * 05600021 * * 05800021 * OUTPUT - * 06000021 * REFER TO THE FOLLOWING 'FUNCTION PROLOG(S)'. * 06200021 * * 06400021 * EXTERNAL REFERENCES - * 06600021 * IFG019RA - OPEN/CLOSE/EOV RESIDENT ROUTINE FOR XCTL AND * 06800021 * WAIT. * 07000021 * REFER TO THE FOLLOWING 'FUNCTION PROLOG(S)'. * 07200021 * * 07400021 * EXITS, NORMAL - * 07600021 * EXIT VIA THE RESIDENT ROUTINE XCTL TO ONE OF THE FOLLOWING-- * 07800021 * IFG0193C - WHEN A REMOUNT IS REQUIRED. * 08000021 * IFG0193E - TO CREATE A STANDARD LABEL. * 08200021 * IFG0194F - TO REPROCESS THE DCB. * 08400021 * IFG0190R - TO INSERT DSNAME ON MESSAGES AND ISSUE MESSAGE. * 08600021 * REFER TO THE FOLLOWING 'FUNCTION PROLOG(S)'. * 08800021 * * 09000021 * EXITS, ERROR - * 09200021 * NONE. * 09400021 * * 09600021 * TABLES/WORK AREAS - * 09800021 * REFER TO THE FOLLOWING 'FUNCTION PROLOG(S)'. * 10000021 * * 10200021 * ATTRIBUTES - * 10400021 * REENTRANT, REFRESHABLE, READ-ONLY, ENABLED, PRIVILEGED * 10600021 * * 10800021 * CHARACTER CODE DEPENDENCY - * 11000021 * CLASS ONE CHARACTER CODE DEPENDENCY - THE EBCDIC CHARACTER CODE * 11200021 * WAS USED FOR ASSEMBLY. THE MODULE MUST BE REASSEMBLED IF A * 11400021 * DIFFERENT CHARACTER SET IS USED FOR EXECUTION. * 11600021 * * 11800021 * NOTES - * 12000021 * REFER TO THE FOLLOWING 'FUNCTION PROLOG(S)'. * 12200021 * * 12400021 *********************************************************************** 12600021 EJECT 12800021 *********************************************************************** 13000021 * * 13200021 * FUNCTION PROLOG * 13400021 * * 13600021 *********************************************************************** 13800021 * * 14000021 * FUNCTION NAME - * 14200021 * OPEN TAPE DESTROY LABEL FUNCTION. * 14400021 * * 14600021 * (STATUS) - * 14800021 * NOT APPLICABLE * 15000021 * * 15200021 * FUNCTION - * 15400021 * DESTROY STANDARD LABELS FOR DATA SETS REQUESTING NSL OR NL. * 15600021 * VERIFY THAT IT IS OK TO DESTROY A STANDARD LABEL SO AN ASCII * 15800021 * LABEL MAY BE CREATED AND VISA VERSA. * 16000021 * CHECK FOR SECURITY PROTECTED VOLUME. DO NOT DESTROY LABEL IF * 16200021 * PROTECTED. * 16400021 * CHECK EXPIRATION DATE. GET OPERATORS PERMISSION TO DESTROY IF * 16600021 * DATE HAS NOT PASSED. * 16800021 * FOR ASCII TAPES, LABELS ARE TRANSLATED BEFORE CHECKING. * 17000021 * GET OPERATORS DECISION TO DESTROY AN ASCII LABEL OR TO MOUNT * 17200021 * ANOTHER VOLUME. * 17400021 * * 17600021 * ENTRY POINTS - * 17800021 * ENTERED FROM THE FOLLOWING-- * 18000021 * OPEN TAPE LABEL EDITOR FUNCTION TO DESTROY STANDARD LABELS. * 18200021 * DSNAME MESSAGE FUNCTION TO WAIT FOR MESSAGE REPLY. * 18400021 * REFER TO THE PRECEEDING MODULE PROLOG. * 18600021 * * 18800021 * INPUT - * 19000021 * A POINTER TO EACH OF THE FOLLOWING-- * 19200021 * CURRENT PARAMETER LIST ENTRY. * 19400021 * DD ENTRY IN THE TIOT. * 19600021 * WTG TABLE. * 19800021 * CURRENT WTG TABLE ENTRY. * 20000021 * DCB. * 20200021 * OPEN WORK AREA. * 20400021 * RESIDENT ROUTINE. * 20600021 * UCB * 20800021 * * 21000021 * OUTPUT - * 21200021 * A TAPE MARK WRITTEN ON THE TAPE. * 21400021 * THE FOLLOWING MESSAGES ARE WRITTEN WHEN REQUIRED-- * 21600021 * IEC112I I/O ERROR - I/O ERROR DURING WRITE OF TAPE MARK. * 21800021 * IEC112I SEC VOL - SECURITY PROTECTED VOLUME. * 22000021 * IEC705I TAPE ON - TAPE ATTRIBUTES MESSAGE. * 22200021 * THE FOLLOWING MESSAGES ARE WRITTEN VIA THE DISPLAY DSNAME WTO * 22400021 * FUNCTION. * 22600021 * IEC107D E - DATE PROTECT MESSAGE. * 22800021 * IEC134D A - ASCII VOLUME MOUNTED. * 23000021 * * 23200021 * EXTERNAL REFERENCES - * 23400021 * REFER TO THE PRECEEDING MODULE PROLOG. * 23600021 * * 23800021 * EXITS, NORMAL - * 24000021 * REFER TO THE PRECEEDING MODULE PROLOG. * 24200021 * OPEN TAPE LABEL EDITOR FUNCTION WHEN A REMOUNT IS REQUIRED. * 24400021 * OPEN TAPE CREATE LABEL FUNCTION TO CREATE A STANDARD LABEL. * 24600021 * OPEN TAPE MOUNT VERIFICATION FUNCTION TO REPROCESS THE DCB. * 24800021 * DISPLAY DSNAME WTO FUNCTION FOR MESSAGES REQUIRING THE DSNAME. * 25000021 * * 25200021 * EXITS, ERROR - * 25400021 * NONE. * 25600021 * * 25800021 * TABLES/WORK AREAS - * 26000021 * THE OPEN, CLOSE, OR EOV WORK AREA AND THE WHERE-TO-GO (WTG) * 26200021 * TABLE ARE DESCRIBED BY THE DSECTS AT THE END OF THE LISTING. * 26400021 * * 26600021 * ATTRIBUTES - * 26800021 * REFER TO THE PRECEEDING MODULE PROLOG. * 27000021 * * 27200021 * CHARACTER CODE DEPENDENCY - * 27400021 * REFER TO THE PRECEEDING MODULE PROLOG. * 27600021 * * 27800021 * NOTES - * 28000021 * * 28200021 *********************************************************************** 28400021 EJECT 28600021 * 28800021 * 29000021 USING FORCORE,RCORE WORK AREA 29200021 USING TIOENTRY,RTIOT TIOT ENTRY 29400021 USING IHADCB,RDCB DCB 29600021 USING UCBOB,RUCB UCB 29800021 USING CVT,RB CVT 30000021 BALR RBASE,0 SET BASE REGISTER 30200021 USING *,RBASE 30400021 * 30600021 LTR RET,RET RETURN FROM MSG MODULE 30800021 BZ OTA22100 YES, BRANCH 31000021 * 31200021 * 31400021 OTA20200 EQU * 31600021 CLC JFCBFLSQ,ONE9U OPENING THE FIRST DATA SET 31800021 BH OTA22300 NO, BRANCH - WRONG VOLUME 32000021 MVC DXCCW1,ACCWU MOVE IN REWIND CCW 32200021 SPACE 32400021 BAL RB,OTA22800 GO REWIND TAPE 32600021 SPACE 32800021 SPACE 32980021 ST RCORE,DXCCW1 RESET CCW1 33000021 MVI DXCCW1,CCWRDTAP CHANGE TO READ OPERATION CODE 33200021 SPACE 33400021 OTA20300 EQU * READ TAPE 33600021 SPACE 33800021 MVI DXLBL,BLANK CLEAR AREA 34000021 MVC DSCFILSR,DXLBL OF VOLUME LABEL 34200021 SPACE 34400021 BAL RB,OTA22800 GO TO READ LABEL 34600021 SPACE 34800021 TM UCBSTAB,UCBBSTR IS ANSI VOLUME MOUNTED 35000021 BZ OTA20400 NO GO CHECK LABEL TYPE 35200021 XLATE DXLBL,K80 TRANSLATE LABEL DATA 35400021 OTA20400 EQU * 35600021 CLI FL1LABI,CHARV IS THIS VOL LBL 35800021 BNE OTA20500 NOT VOL, GO TEST FOR HDR 36000021 CLI VOLNO,FL1SECTY IS THIS VOLUME LABEL 1 36200021 BNE OTA20300 NO, GO READ ANOTHER LABEL 36400021 CLC DXVOLMT1,SCRTCH9U IS THIS A NON-SPECIFIC REQUEST 36600021 BNE OTA20300 NO, BRANCH 36800021 SPACE 37000021 MVC UCBVOLI,VOLSERNO SAVE REEL NO FOR MSG 37200021 B OTA20300 GO READ ANOTHER LABEL 37400021 SPACE 37600021 OTA20500 EQU * TEST FOR HRADER LABEL 1 37800021 SPACE 38000021 CLC AHDR1U,FL1LABI IS THIS A HEADER LABEL 1 38200021 BE OTA20600 YES, GO CHECK SECURITY 38400021 CLI FL1LABI+K1,CHARV CK FOR USER VOL LBLS-ANSI 38600021 BE OTA20300 BRANCH IF YES 38800021 * NO HDR LABEL 38850021 MVI DXDSNAME,BLANK BLANK OUT DSNAME M0185 38900021 MVC DXDSNAME+1(K16),DXDSNAME M0185 38950021 TM UCBSTAB,UCBBSTR IS ANSI VOL MOUNTED M0185 38960021 BO OTA21650 YES, GO WRITE ANSI MSG M0185 38970021 SPACE 39000021 TM IOBSTAT0,CSWUNITX CK FOR UNIT EXCEPTION 39200021 BO OTA21000 YES, BR TO WRITE TM 39400021 SPACE 39600021 B OTA22900 NO, GO ASK FOR NEW VOLUME 39800021 SPACE 40000021 * DATA SET SECURITY 40200021 SPACE 40400021 OTA20600 EQU * 40600021 SPACE 40800021 TM UCBSTAB,UCBBSTR IS ANSI VOL MOUNTED 41000021 BZ OTA20700 NO, TEST SECURITY 41200021 CLI FL1FSEC,BLANK IS ACCESSABILITY BLANK 41400021 BE OTA20900 YES, UNLIMITED ACCESS 41600021 B OTA20800 NO, PROTECTED VOL 41800021 OTA20700 EQU * 42000021 CLI FL1FSEC,FL1SECTY CHK FOR DATA SET SECORITY 42200021 BE OTA20800 BRANCH IF PASSWORD 42400021 CLI FL1FSEC,FL1WRSEC CK FOR WRITE SECURITY 42600021 BNE OTA20900 BR IF NOT TO TEST DATE 42800021 OTA20800 EQU * 43000021 MVC MSGIOSUP(K16),ERRMSG9U BUILD MESSAGE 43200021 MVC MSGACTN(K8),PROMSG MENTION SECURED VOLUME 43400021 MVC MSGTEXT+5(K4),MCSRTDS6 DESCRIPTOR, ROUTE CODES A39467 43500021 B OTA23000 GO TO WRITE THE MESSAGE 43600021 * 43800021 * VERIFY THAT RETENTION IS EXPIRED 44000021 * 44200021 OTA20900 EQU * CHECK RETENTION DATE 44400021 SPACE 44600021 MVC DXDSNAME,FL1ID SAVE DSNAME FOR WTO 44800021 PACK DXCCW2+K5(K3),FL1EXPDT+K1(K5) PACK EXPIRATION DATE FROM 45000021 * THE TAPE LABEL 45200021 OTA21600 EQU * 45400021 L RB,CVTPTR GET THE ADDR OF THE CVT 45600021 CLC DXCCW2+K5(K3),CVTDATE+K1 IS RETENTION EXPIRED 45800021 MVC MCSFLAGS(K12),FLAGSU MOVE IN BASIC MSG 46000021 BP OTA21500 NO,GET THE OPERATOR'S DECISION 46200021 OTA21650 EQU * M0185 46250021 * ISSUE MESSAGE REQUESTING PERMISSION TO DESTROY LABEL FOR BOTH SL, AL 46300021 * OPERATOR WILL GET ONE MESSAGE PER TAPE--EITHER RETENTION OR LABEL 46350021 MVC MCSFLAGS(K12),ANSIMSG MOVE IN SL, ANSI VOL MSG M0185 46400021 B OTA21500 GO FINISH MESSAGE M0185 46800021 SPACE 47000021 OTA21000 EQU * SET UP CHANNEL PROGRAM 47200021 TM JFCBLTYP,JFCSL+JFCBAL SL OR AL WANTED 47400021 BZ OTA21100 NO, BRANCH 47600021 NI JFCBMASK+K5,X'FF'-JFCSLDES TURN LABEL DESTROY BIT OFF 47800021 LA RF,ID3D3E CREATE LABEL MODULE IDTTR 48000021 B OTA22400 GO TO CREATE LABEL 48200021 OTA21100 EQU * 48400021 SPACE 48600021 MVC DXCCW1,ACCWU MOVE IN REWIND CCW 48800021 SPACE 49000021 BAL RB,OTA22800 REWIND THE TAPE 49200021 SPACE 49400021 MVC DXCCW2,ACCWU WILL NEED 2 CCWS 49600021 MVI DXCCW1,CCWWTM 1ST CCW IS WRITE TAPE MRK 49800021 MVI DXCCW1+K4,CCWCMDCH CONNECT TO NEXT CCW 50000021 MVI DXCCW2,CCWNOP GET NOP CODE 50200021 SPACE 50400021 BAL RB,OTA22800 GO WRITE TAPE MARK 50600021 SPACE 50800021 NI UCBSTAT,X'FF'-UCBDADI TURN OFF SL IND 51000021 NI UCBSTAB,X'FF'-UCBBSTR TURN OFF AL INDICATOR 51200021 SPACE 51400021 * SET UP THE MESSAGE TO TELL THE OPERATOR WHAT THE TAPE ATTRIBUTES 51600021 * ARE FOR THE MOUNTED VOLUME 51800021 SPACE 52000021 MVC MSGIOSUP(K16),INFMSGU GET FIRST PART OF MESSAGE 52200021 MVC MSGUN+K6,UCBNAME MOVE IN UNIT NAME 52400021 MVI MSGUN+K9,COMMA PUT COMMA BETWEEN DDD,SER 52600021 MVC MSGVOLSR+K6,UCBVOLI MOVE IN VOLUME SERIAL NUMBER 52800021 MVC MSGTEXT+K5(K19),ISETCU LAST PART OF MESSAGE 53000021 TM JFCBLTYP,JFCNL FIND OUT IF THIS IS RIGHT 53200021 BO OTA21200 BRANCH IF NL 53400021 MVC MSGTEXT+K9(K4),NSLCON MUST BE NSL-PUT IN MESSAGE 53600021 SPACE 53800021 OTA21200 EQU * MESSAGE CONTAINS 800 BPI 54000021 SPACE 54200021 TM DXDEBMOD,DEN800 TEST FOR 800 BPI 54400021 BO OTA21300 BRNACH IF 800 BPI 54600021 MVC MSGTEXT+K13(K4),C6250U PUT 6250 BPI IN MSG 99223 54650000 TM DXDEBMOD,DEN6250 TEST FOR 6250 BPI 99223 54700000 BO OTA21300 YES,GET MESSAGE LENGTH 99223 54750000 MVC MSGTEXT+K13(K4),C1600U PUT 1600 BPI IN MESSAGE 54800021 TM DXDEBMOD,DEN1600 FIND OUT IF THIS IS RIGHT 55000021 BO OTA21300 BRANCH IF 1600 BPI 55200021 SPACE 55400021 MVC MSGTEXT+K13(K4),C556U PUT 556 BPI IN MESSAGE 55600021 TM DXDEBMOD,DCBDEN05 FIND OUT IF THIS IS RIGHT 55800021 BO OTA21300 BRANCH IF 556 BPI 56000021 SPACE 56200021 MVC MSGTEXT+K13(K4),C200U MUST BE 200 BPI-PUT IN MSG 56400021 SPACE 56600021 OTA21300 EQU * SET UP TO GO TO WTO 56800021 SPACE 57000021 LA R1,K45 LENGTH OF THIS MESSAGE 57200021 SPACE 57400021 BAL RC,OTA22700 GO WRITE TO OPERATOR 57600021 SPACE 57800021 OI UCBDMCT,UCBMOUNT INDICATE LABEL VERIFICATION 58000021 MVC JFCBVOLS(K6),UCBVOLI MOVE VOLUME SERIAL TO JFCB 58200021 OTA21400 EQU * 58400021 NI JFCBMASK+K5,LBWTRI9T TURN OFF LBL ERR INDICATORS 58600021 LA RET,K0 NORMAL ENTRY MNT VERIFY 58800021 LA RF,ID3D4F MOUNT VERIFY MODULE IDTTR 59000021 B OTA22400 GO TO MOUNT VERIFICATION 59200021 SPACE 59400021 * NOTIFY THE OPERATOR THAT RETENTION NOT EXPIRED 59600021 * OR THAT AN ANSI VOLUME IS MOUNTED. OPERATOR MUST GIVE 59800021 * PERMISSION TO USE OR REQUEST NEW VOLUME 60000021 SPACE 60200021 OTA21500 EQU * 60400021 SPACE 60600021 MVC MSGVOLSR,UCBVOLI MOVE IN VOLUME SERIAL NUMBER 60800021 LA RB,REPLY PLACE ADDRESS FOR REPLY 61000021 ST RB,REPLYLTH INTO WTOR REPLY ADDRESS 61200021 MVI REPLYLTH,K1 LENGTH OF REPLY IS 1 CHAR 61400021 LA RB,DXECB PLACE ADDRESS OF ECB 61600021 ST RB,REPLYECB INTO THE WTOR ECB ADDRESS 61800021 MVI REPLY,BLANK CLEAR REPLY AREA TO BLANK 62000021 LA R1,MSGLSTSZ LOAD PTR TO MSG BUFFER 62200021 O R1,EXPMSGU SET BITS TO INDICATE WTOR 62400021 L RB,MCSRTDSU LOAD MCS CODES 62600021 MVI DXECB,K0 CLEAR ECB 62800021 * 63000021 USING CVT,RF 63200021 USING TCB,RWTGC 63400021 STM RPARC,RET,DXCCW8 SAVE REGS 63600021 L RF,CVTPTR GET PTR TO CVT 63800021 L RF,0(RF) GET POINTER TO TCB ADDRESSES 64000021 L RWTGC,K4(RF) GET TCB ADDRESS 64200021 L RTIOT,K12(RWTGC) SAVE TIOT POINTER 64400021 LR RC,R1 SAVE THE MSG PTR 64600021 XC 0(K2,RC),0(RC) INITIALIZE LENGTH BYTES 64800021 MVC K14(K3,RC),UCBNAME MOVE IN UNIT ADDRESS 65000021 MVI K17(RC),COMMA DELIMIT UNIT WITH COMMA 65200021 LA R1,K23(R1) UP PTR TO LAST CHAR OF SER 65400021 BAL RF,OTA21900 GO REMOVE BLANKS 65600021 MVI K1(R1),COMMA DELIMIT VOLUME SERIAL 65800021 MVI K2(R1),BLANK BLANK OUT 66000021 MVC K3(K50,R1),K2(R1) REMAINING BUFFER 66200021 ST RC,K76(RC) STORE MSG POINTER 66400021 OTA21700 MVC K2(K8,R1),0(RTIOT) PUT THE JOBNAME IN MESSAGE 66600021 LA R1,K9(R1) UPDATE MSG POINTER 66800021 BAL RF,OTA21900 GO REMOVE BLANKS 67000021 MVI K1(R1),COMMA DELIMIT THE JOB NAME 67200021 MVC K2(K8,R1),K8(RTIOT) PUT THE STEPNAME IN MESSAGE 67400021 LA R1,K9(R1) UPDATE MSG PTR 67600021 BAL RF,OTA21900 GO REMOVE BLANKS 67800021 OTA21800 LR RD,R1 DETERMINE LENGTH OF 68000021 SR RD,RC PRESENT MSG 68200021 LA RD,K1(RD) NUMBER OF CHARS IN MSG 68400021 STC RD,K1(RC) SET UP MSG LENGTH 68600021 B OTA22000 GO SET UP EXIT 68800021 OTA21900 CLI 0(R1),BLANK FIND THE LAST CHAR 69000021 BCR 7,RF WHEN FOUND BRANCH 69200021 BCT R1,OTA21900 LOOK AGAIN 69400021 OTA22000 EQU * 69600021 LM RPARC,RB,DXCCW8 RESTORE REGS 69800021 MVC DXRETMOD,ID3D3D MOVE IN RETURN IDTTR 70000021 SR RET,RET FOR WTO RETURN 70200021 LA RF,ID3D0R WTO MODULE IDTTR 70400021 B OTA22400 GO FINISH MESSAGE 70600021 * 70800021 OTA22100 EQU * RETURN POINT AFTER WTOR 71000021 SPACE 71200021 IECRES WAIT 71400021 SPACE 71600021 CLI REPLY,CHARU OPERATOR SAY OK TO USE 71800021 BNE OTA22200 NO, RQST ANOTHER VOL SA59358 71850001 CLI MCSFLAGS+7,CHAR7 IEC107D MSG ISSUED? SA59358 71900001 BE OTA21650 YES, GO ISSUE IEC134D SA59358 71950001 B OTA21000 GO TO REWIND SA59358 72000001 OTA22200 EQU * 72200021 SPACE 72400021 CLI REPLY,CHARM OPER SAY TO MOUNT ANOTHER VOL 72600021 BC 6,OTA21600 NO, REISSUE MESSAGE 72800021 SPACE 73000021 OTA22300 EQU * SET UP PATH TO REMOUNT 73200021 SPACE 73400021 LA RF,ID3D3C LABEL EDITOR IDTTR 73600021 LA RET,K4 ENTRY VALUE 73800021 OTA22400 EQU * 74000021 IECRES XCTL,(RF),(RET) 74200021 SPACE 74400021 OTA22700 EQU * WRITE TO OPERATOR-NO REPL 74600021 SPACE 74800021 STH R1,MSGLSTSZ STORE MESSAGE LENGTH 75000021 LA R1,MSGLSTSZ GET ADDR OF MESSAGE AREA 75200021 MVC MCSFLAGS,FLAG9U TURN ON HI BIT FOR MCS 75400021 SPACE 75600021 WTO MF=(E,(1)) WRITE TO OPERATOR 75800021 SPACE 76000021 BR RC RETURN 76200021 SPACE 76400021 OTA22800 EQU * 76600021 SPACE 76800021 EXCP DXIOB ISSUE I/O OPERATION 77000021 SPACE 77200021 IECRES WAIT 77400021 SPACE 77600021 TM DXECB,ECBNOERR TEST FOR ERROR 77800021 BCR 1,RB NO ERROR - RETURN TO CALLER 78000021 SPACE 78200021 TM IOBSTAT0,CSWUNITX CK FOR UNIT EXCEPTION 78400021 BCR 1,RB YES - IGNORE FOR NOW 78600021 SPACE 78800021 NI DCBIFLGS,X'FF'-DCBIFPIO TURN OFF ERROR FLAGS IN 79000021 * DCB TO ISSUE REWIND 79200021 * AND/OR UNLOAD COMMAND 79400021 * 79600021 * OPEN HAS FOUND AN UNCORRECTABLE I/O ERROR, BUT WILL ASK FOR NEW 79800021 * VOLUME RATHER THAN ABEND WITH '613' 80000021 * 80200021 OTA22900 EQU * ASK FOR NEW VOLUME 80400021 SPACE 80600021 MVC MSGIOSUP(K16),ERRMSG9U GET FIRST PART OF MESSAGE 80800021 MVC MSGTEXT+5(K4),MCSRTDS5 DESCRIPTOR, ROUTE CODES A39467 80900021 SPACE 81000021 OTA23000 EQU * SECURED TAPE ENTRY POINT 81200021 SPACE 81400021 MVC MSGUN+K6,UCBNAME GET UNIT ADDRESS 81600021 MVI MSGUN+K9,COMMA PUT COMMA BETWEEN DDD & SER 81800021 MVC MSGVOLSR+K6,UCBVOLI MOVE IN VOLUME SERIAL NUMBER 82000021 LA R1,K30 ADD LENGTH OF MESSAGE 82400021 SPACE 82600021 BAL RC,OTA22700 GO WRITE TO OPERATOR 82800021 SPACE 83000021 B OTA22300 GO TO REMOUNT 83200021 * 83400021 * CONSTANTS 83600021 * 83800021 ONE9U DC X'0001' USED TO TEST JFCB FILE 84000021 * SEQUENCE NUMBER 84200021 FLAGSU DC X'8000' MCSFLAGS FOR WTOR PREFIX 84400021 ARETENU DC C'IEC107D E ' BASIC MESSAGE FORMAT 84600021 ANSIMSG EQU * ANSI VOLUME MOUNTED 84800021 DC X'8000' MCS FLAGS FOR WTOR PREFIX 85000021 DC C'IEC134D A ' ANSI VOLUME MOUNTED 85200021 ERRMSG9U DC C'IEC112I I/O ERR ' BASIC ERROR MESSAGE 85400021 PROMSG DC C'SEC VOL' SECURITY VOLUME REJECTED 85600021 INFMSGU DC C'IEC705I TAPE ON ' BASIC TAPE INFO MESSAGE 85800021 ISETCU DC C' IS NL, 800 BPI' COMMON MESSAGE INFO 86000021 MCSRTDS6 DC X'10002000' ROUTE TO TAPE POOL 86200021 * MUST FOLLOW 'ISETCU' 86400021 DS 0F ALLIGN ON FULLWORD BOUNDRY 86600021 MCSRTDS5 DC X'10002040' RTE TO TP POOL & ERR CONS 86800021 MCSRTDSU DC X'40002000' MESSAGES 107D,134D-- A39467 86900021 * DESCRIPTOR, ROUTE CODES 87000021 NSLCON DC C'NSL,' NON STANDARD LABEL 87200021 AHDR1U DC C'HDR1' USED TO TEST IF HEADER 87400021 ACCWU DC X'0700000020000050' BASIC CCW - REWIND COMMAND 87600021 C1600U DC C'1600' 1600 BPI 87800021 C6250U DC C'6250' 6250 BPI 99223 87850000 C200U DC C'200 ' 200 BPI 88000021 C556U DC C'556 ' 556 BPI 88200021 FLAG9U DC X'8000' MCS HI ORDER FLAG 88400021 DS 0F ALIGN ON FULLWRD BNDRY 88600021 EXPMSGU DC X'C0000000' MASK TO SET ON WTOR INDICATOR 88800021 SCRTCH9U DC C'SCRTCH' NON-SPECIFIC VOLUME REQUEST 89000021 SPACE 89200021 XCTL3D XCTLTABL ID=(ID3D3C,3C,ID3D3E,3E,ID3D4F,4F, X89400021 ID3D0R,0R,ID3D3D,3D) 89600021 IECDSECS CVT,TCB,TIOT,DCB,UCB,MAIN,WTG,EXPAND=YES 89800021 IECEQU 90000021 END 90200021 ./ ADD SSI=00010346,NAME=IFG0193E,SOURCE=0 TITLE 'IFG0193E/OPEN - CREATE STANDARD LABEL' 00200000 COPY LCGASMSW 00250000 IFG0193E CSECT 00800000 *********************************************************************** 01000000 * * 01200000 * * 01400000 * RELEASE 25 DELETIONS/CHANGES * 01600000 * RELEASE 24 DELETIONS/CHANGES * 01800000 * RELEASE 23 DELETIONS/CHANGES * 02000000 * RELEASE 22 DELETIONS/CHANGES * 02200000 * RELEASE 21.7 DELETIONS/CHANGES * 02390001 *0000 SA49476 02391001 * RELEASE 21 DELETIONS/CHANGES * 02400000 *0000662000 A39467 02500021 * * 02600000 * STATUS CHANGE LEVEL 000 * 02800000 * * 03000000 * FUNCTION - * 03200000 * THIS MODULE CONTAINS THE FUNCTION(S) OR PART(S) OF FUNCTION(S)-- * 03400000 * OPEN TAPE CREATE LABEL FUNCTION. * 03600000 * REFER TO THE FOLLOWING 'FUNCTION PROLOG(S)' FOR DETAILS. * 03800000 * * 04000000 * ENTRY POINTS - * 04200000 * IFG0193E - ENTRY POINT VIA THE RESIDENT XCTL FROM THE FOLLOWING--* 04400000 * IFG0193C OR IFG0193D - TO CREATE A STANDARD LABEL. * 04600000 * * 04800000 * INPUT - * 05000000 * REFER TO THE FOLLOWING 'FUNCTION PROLOG(S)'. * 05200000 * * 05400000 * OUTPUT - * 05600000 * REFER TO THE FOLLOWING 'FUNCTION PROLOG(S)'. * 05800000 * * 06000000 * EXTERNAL REFERENCES - * 06200000 * IFG019RA - OPEN/CLOSE/EOV RESIDENT ROUTINE FOR XCTL AND * 06400000 * WAIT. * 06600000 * REFER TO THE FOLLOWING 'FUNCTION PROLOG(S)'. * 06800000 * * 07000000 * EXITS, NORMAL - * 07200000 * EXIT VIA THE RESIDENT ROUTINE XCTL TO ONE OF THE FOLLOWING-- * 07400000 * IFG0193C - WHEN A REMOUNT IS REQUIRED. * 07600000 * IFG0194F - TO REPROCESS THE DCB. * 07800000 * REFER TO THE FOLLOWING 'FUNCTION PROLOG(S)'. * 08000000 * * 08200000 * EXITS, ERROR - * 08400000 * NONE. * 08600000 * * 08800000 * TABLES/WORK AREAS - * 09000000 * REFER TO THE FOLLOWING 'FUNCTION PROLOG(S)'. * 09200000 * * 09400000 * ATTRIBUTES - * 09600000 * REENTRANT, REFRESHABLE, READ-ONLY, ENABLED, PRIVILEGED * 09800000 * * 10000000 * CHARACTER CODE DEPENDENCY - * 10200000 * CLASS ONE CHARACTER CODE DEPENDENCY - THE EBCDIC CHARACTER CODE * 10400000 * WAS USED FOR ASSEMBLY. THE MODULE MUST BE REASSEMBLED IF A * 10600000 * DIFFERENT CHARACTER SET IS USED FOR EXECUTION. * 10800000 * * 11000000 * NOTES - * 11200000 * REFER TO THE FOLLOWING 'FUNCTION PROLOG(S)'. * 11400000 * * 11600000 *********************************************************************** 11800000 EJECT 12000000 *********************************************************************** 12200000 * * 12400000 * FUNCTION PROLOG * 12600000 * * 12800000 *********************************************************************** 13000000 * * 13200000 * FUNCTION NAME - * 13400000 * OPEN TAPE CREATE LABEL FUNCTION. * 13600000 * * 13800000 * (STATUS) - * 14000000 * NOT APPLICABLE * 14200000 * * 14400000 * FUNCTION - * 14600000 * GET FROM THE OPERATOR PERMISSION TO CREATE THE LABEL AND THE * 14800000 * NECESSARY LABEL INFORMATION. * 15000000 * WRITE A STANDARD OR ASCII LABEL AN TAPE MARK. * 15200000 * ASCII LABELS ARE TRANSLATED BEFORE THEY ARE WRITTEN. * 15400000 * EXIT FOR A REMOUNT IF AN I/O ERROR OCCURES WHEN WRITTING THE * 15600000 * LABEL OR TAPE MARK. * 15800000 * * 16000000 * ENTRY POINTS - * 16200000 * ENTERED FROM THE FOLLOWING-- * 16400000 * OPEN TAPE LABEL EDITOR FUNCTION OR OPEN TAPE DESTROY LABEL * 16600000 * FUNCTION TO CREATE A STANDARD LABEL. * 16800000 * REFER TO THE PRECEEDING MODULE PROLOG. * 17000000 * * 17200000 * INPUT - * 17400000 * A POINTER TO EACH OF THE FOLLOWING-- * 17600000 * CURRENT PARAMETER LIST ENTRY. * 17800000 * DD ENTRY IN THE TIOT. * 18000000 * WTG TABLE. * 18200000 * CURRENT WTG TABLE ENTRY. * 18400000 * DCB. * 18600000 * OPEN WORK AREA. * 18800000 * RESIDENT ROUTINE. * 19000000 * UCB * 19200000 * * 19400000 * OUTPUT - * 19600000 * STANDARD OR ASCII VOLUME LABEL WRITTEN ON THE TAPE. * 19800000 * THE FOLLOWING MESSAGES ARE ISSUED WHEN REQUIRED-- * 20000000 * IEC704A L - REQUEST LABEL INFORMATION. * 20200000 * IEC112I I/O ERROR - I/O ERROR DURING WRITE OF LABEL OR * 20400000 * TAPE MARK. * 20600000 * * 20800000 * EXTERNAL REFERENCES - * 21000000 * REFER TO THE PRECEEDING MODULE PROLOG. * 21200000 * * 21400000 * EXITS, NORMAL - * 21600000 * REFER TO THE PRECEEDING MODULE PROLOG. * 21800000 * OPEN TAPE LABEL EDITOR FUNCTION WHEN A REMOUNT IS REQUIRED. * 22000000 * OPEN TAPE MOUNT VERIFICATION FUNCTION TO REPROCESS THE DCB. * 22200000 * * 22400000 * EXITS, ERROR - * 22600000 * NONE. * 22800000 * * 23000000 * TABLES/WORK AREAS - * 23200000 * THE OPEN, CLOSE, OR EOV WORK AREA AND THE WHERE-TO-GO (WTG) * 23400000 * TABLE ARE DESCRIBED BY THE DSECTS AT THE END OF THE LISTING. * 23600000 * * 23800000 * ATTRIBUTES - * 24000000 * REFER TO THE PRECEEDING MODULE PROLOG. * 24200000 * * 24400000 * CHARACTER CODE DEPENDENCY - * 24600000 * REFER TO THE PRECEEDING MODULE PROLOG. * 24800000 * * 25000000 * NOTES - * 25200000 * * 25400000 *********************************************************************** 25600000 EJECT 25800000 * 26000000 USING FORCORE,RCORE WORK AREA 26200000 USING TIOENTRY,RTIOT TIOT ENTRY 26400000 USING IHADCB,RDCB DCB 26600000 USING UCBOB,RUCB UCB 26800000 BALR RBASE,0 SET BASE REGISTER 27000000 USING *,RBASE 27200000 * 27400000 * 27600000 * GET VOLUME LABEL INFORMATION 27800000 * 28000000 * SET UP TO WRITE TO OPERATOR THE FOLLOWING MESSAGE 28200000 * 28400000 * IEC704A L DDD 28600000 * 28800000 * WHERE L INDICATES THAT LABEL INFORMATION IS REQUIRED FOR THE 29000000 * OUTPUT TAPE VOLUME MOUNTED ON DEVICE DDD. OPERATOR RESPONSE- 29200000 * 29400000 * REPLY XX, 'SER,OWNER' 29600000 * 29800000 * WHERE SER IS THE 6-DIGIT VOLUME SERIAL NUMBER AND OWNER IS A 30000000 * 10 CHARACTER FIELD FOR OWNER'S NAME OR SIMILAR IDENTIFICATION. 30200000 * 30400000 OTA23300 EQU * GET SERIAL NO FROM OPERATOR 30600000 SPACE 30800000 MVI MSGTEXT+K19,BLANK CLEAR REPLY AREA 31000000 MVC MSGTEXT+K20(K27),MSGTEXT+K19 TO BLANKS 31200000 LA R1,MSGTEXT+K19 PLACE ADDRESS FOR REPLY 31400000 ST R1,REPLYLTH INTO WTOR REPLY ADDRESS 31600000 MVI REPLYLTH,K17 LENGTH OF REPLY IS 17 CHR 31800000 TM JFCBLTYP,JFCBAL ANSI LABEL SPECIFIED 32000000 BZ OTA23400 NO, BRANCH 32200000 MVI REPLYLTH,K21 REPLY LENGTH IS 21 CHAR 32400000 OTA23400 EQU * 32600000 LA R1,DXECB PLACE ADDRESS OF ECB 32800000 ST R1,REPLYECB INTO THE WTOR ECB ADDRESS 33000000 ST R1,MSGLSTSZ INSURE ZEROS IN MSG LIST 33200000 LA R1,K17 LENGTH OF MESS + LGN FLD 33400000 STH R1,MSGLSTSZ STORE MESSAGE LENGTH 33600000 MVC MCSFLAGS,FLAG9T TURN ON HI BIT FOR MCS 33800000 MVC MSGIOSUP(K10),IEC704A MOVE IN BASIC MESSAGE 34000000 MVC MSGUN,UCBNAME SYMBOLIC UNIT NAME TO MSG 34200000 MVC MSGUN+K3(K4),MCSRTDST STORE ROUTING MCS INFO 34400000 MVI DXECB,K0 CLEAR ECB COMPLETION BITS 34600000 LR R1,RCORE GET MESSAGE ADDR FOR WTOR 34800000 * ASK OPERATOR FOR SERIAL 35000000 WTOR MF=(E,(1)) NUMBER AND OWNER INFO 35200000 SPACE 35400000 WAIT ECB=DXECB WAIT FOR OPERATOR'S REPLY 35600000 SPACE 35800000 MVI VOLLABI,BLANK CLEAR OUT FIRST PART 36000000 MVC VOLLABI+K1(51),VOLLABI OF LABEL AREA 36200000 SPACE , 36400000 OC VOLLABI,MSGTEXT+K19 RETRIEVE 1ST TWO CHRS 36600000 CLC CHRM9T,VOLLABI IF OPER WANTS DISMOUNT 36800000 BE OTA24400 GO TO LOAD OMODVOL1 37000000 SPACE , 37200000 LA RD,K7 LOOK THRU 7 CHRS FOR COMMA 37400000 LA R1,VOLNO POINT IN FRONT OF VOLSER 37600000 SPACE , 37800000 OTA23600 EQU * LOOP TO CHECK REPLY 38000000 SPACE , 38200000 LA R1,K1(R1) POINT TO NEXT CHAR 38400000 CLI K48(R1),COMMA IS THIS A COMMA 38600000 BNE OTA23700 NO, CONTINUE 38800000 MVC VOLOWNER,K49(R1) MOVE IN OWNER INFORMATION 39000000 TM JFCBLTYP,JFCBAL ANSI LABELS SPECIFIED 39200000 BZ OTA24000 NO, BRANCH 39400000 MVC AVOLOWNR,K49(R1) MOVE OWNER INFO TO LABEL 39600000 B OTA24000 GO TEST LENGTH OF VOLSER 39800000 OTA23700 EQU * 40000000 OC K0(K1,R1),K48(R1) FOLD CHAR INTO VOLSERNO 40200000 TM VOLLABI+K3,K1 HAS A BLANK BEEN FOUND 40400000 BNO OTA23800 NO, GO CHECK FOR ONE NOW 40600000 CLI K0(R1),BLANK IS IT AN EMBEDDED BLANK 40800000 BNE OTA23300 YES, GO ISSUE MESSAGE AGAIN 41000000 SPACE , 41200000 OTA23800 EQU * CHECK FOR A FIRST BLANK 41400000 SPACE , 41600000 CLI K0(R1),BLANK IS THIS A BLANK 41800000 BNE OTA23900 NO, GO TEST FOR ALPHAMERIC 42000000 SPACE , 42200000 OI VOLLABI+K3,K1 SET BLANK HAS BEEN FOUND 42400000 SPACE , 42600000 OTA23900 EQU * BR IF MORE CHRS TO CHECK 42800000 SPACE , 43000000 BCT RD,OTA23600 GO TO NEXT CHR IF LESS THAN 7 43200000 SPACE , 43400000 OTA24000 EQU * SET UP TO MOVE VOLSERNO 43600000 SPACE , 43800000 CLI VOLSERNO,BLANK IS VOLSERNO BLANK 44000000 BE OTA23300 YES, GO ISSUE MESSAGE AGAIN 44200000 * 44400000 * AT THIS POINT THE OPERATOR HAS SUPPLIED A GOOD 44600000 * VOLUME SERIAL NUMBER 44800000 * 45000000 CLC DXVOLMT1,SCRATC9T IS THIS A NON-SPECIFIC VOL REQ 45200000 BE OTA24100 YES, BRANCH TO WRITE LABEL 45400000 SPACE 45600000 CLC DXVOLMT1,VOLSERNO DID THE OPERATOR SPECIFY THE 45800000 * SAME VOL SER AS REQUESTED 46000000 BNE OTA24400 NO, GO ASK FOR REMOUNT 46200000 SPACE 46400000 OTA24100 EQU * SET UP TO WRITE LABEL 46600000 SPACE 46800000 MVC UCBVOLI,VOLSERNO PUT VOL SER IN UCB 47000000 MVC DXCCW1,ACCWT GET BASIC CCW FOR REWIND 47200000 BAL RB,OTA24600 REWIND TAPE TO LOAD POINT 47400000 ST RCORE,DXCCW1 ADDR OF LABEL AREA 47600000 MVI DXCCW1,CCWWRTAP 1ST CCW IS WRITE VOL1 47800000 * 48000000 * BUILD VOLUME LABEL 1 48200000 * 48400000 MVC VOLLABI(L'AVOL1T),AVOL1T PUT IN LABEL IDENTIFIER 48600000 MVI VOLSEC,CHAR0 SECURITY 48800000 MVI VOLOWNER+K10,BLANK CLEAR 49000000 MVC VOLOWNER+K11(K28),VOLOWNER+K10 2ND AREA 49200000 TM JFCBLTYP,JFCBAL ANSI LABEL SPECIFIED 49400000 BZ OTA24200 NO, GO WRITE LABEL 49600000 * 49800000 * MAKE CHANGES REQUIRED TO CREATE AN ANSI LABEL 50000000 * 50200000 MVI VOLSEC,BLANK ACCESSABILITY BYTE TO BLANK 50400000 MVI LABSTAND,CHAR1 SET LABEL STANDARD 50600000 * 50800000 * TRANSLATE LABEL DATA TO ASCII CODE BEFORE WRITING 51000000 * 51200000 XLATE DXLBL,K80,TO=A TRANSLATE LABEL DATA 51400000 OTA24200 EQU * 51600000 BAL RB,OTA24600 GO ISSUE CHANNEL PROGRAM 51800000 SPACE 52000000 MVC DXCCW2,ACCWT NEED ANOTHER CHAN PROG 52200000 MVI DXCCW1,CCWWTM GET WRITE TAPE MARK OP CODE 52400000 MVI DXCCW1+K4,CCWCMDCH CONNECT TO NEXT CCW 52600000 MVI DXCCW2,CCWNOP GET NOP CODE 52800000 SPACE 53000000 BAL RB,OTA24600 WRITE A TAPE MARK 53200000 SPACE 53400000 OI UCBDMCT,UCBMOUNT INDICATE LABEL VERIFICATION 53600000 MVC JFCBVOLS(K6),UCBVOLI MOVE VOLUME SERIAL TO JFCB 53800000 NI JFCBMASK+K5,LBWTRI9T TURN OFF LBL ERR INDICATORS 54000000 TM JFCBLTYP,JFCBAL ANSI LABEL SPECIFIED 54200000 BZ OTA24300 NO SET STANDARD LABEL BIT 54400000 OI UCBSTAB,UCBBSTR YES SET ANSI LABEL BIT 54600000 NI UCBSTAT,X'FF'-UCBDADI RESET SL BIT OFF IN UCB 54800000 B OTA24400 GO TO NEXT LOAD 55000000 OTA24300 EQU * 55200000 OI UCBSTAT,UCBDADI MARK UCB FOR STANDARD LBL 55400000 NI UCBSTAB,X'FF'-UCBBSTR RESET AL BIT OFF IN UCB 55600000 OTA24400 EQU * 55800000 LA RF,ID3E4F MOUNT VERIFICATION MOD IDTTR 56000000 LA RET,K0 NORMAL ENTRY MNT VERIFY 56200000 TM JFCBMASK+K5,JFCSLCRE IS REMOUNT NEEDED 56400000 BZ OTA24500 NO, BRANCH 56600000 LA RF,ID3E3C LABEL EDITOR MODULE IDTTR 56800000 LA RET,K4 ENTRY VALUE 57000000 B OTA24550 BR TO EXIT SA49476 57050001 OTA24500 EQU * 57200000 XC UCBVOLI,UCBVOLI ZERO UCBVOL TO SIMULATE SA49476 57250001 * VOL REF FUNCTION INTER- SA49476 57251001 * FACE TO MOUNT VERIFICAT SA49476 57252001 * MOUNT BIT ON, UCBVOLI SA49476 57253001 * ZERO, THEREFORE UNIT SA49476 57254001 * ALREADY SELECTED FOR SA49476 57255001 * SCRATCH REQUEST SA49476 57256001 OTA24550 EQU * SA49476 57300001 IECRES XCTL,(RF),(RET) 57400000 * 57600000 OTA24600 EQU * 57800000 SPACE 58000000 EXCP DXIOB ISSUE I/O OPERATION 58200000 SPACE 58400000 IECRES WAIT 58600000 SPACE 58800000 TM DXECB,ECBNOERR TEST FOR ERROR 59000000 BCR 1,RB NO ERROR - RETURN TO CALLER 59200000 SPACE 59400000 TM IOBSTAT0,CSWUNITX CK FOR UNIT EXCEPTION 59600000 BCR 1,RB YES - IGNORE FOR NOW 59800000 SPACE 60000000 NI DCBIFLGS,X'FF'-DCBIFPIO TURN OFF ERROR FLAGS IN 60200000 * DCB TO ISSUE REWIND 60400000 * AND/OR UNLOAD COMMAND 60600000 * 60800000 * OPEN HAS FOUND AN UNCORRECTABLE I/O ERROR, BUT WILL 61000000 * ASK FOR NEW VOLUME RATHER THAN ABEND WITH '613' 61200000 * 61400000 OTA24700 EQU * ASK FOR NEW VOLUME 61600000 SPACE 61800000 MVC MSGIOSUP(K16),ERRMSG9T GET FIRST PART OF MESSAGE 62000000 MVC MSGUN+K6,UCBNAME MOVE IN DEVICE ADDRESS 62200000 MVI MSGUN+K9,COMMA PUT COMMA BETWEEN DDD & SER 62400000 MVC MSGVOLSR+K6,UCBVOLI MOVE IN VOLUME SERIAL NUMBER 62600000 MVC MSGTEXT+K5(K4),MCSRTDS4 STORE ROUTING MCS INFO 62800000 LA R1,K30 LOAD LENGTH OF MESSAGE 63000000 STH R1,MSGLSTSZ STORE MESSAGE LENGTH 63200000 LA R1,MSGLSTSZ GET ADDR OF MESSAGE AREA 63400000 MVC MCSFLAGS,FLAG9T TURN ON HI BIT FOR MCS 63600000 SPACE 63800000 WTO MF=(E,(1)) WRITE TO OPERATOR 64000000 SPACE 64200000 B OTA24400 GO TO REMOUNT 64400000 * 64600000 SPACE 64800000 * CONSTANTS 65000000 ERRMSG9T DC C'IEC112I I/O ERR ' BASIC ERROR MESSAGE 65200000 IEC704A DC C'IEC704A L ' BASIC LABEL MESSAGE 65400000 AVOL1T DC C'VOL1' VOL LABEL IDENTIFIER 65600000 ACCWT DC X'0700000020000050' BASIC CCW - REWIND COMMAN 65800000 FLAG9T DC X'8000' MCS HI ORDER FLAG 66000000 MCSRTDST DC X'40002000' MSG IEC704A DESCRIPTOR A39467 66100021 * AND ROUTING CODES 66200021 MCSRTDS4 DC X'10002040' RTE TO TP POOL & ERR CONS 66400000 ONE9T DC X'0001' ONE 66600000 SCRATC9T DC C'SCRTCH' UNSPECIFIED VOLUME 66800000 CHRM9T DC C'M ' REMOUNT REPLY 67000000 LTORG 67200000 XCTL3E XCTLTABL ID=(ID3E3C,3C,ID3E4F,4F) 67400000 IECDSECS CVT,TCB,TIOT,DCB,UCB,MAIN,WTG,EXPAND=YES 67600000 IECEQU 67800000 END 68000000 ./ ADD SSI=00011235,NAME=IFG0194A,SOURCE=0 TITLE 'IFG0194A/OPEN - DA MOUNT MESSAGE' 00100021 COPY LCGASMSW 00150000 IFG0194A CSECT 00400021 *********************************************************************** 00500021 * * 00600021 * * 00660000 * VS2 RELEASE 01 DELETIONS * 00670000 *0000 YM0871 00680000 * * 00690000 * * 00700021 * RELEASE 25 DELETIONS/CHANGES * 00800021 * RELEASE 24 DELETIONS/CHANGES * 00900021 * RELEASE 23 DELETIONS/CHANGES * 01000021 * RELEASE 22 DELETIONS/CHANGES * 01100021 * RELEASE 21.8 DELETIONS/CHANGES * 01170000 *0000179000,486000,489000 SA70424 01180021 * RELEASE 21 DELETIONS/CHANGES * 01200021 *0000087000 M1811 01250021 * * 01300021 * STATUS CHANGE LEVEL 000 * 01400021 * * 01500021 * FUNCTION - * 01600021 * THIS MODULE CONTAINS THE FUNCTION(S) OR PART(S) OF FUNCTION(S)-- * 01700021 * OPEN DA VOLUME VERIFICATION FUNCTION * 01800021 * REFER TO THE FOLLOWING 'FUNCTION PROLOG(S)' FOR DETAILS. * 01900021 * * 02000021 * ENTRY POINTS - * 02100021 * IFG0194A * 02200021 * * 02300021 * INPUT - * 02400021 * REFER TO THE FOLLOWING 'FUNCTION PROLOG(S)'. * 02500021 * * 02600021 * OUTPUT - * 02700021 * REFER TO THE FOLLOWING 'FUNCTION PROLOG(S)'. * 02800021 * * 02900021 * EXTERNAL REFERENCES - * 03000021 * IFG019RA - OPEN/CLOSE/EOV RESIDENT ROUTINE FOR XCTL AND * 03100021 * WAIT. * 03200021 * REFER TO THE FOLLOWING 'FUNCTION PROLOG(S)'. * 03300021 * * 03400021 * EXITS, NORMAL - * 03500021 * REFER TO THE FOLLOWING 'FUNCTION PROLOG(S)'. * 03600021 * * 03700021 * EXITS, ERROR - * 03800021 * EXIT IS TO THE PROBLEM DETERMINATION MODULE IFG0190P, IF AN * 03900021 * ABEND SITUATION OCCURS IN THIS MODULE. * 04000021 * REFER TO THE FOLLOWING 'FUNCTION PROLOG(S)'. * 04100021 * * 04200021 * TABLES/WORK AREAS - * 04300021 * REFER TO THE FOLLOWING 'FUNCTION PROLOG(S)'. * 04400021 * * 04500021 * ATTRIBUTES - * 04600021 * REENTRANT, REFRESHABLE, READ-ONLY, ENABLED, PRIVILEGED * 04700021 * * 04800021 * CHARACTER CODE DEPENDENCY - * 04900021 * CLASS ONE CHARACTER CODE DEPENDENCY - THE EBCDIC CHARACTER CODE * 05000021 * WAS USED FOR ASSEMBLY. THE MODULE MUST BE REASSEMBLED IF A * 05100021 * DIFFERENT CHARACTER SET IS USED FOR EXECUTION. * 05200021 * * 05300021 * NOTES - * 05400021 * REFER TO THE FOLLOWING 'FUNCTION PROLOG(S)'. * 05500021 * * 05600021 *********************************************************************** 05700021 EJECT 05800021 *********************************************************************** 05900021 * * 06000021 * FUNCTION PROLOG * 06100021 * * 06200021 *********************************************************************** 06300021 * * 06400021 * FUNCTION NAME - * 06500021 * OPEN DA VOLUME VERIFICATION FUNCTION * 06600021 * * 06700021 * (STATUS) - * 06800021 * NOT APPLICABLE * 06900021 * * 07000021 * FUNCTION - * 07100021 * *SCAN AGAIN THE UCB'S POINTED TO BY THE TIOT DD ENTRY FOR * 07200021 * A MATCHING VOLUME SERIAL NUMBER. * 07300021 * *SELECT A UNIT FROM THE TIOT DD ENTRY UCB LIST TO MOUNT THE * 07400021 * DESIRED VOLUME ON. * 07500021 * *INCREMENT UCB OPEN DCB DATA MANAGEMENT COUNTER TO HOLD THIS * 07600021 * UCB FOR THIS VOLUME. * 07700021 * *SET UP WORK DEB UCB ADDRESS AND EXTENT FOR SELECTED UNIT. * 07800021 * *ISSUE AN 'IEC106E R UUU,VOLSER' MESSAGE IF * 07900021 * A PREVIOUS VOLUME MUST BE DEMOUNTED TO MAKE ROOM. * 08000021 * *ISSUE AN 'IEC101A M UUU,VOLSER,JOBNAME,STEPNAME,DSNAME' * 08100021 * MOUNT MESSAGE TO THE OPERATOR. * 08200021 * *READ THE VOLUME LABEL, VERIFY THAT IT IS THE CORRECT ONE, * 08300021 * MOVE THE VTOC TTR INTO THE UCB, AND TURN OFF THE MOUNT BIT. * 08400021 * *IF NONSPECIFIC REQUEST, MOVE NEW VOLUME SERIAL NUMBER INTO * 08500021 * JFCBVOLS. * 08600021 * *IF WRONG VOLUME MOUNTED, ISSUE AN 'IEC111E D UUU,VOLSER' * 08700021 * MESSAGE, WHERE VOLSER IS THE VOLUME SERIAL NUMBER OF THE * 08800021 * VOLUME ACTUALLY MOUNTED. * 08900021 * * 09000021 * ENTRY POINTS - * 09100021 * REFER TO THE PRECEEDING MODULE PROLOG. * 09200021 * * 09300021 * INPUT - * 09400021 * REGISTERS - * 09500021 * RTIOT 9 - CURRENT TIOT DD ENTRY. MAY BE EACH OF SEVERAL * 09600021 * ENTRIES FOR CONCATENATED BPAM OR ISAM. * 09700021 * RET 14 - ENTRY INDICATOR. * 09800021 * WORK AREAS - * 09900021 * DXLBL (96 BYTES) - MUST BE AVAILABLE FOR USE AS WORK AREA * 10000021 * FOR WRITING MESSAGES, AND READING VOLUME LABEL. * 10100021 * DXJBF (176 BYTES) - USED FOR DSNAME AND 'TEMPORARY DATA SET' * 10200021 * INDICATOR IN MOUNT MESSAGE (BY IFG0190R) AND BY * 10300021 * PROBLEM DETERMINATION FOR ITS MESSAGE IF THERE IS AN ABEND.* 10400021 * DXCCW2+4 - ADDRESS IN TIOT DD ENTRY UCB LIST OF FIRST * 10500021 * UCB POINTER THAT CAN BE USED. PREVIOUS UCB * 10600021 * POINTERS ARE ALREADY LOCKED INTO PREVIOUS VOLUMES * 10700021 * OF A MULTIVOLUME MOUNT. * 10800021 * DXCCW1-DXCCW3 - ARE CONSIDERED AVAILABLE FOR USE BY THIS * 10900021 * FUNCTION. DXCCW1-DXCCW2 DO NOT HAVE TO HAVE A * 11000021 * SEARCH ID EQ, TIC *-8 CHANNEL PROGRAM IN THEM, SINCE * 11100021 * IT WILL BE CONSTRUCED BY THIS FUNCTION. * 11200021 * DXCCW4-DXCCW7 - WILL NOT BE TOUCHED. * 11300021 * DXCCW8-DXCCW11 - ARE USED AS A REGISTER SAVE AREA. * 11400021 * DXVOLMT1 - CONTAINS THE VOLUME SERIAL NUMBER OF THE DESIRED * 11500021 * VOLUME. IF THE REQUEST IS NONSPECIFIC, IT CONTAINS * 11600021 * 'SCRTCH'. * 11700021 * IF RET=4 OR 8 - THE WORK DEB MUST ALREADY BE SET UP FOR THE * 11800021 * UNIT SELECTED FOR THE VOLUME. * 11900021 * * 12000021 * OUTPUT - * 12100021 * REGISTERS - * 12200021 * R0-R1 0-1 - ARE TO BE CONSIDERED UNDEFINED. * 12300021 * RTIOT 9 - CURRENT TIOT DD ENTRY. SAME AS AT ENTRY. * 12400021 * RUCB 10 - CURRENT MAIN OR SUB UCB ADDRESS. * 12500021 * RB-RD 11-13 - ARE TO BE CONSIDERED UNDEFINED. * 12600021 * RET 14 - SET TO 4 AS RETURN ENTRY INDICATOR. * 12700021 * WORK AREAS - * 12800021 * DXLBL (96 BYTES) - HAS VOLUME LABEL. ALL CURRENT CALLING * 12900021 * FUNCTIONS CONSIDER IT TO BE UNDEFINED. * 13000021 * DXJBF (176 BYTES) - SAME AS AT ENTRY. * 13100021 * DXCCW2+4 - ADDRESS IN TIOT DD ENTRY UCB LIST OF FIRST * 13200021 * UCB POINTER THAT CAN BE USED. SAME AS AT ENTRY. * 13300021 * DXCCW1-DXCCW3 - CONTAIN A SEARCH ID EQ, TIC *-8 CHANNEL * 13400021 * PROGRAM. * 13500021 * DXCCW4-DXCCW7 - SAME AS AT ENTRY. * 13600021 * DXCCW8-DXCCW11 - ARE USED AS A REGISTER SAVE AREA. * 13700021 * DXVOLMT1 - CONTAINS THE VOLUME SERIAL NUMBER OF THE DESIRED * 13800021 * VOLUME. IF THE REQUEST WAS NONSPECIFIC, IT STILL CONTAINS * 13900021 * 'SCRTCH' AND NOT THE NAME OF THE NEW VOLUME. * 14000021 * * 14100021 * EXTERNAL REFERENCES - * 14200021 * REFER TO THE PRECEEDING MODULE PROLOG. * 14300021 * * 14400021 * EXITS, NORMAL - * 14500021 * *FINAL EXIT FROM THIS FUNCTION IS VIA XCTL TO THE MODULE WHOSE * 14600021 * IDTTR IS IN DXRETMOD. * 14700021 * *THIS PARTICULAR MODULE, IFG0194A, XCTLS TO * 14800021 * IFG0190R IF A DSNAME IS NEEDED ON A MOUNT MESSAGE, OR ELSE TO * 14900021 * IFG0194C TO PERFORM THE REMAINER OF THIS FUNCTION. * 15000021 * * 15100021 * EXITS, ERROR - * 15200021 * *413 ABEND VIA PROBLEM DETERMINATION MODULE IFG0190P IF * 15300021 * UNABLE TO DEMOUNT A VOLUME IN ORDER TO MOUNT THE DESIRED VOLUME. * 15400021 * *413 ABEND VIA PROBLEM DETERMINATION MODULE IFG0190P IF * 15500021 * AN I/O ERROR WHILE READING THE VOLUME LABEL. * 15600021 * REFER TO THE PRECEEDING MODULE PROLOG. * 15700021 * * 15800021 * TABLES/WORK AREAS - * 15900021 * THE FORMAT AND CONTENTS OF THE WORK AREAS USED ARE DESCRIBED BY * 16000021 * THE DSECTS AT THE END OF THE LISTING. * 16100021 * * 16200021 * ATTRIBUTES - * 16300021 * REFER TO THE PRECEEDING MODULE PROLOG. * 16400021 * * 16500021 * CHARACTER CODE DEPENDENCY - * 16600021 * REFER TO THE PRECEEDING MODULE PROLOG. * 16700021 * * 16800021 * NOTES - * 16900021 * *THIS FUNCTION MAY GO INTO A WAIT STATE UNTIL THE REQUESTED * 17000021 * VOLUME HAS BEEN MOUNTED. * 17100021 * A DISPLAY R COMMAND WILL INDICATE WHAT UCB IS BEING WAITED ON, * 17200021 * BECAUSE THE UCB MOUNT BIT WILL BE ON. * 17300021 * *ONE OF THE MAIN CONSTRAINTS OF THIS FUNCTION IS TO USE AS LITTLE * 17400021 * WORK AREA AS POSSIBLE, BECAUSE SOME OF THE FUNCTIONS THAT CALL * 17500021 * THIS FUNCTION HAVE VERY LITTLE WORK AREA TO SPARE. * 17600021 *********************************************************************** 17700021 EJECT 17800021 IECDSECS TIOT,UCB,MAIN,BASE DEFINE DESIRED DSECTS SA70424X17900021 TO BE EXPANDED AT THE END 18000000 * 18100021 IECEQU , DEFINE EQUATES 18200021 * 18300021 USING FORCORE,RCORE DEFINE BASE TO MAIN WORK AREA 18400021 USING TIOENTRY,RTIOT DEFINE BASE TO TIOT DD ENTRY 18500021 USING UCBOB,RUCB DEFINE BASE TO MAIN UCB 18600021 * 18700021 BALR RBASE,0 ESTABLISH BASE REGISTER 18800021 USING *,RBASE DEFINE BASE REGISTER 18900021 * 19000021 B ODA60200(RET) BR TO INDICATED FUNCTION 19100021 * 19200021 ODA60200 B ODA60400 RET=0 SEL UNIT,MNT MSG,VOL VER 19300021 B ODA63800 RET=4 MOUNT MSG, VOL VERIFY 19400021 B ODA65600 RET=8 VOLUME VERIFY 19500021 * 19600021 *********************************************************************** 19700021 * 19800021 * TRY TO FIND UCB THAT HAS THE DESIRED VOLUME MOUNTED ON IT. 19900021 * 20000021 * THIS IS A REPEAT TEST SINCE A PARALLEL OPEN FOR THE SAME VOLUME 20100021 * MAY HAVE JUST SELECTED A PARTICULAR UNIT FOR THIS SAME VOLUME 20200021 * AND NATURALLY THE SAME UNIT MUST BE USED FOR THE SAME VOLUME. 20300021 * 20400021 ODA60400 EQU * 20500021 L RC,DXCCW2+K4 POINT TO TIOT CURRENT UCB PTR 20600021 LR RF,RC SAVE ADDR FOR UCB ADDR SWAP 20700021 SR R0,R0 GET LENGTH OF THIS 20800021 IC R0,TIOELNGH TIOT DD ENTRY 20900021 AR R0,RTIOT LAST PLUS ONE UCB ADDR 21000021 B ODA60800 BR TO START UCB LOOP 21100021 * 21200021 ODA60600 EQU * 21300021 LA RC,K4(RC) POINT TO NEXT TIOT UCB ADDR 21400021 CR RC,R0 CHECK FOR MORE UCB ADDRS 21500021 BNL ODA61200 BR IF NO MORE 21600021 * 21700021 ODA60800 EQU * 21800021 L RUCB,0(RC) LOAD UCB ADDR FROM TIOT 21900021 CLI UCBID,UCBMAIN TEST FOR 2321 22000021 BE ODA61000 BR IF NOT 2321 22100021 * 2321 DATACELL PROCESSING 22200021 USING UCBDCELL,RUCB SET BASE FOR DATACELL 22300021 CLC UCBDVOLI,DXVOLMT1 CHECK FOR CORRECT VOLUME 22400021 BNE ODA60600 BR IF NO 22500021 * 22600021 BAL RET,ODA62000 BR TO SET UP FOR 2321 SUB-UCB 22700021 * 22800021 B ODA65600 BR TO VERIFY VOLUME TO BE SURE 22900021 * 23000021 * NORMAL DIRECT ACCESS PROCESSING 23100021 USING UCBOB,RUCB NORMAL MAIN UCB 23200021 ODA61000 EQU * 23300021 CLC UCBVOLI,DXVOLMT1 CHECK IF CORRECT VOLUME 23400021 BNE ODA60600 BR IF NOT 23500021 * 23600021 BAL RET,ODA62200 BR TO SET UP FOR NORMAL UCB 23700021 * 23800021 B ODA65600 BR TO VERIFY VOLUME TO BE SURE 23900021 * 24000021 *********************************************************************** 24100021 * 24200021 * TRY TO FIND AN EMPTY UNIT TO MOUNT VOLUME ON. 24300021 * 24400021 ODA61200 EQU * 24500021 LR RC,RF POINT TO TIOT CURRENT UCB PTR 24600021 SR R0,R0 GET LENGTH OF CURRENT 24700021 IC R0,TIOELNGH TIOT DD ENTRY 24800021 AR R0,RTIOT LAST PLUS ONE UCB ADDR 24900021 B ODA61600 BR TO START UCB LOOP 25000021 * 25100021 ODA61400 EQU * 25200021 LA RC,K4(RC) POINT TO NEXT TIOT UCB ADDR 25300021 CR RC,R0 CHECK FOR MORE UCB ADDRS 25400021 BNL ODA62400 BR IF NO MORE 25500021 * 25600021 ODA61600 EQU * 25700021 L RUCB,0(,RC) LOAD UCB ADDR FROM TIOT 25800021 CLI UCBID,UCBMAIN TEST FOR 2321 25900021 BE ODA61800 BR IF NOT 2321 26000021 * 2321 DATACELL PROCESSING 26100021 USING UCBDCELL,RUCB SET BASE FOR DATACELL 26200021 CLI UCBDVOLI,K0 TEST IF EMPTY UNIT 26300021 BNE ODA61400 BR IF NO 26400021 * 26500021 BAL RET,ODA62000 BR TO SET UP FOR 2321 SUB-UCB 26600021 * 26700021 B ODA63800 BR TO ISSUE MOUNT MESSAGE 26800021 * 26900021 * NORMAL DIRECT ACCESS PROCESSING 27000021 USING UCBOB,RUCB NORMAL MAIN UCB 27100021 ODA61800 EQU * 27200021 CLI UCBVOLI,K0 TEST IF EMPTY UNIT 27300021 BNE ODA61400 BR IF NOT 27400021 * 27500021 BAL RET,ODA62200 BR TO SET UP FOR NORMAL UCB 27600021 * 27700021 B ODA63800 BR TO ISSUE MOUNT MESSAGE 27800021 * 27900021 *********************************************************************** 28000021 * 28100021 * 2321 DATACELL PROCESSING 28200021 ODA62000 EQU * 28300021 USING UCBDCELL,RUCB SET BASE FOR DATACELL 28400021 MVC 0(K4,RC),0(RF) FIRST UCB ADDR TO CURRENT 28500021 ST RUCB,0(,RF) CURRENT UCB ADDR TO FIRST 28600021 * 28700021 LH RD,UCBDBBNR PICK UP BB NUMBER 28800021 STH RD,DXDEBBIN STORE USER BB IN WORK AREA 28900021 SLA RD,K4 MULTIPLY BB NUMBER BY 16 29000021 LA RD,UCBDCELL-UCBOB(RD) (BB)(16)+MAIN UCB LENGTH 29100021 LCR RD,RD NEGATE OFFSET 29200021 LA RD,0(RD,RUCB) ZERO SET FILE MASK, MAIN UCB 29300021 ST RD,DXDEBUCB STORE MAIN UCB ADDR IN WORK DEB 29400021 * 29500021 AIF ('&LIB' NE 'LIB1').LIB24A1 29550000 SSM *+K1 DISABLE INTERRUPTS 29600021 .LIB24A1 ANOP 29650000 AIF ('&LIB' EQ 'LIB1').LIB14A1 29670000 MODESET ENABLE=NO DISABLE INTERRUPTS Y01082 29680000 .LIB14A1 ANOP 29690000 IC RF,UCBDDMCT INCREMENT UCB 29700021 LA RF,K1(RF) OPEN DCB COUNT 29800021 STC RF,UCBDDMCT BY 1 29900021 AIF ('&LIB' NE 'LIB1').LIB24A2 29950000 SSM ODA6800K RE-ENABLE INTERRUPTS 30000021 .LIB24A2 ANOP 30050000 AIF ('&LIB' EQ 'LIB1').LIB14A2 30060000 MODESET ENABLE=YES RE-ENABLE INTERRUPTS Y01082 30070000 .LIB14A2 ANOP 30080000 * 30100021 BR RET RETURN TO CALLER 30200021 * 30300021 * NORMAL DIRECT ACCESS PROCESSING 30400021 USING UCBOB,RUCB NORMAL MAIN UCB 30500021 ODA62200 EQU * 30600021 MVC 0(K4,RC),0(RF) FIRST UCB ADDR TO CURRENT 30700021 ST RUCB,0(,RF) CURRENT UCB ADDR TO FIRST 30800021 * 30900021 MVC DXDEBUCB+K1(K3),K1(RF) MOVE UCB ADDR INTO WORK DEB 31000021 XC DXDEBBIN,DXDEBBIN ZERO NOT APPLICABLE BIN NO. 31100021 * 31200021 AIF ('&LIB' NE 'LIB1').LIB24A3 31250000 SSM *+K1 DISABLE INTERRUPTS 31300021 .LIB24A3 ANOP 31350000 AIF ('&LIB' EQ 'LIB1').LIB14A3 31360000 MODESET ENABLE=NO DISABLE INTERRUPTS Y01082 31370000 .LIB14A3 ANOP 31380000 IC RF,UCBDMCT INCREMENT UCB 31400021 LA RF,K1(RF) OPEN DCB COUNT 31500021 STC RF,UCBDMCT BY 1 31600021 AIF ('&LIB' NE 'LIB1').LIB24A4 31650000 SSM ODA6800K RE-ENABLE INTERRUPTS 31700021 .LIB24A4 ANOP 31750000 AIF ('&LIB' EQ 'LIB1').LIB14A4 31760000 MODESET ENABLE=YES Y01082 31770000 .LIB14A4 ANOP 31780000 * 31800021 BR RET RETURN TO CALLER 31900021 * 32000021 *********************************************************************** 32100021 * 32200021 * THE DESIRED VOLUME IS NOT MOUNTED OR BEING MOUNTED AND NO EMPTY 32300021 * UNIT IS AVAILABLE FOR MOUNTING. A UNIT MUST BE SELECTED FOR 32400021 * DEMOUNTING SO THAT THIS VOLUME CAN BE MOUNTED. 32500021 * 32600021 ODA62400 EQU * 32700021 L RC,DXCCW2+K4 POINT TO TIOT CURRENT UCB PTR 32800021 LR RF,RC SAVE ADDR FOR UCB ADDR SWAP 32900021 SR R0,R0 GET LENGTH OF CURRENT 33000021 IC R0,TIOELNGH TIOT DD ENTRY 33100021 AR R0,RTIOT LAST PLUS ONE UCB ADDR 33200021 B ODA62800 BR TO START UCB LOOP 33300021 * 33400021 ODA62600 EQU * 33500021 LA RC,K4(RC) POINT TO NEXT TIOT UCB ADDR 33600021 CR RC,R0 CHECK FOR MORE UCB ADDRS 33700021 BNL ODA65400 BR IF NO MORE TO ABEND 33800021 * 33900021 ODA62800 EQU * 34000021 L RUCB,0(,RC) LOAD UCB ADDR FROM TIOT 34100021 CLI UCBID,UCBMAIN CHECK FOR 2321 34200021 BE ODA63000 BR IF NOT 2321 34300021 * 2321 DATACELL PROCESSING 34400021 USING UCBDCELL,RUCB SET UP BASE FOR DATACELL 34500021 TM UCBDSTAT,UCBDRESV+UCBDPRES TEST FOR RESERVED, PERM RES 34600021 BNZ ODA62600 BR IF ANY 34700021 CLI UCBDUSER,K1 CHECK FOR USER COUNT = 1 34800021 BNE ODA62600 BRANCH IF NOT = 1 34900021 TM UCBDDMCT,X'FF'-UCBDDMNT CHECK DATA MNGMT COUNT 35000021 BNZ ODA62600 BR IF NOT ZERO, IT IS IN USE 35100021 * 35200021 BAL RET,ODA62000 BR TO SET UP FOR 2321 SUB-UCB 35300021 * 35400021 B ODA63200 BRANCH TO CONT PROC 35500021 * 35600021 USING UCBOB,RUCB SET UP BASE FOR UCBOB 35700021 ODA63000 EQU * 35800021 TM UCBSTAT,UCBRESV+UCBPRES+UCBSYSR TEST FOR RESERVED, 35900021 BNZ ODA62600 PERM RES, SYS RES. BR IF ANY 36000021 TM UCBSTAB,UCBBSVL TEST SHARED VOL BIT 36100021 BZ ODA62600 BR IF NOT ON, CAN'T DEMOUNT 36200021 TM UCBDMCT,X'FF'-UCBMOUNT CHECK DATA MGNT COUNT 36300021 BNZ ODA62600 BR IF NOT ZERO, IT IS IN USE 36400021 * 36500021 BAL RET,ODA62200 BR TO SET UP FOR NORMAL UCB 36600021 * 36700021 *********************************************************************** 36800021 * 36900021 * WRITE 'IEC106E R DDD,VOLSER' MESSAGE TO OPERATOR TO TELL HIM 37000021 * TO DEMOUNT THE OLD VOLUME AND SAVE IT SINCE ITS STATUS IS UNKNOWN. 37100021 * 37200021 ODA63200 EQU * 37300021 MVC MSGLSTSZ(ODA6780L),ODA6780K SET UP DEMOUNT RETAIN MSG 37400021 * 37500021 CLI UCBID,UCBMAIN CHECK FOR 2321 37600021 BE ODA63400 BR IF NOT 2321 37700021 * 37800021 * 2321 DATACELL PROCESSING 37900021 USING UCBDCELL,RUCB SET UP BASE FOR SUB UCB 38000021 MVC MSGVOLSR,UCBDVOLI ADD VOLUME SERIAL NO. TO MSG 38100021 XC UCBDVOLI,UCBDVOLI CLEAR OLD VOL SER NO. FROM UCB 38200021 * SHIFT ',VOLSER D&R' 2 PLACES RIGHT TO MAKE ROOM FOR /B 38300021 MVC MSGLSTSZ+ODA6780L+K2(K11),MSGUN+K3 38400021 MVC MSGUN+K5(K11),MSGLSTSZ+ODA6780L+K2 38500021 MVI MSGUN+K3,C'/' MOVE / INTO MESSAGE 38600021 MVC MSGUN+K4(K1),UCBDBBNR+K1 MOVE BIN NUMBER INTO MESSAGE 38700021 OI MSGUN+K4,ZONEOF CONVERT BIN NO. TO DECIMAL 38800021 MVI MSGLSTSZ+K1,K26 SET MSG LENGTH 2 BYTES LONGER 38900021 L RUCB,DXDEBUCB LOAD MAIN UCB ADDRESS 39000021 B ODA63600 BR AROUND NON-2321 39100021 * 39200021 USING UCBOB,RUCB ADDRESSING MAIN UCB 39300021 ODA63400 EQU * 39400021 MVC MSGVOLSR,UCBVOLI ADD VOLUME SERIAL NO. TO MSG 39500021 XC UCBVOLI,UCBVOLI CLEAR OLD VOL SER NO. FROM UCB 39600021 ODA63600 EQU * 39700021 MVC MSGUN,UCBNAME ADD UCB UNIT NAME TO MESSAGE 39800021 * 39900021 WTO MF=(E,MSGLSTSZ) WRITE DEMOUNT MSG TO OPERATOR 40000021 * 40100021 OI UCBFL1,UCBNOTRD SET MAIN UCB NOT-READY BIT 40200021 * 40300021 *********************************************************************** 40400021 * THIS WOULD MAKE A GOOD MODULE SPLIT POINT. 40500021 *********************************************************************** 40600021 * 40700021 * CONSTRUCT 'IEC101A M DDD,VOLSER,JOBNAME,STEPNAME' MOUNT MESSAGE 40800021 * 40900021 IECDSECS CVT,TCB,JSCB, DEFINE DESIRED DSECTS TO BE X41000021 PSCB,UPT EXPANDED AT THE END 41100021 * 41200021 USING UCBOB,RUCB ADDRESSING MAIN UCB 41300021 ODA63800 EQU * 41400021 MVC DXCCW3(K5),DXRETMOD SAVE RETURN IDTTR ACROSS MSG 41500021 * 41600021 L RC,DXCCW2+K4 POINT TO TIOT CURRENT UCB PTR 41700021 L RUCB,0(,RC) LOAD CURRENT UCB ADDRESS 41800021 * 41900021 MVC MCSFLAGS(ODA6700L),ODA6700K MOVE IN BASIC MSG 42000021 * 42100021 CLI UCBID,UCBMAIN CHECK FOR 2321 42200021 BE ODA64200 BR IF NO 42300021 * 42400021 USING UCBDCELL,RUCB SET UP BASE FOR DATACELL 42500021 MVI MSGUN+K3,C'/' SLASH AFTER UCB NAME 42600021 MVC MSGUN+K4(K1),UCBDBBNR+K1 BB IN MSG 42700021 OI MSGUN+K4,ZONEOF BB IN DECIMAL 42800021 MVI MSGUN+K5,C',' COMMA AFTER BB 42900021 MVC MSGUN+K6(K6),DXVOLMT1 VOL SER IN MSG 43000021 OI UCBDDMCT,UCBDDMNT SET MOUNT SWITCH ON 43100021 MVC UCBDVOLI,DXVOLMT1 SET UCB TO DESIRED VOL SER NO. 43200021 USING UCBOB,RUCB ADDRESSING MAIN UCB 43300021 L RUCB,DXDEBUCB LOAD MAIN UCB ADDRESS 43400021 MVC MSGUN,UCBNAME MOVE IN UCB NAME 43500021 OI UCBFL1,UCBNOTRD SET MAIN UCB NOT-READY BIT 43600021 L RUCB,0(,RC) LOAD CURRENT SUB UCB ADDR 43700021 LA R1,MSGVOLSR+K7 UP PTR TO LAST CHAR OF SER 43800021 B ODA64400 BR TO DELIMT VOL SER NO. 43900021 * 44000021 ODA64000 CLI 0(R1),C' ' FIND THE LAST NON-BLANK CHAR 44100021 BCR 7,RET BR WHEN FOUND 44200021 BCT R1,ODA64000 DECR ADDR AND BR TO LOOK AGAIN 44300021 * 44400021 USING UCBOB,RUCB SET BASE FOR UCBOB 44500021 ODA64200 EQU * 44600021 MVC MSGVOLSR,DXVOLMT1 VOL SER IN MSG 44700021 * 44800021 OI UCBDMCT,UCBMOUNT SET MOUNT SWITCH ON 44900021 MVC UCBVOLI,DXVOLMT1 SET UCB TO DESIRED VOL SER NO. 45000021 * 45100021 MVC MSGUN,UCBNAME MOVE IN UNIT ADDRESS 45200021 MVI MSGUN+L'MSGUN,C',' DELIMIT UNIT WITH COMMA 45300021 LA R1,MSGVOLSR+K5 UP PTR TO LAST CHAR OF SER 45400021 * 45500021 ODA64400 BAL RET,ODA64000 GO REMOVE BLANKS 45600021 MVI K1(R1),C',' DELIMIT VOLUME SERIAL NO. 45700021 MVI K2(R1),C' ' BLANK OUT 45800021 MVC K3(50,R1),K2(R1) REMAINING BUFFER 45900021 * 46000021 L RF,CVTPTR GET CVT ADDR 46100021 L RF,CVTTCBP-CVT(,RF) GET ADDR TCB POINTERS 46200021 L RF,K4(,RF) GET CURRENT TCB ADDR 46300021 L RF,TCBTIO-TCB(,RF) GET TIOT START ADDR 46400021 * 46500021 MVC K2(K8,R1),TIOCNJOB-TIOT(RF) PUT THE JOB NAME IN MSG 46600021 LA R1,K9(R1) ADVANCE BEYOND JOB NAME 46700021 BAL RET,ODA64000 GO REMOVE BLANKS 46800021 MVI K1(R1),C',' DELIMIT WITH A COMMA 46900021 * 47000021 MVC K2(K8,R1),TIOCSTEP-TIOT(RF) PUT THE STEP NAME IN MSG 47100021 LA R1,K9(R1) UPDATE MSG PTR 47200021 BAL RET,ODA64000 GO REMOVE BLANKS 47300021 * 47400021 LR RF,R1 DETERMINE LENGTH OF 47500021 LA R0,MSGLSTSZ-K1 PRESENT 47600021 SR RF,R0 MESSAGE 47700021 STH RF,MSGLSTSZ SAVE IN MSG LENGTH FIELD 47800021 * 47900021 TM JFCBIND2,JFCTEMP IS DATA SET 'TEMPORARY' 48000021 BO ODA64600 BR IF YES, DO NOT DISPLAY 48100021 * 48200021 L RF,CVTPTR GET CVT ADDR 48300021 L RF,CVTMSLT-CVT(RF) GET MASTER SCHED LINK TBL ADDR 48400021 * 48500021 USING BASE,RF 48550021 TM MSSSB,MSSSDSN IS 'DISPLAY DSN' ACTIVE SA70424 48600021 BO ODA65200 BR IF YES, DSN IS REQUIRED 48700021 * 48800021 TM BAMONITR,BAMDSN DO TERMINALS WANT DSN SA70424 48900021 BO ODA65200 BR IF YES, DSN IS REQUIRED 49000021 DROP RF 49050021 * 49100021 ODA64600 EQU * 49200021 MVC K1(K4,R1),ODA6740K MOVE IN MCS CODES AFTER MSG 49300021 * 49400021 WTO MF=(E,MSGLSTSZ) WRITE MESSAGE TO OPERATOR 49500021 * 49600021 ST R1,REPLY+K4 SAVE MCS MESSAGE ID NUMBER 49700021 MVI REPLY+K4,LASTNTRY INDICATE END OF MSG ID LIST 49800021 * 49900021 L RF,CVTPTR GET CVT ADDR 50000021 L RF,CVTTCBP-CVT(,RF) GET ADDR TCB POINTERS 50100021 L RF,K4(,RF) GET CURRENT TCB ADDR 50200021 * 50300021 TM TCBTSFLG-TCB(RF),TCBTSTSK IS THIS A TIME SHARING TASK 50400021 BNO ODA65000 BR IF NO 50500021 * 50600021 MVC MSGLSTSZ(L'ODA6760K),ODA6760K MOVE TSO MESSAGE TO BUFR 50700021 * 50800021 L RF,TCBJSCB-TCB(,RF) LOCATE JSCB 50900021 USING IEZJSCB,RF ADDRESSABILITY FOR JSCB 51000021 LH RET,JSCBTJID LOCATE TJID 51100021 L RF,JSCBPSCB LOCATE PSCB 51200021 USING PSCB,RF ADDRESSABILITY FOR PSCB 51300021 L RF,PSCBUPT LOCATE UPT 51400021 USING UPT,RF ADDRESSABILITY FOR UPT 51500021 * 51600021 LA R1,MSGLSTSZ POINT TO START OF MESSAGE 51700021 LA R0,L'ODA6760K LOAD LENGTH OF MESSAGE 51800021 * 51900021 TM UPTSWS,UPTMID IS MESSAGE ID REQUIRED 52000021 BO ODA64800 BR IF YES 52100021 * 52200021 LA R1,MSGLSTSZ+K8 POINT TO MSG WITHOUT ID 52300021 LA R0,L'ODA6760K-K8 LENGTH OF SHORT MESSAGE 52400021 * 52500021 ODA64800 SLL RET,K16 PLACE TJID AND MSG LENGTH 52600021 OR R0,RET IN REG 0 FOR TPUT SVC CALL 52700021 * 52800021 TPUT (1),(0),R SEND TSO MSG TO TERMINAL 52900021 * 53000021 DROP RF 53100021 * 53200021 ODA65000 EQU * 53300021 IECRES XCTL,ODA6960X,0 XCTL TO NEXT MOUNT MODULE 53400021 * 53500021 ODA65200 EQU * 53600021 MVI REPLY,K0 IND WTO, DSNAME FROM JFCB 53700021 L RB,ODA6740K LOAD DESC AND ROUTE CODES 53800021 MVC DXRETMOD,ODA6960X IDTTR OF MODULE TO RETURN TO 53900021 SR RET,RET RETURN INDICATOR FOR MODULE 54000021 * 54100021 IECRES XCTL,ODA6940X,(RET) XCTL TO MESSAGE DSN MODULE 54200021 * 54300021 *********************************************************************** 54400021 * 54500021 ODA65400 EQU * 54600021 OABD026 EQU 26 UNABLE TO DEMOUNT VOLUME 54700021 DMABCOND OABD026,ODA6920X XCTL TO PROB DET / ABEND 54800021 * 54900021 *********************************************************************** 55000021 * 55100021 USING UCBOB,RUCB SET BASE FOR UCBOB 55200021 ODA65600 EQU * 55300021 IECRES XCTL,ODA6960X,4 XCTL TO NEXT LOAD OF MOUNT 55400021 * 55500021 *********************************************************************** 55600021 * 55700021 * CONSTANTS 55800021 * 55900021 ODA6700K DC X'8000' MCS INDICATOR 56000021 DC C'IEC101A M ' MOUNT MESSAGE 56100021 ODA6700L EQU *-ODA6700K LENGTH OF MSG SEGMENT 56200021 * 56300021 ODA6740K DC 0F'0',X'4000' DESC=2 IMMEDIATE ACTION REQUIRD 56400021 DC X'1000' ROUTCDE=(4) DIRECT ACCESS POOL 56500021 * 56600021 ODA6760K DC C'IEC108I OPERATOR ACTION HAS BEEN REQUESTED FOR YOUR DAX56700021 TA SET' TSO TERMINAL MESSAGE 56800021 * 56900021 ODA6780K WTO 'IEC106E R DDD,VOLSER',MF=L, DEMOUNT RETAIN MSG X57000021 DESC=3, EVENTUAL ACTION REQUIRED X57100021 ROUTCDE=(4) DIRECT ACCESS POOL 57200021 ODA6780L EQU *-ODA6780K TOTAL LENGTH OF MSG 57300021 * 57400021 AIF ('&LIB' NE 'LIB1').LIB24A5 57450000 ODA6800K DC X'FF' SSM MASK TO ENABLE INTERRUPTS 57500021 XCTLTABL ID=(ODA6920X,0P,ODA6940X,0R,ODA6960X,4C) 57510000 .LIB24A5 ANOP 57550000 * 57600021 AIF ('&LIB' EQ 'LIB1').LIB14A5 57650000 XCTLTABL ID=(ODA6920X,0P,ODA6940X,0R,ODA6960X,4C), X57700000 LENGTH=2048,PATCH=80 YM0871 57710000 .LIB14A5 ANOP 57750000 * 57800021 IECDSECS EXPAND=YES EXPAND DESIRED DSECTS HERE 57900021 * 58000021 END 58100021 ./ ADD SSI=21280197,NAME=IFG0194C,SOURCE=0 TITLE 'IFG0194C/OPEN - DA MOUNT VERIFICATION' 00200000 GBLC &LIB DEFINE GLOBAL CHAR VARIABLE 00400000 &LIB SETC 'LIB1' SET VALUE FOR OS /360 00600000 IFG0194C CSECT 00800000 *********************************************************************** 01000000 * * 01200000 * * 01400000 * RELEASE 25 DELETIONS/CHANGES * 01600000 * RELEASE 24 DELETIONS/CHANGES * 01800000 * RELEASE 23 DELETIONS/CHANGES * 02000000 * RELEASE 22 DELETIONS/CHANGES * 02200000 * RELEASE 21 DELETIONS/CHANGES * 02400000 *0000178000,530000,696000 M1811 02500021 * * 02600000 * STATUS CHANGE LEVEL 000 * 02800000 * * 03000000 * FUNCTION - * 03200000 * THIS MODULE CONTAINS THE FUNCTION(S) OR PART(S) OF FUNCTION(S)-- * 03400000 * OPEN DA VOLUME VERIFICATION FUNCTION * 03600000 * REFER TO THE FOLLOWING 'FUNCTION PROLOG(S)' FOR DETAILS. * 03800000 * * 04000000 * ENTRY POINTS - * 04200000 * IFG0194C * 04400000 * * 04600000 * INPUT - * 04800000 * REFER TO THE FOLLOWING 'FUNCTION PROLOG(S)'. * 05000000 * * 05200000 * OUTPUT - * 05400000 * REFER TO THE FOLLOWING 'FUNCTION PROLOG(S)'. * 05600000 * * 05800000 * EXTERNAL REFERENCES - * 06000000 * IFG019RA - OPEN/CLOSE/EOV RESIDENT ROUTINE FOR XCTL AND * 06200000 * WAIT. * 06400000 * REFER TO THE FOLLOWING 'FUNCTION PROLOG(S)'. * 06600000 * * 06800000 * EXITS, NORMAL - * 07000000 * REFER TO THE FOLLOWING 'FUNCTION PROLOG(S)'. * 07200000 * * 07400000 * EXITS, ERROR - * 07600000 * EXIT IS TO THE PROBLEM DETERMINATION MODULE IFG0190P, IF AN * 07800000 * ABEND SITUATION OCCURS IN THIS MODULE. * 08000000 * REFER TO THE FOLLOWING 'FUNCTION PROLOG(S)'. * 08200000 * * 08400000 * TABLES/WORK AREAS - * 08600000 * REFER TO THE FOLLOWING 'FUNCTION PROLOG(S)'. * 08800000 * * 09000000 * ATTRIBUTES - * 09200000 * REENTRANT, REFRESHABLE, READ-ONLY, ENABLED, PRIVILEGED * 09400000 * * 09600000 * CHARACTER CODE DEPENDENCY - * 09800000 * CLASS ONE CHARACTER CODE DEPENDENCY - THE EBCDIC CHARACTER CODE * 10000000 * WAS USED FOR ASSEMBLY. THE MODULE MUST BE REASSEMBLED IF A * 10200000 * DIFFERENT CHARACTER SET IS USED FOR EXECUTION. * 10400000 * * 10600000 * NOTES - * 10800000 * REFER TO THE FOLLOWING 'FUNCTION PROLOG(S)'. * 11000000 * * 11200000 *********************************************************************** 11400000 EJECT 11600000 *********************************************************************** 11800000 * * 12000000 * FUNCTION PROLOG * 12200000 * * 12400000 *********************************************************************** 12600000 * * 12800000 * FUNCTION NAME - * 13000000 * OPEN DA VOLUME VERIFICATION FUNCTION * 13200000 * (CONTINUED FROM MODULE IFG0194A) * 13400000 * * 13600000 * (STATUS) - * 13800000 * NOT APPLICABLE * 14000000 * * 14200000 * FUNCTION - * 14400000 * *SCAN AGAIN THE UCB'S POINTED TO BY THE TIOT DD ENTRY FOR * 14600000 * A MATCHING VOLUME SERIAL NUMBER. * 14800000 * *SELECT A UNIT FROM THE TIOT DD ENTRY UCB LIST TO MOUNT THE * 15000000 * DESIRED VOLUME ON. * 15200000 * *INCREMENT UCB OPEN DCB DATA MANAGEMENT COUNTER TO HOLD THIS * 15400000 * UCB FOR THIS VOLUME. * 15600000 * *SET UP WORK DEB UCB ADDRESS AND EXTENT FOR SELECTED UNIT. * 15800000 * *ISSUE AN 'IEC106E R UUU,VOLSER' MESSAGE IF * 16000000 * A PREVIOUS VOLUME MUST BE DEMOUNTED TO MAKE ROOM. * 16200000 * *ISSUE AN 'IEC101A M UUU,VOLSER,JOBNAME,STEPNAME,DSNAME' * 16400000 * MOUNT MESSAGE TO THE OPERATOR. * 16600000 * **THIS MODULE'S FUNCTION STARTS HERE. * 16800000 * *READ THE VOLUME LABEL, VERIFY THAT IT IS THE CORRECT ONE, * 17000000 * MOVE THE VTOC TTR INTO THE UCB, AND TURN OFF THE MOUNT BIT. * 17200000 * *IF NONSPECIFIC REQUEST, MOVE NEW VOLUME SERIAL NUMBER INTO * 17400000 * JFCBVOLS. * 17600000 * *IF WRONG VOLUME MOUNTED, ISSUE AN 'IEC111E D UUU,VOLSER' * 17800021 * MESSAGE, WHERE VOLSER IS THE VOLUME SERIAL NUMBER OF THE * 18000000 * VOLUME ACTUALLY MOUNTED. * 18200000 * * 18400000 * ENTRY POINTS - * 18600000 * ENTERED VIA AN XCTL FROM IFG0194A, OR INDIRECTLY THRU IFG0190R. * 18800000 * REFER TO THE PRECEEDING MODULE PROLOG. * 19000000 * * 19200000 * INPUT - * 19400000 * REGISTERS - * 19600000 * RTIOT 9 - CURRENT TIOT DD ENTRY. MAY BE EACH OF SEVERAL * 19800000 * ENTRIES FOR CONCATENATED BPAM OR ISAM. * 20000000 * RET 14 - ENTRY INDICATOR. * 20200000 * WORK AREAS - * 20400000 * DXLBL (96 BYTES) - MUST BE AVAILABLE FOR USE AS WORK AREA * 20600000 * FOR WRITING MESSAGES, AND READING VOLUME LABEL. * 20800000 * DXJBF (176 BYTES) - USED FOR DSNAME AND 'TEMPORARY DATA SET' * 21000000 * INDICATOR IN MOUNT MESSAGE (BY IFG0190R) AND BY * 21200000 * PROBLEM DETERMINATION FOR ITS MESSAGE IF THERE IS AN ABEND.* 21400000 * DXCCW2+4 - ADDRESS IN TIOT DD ENTRY UCB LIST OF FIRST * 21600000 * UCB POINTER THAT CAN BE USED. PREVIOUS UCB * 21800000 * POINTERS ARE ALREADY LOCKED INTO PREVIOUS VOLUMES * 22000000 * OF A MULTIVOLUME MOUNT. * 22200000 * DXCCW1-DXCCW3 - ARE CONSIDERED AVAILABLE FOR USE BY THIS * 22400000 * FUNCTION. DXCCW1-DXCCW2 DO NOT HAVE TO HAVE A * 22600000 * SEARCH ID EQ, TIC *-8 CHANNEL PROGRAM IN THEM, SINCE * 22800000 * IT WILL BE CONSTRUCED BY THIS FUNCTION. * 23000000 * DXCCW4-DXCCW7 - WILL NOT BE TOUCHED. * 23200000 * DXCCW8-DXCCW11 - ARE USED AS A REGISTER SAVE AREA. * 23400000 * DXVOLMT1 - CONTAINS THE VOLUME SERIAL NUMBER OF THE DESIRED * 23600000 * VOLUME. IF THE REQUEST IS NONSPECIFIC, IT CONTAINS * 23800000 * 'SCRTCH'. * 24000000 * IF RET=4 OR 8 - THE WORK DEB MUST ALREADY BE SET UP FOR THE * 24200000 * UNIT SELECTED FOR THE VOLUME. * 24400000 * * 24600000 * OUTPUT - * 24800000 * REGISTERS - * 25000000 * R0-R1 0-1 - ARE TO BE CONSIDERED UNDEFINED. * 25200000 * RTIOT 9 - CURRENT TIOT DD ENTRY. SAME AS AT ENTRY. * 25400000 * RUCB 10 - CURRENT MAIN OR SUB UCB ADDRESS. * 25600000 * RB-RD 11-13 - ARE TO BE CONSIDERED UNDEFINED. * 25800000 * RET 14 - SET TO 4 AS RETURN ENTRY INDICATOR. * 26000000 * WORK AREAS - * 26200000 * DXLBL (96 BYTES) - HAS VOLUME LABEL. ALL CURRENT CALLING * 26400000 * FUNCTIONS CONSIDER IT TO BE UNDEFINED. * 26600000 * DXJBF (176 BYTES) - SAME AS AT ENTRY. * 26800000 * DXCCW2+4 - ADDRESS IN TIOT DD ENTRY UCB LIST OF FIRST * 27000000 * UCB POINTER THAT CAN BE USED. SAME AS AT ENTRY. * 27200000 * DXCCW1-DXCCW3 - CONTAIN A SEARCH ID EQ, TIC *-8 CHANNEL * 27400000 * PROGRAM. * 27600000 * DXCCW4-DXCCW7 - SAME AS AT ENTRY. * 27800000 * DXCCW8-DXCCW11 - ARE USED AS A REGISTER SAVE AREA. * 28000000 * DXVOLMT1 - CONTAINS THE VOLUME SERIAL NUMBER OF THE DESIRED * 28200000 * VOLUME. IF THE REQUEST WAS NONSPECIFIC, IT STILL CONTAINS * 28400000 * 'SCRTCH' AND NOT THE NAME OF THE NEW VOLUME. * 28600000 * * 28800000 * EXTERNAL REFERENCES - * 29000000 * REFER TO THE PRECEEDING MODULE PROLOG. * 29200000 * * 29400000 * EXITS, NORMAL - * 29600000 * *FINAL EXIT FROM THIS FUNCTION IS VIA XCTL TO THE MODULE WHOSE * 29800000 * IDTTR IS IN DXRETMOD. * 30000000 * *IF THE WRONG VOLUME IF MOUNTED, XCTLS BACK TO IFG0194A TO * 30200000 * REISSUE THE MOUNT MESSAGE. * 30400000 * * 30600000 * EXITS, ERROR - * 30800000 * 413 ABEND VIA PROBLEM DETERMINATION MODULE IFG0190P IF * 31000000 * AN I/O ERROR WHILE READING THE VOLUME LABEL. * 31200000 * REFER TO THE PRECEEDING MODULE PROLOG. * 31400000 * * 31600000 * TABLES/WORK AREAS - * 31800000 * THE FORMAT AND CONTENTS OF THE WORK AREAS USED ARE DESCRIBED BY * 32000000 * THE DSECTS AT THE END OF THE LISTING. * 32200000 * * 32400000 * ATTRIBUTES - * 32600000 * REFER TO THE PRECEEDING MODULE PROLOG. * 32800000 * * 33000000 * CHARACTER CODE DEPENDENCY - * 33200000 * REFER TO THE PRECEEDING MODULE PROLOG. * 33400000 * * 33600000 * NOTES - * 33800000 * *THIS FUNCTION MAY GO INTO A WAIT STATE UNTIL THE REQUESTED * 34000000 * VOLUME HAS BEEN MOUNTED. * 34200000 * A DISPLAY R COMMAND WILL INDICATE WHAT UCB IS BEING WAITED ON, * 34400000 * BECAUSE THE UCB MOUNT BIT WILL BE ON. * 34600000 * *ONE OF THE MAIN CONSTRAINTS OF THIS FUNCTION IS TO USE AS LITTLE * 34800000 * WORK AREA AS POSSIBLE, BECAUSE SOME OF THE FUNCTIONS THAT CALL * 35000000 * THIS FUNCTION HAVE VERY LITTLE WORK AREA TO SPARE. * 35200000 *********************************************************************** 35400000 EJECT 35600000 IECDSECS CVT,TIOT,UCB,MAIN DEFINE DESIRED DSECTS TO BE X35800000 EXPANDED AT THE END 36000000 * 36200000 IECEQU , DEFINE EQUATES 36400000 * 36600000 USING FORCORE,RCORE DEFINE BASE TO MAIN WORK AREA 36800000 USING TIOENTRY,RTIOT DEFINE BASE TO TIOT DD ENTRY 37000000 USING UCBOB,RUCB DEFINE BASE TO MAIN UCB 37200000 * 37400000 BALR RBASE,0 ESTABLISH BASE REGISTER 37600000 USING *,RBASE DEFINE BASE REGISTER 37800000 * 38000000 LR RD,RET SAVE ENTRY INDICATOR 38200000 * 38400000 B ODA70200(RET) BR TO INDICATED ENTRY 38600000 * 38800000 ODA70200 B ODA70400 RET=0 RETURN FROM MOUNT MSG 39000000 B ODA70600 RET=4 NO MOUNT MSG ISSUED 39200000 * 39400000 *********************************************************************** 39600000 * 39800000 ODA70400 EQU * 40000000 MVC DXRETMOD,DXCCW3 RESTORE SAVED RETURN IDTTR 40200000 * 40400000 *********************************************************************** 40600000 * 40800000 * READ THE VOLUME LABEL FROM RECORD 3 OF TRACK 0. 41000000 * WILL GO INTO A WAIT STATE UNTIL THE VOLUME IS MOUNTED. 41200000 * 41400000 ODA70600 EQU * 41600000 XC DXDAADDR,DXDAADDR DA VOL LABEL ADDR CCHH = 0000 41800000 MVC DXDAADDR+K1(K2),DXDEBBIN MOVE BIN NO. INTO DXDAADDR 42000000 MVI DXDAADDR+K7,K3 VOL LABEL IS ALWAYS RECORD 3 42200000 * 42400000 * CONSTRUCT CHANNEL PROGRAM TO READ VOLUME LABEL. 42600000 * 42800000 * SEARCH ID EQ 43000000 * TIC *-8 43200000 * READ DATA 43400000 * 43600000 L R0,DXCCW2+K4 SAVE ADDR CURRENT TIOT UCB PTR 43800000 XC DXCCW1(K24),DXCCW1 CLEAR CCW AREA 44000000 LA RF,DXDAADDR+K3 SEARCH ADDRESS 44200000 ST RF,DXCCW1 44400000 LA RF,DXCCW1 TIC ADDRESS 44600000 ST RF,DXCCW2 44800000 LA RF,DXLBL VOL LABEL INPUT BUFFER ADDR 45000000 ST RF,DXCCW3 45200000 OC DXCCW1(K24),ODA7440K OR IN CMND CODE, FLAGS, LENGTH 45400000 ST R0,DXCCW2+K4 RESTORE ADDR CURRENT TIOT UCB 45600000 * 45800000 EXCP DXIOB READ VOLUME LABEL 46000000 * 46200000 IECRES WAIT WAIT FOR MOUNT AND LABEL READ 46400000 * 46600000 LTR RD,RD IS DOM NECESSARY 46800000 BNZ ODA70800 BR IF NO 47000000 DOM MSGLIST=REPLY+K4 DELETE MSG 47200000 * 47400000 ODA70800 EQU * 47600000 TM DXECB,ECBNOERR CHECK FOR I/O ERROR 47800000 BZ ODA71600 BR IF I/O ERROR 48000000 * 48200000 CLC VOLSERNO,DXVOLMT1 CHECK FOR CORRECT VOLUME 48400000 BE ODA71800 BR IF YES 48600000 * 48800000 CLC ODA7400K,DXVOLMT1 CHECK IF SCRTCH REQUEST 49000000 BNE ODA71200 BR IF NO TO DEMOUNT WRONG VOL 49200000 * 49400000 MVC JFCBVOLS(K6),VOLSERNO MOVE VOL SER INTO JFCB 49600000 OI JFCBMASK+K4,JFCMJMOD SET JFCB WRITE SW ON 49800000 * 50000000 CLI UCBID,UCBMAIN CHECK FOR 2321 50200000 BE ODA71000 BR IF NOT 2321 50400000 * 50600000 USING UCBDCELL,RUCB SET BASE FOR DATACELL 50800000 MVC UCBDVOLI,VOLSERNO MOVE VOL SER INTO UCB 51000000 B ODA71800 BR TO PUT VTOC TTR IN UCB 51200000 * 51400000 USING UCBOB,RUCB SET BASE FOR UCBOB 51600000 ODA71000 EQU * 51800000 MVC UCBVOLI,VOLSERNO MOVE VOL SER INTO UCB 52000000 B ODA71800 BR TO PUT VTOC TTR IN UCB 52200000 * 52400000 *********************************************************************** 52600000 * 52800000 * WRITE 'IEC111E D DDD,VOLSER' MESSAGE TO OPERATOR TO TELL HIM 53000021 * TO DEMOUNT THE OLD VOLUME, BECAUSE IT IS THE WRONG ONE. 53200000 * 53400000 ODA71200 EQU * 53600000 MVC DXCCW1(K6),VOLSERNO SAVE BAD VOLUME SERIAL NUMBER 53800000 MVC MSGLSTSZ(ODA7420L),ODA7420K SET UP DEMOUNT MSG 54000000 MVC MSGVOLSR,DXCCW1 ADD VOLUME SERIAL NO. TO MSG 54200000 * 54400000 CLI UCBID,UCBMAIN CHECK FOR 2321 54600000 BE ODA71400 BR IF NOT 2321 54800000 * 55000000 * 2321 DATACELL PROCESSING 55200000 USING UCBDCELL,RUCB SET UP BASE FOR SUB UCB 55400000 * SHIFT ',VOLSER D&R' 2 PLACES RIGHT TO MAKE ROOM FOR /B 55600000 MVC MSGLSTSZ+ODA7420L+K2(K11),MSGUN+K3 55800000 MVC MSGUN+K5(K11),MSGLSTSZ+ODA7420L+K2 56000000 MVI MSGUN+K3,C'/' MOVE / INTO MESSAGE 56200000 MVC MSGUN+K4(K1),UCBDBBNR+K1 MOVE BIN NUMBER INTO MESSAGE 56400000 OI MSGUN+K4,ZONEOF CONVERT BIN NO. TO DECIMAL 56600000 MVI MSGLSTSZ+K1,K26 SET MSG LENGTH 2 BYTES LONGER 56800000 L RUCB,DXDEBUCB LOAD MAIN UCB ADDRESS 57000000 * 57200000 USING UCBOB,RUCB ADDRESSING MAIN UCB 57400000 ODA71400 EQU * 57600000 MVC MSGUN,UCBNAME ADD UCB UNIT NAME TO MESSAGE 57800000 * 58000000 WTO MF=(E,MSGLSTSZ) WRITE DEMOUNT MSG TO OPERATOR 58200000 * 58400000 OI UCBFL1,UCBNOTRD SET MAIN UCB NOT-READY BIT 58600000 * 58800000 * IND MOUNT MSG, VOLUME VERIFY 59000000 IECRES XCTL,ODA7940X,4 XCTL BACK TO DA MOUNT MODULE 59200000 * 59400000 *********************************************************************** 59600000 * 59800000 ODA71600 EQU * 60000000 OABD027 EQU 27 I/O ERROR READING DIRECT 60200000 * ACCESS VOLUME LABEL 60400000 DMABCOND OABD027,ODA7920X XCTL TO PROB DET / ABEND 60600000 * 60800000 *********************************************************************** 61000000 * 61200000 * CONVERT VTOC ADDR FROM MBBCCHHR TO TTR FORM 61400000 * 61600000 USING UCBOB,RUCB BASE FOR MAIN UCB 61800000 ODA71800 EQU * 62000000 MVC DXDAADDR+K3(K5),VOLVTOC GET CCHHR VTOC ADDR FROM VOL LB 62200000 LR RF,RDCB SAVE DCB REGISTER 2 IN 15 62400000 STM RTIOT,RF,DXREG9 SAVE REGISTERS 9-15 62600000 L RF,CVTPTR GET CVT ADDR 62800000 LA R1,DXDEB POINT TO OPEN WORK DEB 63000000 LA RDCB,DXDAADDR POINT TO MBBCCHHR ADDR 63200000 L RF,CVTPRLTV-CVT(,RF) ADDR OF IECPRLTV ROUTINE 63400000 BALR RET,RF BR TO CONVERT MBBCCHHR TO TTR 63600000 LM RTIOT,RF,DXREG9 RESTORE REGISTERS 9-15 63800000 LR RDCB,RF RESTORE DCB REGISTER 2 FROM 15 64000000 * 64200000 * INSERT VTOC TTR ADDR IN UCB AND TURN OFF UCB MOUNT BIT. 64400000 * 64600000 ST R0,DXCCW3 TTR0 IN REG 0 ON RETURN 64800000 * 65000000 CLI UCBID,UCBMAIN CHECK FOR 2321 65200000 BE ODA72000 BR IF NOT 2321 65400000 * 65600000 USING UCBDCELL,RUCB SET BASE FOR DATACELL 65800000 MVC UCBDVTOC,DXCCW3 PLACE TTR OF VTOC INTO THE UCB 66000000 NI UCBDDMCT,X'FF'-UCBDDMNT RESET MOUNT SWITCH 66200000 B ODA72200 BR TO CONTINUE 66400000 * 66600000 USING UCBOB,RUCB SET BASE FOR MAIN UCB 66800000 ODA72000 EQU * 67000000 MVC UCBVTOC(K3),DXCCW3 PLACE TTR OF VTOC INTO THE UCB 67200000 NI UCBDMCT,X'FF'-UCBMOUNT RESET MOUNT SWITCH 67400000 * 67600000 ODA72200 EQU * 67800000 IECRES XCTL,DXRETMOD,4 XCTL RETURN TO CALLING MODULE 68000000 * 68200000 *********************************************************************** 68400000 * 68600000 * CONSTANTS 68800000 * 69000000 ODA7400K DC C'SCRTCH' NONSPECIFIC VOL SER NO. 69200000 * 69400000 ODA7420K WTO 'IEC111E D DDD,VOLSER',MF=L, DEMOUNT MSG M1811 X69600021 DESC=3, EVENTUAL ACTION REQUIRED X69800000 ROUTCDE=(4) DIRECT ACCESS POOL 70000000 ODA7420L EQU *-ODA7420K TOTAL LENGTH OF MSG 70200000 * 70400000 * CCW'S TO READ VOLUME LABEL 70600000 ODA7440K DC X'3100000040000005' SEARCH ID EQ 70800000 DC X'0800000000000000' TIC *-8 71000000 DC X'0600000000000050' READ DATA 71200000 * 71400000 XCTLTABL ID=(ODA7920X,0P,ODA7940X,4A) 71600000 * 71800000 IECDSECS EXPAND=YES EXPAND DESIRED DSECTS HERE 72000000 * 72200000 END 72400000 ./ ADD SSI=00010346,NAME=IFG0194D,SOURCE=0 TITLE 'IFG0194D/OPEN TAPE VOLUME REFERENCE MODULE' 00200000 COPY LCGASMSW 00650000 IFG0194D CSECT 00800000 *********************************************************************** 01000000 * * 01200000 * * 01400000 * RELEASE 25 DELETIONS/CHANGES * 01600000 * RELEASE 24 DELETIONS/CHANGES * 01800000 * RELEASE 23 DELETIONS/CHANGES * 02000000 * RELEASE 22 DELETIONS/CHANGES * 02200000 * RELEASE 21 DELETIONS/CHANGES * 02400000 *0000364000 A45617 02450000 *0000 SA50304 02500021 * RELEASE 21.7 DELETIONS/CHANGES * 02500201 *0000365944-365957 SA54607 02500401 * * 02600000 * STATUS CHANGE LEVEL 000 * 02800000 * * 03000000 * FUNCTION - * 03200000 * THIS MODULE CONTAINS THE FUNCTION(S) OR PART(S) OF FUNCTION(S)-- * 03400000 * OPEN TAPE VOLUME REFERENCE FUNCTION. * 03600000 * REFER TO THE FOLLOWING 'FUNCTION PROLOG(S)' FOR DETAILS. * 03800000 * * 04000000 * ENTRY POINTS - * 04200000 * IFG0194D - ENTRY POINT VIA THE RESIDENT XCTL FROM THE FOLLOWING--* 04400000 * INITIAL ENTRY-- * 04600000 * IFG0193B - RESOLVE NON-SPECIFIC OR VOLUME REFERENCE REQUESTS* 04800000 * SECOND ENTRY-- * 05000000 * IFG0194I - RESOLVE REFERENCES TO UNRESOLVED NON-SPECIFIC * 05200000 * REQUESTS. * 05400000 * * 05600000 * INPUT - * 05800000 * REFER TO THE FOLLOWING 'FUNCTION PROLOG(S)'. * 06000000 * * 06200000 * OUTPUT - * 06400000 * REFER TO THE FOLLOWING 'FUNCTION PROLOG(S)'. * 06600000 * * 06800000 * EXTERNAL REFERENCES - * 07000000 * IFG019RA - OPEN/CLOSE/EOV RESIDENT ROUTINE FOR XCTL AND * 07200000 * WAIT. * 07400000 * REFER TO THE FOLLOWING 'FUNCTION PROLOG(S)'. * 07600000 * * 07800000 * EXITS, NORMAL - * 08000000 * EXIT VIA THE RESIDENT ROUTINE XCTL TO THE FOLLOWING-- * 08200000 * AFTER INITIAL ENTRY-- * 08400000 * IFG0194F - TO CONTINUE NORMAL PROCESSING. * 08600000 * AFTER SECOND ENTRY-- * 08800000 * IFG0195B - RESUME SL/AL PROCESSING. * 09000000 * IFG0195C - RESUME NL/BLP PROCESSING. * 09200000 * IFG0196J - RESUME NSL OUTPUT PROCESSING. * 09400000 * REFER TO THE FOLLOWING 'FUNCTION PROLOG(S)'. * 09600000 * * 09800000 * EXITS, ERROR - * 10000000 * EXIT IS TO THE PROBLEM DETERMINATION MODULE IFG0190P, IF AN * 10200000 * ABEND SITUATION OCCURS IN THIS MODULE. REFER TO THE FOLLOWING * 10400000 * 'FUNCTION PROLOG(S)'. * 10600000 * * 10800000 * TABLES/WORK AREAS - * 11000000 * REFER TO THE FOLLOWING 'FUNCTION PROLOG(S)'. * 11200000 * * 11400000 * ATTRIBUTES - * 11600000 * REENTRANT, REFRESHABLE, READ-ONLY, ENABLED, PRIVILEGED * 11800000 * * 12000000 * CHARACTER CODE DEPENDENCY - * 12200000 * CLASS ONE CHARACTER CODE DEPENDENCY - THE EBCDIC CHARACTER CODE * 12400000 * WAS USED FOR ASSEMBLY. THE MODULE MUST BE REASSEMBLED IF A * 12600000 * DIFFERENT CHARACTER SET IS USED FOR EXECUTION. * 12800000 * * 13000000 * NOTES - * 13200000 * REFER TO THE FOLLOWING 'FUNCTION PROLOG(S)'. * 13400000 * * 13600000 *********************************************************************** 13800000 EJECT 14000000 * * 14200000 * FUNCTION PROLOG * 14400000 * * 14600000 *********************************************************************** 14800000 * * 15000000 * FUNCTION NAME - * 15200000 * OPEN TAPE VOLUME REFERENCE FUNCTION. * 15400000 * * 15600000 * (STATUS) - * 15800000 * NOT APPLICABLE * 16000000 * * 16200000 * FUNCTION - * 16400000 * INITIAL ENTRY-- * 16600000 * RESOLVE THE PSEUDO VOLUME SERIAL NUMBER IN THE JFCB. * 16800000 * IF THE PSEUDO VOLUME SERIAL POINTS TO THE JFCB FOR THE DATA * 17000000 * SET BEING OPENED, IT IS A NON-SPECIFIC REQUEST AND THE CONDITIONS* 17200000 * ARE SET TO PROCESS AS SUCH. * 17400000 * WHEN THE PSEUDO VOLUME SERIAL IS POINTING TO ANOTHER JFCB, THAT * 17600000 * JFCB IS READ, AS ARE ANY EXTENSIONS THAT ARE NECESSARY TO GET * 17800000 * THE LAST VOLUME SERIAL NUMBER FROM THE JFCB. THE REAL VOLUME * 18000000 * SERIAL IS SET INTO THE UCB AND WORK AREA FOR THE DATA SET BEING * 18200000 * OPENED. * 18400000 * IF THE REFERENCED JFCB CONTAINS A PSEUDO VOLUME SERIAL, * 18600000 * CONDITIONS ARE SET FOR PROCESSING A NON-SPECIFIC REQUEST AND * 18800000 * THIS FUNCTION MUST BE ENTERED A SECOND TIME TO UPDATE THE * 19000000 * REFERENCED JFCB. * 19200000 * AN EXIT IS THEN TAKEN TO VERIFY THE VOLUME. * 19400000 * A PSEUDO VOLUME SERIAL NUMBER MAY CONTAIN A X'FF' FOLLOWED BY * 19450021 * 5 BLANKS; THIS OCCURS WHEN A NON-SPECIFIC (SCRATCH) VOLUME * 19500021 * REQUEST WAS PREVIOUSLY MADE FOR A MEMBER OF A GENERATION DATA * 19550021 * GROUP (GDG) AND THAT DATA SET WAS NOT OPENED. THIS CONDITION * 19560021 * IS TREATED AS A NON-SPECIFIC VOLUME REQUEST, AND A DISPOSITION * 19570021 * OF 'MOD' IS TREATED AS 'NEW' FOR THE DURATION OF THE OPEN. * 19580021 * SECOND ENTRY-- * 19600000 * THE REFERENCED JFCB IS READ AND THE VOLUME SERIAL JUST VERIFIED, * 19800000 * FOR THE DATA SET BEING OPENED, IS PLACED IN IT. * 20000000 * THE REFERENCED JFCB IS THEN WRITTEN BACK. * 20200000 * * 20400000 * ENTRY POINTS - * 20600000 * ENTERED FROM THE FOLLOWING-- * 20800000 * OPEN TAPE INITIAL COMMON FUNCTION FOR NON-SPECIFIC, OR * 21000000 * VOLUME REFERENCE REQUESTS. * 21200000 * OPEN TAPE FINAL COMMON FUNCTION TO UPDATE THE REFERENCED JFCB. * 21400000 * * 21600000 * INPUT - * 21800000 * A POINTER TO EACH OF THE FOLLOWING-- * 22000000 * CURRENT PARAMETER LIST ENTRY. * 22200000 * DD ENTRY IN THE TIOT. * 22400000 * WTG TABLE. * 22600000 * CURRENT WTG TABLE ENTRY. * 22800000 * DCB. * 23000000 * OPEN WORK AREA. * 23200000 * RESIDENT ROUTINE. * 23400000 * UCB * 23600000 * * 23800000 * OUTPUT - * 24000000 * THE REFERENCED VOLUME SERIAL IS PLACED IN THE JFCB AND UCB FOR * 24200000 * THE DATA SET BEING OPENED. * 24400000 * * 24600000 * EXTERNAL REFERENCES - * 24800000 * REFER TO THE PRECEEDING MODULE PROLOG. * 25000000 * CONVERT ROUTINE TTR TO MBBCCHHR. * 25200000 * * 25400000 * EXITS, NORMAL - * 25600000 * REFER TO THE PRECEEDING MODULE PROLOG. * 25800000 * OPEN TAPE MOUNT VERIFICATION FUNCTION FOR VOLUME VERIFICATION. * 26000000 * OPEN TAPE SL POSITIONING FUNCTION FOR SL/AL REQUESTS. * 26200000 * OPEN TAPE NL POSITIONING FUNCTION FOR NL/BLP REQUESTS. * 26400000 * OPEN MERGE JFCB FUNCTION FOR NSL OUTPUT REQUESTS. * 26600000 * * 26800000 * EXITS, ERROR - * 27000000 * REFER TO THE PRECEEDING MODULE PROLOG. * 27200000 * EXIT WITH ONE OF THE FOLLOWING INTERNAL CODES-- * 27400000 * 7 - 113 ABEND - REFERENCE JFCB DOES NOT EXIST OR I/O ERROR * 27600000 * READING IT. * 27800000 * 8 - 413 ABEND - OPEN FOR INPUT WITH NON-SPECIFIC REQUEST. * 28000000 * * 28200000 * TABLES/WORK AREAS - * 28400000 * THE OPEN, CLOSE, OR EOV WORK AREA AND THE WHERE-TO-GO (WTG) * 28600000 * TABLE ARE DESCRIBED BY THE DSECTS AT THE END OF THE LISTING. * 28800000 * * 29000000 * ATTRIBUTES - * 29200000 * REFER TO THE PRECEEDING MODULE PROLOG. * 29400000 * * 29600000 * CHARACTER CODE DEPENDENCY - * 29800000 * REFER TO THE PRECEEDING MODULE PROLOG. * 30000000 * * 30200000 * NOTES - * 30400000 * * 30600000 *********************************************************************** 30800000 AIF ('&LIB' NE 'LIB1').LIB24D1 30900000 EJECT 31000000 IECEQU 31200000 .LIB24D1 ANOP 31220000 AIF ('&LIB' EQ 'LIB1').LIB14D1 31240000 IECEQU AOS=YES 31260000 QMIJFCBL EQU 408 WORK AREA SIZE 31280000 PTRBUFA EQU 324 RD AND RE SAVE AREA 31300000 PTRBUFB EQU 332 SAVE AREA FOR QMNGR 31320000 .LIB14D1 ANOP 31340000 * 31400000 USING FORCORE,RCORE 31600000 USING IHADCB,RDCB 31800000 USING UCBOB,RUCB 32000000 USING TIOENTRY,RTIOT 32200000 USING WTG,RWTG 32400000 BALR RBASE,0 ESTABLISH ADDRESSABILITY 32600000 USING *,RBASE 32800000 * 33000000 OTA03200 EQU * 33200000 MVC DXCCW6+K4(K4),DXDEBMOD SAVE DEVICE MODE AND ADDR 33400000 L RUCB,DXCCW6+K4 LOAD UCB BASE 33600000 TM JFCBMASK+K7,UCB3TAPE TEST TO SEE IF SECOND 33800000 * PASS THRU THIS LOAD 34000000 * IS NECESSARY 34200000 BO OTA03900 YES, GO UPDATE ORIGINAL JFCB 34400000 OTA03300 EQU * 34600000 * VERIFICATION IN LOAD 0A 34800000 OI WTGPATHS+K1,WTGRECHK SET RECHECK SW TO CALL 35000000 * LOAD 0A AND PERMIT THIS DCB 35200000 * TO BE PROCESSED AGAIN 35400000 OTA03400 EQU * 35600000 CLC JFCBVOLS+K1(K3),TIOEJFCB TEST TO SEE IF THIS IS 35800000 * ORIGINAL JFCB TO REQUEST A 36000000 * A NON SPECIFIC TAPE 36200000 BE OTA03450 YES, GO SATISFY SCRATCH A45617 36250000 CLC JFCBVOLS+1(K5),BLANKS IS VOL SER FF BLANKS A45617 36300000 BNE OTA03900 NO, GO READ REF JFCB A45617 36350000 * YES, VOL SER OF FF BLANK A45617 36400000 * REFLECTS AN UNOPENED NON A45617 36450000 * SPECIFIC REQUEST FOR A A45617 36500000 * GDG DATA SET THAT HAS A45617 36550000 * BEEN CATALOGED. TREAT A45617 36560000 * AS A NON-SPECIFIC A45617 36570000 * REQUEST A45617 36580000 OI JFCBTSDM,JFCVSL SET VOL SER LIST MODIF- A45617 36590000 * IED SO SCHEDULER WILL A45617 36592000 * RECATALOG WITH NEW VOL A45617 36594000 OTA03450 EQU * A45617 36596000 * A45617 36598000 * SATISFY SCRATCH REQUEST FOR ORIGINAL JFCB A45617 36598400 * A45617 36598800 TM K0(RPARC),X'0C' IF DCB IS OPENED FOR 36600000 * OUTPUT, CONTINUE 36800000 * ELSE ABEND 37000000 BC 5,OTA03500 CONTINUE 37200000 B OTA05500 FREEMAIN IF NEEDED AND RETRY 37400000 OTA03500 EQU * 37600000 L RUCB,TIOEFSRT-K1 GET FIRST UCB ADDRESS 37800000 LA RC,TIOEFSRT-K1 SET LIMITS FOR SCAN THRU 38000000 SR R0,R0 UCB ENTRIES FOR THIS DCB 38200000 IC R0,TIOELNGH 38400000 AR R0,RTIOT 38600000 LA RD,DXVOLMT1 POINT TO VOLUME SERIAL 38800000 OTA03600 EQU * 39000000 CLC K0(K6,RD),UCBVOLI IS VOLUME MOUNTED 39200000 BNE OTA03800 IF VOLUME IS MOUNTED 39400000 * ON A UNIT, THEN BR TO 39600000 * SET JFCB AND UCB TO 39800000 * REFLECT SCRATCH REQUEST 40000000 MVC K0(K4,RC),TIOEFSRT-K1 ROTATE UCB POINTERS 40200000 MVC DXCCW6+K5(K3),TIOEFSRT SAVE UCB ADDR 40400000 ST RUCB,TIOEFSRT-K1 40600000 XC UCBVOLI(K6),UCBVOLI CLEAR UCB VOLID TO MAKE 40800000 * IT LOOK LIKE SCRATCH REQ 41000000 OTA03700 EQU * 41200000 L RUCB,TIOEFSRT-K1 GET FIRST UCB ADDRESS 41400000 MVC JFCBVOLS(K6),BLANKS MAKE JFCB REFLECT SCRATCH 41600000 * REQUEST 41800000 OI JFCBMASK+K4,X'80' INDICATE JFCB MODIFIED 42000000 MVC K0(K6,RD),SCRTCH 42200000 TM JFCBMASK+K7,UCB3TAPE IF SECOND TIME SW IS ON 42400000 * THEN IT HAS BEEN SET ON 42600000 * IN THIS LOAD . CORE WAS 42800000 * GOTTEN IN THAT INSTANCE 43000000 * AND MUST BE FREED 43200000 BO OTA04600 GO ISSUE FREEMAIN 43400000 B OTA04700 GO TO NSL,NL,SL OR MOUNT MOD. 43600000 OTA03800 EQU * 43800000 LA RC,K4(,RC) POINT TO NEXT UCB 44000000 L RUCB,K0(,RC) 44200000 CR RC,R0 IF MORE UCBS TO CHECK, 44400000 BL OTA03600 BRANCH 44600000 B OTA03700 BRANCH TO SET JFCB TO SCRATCH 44800000 * STATUS 45000000 OTA03900 EQU * 45200000 AIF ('&LIB' EQ 'LIB1').LIB14D2 45210000 LA R0,QMIJFCBL GET QMI WORK AREA 45220000 GETMAIN R,LV=(0) 45230000 ST R1,DXWORK1 SAVE BEG. ADDRESS OF QMI AREA 45240000 * 45250000 USING QMIOP,R1 45260000 LA RF,K24(R1) POINTER TO JES WORK AREA 45270000 ST RF,QMIWRKAD STORE POINTER TO JES WORK AREA 45280000 * 45290000 MVI QMIRECL,K0 CLEAR LENGTH FIELD 45300000 MVI QMIRECL+K1,JFCBLGTH SETUP READ LENGTH 45310000 * 45320000 L RF,CVTPTR CVT ADDRESS 45330000 L RF,CVTTCBP-CVT(RF) TCB POINTERS 45340000 L RF,K4(RF) CURRENT TCB 45350000 ST RF,QMITCBAD STORE CURRENT TCB ADDRESS 45360000 .LIB14D2 ANOP 45370000 LA R0,K176 GET 176 BYTES FOR REFERENCED 45400000 GETMAIN R,LV=(0) JFCB 45600000 XC K0(K176,R1),K0(R1) CLEAR GOTTEN CORE 45800000 ST R1,DXCCW7 SAVE POINTER TO GETMAIN AREA 46000000 BAL RB,OTA05700 SET UP CHANNEL PROG TO I/O 46200000 * ON JOBQUEUE 46400000 L R0,DXVOLMT1 MOVE $TTR TO REG ZERO 46600000 TM JFCBMASK+K7,UCB3TAPE SECOND TIME THRU FOR THIS 46800000 BZ OTA04000 JFCB. IF NOT, BRANCH 47000000 L R0,DXCCW7+K4 LOAD TTRV OF REF TO JFCB 47200000 SRL R0,K8 FORM 0TTR IN REGISTER 47400000 OTA04000 EQU * 47600000 SLL R0,K8 CLEAR LO ORDER BYTE 47800000 LTR R0,R0 DOES REF JFCB EXIST 48000000 BNZ OTA04100 YES, BR TO CONT PROCESSING 48200000 B OTA05400 UNABLE TO READ JOB QUEUE 48400000 OTA04100 EQU * 48600000 ST R0,DXCCW7+K4 SAVE TTR0 OF REF TO JFCB 48800000 BAL RB,OTA05800 SET UP CHAN PROG TO READ 49000000 BAL RB,OTA05300 READ REF JFCB INTO CORE 49200000 AIF ('&LIB' NE 'LIB1').LIB24D2 49300000 BO OTA04200 BRANCH IF NO I/O ERRORS 49400000 .LIB24D2 ANOP 49440000 AIF ('&LIB' EQ 'LIB1').LIB14D3 49480000 BZ OTA04200 BRANCH IF NO I/O ERRORS 49520000 .LIB14D3 ANOP 49560000 B OTA05400 I/O ERROR ABEND 49600000 OTA04200 EQU * 49800000 L RC,DXCCW7 POINT TO REF JFCB 50000000 TM JFCBMASK+K7,UCB3TAPE IS THIS SECOND TIME THRU 50200000 BO OTA05100 IF SO, BRANCH 50400000 CLI JFCBVOLS-INFMJFCB(RC),VIRTUAL 50600000 BE OTA04900 BRANCH TO VERIFY TAPE 50800000 SR RD,RD 51000000 IC RD,JFCBNVOL-INFMJFCB(RC) NO. OF VOLUMES 51200000 CH RD,FIVE9A IF LE 5 VOLUMES,BR TO 51400000 BNH OTA04500 GET LAST VOLID 51600000 SH RD,FIVE9A REDUCE BY 5 51800000 BAL RB,OTA05700 SET UP CHANNEL PROG TO 52000000 * I/O ON JOBQUEUE 52200000 L R0,JFCBEXTL-INFMJFCB(RC) TTR OF FIRST JFCB EXTN 52400000 SLL R0,K8 CLEAR LOW ORDER BYTE 52600000 OTA04300 EQU * 52800000 LTR R0,R0 DOES JFCB EXTN EXIST 53000000 BZ OTA05400 NO,ABEND 53200000 BAL RB,OTA05800 SET UP CHANNEL PROG TO 53400000 * READ JFCB EXTN 53600000 BAL RB,OTA05300 READ JFCB EXTN 53800000 AIF ('&LIB' NE 'LIB1').LIB24D3 53900000 BZ OTA05400 BR IF I/O ERROR TO ABEND 54000000 .LIB24D3 ANOP 54040000 AIF ('&LIB' EQ 'LIB1').LIB14D4 54080000 BP OTA05400 BR IF I/O ERROR TO ABEND 54120000 .LIB14D4 ANOP 54160000 CH RD,CONS15 IF LE 15 VOLUMES,BR TO 54200000 BNH OTA04400 GET LAST VOLID 54400000 SH RD,CONS15 REDUCE BY 15 54600000 BAL RB,OTA05700 SET UP CHANNEL PROG TO 54800000 * I/O ON JOBQUEUE 55000000 L R0,K0(,RC) TTR OF NEXT JFCB EXTN 55200000 IC R0,BYTE0 CLEAR LOW ORDER BYTE 55400000 B OTA04300 BR TO READ NEXT EXTN 55600000 * 55800000 * THE REFERENCED JFCB BASE REGISTER, RB, MUST BE MODIFIED TO 56000000 * INDICATE THE CORRECT JFCB EXTENSION DISPLACEMENT 56200000 * 56400000 OTA04400 EQU * 56600000 LA RB,JFCBVOLS-INFMJFCB-K4 CORRECTION VALUE 56800000 SR RC,RB UPDATE BASE REG 57000000 OTA04500 EQU * 57200000 BCTR RD,0 DECR BY 1 57400000 MH RD,SIX9A DISPLACEMENT OF LAST 57600000 * VOLID 57800000 LA RF,JFCBVOLS-INFMJFCB(RC) ADDR OF VOLID FIELD 58000000 AR RD,RF ADDR OF LAST VOLID 58200000 MVC DXVOLMT1,K0(RD) VOLID TO WORKAREA 58400000 MVC JFCBVOLS(K6),DXVOLMT1 VOLID TO JFCB 58600000 OI JFCBMASK+K4,X'80' INDICATE JFCB MODIFIED 58800000 OTA04600 EQU * 59000000 AIF ('&LIB' EQ 'LIB1').LIB14D5 59050000 BAL RET,JESFREE FREE STORAGE 59100000 .LIB14D5 ANOP 59150000 L R1,DXCCW7 POINT TO REF JFCB 59200000 LA R0,K176 FREE GOTTEN CORE FOR 59400000 FREEMAIN R,LV=(0),A=(1) REFERENCED JFCB 59600000 MVC DXDEBMOD(K4),DXCCW6+K4 MOVE TAPE DEV MODE BYTE TO DEB 59800000 OTA04700 EQU * 60000000 LA RF,ID4D4F MOUNT VERIFY MODULE IDTTR 60200000 LA RET,K0 NORMAL ENTRY MNT VERIFY 60400000 TM WTGPATHS+K1,WTGRECHK MOUNT VERIFY NEEDED 60600000 BO OTA04800 YES, BRANCH 60800000 LA RF,ID4D6J MERGE MODULE IDTTR 61000000 TM JFCBLTYP,JFCNSL NSL REQUEST 61200000 BO OTA04800 YES, BRANCH 61400000 LA RF,ID4D5C NL MODULE IDTTR 61600000 TM JFCBLTYP,JFCBLP+JFCNL NL OR BLP SPECIFIED 61800000 BM OTA04800 YES, BRANCH 62000000 LA RF,ID4D5B SL MODULE IDTTR 62200000 OTA04800 EQU * 62400000 NI WTGPATHS+K1,ALLBITS-WTGRECHK ZERO RECHECK SW 62600000 IECRES XCTL,(RF) 62800000 OTA04900 EQU * 63000000 OI JFCBMASK+K7,UCB3TAPE SET SW TO CALL THIS LOAD 63200000 * AGAIN TO PROCESS THIS DCB 63400000 TM K0(RPARC),X'0C' TEST FOR INPUT,INOUT,RDBCK 63600000 BC 5,OTA05000 NO, BRANCH 63800000 B OTA05500 YES, NO VOLUME SERIAL ,JOB 64000000 * ABEND. CANNOT HAVE AN INPUT 64200000 * DATA SET ON A NON SPECIFIC 64400000 * VOLUME 64600000 OTA05000 EQU * 64800000 B OTA03500 BR TO SET JFCB AND UCB TO 65000000 * SCRATCH VOLUME STATUS 65200000 OTA05100 EQU * 65400000 NI JFCBMASK+K7,ALLBITS-UCB3TAPE TURN OFF SECOND TIME SW 65600000 MVC JFCBVOLS-INFMJFCB(K6,RC),JFCBVOLS 65800000 * MOVE REAL VOLID TO 66000000 * REFERENCED JFCB 66200000 L R0,DXCCW7+K4 LOAD TTR0 OF REF TO JFCB 66400000 BAL RB,OTA05900 SET UP CHAN PROD TO WRITE 66600000 * BACK REFERENCED JFCB 66800000 BAL RB,OTA05300 WRITE BACK REF TO JFCB 67000000 AIF ('&LIB' NE 'LIB1').LIB24D4 67100000 BO OTA05200 BR IF NO I/O ERRORS 67200000 .LIB24D4 ANOP 67240000 AIF ('&LIB' EQ 'LIB1').LIB14D6 67280000 BZ OTA05200 BR IF NO I/O ERRORS 67320000 .LIB14D6 ANOP 67360000 B OTA05400 I/O ERRORR ABEND 67400000 OTA05200 EQU * 67600000 B OTA04600 GO ISSUE FREEMAIN 67800000 OTA05300 EQU * 68000000 AIF ('&LIB' NE 'LIB1').LIB24D5 68100000 EXCP DXIOB 68200000 IECRES WAIT 68400000 TM DXECB,ECBNOERR TEST FOR ERROR 68600000 .LIB24D5 ANOP 68620000 AIF ('&LIB' EQ 'LIB1').LIB14D7 68640000 STM RD,RET,PTRBUFA(R1) SAVE REGS - RD AND RE 68660000 LA RD,PTRBUFB(R1) SET UP SAVE AREA FOR MACRO 68680000 QMNGRIO 68700000 LM RD,RET,PTRBUFA(R1) RESTORE REGS RD AND RE 68720000 LTR RF,RF TEST FOR ERROR 68740000 .LIB14D7 ANOP 68760000 BR RB NO ERROR, RETURN TO CALLER 68800000 OTA05400 EQU * 69000000 LA R0,K7 UNABLE TO READ JOBQUEUE 69200000 DMABCOND K7,ID4D0P 69400000 OTA05500 EQU * 69600000 TM JFCBMASK+K7,UCB3TAPE IF ON MUST FREEMAIN 69800000 BNO OTA05600 BRANCH, NOT ON 70000000 NI JFCBMASK+K7,ALLBITS-UCB3TAPE TURN OFF SECOND TIME SW 70200000 NI WTGPATHS+K1,ALLBITS-WTGRECHK TURN OFF RECHECK SW 70400000 L R1,DXCCW7 POINT TO GOTTEN CORE 70600000 LA R0,K176 FREE GOTTEN CORE FOR 70800000 FREEMAIN R,LV=(0),A=(1) REFERENCED JFCB 71000000 MVC DXDEBMOD(K4),DXCCW6+K4 MOVE TAPE DEV MODE BYTE TO DEB 71200000 OTA05600 EQU * 71400000 XC UCBVOLI,UCBVOLI CLEAR VOLUME SERIAL IN UCB 71600000 LA RET,K4 RECOVERY ENTRY MNT VERIFY 71800000 DMABCOND K8,ID4D0P,RETURN=ID4D4F 72000000 OTA05700 EQU * 72200000 AIF ('&LIB' NE 'LIB1').LIB24D6 72300000 XC DXCCW1(K24),DXCCW1 CLEAR CHAN PROG CORE 72400000 LA RET,DXCCW1 SET UP ADDR FOR TIC 72600000 ST RET,DXCCW2 72800000 MVC DXCCW3+K1(K3),DXCCW7+K1 SET UP BUFFER ADDRESS 73000000 OC DXCCW2(K16),OPKCW2A COMPLETE CHANNEL PROGRAM 73200000 .LIB24D6 ANOP 73230000 AIF ('&LIB' EQ 'LIB1').LIB14D8 73260000 L R1,DXWORK1 LOAD DESECT BASE-QMIOLIST 73290000 MVC QMIRECAD+K1(K3),DXCCW7+K1 SET UP BUFFER ADDRESS 73320000 .LIB14D8 ANOP 73350000 BR RB RETURN 73400000 OTA05800 EQU * 73600000 AIF ('&LIB' NE 'LIB1').LIB24D7 73700000 MVI DXCCW3,CCWRDDA 73800000 .LIB24D7 ANOP 73830000 AIF ('&LIB' EQ 'LIB1').LIB14D9 73860000 L R1,DXWORK1 LOAD DSECT BASE-QMIOLIST 73890000 MVI QMIFLAGS,QMIOREAD INDICATE READ OPERATION 73920000 .LIB14D9 ANOP 73950000 B OTA06000 SET UP READ DATA 74000000 OTA05900 EQU * 74200000 AIF ('&LIB' NE 'LIB1').LIB24D8 74300000 MVI DXCCW3,CCWWRTDA 74400000 .LIB24D8 ANOP 74430000 AIF ('&LIB' EQ 'LIB1').LIB14DA 74460000 L R1,DXWORK1 LOAD DSECT BASE-QMIOLIST 74490000 MVI QMIFLAGS,QMIOWRTE INDICATE WRITE OPERATION 74520000 .LIB14DA ANOP 74550000 OTA06000 EQU * 74600000 AIF ('&LIB' NE 'LIB1').LIB24D9 74700000 XC DXCCW1(K8),DXCCW1 CLEAR FIRST CHAN COMMAND 74800000 LA RET,DXDAADDR+K3 SET UP ADDR FOR SEEK 75000000 ST RET,DXCCW1 75200000 OC DXCCW1(K8),OPKCW1A COMPLETE CCW1 75400000 STM R0,RF,K0(RCORE) SAVE REGS BEFORE CONVERT 75600000 L RC,CVTPTR ADDR OF CVT 75800000 L RET,CVTJOB-CVT(,RC) ADDR OF T.S. DCB 76000000 L RF,CVTPCNVT-CVT(,RC) ADDR OF CONVERT ROUTINE 76200000 L R1,DCBDEBAD-IHADCB(,RET) ADDR OF T.S. DEB 76400000 MVC DXDEBMOD(K4),DXDEBMOD-DXDEB(R1) MOVE IN FILE MASK AND 76600000 * UCB ADDR OF JOBQUE 76800000 LA RDCB,DXDAADDR LOAD REG2 WITH DESIRED ADDR OF 77000000 * RESULT 77200000 * 77400000 * REGISTER CONTENTS 77600000 * 77800000 * RE=REG0=TTR0 78000000 * RF=REG1=ADDR OF JOBQUEUE DEB 78200000 * RDCB=REG2=ADDR OF IOB SEEK FIELD 78400000 * RJ=REG15=ADDR OR TTR TO MBBCCHHR CONVERT ROUTINE 78600000 * 78800000 BALR RET,RF RETURN 79000000 LM R0,RF,K0(RCORE) 79200000 .LIB24D9 ANOP 79240000 AIF ('&LIB' EQ 'LIB1').LIB14DB 79280000 ST R0,QMIDSKAD STORE JFCB TTR0 79320000 .LIB14DB ANOP 79360000 BR RB RETURN 79400000 AIF ('&LIB' EQ 'LIB1').LIB14DC 79420000 JESFREE EQU * 79440000 DROP R1 79460000 L R1,DXWORK1 LOCATION OF STORAGE TO BE FREED 79480000 LA R0,QMIJFCBL SIZE OF STORAGE TO BE FREED 79500000 FREEMAIN R,LV=(0),A=(1) 79520000 BR RET BRANCH TO CALLER 79540000 .LIB14DC ANOP 79560000 OPKCW1A DC X'3100000060000005' SEARCH ID EQUAL 79600000 OPKCW2A DC X'0800000000000000' TIC 79800000 READCCW DC X'06000000200000B0' READ DATA 80000000 REWCCWA DC X'0700000020000050' SEEK 80200000 WRITCCW DC X'05000000000000B0' WRITE DATA 80400000 SCRTCH DC C'SCRTCH' SCRTCH MESSAGE 80600000 BLANKS DC C' ' BLANK CHARACTERS 80800000 FIVE9A DC H'5' THE CONSTANT FIVE 81000000 SIX9A DC H'6' THE CONSTANT SIX 81200000 CONS15 DC H'15' THE CONSTANT FIFTEEN 81400000 BYTE0 DC B'0' ZERO 81600000 LTORG 81800000 XCTL4D XCTLTABL ID=(ID4D4F,4F,ID4D5B,5B,ID4D5C,5C,ID4D6J,6J, X82000000 ID4D0P,0P) 82200000 IECDSECS CVT,TCB,TIOT,DCB,UCB,MAIN,WTG,EXPAND=YES 82400000 AIF ('&LIB' EQ 'LIB1').LIB14DD 82440000 IEFJESCT 82480000 IEFQMIOP 82520000 .LIB14DD ANOP 82560000 END 82600000 ./ ADD SSI=00010251,NAME=IFG0194E,SOURCE=0 TITLE 'IFG0194E/OPEN - DA, SELECTION OF UNIT FOR FIRST VOLUME' 00100021 COPY LCGASMSW 00200000 IFG0194E CSECT 00400021 *********************************************************************** 00500021 * * 00600021 * * 00700021 * RELEASE 25 DELETIONS/CHANGES * 00800021 * RELEASE 24 DELETIONS/CHANGES * 00900021 * RELEASE 23 DELETIONS/CHANGES * 01000021 * RELEASE 22 DELETIONS/CHANGES * 01100021 * RELEASE 21.8 DELETIONS/CHANGES * 01101003 *0000083000,112000,170000 SA64079 01102003 * RELEASE 21.7 DELETIONS/CHANGES * 01110001 *0000085000,099000-105000,112000,177000,182000,184000-186000, SA46620 01120001 *0000188000,194000-200000,321920,336000-340000,342000,344000, SA46620 01130001 *0000346000-357000,379000-383000,388000,395000,401000,422000, SA46620 01140001 *0000424000,427000-442000,452000-455000,462000-466000,475000, SA46620 01150001 *0000511000-513000,519000-521000,523000,525000,533000 SA46620 01160001 * RELEASE 21 DELETIONS/CHANGES * 01200021 *0000315000-316000,395000,401000,408000-419000,529000-532000 M0033 01250021 * * 01300021 * STATUS CHANGE LEVEL 000 * 01400021 * * 01500021 * FUNCTION - * 01600021 * THIS MODULE CONTAINS THE FUNCTION(S) OR PART(S) OF FUNCTION(S)-- * 01700021 * OPEN DA UNIT SELECTION FUNCTION * 01800021 * OPEN DA READ DSCB FUNCTION * 01900021 * REFER TO THE FOLLOWING 'FUNCTION PROLOG(S)' FOR DETAILS. * 02000021 * * 02100021 * ENTRY POINTS - * 02200021 * IFG0194E * 02300021 * * 02400021 * INPUT - * 02500021 * REFER TO THE FOLLOWING 'FUNCTION PROLOG(S)'. * 02600021 * * 02700021 * OUTPUT - * 02800021 * REFER TO THE FOLLOWING 'FUNCTION PROLOG(S)'. * 02900021 * * 03000021 * EXTERNAL REFERENCES - * 03100021 * IFG019RA - OPEN/CLOSE/EOV RESIDENT ROUTINE FOR XCTL AND * 03200021 * WAIT. * 03300021 * REFER TO THE FOLLOWING 'FUNCTION PROLOG(S)'. * 03400021 * * 03500021 * EXITS, NORMAL - * 03600021 * REFER TO THE FOLLOWING 'FUNCTION PROLOG(S)'. * 03700021 * * 03800021 * EXITS, ERROR - * 03900021 * EXIT IS TO THE PROBLEM DETERMINATION MODULE IFG0190P, IF AN * 04000021 * ABEND SITUATION OCCURS IN THIS MODULE. REFER TO THE FOLLOWING * 04100021 * 'FUNCTION PROLOG(S)'. * 04200021 * * 04300021 * TABLES/WORK AREAS - * 04400021 * REFER TO THE FOLLOWING 'FUNCTION PROLOG(S)'. * 04500021 * * 04600021 * ATTRIBUTES - * 04700021 * REENTRANT, REFRESHABLE, READ-ONLY, ENABLED, PRIVILEGED * 04800021 * * 04900021 * CHARACTER CODE DEPENDENCY - * 05000021 * CLASS ONE CHARACTER CODE DEPENDENCY - THE EBCDIC CHARACTER CODE * 05100021 * WAS USED FOR ASSEMBLY. THE MODULE MUST BE REASSEMBLED IF A * 05200021 * DIFFERENT CHARACTER SET IS USED FOR EXECUTION. * 05300021 * * 05400021 * NOTES - * 05500021 * REFER TO THE FOLLOWING 'FUNCTION PROLOG(S)'. * 05600021 * * 05700021 *********************************************************************** 05800021 EJECT 05900021 *********************************************************************** 06000021 * * 06100021 * FUNCTION PROLOG * 06200021 * * 06300021 *********************************************************************** 06400021 * * 06500021 * FUNCTION NAME - * 06600021 * OPEN DA UNIT SELECTION FUNCTION * 06700021 * * 06800021 * (STATUS) - * 06900021 * NOT APPLICABLE * 07000021 * * 07100021 * FUNCTION - * 07200021 * SCAN THE UCB'S POINTED TO BY THE CURRENT TIOT DD ENTRY TO FIND * 07300021 * ONE WITH THE VOLUME WHOSE SERIAL NUMBER IS IN DXVOLMT1. * 07400021 * IF FOUND, THE UCB OPEN DCB DATA MANAGEMENT COUNTER IS * 07500021 * INCREMENTED BY ONE, AND THE WORK AREA WORK DEB SET UP FOR USE * 07600021 * ON THAT UNIT. * 07700021 * IF NOT FOUND, XCTL TO IFG0194A TO MOUNT AND VERIFY THE VOLUME. * 07800021 * * 07900021 * ENTRY POINTS - * 08000021 * ODA00400 - THIS FUNCTION IS ENTERED AT THIS STATEMENT * 08100021 * FROM MODULE IFG0193A. * 08200021 * *ALSO ENTERED HERE FROM IFG0194E VIA PROBLEM * 08210003 * DETERMINATION IF THE USER SPECIFIES RECOVERY FROM * 08220003 * OPEN INTERNAL ABEND CODE 008, 213-18 ABEND BECAUSE * 08230003 * OPEN FOR INPUT FROM A SCRTCH - BLANK VOLUME. PROBLEM * 08240003 * DETERMINATION WILL HAVE PLACED THE NEW VOLUME SERIAL * 08250003 * NUMBER IN DXVOLMT1 AND IN THE JFCB IN THE WORK AREA. * 08260003 * *ALSO ENTERED HERE FROM IFG0195G VIA PROBLEM * 08300003 * DETERMINATION IF THE USER SPECIFIES RECOVERY FROM * 08400021 * OPEN INTERNAL ABEND CODE 030, 213-04 ABEND BECAUSE OF * 08500001 * MISSING FORMAT 1 DSCB. PROBLEM DETERMINATION WILL HAVE * 08600021 * PLACED THE NEW VOLUME SERIAL NUMBER IN DXVOLMT1 AND IN * 08700021 * THE JFCB IN THE WORK AREA. * 08800021 * * 08900021 * INPUT - * 09000021 * THE VOLUME SERIAL NUMBER OF THE VOLUME TO USE IN DXVOLMT1. * 09100021 * * 09200021 * OUTPUT - * 09300021 * INCREMENTED UCB OPEN DCB DATA MANAGEMENT COUNTER. * 09400021 * WORK AREA DEB UCB ADDRESS AND EXTENT SET UP FOR USE ON THE * 09500021 * SELECTED DEVICE. * 09600021 * * 09700021 * EXTERNAL REFERENCES - * 09800021 * REFER TO THE PRECEEDING MODULE PROLOG. * 10000001 * * 10600021 * EXITS, NORMAL - * 10700021 * *BR TO READ DSCB FUNCTION IF VOLUME FOUND DURING UCB SCAN. * 10800021 * *XCTL TO IFG0194A IF VOLUME MUST BE MONTED AND VERIFIED. * 10900021 * * 11000021 * EXITS, ERROR - * 11100021 * XCTL TO IFG0190P WITH OPEN INTERNAL ABEND CODE 008 * 11150001 * TO GIVE A 413-18 ABEND IF OPEN FOR INPUT FROM A 'SCRTCH' VOLUME. * 11200003 * * 11300021 * TABLES/WORK AREAS - * 11400021 * THE FORMAT AND CONTENTS OF THE WORK AREAS USED ARE DESCRIBED BY * 11500021 * THE DSECTS AT THE END OF THE LISTING. * 11600021 * * 11700021 * ATTRIBUTES - * 11800021 * REFER TO THE PRECEEDING MODULE PROLOG. * 11900021 * * 12000021 * CHARACTER CODE DEPENDENCY - * 12100021 * REFER TO THE PRECEEDING MODULE PROLOG. * 12200021 * * 12300021 * NOTES - * 12400021 * * 12500021 *********************************************************************** 12600021 EJECT 12700021 IECDSECS CVT,TIOT,UCB, DEFINE DESIRED DSECTS TO BE X12800021 DCB,MAIN EXPANDED AT THE END 12900021 * 13000021 IECEQU , DEFINE EQUATES 13100021 * 13200021 USING IHADCB,RDCB DEFINE BASE TO USER'S DCB 13300021 USING FORCORE,RCORE DEFINE BASE TO MAIN WORK AREA 13400021 USING TIOENTRY,RTIOT DEFINE BASE TO TIOT DD ENTRY 13500021 USING UCBOB,RUCB DEFINE BASE TO MAIN UCB 13600021 * 13700021 BALR RBASE,0 ESTABLISH BASE REGISTER 13800021 USING *,RBASE DEFINE BASE REGISTER 13900021 * 14000021 B ODA00200(RET) BR TO INDICATED FUNCTION 14100021 * 14200021 ODA00200 B ODA00400 RET=0 INITIAL ENTRY 14300021 B ODA02400 RET=4 RETURN FROM VOL VERIFY 14400021 * 14500021 *********************************************************************** 14600021 * 14700021 * CHECK FOR NONSPECIFIC VOLUME REQUESTS. SUCH A REQUEST IS ONLY 14800021 * VALID FOR OUTPUT MODE. A REQUEST OF THIS KIND IS USUALLY ONLY 14900021 * MADE BY A UTILITY PROGRAM, SUCH AS IEHDASDR, TO INITIALIZE A 15000021 * DISK. IN ANY CASE, THE DSNAME SPECIFIED MUST EXIST ON THE VTOC 15100021 * OR ELSE THE OPEN REQUEST WILL ABEND. THIS IS USUALLY SATISFIED BY 15200021 * SPECIFYING THE DSNAME OF THE FORMAT 4 DSCB, X'040404040404 ETC.' 15300021 * AN OPEN TO A SCRATCH VOLUME CAN ONLY BE DONE ON THE FIRST VOLUME 15400021 * BECAUSE THE NEW VOLUME SERIAL NUMBER WILL BE SAVED IN THE FIRST 15500021 * JFCB VOLUME SERIAL NUMBER SLOT. 15600021 * 15700021 ODA00400 EQU * 15800021 CLI DXVOLMT1,C' ' CHECK FOR BLANK VOL SER NO. 15900021 BE ODA00600 BR IF BLANK 16000021 CLI DXVOLMT1,K0 CHECK FOR ZERO VOL SER NO. 16100021 BNE ODA01000 BR IF NOT ZERO 16200021 * 16300021 ODA00600 EQU * 16400021 TM 0(RPARC),PLISTM0C TEST IF INPUT, INOUT, RDBACK 16500021 BNZ ODA00800 BR IF NO 16600021 * 16610003 * XCTL TO IFG0190P PROBLEM DETERMINATION MODULE. 16620003 * THERE, IF THE USER HAS A X'11' EXIT, HE MAY RECOVER FROM THIS 16630003 * 213-18 ABEND BY SPECIFYING A NEW VOLUME SERIAL NUMBER TO USE. 16640003 * IF SO, PROBLEM DETERMINATION WILL XCTL TO IFG0194E TO TRY 16650003 * RECOVERY WITH THE NEW VOLUME SERIAL NUMBER. 16660003 * PD WILL HAVE PLACED THE NEW VOLUME SERIAL NUMBER SPECIFIED 16670003 * BY THE USER IN DXVOLMT1 AND THE JFCB OR JFCB EXTENSION. 16680003 * 16700021 OABD008B EQU 008 A SCRTCH VOLUME MAY NOT BE 16800021 * OPENED FOR INPUT 16900021 DMABCOND OABD008B,ODA0920X, XCTL TO PROB DET / ABEND X17000003 RETURN=ODA0940X,RETCODE=0 IF USER TRIES RECOVER SA64079 17050003 * 17100021 ODA00800 EQU * 17200021 MVC DXVOLMT1,ODA0600K SET VOL SER NO. TO SCRTCH 17300021 * 17400021 *********************************************************************** 17500021 * 17600021 * SET UP OPEN WORK DEB EXTENT TO COVER THE WHOLE DISK. 17700001 * ALL UCB'S IN A TIOT DD ENTRY UCB POINTER LIST ARE SUPPOSED 17800021 * TO HAVE THE SAME ATTRIBUTES. 17900021 * 18000021 ODA01000 EQU * 18100021 MVC DXDEBSCC(K10),ODA0660K SET EXTENT TO COVER DSK SA46620 18200001 * 18300021 CLI UCBID,UCBMAIN IS DEVICE 2321 18700021 BNE ODA01200 BR IF YES SA46620 18800001 * 18900021 TM UCBTBYT2,UCBRPS DOES DEVICE HAVE RPS FEATURE 19000021 BZ ODA01200 BR IF NO 19100021 NI JFCBMASK+K6,X'FF'-JFCMNRPS TURN OFF NO RPS BIT 19200021 ODA01200 EQU * 19300021 * 20100021 *********************************************************************** 20200021 * 20300021 * FIND UCB THAT HAS THE DESIRED VOLUME MOUNTED ON IT. 20400021 * 20500021 LA RC,TIOEFSRT-K1 20600021 SR R0,R0 20700021 IC R0,TIOELNGH 20800021 AR R0,RTIOT LAST PLUS ONE UCB ADDR 20900021 B ODA01800 BR TO START UCB LOOP 21000021 * 21100021 ODA01600 EQU * 21200021 LA RC,K4(RC) POINT TO NEXT TIOT UCB ADDR 21300021 CR RC,R0 CHECK FOR MORE UCB ADDRS 21400021 BNL ODA04000 BR IF NO MORE 21500021 * 21600021 ODA01800 EQU * 21700021 L RUCB,0(,RC) LOAD UCB ADDR FROM TIOT 21800021 CLI UCBID,UCBMAIN CHECK FOR 2321 21900021 BE ODA02000 BRANCH IF NOT 2321 22000021 * 2321 DATACELL PROCESSING 22100021 USING UCBDCELL,RUCB SET BASE FOR DATACELL 22200021 CLC UCBDVOLI,DXVOLMT1 CHECK FOR CORRECT VOLUME 22300021 BNE ODA01600 BR IF NO 22400021 * 22500021 MVC 0(K4,RC),TIOEFSRT-K1 FIRST UCB ADDR TO CURRENT 22600021 ST RUCB,TIOEFSRT-K1 CURRENT UCB ADDR TO FIRST 22700021 * 22800021 LH RD,UCBDBBNR PICK UP BB NUMBER 22900021 STH RD,DXDEBBIN STORE USER BB IN WORK AREA 23000021 SLA RD,K4 MULTIPLY BB NUMBER BY 16 23100021 LA RD,UCBDCELL-UCBOB(RD) (BB)(16)+MAIN UCB LENGTH 23200021 LCR RD,RD NEGATE OFFSET 23300021 LA RD,0(RD,RUCB) ZERO SET FILE MASK, MAIN UCB 23400021 ST RD,DXDEBUCB STORE MAIN UCB ADDR IN WORK DEB 23500021 * 23600021 AIF ('&LIB' NE 'LIB1').LIB24E1 23650000 SSM *+K1 DISABLE INTERRUPTS 23700021 .LIB24E1 ANOP 23750000 AIF ('&LIB' EQ 'LIB1').LIB14E1 23760000 MODESET ENABLE=NO DISABLE INTERRUPTS Y01082 23770000 .LIB14E1 ANOP 23780000 IC RF,UCBDDMCT INCREMENT UCB 23800021 LA RF,K1(RF) OPEN DCB COUNT 23900021 STC RF,UCBDDMCT BY 1 24000021 AIF ('&LIB' NE 'LIB1').LIB24E2 24050000 SSM ODA0680K RE-ENABLE INTERRUPTS 24100021 .LIB24E2 ANOP 24150000 AIF ('&LIB' EQ 'LIB1').LIB14E2 24160000 MODESET ENABLE=YES RE-ENABLE INTERRUPTS Y01082 24170000 .LIB14E2 ANOP 24180000 * 24200021 TM UCBDDMCT,UCBDDMNT TEST IF MOUNT NOT COMPLETE 24300021 BO ODA04200 BR IF NOT YET COMPLETE 24400021 * 24500021 TM UCBFL1-UCBOB(RD),UCBNOTRD TEST IF MAIN UCB NOT-READY 24600021 BO ODA04400 BR IF YES 24700021 B ODA02200 BR TO CONTINUE 24800021 * 24900021 * NORMAL DIRECT ACCESS PROCESSING 25000021 USING UCBOB,RUCB NORMAL MAIN UCB 25100021 ODA02000 EQU * 25200021 CLC UCBVOLI,DXVOLMT1 CHECK IF CORRECT VOLUME 25300021 BNE ODA01600 BR IF NOT 25400021 * 25500021 MVC 0(K4,RC),TIOEFSRT-K1 FIRST UCB ADDR TO CURRENT 25600021 ST RUCB,TIOEFSRT-K1 CURRENT UCB ADDR TO FIRST 25700021 * 25800021 MVC DXDEBUCB+K1(K3),TIOEFSRT MOVE UCB ADDR INTO WORK DEB 25900021 XC DXDEBBIN,DXDEBBIN ZERO NOT APPLICABLE BIN NO. 26000021 * 26100021 AIF ('&LIB' NE 'LIB1').LIB24E3 26150000 SSM *+K1 DISABLE INTERRUPTS 26200021 .LIB24E3 ANOP 26250000 AIF ('&LIB' EQ 'LIB1').LIB14E3 26260000 MODESET ENABLE=NO DISABLE INTERRUPTS Y01082 26270000 .LIB14E3 ANOP 26280000 IC RF,UCBDMCT INCREMENT UCB 26300021 LA RF,K1(RF) OPEN DCB COUNT 26400021 STC RF,UCBDMCT BY 1 26500021 AIF ('&LIB' NE 'LIB1').LIB24E4 26550000 SSM ODA0680K RE-ENABLE INTERRUPTS 26600021 .LIB24E4 ANOP 26650000 AIF ('&LIB' EQ 'LIB1').LIB14E4 26660000 MODESET ENABLE=YES RE-ENABLE INTERRUPTS Y01082 26670000 .LIB14E4 ANOP 26680000 * 26700021 TM UCBDMCT,UCBMOUNT TEST IF MOUNT NOT COMPLETE 26800021 BO ODA04200 BR IF NOT YET COMPLETE 26900021 * 27000021 TM UCBFL1,UCBNOTRD TEST IF UCB NOT-READY 27100021 BO ODA04200 BR IF YES 27200021 * 27300021 ODA02200 EQU * 27400021 * 27500021 *********************************************************************** 27600021 EJECT 27700021 *********************************************************************** 27800021 * * 27900021 * FUNCTION PROLOG * 28000021 * * 28100021 *********************************************************************** 28200021 * * 28300021 * FUNCTION NAME - * 28400021 * OPEN DA READ DSCB FUNCTION * 28500021 * * 28600021 * (STATUS) - * 28700021 * NOT APPLICABLE * 28800021 * * 28900021 * FUNCTION - * 29000021 * READ THE DSCB OF THE DATA SET WHOSE NAME IS IN THE WORK AREA * 29100021 * JFCB FROM THE VOLUME CURRENTLY POINTED TO BY THE WORK DEB. * 29200021 * THIS IS THE VOLUME IN DXVOLMT1. * 29300021 * THE READ MAY BE DONE DIRECTLY BY A TTR PASSED IN THE JFCB. * 29400021 * IF THIS READ FAILS, OR IF NO TTR WAS PASSED, A FULL VTOC SCAN * 29500021 * IS DONE TO FIND THE DSCB. * 29600021 * * 29700021 * * 29799800 * ENTRY POINTS - * 29800021 * ODA02400 - THIS FUNCTION IS ENTERED AT THIS STATEMENT * 29900021 * FROM THE OPEN DA UNIT SELECTION FUNCTION VIA A * 30000021 * BRANCH, OR FROM MODULE IFG0194C AFTER MOUNTING * 30100021 * AND VERIFYING THE DESIRED VOLUME. * 30200021 * * 30300021 * INPUT - * 30400021 * THE WORK AREA DEB SET UP FOR USE ON THE SELECTED UCB. * 30500021 * A TTR OF THE DSCB IN JFCBDSCB. * 30600021 * THE DATA SET NAME IN JFCBDSNM. * 30700021 * * 30800021 * OUTPUT - * 30900021 * THE DSCB IN THE WORK AREA AT DXDSCB. * 31000021 * A NEW TTR OF THE DSCB IN JFCBDSCB IF THE DSCB WAS READ BY THE * 31100021 * FULL VTOC SCAN METHOD. * 31200021 * * 31300021 * EXTERNAL REFERENCES - * 31400021 * IECPCNVT - SUBROUTINE TO CONVERT A RELATIVE DIRECT ACCESS * 31420021 * ADDRESS AND CONCATENATION NUMBER, TTRN, * 31440021 * INTO ITS ABSOLUTE EQUIVALENT, MBBCCHHR. * 31460021 * IT IS RESIDENT IN THE NUCLEUS. * 31480021 * REGISTER ENTRY EXIT * 31500021 * 0 - ACTUAL TTRN DESTROYED * 31520021 * 1 - DEB ADDRESS TRANSPARENT * 31540021 * 2 - ADDRESS OF 8 BYTE TRANSPARENT * 31560021 * AREA FOR MBBCCHHR * 31580021 * 3-8 - IGNORED TRANSPARENT * 31600021 * 9-13 - IGNORED DESTROYED * 31620021 * 14 - RETURN ADDRESS TRANSPARENT * 31640021 * 15 - ENTRY ADDRESS ERROR CODE * 31660021 * * 31700021 * EXITS, NORMAL - * 31800021 * *XCTL TO IFG0196J IF DSCB READ IS A FORMAT 4. * 31810001 * *XCTL TO IFG0195A TO CONTINUE READING FORMAT 1 DSCB, AND THEN * 31820001 * MERGE FORMAT 1 DSCB FIELDS. * 31830001 * * 31900021 * EXITS, ERROR - * 32000021 * XCTL TO IFG0190P WITH OPEN INTERNAL ABEND CODE 224 * 32010001 * TO GIVE A 213-1C ABEND IF I/O ERROR READING VTOC FORMAT 4 DSCB. * 32020001 * * 32100021 * TABLES/WORK AREAS - * 32200021 * THE FORMAT AND CONTENTS OF THE WORK AREAS USED ARE DESCRIBED BY * 32300021 * THE DSECTS AT THE END OF THE LISTING. * 32400021 * * 32500021 * ATTRIBUTES - * 32600021 * REFER TO THE PRECEEDING MODULE PROLOG. * 32700021 * * 32800021 * CHARACTER CODE DEPENDENCY - * 32900021 * REFER TO THE PRECEEDING MODULE PROLOG. * 33000021 * * 33100021 * NOTES - * 33200021 * THE FULL VTOC SEARCH READS TO THE END OF THE CYLINDER, * 33210001 * EVEN IF THE VTOC ENDS ON OTHER THAN A CYLINDER BOUNDARY. * 33220001 * A HIGH WATER MARK (HWM) CHANNEL PROGRAM SEARCH LIKE DADSM'S * 33230001 * WOULD STOP AT THE END OF THE VTOC, BUT IT REQUIRES 11 CCW'S, * 33240001 * WHICH ARE NOT AVAILABLE IN OS WITHOUT A PROHIBITED GETMAIN. * 33250001 * SINCE THE DISK MAY BE A DOS VOLUME WITH AN INVALID DS4HPCHR, * 33260001 * THE END OF EXTENT IN DS4VTOCE AND DS4DEVDT COULD BE USED TO * 33270001 * CONSTRUCT A VALID HWM. ALTERNATIVELY, THE FILE MASK FOR * 33280001 * NON-CYLINDER VTOCS COULD BE SET TO INHIBIT HEAD SEEKS, * 33290001 * BUT IT WOULD SLOW DOWN OPENS TOO MUCH. * 33292001 * * 33300021 *********************************************************************** 33400021 EJECT 33500021 * 33510001 *********************************************************************** 33520001 * 33530001 * READ THE DSCB DIRECTLY VIA A TTR WITHOUT A VTOC SEARCH 33540001 * IF TT INDICATES DSCB IS ON SAME TRACK AS START OF VTOC. 33550001 * OTHERWISE, HAVE TO FIRST READ THE FORMAT 4 DSCB TO BE 33560001 * SURE THE DSCB TTR IS INSIDE THE VTOC. 33570001 * 33580001 ODA02400 EQU * SA46620 33590001 * 33600001 * CONSTRUCT COMMON PART OF CHANNEL PROGRAMS THAT FOLLOW 33610001 * 33620001 * SEARCH ID EQ 33630001 * TIC *-8 33640001 * 33650001 XC DXCCW1(K56),DXCCW1 CLEAR CCW AND WORK AREA SA46620 33660001 LA RF,DXDAADDR+K3 SEARCH ID ADDRESS SA46620 33670001 ST RF,DXCCW1 INTO CCW1 SA46620 33680001 LA RF,DXCCW1 TIC ADDRESS SA46620 33690001 ST RF,DXCCW2 INTO CCW2 SA46620 33700001 OC DXCCW1(K9),ODA0610K OR IN CMND,FLAGS,LENGTH SA46620 33710001 * 33720001 * GET AND SAVE TTR OF VTOC FOR CALCULATIONS THAT FOLLOW 33730001 * 33740001 CLI UCBID,UCBMAIN CHECK FOR 2321 SA46620 33750001 BE ODA02500 BR IF NOT 2321 SA46620 33760001 * 33770001 USING UCBDCELL,RUCB DEFINE BASE TO DATACELL SA46620 33780001 MVC DXCCW2+K4(K3),UCBDVTOC SAVE 2321 VTOC TTR SA46620 33790001 B ODA02600 BR TO CONTINUE SA46620 33800001 * 33810001 USING UCBOB,RUCB DEFINE BASE TO MAIN UCB SA46620 33820001 ODA02500 MVC DXCCW2+K4(K3),UCBVTOC SAVE VTOC TTR SA46620 33830001 * 33840001 * READ DSCB DIRECTLY IF ON FIRST TRACK OF VTOC 33850001 * 33860001 ODA02600 EQU * SA46620 33870001 CLC DXCCW2+K4(K2),JFCBDSCB DOES DSCB TT EQ VTOC TT SA46620 33880001 BNE ODA03200 BR IF NO TO READ FMT 4 SA46620 33890001 * 33900001 BAL RD,ODA02700 BR TO READ DIRECT SUBR SA46620 33910001 * ONLY RETURNS IF NOT READ 33920001 B ODA03200 BR TO READ FMT 4 DSCB SA46620 33930001 * AND THEN DO FULL VTOC SEARCH 33940001 * 33950001 *********************************************************************** 33960001 * 33970001 * SUBROUTINE TO READ THE DSCB DIRECTLY VIA A TTR WITHOUT 33980001 * A VTOC SEARCH IF THIS IS THE FIRST VOLUME 33990001 * AND THE TTR IS NOT BEFORE THE START OF THE VTOC. 34000001 * 34100021 ODA02700 EQU * SA46620 34200001 CLC DXVOLMT1,JFCBVOLS IS THIS THE FIRST VOLUME 34379800 BCR 7,RD RETURN IF NO SA46620 34400001 * 34500021 CLC JFCBDSCB,DXCCW2+K4 IS TTR ZERO OR TOO LOW SA46620 35500001 BCR 4,RD RETURN IF INVALID SA46620 35700001 * 35800021 L R0,JFCBDSCB-K1 LOAD TTR FOR CONVERSION 35900001 SLL R0,8 MAKE TTR0 36000001 LR RF,RDCB SAVE DCB REGISTER 2 IN 15 36100021 STM RTIOT,RF,DXREG9 SAVE REGISTERS 9-15 36200021 LA R1,DXDEB POINT TO OPEN WORK DEB 36300021 LA RDCB,DXDAADDR ADDR TO STORE MBBCCHHR 36400021 L RF,CVTPTR GET CVT ADDR 36500021 L RF,CVTPCNVT-CVT(,RF) ADDR OF IECPCNVT ROUTINE 36600021 BALR RET,RF BR TO CONVERT TTR TO MBBCCHHR 36700021 LTR RF,RF TEST IECPCNVT RETURN CD SA46620 36710001 LM RTIOT,RF,DXREG9 RESTORE REGISTERS 9-15 36800021 LR RDCB,RF RESTORE DCB REGISTER 2 FROM 15 36900021 BNZ ODA03000 BR IF CONVERSION ERROR SA46620 36910001 CLC DXDAADDR+K3(K4),DXDEBECC CCHH BEYOND END VTOC SA46620 36920001 BH ODA03000 BR IF YES TO ZERO TTR SA46620 36930001 * 37000021 * CONSTRUCT CHANNEL PROGRAM TO READ DSCB DIRECTLY 37100021 * 37200021 * SEARCH ID EQ 37300021 * TIC *-8 37400021 * SEARCH KEY EQ 37500021 * NOP (NO CHAIN BIT, SLI) 37600021 * READ DATA (DSCB) 37700021 * 37800021 XC DXCCW3(K24),DXCCW3 CLEAR CCW AREA SA46620 37900001 LA RF,JFCBDSNM DSNAME KEY ADDRESS 38400021 ST RF,DXCCW3 38500021 LA RF,DXDSCB DSCB INPUT BUFFER ADDRESS 38600021 ST RF,DXCCW5 38700021 OC DXCCW3(K24),ODA0640K OR IN CMND,FLAGS,LENGTH SA46620 38800001 * 38900021 EXCP DXIOB READ DSCB VIA EXCP 39000021 * 39100021 IECRES WAIT WAIT FOR DSCB READ TO COMPLETE 39200021 * 39300021 TM DXECB,ECBNOERR CHECK FOR IO ERROR 39400021 BZ ODA03000 BR IF YES TO ZERO TTR SA46620 39500001 * 39600021 LA RF,DXCCW6 TEST IF CHANNEL PROGRAM 39700021 L R1,IOBCOMAD TERMINATED AFTER READ CCW 39800021 LA R1,0(R1) BY EXAMINING CSW STORED 39900021 CR R1,RF IN IOB 40000021 BNE ODA03000 BR IF NO TO ZERO TTR SA46620 40100001 * 40200021 MVC DXCCW7(K5),DXDAADDR+K3 SAVE CCHHR OF DSCB FOR UPDATE 40300021 * 40400021 CLI DSCFMTID,C'1' IS THIS FORMAT 1 DSCB SA46620 40410001 BNE ODA04700 (ELSE 4), BR IF NO TO SA46620 40420001 * SKIP FMT 1 PROCESSING SA46620 40430001 * 40440001 LA RET,K8 INDICATE DSCB READ COMPLETE 40500021 B ODA03800 BR TO XCTL TO NEXT MODULE 40600021 * 40610001 ODA03000 EQU * SA46620 40620001 XC JFCBDSCB,JFCBDSCB ZERO INVALID DSCB TTR SA46620 40630001 BR RD RETURN SA46620 40640001 * 40700021 *********************************************************************** 42000021 * 42100021 * READ FORMAT 4 DSCB FROM VTOC TO GET VTOC EXTENT SIZE 42200001 * 42300021 * CONVERT VTOC TTR TO MBBCCHHR FORM 42400001 * 42500021 ODA03200 EQU * 42600021 L R0,DXCCW2+K4 GET SAVED VTOC TTR0 SA46620 43600001 LR RF,RDCB SAVE DCB REGISTER 2 IN 15 44300021 STM RTIOT,RF,DXREG9 SAVE REGISTERS 9-15 44400021 L RF,CVTPTR GET ADDR OF CVT 44500021 LA R1,DXDEB POINT TO OPEN WORK DEB 44600021 LA RDCB,DXDAADDR POINT TO MBBCCHHR RESULT FIELD 44700021 L RF,CVTPCNVT-CVT(,RF) ADDR OF IECPCNVT ROUTINE 44800021 BALR RET,RF BR TO CONVERT TTR TO MBBCCHHR 44900021 LM RTIOT,RF,DXREG9 RESTORE REGISTERS 9-15 45000021 LR RDCB,RF RESTORE DCB REGISTER 2 FROM 15 45100021 MVC DXCCW6,DXDAADDR SAVE VTOC ADDR FOR SA46620 45110001 * FULL VTOC SEARCH 45120001 * 45130001 * CONSTRUCT CHANNEL PROGRAM TO READ FORMAT 4 DSCB 45140001 * 45150001 * SEARCH ID EQ 45160001 * TIC *-8 45170001 * READ DATA 45180001 * 45190001 XC DXCCW3,DXCCW3 CLEAR CCW AREA SA46620 45200001 LA RF,DXDSCB DSCB 4 INPUT BUFFR ADDR SA46620 45210001 ST RF,DXCCW3 INTO CCW3 SA46620 45220001 OC DXCCW3,ODA0650K OR IN CMND,FLAGS,LENGTH SA46620 45230001 * 45240001 EXCP DXIOB READ FORMAT 4 DSCB SA46620 45250001 * 45260001 IECRES WAIT WAIT FOR READ COMPLETE SA46620 45270001 * 45280001 TM DXECB,ECBCOD7F CHECK FOR I/O ERROR SA46620 45290001 BO ODA03600 BR IF NO ERROR SA46620 45300001 * 45310001 OABD224A EQU 224 ERR READING FMT 4 DSCB SA46620 45320001 DMABCOND OABD224A,ODA0920X XCTL TO PROB DET /ABEND SA46620 45330001 * 45340001 ODA03600 EQU * SA46620 45350001 MVC DXCCW7(K5),DXDAADDR+K3 SAVE CCHHR OF FMT4 DSCB SA46620 45360001 * 45370001 CLI JFCBDSNM,X'04' IS USER DSN=FMT 4 DSCB SA46620 45380001 BNE ODA03700 BR IF NO SA46620 45385001 CLC JFCBDSNM+K1(K43),JFCBDSNM IS WHOLE DSN=X'04'S SA46620 45390001 BE ODA04700 BR IF YES TO MERGE MOD SA46620 45395001 * 45400001 ODA03700 EQU * SA46620 45405001 MVC DXDEBECC(K4),DSCUPPLM END VTOC CCHH TO WK DEB SA46620 45410001 * 45420001 *********************************************************************** 45430001 * 45440001 * READ THE FORMAT 1 DSCB DIRECTLY VIA A TTR WITHOUT A VTOC SEARCH 45450001 * IF DSCB TTR SPECIFIED. (SUBROUTINE WILL CHECK FOR INSIDE VTOC.) 45460001 * 45470001 BAL RD,ODA02700 BR TO READ DIRECT SUBR SA46620 45480001 * ONLY RETURNS IF NOT READ 45490001 * 45500001 *********************************************************************** 45510001 * 45520001 * READ FORMAT 1 DSCB BY FULL VTOC SEARCH. 45530001 * 45540001 MVC DXDAADDR,DXCCW6 RESTORE SAVED VTOC ADDR SA46620 45550001 * 45560001 * CONSTRUCT CHANNEL PROGRAM TO READ FORMAT 1 DSCB 45570001 * 45580001 * SEARCH ID EQ 45590001 * TIC *-8 45600021 * READ COUNT MT 45700021 * SEARCH KEY EQ 45800021 * TIC *-16 45900021 * READ DATA (DSCB) 46000021 * 46100021 XC DXCCW3(K32),DXCCW3 CLEAR CCW AREA SA46620 46200001 LA RF,DXCCW7 SAVE COUNT ADDRESS 46700021 ST RF,DXCCW3 46800021 LA RF,JFCBDSNM DSNAME KEY ADDRESS 46900021 ST RF,DXCCW4 47000021 LA RF,DXCCW3 TIC ADDRESS 47100021 ST RF,DXCCW5 47200021 LA RF,DXDSCB DSCB INPUT BUFFER ADDRESS 47300021 ST RF,DXCCW6 47400021 OC DXCCW3(K32),ODA0620K OR IN CMND,FLAGS,LENGTH SA46620 47500001 * 47600021 EXCP DXIOB READ DSCB VIA EXCP 47700021 * 47800021 * INDICATE FULL VTOC DSCB READ 47900021 SR RET,RET IS IN PROCESS 48000021 * 48100021 *********************************************************************** 48200021 * 48300021 * XCTL TO NEXT LOAD 48400021 * 48500021 ODA03800 EQU * 48600021 IECRES XCTL,ODA0960X,(RET) XCTL TO NEXT MODULE 48700021 * 48800021 ODA04000 EQU * 48900021 SR RET,RET SELECT UNIT, MOUNT MSG,VOL VER 49000021 B ODA04600 BR TO XCTL 49100021 ODA04200 EQU * 49200021 LA RET,K4 MOUNT MESSAGE, VOLUME VERIFY 49300021 B ODA04600 BR TO XCTL 49400021 ODA04400 EQU * 49500021 LA RET,K8 VOLUME VERIFY 49600021 ODA04600 EQU * 49700021 LA RF,TIOEFSRT-K1 POINT TO FIRST UCB ADDR 49800021 ST RF,DXCCW2+K4 IN TIOT DD ENTRY FOR MOUNT 49900021 MVC DXRETMOD,ODA0940X IDTTR FOR RETURN 50000021 * 50100021 IECRES XCTL,ODA0980X,(RET) XCTL TO DA MOUNT MODULE 50200021 * 50210001 ODA04700 EQU * SA46620 50220001 IECRES XCTL,ODA0990X,0 XCTL TO COMMON MERGE SA46620 50230001 * 50300021 *********************************************************************** 50400021 * 50500021 * CONSTANTS 50600021 * 50700021 ODA0600K DC C'SCRTCH' NONSPECIFIC VOL SER NO. 50800021 * 50900021 * CCW'S COMMON TO FOLLOWING CHANNEL PROGRAMS. 50910001 ODA0610K DC X'3100000040000005' SEARCH ID EQ SA46620 50920001 DC X'08' TIC *-8 SA46620 50930001 * 50940001 * CCW'S TO READ FORMAT 1 OR 4 DSCB AND SAVE CCHHR OF RECORD. 51000021 * DC X'3100000040000005' SEARCH ID EQ SA46620 51100001 * DC X'0800000000000000' TIC *-8 SA46620 51200001 ODA0620K DC X'9200000040000008' READ COUNT MT SA46620 51300001 DC X'290000004000002C' SEARCH KEY EQ 51400021 DC X'0800000000000000' TIC *-16 51500021 DC X'0600000000000060' READ DATA (DSCB) 51600021 * 51700021 * CCW'S TO READ FORMAT 1 OR 4 DSCB DIRECTLY. 51800021 * DC X'3100000040000005' SEARCH ID EQ SA46620 51900001 * DC X'0800000000000000' TIC *-8 SA46620 52000001 ODA0640K DC X'290000004000002C' SEARCH KEY EQ SA46620 52100001 DC X'0300000020000001' NOP (NO CHAIN, SLI) 52200021 ODA0650K DC X'0600000000000060' READ DATA (DSCB) SA46620 52300001 * 52400021 ODA0660K DC X'00000000' START OF EXTENT CCHH SA46620 52500001 DC X'FFFFFFFF' END OF EXTENT CCHH SA46620 52550001 DC X'7FFF' MAX NO OF TRACKS IN EXT SA46620 52560001 * 52600021 AIF ('&LIB' NE 'LIB1').LIB24E7 52650000 ODA0680K DC X'FF' MASK TO ENABLE INTERRUPTS 52700021 * 52800021 .LIB24E7 ANOP 52850000 XCTLTABL ID=(ODA0920X,0P,ODA0940X,4E,ODA0960X,5A, SA46620X53300001 ODA0980X,4A,ODA0990X,6J) SA46620 53310001 * 53400021 IECDSECS EXPAND=YES EXPAND DESIRED DSECTS HERE 53500021 * 53600021 END 53700021 ./ ADD SSI=00011034,NAME=IFG0194F,SOURCE=0 TITLE 'IFG0194F - OPEN TAPE MOUNT VERIFICATION' 00200003 COPY LCGASMSW 00250000 IFG0194F CSECT 00800021 *********************************************************************** 01000021 * 01200021 * 01400021 * RELEASE 25 DELETIONS/CHANGES * 01600021 * RELEASE 24 DELETIONS/CHANGES * 01800021 * RELEASE 23 DELETIONS/CHANGES * 02000021 * RELEASE 22 DELETIONS/CHANGES * 02010002 * RELEASE 21.8 DELETIONS/CHANGES * 02160002 *0000529000-531000 SA67187 02160421 *0000475820-476300,522000-524500 SA62814 02161002 *0000352000-358000 SA62401 02170003 *0000002000,320000,384000-388000,476400,496500,564000,634000, S21940 02180003 *0000648000-650000,684000,700000-708000,714000-716000 S21940 02185003 *0000431000 SA66753 02195021 * RELEASE 21.7 DELETIONS/CHANGES * 02200201 *0000474600-504000,590000,592000 SA58669 02200401 *0000168000-170000,282000,434000-464000,472000-540000, SA49476 02200501 *0000548000-602000,626000,636000, SA49476 02200601 *0000640000-642000,672000-680000,710000 SA49476 02200801 *0000428000-432000 SA54607 02201001 *0000542000-546000 SA54585 02201201 *0000394000-400000,404000,406000,416000-422000,466000-470000 SA53458 02201401 * RELEASE 21 DELETIONS/CHANGES * 02400021 *0000 M0118 02450021 *0000082000-084000,268000,272000,526000-530000,714000 M0117 02500021 *0000 A39784 02550021 * * 02600001 * STATUS CHANGE LEVEL 000 * 02800021 * * 03000021 * FUNCTION - * 03200021 * THIS MODULE CONTAINS THE FUNCTION(S) OR PART(S) OF FUNCTION(S)-- * 03400021 * OPEN TAPE MOUNT VERIFICATION FUNCTION. * 03600021 * REFER TO THE FOLLOWING 'FUNCTION PROLOG(S)' FOR DETAILS. * 03800021 * * 04000021 * ENTRY POINTS - * 04200021 * IFG0194F - ENTRY POINT VIA THE RESIDENT ROUTINE XCTL * 04400021 * FROM ONE OF THE FOLLOWING-- * 04600021 * IFG0193B - SPECIFIC VOLUME REQUEST. * 04800021 * IFG0194D - NON-SPECIFIC OR VOLUME REFERENCE REQUEST. * 05000021 * IFG0199E - RECOVERY ATTEMPT SPECIFIED BY THE USER. * 05200021 * * 05400021 * INPUT - * 05600021 * REFER TO THE FOLLOWING 'FUNCTION PROLOG(S)'. * 05800021 * * 06000021 * OUTPUT - * 06200021 * REFER TO THE FOLLOWING 'FUNCTION PROLOG(S)'. * 06400021 * * 06600021 * EXTERNAL REFERENCES - * 06800021 * IFG019RA - OPEN/CLOSE/EOV RESIDENT ROUTINE FOR XCTL AND * 07000021 * WAIT. * 07200021 * REFER TO THE FOLLOWING 'FUNCTION PROLOG(S)'. * 07400021 * * 07600021 * EXITS, NORMAL - * 07800021 * EXIT VIA THE RESIDENT ROUTINE XCTL TO ONE OF THE FOLLOWING-- * 08000021 * IFG0194G - THE REQUESTED VOLUME IS NOT MOUNTED. * 08100021 * IFG0194H - THE REQUESTED VOLUME IS MOUNTED, FILE PROTECTION * 08200021 * CHECK REQUIRED FOR ANY FORM OF OUTPUT. * 08300021 * IFG0194I - THE REQUESTED VOLUME IS MOUNTED, INPUT ONLY. * 08400021 * REFER TO THE FOLLOWING 'FUNCTION PROLOG(S)'. * 08600021 * * 08800021 * EXITS, ERROR - * 09000021 * EXIT IS TO THE PROBLEM DETERMINATION MODULE IFG0190P, IF AN * 09200021 * ABEND SITUATION OCCURS IN THIS MODULE. REFER TO THE FOLLOWING * 09400021 * 'FUNCTION PROLOG(S)'. * 09600021 * * 09800021 * TABLES/WORK AREAS - * 10000021 * REFER TO THE FOLLOWING 'FUNCTION PROLOG(S)'. * 10200021 * * 10400021 * ATTRIBUTES - * 10600021 * REENTRANT, REFRESHABLE, READ-ONLY, ENABLED, PRIVILEGED * 10800021 * * 11000021 * CHARACTER CODE DEPENDENCY - * 11200021 * CLASS ONE CHARACTER CODE DEPENDENCY - THE EBCDIC CHARACTER CODE * 11400021 * WAS USED FOR ASSEMBLY. THE MODULE MUST BE REASSEMBLED IF A * 11600021 * DIFFERENT CHARACTER SET IS USED FOR EXECUTION. * 11800021 * * 12000021 * NOTES - * 12200021 * REFER TO THE FOLLOWING 'FUNCTION PROLOG(S)'. * 12400021 * * 12600021 *********************************************************************** 12800021 EJECT 13000021 *********************************************************************** 13200021 * * 13400021 * FUNCTION PROLOG * 13600021 * * 13800021 *********************************************************************** 14000021 * * 14200021 * FUNCTION NAME - * 14400021 * OPEN TAPE MOUNT VERIFICATION FUNCTION. * 14600021 * * 14800021 * (STATUS) - * 15000021 * NOT APPLICABLE * 15200021 * * 15400021 * FUNCTION - * 15600021 * INSURES MOUNTING OF TAPE VOLUMES. TAPE VOLUME MOUNTING * 15800021 * IS BASED ON THE DISPOSITION OF THE MOUNT BIT (HI ORDER BIT- * 16000021 * OFFSET 35 IN TAPE UCB) AND THE CONTENTS OF THE VOLUME SERIAL * 16200021 * FIELD IN THE TAPE UCB (OFFSET 28). * 16400021 * IF THE MOUNT BIT IS ON,A VOLUME IS MOUNTED OR BEING MOUNTED AND * 16600021 * AWAITING LABEL VERIFICATION. * 16800001 * IF THE MOUNT BIT IS OFF,NO MOUNT MESSAGE HAS BEEN ISSUED. A CHECK* 17200021 * IS MADE TO DETERMINE IF THE CORRECT VOLUME IS MOUNTED (FIRST * 17400021 * VOLUME SERIAL IN THE JFCB, LAST FOR RDBACK, AGAINST THE VOLUME * 17600021 * SERIAL IN THE UCB). IF THE CORRECT VOLUME IS MOUNTED, ITS TIOT- * 17800021 * UCB ENTRY IS EXCHANGED WITH THE FIRST TIOT-UCB ENTRY AND THE * 18000021 * LABEL IS PRESUMED TO BE PREVIOUSLY VERIFIED. IF THE CORRECT * 18200021 * VOLUME IS NOT MOUNTED, A MOUNT MESSAGE WILL BE SET UP FOR THE * 18400021 * FIRST AVAILABLE UNIT, AND A DISMOUNT OR RETAIN MESSAGE WILL BE * 18600021 * ISSUED IF THE DRIVE CONTAINED A VOLUME. AN EXIT WILL BE TAKEN TO * 18800021 * THE OPEN TAPE VOLUME MOUNTING FUNCTION. * 19000021 * * 19200021 * ENTRY POINTS - * 19400021 * ENTERED FROM THE FOLLOWING-- * 19600021 * OPEN TAPE INITIAL COMMON FUNCTION FOR SPECIFIC REQUESTS. * 19800021 * OPEN TAPE VOLUME REFERENCE FUNCTION FOR NON-SPECIFIC OR * 20000021 * VOLUME REFERENCE REQUESTS. * 20200021 * REFER TO THE PRECEEDING MODULE PROLOG. * 20400021 * * 20600021 * INPUT - * 20800021 * A POINTER TO EACH OF THE FOLLOWING-- * 21000021 * CURRENT PARAMETER LIST ENTRY. * 21200021 * DD ENTRY IN THE TIOT. * 21400021 * WTG TABLE. * 21600021 * CURRENT WTG TABLE ENTRY. * 21800021 * DCB. * 22000021 * OPEN WORK AREA. * 22200021 * RESIDENT ROUTINE. * 22400021 * UCB * 22600021 * * 22800021 * OUTPUT - * 23000021 * THE UCB ADDRESS HAS BEEN SET IN THE FIRST UCB ENTRY IN THE * 23200021 * TIOT ENTRY. * 23400021 * THIS MODULE WILL ISSUE THE FOLLOWING MESSAGES IF IT IS DISCOVERED* 23600021 * THAT THE WRONG VOLUME IS MOUNTED-- * 23800021 * IEC104E D - THE VOLUME IS PUBLIC AND NOT PASSED. * 24000021 * IEC106E R - THE VOLUME IS PRIVATE AND/OR PASSED. * 24200021 * IF SCHEDULER HAS ISSUED ANY MESSAGES,A PARAMETER LIST WILL BE * 24400021 * CONSTRUCTED,CONTAINING THE IDS OF THE MESSAGES TO BE DELETED. * 24600021 * A MOUNT MESSAGE, IEC101A M, HAS BEEN CONSTRUCTED IN THE WORK * 24800021 * AREA WHEN REQUIRED. * 25000021 * A MOUNTED VOLUME WILL BE PASSED TO THE LABEL VERIFICATION MODULE * 25200021 * FOR EACH TAPE DCB IN THE OPEN PARAMETER LIST. * 25400021 * * 25600021 * EXTERNAL REFERENCES - * 25800021 * REFER TO THE PRECEEDING MODULE PROLOG. * 26000021 * * 26200021 * EXITS, NORMAL - * 26400021 * OPEN TAPE VOLUME MOUNTING FUNCTION WHEN THE REQUESTED * 26600021 * VOLUME IS NOT MOUNTED. * 26800021 * OPEN TAPE VOLUME VERIFICATION FUNCTION WHEN THE REQUESTED * 27000021 * VOLUME IS MOUNTED AND A FILE PROTECTION CHECK IS REQUIRED FOR * 27080021 * ANY FORM OF OUTPUT. * 27160021 * OPEN TAPE FINAL COMMON FUNCTION WHEN THE REQUESTED VOLUME IS * 27240021 * MOUNTED, FOR INPUT ONLY. * 27320021 * * 27400021 * EXITS, ERROR - * 27600021 * REFER TO THE PRECEEDING MODULE PROLOG. * 27800021 * EXIT IS MADE WITH THE FOLLOWING INTERNAL CODE-- * 28000021 * 1 - 413-04 ABEND - NO UNIT AVAILABLE TO MOUNT VOLUME. * 28200001 * 6 - 513-04 ABEND - TAPE VOLUME ALREADY IN USE SA49476 28200201 * * 28400021 * TABLES/WORK AREAS - * 28600021 * THE OPEN, CLOSE, OR EOV WORK AREA AND THE WHERE-TO-GO (WTG) * 28800021 * TABLE ARE DESCRIBED BY THE DSECTS AT THE END OF THE LISTING. * 29000021 * * 29200021 * ATTRIBUTES - * 29400021 * REFER TO THE PRECEEDING MODULE PROLOG. * 29600021 * * 29800021 * CHARACTER CODE DEPENDENCY - * 30000021 * REFER TO THE PRECEEDING MODULE PROLOG. * 30200021 * * 30400021 * NOTES - * 30600021 * * 30800021 *********************************************************************** 31000021 EJECT 31200021 * * 31400021 USING FORCORE,RCORE WORK AREA 31600021 USING TIOENTRY,RTIOT TIOT ENTRY 31800021 * USING IHADCB,RDCB DCB 32000003 USING UCBOB,RUCB UCB 32200021 BALR RBASE,0 SET BASE REGISTER 32400021 USING *,RBASE 32600021 * 32800021 B OTA06100(RET) GO TO PROPER ENTRY 33000021 OTA06100 EQU * 33200021 B OTA06200 NORMAL ENTRY 33400021 * 33600021 * THIS IS THE ENTRY WHEN THE USER, IN HIS ABEND EXIT ROUTINE, 33800021 * HAS SUPPLIED A NEW VOLUME SERIAL NUMBER AND RETURNED A CODE, 34000021 * TO PROBLEM DETERMINATION, SPECIFING THAT AN ATTEMPT TO 34200021 * RECOVER BE MADE. 34400021 * NECESSARY CLEANUP IS PERFORMED TO ALLOW THE DCB TO BE 34600021 * REPROCESSED. 34800021 * 35000021 CLI DXREG0+K3,K15 TEST CODE 8,11,12,13,14 SA62401 35600003 BL OTA06200 BRANCH IF ANY SA62401 35800003 CLC JFCBVOLS,SCRATCH SCRATCH REQUEST - CODE 15 OR 16 36000021 BNE OTA06150 NO, BRANCH 36200021 MVI JFCBVOLS,BLANK SET JFCB VOL SERIAL TO BLANK 36400021 MVC JFCBVOLS+K1(K5),JFCBVOLS BLANK WHOLE FIELD 36600021 OTA06150 EQU * 36800021 MVI UCBDMCT,K0 ZERO DM COUNT IN UCB 37000021 * 37200021 OTA06200 EQU * 37400021 * 37600021 * BEGIN DCB PROCESSING 37800021 NI JFCBMASK+K5,X'FF'-LBLERR ZERO OUT LABEL TYPE ONLY 38000021 * 38200021 * IF VOL=SER=BLANKS, SET TO 'SCRTCH'. 39000021 * AT THIS POINT IT SHOULD ONLY BE BLANKS IF NON-SPECIFIC 39200021 * VOLUME REQUEST AND SYSOUT. SYSOUT IS ASSUMED NOT TO BE SA53458 39400001 * UNIT=AFF. SA53458 40000001 * 40200021 CLI DXVOLMT1,BLANK IS VOL=SER=BLANKS 40800021 BNE OTA06400 BR IF NOT BLANK 41000021 * 41200021 MVC DXVOLMT1,SCRATCH SET VOL=SER='SCRTCH' 41400021 * 42400021 OTA06400 EQU * SA53458 42600001 * SA53458 42650001 * IF THIS IS A SCRATCH REQUEST AND DISPOSITION IS MOD, SA54607 42700001 * CHANGE THE DISPOSITION TO NEW FOR THE DURATION OF OPEN TO SA54607 42750001 * ALLOW THE USE OF A SINGLE DD STATEMENT. SA54607 42800001 CLC DXVOLMT1,SCRATCH SCRATCH REQUEST SA54607 42850001 BNE OTA06425 BRANCH IF NO SA54607 42900001 TM JFCBIND2,JFCOLD IS DISP = MOD SA54607 42950001 BO OTA06425 BRANCH IF NO SA54607 43000001 OI JFCBIND2,JFCNEW CHANGE MOD TO NEW SA54607 43050001 OI JFCBFLG2,JFCMODNW INDICATE MOD HAS BEEN SA66753 43100021 * CHANGED TO NEW SO THAT SA54607 43150001 * IT WILL BE CHANGED BACK SA54607 43200001 OTA06425 EQU * SA49476 43250001 * 43300001 EJECT SA49476 43310001 *************************************************************** SA49476 43350001 * SA49476 43400001 * BEGIN MOUNT VERIFICATION AT THIS POINT. SA49476 43450001 * SA49476 43500001 * FOR SPECIFIC REQUESTS, IF THE CORRECT VOLUME HAS NOT BEEN SA49476 43550001 * MOUNTED WITH AN ACTION MOUNT, A MOUNT FOR THE CORRECT VOLUME SA49476 43600001 * WILL BE ISSUED. FOR OTHER THAN SL AND AL REQUESTS, IF A SA49476 43650001 * MOUNT HAS BEEN ISSUED FOR THE WRONG VOLUME, THE VOLUME SA49476 43700001 * WILL BE MOUNTED BEFORE IT IS UNLOADED AND A MOUNT ISSUED SA49476 43750001 * FOR THE CORRECT VOLUME TO GUARD AGAINST OPERATOR SA49476 43800001 * CONFUSION, RESULTING IN ACCEPTING THE FIRST TAPE IN PLACE OF SA49476 43850201 * THE SECOND. FOR SL AND AL, THE CORRECT MOUNT SA49476 43850401 * WILL BE ISSUED WITHOUT A DEMOUNT IF THE UNIT IS STILL NOT SA49476 43900001 * READY. IF NO IMMEDIATE ACTION MESSAGE HAS BEEN ISSUED, AND SA49476 43950001 * THE UNIT IS NOT READY, AN IMMEDIATE ACTION MOUNT MESSAGE SA49476 44000001 * WILL BE ISSUED. SA49476 44050001 * SA49476 44100001 * FOR SCRATCH REQUESTS, FIRST PREFERENCE WILL BE GIVEN TO A SA49476 44150001 * UNIT FOR WHICH A SCRATCH MOUNT MESSAGE HAS BEEN ISSUED. SA49476 44200001 * A UNIT=AFF SCRATCH REQUEST WILL ACCEPT A SCRATCH REQUEST SA49476 44250001 * ISSUED FOR THE ORIGINAL DD (I.E. SCRATCH TAPES ARE ASSUMED SA49476 44300001 * EQUIVALANT AT THIS POINT, AND DIFFERENCES IN LABEL TYPE SA49476 44350001 * WILL BE CAUGHT LATER, IN THE EVENT THEY SHOULD OCCUR). SA49476 44400001 * IF NO MOUNT MESSAGE HAS BEEN ISSUED, A SEARCH WILL BE MADE SA49476 44450001 * FOR A SCRATCH TAPE LEFT ON A DRIVE. SA49476 44500001 * SA49476 44700001 * AT THIS POINT DXVOLMT1 EITHER HAS 'SCRTCH' OR A SPECIFIC SA49476 44750001 * VOL SER. IF THERE WAS AN EVENTUAL ACTION MOUNT ISSUED SA49476 44800001 * WITH A MATCHING FFTTR, THE VOLUME REFERENCE FUNCTION SA49476 44850001 * HAS ZEROED UCBVOLI AND SWAPPED UCBS, SO THAT THE RIGHT SA49476 44900001 * UCB IS THE FIRST ONE. (IN THIS CASE THE MOUNT BIT SA49476 44950001 * MUST BE ON.) SA49476 44960001 * SA49476 45000001 *************************************************************** SA49476 45050001 * SA49476 45100001 * INITIALIZE REGISTERS FOR BXLE USED IN UCB SEARCHES SA49476 45150001 * R0 - INCREMENT, R1 - LAST ENTRY COMPARISON, RC - CURRENT SA49476 45200001 * ENTRY POINTER. SA49476 45250001 LA RC,TIOESTTB SET UP UCB POINTER IN TIOT 45300001 SR R1,R1 CLEAR REGISTER 45350001 IC R1,TIOELNGH PICK UP LENGTH OF TIOT ENTRY 45400001 AR R1,RTIOT POINT TO END OF TIOT ENTRY 45450001 LA R0,K4 SET UP INCREMENT FOR BXLE 45500001 SR R1,R0 SET UP COMPARAND FOR BXLE 45550001 * MISCELLANEOUS INITIALIZATION SA49476 45600001 MVC DXCCW1,REWCCW4F MOVE IN REW CCW IN CASE SA49476 45650001 * IT IS NEEDED SA49476 45700001 MVC MSGLSTSZ(K18),OPAMSG MOVE IN SKELETON MESSAGE 45750001 * IN CASE IT IS NEEDED SA49476 45800001 SPACE 3 SA49476 45810001 * SA49476 45850001 * DETERMINE WHERE TO BEGIN SEARCH OR WHETHER SEARCH IS NEEDED. SA49476 45900001 * SA49476 45950001 CLC DXVOLMT1,SCRATCH SCRATCH REQUEST SA49476 46000001 BNE OTA06600 BR IF NO TO SEARCH FOR SA49476 46050001 * SPECIFIC VOL MOUNTED SA49476 46100001 CLI UCBVOLI,CHAR00 IS UCBVOLI = 0 SA49476 46150001 BNE OTA06550 BR IF NO TO SEARCH SA49476 46200001 TM UCBDMCT,UCBMOUNT IS MOUNT BIT ON SA49476 46250001 BZ OTA06550 BR IF NO TO SEARCH SA49476 46300001 * IN THIS SITUATION, A MOUNT SCRATCH HAS BEEN ISSUED, AND THE SA49476 46302001 * VOLUME REFERENCE FUNCTION HAS ALREADY SWAPPED UCBS, SA49476 46304001 * THEREFORE THE TAPE WILL BE ACCEPTED IF IT IS NOT ALREADY SA49476 46306001 * IN USE. SA49476 46308001 TM UCBDMCT,UCBDMC TAPE IN USE SA49476 46310001 BZ OTA07000 BR IF NO TO ACCEPT VOL SA49476 46312001 TM UCBWGT,UCBOUT SYSOUT SA49476 46314001 BO OTA07000 BR IF YES TO ACCEPT VOL SA49476 46316001 * (WILL CATCH SYSOUT SA49476 46318001 * LATER IN TAPE FINAL SA49476 46320001 * COMMON FUNCTION) SA49476 46322001 B OTA06775 BR TO 513 ABEND SA49476 46324001 SPACE 3 SA49476 47200001 * SA49476 47250001 * SEARCH FOR UNIT WITH A TAPE OR MOUNT SCRATCH ISSUED, SA49476 47300001 * FOR A SCRATCH REQUEST SA49476 47350001 * SA49476 47400001 OTA06550 EQU * SA49476 47450001 L RUCB,0(,RC) UCB ADDR FOR THIS ENTRY SA49476 47500001 TM UCBVOLI,VIRTUAL NO TAPE ON UNIT OR MNT SA49476 47560001 * SCRATCH ISSUED SA49476 47570001 BZ OTA06575 BR IF NO TAPE ON UNIT SA49476 47580001 TM JFCFLGS1,JFCBUAFF UNIT=AFF SA53458 47633001 BO OTA06575 BR IF YES, CANNOT USE, SA53458 47633501 * UNIT=AFF SCRTCH REQUEST SA53458 47634501 * MUST DEMOUNT ANY TAPE SA53458 47635001 * FOUND UP TO AVOID USING SA53458 47635501 * THE USER'S PREVIOUS SA53458 47636001 * SPECIFIC TAPE AS A SA53458 47636501 * SCRATCH TAPE. SA53458 47637001 TM UCBDMCT,UCBDMC TAPE IN USE SA49476 47650001 BZ OTA06800 BR IF NO TO ACCEPT TAPE SA49476 47670001 OTA06575 EQU * SA49476 47900001 BXLE RC,R0,OTA06550 LOOP IF MORE UNITS SA49476 47950001 B OTA06625 GO LOOK FOR EMPTY UNIT SA49476 48000001 SPACE 3 SA49476 48010001 * SA49476 48050001 * SEARCH FOR CORRECT VOLUME MOUNTED (SPECIFIC REQUEST ONLY) SA49476 48100001 * SA49476 48150001 OTA06600 EQU * SA49476 48250001 L RUCB,0(,RC) UCB ADDR FOR THIS ENTRY SA49476 48300001 CLC DXVOLMT1,UCBVOLI CORRECT VOL ON UNIT SA49476 48350001 BE OTA06800 BR IF YES, ACCEPT UNIT SA49476 48400001 BXLE RC,R0,OTA06600 LOOP IF MORE UNITS SA49476 48450001 SPACE 3 SA49476 48460001 * SA49476 48500001 * SEARCH FOR EMPTY UNIT SA49476 48550001 * SA49476 48600001 OTA06625 EQU * SA49476 48700001 LA RC,TIOESTTB ADDR OF FIRST ENTRY SA49476 48750001 OTA06650 EQU * SA49476 48800001 L RUCB,0(,RC) UCB ADDR FOR THIS ENTRY SA49476 48850001 CLI UCBVOLI,CHAR00 EMPTY UNIT SA49476 48900001 BNE OTA06675 BR IF NO TO LOOP SA49476 48950001 TM UCBSTAT,UCBRESV+UCBPRES+UCBSYSR SA49476 49000001 * RESV/SYSRES/PERM RES SA49476 49050001 BNZ OTA06675 BR IF ANY TO LOOP SA49476 49100001 TM UCBDMCT,UCBDMC TAPE IN USE SA49476 49150001 BZ OTA06800 BR IF NO, ACCEPT UNIT SA49476 49300001 OTA06675 EQU * SA49476 49350001 BXLE RC,R0,OTA06650 LOOP IF MORE UNITS SA49476 49400001 SPACE 3 SA49476 49410001 * SA49476 49450001 * SEARCH FOR ANY DEMOUNTABLE UNIT SA49476 49500001 * SA49476 49550001 LA RC,TIOESTTB ADDR OF FIRST ENTRY SA49476 49700001 OTA06725 EQU * SA49476 49750001 L RUCB,0(,RC) UCB ADDR FOR THIS ENTRY SA49476 49800001 TM UCBSTAT,UCBRESV+UCBPRES+UCBSYSR SA49476 49850001 * RESV/SYSRES/PERM RES SA49476 49900001 BNZ OTA06750 BR IF ANY TO LOOP SA49476 49950001 TM UCBDMCT,UCBDMC UNIT IN USE SA49476 50000001 BZ OTA06800 BR IF NO, ACCEPT UNIT SA49476 50050001 OTA06750 EQU * SA49476 50100001 BXLE RC,R0,OTA06725 LOOP IF MORE UNITS SA49476 50150001 * SA49476 50200001 * NO UNIT IS AVAILABLE, ISSUE ABEND SA49476 50250001 * SA49476 50300001 OABD001 EQU 1 INTERNAL ABEND CODE SA49476 50310001 LA R0,OABD001 NO UNIT AVAILABLE SA49476 50350001 B OTA06780 BR TO ISSUE ABEND SA49476 50352001 OTA06775 EQU * SA49476 50400001 OABD006 EQU 6 INTERNAL ABEND CODE SA49476 50410001 LA R0,OABD006 TAPE ALREADY IN USE SA49476 50420001 OTA06780 EQU * SA49476 50430001 DMABCOND (0),ID4F0P 50450001 EJECT SA49476 50460001 *************************************************************** SA49476 50470001 * SA49476 50500001 * AT THIS POINT A UNIT HAS BEEN PICKED SA49476 50550001 * SA49476 50600001 *************************************************************** SA49476 50610001 * SA49476 50620001 * SWAP UCBS SA49476 50650001 * SA49476 50660001 OTA06800 EQU * SA49476 50700001 MVC 0(K4,RC),TIOESTTB MOVE FIRST UCB TO CURRENT 50800001 ST RUCB,TIOESTTB MOVE CURRENT UCB TO FIRST 50850001 MVC DXDEBUCB+K1(K3),TIOEFSRT MOVE UCB ADDRESS INTO DEB 50900001 SPACE 3 SA49476 50910001 * SA49476 50950001 * DETERMINE PROCESSING NEEDED, POSSIBILITIES ARE-- SA49476 51000001 * ISSUE MOUNT MESSAGE, REJECT VOLUME, ACCEPT VOLUME, SA49476 51050001 * VERIFY THAT LABEL TYPE IS CORRECT, ABEND SA49476 51100001 * SA49476 51150001 TM UCBDMCT,UCBDMC UNIT IN USE SA49476 51350001 BZ OTA06810 BR IF NO TO CONTINUE SA49476 51400001 TM UCBWGT,UCBOUT SYSOUT SA49476 51402001 BZ OTA06775 BR IF NO TO ABEND SA49476 51412001 * (WILL CATCH SYSOUT SA49476 51422001 * LATER IN TAPE FINAL SA49476 51432001 * COMMON FUNCTION) SA49476 51442001 OTA06810 EQU * SA49476 51444001 SR RC,RC SET MSG FUNCTION PARM SA49476 51750001 CLC DXVOLMT1,SCRATCH SCRATCH REQUEST SA49476 51800001 BNE OTA06825 BRANCH IF NO SA49476 51850001 * SCRATCH REQUEST SA49476 51860001 TM UCBVOLI,VIRTUAL UNIT EMPTY, OR MOUNT SA49476 51870001 * SCRATCH ISSUED (X'FF), SA49476 51880001 * OR SPECIFIC VOL SER SA49476 51890001 BZ OTA07800 BR IF EMPTY TO MOUNT SA49476 51900001 BO OTA07000 BR IF X'FF' TO ACCEPT SA49476 51910001 * SCRATCH TAPE. SA49476 51920001 * FALL THROUGH IF SA49476 51930001 * SPECIFIC VOL SER SA49476 51940001 TM JFCFLGS1,JFCBUAFF UNIT=AFF SA49476 52000001 BO OTA07100 BR IF YES TO REJECT SA49476 52050001 * SPECIFIC VOL FOR SCRTCH SA49476 52100001 * UNIT=AFF REQUEST SA49476 52150001 B OTA07000 BR TO ACCEPT TAPE SA49476 52500001 * SPECIFIC REQUEST SA49476 52550001 OTA06825 EQU * SA49476 52600001 CLC DXVOLMT1,UCBVOLI CORRECT VOLUME SA49476 52650001 BE OTA06850 BRANCH IF YES SA49476 52700001 TM UCBFL1,UCBNOTRD UNIT NOT READY ON SA67187 52710021 BO OTA07800 BR IF NOT READY TO SA67187 52720021 * ISSUE MOUNT MESSAGE SA67187 52730021 CLI UCBVOLI,CHAR00 UNIT EMPTY SA49476 52750001 BNE OTA07100 BR IF NO TO REJECT VOL SA49476 52800001 * THIS WILL INCLUDE X'FF' SA49476 52850001 B OTA07800 UNIT EMPTY, GO MOUNT SA67187 53050021 OTA06850 EQU * SA49476 53150001 TM UCBDMCT,UCBMOUNT MOUNT BIT ON SA49476 53200001 BO OTA07000 BR IF YES TO ACCEPT VOL SA49476 53250001 * FALL THROUGH IF NO TO SA49476 53300001 * VERIFY LABEL TYPE SA49476 53350001 SPACE 1 SA49476 53400001 * VERIFY THAT LABEL TYPE SPECIFIED MATCHES THAT OF TAPE ON DRIVE 53450001 * SINCE VOLUME VERIFICATION WILL BE BYPASSED SA49476 53500001 TM JFCBLTYP,JFCSL SL SPECIFIED A39784 53550001 BNO OTA06925 NO, BRANCH A39784 53600001 TM UCBSTAT,UCBDADI SL TAPE MOUNTED A39784 53650001 BO OTA06975 YES, GO CONTINUE A39784 53700001 B OTA07100 NO, GO REJECT SA49476 53750001 OTA06925 EQU * A39784 53800001 TM JFCBLTYP,JFCBAL ASCII SPECIFIED A39784 53850001 BNO OTA06950 NO, GO CK TAPE FOR SL,AL A39784 53900001 TM UCBSTAB,UCBBSTR ASCII TAPE MOUNTED A39784 53950001 BO OTA06975 YES, GO CONTINUE A39784 54000001 B OTA07100 NO, GO REJECT SA49476 54050001 OTA06950 EQU * A39784 54100001 * NEITHER SL NOR AL SPECIFIED 54150001 TM UCBSTAT,UCBDADI SL TAPE MOUNTED A39784 54200001 BO OTA06980 BR IF YES TO CK BLP SA54585 54250001 TM UCBSTAB,UCBBSTR AL TAPE MOUNTED A39784 54300001 BO OTA06980 BR IF YES TO CK BLP SA54585 54350001 OTA06975 EQU * A39784 54750001 SR RET,RET SET VOLUME VERIFICATION, M0117 54800001 * FINAL COMMON BR TBL ENTRIES 54850001 LA RF,ID4F4H POINT TO VOLUME M0117 54900001 * VERIFICATION MOD ID/TTR 54950001 TM 0(RPARC),PLISTOUT-PLISTM0C-PLISTM01 CK FOR INOUT M0117 55000001 * OUTIN, OUTPUT 55050001 BNZ OTA08100 BR IF YES TO NEXT LOAD M0117 55100001 LA RF,ID4F4I POINT TO FINAL COMMON M0117 55150001 B OTA08100 GO TO NEXT LOAD M0117 55200001 * 55250001 OTA06980 EQU * 55255001 TM JFCBLTYP,JFCBLP BLP REQUEST SA54585 55260001 BNO OTA07100 BR IF NO TO REJECT SA54585 55265001 * MOUNTED TAPE WITH WRONG SA54585 55270001 * LABEL TYPE SA54585 55275001 * FALL THROUGH TO ACCEPT SA54585 55280001 * ANY TAPE FOR BLP REQ SA54585 55285001 B OTA07050 BR TO REW TAPE AS SA54585 55296001 * FILE SEQ NOS HAVE DIF- SA54585 55297001 * FERENT MEANING FOR BLP SA54585 55298001 * THAN SL OR AL SA54585 55299001 SPACE 3 SA49476 55300001 * 55350001 * ACCEPT TAPE, DETERMINE WHETHER MOUNT MESSAGE IS NEEDED SA49476 55400001 * SA49476 55450001 OTA07000 EQU * SA49476 55500001 TM UCBSTAB,UCBBNUL ANY ACTION MOUNT MSG SA49476 55800001 * ISSUED YET (MSG TO DOM) SA49476 55850001 BO OTA07050 BR IF YES TO TAKE TAPE SA49476 55900001 SR RC,RC SET MSG FUNCTION PARM SA49476 55950001 TM UCBFL1,UCBNOTRD NO IMMEDIATE ACTION MNT SA49476 56000001 * IS UNIT NOT READY SA49476 56050001 BO OTA07800 YES, UNIT IS NOT READY, SA49476 56100001 * BR TO ISSUE MOUNT MSG SA49476 56150001 * SA49476 56200001 * SA49476 56210001 * REWIND TAPE FOR VOLUME VERIFICATION SA49476 56220001 * SA49476 56230001 OTA07050 EQU * SA49476 56250001 NI UCBSTAB,X'FF'-UCBBSTR RESET AL MOUNTED SA54585 56252001 NI UCBSTAT,X'FF'-UCBDADI RESET SL MOUNTED SA54585 56254001 * IF THIS WAS AN SL/AL SA54585 56254501 * TAPE ACCEPTED AS BLP, SA54585 56255001 * THIS WILL PREVENT SA54585 56255501 * A SUBSEQUENT USE OF SA54585 56258001 * THIS TAPE AS SL, WITH SA54585 56260001 * A WRONG INTERPRETATION SA54585 56262001 * OF UCB FILE SEQ NOS SA54585 56264001 XC UCBFSCT(K4),UCBFSCT CLEAR FSCT + FSEQ COUNTERS 56300001 * 56350001 CLC DXVOLMT1,SCRATCH SCRATCH REQUEST SA62814 56360002 BE OTA07075 BR IF YES TO SKIP MOVE SA62814 56370002 * OF SCRTCH INTO UCB AS SA62814 56380002 * MAY HAVE VOL SER FROM SA62814 56390002 * SL TAPE CONVERTED TO NL SA62814 56391002 * THAT WOULD BE LOST SA62814 56392002 MVC UCBVOLI,DXVOLMT1 MOVE VOL SER TO UCB 56400003 OTA07075 EQU * SA62814 56410002 EXCP DXIOB 56450001 LA RET,K4 SET VOL VERIFICATION ENTRY 56500001 LA RF,ID4F4H POINT TO VOL VER IDTTR 56550001 B OTA08100 GO TO NEXT LOAD 56600001 * 56700001 SPACE 3 SA49476 56710001 * SA49476 56750001 * REJECT TAPE. SA49476 56800001 * SA49476 56850001 * FOR TAPES THAT ARE NOT SL OR AL, MAKE OPERATOR MOUNT THE SA49476 56900001 * WRONG TAPE FIRST, SO THAT HE WILL NOT BE CONFUSED. FOR SA49476 56950001 * SL AND AL THIS IS NOT NECESSARY AS WE WILL CATCH IT DURING SA49476 57000001 * VOLUME VERIFICATION. SA49476 57050001 * SA49476 57100001 OTA07100 EQU * SA49476 57150001 MVC MSGVOLSR,UCBVOLI MOVE UCB VOL SER TO MSG SA49476 57160001 LA RC,K4 SET MSG FUNCTION PARM SA49476 57200001 TM UCBDMCT,UCBMOUNT IS MOUNT BIT ON SA49476 57250001 BZ OTA07475 BR IF NO TO DEMOUNT, SA49476 57300001 * VOL WILL BE UNLOADED BY SA49476 57310001 * THE MESSAGE FUNCTION SA49476 57320001 SR RC,RC SET MSG FUNCTION PARM SA49476 57350001 * THIS REGISTER IS ALSO SA49476 57400001 * USED AS A SWITCH IN SA49476 57450001 * THIS SECTION OF CODE TO SA49476 57500001 * INDICATE WHETHER A RUN SA49476 57550001 * WAS ISSUED AND HENCE A SA49476 57600001 * DEMOUNT MSG IS NEEDED SA49476 57650001 TM JFCBLTYP,JFCSL+JFCBAL SL OR AL SPECIFIED SA49476 57700001 BZ OTA07125 BR IF NO SA49476 57750001 TM UCBFL1,UCBNOTRD IS UNIT NOT READY SA49476 57800001 BO OTA07400 BR IF NOT READY SA49476 57850001 * SA49476 57900001 * TAPE ON UNIT MUST BE UNLOADED SA49476 57950001 * SA49476 57952001 OTA07125 EQU * SA49476 57960001 BCTR RC,0 SET SW TO NEGATIVE SA49476 58000001 MVI DXCCW1,CCWRUN RUN COMMAND SA49476 58050001 XC UCBVOLI,UCBVOLI CLEAR VOL SER IN UCB SA49476 58150001 XC UCBFSCT(K4),UCBFSCT CLEAR UCB FILE CTRS SA49476 58200001 EXCP DXIOB UNLOAD TAPE SA49476 58300001 IECRES WAIT WAIT FOR UNLOAD SA49476 58350001 CLI DXECB,ECBINCPT WAS EXCP INTERCEPTED SA49476 58400001 BNE OTA07200 BR IF NO SA49476 58450001 EXCP DXIOB RE-ISSUE UNLOAD SA49476 58500001 IECRES WAIT WAIT FOR UNLOAD SA49476 58550001 OTA07200 EQU * SA49476 58560001 OI UCBFL1,UCBNOTRD SET UNIT NOT READY SA49476 58570001 * SA49476 58600001 * ANY OUTSTANDING MOUNT MESSAGES FOR THE UNIT MUST BE DELETED SA49476 58650001 * SA49476 58700001 OTA07400 EQU * SA58669 58800001 TM UCBSTAB,UCBBNUL TEST IF MSG TO DELETE SA58669 58850001 BZ OTA07450 BR IF NOT SA58669 58900001 MVI REPLY+K4,LASTNTRY INIT FOR 1 MSG ID SA58669 58950001 MVC REPLY+K5(K3),UCBFSER MOVE ID TO PARM LIST SA58669 59000001 NC UCBFSER+K3(K3),UCBFSER+K3 IS THERE A 2ND ID SA58669 59050001 BZ OTA07430 BR IF NOT TO DOM SA58669 59100001 MVI REPLY+K4,K0 CLEAR LAST-ID INDIC SA58669 59150001 MVI REPLY+K8,LASTNTRY LAST-ID INDR TO PARMLISTSA58669 59200001 MVC REPLY+K9(K3),UCBFSER+K3 2ND ID TO PARM LIST SA58669 59250001 OTA07430 EQU * SA58669 59300001 DOM MSGLIST=REPLY+K4 DELETE OUTSTANDING MSGS SA58669 59350001 NI UCBSTAB,X'FF'-UCBBNUL CLEAR DOM INDICATOR SA58669 59400001 XC UCBFSER(K6),UCBFSER CLEAR ID'S FROM UCB SA58669 59450001 OTA07450 EQU * SA58669 59500001 LTR RC,RC TEST SW FOR UNLOAD SA49476 59550001 * PERFORMED SA49476 59600001 BNM OTA07800 REG NOT NEGATIVE, NO SA49476 59650001 * UNLOAD, SKIP DEMOUNT, SA49476 59700001 * BR TO MOUNT SA49476 59750001 SR RC,RC RESET MSG FUNCTION PARM SA49476 59800001 * SA49476 59900001 * ISSUE DEMOUNT MESSAGE SA49476 59950001 * SA49476 60000001 OTA07475 EQU * SA49476 60010001 TM UCBSTAB,UCBBPRV IS THE MOUNTED VOLUME PRIVATE 60050001 BO OTA07500 BRANCH IF PRIVATE 60100001 TM UCBJBNR,PASSED IS THE MOUNTED VOLUME PASSED 60150001 BZ OTA07600 BRANCH IF NOT PASSED 60200001 * 60250001 OTA07500 EQU * ISSUE A RETAIN MESSAGE. 60400021 * THE VOLUME IS PRIVATE AND/OR PASSED. 60600021 MVC MSGLSTSZ+K9(K4),RETAIN COMPLETE RETAIN MESSAGE 60800021 B OTA07700 GO ISSUE MESSAGE 61000021 * 61200021 OTA07600 EQU * ISSUE A DISMOUNT MESSAGE. 61400021 * THE VOLUME IS PUBLIC AND NOT PASSED. 61600021 MVC MSGLSTSZ+K9(K4),DISMOUNT COMPLETE DISMOUNT MESSAGE 61800021 * 62000021 OTA07700 EQU * ISSUE A DEMOUNT OR RETAIN MSG 62200021 MVC MSGUN,UCBNAME MOVE UNIT NAME TO MESSAGE 62400021 TM MSGVOLSR,VIRTUAL WAS UCB VOL X'FF' OR 0 SA49576 62440001 * (X'FF' CAN OCCUR IF SA49576 62480001 * THIS IS A SPECIFIC UNIT SA49476 62520001 * =AFF REQUEST AND A MNT SA49476 62560001 * SCRTCH HAS BEEN ISSUED) SA49476 62600001 BM OTA07750 BR IF NEITHER SA49476 62640001 MVC MSGVOLSR,SCRATCH PUT SCRTCH IN MSG SA49476 62680001 OTA07750 EQU * SA49476 62720001 MVC MSGVOLSR+K6(K4),DESCODE2 MOVE MCS CODES TO MESSAGE 62800021 WTO MF=(E,MSGLSTSZ) ISSUE MESSAGE 63000021 SPACE 3 SA49476 63050001 * 63200021 * ISSUE MOUNT MESSAGE SA49476 63210001 * SA49476 63220001 OTA07800 EQU * 63400021 OI UCBDMCT,UCBMOUNT SET MOUNT SWITCH ON 64400021 MVC MSGLSTSZ+K9(K4),MOUNT0A COMPLETE MOUNT MESSAGE 64600021 MVC MSGVOLSR,DXVOLMT1 MOVE IN JFCB VOLUME SERIAL NO. 65200021 LA R1,MSGLSTSZ LOAD POINTER TO MESSAGE BUFFER 65400021 L RB,DESCODE1 LOAD MCS CODE 65600021 LA RC,K4(RC) ADJUST BR TABLE VALUE 65800021 LA RET,K12 FOR NEXT MOD ENTRY 66000021 LA RF,ID4F4G POINT TO MESSAGE MOD IDTTR 66200021 * 66400021 OTA08100 EQU * 66600021 IECRES XCTL,(RF),(RET) 66800021 * 67000021 *********************************************************************** 67100003 * 68200021 * CONSTANTS 68400003 * 68600021 OPAMSG EQU * SKELETON MESSAGE 68800021 DC X'00188000' MESSAGE PREFIX 69000021 DC C'IEC100X X DDD,' BASIC MESSAGE 69200021 MOUNT0A DC C'1A M' MOUNT MESSAGE CODE 69400021 DISMOUNT DC C'4E D' DEMOUNT MESSAGE 69600021 RETAIN DC C'6E R' RETAIN MESSAGE CODE 69800021 DESCODE1 DC 0F'0',X'4000' DSEC=2 IMMEDIATE ACTION REQ 70200003 DC X'2000' ROUTCDE=(3) TAPE POOL 70400003 DESCODE2 DC 0F'0',X'2000' DESC=3 EVENTUAL ACTION REQUIRED 70600003 DC X'2000' ROUTCDE=(3) TAPE POOL 70800003 SCRATCH DC CL6'SCRTCH' SCRATCH VOLUME SERIAL SA49476 71000001 REWCCW4F DC X'0700000020000050' REW CCW/SILI BIT AND 80 CHARS 71200021 * 71300003 XCTLTABL ID=(ID4F0P,0P,ID4F4G,4G,ID4F4H,4H,ID4F4I,4I) M0117 71400003 IECDSECS TIOT,UCB,MAIN,EXPAND=YES 71600003 IECEQU 71800021 END 72000021 ./ ADD SSI=00011566,NAME=IFG0194G,SOURCE=0 TITLE 'IFG0194G / OPEN - TAPE MESSAGE MODULE' 00200021 COPY LCGASMSW 00250000 IFG0194G CSECT 00800021 *********************************************************************** 01000021 * 01200021 * 01400021 * RELEASE 25 DELETIONS/CHANGES * 01600021 * RELEASE 24 DELETIONS/CHANGES * 01800021 * RELEASE 23 DELETIONS/CHANGES * 02000021 * RELEASE 22 DELETIONS/CHANGES * 02200021 * RELEASE 21.7 DELETIONS/CHANGES * 02250001 *0000678000,696000-712000 SA54629 02300001 * RELEASE 21 DELETIONS/CHANGES * 02400021 *0000050000,054000,056000,058000,060000,198000,312000-314000, M0034 02430021 *0000390000,780000,848000 M0034 02460021 *0000844000 S21940 02500021 *0000 SA47795 02560021 *0000752000-758000,758500 SA58669 02570001 * * 02600021 * STATUS CHANGE LEVEL 000 * 02800021 * * 03000021 * FUNCTION - * 03200021 * THIS MODULE CONTAINS THE FUNCTION(S) OR PART(S) OF FUNCTION(S)-- * 03400021 * OPEN TAPE VOLUME MOUNTING FUNCTION. * 03600021 * REFER TO THE FOLLOWING 'FUNCTION PROLOG(S)' FOR DETAILS. * 03800021 * * 04000021 * ENTRY POINTS - * 04200021 * IFG0194G - ENTRY POINT VIA THE RESIDENT ROUTINE XCTL * 04400021 * FROM ONE OF THE FOLLOWING-- * 04600021 * IFG0193B - FOR A REMOUNT, BRANCH TABLE OFFSET 0. M0034* 04700021 * IFG0194F - WHEN A MOUNT MESSAGE IS NEEDED FOR THE * 04800021 * REQUESTED VOLUME, BRANCH TABLE OFFSET 12. M0034* 05000021 * IFG0194H - FOR A REMOUNT OR FILE PROTECT MESSAGE. * 05200021 * BRANCH TABLE OFFSETS 4, 8, 20. M0034* 05300021 * IFG0193C - FOR A REMOUNT, BRANCH TABLE OFFSET 12. M0034* 05400021 * IFG0196Q - FOR REMOUNT, BRANCH TABLE OFFSET 20. M0034* 05600021 * IFG0196T - FOR REMOUNT, BRANCH TABLE OFFSET 20. M0034* 05800021 * IFG0196U - FOR REMOUNT, BRANCH TABLE OFFSET 20. M0034* 06000021 * IFG0190R - RETURN FROM DISPLAY DSNAME MODULE. * 06200021 * BRANCH TABLE OFFSET 16. M0034* 06300021 * * 06400021 * INPUT - * 06600021 * REFER TO THE FOLLOWING 'FUNCTION PROLOG(S)'. * 06800021 * * 07000021 * OUTPUT - * 07200021 * REFER TO THE FOLLOWING 'FUNCTION PROLOG(S)'. * 07400021 * * 07600021 * EXTERNAL REFERENCES - * 07800021 * IFG019RA - OPEN/CLOSE/EOV RESIDENT ROUTINE FOR XCTL AND * 08000021 * WAIT. * 08200021 * REFER TO THE FOLLOWING 'FUNCTION PROLOG(S)'. * 08400021 * * 08600021 * EXITS, NORMAL - * 08800021 * EXIT VIA THE RESIDENT ROUTINE XCTL TO ONE OF THE FOLLOWING-- * 09000021 * IFG0194H - FOR VOLUME LABEL VERIFICATION. * 09200021 * IFG0194I - AFTER TO A 'U' REPLY TO A FILE PROTECT MESSAGE. * 09400021 * IFG0190R - FOR MESSAGES REQUIRING THE DSNAME. * 09600021 * REFER TO THE FOLLOWING 'FUNCTION PROLOG(S)'. * 09800021 * * 10000021 * EXITS, ERROR - * 10200021 * EXIT IS TO THE PROBLEM DETERMINATION MODULE IFG0190P, IF AN * 10400021 * ABEND SITUATION OCCURS IN THIS MODULE. REFER TO THE FOLLOWING * 10600021 * 'FUNCTION PROLOG(S)'. * 10800021 * * 11000021 * TABLES/WORK AREAS - * 11200021 * REFER TO THE FOLLOWING 'FUNCTION PROLOG(S)'. * 11400021 * * 11600021 * ATTRIBUTES - * 11800021 * REENTRANT, REFRESHABLE, READ-ONLY, ENABLED, PRIVILEGED * 12000021 * * 12200021 * CHARACTER CODE DEPENDENCY - * 12400021 * CLASS ONE CHARACTER CODE DEPENDENCY - THE EBCDIC CHARACTER CODE * 12600021 * WAS USED FOR ASSEMBLY. THE MODULE MUST BE REASSEMBLED IF A * 12800021 * DIFFERENT CHARACTER SET IS USED FOR EXECUTION. * 13000021 * * 13200021 * NOTES - * 13400021 * REFER TO THE FOLLOWING 'FUNCTION PROLOG(S)'. * 13600021 * * 13800021 *********************************************************************** 14000021 EJECT 14200021 *********************************************************************** 14400021 * * 14600021 * FUNCTION PROLOG * 14800021 * * 15000021 *********************************************************************** 15200021 * * 15400021 * FUNCTION NAME - * 15600021 * OPEN TAPE VOLUME MOUNTING FUNCTION. * 15800021 * * 16000021 * (STATUS) - * 16200021 * NOT APPLICABLE * 16400021 * * 16600021 * FUNCTION - * 16800021 * COMPLETE CONSTRUCTION OF MESSAGES FROM THE TAPE STRING BY * 17000021 * INSERTING, LABEL TYPE, DENSITY, VOLUME SERIAL, AND THE * 17200021 * JOB/STEP NAMES. * 17400021 * WRITES THE MESSAGES THAT DO NOT REQUIRE THE DATA SET NAME. * 17600021 * WRITE A MESSAGE TO TSO TERMINALS TO INFORM USER THAT OPERATOR * 17800021 * ACTION IS REQUIRED FOR HIS DATA SET. * 18000021 * REWINDS OR UNLOADS VOLUMES AS REQUIRED. * 18200021 * WAITS AND CHECKS REPLY FOR FILE PROTECT MESSAGES. * 18400021 * * 18600021 * ENTRY POINTS - * 18800021 * ENTERED FROM THE FOLLOWING-- * 19000021 * OPEN TAPE MOUNT VERIFICATION FUNCTION WHEN THE REQUESTED * 19200021 * VOLUME IS NOT MOUNTED. * 19400021 * OPEN TAPE VOLUME VERIFICATION FUNCTION FOR REMOUNT OR FILE * 19600021 * PROTECT MESSAGES. ALSO FROM VOLUME VERIFICATION VIA M0034* 19700021 * OPEN TAPE ERROR DEMOUNT FUNCTION. M0034* 19800021 * ENTERED FOR REMOUNT FROM THE FOLLOWING-- * 20000021 * OPEN TAPE LABEL EDITOR FUNCTION. * 20200021 * OPEN TAPE REWRITE VOLUME LABEL FUNCTION. * 20400021 * OPEN TAPE HEADER LABEL WRITTING FUNCTION. * 20600021 * OPEN TAPE OUTPUT USER LABEL FUNCTION. * 20800021 * ENTERED ON RETURN FROM THE DISPLAY DSNAME WTO FUNCTION. * 21000021 * REFER TO THE PRECEEDING MODULE PROLOG. * 21200021 * * 21400021 * INPUT - * 21600021 * A POINTER TO EACH OF THE FOLLOWING-- * 21800021 * CURRENT PARAMETER LIST ENTRY. * 22000021 * DD ENTRY IN THE TIOT. * 22200021 * WTG TABLE. * 22400021 * CURRENT WTG TABLE ENTRY. * 22600021 * DCB. * 22800021 * OPEN WORK AREA. * 23000021 * RESIDENT ROUTINE. * 23200021 * UCB * 23400021 * * 23600021 * OUTPUT - * 23800021 * ISSUES THE FOLLOWING MESSAGES AS REQUIRED-- * 24000021 * IEC114E D - WHEN A VOLUME IS BEING REJECTED. * 24200021 * IEC101A M - TO REMOUNT FOLLOWING A REJECT. * 24400021 * THE VOLUME IS POSITIONED FOR VOLUME LABEL VERIFICATION. * 24600021 * * 24800021 * EXTERNAL REFERENCES - * 25000021 * REFER TO THE PRECEEDING MODULE PROLOG. * 25200021 * * 25400021 * EXITS, NORMAL - * 25600021 * OPEN TAPE VOLUME VERIFICATION FUNCTION AFTER MOUNTING * 25800021 * THE REQUESTED VOLUME. * 26000021 * OPEN TAPE FINAL COMMON FUNCTION AFTER A 'U' REPLY TO * 26200021 * A FILE PROTECT MESSAGE. * 26400021 * DSNAME WTO FUNCTION FOR MESSAGES THAT REQUIRE THE DATA SET. * 26600021 * * 26800021 * EXITS, ERROR - * 27000021 * REFER TO THE PRECEEDING MODULE PROLOG. * 27200021 * EXIT IS MADE WITH THE FOLLOWING INTERNAL CODE-- * 27400021 * 2 - 413 ABEND - IO ERROR ON A REWIND OR REWIND/UNLOAD. * 27600021 * * 27800021 * TABLES/WORK AREAS - * 28000021 * THE OPEN, CLOSE, OR EOV WORK AREA AND THE WHERE-TO-GO (WTG) * 28200021 * TABLE ARE DESCRIBED BY THE DSECTS AT THE END OF THE LISTING. * 28400021 * * 28600021 * ATTRIBUTES - * 28800021 * REFER TO THE PRECEEDING MODULE PROLOG. * 29000021 * * 29200021 * CHARACTER CODE DEPENDENCY - * 29400021 * REFER TO THE PRECEEDING MODULE PROLOG. * 29600021 * * 29800021 * NOTES - * 30000021 * * 30200021 *********************************************************************** 30400021 EJECT 30600021 * 30800021 USING FORCORE,RCORE WORK AREA 31000021 USING UCBOB,RUCB UCB 31600021 BALR RBASE,0 SET BASE REGISTER 31800021 USING *,RBASE 32000021 * 32200021 B OTA08300(RET) GO VIA BRANCH TABLE 32400021 OTA08300 EQU * 32600021 B OTA08500 GO DEMOUNT BEFORE MOUNT 32800021 B OTA08600 SET MOUNT BIT, ISSUE MOUNT 33000021 B OTA08700 COMPLETE MOUNT MESSAGE 33200021 B OTA08800 ISSUE MESSAGE 33400021 B OTA11100 RETURN FROM MSG MODULE 33600021 * 33800021 * PREPARE TO ISSUE DISMOUNT AND MOUNT MESSAGES 34000021 * 34200021 OTA08400 EQU * 34400021 MVC MSGLSTSZ(K18),OPAMSG4G MOVE IN SKELETON MESSAGE 34600021 MVI MSGLSTSZ+K1,K17 MOVE IN MSG LENGTH 34800021 MVC MSGUN,UCBNAME MOVE UNIT NAME TO MSG 35000021 MVC MSGLSTSZ+K17(K4),DCODE24G MOVE MCS CODES TO MSG 35200021 OTA08500 EQU * 35400021 WTO MF=(E,MSGLSTSZ) ISSUE DISMOUNT MESSAGE 35600021 MVC MSGLSTSZ+K8(K5),MOUNT4G COMPLETE MOUNT MESSAGE 35800021 LA R1,MSGLSTSZ POINT TO MESSAGE BUFFER 36000021 OTA08600 EQU * 36200021 OI UCBDMCT,UCBMOUNT SET MOUNT SWITCH ON 36400021 LA RC,K8 BRANCH TABLE VALUE 36600021 OTA08700 L RB,DCODE14G LOAD MCS CODE 36800021 MVC MSGVOLSR,DXVOLMT1 MOVE VOL SER TO MESSAGE 37000021 OTA08800 EQU * 37200021 LR RET,RC GET BR TAB VALUE FOR AFTER MSG 37400021 ST RET,DXCCW3 SAVE BRANCH TABLE VALUE 37600021 USING CVT,RF 37800021 USING BASE,RPARC 38000021 USING TCB,RWTGC 38200021 STM RPARC,RET,DXCCW8 SAVE REGS 38400021 L RF,CVTPTR GET PTR TO CVT 38600021 L RPARC,CVTMSLT MASTER SCHED LINK TABL PTR 38800021 L RF,CVTTCBP-CVT(RF) GET PTR TO TCB ADDRESSES M0034 39000021 L RWTGC,K4(RF) GET TCB ADDRESS 39200021 L RTIOT,K12(RWTGC) SAVE TIOT POINTER 39400021 LR RC,R1 SAVE THE MSG PTR 39600021 XC 0(K2,RC),0(RC) INIT LENGTH BYTES 39800021 MVC K14(K3,RC),UCBNAME MOVE IN UNIT ADDRESS 40000021 MVI K17(RC),COMMA DELIMIT UNIT WITH COMMA 40200021 LA R1,K23(R1) UP PTR TO LAST CHAR OF SER 40400021 BAL RF,OTA09500 GO REMOVE BLANKS 40600021 MVI K1(R1),COMMA DELIMIT VOLUME SERIAL NUMBER 40800021 MVI K2(R1),BLANK BLANK OUT 41000021 MVC K3(K50,R1),K2(R1) REMAINING BUFFER 41200021 ST RC,K76(RC) STORE MSG POINTER 41400021 CLI K76(RC),X'00' WTOR OR SPECIAL WTO 41600021 BNE OTA10100 YES, BYPASS LBL, DEN INFO 41800021 TM JFCBLTYP,JFCNSL CHECK FOR NSL TAPE 42000021 BO OTA09000 BRANCH IF NSL 42200021 TM JFCBLTYP,JFCSL CHECK FOR SL TAPE 42400021 BO OTA09100 BRANCH IF SL 42600021 TM JFCBLTYP,JFCBAL TEST FOR AL TAPE 42800021 BO OTA08900 BRANCH IF AL 43000021 MVC K2(K2,R1),NLCHAR MOVE IN NL CHARACTERS 43200021 B OTA09200 GO PUT DENSITY IN MSG 43400021 OTA08900 MVC K2(K2,R1),ALCHAR MOVE IN AL CHAR 43600021 B OTA09200 CONTINUE PROCESSING 43800021 OTA09000 MVC K2(K3,R1),NSLCHAR MOVE IN NSL CHAR 44000021 B OTA09200 CONTINUE PROCESSING 44200021 OTA09100 MVC K2(K2,R1),SLCHAR MOVE IN SL CHAR 44400021 OTA09200 LA R1,K4(K0,R1) POINT TO END OF LABEL CHARS 44600021 BAL RF,OTA09500 GO REMOVE BLANKS 44800021 MVI K1(R1),COMMA DELIMIT WITH COMMA 45000021 * 45200021 * IF A MOUNT COMMAND REQUESTS A SCRTCH VOLUME OR * 45400021 * IF CONTROL CAME FROM OR OMODVOL1 * 45600021 * THEN THE DENSITY IS INCLUDED IN THE MESSAGE TO * 45800021 * THE OPERATOR. * 46000021 * 46200021 * WAS THE CALLING RTN OMODVOL1 46400021 * 46600021 LTR RET,RET NEG IF FROM OMOD 46800021 BM OTA09300 FROM OMOD GO INCLUDE DENSITY 47000021 CLC K18(K6,RC),SCRTCHC IS A SCRATCH TAPE DESIRED 47200021 BNE OTA10100 NO, BRANCH 47400021 OTA09300 EQU * 47600021 TM DXDEBMOD,DEN1600 IS THIS A NINE TRK UNIT 47800021 BO OTA09800 YES, GO DETERMINE DENSITY 48000021 BZ OTA09600 BRANCH, DENSITY IS 200 48200021 TM DXDEBMOD,DCBDEN08 TEST FOR 800 BPI 48400021 BZ OTA09700 BRANCH IF 556 48600021 OTA09400 EQU * 48800021 MVC K2(K3,R1),BPICON80 MOVE IN 800 BPI 49000021 B OTA10000 CONTINUE PROCESSING 49200021 OTA09500 CLI 0(R1),BLANK FIND THE LAST CHAR 49400021 BCR 7,RF WHEN FOUND BRANCH 49600021 BCT R1,OTA09500 LOOK AGAIN 49800021 OTA09600 MVC K2(K3,R1),BPICON20 INDICATE 200 BPI 50000021 B OTA10000 CONTINUE PROCESSING 50200021 OTA09700 MVC K2(K3,R1),BPICON55 INDICATE 556 BPI 50400021 B OTA10000 CONTINUE PROCESSING 50600021 OTA09800 EQU * 50800021 TM DXDEBMOD,X'08' IS THIS 800 BPI 51000021 BO OTA09400 YES 51200021 MVC K2(K4,R1),BPICN625 INDICATE 6250 BPI 99223 51250000 TM DXDEBMOD,DEN6250 IS THIS 6250 BPI 99223 51300000 BO OTA10000 YES,GO INCREMENT COUNTER 99223 51350000 OTA09900 MVC K2(K4,R1),BPICN160 INDICATE 1600 BPI 51400021 OTA10000 LA R1,K5(R1) INCREMENT COUNTER 51600021 BAL RF,OTA09500 GO REMOVE BLANKS 51800021 MVI K1(R1),COMMA DELIMIT DENSITY 52000021 OTA10100 MVC K2(K8,R1),0(RTIOT) PUT THE JOBNAME IN MESSAGE 52200021 LA R1,K9(R1) POINT PAST JOBNAME 52400021 BAL RF,OTA09500 GO REMOVE BLANKS 52600021 MVI K1(R1),COMMA DELIMIT JOBNAME 52800021 MVC K2(K8,R1),K8(RTIOT) PUT THE STEPNAME IN MESSAGE 53000021 LA R1,K9(R1) UPDATE MSG PTR 53200021 BAL RF,OTA09500 GO REMOVE BLANKS 53400021 OTA10200 LR RD,R1 DETERMINE LENGTH OF 53600021 SR RD,RC PRESENT MSG 53800021 LA RD,K1(RD) NUMBER OF CHARS IN MSG 54000021 STC RD,K1(RC) SET UP MSG LENGTH 54200021 CLI K76(RC),X'00' THIS MSG ALWAYS WANT DSNM 54400021 BNE OTA10400 YES, BRANCH 54600021 TM MSSSB,MSSSDSN IS DISPLAY DSN ACTIVE 54800021 BO OTA10300 YES, BRANCH 55000021 L RF,CVTPTR RESTORE CVT ADDRESS 55200021 TM CVTDCB,CVT4MS1 IS THIS MVT 55400021 BZ OTA10500 NO, BRANCH 55600021 TM BAMONITR,BAMDSN TERMNLS WANT DSN 55800021 BZ OTA10500 NO,BRANCH 56000021 OTA10300 EQU * 56200021 TM JFCBIND2,JFCTEMP IS DATA SET 'TEMPORARY'- 56400021 BO OTA10500 YES, BRANCH 56600021 * 56800021 OTA10400 EQU * 57000021 LM RPARC,RB,DXCCW8 RESTORE REGS 57200021 LA RET,K16 SET VALUE FOR MSG MOD RETURN 57400021 MVC DXRETMOD,ID4G4G MOVE IN IDTTR FOR RETURN 57600021 LA RF,ID4G0R POINT TO MSG MOD IDTTR 57800021 B OTA11800 GO TO MESSAGE MODULE 58000021 OTA10500 EQU * 58200021 MVC K1(K4,R1),DXCCW10 MOVE IN MCS CODES 58400021 LA RD,K80(RC) PTR TO MSG ID SAVE AREA 58600021 OTA10600 WTO MF=(E,(12)) WRITE LINE ONE OF MESSAGE 58800021 TM DXCCW10,X'40' NEED TO SAVE MSG ID 59000021 BZ OTA10700 NO, BRANCH 59200021 ST R1,K0(RD) SAVE MSG ID 59400021 XC UCBSQC(K6),UCBSQC INSURE MSG IDS CLEARED SA47795 59410021 MVC UCBSQC(K3),K1(RD) SAVE MSG ID IN UCB SA47795 59450021 OI UCBSTAB,UCBBNUL TURN ON UCB DOM INDR SA47795 59500021 OI K0(RD),LASTNTRY INDICATE END OF MSG ID LIST 59600021 OTA10700 EQU * 59800021 L RF,CVTPTR RESTORE CVT ADDRESS 60000021 TM CVTDCB,CVT4MS1 IS THIS MVT 60200021 BZ OTA11000 NO, BRANCH 60400021 TM TCBTSFLG,TCBTSTSK IS THIS A TIME SHARING TASK 60600021 BNO OTA11000 BRANCH IF NOT 60800021 CLI K10(RC),CHARA IS THIS AN ACTION MSG 61000021 BE OTA10800 YES-ISSUE MESSAGE 61200021 CLI K10(RC),CHARD IS THIS A DECISION MSG 61400021 BNE OTA11000 NO-DO NOT SEND MESSAGE 61600021 OTA10800 EQU * 61800021 LA R1,K1(RC) GET MSG BUFR POINTER 62000021 MVC K0(L'TSOMSG,R1),TSOMSG MOVE MESSAGE TO BUFFER 62200021 LA R0,L'TSOMSG SET MSG LENGTH 62400021 L RF,TCBJSCB LOCATE JSCB 62600021 USING IEZJSCB,RF ADDRESSABILITY FOR JSCB 62800021 L RF,JSCBPSCB LOCATE PSCB 63000021 LTR RF,RF PSCB INITIALIZED 63200021 BZ OTA10900 DEFAULT TPUT W/MSG ID 63400021 USING PSCB,RF ADDRESSABILITY FOR PSCB 63600021 L RF,PSCBUPT LOCATE UPT 63800021 USING UPT,RF ADDRESSABILITY FOR UPT 64000021 TM UPTSWS,UPTMID IS MESSAGE ID REQUIRED 64200021 BO OTA10900 YES, BRANCH 64400021 LA R1,K8(R1) INCREMENT PAST ID 64600021 SH R0,IDLGTH DECREMENT BUFFER LENGTH 64800021 OTA10900 EQU * 65000021 TPUT (1),(0),R SEND MSG TO TERINAL 65200021 * 65400021 OTA11000 EQU * 65600021 LM RPARC,RET,DXCCW8 RESTORE REGS 65800021 * 66000021 * RETURN FROM DISPLAY DSNAME MODULE 66200021 * 66400021 OTA11100 EQU * 66600021 L RET,DXCCW3 GET BRANCH TABLE VALUE 66800021 LPR RET,RET INSURE REG IS POSITIVE 67000021 B OTA11200(RET) GO TO PROPER RETURN 67200021 OTA11200 EQU * 67400021 B OTA11600 WAIT FOR REPLY 67600021 B OTA11350 NO DEMOUNT ISSUED SA54629 67800001 B OTA11300 ISSUE REWIND UNLOAD SA54629 67850001 LA RET,K0 BRANCH OFFSET SA54629 67900001 LA RF,ID4G5D POINT TO NSL MOD IDTTR SA54629 67950001 B OTA11800 GO XCTL SA54629 67960001 OTA11300 EQU * REWIND AND UNLOAD 68000021 NI JFCBMASK+K5,X'FF'-JFCSLCRE-JFCSLDES TURN OFF LABEL 68200021 * CONFLICT INDICATERS 68400021 MVC DXCCW1,REWCCW4G SET UP CCW FOR REWIND 68600021 XC UCBFSCT(K4),UCBFSCT CLEAR FSCT + FSEQ COUNTERS 68800021 XC UCBVOLI(K6),UCBVOLI CLEAR SERIAL NUMBER 69000021 MVI DXCCW1,CCWRUN REWIND AND UNLOAD 69200021 EXCP DXIOB 69400021 LA RET,K12 FOR NEXT MODULE ENTRY SA54629 71400001 B OTA11400 GO TO NEXT LOAD SA54629 71410001 OTA11350 EQU * SA54629 71420001 LA RET,K8 FOR NEXT MODULE ENTRY SA54629 71430001 OTA11400 EQU * SA54629 71450001 LA RF,ID4G4H POINT TO VOL VER IDTTR 71600021 B OTA11800 GO TO VOL VERIFICATION 71800021 * 72000021 OTA11500 EQU * 72200021 MVC MSGLSTSZ(K18),OPAMSG4G MOVE IN SKELETON MESSAGE 72400021 MVC MESSAGEA+K4(K5),OPMSG4G MOVE '10D F' FOR MSG 72600021 LA RB,REPLY GET REPLY ADDRESS 72800021 ST RB,REPLYLTH STORE REPLY ADDRESS 73000021 MVI REPLYLTH,K1 MOVE IN REPLY LENGTH 73200021 LA RB,DXECB GET ECB ADDRESS 73400021 ST RB,REPLYECB STORE ECB ADDR FOR WTOR 73600021 MVI DXECB,K0 CLEAR ECB FOR WTOR 73800021 LA R1,MSGLSTSZ ADDR OF MESSAGE BUFFER 74000021 O R1,FIWTOR4G INDICATE A WTOR 74200021 SR RC,RC BRANCH TABLE VALUE 74400021 B OTA08700 GO FINISH MESSAGE 74600021 OTA11600 EQU * 74800021 IECRES WAIT 75000021 TM UCBSTAB,UCBBNUL IS THERE MSG TO DELETE SA58669 75050001 BZ OTA11700 NO, GO CHECK REPLY SA58669 75400001 MVI REPLY+K4,LASTNTRY INDICATE 1 MSG TO DELETESA58669 75450001 MVC REPLY+K5(K3),UCBFSER FIRST MSG ID IN DOM LISTSA58669 75500001 DOM MSGLIST=REPLY+K4 DELETE MSG 75800001 NI UCBSTAB,X'FF'-UCBBNUL TURN OFF UCB DOM INDR SA47795 75850021 XC UCBFSER(K6),UCBFSER CLEAR UCBFSER FIELD SA58669 75900001 OTA11700 EQU * 76000021 CLI REPLY,C'F' OPERATOR INSERT PROT RING 76400021 BE OTA11300 BRANCH TO INSERT PROTECT RING 76600021 CLI REPLY,CHARU USE VOL WITHOUT PROT RING 76800021 BNE OTA11500 BR IF NO TRY AGAIN 77000021 LA RF,ID4G4I POINT TO FINAL COMMON IDTTR 77200021 OTA11800 EQU * 77400021 IECRES XCTL,(RF),(RET) 77600021 OTA11900 EQU * 77800021 OABD002 EQU 2 INTERNAL ABEND CODE M0034 77900021 DMABCOND OABD002,ID4G0P M0034 78000021 * 78200021 * CONSTANTS 78400021 * 78600021 REWCCW4G DC X'0700000020000050' REW CCW/SILI BIT AND 80 CHARS 78800021 OPAMSG4G DC X'00008000' SKELETON 79000021 DC C'IEC114E D DDD,' DEMOUNT MESSAGE 79200021 MOUNT4G DC C'01A M' MOUNT MESSAGE CODE 79400021 OPMSG4G DC C'10D F' FILE PROTECT WTOR MSG 79600021 * 79800021 DS 0F GET ON FULLWORD BNDRY 80000021 DCODE14G DC X'4000' MCS DESCRIPTOR FOR WTO 80200021 RCODE14G DC X'2000' MCS ROUTING CODE FOR WTO 80400021 DCODE24G DC X'2000' MCS DESCRIPTOR FOR WTOR 80600021 RCODE24G DC X'2000' MCS ROUTING CODE FOR WTOR 80800021 FIWTOR4G DC X'80000000' MASK TO INDICATE WTOR 81000021 NLCHAR DC C'NL' NL LABEL TYPE 81200021 ALCHAR DC C'AL' AL LABEL TYPE 81400021 SLCHAR DC C'SL' SL LABEL TYPE 81600021 NSLCHAR DC C'NSL' NSL LABEL TYPE 81800021 SCRTCHC DC C'SCRTCH' SCRATCH VOLUME SERIAL 82000021 BPICON80 DC C'800' 800 BPI 82200021 BPICON55 DC C'556' 556 BPI 82400021 BPICON20 DC C'200' 200 BPI 82600021 BPICN160 DC C'1600' 1600 BPI 82800021 BPICN625 DC C'6250' 6250 BPI 99223 82850000 IDLGTH DC H'8' MESSAGE ID LENGTH. 83000021 TSOMSG DC C'IEC108I OPERATOR ACTION HAS BEEN REQUESTED FOR YOUR DAX83200021 TA SET' 83400021 LTORG 83600021 * 83800021 XCTL4G XCTLTABL ID=(ID4G0R,0R,ID4G4H,4H,ID4G4I,4I,ID4G4G,4G, X84000021 ID4G0P,0P,ID4G5D,5D) SA54629 84200001 IECDSECS JSCB,PSCB,UPT,TJB,TSCVT,SMF,BASE 84600021 IECDSECS CVT,UCB,MAIN,TCB,EXPAND=YES M0034 84800021 IECEQU 85000021 END 85200021 ./ ADD SSI=00011369,NAME=IFG0194H,SOURCE=0 TITLE 'IFG0194H - OPEN TAPE VOLUME VERIFICATION' 00200021 COPY LCGASMSW 00250000 IFG0194H CSECT 00800021 *********************************************************************** 01000021 * 01200021 * VS2 RELEASE 01 CHANGES * 01300000 *0000453000-453600 YM0975 01350000 * VS2 RELEASE 01-6 DELETIONS/CHANGES * 01352001 *0000444000 YM5518 01354001 * VS1 RELEASE 02-6 CHANGES 01364002 *0000444000 XM2974 01374002 * 01400021 * RELEASE 25 DELETIONS/CHANGES * 01600021 * RELEASE 24 DELETIONS/CHANGES * 01800021 * RELEASE 23 DELETIONS/CHANGES * 02000021 * RELEASE 22 DELETIONS/CHANGES * 02200021 * RELEASE 21.8 DELETIONS/CHANGES * 02250021 *0000 OS67537 02300021 * RELEASE 21.7 DELETIONS/CHANGES * 02380001 *0000 SA54629 02381001 * RELEASE 21 DELETIONS/CHANGES * 02400021 *0000080000-086000,096000,242000,322000,360000,494000,528000- M0034 02420021 *0000570000,758000,764000,798000,806000,834000-836000,846000, M0034 02440021 *0000848000 M0034 02460021 *0000 A44800 02500021 *0000510000,763000 M1996 02550021 *0000362000 A47788 02560021 *0000442000,480000 M1823 02570021 *0000402000-404000 A48556 02580021 *0000 SA47795 02590021 *0000342100-354000,354500,362000-362500,363500-363960,366000 SA58669 02592001 *0000476000 SA58025 02592101 *0000462000-468000 S21940 02594001 *0000400500-401000 SA58696 02596001 * * 02600021 * STATUS CHANGE LEVEL 000 * 02800021 * * 03000021 * FUNCTION - * 03200021 * THIS MODULE CONTAINS THE FUNCTION(S) OR PART(S) OF FUNCTION(S)-- * 03400021 * OPEN TAPE VOLUME VERIFICATION FUNCTION. * 03600021 * REFER TO THE FOLLOWING 'FUNCTION PROLOG(S)' FOR DETAILS. * 03800021 * * 04000021 * ENTRY POINTS - * 04200021 * IFG0194H - ENTRY POINT VIA THE RESIDENT ROUTINE XCTL FROM-- * 04400021 * IFG0194F - THE REQUESTED VOLUME IS MOUNTED OR SCHEDULER * 04600021 * ISSUED A MOUNT. * 04800021 * IFG0194G - THE MOUNT WAS JUST ISSUED BY OPEN. * 05000021 * * 05200021 * INPUT - * 05400021 * REFER TO THE FOLLOWING 'FUNCTION PROLOG(S)'. * 05600021 * * 05800021 * OUTPUT - * 06000021 * REFER TO THE FOLLOWING 'FUNCTION PROLOG(S)'. * 06200021 * * 06400021 * EXTERNAL REFERENCES - * 06600021 * IFG019RA - OPEN/CLOSE/EOV RESIDENT ROUTINE FOR XCTL AND * 06800021 * WAIT. * 07000021 * REFER TO THE FOLLOWING 'FUNCTION PROLOG(S)'. * 07200021 * * 07400021 * EXITS, NORMAL - * 07600021 * EXIT VIA THE RESIDENT ROUTINE XCTL TO ONE OF THE FOLLOWING-- * 07800021 * IFG0193B - ISSUE DEMOUNT MESSAGE M0034* 07900021 * IFG0194G - FOR A REMOUNT OR FILE PROTECT MESSAGE * 08000021 * IFG0194I - CONTINUE PROCESSING - THE CORRECT VOLUME IS * 08100021 * MOUNTED * 08200021 * IFG0194J - A LABEL CONFLICT HAS OCCURED. * 08300021 * REFER TO THE FOLLOWING 'FUNCTION PROLOG(S)'. * 08800021 * * 09000021 * EXITS, ERROR - * 09200021 * EXIT IS TO THE PROBLEM DETERMINATION MODULE IFG0190P, IF AN * 09400021 * ABEND SITUATION OCURRS IN THIS MODULE, OR TO THE OPEN TAPE M0034* 09500021 * ERROR DEMOUNT FUNCTION IN IFG0193B. REFER TO THE FOLLOWING M0034* 09600021 * 'FUNCTION PROLOG(S)'. * 09800021 * * 10000021 * TABLES/WORK AREAS - * 10200021 * REFER TO THE FOLLOWING 'FUNCTION PROLOG(S)'. * 10400021 * * 10600021 * ATTRIBUTES - * 10800021 * REENTRANT, REFRESHABLE, READ-ONLY, ENABLED, PRIVILEGED * 11000021 * * 11200021 * CHARACTER CODE DEPENDENCY - * 11400021 * CLASS ONE CHARACTER CODE DEPENDENCY - THE EBCDIC CHARACTER CODE * 11600021 * WAS USED FOR ASSEMBLY. THE MODULE MUST BE REASSEMBLED IF A * 11800021 * DIFFERENT CHARACTER SET IS USED FOR EXECUTION. * 12000021 * * 12200021 * NOTES - * 12400021 * REFER TO THE FOLLOWING 'FUNCTION PROLOG(S)'. * 12600021 * * 12800021 *********************************************************************** 13000021 EJECT 13200021 *********************************************************************** 13400021 * * 13600021 * FUNCTION PROLOG * 13800021 * * 14000021 *********************************************************************** 14200021 * * 14400021 * FUNCTION NAME - * 14600021 * OPEN TAPE VOLUME VERIFICATION FUNCTION. * 14800021 * * 15000021 * (STATUS) - * 15200021 * NOT APPLICABLE * 15400021 * * 15600021 * FUNCTION - * 15800021 * VERIFY TAPE VOLUME LABEL. * 16000021 * ON INITIAL ENTRY, A CHECK IS MADE TO DETERMINE IF LABEL * 16200021 * VERIFICATION IS REQUIRED (UCB VOLUME SERIAL = JFCB VOLUME * 16400021 * SERIAL). IF EQUAL, VERIFICATION IS BYPASSED. IF BLP IS SPECIFIED,* 16600021 * VERIFICATION IS BYPASSED. OTHERWISE, AN ATTEMPT IS MADE TO * 16800021 * READ A VOLUME LABEL. IF A LABEL CONFLICT OCCURS AN EXIT IS * 17000021 * TAKEN TO THE LABEL EDITOR INTERFACE FUNCTION. * 17200021 * IF A VOLUME CONFLICT OCCURES AN EXIT IS TAKEN TO THE VOLUME * 17400021 * MOUNTING FUNCTION FOR A DEMOUNT AND REMOUNT. * 17600021 * FOR NL OR BLP, NON-SPECIFIC REQUESTS, A LXXXYY NUMBER WILL BE * 17800021 * GENERATED FOR THE VOLUME SERIAL NUMBER. * 18000021 * FILE PROTECTION IS CHECKED AFTER VERIFICATION FOR OUTPUT,OUTIN, * 18200021 * OR INOUT DATA SETS. IF THE TAPE IS PROTECTED A FILE PROTECT * 18400021 * MESSAGE IS ISSUED VIA THE VOLUME MOUNTING FUNCTION. * 18600021 * IF THE VOLUME IS AN ASCII TAPE, AND THE VOLUME ACCESSIBILITY BYTE* 18800021 * (VOLSEC) IS NOT BLANK, THE TAPE CANNOT BE PROCESSED. IF THE * 19000021 * REQUEST WAS FOR A NON-SPECIFIC VOLUME, THE VOLUME IS DEMOUNTED * 19200021 * AND A REQUEST FOR A SCRATCH VOLUME IS MADE VIA THE VOLUME * 19400021 * MOUNTING FUNCTION. * 19600021 * * 19800021 * ENTRY POINTS - * 20000021 * ENTERED FROM THE FOLLOWING-- * 20200021 * OPEN TAPE MOUNT VERIFICATION FUNCTION WHEN THE VOLUME IS * 20400021 * MOUNTED OR SCHEDULER HAS ISSUED A MOUNT. * 20600021 * OPEN TAPE VOLUME MOUNTING FUNCTION AFTER OPEN HAS JUST * 20800021 * ISSUED A MOUNT. * 21000021 * REFER TO THE PRECEEDING MODULE PROLOG. * 21200021 * * 21400021 * INPUT - * 21600021 * A POINTER TO EACH OF THE FOLLOWING-- * 21800021 * CURRENT PARAMETER LIST ENTRY. * 22000021 * DD ENTRY IN THE TIOT. * 22200021 * WTG TABLE. * 22400021 * CURRENT WTG TABLE ENTRY. * 22600021 * DCB. * 22800021 * OPEN WORK AREA. * 23000021 * RESIDENT ROUTINE. * 23200021 * UCB * 23400021 * * 23600021 * OUTPUT - * 23800021 * ISSUES THE FOLLOWING MESSAGES AS REQUIRED-- * 24000021 * VIA THE OPEN TAPE ERROR DEMOUNT FUNCTION-- M0034* 24100021 * IEC114E D - ASCII VOLUME ACCESSIBILITY BYTE NOT BLANK, M0034* 24130021 * OR ASCII TAPE MOUNTED, NOT REQUESTED, AND NOT SYSGENED. M0034* 24160021 * WHEN EXITING, M0034* 24190021 * R0 - CONTAINS IEC114E MESSAGE MODIFIER CHARACTER M0034* 24220021 * RC - CONTAINS INTERNAL ABEND CODE M0034* 24250021 * DXVOLSR - (IN DCB WORK AREA MESSAGE) CONTAINS THE VOL M0034* 24280021 * SER FOR THE MESSAGE M0034* 24310021 * VIA THE OPEN TAPE VOLUME MOUNTING FUNCTION-- * 24400021 * IEC109A F - FILE PROTECT WTO. * 24600021 * IEC110D F - FILE PROTECT WTOR FOR INOUT DATA SETS. * 24800021 * * 25000021 * EXTERNAL REFERENCES - * 25200021 * REFER TO THE PRECEEDING MODULE PROLOG. * 25400021 * * 25600021 * EXITS, NORMAL - * 25800021 * REFER TO THE PRECEEDING MODULE PROLOG. * 26000021 * OPEN TAPE ERROR DEMOUNT MESSAGE FUNCTION M0034* 26100021 * OPEN TAPE VOLUME MOUNTING FUNCTION FOR A REMOUNT OR FILE * 26200021 * PROTECT MESSAGE. * 26400021 * OPEN TAPE FINAL COMMON FUNCTION TO CONTINUE NORMAL PROCESSING. * 26600021 * OPEN TAPE LABEL EDITOR INTERFACE FUNCTION IF A LABEL CONFLICT * 26800021 * OCCURES. * 27000021 * * 27200021 * EXITS, ERROR - * 27400021 * REFER TO THE PRECEEDING MODULE PROLOG. * 27600021 * EXIT IS MADE WITH ONE OF THE FOLLOWING INTERNAL CODES-- * 27800021 * 2 - 413 ABEND - I/O ERROR ON A REWIND OR REWIND/UNLOAD. * 28000021 * 3 - 413 ABEND - I/O ERROR READING VOLUME LABEL. * 28200021 * EXIT TO OPEN TAPE ERROR DEMOUNT FUNCTION FOR THE FOLLOWING M0034* 28260021 * INTERNAL CODE(S)-- M0034* 28320021 * 19 - 913 ABEND - ASCII ACCESSIBILITY ERROR. * 28400021 * * 28600021 * TABLES/WORK AREAS - * 28800021 * THE OPEN, CLOSE, OR EOV WORK AREA AND THE WHERE-TO-GO (WTG) * 29000021 * TABLE ARE DESCRIBED BY THE DSECTS AT THE END OF THE LISTING. * 29200021 * * 29400021 * ATTRIBUTES - * 29600021 * REFER TO THE PRECEEDING MODULE PROLOG. * 29800021 * * 30000021 * CHARACTER CODE DEPENDENCY - * 30200021 * REFER TO THE PRECEEDING MODULE PROLOG. * 30400021 * * 30600021 * NOTES - * 30800021 * * 31000021 *********************************************************************** 31200021 EJECT 31400021 * 31600021 USING FORCORE,RCORE WORK AREA 31800021 USING TIOENTRY,RTIOT TIOT ENTRY 32000021 USING UCBOB,RUCB UCB 32400021 BALR RBASE,0 SET BASE REGISTER 32600021 USING *,RBASE 32800021 * 33000021 B OTA12000(RET) GO TO PROPER ENTRY 33200021 OTA12000 EQU * 33400021 B OTA14000 VOL ALREADY VERIFIED 33600021 B OTA12040 WAIT FOR REWIND SA54629 33650001 B OTA12030 ISSUE REWIND SA54629 33660001 * SA54629 33700001 * WAIT FOR REWIND UNLOAD SA54629 33750001 * SA54629 33760001 IECRES WAIT SA54629 33770001 CLI DXECB,ECBINCPT WAS EXCP INTERCEPTED OS67537 33772021 BNE OTA12020 NO, CONTINUE OS67537 33774021 EXCP DXIOB REISSUE RUN EXCP OS67537 33776021 IECRES WAIT WAIT FOR REW/UNLOAD OS67537 33778021 OTA12020 EQU * OS67537 33778421 TM DXECB,ECBNOERR TEST FOR I/O ERROR SA54629 33780001 LA R0,OABD002 GET INT ABEND CODE SA54629 33782001 BZ OTA14700 BRANCH IF ERROR SA54629 33790001 OI UCBFL1,UCBNOTRD SET UCB NOT READY SA54629 33792001 * SA54629 33794001 OTA12030 EQU * SA54629 33794401 * REWIND AND WAIT FOR UNIT READY SA54629 33796001 MVC UCBVOLI(K6),DXVOLMT1 MOVE VOL SER TO UCB SA54629 33798001 MVC DXCCW1,REWCCW9C MOVE IN REWIND COMMAND SA54629 33798401 EXCP DXIOB SA54629 33798801 * 33800021 * WAIT FOR REWIND STARTED IN PREVIOUS LOAD 34000021 * 34200021 OTA12040 EQU * SA54629 34210001 IECRES WAIT WAIT FOR REWIND SA58669 34250001 CLI DXECB,ECBINCPT WAS EXCP INTERCEPTED SA58669 34300001 BNE OTA12050 BR IF NO SA58669 34350001 EXCP DXIOB REISSUE REWIND EXCP SA58669 34400001 * ONLY 1 INTERCEPT IS OK SA58669 34450001 IECRES WAIT WAIT FOR REWIND SA58669 34550001 OTA12050 EQU * SA58669 34600001 TM UCBSTAB,UCBBNUL IS THERE MSG TO DOM SA58669 34650001 BZ OTA12100 BR IF NOT SA58669 34700001 MVI REPLY+K4,LASTNTRY INIT FOR 1 MSG ID SA58669 34750001 MVC REPLY+K5(K3),UCBFSER 1ST ID TO PARM LIST SA58669 34800001 MVC REPLY+K9(K3),UCBFSER+K3 2ND ID TO PARM LIST SA58669 34850001 NC REPLY+K9(K3),REPLY+K9 IS THERE 2 MSG IDS SA58669 34900001 BZ OTA12070 BR IF NOT SA58669 34950001 MVI REPLY+K4,K0 INDICATE 2 IDS SA58669 35000001 MVI REPLY+K8,LASTNTRY INDICATE END OF DOM LISTSA58669 35050001 OTA12070 EQU * SA58669 35100001 DOM MSGLIST=REPLY+K4 DOM MOUNT MSG SA58669 35150001 NI UCBSTAB,X'FF'-UCBBNUL TURN OFF UCB DOM INDR SA47795 35450021 XC UCBFSER(K6),UCBFSER CLEAR MSG IDS IN UCB SA58669 35500001 OTA12100 EQU * 35600021 TM DXECB,ECBNOERR TEST FOR I/O ERROR 35800021 OABD002 EQU 2 INTERNAL ABEND CODE M0034 35900021 LA R0,OABD002 INT ABEND CODE-I/O ERROR M0034 36000021 BZ OTA14700 YES, BRANCH ON ERROR A47788 36300021 * 36400021 TM JFCBLTYP,JFCBLP BLP SPECIFIED 36800021 BO OTA12700 BRANCH IF BLP SPECIFIED 37000021 * 37200021 * TRY TO READ AN 80 CHARACTER LABEL 37400021 ST RCORE,DXCCW1 LBL AREA ADDR IN READ CCW 37600021 MVI VOLLABI,K0 CLEAR VOL LABEL IN READ AREA 37800021 MVI DXCCW1,CCWRDTAP SET UP READ TAPE OP CODE 38000021 NI DXCCW1+4,X'FF'-CCWSILI TURN OFF SLI FLAG SA54629 38050001 EXCP DXIOB 38200021 IECRES WAIT 38400021 OI DXCCW1+4,CCWSILI TURN ON SLI FLAG SA54629 38450001 TM IOBSTAT1,X'3E' TEST FOR CHAN PROG/PROT/DATA 38600021 * CTRL/IFCE CHECK 38800021 BNZ OTA14600 YES,ABEND IF ANY 39000021 * 39200021 TM IOBSTAT0,IOERR CK FOR UNIT CHECK 39400021 BZ OTA12800 BR IF NO 39600021 TM IOBSENSE,X'F7' ERROR OTHER THAN DATA CHK 39800021 BNZ OTA14600 YES,ABEND 40000021 TM IOBSENS1,X'01' IS NOT CAPABLE BIT SET SA58696 40050001 BZ OTA12300 NO, BRANCH SA58696 40100001 TM JFCBLTYP,JFCSL+JFCBAL STD OR ASCII LABELS SPECIFIED 40600021 BZ OTA13300 NO, BRANCH 40800021 OTA12300 EQU * 41000021 TM JFCBLTYP,JFCSL+JFCBAL CK FOR STD OR ASCII LABELS 41200021 BZ OTA12500 BR IF NO 41400021 OTA12400 EQU * 41600021 TM 0(RPARC),DEBOPOIN CK FOR OUTPUT OR OUTIN 41800021 BNO OTA14900 BRANCH IF NEITHER TO REMOUNT 42000021 OI JFCBMASK+K5,LBLERR2V+JFCSLCRE SW TO CREATE SL 42200021 B OTA13400 GO SET UP FOR OMOD 42400021 OTA12500 EQU * 42600021 OTA12600 MVC DXCCW1,REWCCW9C SET UP CCW FOR REWIND 42800021 BAL RB,OTA14500 BRANCH TO EXECUTE CHANNEL PGM 43000021 * 43200021 * GENERATE L TYPE VOLUME SERIAL NUMBER FOR 43400021 * NL, NSL AND BLP NON-SPECIFIC REQUESTS. 43600021 * 43800021 OTA12700 EQU * 44000021 CLI JFCBVOLS,BLANK TEST FOR NON-SPECIFIC XM2974 44400002 * REQUEST YM5518 44450001 BNE OTA14000 BRANCH IF SPECIFIC 44600021 AIF ('&LIB' EQ 'LIB1').LIB14H1 44650000 MODESET ENABLE=NO DISABLE ALL INTERRUPTS YM0975 44700000 .LIB14H1 ANOP 44750000 L R1,CVTPTR LOAD ADDRESS OF CVT 44800021 USING CVT,R1 ESTABLISH CVT ADDRESSABILITY 45000021 AIF ('&LIB' NE 'LIB1').LIB24H1 45050000 SSM *+K1 DISABLE ALL INTERRUPTS 45200021 .LIB24H1 ANOP 45250000 LH RF,CVTSNCTR LOAD DATA SET SERIAL NO. 45400021 CVD RF,DXCCW11 CONVERT DATA SET NO. 45600021 LA RF,K1(RF) INCREMENT DATA SET NO. 45800021 STH RF,CVTSNCTR UPDATE DATA SET SERIAL NO. 46000021 AIF ('&LIB' NE 'LIB1').LIB24H2 46050000 SSM OPA1973K ENABLE ALL INTERRUPTS S21940 46810001 .LIB24H2 ANOP 46850000 AIF ('&LIB' EQ 'LIB1').LIB14H2 46900000 MODESET ENABLE=YES ENABLE ALL INTERRUPTS Y01082 46950000 .LIB14H2 ANOP 46960000 DROP R1 DROP ADDRESSABILITY TO CVT 47000021 MVI JFCBVOLS,CHARL MOVE L TO JFCB 47200021 UNPK JFCBVOLS+K1(K3),DXCCW11 MOVE IN DATA SET NO. 47400021 OI JFCBVOLS+K3,ZONEOF MOVE IN PROPER SIGN BIT SA58025 47650001 MVC JFCBVOLS+K4(K2),OPA1972K SET SEQUENCE NO. TO 1 SA58025 47700001 OI JFCBMASK+K5,K1 INDICATE L NO. GENERATED 47800021 MVC UCBVOLI,JFCBVOLS MOVE VOL SER TO UCB M1823 47900021 B OTA14000 BR TO DO FILE PROTECT CK M1823 48000021 OTA12800 EQU * 48200021 CLC DXLBL(K4),ANSIVOL1 ASCII VOLUME LABEL 48400021 BNE OTA13100 NO, BRANCH 48600021 CLI IOBCNT+1,K0 IS BYTE COUNT ZERO SA54629 48650001 BNE OTA12300 BR IF NO, TOO SHORT TO SA54629 48700001 * BE AN AL TAPE SA54629 48750001 L R1,CVTPTR GET CVT ADDRESS 48800021 USING CVT,R1 49000021 TM CVTOPTA,CVTASCII ASCII SYSGENED 49200021 BO OTA12850 YES, GO CONTINUE M0034 49300021 * NO, DEMOUNT VOLUME. AL 49400021 * MOUNTED, NOT REQUESTED, 49600021 * ASCII NOT SYSGENED 49800021 * INITIALIZE FOR OPEN TAPE ERROR DEMOUNT FUNCTION 49810021 LA RC,K0 ZERO INT CODE PASSED TO M0034 49820021 * ERROR DEMOUNT FUNCTION 49830021 * INDICATING NO ABEND, GO 49840021 * TO MSG MODULE TO UNLOAD 49850021 * AND REMOUNT 49860021 MVC MSGVOLSR,BLANKS INSERT BLANK VOL SER IN M0034 49870021 * MESSAGE, AS CANNOT 49880021 * TRANSLATE ASCII LABEL 49890021 LA R0,CHAR3 PASS MSG MODIFIER CHAR M0034 49900021 B OTA13060 GO TO ERROR DEMOUNT M0034 49910021 * CONTINUE ASCII PROCESSING 49920021 OTA12850 EQU * M0034 49930021 LA R0,K80 LENGTH OF LABEL 50000021 LA R1,K0(RCORE) ADDRESS OF LABEL 50200021 XLATE (1),(0),TO=E TRANSLATE TO EBCDIC 50400021 CLI VOLSEC,BLANK IS VOLUME ACCESSIBILITY 50600021 * BYTE BLANK 50800021 BNE OTA12950 NO, BRANCH M1996 51000021 OI UCBSTAB,UCBBSTR INDICATE AL TAPE MOUNTED 51200021 TM JFCBLTYP,JFCSL STANDARD LABEL REQUESTED 51400021 BNO OTA13200 NO, BRANCH TO CHECK NL 51600021 OTA12900 TM 0(RPARC),DEBOPOIN OUTPUT OR OUTIN 51800021 BNO OTA14900 NO, BRANCH TO REMOUNT 52000021 OI JFCBMASK+K5,JFCSLDES+JFCSLCRE+LBLERR2V INDICATE BOTH 52200021 * CREATE AND DESTROY LABEL 52400021 B OTA13400 CONTINUE PROCESSING 52600021 * INITIALIZE FOR OPEN TAPE ERROR DEMOUNT FUNCTION M0034 52700021 OTA12950 EQU * M1996 52750021 CLC DXVOLMT1,SCRATCHC IS THIS SCRATCH REQUEST M0034 52800021 BE OTA13000 YES, GO SET FOR REMOUNT M0034 52900021 CLC VOLSERNO,UCBVOLI NOT SCRATCH REQUEST, IS M0034 53000021 * CORRECT VOLUME MOUNTED 53100021 BNE OTA14900 NO, GO REMOUNT M0034 53200021 * YES, ERROR DEMOUNT FUNCTION 53300021 * WILL TERMINATE PROCESSING 53400021 OABD019 EQU 19 INTERNAL ABEND CODE M0034 53500021 LA RC,OABD019 PASS INT CODE-VOLUME M0034 53600021 * ACCESSIBILITY NOT BLANK M0034 53700021 B OTA13040 SKIP REMOUNT CODE M0034 53800021 OTA13000 EQU * M0034 53900021 LA RC,K0 ZERO INT CODE PASSED TO M0034 54000021 * ERROR DEMOUNT FUNCTION M0034 54100021 * INDICATING NO ABEND, GO M0034 54200021 * TO MSG MODULE TO UNLOAD M0034 54300021 * AND REMOUNT M0034 54400021 OTA13040 EQU * CONTINUE M0034 54500021 MVC MSGVOLSR,VOLSERNO INSERT VOL SER OF TAPE M0034 54600021 * MOUNTED FROM LBL TO MSG M0034 54700021 LA R0,CHAR1 PASS MSG MODIFIER CHAR M0034 54800021 OTA13060 EQU * GO TO ERROR DEMOUNT M0034 54900021 LA RF,ID4H3B ERROR DEMOUNT IDTTR M0034 55000021 LA RET,K4 BRANCH TABLE ENTRY FOR M0034 55100021 * ERROR DEMOUNT FUNCTION M0034 55200021 * WITH FOLLOWING ABEND M0034 55300021 B OTA15100 GO XCTL M0034 55400021 * 55500021 OTA13100 EQU * 57200021 TM IOBSTAT1,ERROROUT CK FOR INCORRECT LENGTH 57400021 BO OTA12300 BR IF YES 57600021 CLC DXLBL(K4),OP2KVOL CK FOR VOLUME LABEL 57800021 BNE OTA12300 BR IF NO 58000021 OI UCBSTAT,UCBDADI INDICATE SL MOUNTED 58200021 TM JFCBLTYP,JFCBAL ASCII LABEL WANTED 58400021 BO OTA12900 YES BRANCH TO CREATE AND 58600021 * DESTROY MODULES 58800021 OTA13200 EQU * 59000021 TM JFCBLTYP,JFCSL+JFCBAL CK FOR STANDARD LABELS 59200021 BNZ OTA13500 BR IF YES 59400021 OTA13300 EQU * 59600021 TM 0(RPARC),DEBOPOIN CK FOR OUTPUT OR OUTIN 59800021 BNO OTA14900 BRANCH IF NEITHER TO REMOUNT 60000021 OI JFCBMASK+K5,JFCSLDES+LBLERR2V INDICATE NL/NSL SPEC, 60200021 * SL MOUNTED 60400021 SPACE , 60600021 OTA13400 EQU * SET UP FOR OMOD EXIT 60800021 SPACE , 61000021 BAL RB,OTA14400 CHECK IF WRITE PROTECTED 61200021 SPACE , 61400021 TM DXCCW6+K1,UCBPRTCT IF THERE IS NO WRITE RING 61600021 BO OTA14200 GO TO WRITE MESSAGE 61800021 MVC DXCCW1,REWCCW9C MOVE IN REWIND COMMAND 62000021 BAL RB,OTA14500 GO EXECUTE CHANNEL PROGRAM 62200021 LA RF,ID4H4J POINT TO LBL CHECK MOD IDTTR 62400021 LA RET,K4 SET FOR MODULE ENTRY 62600021 B OTA15100 GO TO NEXT LOAD 62800021 OTA13500 EQU * 63000021 CLC DXVOLMT1,SCRATCHC JFCB VOL = SCRATCH 63200021 BNE OTA13800 BRANCH, IF NOT 63400021 OTA13700 EQU * 63600021 MVC UCBVOLI(K6),VOLSERNO MOVE IN VOL SER NUMBER 63800021 B OTA14000 GO DO FILE PROTECT CHECK 64000021 OTA13800 EQU * 64200021 CLI DXVOLMT1,CHARL WAS LXXXYY GENERATED BY EOV 64400021 BNE OTA13900 BR IF NO 64600021 TM UCBWGT,UCBWGTSO TEST FOR SYSOUT 64800021 BO OTA13700 BR IF YES 65000021 OTA13900 EQU * 65200021 CLC VOLSERNO(K6),UCBVOLI CK FOR CORRECT VOLUME 65400021 BNE OTA14900 BRANCH NOT EQUAL TO REMOUNT 65600021 * 65800021 OTA14000 EQU * 66000021 TM 0(RPARC),X'02' CK FOR OUTPUT, OUTIN, INOUT 66200021 BZ OTA14800 BR IF NO 66400021 * 66600021 BAL RB,OTA14400 DO A SENSE I/O 66800021 TM DXCCW6+K1,UCBPRTCT CK FOR FILE PROTECT RING 67000021 BO OTA14200 BR IF RING IS NOT IN 67200021 TM JFCBIND2,JFCOLD+JFCMOD DOES DISP=OLD OR MOD 67400021 BO OTA14100 NO, BRANCH-IT IS NEW 67600021 CLI JFCBVOLS,BLANK IS VOL SER NO IN JFCB 67800021 BNE OTA14800 YES, BRANCH 68000021 TM UCBTBYT2,UCBDDMSK DUAL DENSITY DRIVE 99223 68200000 BNZ OTA14800 BRANCH IF YES 99223 68400000 OTA14100 EQU * 68600021 MVC JFCBVOLS(K6),UCBVOLI MOVE VOL SER INTO JFCB 68800021 B OTA14800 GO TO NEXT LOAD 69000021 OTA14200 EQU * 69200021 * 69400021 MVC MSGLSTSZ(K18),OPAMSG9C MOVE IN SKELETON MESSAGE 69600021 TM 0(RPARC),DEBOPOIN TEST FOR OUTPUT OR OUTIN 69800021 BNO OTA14300 B IF NO TO WTOR, IT IS INOUT 70000021 MVC MESSAGEA+K4(K5),OPAMSG2 MOVE 19A F PART OF MSG 70200021 LA R1,MSGLSTSZ ADDR OF MESSAFE BUFFER 70400021 O R1,FILWTO9C INDICATE A WTO 70600021 LA RET,K4 FOR MSG MOD ENTRY 70800021 B OTA15000 GO TO MSG MODULE 71000021 OTA14300 EQU * 71200021 MVC MESSAGEA+K4(K5),OPAMSG3 MOVE '10D F' FOR MSG 71400021 LA RB,REPLY GET REPLY ADDRESS 71600021 ST RB,REPLYLTH STORE REPLY ADDRESS 71800021 MVI REPLYLTH,K1 MOVE IN REPLY LENGTH 72000021 LA RB,DXECB GET ECB ADDRESS 72200021 ST RB,REPLYECB STOR ECB ADDR FOR WTOR 72400021 MVI DXECB,K0 CLEAR ECB FOR WTOR 72600021 LA R1,MSGLSTSZ ADDR OF MESSAGE BUFFER 72800021 O R1,FIWTOR9C INDICATE A WTOR 73000021 SR RC,RC BRANCH TABLE VALUE 73200021 LA RET,K8 FOR MSG MOD ENTRY 73400021 B OTA15000 GO FINISH MESSAGE 73600021 OTA14400 EQU * 73800021 EX R0,OTA12600 SET UP CCW FOR REWIND 74000021 LA R1,DXCCW6 INSERT ADDRESS OF SENSE BYTES 74200021 ST R1,DXCCW1 STORE SENSE AREA IN CCW 74400021 MVI DXCCW1,CCWSENSE MOVE IN SENSE COMMAND 74600021 MVI DXCCW+7,CCWSNLEN MOVE IN NO OF SENSE A44800 74660021 * BYTES A44800 74720021 OTA14500 EQU * 74800021 EXCP DXIOB 75000021 IECRES WAIT 75200021 TM DXECB,ECBNOERR CK FOR I/O ERROR 75400021 BCR 1,RB RETURN IF NO ERROR 75600021 LA R0,OABD002 INT CODE-I/O ERROR M0034 75800021 B OTA14700 GO TERMINATE 76000021 OTA14600 EQU * 76200021 OABD003 EQU 3 INTERNAL ABEND CODE M1996 76300021 LA R0,OABD003 INT CODE-READ I/O ERROR M0034 76400021 * 76600021 OTA14700 EQU * 76800021 DMABCOND (0),ID4H0P 77000021 * 77200021 * SET UP FOR EXIT TO NEXT LOAD 77400021 * 77600021 OTA14800 EQU * 77800021 LA RF,ID4H4I POINT TO FINAL COMMON IDTTR 78000021 B OTA15100 GO TO FINAL COMMON LOAD 78200021 OTA14900 EQU * 78400021 LA RET,K20 FOR MSG MOD ENTRY 78600021 OTA15000 EQU * 78800021 LA RF,ID4H4G POINT TO MSG MODULE IDTTR 79000021 OTA15100 EQU * 79200021 IECRES XCTL,(RF),(RET) 79400021 * 79600021 REWCCW9C DC X'0700000020000050' REW CCW/SILI BIT AND 80 CHARS 80000021 OPAMSG9C DC X'00008000' SKELETON 80200021 DC C'IEC1XXX X DDD,' MESSAGE 80400021 MOUNT9D DC C'01A M' MOUNT MESSAGE CODE 80800021 OPAMSG2 DC C'09A F' FILE PROTECT WTO MSG 81000021 OPAMSG3 DC C'10D F' FILE PROTECT WTOR MSG 81200021 OPAMSG4 DC C'36E D' MESSAGE NO. FOR 199C ENTRY 81400021 * 81600021 OPA1972K DC C'01' VOL SEQ NO. FOR 1ST SER SA58025 81650001 AIF ('&LIB' NE 'LIB1').LIB24H3 S21940 81700001 OPA1973K DC X'FF' ENABLE INTERRUPTS MASK S21940 81750001 .LIB24H3 ANOP S21940 81760001 OP2KVOL DC C'VOL1' STANDARD VOLUME LABEL ID 81800021 SCRATCHC DC C'SCRTCH' SCRATCH VOL SER 82000021 BLANKS DC CL6' ' BLANK VOL SER FOR MSG M0034 82100021 DS 0F GET ON FULLWORD BNDRY 82200021 ANSIVOL1 DC X'564F4C31' CHARACTER 'VOL1' IN ASCII 82400021 D9CCDE1 DC X'4000' MCS DESCRIPTOR FOR WTO 82600021 R9CTCD9D DC X'2000' MCS ROUTING CODE FOR WTO 82800021 DESCO9D2 DC X'2000' MCS DESCRIPTOR FOR WTOR 83000021 ROUTC9D2 DC X'2000' MCS ROUTING CODE FOR WTOR 83200021 FILWTO9C DC X'40000000' MASK TO INDICATE WTO 83800021 FIWTOR9C DC X'80000000' MASK TO INDICATE WTOR 84000021 * 84200021 AIF ('&LIB' NE 'LIB1').LIB24H4 SA67537 84250021 XCTL4H XCTLTABL ID=(ID4H4G,4G,ID4H4I,4I,ID4H4J,4J,ID4H0P,0P, X84400021 ID4H4F,4F,ID4H3B,3B) M0034 84600021 AGO .LIB14H5 SA67537 84650021 .LIB24H4 ANOP SA67537 84700021 XCTL4H XCTLTABL ID=(ID4H4G,4G,ID4H4I,4I,ID4H4J,4J,ID4H0P,0P, SA67537X84750021 ID4H4F,4F,ID4H3B,3B),LENGTH=2048,PATCH=100 SA67537 84760021 .LIB14H5 ANOP SA67537 84780021 IECDSECS CVT,TIOT,UCB,MAIN,EXPAND=YES M0034 84800021 IECEQU 85000021 END 85200021 ./ ADD SSI=00011385,NAME=IFG0194I,SOURCE=0 TITLE 'IFG0194I - OPEN TAPE DENSITY CHECK' 00200021 COPY LCGASMSW 00250000 IFG0194I CSECT 00800021 *********************************************************************** 01000021 * 01200021 * 01400021 * VS1 RELEASE 03.1 DELETIONS/CHANGES * 01420021 *SEE SA69190 XA05166 01425021 * VS1 RELEASE 3 DELETIONS/CHANGES * 01450003 *0000346000-348000,436000 99223 01460003 *364000-366000,736500 XM3581 01500003 *0000 XM4375 01550003 * RELEASE 25 DELETIONS/CHANGES * 01600021 * RELEASE 24 DELETIONS/CHANGES * 01800021 * RELEASE 23 DELETIONS/CHANGES * 02000021 * RELEASE 22 DELETIONS/CHANGES * 02200021 * RELEASE 21.8 DELETIONS/CHANGES * 02210003 *0000328000-330000,354000,356000-360000,384000,386000,387700, SA61284 02250003 *0000387800,387940,392000,398000,406000,408000-426000,454000 SA61284 02300003 *0000387500,646000,670000 SA69918 02350021 *0000 SA69190 02360021 *0000002000,200000,234000,240000,262000-272000,286000,292000, S21940 02362021 *0000304000-314000,326000,342000-344000,348000,352000-352600, S21940 02364021 *0000354600,355600,362500,398500,430000,444000,450000,480000, S21940 02366021 *0000492000,531500,556000,596000-598000,604000-606000,610000- S21940 02368021 *0000614000,620000-622000,626000-628000,652000-658000,676000, S21940 02370021 *0000692000,700000,720000,724000,737000,746500-747800,751500, S21940 02372021 *0000751940,778000,786000 S21940 02374021 * RELEASE 21 DELETIONS/CHANGES * 02400021 *0000 A40554 02450021 *0000044000-048000,192000-198000 M0117 02500021 * * 02600021 * STATUS CHANGE LEVEL 000 * 02800021 * * 03000021 * FUNCTION - * 03200021 * THIS MODULE CONTAINS THE FUNCTION(S) OR PART(S) OF FUNCTION(S)-- * 03400021 * OPEN TAPE FINAL COMMON FUNCTION. * 03600021 * REFER TO THE FOLLOWING 'FUNCTION PROLOG(S)' FOR DETAILS. * 03800021 * * 04000021 * ENTRY POINTS - * 04200021 * IFG0194I - ENTRY POINT VIA RESIDENT ROUTINE XCTL FROM-- * 04300021 * IFG0194F - BYPASS VOLUME VERIFICATION ON INPUT WHEN VOLUME * 04400021 * REQUESTED IS ALREADY MOUNTED. * 04500021 * IFG0194G - AFTER A 'U' REPLY TO A FILE PROTECT MESSAGE. * 04600021 * IFG0194H - AFTER THE CORRECT LABEL HAS BEEN VERIFIED. * 04700021 * * 05000021 * INPUT - * 05200021 * REFER TO THE FOLLOWING 'FUNCTION PROLOG(S)'. * 05400021 * * 05600021 * OUTPUT - * 05800021 * REFER TO THE FOLLOWING 'FUNCTION PROLOG(S)'. * 06000021 * * 06200021 * EXTERNAL REFERENCES - * 06400021 * IFG019RA - OPEN/CLOSE/EOV RESIDENT ROUTINE FOR XCTL AND * 06600021 * WAIT. * 06800021 * REFER TO THE FOLLOWING 'FUNCTION PROLOG(S)'. * 07000021 * * 07200021 * EXITS, NORMAL - * 07400021 * EXIT VIA THE RESIDENT ROUTINE XCTL TO ONE OF THE FOLLOWING-- * 07600021 * IFG0194D - SECOND PASS FOR UNRESOLVED VOLUME REFERENCE. * 07800021 * IFG0194J - DUAL DENSITY CONFLICT. * 08000021 * IFG0195B - CONTINUE NORMAL PROCESSING FOR SL OR AL. * 08200021 * IFG0195C - CONTINUE NORMAL PROCESSING FOR NL OR BLP. * 08400021 * IFG0195D - CONTINUE NORMAL PROCESSING FOR NSL INPUT. * 08600021 * IFG0196J - CONTINUE NORMAL PROCESSING FOR NSL OUTPUT OR * 08800021 * NL SYSIN/SYSOUT. * 09000021 * IFG0196N - AFTER A SL OR AL REMOUNT. * 09200021 * IFG0196O - AFTER A NSL OUTPUT REMOUNT. * 09400021 * REFER TO THE FOLLOWING 'FUNCTION PROLOG(S)'. * 09600021 * * 09800021 * EXITS, ERROR - * 10000021 * EXIT IS TO THE PROBLEM DETERMINATION MODULE IFG0190P, IF AN * 10200021 * ABEND SITUATION OCCURS IN THIS MODULE. REFER TO THE FOLLOWING * 10400021 * 'FUNCTION PROLOG(S)'. * 10600021 * * 10800021 * TABLES/WORK AREAS - * 11000021 * REFER TO THE FOLLOWING 'FUNCTION PROLOG(S)'. * 11200021 * * 11400021 * ATTRIBUTES - * 11600021 * REENTRANT, REFRESHABLE, READ-ONLY, ENABLED, PRIVILEGED * 11800021 * * 12000021 * CHARACTER CODE DEPENDENCY - * 12200021 * CLASS ONE CHARACTER CODE DEPENDENCY - THE EBCDIC CHARACTER CODE * 12400021 * WAS USED FOR ASSEMBLY. THE MODULE MUST BE REASSEMBLED IF A * 12600021 * DIFFERENT CHARACTER SET IS USED FOR EXECUTION. * 12800021 * * 13000021 * NOTES - * 13200021 * REFER TO THE FOLLOWING 'FUNCTION PROLOG(S)'. * 13400021 * * 13600021 *********************************************************************** 13800021 EJECT 14000021 *********************************************************************** 14200021 * * 14400021 * FUNCTION PROLOG * 14600021 * * 14800021 *********************************************************************** 15000021 * * 15200021 * FUNCTION NAME - * 15400021 * OPEN TAPE FINAL COMMON FUNCTION. * 15600021 * * 15800021 * (STATUS) - * 16000021 * NOT APPLICABLE * 16200021 * * 16400021 * FUNCTION - * 16600021 * FOR DUAL DENSITY TAPE DRIVES, IF THE DATA SET IS BEING OPENED * 16800021 * FOR OUTPUT, THE DENSITY OF THE MOUNTED VOLUME IS COMPARED WITH * 17000021 * THE DENSITY SPECIFIED. EXIT TO THE LABEL EDITOR IF A CONFLICT * 17200021 * OCCURES. * 17400021 * VERIFY THAT THE TAPE DOES NOT HAVE ANOTHER DATA SET OPEN TO IT. * 17600021 * FOR SYSOUT TAPES WITH ANOTHER DATA SET OPEN, IF SCHEDULER OR * 17800021 * ABEND IN CONTROL, TRAILER LABELS ARE WRITTEN TO CLOSE THE DATA * 18000021 * SET SO OPEN CAN CONTINUE. * 18200021 * ASCII LABELS ARE TRANSLATED BEFORE BEING WRITTEN. * 18400021 * * 18600021 * ENTRY POINTS - * 18800021 * ENTERED FROM THE FOLLOWING-- * 19000021 * OPEN TAPE MOUNT VERIFICATION FUNCTION ON INPUT WHEN VOLUME * 19100021 * VERIFICATION IS BYPASSED BECAUSE REQUESTED VOLUME IS * 19200021 * MOUNTED. * 19300021 * OPEN TAPE VOLUME MOUNTING FUNCTION FOR A 'U' REPLY TO A FILE * 19400021 * PROTECT MESSAGE. * 19500021 * OPEN TAPE VOLUME VERIFICATION FUNCTION AFTER THE CORRECT * 19600021 * LABEL HAS BEEN VERIFIED. * 19700021 * REFER TO THE PRECEDING MODULE PROLOG. * 20000021 * * 20200021 * INPUT - * 20400021 * A POINTER TO EACH OF THE FOLLOWING-- * 20600021 * CURRENT PARAMETER LIST ENTRY. * 20800021 * DD ENTRY IN THE TIOT. * 21000021 * WTG TABLE. * 21200021 * CURRENT WTG TABLE ENTRY. * 21400021 * DCB. * 21600021 * OPEN WORK AREA. * 21800021 * RESIDENT ROUTINE. * 22000021 * UCB * 22200021 * * 22400021 * OUTPUT - * 22600021 * THE MOUNT BIT, IN THE UCB, HAS BEEN SET FOR NSL VERIFICATION. * 22800021 * * 23000021 * EXTERNAL REFERENCES - * 23200021 * REFER TO THE PRECEDING MODULE PROLOG. * 23400021 * * 23600021 * EXITS, NORMAL - * 23800021 * REFER TO THE PRECEDING MODULE PROLOG. * 24000021 * OPEN TAPE VOLUME REFERENCE FUNCTION IF SECOND PASS IS REQUIRED. * 24200021 * OPEN TAPE LABEL INTERFACE FUNCTION FOR A DENSITY CONFLICT. * 24400021 * OPEN TAPE SL POSITIONING FUNCTION FOR SL OR AL PROCESSING. * 24600021 * OPEN TAPE NL POSITIONING FUNCTION FOR NL OR BLP PROCESSING. * 24800021 * OPEN TAPE NSL INPUT INTERFACE FUNCTION FOR NSL INPUT PROCESSING. * 25000021 * OPEN MERGE JFCB FUNCTION FOR NSL OUTPUT OR NL SYSIN/SYSOUT. * 25200021 * OPEN TAPE OUTPUT SECURITY FUNCTION AFTER A SL OR AL REMOUNT. * 25400021 * OPEN TAPE NSL OUTPUT INTERFACE FUNCTION AFTER A REMOUNT. * 25600021 * * 25800021 * EXITS, ERROR - * 26000021 * REFER TO THE PRECEDING MODULE PROLOG. * 26200021 * EXIT IS MADE WITH ONE OF THE FOLLOWING INTERNAL CODES-- * 26400021 * 2 - 413-08 ABEND - I/O ERROR ON A REWIND OR REWIND/UNLOAD. * 26600021 * 3 - 413-0C ABEND - I/O ERROR READING LABEL. * 26800021 * 5 - 413-14 ABEND - I/O ERROR WRITING LABELS ON SYSOUT TAPE. * 27000021 * 6 - 513-04 ABEND - VOLUME ALREADY HAS OPEN DATA SET. * 27200021 * * 27400021 * TABLES/WORK AREAS - * 27600021 * THE OPEN, CLOSE, OR EOV WORK AREA AND THE WHERE-TO-GO (WTG) * 27800021 * TABLE ARE DESCRIBED BY THE DSECTS AT THE END OF THE LISTING. * 28000021 * * 28200021 * ATTRIBUTES - * 28400021 * REFER TO THE PRECEDING MODULE PROLOG. * 28600021 * * 28800021 * CHARACTER CODE DEPENDENCY - * 29000021 * REFER TO THE PRECEDING MODULE PROLOG. * 29200021 * * 29400021 * NOTES - * 29600021 * * 29800021 *********************************************************************** 30000021 EJECT 30200021 * USING IHADCB,RDCB DEFINE BASE TO USER'S DCB 30600021 USING FORCORE,RCORE DEFINE BASE TO MAIN WORK AREA 30800021 USING TIOENTRY,RTIOT DEFINE BASE TO TIOT DD ENTRY 31000021 USING UCBOB,RUCB DEFINE BASE TO UCB 31400021 * 31500021 BALR RBASE,0 ESTABLISH ADDRESSABILITY 31600021 USING *,RBASE 31800021 * 32000021 * IF 6250 BPI TAPE SAVE UNIT SERIAL NUMBER IN UCB EXTENTION 32050003 * 32100003 CLI UCBTBYT4,X'03' 3400 SERIES DRIVE 99223 32150003 BNE OTA15400 NO. BRANCH 99223 32160003 CLI UCBSENSN,K24 HAVE 24 SENSE BYTES 99223 32170003 BNE OTA15400 NO, BRANCH 99223 32180003 LA R1,DXLBL+L'DXLBL INSERT ADDRESS XM4077 32182003 MVC DXCCW1+K4(K4),CCWCONS3 MOVE LENGTH OF 18 TO CCW XM4077 32184003 BAL RB,OTA18250 GO DO SENSE XM4077 32190003 SPACE 1 32190503 L RC,UCBXTN LOAD UCB EXTENTION ADDRS XM3581 32192003 USING UCBMT,RC XM3581 32192403 MVC K8(K2,RC),DXLBL+L'DXLBL+K15 MOVE UNIT SER TO EXT XM3581 32194003 XC DXLBL+L'DXLBL(K18),DXLBL+L'DXLBL CLEAR SENSE XM4077 32194103 DROP RC XM3581 32194403 SPACE 1 32196003 OTA15400 EQU * 32200021 CLI DXVOLMT1,VIRTUAL DOES VOLID START WITH FF 32400021 BE OTA17100 BR IF YES 32600021 NI UCBDMCT,X'FF'-UCBMOUNT RESET MOUNT SW 33200021 SPACE 33400021 *DUAL DENSITY TAPE DRIVE CHECK 33600021 SPACE 33800021 OTA15500 EQU * 34000021 TM PLISTOPT(RPARC),PLISTOIN TEST FOR OUTPUT OR OUTIN 34200021 BNO OTA16200 IF NEITHER, CONTINUE NORM PROC 34400021 TM UCBTBYT1,PE+UCB1FEA6 IS THIS PE OR 6250 UNIT 99223 34600003 BZ OTA16200 BRANCH IF NEITHER 99223 34800021 OTA15600 EQU * 35000021 TM JFCBLTYP,JFCBLP+JFCNSL+JFCNL TEST FOR BLP, NSL, OR NL 35200021 BZ OTA15700 BR IF NO (IS SL OR AL) SA61284 35250021 * 35300021 CLC JFCBFLSQ,ONET IS FILE SEQ LESS THAN SA61284 35310003 * OR EQUAL TO ONE SA61284 35360003 BNH OTA16200 IF YES, CONT NORM PROC SA61284 35410003 CLC UCBFSCT,ONET IS TAPE POSITIONED SA61284 35460021 * AT LOAD POINT SA61284 35510003 BH OTA15700 BR IF NO TO SENSE I/O SA61284 35560021 BAL RC,OTA18050 BR TO READ SA61284 35610003 BAL RB,OTA18200 DO SENSE I/O XM4375 35620003 BAL RC,OTA18430 BR TO BACKSPACE RECORD SA61284 35660003 B OTA15800 CHECK DENSITY XM4375 35710003 OTA15700 EQU * 36200021 BAL RB,OTA18200 DO SENSE I/O XM4077 36250021 SPACE 36800021 *BRANCH TO OMODVOL1 IF DENSITY OF VOLUME LABEL MOUNTED IS NOT THE SAME 37000021 * AS DENSITY SPECIFIED IN DCB FOR OUTPUT OR OUTIN. 37200021 SPACE 37400021 OTA15800 EQU * 37600021 TM UCBTBYT1,PE IS THIS A PE UNIT 99223 37650003 BNO OTA15850 NO,MUST BE 6250 99223 37700003 TM DXCCW6+K3,X'04' TEST FOR DENSITY OF VOL LABEL 37800021 BZ OTA15900 IF 800 BPI, BRANCH. 38000021 TM DXDEBMOD,X'08' CHECK IF 1600 BPI SPEC 38200021 B OTA15880 BR TO TEST SPEC SA61284 38600003 OTA15850 EQU * 6250 BPI UNIT 99223 38650003 TM DXCCW6+K6,UCBHIDD ALT. DENSITY SET 99223 38700003 BO OTA15860 YES,BRANCH SA69918 38750021 CLI DXDEBMOD,DCBD1600 MODE EQUAL 1600 99223 38760003 B OTA15880 BR TO TEST SPEC SA61284 38780003 OTA15860 EQU * CHECK FOR 6250 99223 38790003 CLI DXDEBMOD,DCBD6250 MODE EQUAL 6250 99223 38792003 OTA15880 EQU * SA61284 38792403 BE OTA16200 YES,CONTINUE SA61284 38794003 B OTA16000 CHECK FOR DD ERROR 99223 38796003 OTA15900 EQU * 38800021 TM DXDEBMOD,X'08' CHECK IF 800 SPEC 39000021 BO OTA16200 IF YES, CONT NORM PROC SA61284 39200003 OTA16000 EQU * 39400021 TM JFCBMASK+K5,JFCDUAL PRIOR DUAL DENSITY CHK 39600021 BNO OTA17040 NO, BRANCH SA61284 39800003 TM JFCBLTYP,JFCBLP+JFCNSL+JFCNL TEST BLP, NSL, NL SA61284 39850021 BM OTA16020 BRANCH IF SO SA61284 39900003 CLC JFCBFLSQ,ONET FILE SEQ GREATER THAN ONE 40000021 BNH OTA16200 NO, BRANCH 40200021 OTA16020 EQU * SA61284 40250003 TM UCBTBYT1,PE IS THIS A PE UNIT SA69918 40300021 BNO OTA16100 NO,BRANCH SA69918 40350021 XI JFCDEN,DCBDEN05 INSURE PROPER DENSITY 40400021 B OTA16200 CONTINUE SA69918 40450021 OTA16100 EQU * SA69918 40500021 XI JFCDEN,K16 INSURE PROPER DENSITY SA69918 40550021 * 41000021 *********************************************************************** 41200021 * 41400021 OTA16200 EQU * CONTINUE WITH NORMAL PROC 42800021 * ZERO LBL INDIC IN MASK 42900021 NI JFCBMASK+K5,X'FF'-JFCSTAND-JFCSLCRE-JFCSLDES-JFCDUAL 43000021 CLI JFCBVOLS,BLANK CHECK FOR VOL SER IN JFCB 43200021 BNE OTA16300 BRANCH IF YES 43400021 TM UCBTBYT2,UCBDDMSK DUAL DENSITY DRIVE 99223 43600003 BZ OTA16300 BRANCH IF NO 43800021 MVC JFCBVOLS(K6),UCBVOLI PUT VOL SER NO IN JFCB 44000021 OTA16300 EQU * 44200021 TM UCBDMCT,UCBDMC CK DATA MGMT COUNT FOR ZERO 44400021 BNZ OTA17600 BR IF DATA MGT CT NOT ZERO 44600021 OTA16400 EQU * 44800021 NI UCBSTAT,X'FF'-UCBDADI TURN SL SW OFF 45000021 NI UCBSTAB,X'FF'-UCBBSTR RESET AL BIT OFF IN UCB 45200021 TM JFCBLTYP,JFCNSL TEST FOR NON-STANDARD LABELS 45600021 BZ OTA16600 BR IF NO 45800021 OI UCBDMCT,UCBMOUNT SET MOUNT BIT FOR USER NSL 46000021 OTA16600 EQU * 46200021 TM UCBWGT,UCBOUT TEST FOR SYSOUT 46400021 BO OTA16700 BRANCH,YES 46600021 IC RB,UCBDMCT 46800021 LA RB,K1(,RB) ADD ONE TO DATA MGMT COUNT 47000021 STC RB,UCBDMCT 47200021 OI TIOESTTB,TIOSUSED 47400021 OTA16700 EQU * 47600021 TM JFCBMASK+K5,X'08' CHECK REJECT SWITCH 47800021 BZ OTA17100 BR IF NO 48000021 MVC JFCBVOLS(K6),UCBVOLI NEW VOL SERIAL NO TO JFCB 48200021 MVC UCBSQC(K6),UCBVOLI NEW VOL SERIAL NO TO UCB 48400021 MVI UCBFSEQ+K1,X'01' FILE SEQ NO TO ONE 48600021 MVI UCBFSCT+K1,X'01' FILE SEQ CNT TO ONE 48800021 MVC DXCCW1,REWCCWT SET UP CCW FOR REWIND 49000021 OABD002I EQU 002 I/O ERROR ON REWIND S21940 49100021 LA RD,OABD002I LOAD 413-08 ABEND CODE S21940 49200021 BAL RB,OTA18300 BRANCH TO EXEC CHAN PRGM 49400021 NI JFCBMASK+K5,X'F7' SET REJECT SW OFF 49600021 OI JFCBTSDM,JFCVSL SET VOLID LIST ALTERED A40554 49640021 * SO DATA SET MAY BE 49680021 * RECATALOGED WITH NEW 49720021 * VOLUME 49760021 TM JFCBLTYP,JFCSL CK FOR STD LABEL 49800021 BZ OTA16800 BR IF NO 50000021 OI UCBSTAT,UCBDADI RESET SL SW IN SRT 50200021 B OTA16900 BRANCH TO EXIT 50400021 OTA16800 EQU * 50600021 TM JFCBLTYP,JFCBAL CK FOR ASCII LABELS 50800021 BZ OTA17000 NO, BRANCH 51000021 OI UCBSTAB,UCBBSTR SET ASCII LABEL SW IN UCB 51200021 NI UCBSTAT,X'FF'-UCBDADI RESET SL BIT OFF IN UCB 51400021 OTA16900 EQU * 51600021 LA RF,ID4I6N POINT TO SL OUTPUT MOD IDTTR 51800021 B OTA17500 GO TO SL OUTPUT 52000021 OTA17000 EQU * 52200021 LA RF,ID4I6O NSL INTERFACE MOD IDTTR 52400021 LA RET,K4 NORMAL ENTRY TO NSL OUT 52600021 B OTA17500 GO TO NSL 52800021 * 53000021 OTA17040 EQU * SA61284 53050003 OI JFCBMASK+K5,JFCDUAL DENSITY CONFLICT BIT SA61284 53100003 LA RD,OABD002I LOAD 413-08 ABEND CODE SA61284 53150021 MVC DXCCW1,REWCCWT SET UP CCW FOR RWD SA61284 53160003 BAL RB,OTA18300 BR TO RWD SA61284 53170003 SR RB,RB CLEAR REGISTER SA61284 53180003 STH RB,UCBFSEQ ZERO FILE SEQ NUMBER SA61284 53190003 STH RB,UCBFSCT ZERO FILE SEQ COUNT SA61284 53192003 * 53194021 OTA17100 EQU * 53200021 LA RF,ID4I4J LABEL CONFLICT MOD IDTTR 53400021 LA RET,K4 ENTRY VALUE 53600021 TM JFCBMASK+K5,JFCSLDES+JFCSLCRE+JFCDUAL CONFLICT EXIST 53800021 BNZ OTA17500 YES, BRANCH 54000021 LA RF,ID4I4D VOL REFERENCE MOD IDTTR 54200021 TM JFCBMASK+K7,UCB3TAPE REQUIRE SECOND ENTRY 54400021 BO OTA17500 YES, BRANCH 54600021 LA RF,ID4I5D NSL IN INTERFACE MOD IDTTR 54800021 LA RET,K12 ENTRY VALUE 55000021 TM JFCBLTYP,JFCNSL NSL REQUIRED 55200021 BZ OTA17300 NO, BRANCH 55400021 TM PLISTOPT(RPARC),PLISTOIN OUTPUT OR OUTIN 55600021 BNO OTA17500 NO, BRANCH 55800021 TM JFCBIND2,JFCOLD DISP MOD 56000021 BNO OTA17500 YES, BRANCH 56200021 OTA17200 EQU * 56400021 LA RF,ID4I6J MERGE MODULE IDTTR 56600021 B OTA17500 GO TO MERGE MODULES 56800021 OTA17300 EQU * 57000021 LA RF,ID4I5C NL MODULE IDTTR 57200021 TM JFCBLTYP,JFCBLP+JFCNL NL OR BLP SPECIFIED 57400021 BZ OTA17400 NO, BRANCH 57600021 TM UCBWGT,UCBIN+UCBOUT SYSIN OR SYSOUT 57800021 BZ OTA17500 NO, BRANCH 58000021 B OTA17200 SKIP POSITIONING 58200021 OTA17400 EQU * 58400021 LA RF,ID4I5B SL MODULE IDTTR 58600021 SR RET,RET INITIAL ENTRY OFFSET SA69190 58700021 OTA17500 EQU * 58800021 IECRES XCTL,(RF),(RET) 59000021 * 59100021 *********************************************************************** 59120021 * 59140021 * TAPE IS ALREADY OPEN. 513-04 ABEND UNLESS SYSOUT TAPE (DSO) AND 59160021 * EITHER SCHEDULER OR ABEND IS IN CONTROL. 59180021 * IF SO, WRITE EOF1, EOF2, TM SO THAT OPEN CAN CONTINUE TO NEXT FILE. 59190021 * 59200021 OTA17600 EQU * 59400021 OABD006I EQU 006 DATA SET ALREADY OPENED S21940 59500021 * ON THIS TAPE 59600021 LA RD,OABD006I LOAD 513-04 ABEND CODE S21940 59800021 TM UCBWGT,UCBOUT TEST FOR SYSOUT 60000021 BZ OTA18400 NO, 513 ABEND 60200021 L RB,CVTPTR GET CVT ADDRESS 60400021 L RB,CVTTCBP-CVT(,RB) GET TCB POINTER 60600021 L RB,K4(RB) GET TCB ADDRESS 60800021 TM TCBFLGS3-TCB(RB),X'04' IS SCHEDULER IN CONTROL 61000021 BO OTA17700 BR IF YES TO WRITE TRAILER LBLS 61200021 TM TCBFLGS1-TCB(RB),TCBFA IS ABEND IN CONTROL 61400021 BZ OTA18400 NO, NORMAL 513 ABEND 61600021 * 61700021 OTA17700 EQU * 61800021 MVC DXCCW1,CCWCONS1 SET UP TO WRITE TAPE MARK 62000021 OABD005 EQU 005 I/O ERROR WRITING SYSOUT LBLS 62100021 LA RD,OABD005 LOAD 413-14 ABEND CODE S21940 62200021 BAL RB,OTA18300 BRANCH TO EXEC CHAN PRGM 62400021 * 62500021 MVC FL1LABI(K4),EOF1 SET UP TO WRITE EOF1 62600021 MVC FL1BLKCT,BLCTFF INDCT SRCE OF TRLR BY FF. 62800021 ST RCORE,DXCCW1 63000021 MVI DXCCW1,CCWWRTAP 63200021 MVC DXCCW1+K4(K4),CCWCONS2 63400021 TM JFCBLTYP,JFCBAL WERE ANSI LABEL SPEC. 63600021 BNO OTA17800 NO, BYPASS TRANSLATE 63800021 * 64000021 * TRANSLATE LABEL DATA BEFORE WRITING 64200021 * 64400021 BAL RB,OTA18500 TRANSLATE LABEL DATA SA69918 64600021 OTA17800 EQU * WRITE LABEL 64800021 BAL RB,OTA18300 BRANCH TO EXEC CHAN PRGM 65000021 * 65100021 MVC FL1LABI(K4),EOF2 SET UP TO WRITE EOF2 65200021 TM JFCBLTYP,JFCBAL WERE ANSI LABEL SPEC. 66000021 BNO OTA17900 NO, BYPASS TRANSLATE 66200021 * 66400021 * TRANSLATE LABEL DATA BEFORE WRITING 66600021 * 66800021 BAL RB,OTA18500 TRANSLATE LABEL DATA SA69918 67000021 OTA17900 EQU * GO WRITE LABELS 67200021 BAL RB,OTA18300 BRANCH TO EXEC CHAN PRGM 67400021 * 67500021 MVC DXCCW1,CCWCONS1 SET UP TO WRITE TAPE MARK 67600021 BAL RB,OTA18300 BRANCH TO EXEC CHAN PRGM 67800021 BAL RB,OTA18300 WRITE SECOND TAPE MARK 68000021 MVI DXCCW1,CCWBSF SET UP TO DO BSF 68200021 MVI DXCCW1+K4,CCWCMDCH+CCWSILI COMMAND CHAIN 68400021 MVI DXCCW2,CCWNOP TO NOOP 68600021 MVC DXCCW2+K4(K4),CCWCONS2 SET SILI AND BYTE COUNT 68800021 BAL RB,OTA18300 BRANCH TO EXEC CHAN PROG 69000021 NI UCBDMCT,X'FF'-UCBDMC ZERO DATA MNGT COUNT 69200021 B OTA16400 BRANCH TO CONTINUE OPEN 69400021 * 69450021 *********************************************************************** 69500021 * 69550021 OTA18000 EQU * 69600021 MVC DXCCW1,REWCCWT SET UP CCW FOR REWIND 69800021 LA RD,OABD002I LOAD 413-08 ABEND CODE S21940 70000021 BAL RB,OTA18300 BRANCH TO EXEC CHAN PRGM 70200021 OTA18050 EQU * SA61284 70250003 ST RCORE,DXCCW1 LABEL AREA ADDR IN READ CCW 70400021 LA RB,K80 NO FLAGS, 80 CHARACTERS 70600021 ST RB,DXCCW1+K4 SET BYTE COUNT 70800021 TM JFCBLTYP,JFCBAL WERE ANSI LABEL SPEC. 71000021 BNO OTA18100 DO NOT TURN ON SILI 71200021 MVI DXCCW1+K4,CCWSILI TURN ON SILI BIT 71400021 OTA18100 EQU * EXECUTE CHANNEL PROGRAM 71600021 MVI DXCCW1,CCWRDTAP SET UP READ TAPE OP CODE 71800021 OABD003I EQU 003 I/O ERROR READING LABEL S21940 71900021 LA RD,OABD003I LOAD 413-0C ABEND CODE S21940 72000021 BAL RB,OTA18300 BRANCH TO EXECUTE CHAN PRGM 72200021 BR RC RETURN 72400021 OTA18200 EQU * 72600021 LA R1,DXCCW6 INSERT ADDRESS XM4077 73000003 MVC DXCCW1+K4(K4),CCWCONS4 MOVE LENGTH OF 8 TO CCW XM4077 73050003 OTA18250 EQU * XM4077 73100003 ST R1,DXCCW1 STORE ADDRS IN CCW XM4077 73200003 MVI DXCCW1,CCWSENSE 73400021 LA RD,OABD003I LOAD 413-0C ABEND CODE XM4077 73500021 * 73600021 OTA18300 EQU * 73800021 EXCP DXIOB 74000021 IECRES WAIT 74200021 TM DXECB,ECBNOERR CK FOR I/O ERROR 74400021 BCR 1,RB RETURN IF NO ERROR 74600021 TM JFCBLTYP,JFCBLP+JFCNSL+JFCNL TEST BLP, NSL, NL SA61284 74650021 BCR 7,RB RETURN IF YES, NOT ERR SA61284 74700021 * 74750021 OTA18400 EQU * 74800021 DMABCOND (RD),ID4I0P 75000021 * 75005021 OTA18430 EQU * SA61284 75010003 LA RD,K80 NO FLAGS, 80 CHAR SA61284 75050003 ST RD,DXCCW1+K4 SET BYTE COUNT SA61284 75100003 LA RD,OABD002I LOAD 413-08 ABEND CODE SA61284 75150021 MVI DXCCW1,CCWBSR SET BACKSPACE OP CODE SA61284 75160003 BAL RB,OTA18300 BR TO EXEC CHAN PGM SA61284 75170003 MVI DXCCW1,CCWNOP SET NOP CODE SA61284 75180003 MVC DXCCW1+K4(K4),CCWCONS2 SET SILI AND BYTE COUNT SA61284 75190003 BAL RB,OTA18300 BR TO EXEC CHAN PGM SA61284 75192003 BR RC RETURN TO CALLER SA61284 75194021 * 75195021 OTA18500 EQU * SA69918 75196021 XLATE DXLBL,K80,TO=A TRANSLATE DATA SA69918 75198021 BR RB RETURN TO CALLER SA69918 75198421 * 75200021 *********************************************************************** 75250021 * 75300021 * CONSTANTS 75350021 * 75400021 REWCCWT DC X'0700000020000005' REW 75600021 * 75800021 ONET DC X'0001' CONSTANT OF 1 76000021 HEADER DC C'HDR1' HEADER 1 76200021 * 76400021 * F03 AVERT CONSTANTS 76600021 EOF1 DC C'EOF1' END OF FILE 1 76800021 EOF2 DC C'EOF2' END OF FILE 2 77000021 BLCTFF DC X'0000F9F9F9F9' BLOCK COUNT FOR SPRINTER 77200021 CCWCONS4 DC X'20000008' TAPE SENSE CONSTANT XM4077 77210003 CCWCONS3 DC X'20000012' 3420 SENSE CONSTANT XM4077 77250003 CCWCONS2 DC X'20000050' TAPE MARK CONSTANT 77400021 CCWCONS1 DC X'1F00000020000005' TAPE MARK CONSTANT 77600021 * 78000021 XCTL4I XCTLTABL ID=(ID4I4D,4D,ID4I4J,4J,ID4I5B,5B,ID4I5C,5C, X78200021 ID4I5D,5D,ID4I6J,6J,ID4I6N,6N,ID4I6O,6O,ID4I0P,0P) 78400021 EJECT 78450021 IECEQU , DEFINE EQUATES S21940 78500021 IECDSECS CVT,TCB,TIOT,UCB,MAIN,EXPAND=YES S21940 78600021 END 78800021 ./ ADD SSI=21280224,NAME=IFG0194J,SOURCE=0 TITLE 'IFG0194J - LABEL EDITOR INTERFACT FUNCTION (OMODVOL1)' 00050021 GBLC &LIB 00800021 &LIB SETC 'LIB1' 01200021 IFG0194J CSECT 01600021 *********************************************************************** 02000021 * * 02400021 * * 02800021 * RELEASE 25 DELETIONS/CHANGES * 03200021 * RELEASE 24 DELETIONS/CHANGES * 03600021 * RELEASE 23 DELETIONS/CHANGES * 04000021 * RELEASE 22 DELETIONS/CHANGES * 04400021 * RELEASE 21 DELETIONS/CHANGES * 04800021 *0000 A44128 04850021 * * 05200021 * STATUS CHANGE LEVEL 000 * 05600021 * * 06000021 * FUNCTION - * 06400021 * THIS MODULE CONTAINS THE FUNCTION(S) OR PART(S) OF FUNCTION(S)-- * 06800021 * OPEN TAPE LABEL EDITOR INTERFACE FUNCTION. * 07200021 * REFER TO THE FOLLOWING 'FUNCTION PROLOG(S)' FOR DETAILS. * 07600021 * * 08000021 * ENTRY POINTS - * 08400021 * IFG0194J - ENTRY POINT VIA THE RESIDENT XCTL FROM THE FOLLOWING--* 08800021 * IFG0194H - DUE TO A LABEL CONFLICT. * 09200021 * IFG0194I - DUE TO A DENSITY CONFLICT. * 09600021 * IGG0190A - ALIAS ENTRY POINT WHEN RETURNING FROM THE USER * 10000021 * WRITTEN OMODVOL1. * 10400021 * * 10800021 * INPUT - * 11200021 * REFER TO THE FOLLOWING 'FUNCTION PROLOG(S)'. * 11600021 * * 12000021 * OUTPUT - * 12400021 * REFER TO THE FOLLOWING 'FUNCTION PROLOG(S)'. * 12800021 * * 13200021 * EXTERNAL REFERENCES - * 13600021 * IFG019RA - OPEN/CLOSE/EOV RESIDENT ROUTINE FOR XCTL AND * 14000021 * WAIT. * 14400021 * REFER TO THE FOLLOWING 'FUNCTION PROLOG(S)'. * 14800021 * * 15200021 * EXITS, NORMAL - * 15600021 * EXIT VIA XCTL TO OMODVOL1. * 16000021 * OMODVOL1 IS THE ALIAS NAME FOR IFG0193C WHICH WILL BE * 16400021 * ENTERED IF THE USER HAS NOT PROVIDED HIS OWN OMODVOL1. * 16800021 * IF THE USER HAS PROVIDED HIS OWN OMODVOL1 THIS MODULE WILL EXIT * 17200021 * AFTER HIS RETURN TO IFG0194F TO REPROCESS THE DCB. * 17600021 * REFER TO THE FOLLOWING 'FUNCTION PROLOG(S)'. * 18000021 * * 18400021 * EXITS, ERROR - * 18800021 * NONE. * 19200021 * * 19600021 * TABLES/WORK AREAS - * 20000021 * REFER TO THE FOLLOWING 'FUNCTION PROLOG(S)'. * 20400021 * * 20800021 * ATTRIBUTES - * 21200021 * REENTRANT, REFRESHABLE, READ-ONLY, ENABLED, PRIVILEGED * 21600021 * * 22000021 * CHARACTER CODE DEPENDENCY - * 22400021 * CLASS ONE CHARACTER CODE DEPENDENCY - THE EBCDIC CHARACTER CODE * 22800021 * WAS USED FOR ASSEMBLY. THE MODULE MUST BE REASSEMBLED IF A * 23200021 * DIFFERENT CHARACTER SET IS USED FOR EXECUTION. * 23600021 * * 24000021 * NOTES - * 24400021 * REFER TO THE FOLLOWING 'FUNCTION PROLOG(S)'. * 24800021 * * 25200021 *********************************************************************** 25600021 EJECT 26000021 *********************************************************************** 26400021 * * 26800021 * FUNCTION PROLOG * 27200021 * * 27600021 *********************************************************************** 28000021 * * 28400021 * FUNCTION NAME - * 28800021 * OPEN TAPE LABEL EDITOR INTERFACE FUNCTION. * 29200021 * * 29600021 * (STATUS) - * 30000021 * NOT APPLICABLE * 30400021 * * 30800021 * FUNCTION - * 31200021 * INITIAL ENTRY-- * 31600021 * SYNCHRONIZE ALL DCBS. SET UP ALL THE CONDITIONS TO RETURN TO * 32000021 * PARALLEL PROCESSING MODE INCASE THE USER HAS PROVIDED HIS OWN * 32400021 * LABEL EDITOR. EXIT TO THE LABEL EDITOR. * 32800021 * RETURN ENTRY-- * 33200021 * THIS SECTION IS ONLY ENTERED WHEN THE USER HAS PROVIDED HIS OWN * 33600021 * LABEL EDITOR ROUTINE (OMODVOL1). RESET THE CONDITIONS TO * 34000021 * RETURN TO RESIDENT ROUTINE SERIAL PROCESSING. EXIT TO REPROCESS * 34400021 * THE DCBS. * 34800021 * * 35200021 * ENTRY POINTS - * 35600021 * ENTERED FROM THE FOLLOWING-- * 36000021 * OPEN TAPE VOLUME VERIFICATION FUNCTION DUE TO A LABEL CONFLICT. * 36400021 * OPEN TAPE FINAL COMMON FUNCTION DUE TO A DENSITY CONFLICT. * 36800021 * USER WRITTEN LABEL EDITOR ROUTINE TO RETURN TO NORMAL PROCESSING.* 37200021 * REFER TO THE PRECEEDING MODULE PROLOG. * 37600021 * * 38000021 * INPUT - * 38400021 * A POINTER TO EACH OF THE FOLLOWING-- * 38800021 * CURRENT PARAMETER LIST ENTRY. * 39200021 * DD ENTRY IN THE TIOT. * 39600021 * WTG TABLE. * 40000021 * CURRENT WTG TABLE ENTRY. * 40400021 * DCB. * 40800021 * OPEN WORK AREA. * 41200021 * RESIDENT ROUTINE. * 41600021 * UCB * 42000021 * * 42400021 * OUTPUT - * 42800021 * A DUAL INTERFACE HAS BEEN SET UP SO THAT THE SYSTEM, OR A USER * 43200021 * WRITTEN, LABEL EDITOR MAY BE ENTERED. * 43600021 * * 44000021 * EXTERNAL REFERENCES - * 44400021 * REFER TO THE PRECEEDING MODULE PROLOG. * 44800021 * * 45200021 * EXITS, NORMAL - * 45600021 * REFER TO THE PRECEEDING MODULE PROLOG. * 46000021 * OPEN TAPE LABEL EDITOR FUNCTION FOR LABEL OR DENSIT CONFLICTS. * 46400021 * (USER WRITTEN LABEL EDITOR IF ONE EXISTS.) * 46800021 * OPEN TAPE MOUNT VERIFICATION FUNCTION TO REPROCESS THE DCB. * 47200021 * (ONLY WHEN THE USER HAS PROVIDED HIS OWN LABEL EDITOR ROUTINE.) * 47600021 * * 48000021 * EXITS, ERROR - * 48400021 * REFER TO THE PRECEEDING MODULE PROLOG. * 48800021 * * 49200021 * TABLES/WORK AREAS - * 49600021 * THE OPEN, CLOSE, OR EOV WORK AREA AND THE WHERE-TO-GO (WTG) * 50000021 * TABLE ARE DESCRIBED BY THE DSECTS AT THE END OF THE LISTING. * 50400021 * * 50800021 * ATTRIBUTES - * 51200021 * REFER TO THE PRECEEDING MODULE PROLOG. * 51600021 * * 52000021 * CHARACTER CODE DEPENDENCY - * 52400021 * REFER TO THE PRECEEDING MODULE PROLOG. * 52800021 * * 53200021 * NOTES - * 53600021 * * 54000021 *********************************************************************** 54400021 EJECT 54800021 USING FORCORE,RCORE WORK AREA 55200021 BALR RBASE,0 SET BASE REGISTER 55600021 USING *,RBASE 56000021 * 56400021 B OTA18500(RET) GO TO PROPER ENTRY 56800021 OTA18500 EQU * 57200021 NOP OTA18600 UNUSED ENTRY 57600021 OTA18600 EQU * 58000021 B OTA18700 INITAL ENTRY 58400021 B OTA19100 RETURN FROM USER WRITTEN OMOD 58800021 * 59200021 OTA18700 EQU * 59600021 STM RTIOT,RUCB,DXXCTL SAVE REGISTERS 60000021 IECRES SYNCHDCB 60400021 LR RD,RES SAVE RES ROUTINE POINTER 60800021 L RPAR,K16(RWTG) POINT TO ECB LIST 61200021 L RPAR,K0(RPAR) GET PARM LIST POINTER 61600021 LR RB,RPAR GET FIRST ENTRY IN LIST 62000021 LA RC,K32(RWTG) GET FIRST WTG ENTRY 62400021 OTA18800 EQU * 62800021 CLC K0(K2,RC),THISID THIS DCB NEED OMOD 63200021 BNE OTA18900 NO, BRANCH 63600021 MVC K0(K5,RC),ID4J3C MOVE IN OMOD IDTTR 64000021 L RF,K4(RC) GET WORK AREA ADDRESS 64400021 SR RET,RET ENTRY FOR SYSTEM OMOD 64800021 ST RET,DXREGE-FORCORE(RF) SAVE ENTRY IN WORK AREA 65200021 OTA18900 EQU * 65600021 TM K0(RB),LASTNTRY IS THIS THE LAST DCB 66000021 BO OTA19000 YES, BRANCH 66400021 LA RB,K4(RB) POINT TO NEXT DCB 66800021 LA RC,K8(RC) NEXT WTG ENTRY 67200021 B OTA18800 GO CHECK NEXT DCB 67600021 OTA19000 EQU * 68000021 LA RET,K8 SET BRANCH VALUE FOR RETURN 68400021 MVC K0(K8,RWTG),OMODVOL1 MOVE OMOD NAME TO WTG TABLE 68800021 LA RF,DXCCW12 XCTL WORK AREA 69200021 XCTL EPLOC=(RWTG),DCB=0,SF=(E,(15)) 69600021 * 70000021 * THE FOLLOWING CODE IS EXECUTED WHEN THE USER HAS 70400021 * SUPPLIED A COPY OF OMODVOL1. HIS RETURN TO MODULE 70800021 * IGG0190A WILL ENTER HERE. 71200021 * 71600021 OTA19100 EQU * 72000021 MVC K0(K8,RWTG),MODNM4J RESTORE IFG019 TO WTG 72400021 LR RPARC,RPAR GET FIRST ENTRY IN PARM LIST 72800021 LA RWTGC,K32(RWTG) GET FIRST WTG ENTRY 73200021 OTA19200 EQU * 73600021 L RCORE,K4(RWTGC) WORK AREA POINTER 74000021 L RDCB,K0(RPARC) DCB ADDRESS 74400021 CLC K0(K2,RWTGC),ID4J3C THIS DCB USE OMOD 74800021 BNE OTA19300 NO, BRANCH 75200021 NI JFCBMASK+5,X'FF'-JFCSTAND-JFCSLCRE-JFCSLDES-JFCDUAL 75250021 * RESET OMOD INDICATORS TO A44128 75300021 * PERMIT USER'S OMOD TO A44128 75350021 * PROCESS NEXT TAPE, IF A44128 75400021 * CONFLICT STILL EXISTS A44128 75450021 MVC K0(K5,RWTGC),ID4J4F MOUNT VERIFY IDTTR 75600021 MVC DXREG9(K8),DXXCTL RESTORE RTIOT AND RUCB 76000021 SR RET,RET ZERO BR TABLE REG FOR A44128 76050021 * NORMAL ENTRY FOR MOUNT A44128 76100021 * VERIFICATION FUNCTION A44128 76150021 ST RET,DXREGE INSERT IN REG SAVE AREA A44128 76200021 OTA19300 EQU * 76400021 TM K0(RPARC),LASTNTRY LAST DCB IN PARM LIST 76800021 BO OTA19400 YES, BRANCH 77200021 LA RPARC,K4(RPARC) GET NEXT ENTRY IN LIST 77600021 LA RWTGC,K8(RWTGC) GET NEXT WTG ENTRY 78000021 B OTA19200 GO CHECK NEXT DCB 78400021 OTA19400 EQU * 78800021 LR RES,RD RESTORE RES RTN POINTER 79200021 LM RTIOT,RET,DXREG9 RESTORE FOR RES RTN SAVE A44128 79600021 LM R0,R1,DXREG0 RESTORE FOR RES RTN SAVE A44128 79650021 IECRES XCTL 80000021 * 80400021 * CONSTANTS 80800021 * 81200021 THISID DC C'4J' THIS MODULES ID 81600021 OMODVOL1 DC C'OMODVOL1' OMOD NAME FOR XCTL 82000021 MODNM4J DC C'IFG0194J' TO RESTORE WTG MOD NAME 82400021 * 82800021 XCTL4J XCTLTABL ID=(ID4J3C,3C,ID4J4F,4F) 83200021 IECDSECS CVT,TCB,TIOT,DCB,UCB,MAIN,WTG,EXPAND=YES 83600021 IECEQU 84000021 END 84400021 ./ ADD SSI=00011380,NAME=IFG0194R,SOURCE=0 TITLE 'IFG0194R - OPEN TAPE SL POSITIONING ERROR RECOVERY' 00200000 COPY LCGASMSW 00400000 IFG0194R CSECT 00600000 *********************************************************************** 00800000 * * 01000000 * * 01200000 * VS1 RELEASE 04.0 DELETIONS/CHANGES * 01400000 * VS1 RELEASE 03.1 DELETIONS/CHANGES * 01600000 *SEE SA69190 XA05166 01800000 * * 02000000 * RELEASE 21.8 DELETIONS/CHANGES * 02200000 *0000 SA69190 02400000 *0000 SA69926 02600000 * * 02800000 * STATUS CHANGE LEVEL 000 * 03000000 * * 03200000 * FUNCTION - * 03400000 * THIS MODULE CONTAINS THE FUNCTION(S) OR PART(S) OF FUNCTION(S)-- * 03600000 * OPEN TAPE SL POSITION FUNCTION. * 03800000 * * 04000000 * ENTRY POINTS - * 04200000 * IFG0194R - VIA THE RESIDENT ROUTINE XCTL FROM THE FOLLOWING- * 04400000 * IFG0195B - RET=0 EOV1 ENCOUNTERED AND MORE VOLSER EXIST. * 04600000 * IFG0195H - RET=4 DSNAME IS BAD OR FILE SEQUENCE LESS THAN * 04800000 * TAPE AND ARE OPENING FOR RDBACK OR OUTPUT DISP=MOD * 05000000 * AND THIS IS NOT THE FIRST VOLSER. * 05200000 * * 05400000 * INPUT - * 05600000 * REFER TO THE FOLLOWING 'FUNCTION PROLOG(S)'. * 05800000 * * 06000000 * OUTPUT - * 06200000 * REFER TO THE FOLLOWING 'FUNCTION PROLOG(S)'. * 06400000 * * 06600000 * EXTERNAL REFERENCES - * 06800000 * IFG019RA - OPEN/CLOSE/EOV RESIDENT ROUTINE FOR XCTL AND WAIT. * 07000000 * REFER TO THE FOLLOWING 'FUNCTION PROLOG(S)'. * 07200000 * * 07400000 * EXITS, NORMAL - * 07600000 * EXIT VIA THE RESIDENT ROUTINE XCTL TO THE FOLLOWING-- * 07800000 * IFG0193A - TO GET NEXT OR PREVIOUS VOLSER NO. AND VOLUME. * 08000000 * REFER TO THE FOLLOWING 'FUNCTION PROLOG(S)'. * 08200000 * * 08400000 * EXITS, ERROR - * 08600000 * EXIT IS TO THE PROBLEM DETERMINATION MODULE IFG0190P, IF AN * 08800000 * ABEND SITUATION OCCURS IN THIS MODULE. REFER TO THE FOLLOWING * 09000000 * 'FUNCTION PROLOG(S)'. * 09200000 * * 09400000 * TABLES/WORK AREAS - * 09600000 * REFER TO THE FOLLOWING 'FUNCTION PROLOG(S)'. * 09800000 * * 10000000 * ATTRIBUTES - * 10200000 * REENTRANT, REFRESHABLE, READ-ONLY, ENABLED, PRIVILEGED * 10400000 * * 10600000 * CHARACTER CODE DEPENDENCY - * 10800000 * CLASS ONE CHARACTER CODE DEPENDENCY - THE EBCDIC CHARACTER CODE * 11000000 * WAS USED FOR ASSEMBLY. THE MODULE MUST BE REASSEMBLED IF A * 11200000 * DIFFERENT CHARACTER SET IS USED FOR EXECUTION. * 11400000 * * 11600000 * NOTES - * 11800000 * THIS MODULE WAS CREATED IN OS RELEASE 21.8 (VS1-03.1) BY A * 12000000 * SPLIT OF IFG0195B FOR SA69190 (XA05166). * 12200000 * REFER TO THE FOLLOWING 'FUNCTION PROLOG(S)'. * 12400000 * * 12600000 *********************************************************************** 12800000 EJECT 13000000 *********************************************************************** 13200000 * * 13400000 * FUNCTION PROLOG * 13600000 * * 13800000 *********************************************************************** 14000000 * * 14200000 * FUNCTION NAME - * 14400000 * OPEN TAPE SL POSITIONING FUNCTION. * 14600000 * (CONTINUED FROM IFG0195B) * 14800000 * * 15000000 * (STATUS) - * 15200000 * NOT APPLICABLE * 15400000 * * 15600000 * FUNCTION - * 15800000 * ZERO THE DCB BLOCK COUNT. * 16000000 * TEST THE UCB FILE SEQUENCE NUMBER. IF IT IS ZERO, THEN THE * 16200000 * FIRST HEADER LABEL IS READ AND THE FILE SEQUENCE NUMBER * 16400000 * FROM THE LABEL IS PLACED IN THE UCB. * 16600000 * POSITIONING IS DETERMINED BY COMPARING THE UCB AND JFCB FILE * 16800000 * SEQUENCE NUMBERS. THE TAPE IS FOWARD OR BACK SPACED AS NECESSARY * 17000000 * TO POSITION TO THE REQUESTED FILE. * 17200000 * THE TAPE IS POSITIONED TO THE HEADER 1 LABEL FOR NORMAL INPUT * 17400000 * OPERATIONS. IT IS POSITIONED TO THE TRAILER 1 LABEL FOR RDBACK * 17600000 * OR DISP=MOD PROCESSING. * 17800000 * * 18000000 * ENTRY POINTS - * 18200000 * ENTERED FROM THE FOLLOWING-- * 18400000 * OPEN TAPE FINAL COMMON FUNCTION FOR SL OR AL POSITIONING. * 18600000 * OPEN TAPE VOLUME REFERENCE FUNCTION. * 18800000 * REFER TO THE PRECEDING MODULE PROLOG. * 19000000 * * 19200000 * INPUT - * 19400000 * A POINTER TO EACH OF THE FOLLOWING-- * 19600000 * CURRENT PARAMETER LIST ENTRY. * 19800000 * DD ENTRY IN THE TIOT. * 20000000 * WTG TABLE. * 20200000 * CURRENT WTG TABLE ENTRY. * 20400000 * DCB. * 20600000 * OPEN WORK AREA. * 20800000 * RESIDENT ROUTINE. * 21000000 * UCB * 21200000 * * 21400000 * OUTPUT - * 21600000 * THE TAPE IS POSITIONED TO THE REQUESTED FILE. * 21800000 * WTP INFO ERROR MSG IEC140I START/END DATA SET NOT ON VOLUME. * 22000000 * * 22200000 * EXTERNAL REFERENCES - * 22400000 * REFER TO THE PRECEDING MODULE PROLOG. * 22600000 * * 22800000 * EXITS, NORMAL - * 23000000 * OPEN TAPE SL INPUT/MOD HEADER LABEL 1 FUNCTION FOR FILE * 23200000 * LABEL 1 VERIFICATION. * 23400000 * OPEN MERGE JFCB FUNCTION TO CONTINUE OUTPUT PROCESSING. * 23600000 * REFER TO THE PRECEDING MODULE PROLOG. * 23800000 * * 24000000 * EXITS, ERROR - * 24200000 * REFER TO THE PRECEDING MODULE PROLOG. * 24400000 * EXIT WITH ONE OF THE FOLLOWING INTERNAL CODES-- * 24600000 * 9 - 613-04 ABEND - I/O ERROR POSITIONING TAPE. * 24800000 * 10 - A13-04 ABEND - BACKSPACED INTO LOAD POINT DUE TO A * 25000000 * INCORRECT UCB FILE SEQUENCE COUNT OR TAPE POSITION. * 25200000 * 11 - 613-08 ABEND - I/O ERROR READING LABEL. (RECOVERABLE) * 25400000 * 152 - A13-08 ABEND - FILE SEQUENCE BEFORE START OF VOLUME * 25600000 * WHILE POSITIONING TO START OF FILE. * 25800000 * 153 - A13-0C ABEND - FILE SEQUENCE BEFORE START OF VOLUME * 26000000 * WHILE POSITIONING TO END OF FILE. * 26200000 * 154 - A13-10 ABEND - TM INSTEAD OF HDR1 DURING FSF POSITIONING.* 26400000 * 156 - A13-18 ABEND - EOV1 ON LAST OR ONLY VOLUME AND * 26600000 * DESIRED FILE SEQUENCE IS GREATER THAN EOV1'S. * 26800000 * * 27000000 * TABLES/WORK AREAS - * 27200000 * THE OPEN, CLOSE, OR EOV WORK AREA AND THE WHERE-TO-GO (WTG) * 27400000 * TABLE ARE DESCRIBED BY THE DSECTS AT THE END OF THE LISTING. * 27600000 * * 27800000 * ATTRIBUTES - * 28000000 * REFER TO THE PRECEDING MODULE PROLOG. * 28200000 * * 28400000 * CHARACTER CODE DEPENDENCY - * 28600000 * REFER TO THE PRECEDING MODULE PROLOG. * 28800000 * * 29000000 * NOTES - * 29200000 * * 29400000 *********************************************************************** 29600000 EJECT 29800000 * USING IHADCB,RDCB DEFINE BASE TO USER'S DCB 30000000 USING FORCORE,RCORE DEFINE BASE TO MAIN WORK AREA 30200000 USING TIOENTRY,RTIOT DEFINE BASE TO TIOT DD ENTRY 30400000 USING UCB,RUCB DEFINE BASE TO UCB 30600000 * 30800000 BALR RBASE,0 ESTABLISH BASE REGISTER 31000000 USING *,RBASE DEFINE BASE REGISTER 31200000 * 31400000 B OTA27700(RET) BR TO INDICATED FUNCTION 31600000 * 31800000 OTA27700 B OTA27720 RET=0 EOV1 ENCOUNTERED 32000000 B OTA27740 RET=4 FSEQ BEFORE TAPE RECOVERY 32200000 * 32400000 *********************************************************************** 32600000 * 32800000 * EOV1 LABEL ENCOUNTERED IN FRONT OF OR AT END OF DESIRED FILE. 33000000 * IF POSITIONING TO START OF FILE, TRY TO GO TO NEXT TAPE AND 33200000 * CONTINUE FSF TO CORRECT FILE. 33400000 * IF POSITIONING TO END OF FILE, ABEND UNLESS EOV1 IS FOR DESIRED 33600000 * FILE AND SO CAN TREAT AS EOF. 33800000 * (CONTINUED FROM IFG0195B) 34000000 * 34200000 * R0 CONTAINS OABD152 A13-08 ABEND CODE 34400000 OTA27720 EQU * POS TO START OF FILE SA55582 34600000 LH RB,JFCBVLSQ LOAD VOLUME SEQUENCE NO SA55582 34800000 LTR RB,RB TEST IT SA55582 35000000 BNZ OTA27730 BR IF NOT ZERO SA55582 35200000 LA RB,K1 ELSE SET IT TO 1 SA55582 35400000 OTA27730 EQU * SA55582 35600000 SR RC,RC ZERO REG SA68161 35800000 IC RC,JFCBNVOL LOAD NUMBER OF VOLS SA68161 36000000 CR RC,RB IS VOLSEQ = NO. OF VOLS SA68161 36200000 BE OTA27780 BR IF YES TO ABEND SA68161 36400000 LA RB,K1(,RB) INCREMENT VOLSEQ BY 1 SA55582 36600000 STH RB,JFCBVLSQ AND STORE IT BACK SA55582 36800000 * 37000000 * WRITE MSG 'IEC140I DDNAMEXX,VOLIDX START OF DATA SET NOT ON VOLUME' 37200000 * OR 'IEC140I DDNAMEXX,VOLIDX END OF DATA SET NOT ON VOLUME' 37400000 * 37600000 MVC MSGLSTSZ(OTA2779L),OTA2779M MOVE MSG WORK AREA SA55582 37800000 B OTA27750 BR TO COMPLETE MSG SA69190 38000000 * 38200000 OTA27740 EQU * SA69190 38400000 MVC MSGLSTSZ(OTA2779L),OTA2779M MOVE MSG WORK AREA SA69190 38600000 MVC MSGVOLSR+K10(K5),OTA27799 SET MSG TO ' END' SA69190 38800000 OTA27750 EQU * SA69190 39000000 MVC MSGACTN(L'TIOEDDNM),TIOEDDNM DDNAME TO MSG SA55582 39200000 MVC MSGVOLSR+K3,UCBVOLI VOLID TO MESSAGE SA55582 39400000 WTO MF=(E,MSGLSTSZ) WRITE MSG TO PROGRAMMER SA55582 39600000 * 39800000 * ROTATE UCB POINTERS IN TIOT TO SPREAD OUT USAGE 40000000 * OF ALLOCATED UNITS. THIS ALLOWS THE NEXT TAPE TO 40200000 * BE MOUNTED IMMEDIATELY, RATHER THAN HAVE TO WAIT FOR 40400000 * THIS UNIT TO BE REWOUND AND UNLOADED FROM END OF REEL 40600000 * (2 MINUTES). THIS ASSUMES OTHER TAPE DRIVES ARE UNLOADED 40800000 * OR AT LOAD POINT, OTHERWISE NO SAVING OR LOSS OF TIME. 41000000 * 41200000 SR RB,RB ZERO REG B YM5583 41400000 IC RB,TIOELNGH GET DD ENTRY LENGTH YM5583 41600000 LA RC,TIOESTTB-TIOENTRY+K1 GET NON UNIT LENGTH + 1 YM5583 41800000 SR RB,RC GET UNIT LENGTH - 1 YM5583 42000000 EX RB,OTA27760 MOVE UCB ADDR LEFT YM5583 42200000 ST RUCB,TIOESTTB-K3(RB) OLD UCB PT TO LAST POS YM5583 42400000 MVI UCBDMCT,K0 RESET DATA MGMT COUNT YM5583 42600000 * 42800000 AIF ('&LIB' NE 'LIB1').LIB24R1 SA69926 43000000 * RESTORE UCB ADDR AND EXTENT OF SYS1.SYSJOBQE JFCB IN WORK DEB. 43200000 * 43400000 IECDSECS CVT,DCB REQUEST EXTRA DSECTS SA69926 43600000 L R1,CVTPTR GET CVT ADDRESS SA69926 43800000 L R1,CVTJOB-CVT(,R1) JOB SCHED JOBQUE DCB SA69926 44000000 L R1,DCBDEBAD-IHADCB(,R1) GET JOB SCHED DEB ADDR SA69926 44200000 MVC DXDEBUCB(K16),K32(R1) COPY UCB ADDR + EXTENT SA69926 44400000 * 44600000 * RESTORE CCW'S TO SEARCH ID EQ, TIC *-8 SO JFCB EXTENSION 44800000 * CAN BE READ BY IFG0193A. (NOT WORTH SETING UP RPS CCWS) 45000000 * 45200000 XC DXCCW1(K16),DXCCW1 CLEAR 2 CCW'S SA69926 45400000 LA RF,DXDAADDR+K3 SEARCH ID ADDRESS SA69926 45600000 ST RF,DXCCW1 INTO CCW1 SA69926 45800000 LA RF,DXCCW1 TIC ADDRESS SA69926 46000000 ST RF,DXCCW2 INTO CCW2 SA69926 46200000 OC DXCCW1(K9),OTA2779S OR IN CMND,FLAGS,LENGTH SA69926 46400000 * UCB ADDR, EXT SET IN IFG0193A 46600000 .LIB24R1 ANOP SA69926 46800000 * 47000000 IECRES XCTL,ID4R3A,12 XCTL TO IFG0193A 47200000 * 47400000 OTA27760 MVC TIOESTTB(*-*),TIOESTTB+K4 SHIFT UCB LIST LEFT 47600000 * 47800000 *********************************************************************** 48000000 * 48200000 OTA27780 EQU * ERROR CONDITION ENCOUNTERED 48400000 MVI UCBDMCT,K0 ZERO UCB DATA MANAGEMENT COUNT 48600000 DMABCOND (0),ID4R0P XCTL TO PROB DET / ABEND 48800000 * 49000000 *********************************************************************** 49200000 EJECT 49400000 *********************************************************************** 49600000 * 49800000 * CONSTANTS 50000000 * 50200000 OTA2779M WTO 'IEC140I DDNAMEXX,VOLIDX START OF DATA SET NOT ON VOLUME'X50400000 ,MF=L,DESC=6, JOB STATUS SA69190*50600000 ROUTCDE=11 PROGRAMMER INFORMATION SA55582 50800000 OTA2779L EQU *-OTA2779M LENGTH OF ERROR MESSAGE SA55582 51000000 OTA27799 DC C' END' TO SET MSG TO 'END OF' SA69190 51200000 AIF ('&LIB' NE 'LIB1').LIB24R2 SA69926 51400000 OTA2779S DC X'3100000040000005' SEARCH ID EQ SA69926 51600000 DC X'08' TIC *-8 SA69926 51800000 .LIB24R2 ANOP SA69926 52000000 * 52200000 XCTLTABL ID=(ID4R0P,0P,ID4R3A,3A) 52400000 EJECT 52600000 IECEQU , DEFINE EQUATES 52800000 IECDSECS TIOT,UCB,MAIN,EXPAND=YES 53000000 END 53200000 ./ ADD SSI=00010929,NAME=IFG0195A,SOURCE=0 TITLE 'IFG0195A/OPEN - DIRECT ACCESS, DSCB TO JFCB MERGE' 00200021 COPY LCGASMSW 00250000 IFG0195A CSECT 00800021 *********************************************************************** 01000021 * * 01200021 AIF ('&LIB' EQ 'LIB1').LIB15AB 01250002 *0000 XM1037 01300002 .LIB15AB ANOP 01350002 * * 01400021 * RELEASE 25 DELETIONS/CHANGES * 01600021 * RELEASE 24 DELETIONS/CHANGES * 01800021 * RELEASE 23 DELETIONS/CHANGES * 02000021 * RELEASE 22 DELETIONS/CHANGES * 02200021 * RELEASE 21.8 DELETIONS/CHANGES * 02250000 *0000374000 SA66665 02270000 * RELEASE 21.7 DELETIONS/CHANGES * 02300001 *0000 SA46620 02320000 * RELEASE 21 DELETIONS/CHANGES * 02400021 *0000678000-682000,688000,692000,708000 A43756 02500021 *0000510000,516000-526000 M0943 02550021 *0000630000-648000 A48658 02560021 *0000304000 SA58734 02570001 * * 02600021 * STATUS CHANGE LEVEL 000 * 02800021 * * 03000021 * FUNCTION - * 03200021 * THIS MODULE CONTAINS THE FUNCTION(S) OR PART(S) OF FUNCTION(S)-- * 03400021 * OPEN DA READ DSCB FUNCTION * 03600021 * REFER TO THE FOLLOWING 'FUNCTION PROLOG(S)' FOR DETAILS. * 03800021 * * 04000021 * ENTRY POINTS - * 04200021 * IFG0195A - VIA XCTL FROM IFG0194E. * 04400021 * * 04600021 * INPUT - * 04800021 * REFER TO THE FOLLOWING 'FUNCTION PROLOG(S)'. * 05000021 * * 05200021 * OUTPUT - * 05400021 * REFER TO THE FOLLOWING 'FUNCTION PROLOG(S)'. * 05600021 * * 05800021 * EXTERNAL REFERENCES - * 06000021 * IFG019RA - OPEN/CLOSE/EOV RESIDENT ROUTINE FOR XCTL AND * 06200021 * WAIT. * 06400021 * REFER TO THE FOLLOWING 'FUNCTION PROLOG(S)'. * 06600021 * * 06800021 * EXITS, NORMAL - * 07000021 * REFER TO THE FOLLOWING 'FUNCTION PROLOG(S)'. * 07200021 * * 07400021 * EXITS, ERROR - * 07600021 * EXIT IS TO THE PROBLEM DETERMINATION MODULE IFG0190P, IF AN * 07800021 * ABEND SITUATION OCCURS IN THIS MODULE. REFER TO THE FOLLOWING * 08000021 * 'FUNCTION PROLOG(S)'. * 08200021 * * 08400021 * TABLES/WORK AREAS - * 08600021 * REFER TO THE FOLLOWING 'FUNCTION PROLOG(S)'. * 08800021 * * 09000021 * ATTRIBUTES - * 09200021 * REENTRANT, REFRESHABLE, READ-ONLY, ENABLED, PRIVILEGED * 09400021 * * 09600021 * CHARACTER CODE DEPENDENCY - * 09800021 * CLASS ONE CHARACTER CODE DEPENDENCY - THE EBCDIC CHARACTER CODE * 10000021 * WAS USED FOR ASSEMBLY. THE MODULE MUST BE REASSEMBLED IF A * 10200021 * DIFFERENT CHARACTER SET IS USED FOR EXECUTION. * 10400021 * * 10600021 * NOTES - * 10800021 * THE 'FUNCTION PROLOG' FOR THIS MODULE IS IN MODULE IFG0194E. * 11000021 * * 11200021 *********************************************************************** 11400021 EJECT 11600021 IECDSECS CVT,TIOT,UCB, DEFINE DESIRED DSECTS TO BE X11800021 DCB,MAIN EXPANDED AT THE END 12000021 * 12200021 IECEQU , DEFINE EQUATES 12400021 * 12600021 USING IHADCB,RDCB DEFINE BASE TO USER'S DCB 12800021 USING FORCORE,RCORE DEFINE BASE TO MAIN WORK AREA 13000021 USING TIOELNGH,RTIOT DEFINE BASE TO TIOT DD ENTRY 13200021 USING UCBOB,RUCB DEFINE BASE TO MAIN UCB 13400021 * 13600021 BALR RBASE,0 ESTABLISH BASE REGISTER 13800021 USING *,RBASE DEFINE BASE REGISTER 14000021 * 14200021 B ODA10200(RET) BR TO INDICATED FUNCTION 14400021 * 14600021 * RET=0 INITIAL ENTRY - FULL 14800021 ODA10200 B ODA10400 VTOC SEARCH IN PROCESS 15000021 B ODA10800 RET=4 RETURN FROM MOD RECOVERY 15200021 B ODA11000 RET=8 DSCB WAS READ BY TTR 15400021 B ODA11200 RET=12 RET FROM EXP DATE WTOR 15600021 * 15800021 *********************************************************************** 16000021 * 16200021 ODA10400 EQU * 16400021 IECRES WAIT WAIT FOR DSCB READ TO COMPLETE 16600021 * 16800021 TM DXECB,ECBNOERR CHECK FOR I/O ERROR 17000021 BO ODA10800 BR IF NO 17200021 * 17400021 TM JFCBIND2,JFCOLD IS DISP=MOD (NOT NEW,OLD) 17600021 BO ODA10600 BRANCH IF NOT MOD 17800021 * IF JFCBVLSQ IS GREATER THAN 1, IT MUST HAVE BEEN SPECIFIED IN 18000021 * THE DD STATEMENT. A FAILURE TO FIND THE INITIAL DSCB ON VOLUME 18200021 * 1 WILL RESULT IN A 213 ABEND, SINCE THERE CAN BE NO RECOVERY 18400021 * WHEN THE DATA SET IS NOT EVEN ON THE FIRST VOLUME. 18600021 LA RF,K1 WAS VOLUME SEQUENCE NO. 18800021 CH RF,JFCBVLSQ SPECIFIED GREATER THAN 1 19000021 BL ODA10600 BR IF YES TO 213 ABEND 19200021 * 19400021 CLC DXVOLMT1,JFCBVOLS IS THIS THE FIRST VOLUME 19600021 BE ODA10600 BR IF YES TO 213 ABEND 19800021 * 20000021 IECRES XCTL,ODA1920X,0 XCTL TO DISP=MOD RECOVERY MOD 20200021 * 20400021 ODA10600 EQU * 20600021 IECRES XCTL,ODA1930X,8 XCTL TO 213 ABEND EXIT MODULE 20800021 * 21000021 *********************************************************************** 21200021 * 21400021 * IF THE VTOC DSCB SEARCH JUST DONE WAS FOR THE FIRST VOLUME, 21600021 * UPDATE THE JFCB DSCB TTR SO THAT THE DSCB CAN BE READ DIRECTLY 21800021 * THE NEXT TIME THE DATA SET IS OPENED. 22000021 * 22200021 ODA10800 EQU * 22400021 CLI DSCFMTID,C'1' IS THIS FORMAT 1 DSCB (ELSE 4) 22600021 BNE ODA11000 BR IF NO, SKIP FMT 1 PROCESSING 22800021 * 23000021 TM JFCBTSDM,JFCNDSCB IS DSCB TO JFCB MERGE INHIBITED 23200021 BO ODA11000 BR IF YES 23400021 * 23600021 CLC DXVOLMT1,JFCBVOLS IS THIS THE FIRST VOLUME 23800021 BNE ODA11000 BR IF NO 24000021 * 24200021 MVC DXDAADDR+K3(K5),DXCCW7 ADD ACTUAL CCHHR TO MBB 24400021 * 24600021 LR RF,RDCB SAVE DCB REGISTER 2 IN 15 24800021 STM RTIOT,RF,DXREG9 SAVE REGISTERS 9-15 25000021 L RF,CVTPTR GET CVT ADDR 25200021 LA R1,DXDEB POINT TO OPEN WORK DEB 25400021 LA RDCB,DXDAADDR POINT TO MBBCCHHR ADDR 25600021 L RF,CVTPRLTV-CVT(,RF) ADDR OF IECPRLTV ROUTINE 25800021 BALR RET,RF BR TO CONVERT MBBCCHHR TO TTR 26000021 LM RTIOT,RF,DXREG9 RESTORE REGISTERS 9-15 26200021 LR RDCB,RF RESTORE DCB REGISTER 2 FROM 15 26400021 * 26600021 ST R0,DXCCW9 TTR0 IN REG 0 ON RETURN 26800021 MVC JFCBDSCB(K3),DXCCW9 UPDATE TTR IN JFCB 27000021 OI JFCBMASK+K6,JFCMCTTR INDICATE RE-CATALOG DSCB TTR 27200021 OI JFCBMASK+K4,JFCMJMOD SET JFCB MOD SWITCH ON 27400021 * 27600021 *********************************************************************** 27800021 * 28000021 ODA11000 EQU * 28200021 OI TIOESTTB,TIOSUSED SET DATA SET IS ON DEVICE INDR 28400021 * 28600021 CLI DSCFMTID,C'1' IS THIS FORMAT 1 DSCB (ELSE 4) 28800021 BNE ODA15800 BR IF NO, SKIP FMT 1 PROCESSING 29000021 * 29200021 * CHECK EXPIRATION DATE 29400021 * 29600021 TM JFCBIND2,JFCNEW CHECK FOR NEW 29800021 BO ODA11600 BR IF NEW 30000021 TM 0(RPARC),X'0E' CHECK FOR INPUT OR RDBACK 30200021 BZ ODA11600 BRANCH IF YES SA58734 30450001 * 30600021 * THE DATE IN THE CVT IS OF THE FORM X'00YYDDDF' 30800021 L R1,CVTPTR GET ADDR OF CVT 31000021 XC DXCCW10,DXCCW10 CLEAR WORKING SPACE 31200021 MVC DXCCW10+K6(K2),CVTDATE+K2-CVT(R1) PICK UP CURRENT DAY 31400021 CVB RF,DXCCW10 IN PACKED DECIMAL AND CONVERT 31600021 STH RF,DXCCW11+K2 TO BINARY DD 31800021 * 32000021 * SET UP YY YEAR DIGITS FOR 32200021 * CONVERSION FROM PACKED DECIMAL 32400021 * TO BINARY 32600021 MVO DXCCW10(K8),CVTDATE+K1-CVT(K1,R1) X'0000000000000YYF' 32800021 CVB RF,DXCCW10 CONVERT YEAR TO BINARY 33000021 STH RF,DXCCW11 DATE NOW 0YDD IN BINARY 33200021 * 33400021 CLC DSCEXPDT,DXCCW11+K1 COMPARE BINARY TO BINARY VALUE 33600021 BNH ODA11200 BR IF DATE HAS EXPIRED 33800021 * 34000021 * GO TO ERROR ROUTINE TO WRITE EXPIRATION DATE ERROR MESSAGE 34200021 * TO THE OPERATOR, AND WAIT FOR HIS REPLY TO USE OR NOT USE 34400021 * THE DATA SET. 34600021 * 34800021 IECRES XCTL,ODA1930X,0 XCTL TO EXP DATE MSG MODULE 35000021 * 35200021 ODA11200 EQU * 35400021 CLC JFCBCRDT(K6),DSCCREDT ARE JFCB & DSCB DATES THE SAME 35600021 BE ODA11600 BR IF YES 35800021 NC JFCBXPDT,JFCBXPDT TEST IF JFCB EXP DATE SPECIFIED 36000021 BNZ ODA11400 BR IF YES 36200021 NC DSCCREDT(K6),DSCCREDT IS DSCB CREATE + EXP DATE SPEC 36400021 BZ ODA11600 BR IF NO 36600021 MVC JFCBCRDT(K6),DSCCREDT MOVE DSCB DATES TO JFCB 36800021 OI JFCBMASK+K4,JFCMJMOD SET JFCB WRITE SWITCH 37000021 B ODA11600 BR TO CONTINUE 37200021 ODA11400 MVC DSCEXPDT(K3),JFCBXPDT MOVE EXPDT DATE TO DSCB SA66665 37400000 OI JFCBMASK+K4,JFCMDMOD SET DSCB WRITE SWITCH 37600021 * 37800021 ODA11600 EQU * 38000021 CLI JFCBCTRI,K0 IS JFCB SEC ALLOCATION SPECIFD 38200021 BNE ODA11800 BR IF YES 38400021 OC JFCBCTRI(K4),DSCSCALO MOVE SCQTY, CHECK FOR ZERO 38600021 BZ ODA11800 BR IF DSCB FIELD ALSO ZERO 38800021 OI JFCBMASK+K4,JFCMJMOD SET JFCB WRITE SWITCH 39000021 * 39200021 ODA11800 EQU * 39400021 * 39600021 *********************************************************************** 39800021 * 40000021 * READ IN ANY FORMAT 2 AND 3 DSCBS THAT DESCRIBE ISAM INFORMATION 40200021 * OR ADDITIONAL EXTENTS INTO ADDITIONAL GETMAINED CORE STORAGE. 40400021 * 40600021 NC DSCNEXT,DSCNEXT CHECK FOR MORE DSCB'S 40800021 BZ ODA12400 BRANCH IF NO MORE 41000021 * 41200021 LR RB,RCORE POINT TO DSCB 41400021 SH RB,ODA1600K BACK 44 BYTE TO USE LOOP 41600021 ODA12000 EQU * 41800021 MVC DXDAADDR+K3(K5),NEXTDSCB(RB) NEXT DSCB CCHHR ADDR 42000021 * 42200021 LA R0,K144 LOAD SIZE OF BUFFER 42400021 GETMAIN R,LV=(0) GETMAIN FOR DSCB KEY & DATA 42600021 * 42800021 XC 0(K144,R1),0(R1) CLEAR DSCB BUFFER 43000021 LA R1,0(R1) CLEAR HIGH ORDER BYTE 43200021 ST R1,DSCBLNG(,RB) CHAIN TO PREVIOUS CORE 43400021 LR RB,R1 DSCB BUFFER ADDR TO WORK REG 43600021 * 43800021 * MODIFY CCW TO READ NEXT FORMAT 2 OR 3 DSCB KEY & DATA 44000021 * 44200021 * SEARCH ID EQ 44400021 * TIC *-8 44600021 * READ KEY & DATA 44800021 * 45000021 LA RC,DSCBLNG LENGTH OF DSCB KEY & DATA 45200021 STM RB,RC,DXCCW3 ADDR OF DSCB BUFFER & LENGTH 45400021 MVI DXCCW3,CCWRDKEY SET READ KEY & DATA CMND IN CCW 45600021 * 45800021 EXCP DXIOB READ FORMAT 2 OR 3 DSCB 46000021 * 46200021 IECRES WAIT WAIT FOR READ COMPLETE 46400021 * 46600021 TM DXECB,ECBNOERR CHECK FOR I/O ERROR 46800021 BO ODA12200 BRANCH IF NO ERROR 47000021 * 47200021 OABD036 EQU 36 I/O ERROR READING FMT 47400021 * 2 OR 3 DSCB 47600021 DMABCOND OABD036,ODA1910X XCTL TO PROB DET / ABEND 47800021 * 48000021 ODA12200 EQU * 48200021 NC NEXTDSCB(K5,RB),NEXTDSCB(RB) CHECK FOR MORE DSCB'S 48400021 BNZ ODA12000 BR IF MORE DSCB'S 48600021 * 48800021 ODA12400 EQU * 49000021 MVC DXDEBSCC(K10),ODA1620K SET EXTENT TO COVER DSK SA46620 49100001 * 49200021 *********************************************************************** 49400021 * 49600021 * DSCB TO JFCB MERGE 49800021 * 50000021 TM JFCBTSDM,JFCNDSCB IS DSCB TO JFCB MERGE INHIBITED 50200021 BO ODA15400 BR IF YES 50400021 * 50600021 CLI JFCRECFM,K0 CHECK FOR RECORD FORMAT FIELD 50800021 BNE ODA12800 BR IF SPECIFIED M0943 51000021 MVC JFCRECFM,DSCRECFM MERGE 51200021 OI JFCBMASK+K4,JFCMJMOD SET JFCB MOD SW ON 51400021 * 52800021 ODA12800 EQU * 53000021 CLI JFCKEYLE,K0 CHECK FOR KEY LENGTH 53200021 BNE ODA13000 BR IF SPECIFIED 53400021 MVC JFCKEYLE,DSCKEYL MERGE 53600021 OI JFCBMASK+K4,JFCMJMOD SET JFCB MOD SW ON 53800021 * 54000021 ODA13000 EQU * 54200021 OC JFCDSORG,JFCDSORG CHECK FOR DSORG 54400021 BNZ ODA13200 BR IF SPECIFIED 54600021 AIF ('&LIB' EQ 'LIB1').LIB15AC 54650002 TM DSCFILTY+1,ACBDORGA IS THIS A VSAM DATA SET XM1037 54700002 BO ODA13200 BRANCH IF YES XM1037 54760002 .LIB15AC ANOP 54770002 MVC JFCDSORG,DSCFILTY MERGE 54800021 OI JFCBMASK+K4,JFCMJMOD SET JFCB MOD SW ON 55000021 * 55200021 ODA13200 EQU * 55400021 TM DCBMACRF,DCBMEXCP IS THIS EXCP 55600021 BZ ODA13400 BR IF NO, ALWAYS DSORG FIELD 55800021 TM DCBMACRF,DCBMFOUN IS FOUNDATION BLOCK EXT PRESENT 56000021 BZ ODA13800 BR IF NO, HAS NO DSORG FIELD 56200021 ODA13400 EQU * 56400021 NC DCBDSORG,DCBDSORG IS DSORG SPECIFIED IN DCB 56600021 BNZ ODA13600 BR IF YES 56800021 MVC DCBDSORG,JFCDSORG **** MERGE DSORG **** 57000021 OI JFCBMASK+K3,X'01' SET DSORG MERGE MASK BIT 57200021 * 57400021 ODA13600 EQU * 57600021 TM DCBDSORG,DCBORGIS IS IT ISAM 57800021 BZ ODA13800 NO, CONTINUE 58000021 OC DSCBLKL,DSCBLKL IS BLKSIZE IN DSCB 58200021 BE ODA14200 NO, SKIP MERGE 58400021 TM DCBMACRF+K1,DCBMPMOV+DCBMLOC IS THIS LOAD MODE 58600021 BZ ODA14000 BRANCH NOT LOAD MODE 58800021 ODA13800 EQU * 59000021 OC JFCBLKSI,JFCBLKSI CHECK FOR BLKSIZE 59200021 BNZ ODA14200 BR IF SPECIFIED 59400021 ODA14000 EQU * 59600021 MVC JFCBLKSI,DSCBLKL MERGE 59800021 OI JFCBMASK+K4,JFCMJMOD SET JFCB MOD SW ON 60000021 * 60200021 ODA14200 EQU * 60400021 OC JFCLRECL,JFCLRECL CHECK FOR LRECL 60600021 BNZ ODA14400 BR IF SPECIFIED 60800021 MVC JFCLRECL,DSCLRECL MERGE 61000021 OI JFCBMASK+K4,JFCMJMOD SET JFCB MOD SW ON 61200021 * 61400021 ODA14400 EQU * 61600021 OC JFCRKP,JFCRKP CHECK KEY POSITION FOR ISAM 61800021 BNZ ODA14600 BR IF SPECIFIED 62000021 MVC JFCRKP,DSCRKP MERGE 62200021 OI JFCBMASK+K4,JFCMJMOD SET JFCB MOD SWITCH ON 62400021 * 62600021 ODA14600 EQU * 62800021 * MERGE OPTCD ONLY IF DSORG IN DSCB AND DCB ARE BOTH DA OR BOTH M0943 64850021 * NOT DA. IF ONE IS DA AND THE OTHER IS NOT, THE DATA SET IS M0943 64900021 * BEING ACCESSED DIFFERENTLY THAN AT CREATION, AND OPTCD BIT M0943 64950021 * MEANINGS MAY CONFLICT. PARTICULARLY, BDAM OPTCD A AND SAM M0943 64960021 * ASCII OPTCD Q ARE THE SAME BIT. M0943 64970021 TM DCBMACRF,DCBMEXCP EXCP M0943 64980021 BZ ODA14830 NO, BR, DSORG PRESENT M0943 64990021 TM DCBMACRF,DCBMFOUN FOUNDATION BLOCK EXT M0943 64992021 BZ ODA14950 NO, GO SKIP MERGE, DSORG M0943 64994021 * NOT PRESENT M0943 64996021 ODA14830 EQU * M0943 64998021 TM DSCFILTY,DCBORGDA DSCB DSORG DA M0943 64998421 BNO ODA14860 NO, GO TEST DCB M0943 64998821 TM DCBDSORG,DCBORGDA DCB DSORG DA M0943 64999221 BNO ODA14950 NO, GO SKIP MERGE M0943 64999621 B ODA14900 BOTH DA, GO MERGE M0943 65049621 ODA14860 EQU * M0943 65099621 TM DCBDSORG,DCBORGDA DCB DSORG DA M0943 65109621 BO ODA14950 YES, GO SKIP MERGE M0943 65119621 * NO, BOTH NOT DA, MERGE M0943 65129621 * M0943 65131621 ODA14900 EQU * M0943 65139621 CLI JFCOPTCD,K0 OPTCD SPECIFIED IN JFCB M0943 65141621 BNE ODA14950 YES, GO SKIP MERGE M0943 65143621 MVC JFCOPTCD,DSCOPTCD MERGE OPTCD TO JFCB M0943 65145621 OI JFCBMASK+4,JFCMJMOD SET JFCB MODIFICATION SW M0943 65147621 * M0943 65148021 ODA14950 EQU * M0943 65148421 * M0943 65149621 *********************************************************************** 65200021 * 65400021 * SAVE REPOSITIONING INFO FOR DISP=MOD DATA SETS IN CASE THERE 65600021 * IS AN IMMEDIATE STEP RESTART. THE INFO DENOTING THE END 65800021 * OF THE DATA SET ('TTRLL') IS ONLY SAVED WHEN THE DATA SET 66000021 * IS FIRST OPENED. THEN IF RESTART OCCURS, THE SAVED INFO 66200021 * IS PLACED BACK IN THE DSCB. THUS, IF DATA WAS WRITTEN 66400021 * DURING ORIGINAL EXECUTION, IT WILL BE OVERWRITTEN AFTER 66600021 * THE STEP IS RESTARTED. 66800021 * 67000021 TM JFCBIND2,JFCOLD IS DATA SET MOD (NOT NEW,OLD) 67200021 BO ODA15400 BR IF NO 67400021 * 67600021 * IF JFCB FIELDS ARE ZERO, INSERT TTR AND LL FROM DSCB 68400021 OC JFCBOTTR,JFCBOTTR IS 'JFCB-TTR' FIELD ZERO 68600021 BNZ ODA15000 BR IF NO A43756 68800021 OC JFCTRKBL,JFCTRKBL IS 'JFCB-TRK BAL' FIELD ZERO 69000021 BNZ ODA15000 BR IF NO A43756 69200021 MVC JFCBOTTR,DSCLSTAR MOVE TTR FROM DSCB TO JFCB 69400021 MVC JFCTRKBL,DSCLSTAR+K3 TRK BAL FROM DSCB TO JFCB 69600021 B ODA15200 BR TO SET JFCB MOD SW ON 69800021 * 70000021 ODA15000 EQU * 70200021 TM JFCBTSDM,JFCTTR IS IT IMMED STEP RESTART A43756 70250021 BZ ODA15400 BR IF NO A43756 70300021 * 70350021 MVC DSCLSTAR(K3),JFCBOTTR MOVE TTR FROM JFCB TO DSCB 70400021 MVC DSCLSTAR+K3(K2),JFCTRKBL TRK BAL FROM JFCB TO DSCB 70600021 OI JFCBMASK+K4,JFCMDMOD SET DSCB MODIFIED SW ON 71000021 * 71100021 ODA15200 EQU * 71200021 NI JFCBTSDM,X'FF'-JFCTTR RESET ANY RESTART INDR A43756 71300021 OI JFCBMASK+K4,JFCMJMOD SET JFCB MODIFIED SW ON 71400021 * 71600021 *********************************************************************** 71800021 * 72000021 ODA15400 EQU * 72200021 TM DCBMACRF,DCBMEXCP IS IT EXCP 72400021 BO ODA15600 BR IF YES 72600021 TM DSCFILTY,DCBORGPO IS DSCB DSORG=PO 72800021 BNO ODA15600 BR IF NO 73000021 TM 0(RPARC),X'02' IS OPEN FOR OUTPUT,OUTIN,INOUT 73200021 BZ ODA15600 BR IF NO 73400021 MVC DCBDIRCT+K1(K1),DSCBLDBL MOVE IN DIRECTORY FIELD 73600021 ODA15600 EQU * 73800021 * 74000021 * XCTL TO NEXT LOAD 74200021 * 74400021 IECRES XCTL,ODA1940X,0 XCTL TO NEXT LOAD 74600021 * 74800021 ODA15800 EQU * 75000021 IECRES XCTL,ODA1950X,0 XCTL TO COMMON MERGE MODULE 75200021 * 75400021 *********************************************************************** 75600021 * 75800021 * CONSTANTS 76000021 * 76200021 ODA1600K DC H'44' LENGTH OF DSNAME 76400021 * 76500001 ODA1620K DC X'00000000' START OF EXTENT CCHH SA46620 76520001 DC X'FFFFFFFF' END OF EXTENT CCHH SA46620 76540001 DC X'7FFF' MAX NO OF TRACKS IN EXT SA46620 76560001 * 76600021 XCTLTABL ID=(ODA1910X,0P,ODA1920X,5E,ODA1930X,5G, X76800021 ODA1940X,5J,ODA1950X,6J) 77000021 * 77200021 IECDSECS EXPAND=YES EXPAND DESIRED DSECTS HERE 77400021 * 77600021 AIF ('&LIB' EQ 'LIB1').LIB15AD 77650002 IFGACB XM1037 77700002 .LIB15AD ANOP 77750002 END 77800021 ./ ADD SSI=00011983,NAME=IFG0195B,SOURCE=0 TITLE 'IFG0195B - OPEN TAPE INPUT AND OUTPUT SL POSITIONING' 00200021 COPY LCGASMSW 00250000 IFG0195B CSECT 00800021 *********************************************************************** 01000021 * * 01200021 * VS1 RELEASE 03.1 DELETIONS/CHANGES * 01300021 *SEE SA69190 XA05166 01310021 *SEE SA70259 XA05406 01311021 *SEE SA70631 XA05411 01312021 *SEE SA70632 XA05412 01313021 *SEE SA70633 XA05413 01314021 *SEE SA70635 XA05415 01315021 *SEE SA70636 XA05416 01316021 *SEE SA70637 XA05417 01317021 *SEE SA70638 XA05418 01318021 * * 01400021 * RELEASE 25 DELETIONS/CHANGES * 01600021 * RELEASE 24 DELETIONS/CHANGES * 01800021 * RELEASE 23 DELETIONS/CHANGES * 02000021 * RELEASE 22 DELETIONS/CHANGES * 02200021 * RELEASE 21.8 DELETIONS/CHANGES * 02202003 *0000462000-466000 SA65081 02204021 *0000352200,376000 SA68161 02206021 *0000 SA69190 02206221 *0000 SA70259 02207021 *0000 SA70631 02207221 *0000 SA70632 02207421 *0000 SA70633 02207621 *0000 SA70635 02207821 *0000 SA70636 02208021 *0000600240 SA70637 02208221 *0000 SA70638 02208421 *0000600700-600750 SM00361 02208621 * RELEASE 21.7 DELETIONS/CHANGES * 02210001 *0000382000,552000,578000-586000,874000 SA55582 02220001 *0000 SM5494 02270021 * RELEASE 21 DELETIONS/CHANGES * 02400021 * * 02600021 * VS2-1.6 DELETIONS/CHANGES * 02650001 *0000 SYSROUTE FROM SA55582 YA00244 02700001 *0000554000,601178,601320 YM5583 02750001 * * 02790021 * STATUS CHANGE LEVEL 000 * 02800021 * * 03000021 * FUNCTION - * 03200021 * THIS MODULE CONTAINS THE FUNCTION(S) OR PART(S) OF FUNCTION(S)-- * 03400021 * OPEN TAPE SL POSITION FUNCTION. * 03600021 * OPEN TAPE SL INPUT/MOD HEADER LABEL 1 FUNCTION. * 03800021 * REFER TO THE FOLLOWING 'FUNCTION PROLOG(S)' FOR DETAILS. * 04000021 * * 04200021 * ENTRY POINTS - * 04400021 * IFG0195B - VIA THE RESIDENT ROUTINE XCTL FROM THE FOLLOWING-* 04600021 * IFG0194D, IFG0194I - TO POSITION SL OR AL TAPES. * 04800021 * * 05000021 * INPUT - * 05200021 * REFER TO THE FOLLOWING 'FUNCTION PROLOG(S)'. * 05400021 * * 05600021 * OUTPUT - * 05800021 * REFER TO THE FOLLOWING 'FUNCTION PROLOG(S)'. * 06000021 * * 06200021 * EXTERNAL REFERENCES - * 06400021 * IFG019RA - OPEN/CLOSE/EOV RESIDENT ROUTINE FOR XCTL AND * 06600021 * WAIT. * 06800021 * REFER TO THE FOLLOWING 'FUNCTION PROLOG(S)'. * 07000021 * * 07200021 * EXITS, NORMAL - * 07400021 * EXIT VIA THE RESIDENT ROUTINE XCTL TO THE FOLLOWING-- * 07600021 * IFG0194R - TO RECOVER OR ABEND FROM POSITIONING ERRORS. * 07700021 * IFG0195H - TO CONTINUE INPUT/MOD PROCESSING. * 07800021 * IFG0196J - FOR SL OR AL OUTPUT PROCESSING. * 08000021 * REFER TO THE FOLLOWING 'FUNCTION PROLOG(S)'. * 08200021 * * 08400021 * EXITS, ERROR - * 08600021 * EXIT IS TO THE PROBLEM DETERMINATION MODULE IFG0190P, IF AN * 08800021 * ABEND SITUATION OCCURS IN THIS MODULE. REFER TO THE FOLLOWING * 09000021 * 'FUNCTION PROLOG(S)'. * 09200021 * * 09400021 * TABLES/WORK AREAS - * 09600021 * REFER TO THE FOLLOWING 'FUNCTION PROLOG(S)'. * 09800021 * * 10000021 * ATTRIBUTES - * 10200021 * REENTRANT, REFRESHABLE, READ-ONLY, ENABLED, PRIVILEGED * 10400021 * * 10600021 * CHARACTER CODE DEPENDENCY - * 10800021 * CLASS ONE CHARACTER CODE DEPENDENCY - THE EBCDIC CHARACTER CODE * 11000021 * WAS USED FOR ASSEMBLY. THE MODULE MUST BE REASSEMBLED IF A * 11200021 * DIFFERENT CHARACTER SET IS USED FOR EXECUTION. * 11400021 * * 11600021 * NOTES - * 11800021 * REFER TO THE FOLLOWING 'FUNCTION PROLOG(S)'. * 12000021 * * 12200021 *********************************************************************** 12400021 EJECT 12600021 *********************************************************************** 12800021 * * 13000021 * FUNCTION PROLOG * 13200021 * * 13400021 *********************************************************************** 13600021 * * 13800021 * FUNCTION NAME - * 14000021 * OPEN TAPE SL POSITIONING FUNCTION. * 14200021 * * 14400021 * (STATUS) - * 14600021 * NOT APPLICABLE * 14800021 * * 15000021 * FUNCTION - * 15200021 * ZERO THE DCB BLOCK COUNT. * 15400021 * TEST THE UCB FILE SEQUENCE NUMBER. IF IT IS ZERO, THEN THE * 15600021 * FIRST HEADER LABEL IS READ AND THE FILE SEQUENCE NUMBER * 15800021 * FROM THE LABEL IS PLACED IN THE UCB. * 16000021 * POSITIONING IS DETERMINED BY COMPARING THE UCB AND JFCB FILE * 16200021 * SEQUENCE NUMBERS. THE TAPE IS FOWARD OR BACK SPACED AS NECESSARY * 16400021 * TO POSITION TO THE REQUESTED FILE. * 16600021 * THE TAPE IS POSITIONED TO THE HEADER 1 LABEL FOR NORMAL INPUT * 16800021 * OPERATIONS. IT IS POSITIONED TO THE TRAILER 1 LABEL FOR RDBACK * 17000021 * OR DISP=MOD PROCESSING. * 17200021 * * 17400021 * ENTRY POINTS - * 17600021 * ENTERED FROM THE FOLLOWING-- * 17800021 * OPEN TAPE FINAL COMMON FUNCTION FOR SL OR AL POSITIONING. * 18000021 * OPEN TAPE VOLUME REFERENCE FUNCTION. * 18100021 * REFER TO THE PRECEDING MODULE PROLOG. * 18200021 * * 18400021 * INPUT - * 18600021 * A POINTER TO EACH OF THE FOLLOWING-- * 18800021 * CURRENT PARAMETER LIST ENTRY. * 19000021 * DD ENTRY IN THE TIOT. * 19200021 * WTG TABLE. * 19400021 * CURRENT WTG TABLE ENTRY. * 19600021 * DCB. * 19800021 * OPEN WORK AREA. * 20000021 * RESIDENT ROUTINE. * 20200021 * UCB * 20400021 * * 20600021 * OUTPUT - * 20800021 * THE TAPE IS POSITIONED TO THE REQUESTED FILE. * 21000021 * WTP INFO ERROR MSG IEC140I START/END OF DATA SET NOT ON VOLUME. * 21100021 * * 21200021 * EXTERNAL REFERENCES - * 21400021 * REFER TO THE PRECEDING MODULE PROLOG. * 21600021 * * 21800021 * EXITS, NORMAL - * 22000021 * REFER TO THE PRECEDING MODULE PROLOG. * 22200021 * OPEN TAPE SL INPUT/MOD HEADER LABEL 1 FUNCTION FOR FILE * 22400021 * LABEL 1 VERIFICATION. * 22600021 * OPEN MERGE JFCB FUNCTION TO CONTINUE OUTPUT PROCESSING. * 22800021 * * 23000021 * EXITS, ERROR - * 23200021 * REFER TO THE PRECEEDING MODULE PROLOG. * 23400021 * EXIT WITH ONE OF THE FOLLOWING INTERNAL CODES-- * 23600021 * 9 - 613-04 ABEND - I/O ERROR POSITIONING TAPE. * 23800021 * 10 - A13-04 ABEND - BACKSPACED INTO LOAD POINT DUE TO A * 24000021 * INCORRECT UCB FILE SEQUENCE COUNT OR TAPE POSITION. * 24200021 * 11 - 613-08 ABEND - I/O ERROR READING LABEL. (RECOVERABLE) * 24400021 * 152 - A13-08 ABEND - FILE SEQUENCE BEFORE START OF VOLUME * 24420021 * WHILE POSITIONING TO START OF FILE. * 24440021 * 153 - A13-0C ABEND - FILE SEQUENCE BEFORE START OF VOLUME * 24460021 * WHILE POSITIONING TO END OF FILE. * 24480021 * 154 - A13-10 ABEND - TM INSTEAD OF HDR1 DURING FSF POSITIONING.* 24500021 * 156 - A13-18 ABEND - EOV1 ON LAST OR ONLY VOLUME AND * 24520021 * DESIRED FILE SEQUENCE IS GREATER THAN EOV1'S. * 24540021 * * 24600021 * TABLES/WORK AREAS - * 24800021 * THE OPEN, CLOSE, OR EOV WORK AREA AND THE WHERE-TO-GO (WTG) * 25000021 * TABLE ARE DESCRIBED BY THE DSECTS AT THE END OF THE LISTING. * 25200021 * * 25400021 * ATTRIBUTES - * 25600021 * REFER TO THE PRECEDING MODULE PROLOG. * 25800021 * * 26000021 * CHARACTER CODE DEPENDENCY - * 26200021 * REFER TO THE PRECEDING MODULE PROLOG. * 26400021 * * 26600021 * NOTES - * 26800021 * PART OF THE ERROR RECOVERY CODE FOR THIS FUNCTION IS IN * 26900021 * IFG0194R AND IFG0195H. * 26920021 * * 27000021 *********************************************************************** 27200021 EJECT 27400021 * ESTABLISH ADDRESSABILITY 27800021 BALR RBASE,0 28000021 USING *,RBASE 28200021 * 28400021 USING FORCORE,RCORE 28600021 USING IHADCB,RDCB 28800021 * USING TIOENTRY,RTIOT DEFINE BASE TO TIOT DD ENTRY 29000021 USING UCBOB,RUCB 29200021 * 29250021 AIF ('&LIB' NE 'LIB1').LIB25B1 SA69190 29260021 B OTA24900(RET) BR TO INDICATED FUNCT'N SA69190 29300021 * 29350021 OTA24900 B OTA25000 RET=0 INITIAL ENTRY SA69190 29400021 B OTA26920 RET=4 HDR1 DSN OK SA69190 29450021 .LIB25B1 ANOP SA69190 29460021 * 29500021 OTA25000 EQU * 29600021 TM UCBWGT,UCBIN TEST FOR SYSIN 29800021 BO OTA27000 BRANCH IF SYSIN 30000021 TM JFCBLTYP,JFCBAL ANSI LABEL SPECIFIED 30200021 BZ OTA25100 NO, GO TO SET STD LABEL 30400021 OI UCBSTAB,UCBBSTR SET ANSI LABEL BIT ON 30600021 NI UCBSTAT,X'FF'-UCBDADI RESET SL BIT OFF IN UCB 30800021 B OTA25200 BRANCH TO CHECK FOR EXCP 31000021 OTA25100 EQU * 31200021 OI UCBSTAT,UCBDADI SET STD LABEL BIT IN SRT 31400021 NI UCBSTAB,X'FF'-UCBBSTR RESET AL BIT OFF IN UCB 31600021 OTA25200 TM DCBMACRF,DCBMEXCP TEST FOR EXCP 31800021 BNO OTA25300 BRANCH IF NOT EXCP 32000021 TM DCBMACRF+1,DCBMDEV IS DEV DEP SECTION PRESENT 32200021 BZ OTA25400 BRANCH IF DEV DEP NOT PRESENT 32400021 OTA25300 EQU * 32600021 XC DCBBLKCT,DCBBLKCT ZERO BLOCK COUNT 32800021 OTA25400 EQU * 33000021 * 33020021 *********************************************************************** 33040021 * 33060021 * READ HDR1 LABEL TO DEFINE UCB FILE SEQUENCE NUMBER IF TAPE NOT YET 33080021 * USED. (ONLY OPEN OUTPUT TO FILE 1 OR EOV OUTPUT WILL OVERRIDE THIS) 33100021 * IF VOL LABEL WAS JUST CREATED BY OMODVOL1, IT IS FOLLOWED BY A TM. 33120021 * IF THE NUMBER IN THE UCB IS ZERO, THEN THE VOLUME MUST HAVE JUST 33140021 * BEEN VERIFIED AND SO TAPE IS POSITIONED AFTER VOL1 LABEL. 33160021 * 33170021 MVI DXLBL,K0 IND NO POSITIONING DONE SA70631 33180021 * AND SO EOV1 TEST MAY BE NEEDED 33190021 LH RD,UCBFSEQ IS FILE SEQ NUMBER SA70631 33200021 LTR RD,RD IN UCB ZERO SA70631 33300021 BNZ OTA26100 BRANCH IF NO SA70631 33400021 MVC UCBFSCT(L'UCBFSCT+L'UCBFSEQ),FW5B101 SET UCB SA70631 33600021 * FILE COUNT AND SEQ TO 1 33800021 TM UCBWGT,UCBOUT TEST FOR SYSOUT 34000021 BNO OTA25500 BRANCH IF NOT SYSOUT 34200021 MVI JFCBFLSQ+1,K1 SET FILE SEQ NO IN JFCB TO 1 34400021 OTA25500 EQU * 34600021 * 34800021 OTA25600 EQU * 35200021 BAL RD,OTA25650 GO READ LABEL OR TM SA70631 35400021 BO OTA25900 BR IF LABEL READ OK SA70631 35600021 TM IOBSTAT0,CSWUNITX TEST UNIT EXCEPTION TM SA70631 35800021 BZ OTA25750 BR IF NO, I/O ERROR SA70631 36000021 MVC DXCCW1,BSFCCWD SET UP TO BSF OVER TM SA70631 36200021 B OTA26000 BR TO BSF OVER TM SA70631 36400021 * 36600021 OTA25900 EQU * 38600021 CLC FL1LABI(4),OP2KHDR1 IS THIS A FILE HEADER LABEL 38800021 BNE OTA25600 READ AGAIN IF NO 39000021 * 39200021 PACK DXCCW2,FL1FILSQ PACK FILE SEQ NUMBER FROM LBL 39800021 CVB RB,DXCCW2 CONVERT FIL SEQ NO TO BINARY 40000021 STH RB,UCBFSEQ STORE RESULTS IN UCB 40200021 * 40250021 MVC DXCCW1,BSRCCW SET UP TO BSR SA70631 40300021 OTA26000 EQU * 40400021 BAL RB,OTA27400 BR TO EXCP AND WAIT SA70631 40450021 BZ OTA27500 BR IF I/O ERROR SA70631 40500021 * 40550021 MVC UCBSQC(L'UCBVOLI),UCBVOLI SET UP FILE SER NUMBER IN 40600021 * UCB 40800021 * 40820021 *********************************************************************** 40840021 * 40860021 * DETERMINE IF POSITIONING TO START OR TO END OF FILE. 40880021 * 40900021 OTA26100 EQU * 41000021 XC DXCCW3(K2),DXCCW3 ZERO END FILE POS IND SA69190 41050021 * 41100021 LH RC,JFCBFLSQ JFCB FIL SEQ CTR 41200021 LH RD,UCBFSEQ SRT FIL SEQ CTR 41400021 TM 0(RPARC),PLISTOP1-PLISTRBK PRELIMINARY TO RDBACK TEST 41600021 BNZ OTA26150 BRANCH IF NOT RDBACK SA69190 41800021 TM 0(RPARC),PLISTRBK IS IT RDBACK 42000021 BO OTA26200 BRANCH IF RDBACK SA69190 42200021 * 42250021 OTA26150 EQU * 42300021 TM 0(RPARC),PLISTUPD TEST FOR INPUT SA69190 42350021 BZ OTA26800 BR IF YES, POS TO START SA69190 42400021 TM JFCBIND2,JFCOLD OUTPUT, IS DISP=MOD SA69190 42450021 BO OTA26700 BR NO, DISP=OLD OR NEW SA70631 42500021 * 42600021 *---------------------------------------------------------------------- 42650021 * 42700021 * READ BACKWARD OR DISP=MOD OUTPUT POSITIONING TO END OF FILE FOLLOWS 42800021 * 43000021 OTA26200 EQU * 43200021 STH RC,DXCCW3 SAVE END FILE POS IND SA69190 43300021 * 43310021 LA RF,K1(RD) CALC FILE SEQ AT WHICH SA70632 43320021 SH RF,UCBFSCT THIS TAPE STARTS SA70632 43330021 OABD153 EQU 153 FILE BEFORE START TAPE SA70632 43340021 LA R0,OABD153 LOAD A13-0C ABEND CODE SA70632 43350021 CR RF,RC IS FILE ON THIS TAPE SA70632 43360021 BH OTA26940 BR IF NOT ON TAPE TO SA70632 43370021 * POSSIBLE RECOVERY PREVIOUS TAPE 43380021 * 43390021 LA RC,K1(,RC) INCR JFCB FIL SEQ NR 43400021 CR RC,RD JFCB+1=SRT 43600021 BE OTA26600 BR IF THEY ARE EQUAL 43800021 BH OTA26900 BR IF JFCB HIGH 44000021 * 44050021 *---------------------------------------------------------------------- 44100021 * 44200021 * JFCB FILE SEQUENCE NO. IS LOW 44250021 * 44300021 OTA26300 EQU * TAPE NEEDS BSF POSITIONING 44400021 LA RD,K3 SET UP BSF LOOP COUNTER SA69190 44600021 MVC DXCCW1,BSFCCWD SET UP BSF CCW SA69190 44700021 OTA26400 EQU * 44800021 BAL RB,OTA27400 BRANCH TO EXCP AND WAIT 45200021 BZ OTA27500 BRANCH IF I/O ERROR 45400021 BCT RD,OTA26400 RELOOP IF COUNT NOT =0 SA69190 46800021 * 47000021 L RD,UCBFSCT+UCBFSEQ-UCBFSEQ DECREMENT UCB FILE SA69190 47200021 S RD,FW5B101 COUNT AND SEQUENCE SA69190 47400021 ST RD,UCBFSCT+UCBFSEQ-UCBFSEQ BY 1 EACH SA69190 47500021 * 47600021 CH RC,UCBFSEQ CHECK AT DESIRED FILE SA69190 47700021 BL OTA26300 BR IF NO, CONTINUE BSF SA69190 47800021 * 47900021 BAL RB,OTA27400 BR TO DO EXTRA BSF SA69190 48000021 BZ OTA27500 BR IF I/O ERROR SA69190 48100021 * 48200021 MVI DXCCW1,CCWFSF SET UP FORWARD SPACE FILE 48400021 BAL RB,OTA27400 BRANCH TO EXCP AND WAIT 48600021 BZ OTA27500 BRANCH IF I/O ERROR 48800021 B OTA26100 BR TO CHECK FOR RDBACK OUT MOD 50200021 * POSITIONING TO PREVIOUS FILE 50400021 *---------------------------------------------------------------------- 50450021 * 50500021 * RDBACK OR DISP=MOD OUTPUT, JFCB FILE SEQUENCE NO. IS EQUAL 50600021 * (NO TEST FOR EOV1 BECAUSE EITHER THIS IS THE LAST VOLUME, A SPECIFIC 50650021 * VOLUME SEQUENCE REQUEST, OR THE DATA SET IS MISSING FROM THE NEXT 50660021 * VOLUME AND WE ARE ALREADY IN DISP=MOD VOLUME POSITIONING RECOVERY) 50670021 * 50700021 OTA26600 EQU * 50800021 MVC DXCCW1,BSFCCWD SET UP FOR BSF 51200021 BAL RB,OTA27400 BRANCH TO EXCP AND WAIT 51400021 BZ OTA27500 BRANCH IF I/O ERROR 51600021 BAL RB,OTA27400 BRANCH TO EXCP AND WAIT SA69190 51800021 BZ OTA27500 BRANCH IF I/O ERROR SA69190 51900021 MVI DXCCW1,CCWFSF SET UP FORWARD SPACE FILE 52000021 BAL RB,OTA27400 BRANCH TO EXCP AND WAIT 52200021 BZ OTA27500 BRANCH IF I/O ERROR 52400021 * 52600021 L RD,UCBFSCT+UCBFSEQ-UCBFSEQ DECREMENT UCB FILE SA69190 52800021 S RD,FW5B101 COUNT AND SEQUENCE SA69190 53000021 ST RD,UCBFSCT+UCBFSEQ-UCBFSEQ BY 1 EACH SA69190 53200021 * 53400021 B OTA27000 SKIP CODE FOR NOT RDBACK 53600021 * 53650021 *---------------------------------------------------------------------- 53700021 * 53710021 * INPUT OR OUTPUT POSITIONING TO START OF FILE FOLLOWS 53720021 * 53730021 * IF OPENING TO FILE 1, THEN WE CAN PROTECT AGAINST 53740021 * PREVIOUS ABENDS WHICH MAY HAVE LEFT THE TAPE 53750021 * MISPOSITIONED BY REWINDING THE TAPE TO FILE 1. 53760021 * NO REWIND IS REQUIRED IF THIS OPEN JUST VERIFIED 53770021 * THE VOLUME BY REWINDING IT, READING VOL1, AND 53780021 * READING HDR1 IN THIS MODULE. IF WE DO A REWIND, 53790021 * IT WILL PROBABLY BE A NOP, BECAUSE EOV OR CLOSE 53800021 * DID A REWIND TO POSITION THE TAPE TO FILE 1 AND 53810021 * THUS WE ARE NOT SPENDING TIME READING VOL1 TWICE. 53820021 * 53830021 OTA26700 EQU * OUTPUT TO START OF FILE SA70631 53900021 CH RC,FW5B101 IS JFCB FILE SEQ = 1 SA70631 54000021 BNE OTA26800 BR IF NO TO USE UCBFSEQ SA70631 54100021 CLC UCBFSCT,FW5B101 IS TAPE AT COUNT = 1 SA70631 54200021 BNE OTA26850 BR IF NO TO REWIND SA70631 54300021 CLI DXLBL,K0 WAS HDR1 JUST READ SA70631 54400021 BE OTA26850 BR IF NO TO DO REWIND SA70631 54500021 B OTA26860 BR TO SET UCB FSEQ = 1 SA70631 54600021 * 54700021 OTA26800 EQU * INPUT TO START OF FILE SA70631 54800021 LA RF,K1(RD) CALC FILE SEQ AT WHICH SA70631 54900021 SH RF,UCBFSCT THIS TAPE STARTS SA70631 55000021 OABD152 EQU 152 FILE STARTS BEFORE TAPE SA70631 55100021 LA R0,OABD152 LOAD A13-08 ABEND CODE SA70631 55200021 CR RC,RF CHECK IF FILE ON TAPE SA70631 55300021 BL OTA27600 BR NOT ON TAPE TO ABEND SA70631 55400021 BH OTA26870 BR HIGH TO BSF,NONE,FSF SA70631 55500021 CLI DXLBL,K0 WAS HDR1 JUST READ SA70631 55600021 BNE OTA26870 BR YES, NO WANT REWIND SA70631 55700021 * 55800021 OTA26850 EQU * REWIND TAPE SA70631 55900021 MVC DXCCW1,REWCCWD SET UP CCW FOR REWIND SA70631 56000021 BAL RB,OTA27400 BR TO EXCP AND WAIT SA70631 56100021 BZ OTA27500 BR IF I/O ERROR SA70631 56200021 MVC UCBFSCT,FW5B101 SET UCB FILE COUNT TO 1 SA70631 56300021 OTA26860 EQU * SA70631 56400021 STH RC,UCBFSEQ SET UCB TO JFCB FSEQ SA70631 56500021 B OTA27000 BR, TAPE NOW POSITIONED SA70631 56600021 * 56700021 OTA26870 EQU * SA70631 56800021 CR RC,RD IS JFCB FSEQ = UCB FSEQ SA70631 56900021 BL OTA26300 BR IF LOW TO DO BSF SA70631 57000021 BE OTA26995 BR IF EQUAL, CHECK EOV1 SA70631 57100021 * HIGH, DO FSF SA70631 57200021 * 57250021 *---------------------------------------------------------------------- 57300021 * 57350021 * JFCB FILE SEQUENCE NO. IS HIGH 57400021 * 57410021 OTA26900 EQU * TAPE NEEDS FSF POSITIONING 57420021 BAL RC,OTA26990 GO CHECK FOR PREV EOV1 SA70636 57430021 * 57440021 OTA26905 EQU * SM00361 57445021 BAL RD,OTA25650 GO READ HDR1 OR TM SA69190 57450021 BZ OTA26930 BR IF I/O ERROR OR TM SA70633 57460021 * 57462021 CLC FL1LABI(K4),OP2KHDR1 IS THIS A HDR1 LABEL SM00361 57464021 BNE OTA26905 BR NO, MUST BE VOL, UVL SM00361 57466021 * 57470021 CLC UCBFSEQ,DXCCW3 IS THIS HDR1 OF DESIRED SA69190 57480021 BNE OTA26920 END FILE, BR IF NO SA69190 57490021 * 57500021 * DOING THE DSN TEST NOW TO HDR1 RATHER THAN ONLY LATER TO EOV1/EOF1 57510021 * SAVES 10 MINUTES PER REEL IF DOING DISP=MOD VOLUME POSITIONING 57520021 * RECOVERY DUE TO STARTING SEARCH ON A VOLUME LATER THAN THE 57530021 * LAST ONE ACTUALLY WRITTEN ON, OR IF WILL DSN ABEND ANYWAY. 57540021 * 57550021 * DETERMINE 17 LEAST SIGNIFICANT NON-BLANK 57560021 * CHARACTERS IN DATA SET NAME IN JFCB 57570021 * 57580021 LA RD,JFCBDSNM POINT TO DSNAME SA69190 57590021 LA RB,JFCBDSNM+K27 ADDR 1ST POSS SIG CHAR SA69190 57600021 OTA26910 EQU * SA69190 57610021 CLI K16(RB),BLANK IS THE CHARACTER BLANK SA69190 57620021 BNE OTA26912 NO,GO SET UP START ADDR SA69190 57630021 BCT RB,OTA26910 GO CHECK NEXT CHAR SA69190 57640021 OTA26912 EQU * SA69190 57650021 LA RC,K17(RB) POINT TO FIRST BLANK SA69190 57660021 CLR RB,RD LEFT PTR WITHIN FIELD SA69190 57670021 BNL OTA26914 BR IF YES SA69190 57680021 LR RB,RD SET BASE OF START SA69190 57690021 * 57700021 * COMPARE THE DATA SET NAME IN THE HDR1 LABEL AGINST THE NAME IN THE 57710021 * JFCB. CONTINUE IF EQUAL. IF NOT EQUAL AND THE DATA SET IS A 57720021 * GENERATION DATA SET, IT MAY BE A DOS TAPE IN WHICH CASE THE 57730021 * DATA SET NAME MUST BE COMPARED SEPARATELY FROM THE GENERATION 57740021 * AND VERSION NUMBERS. 57750021 * 57760021 OTA26914 EQU * SA69190 57770021 CLC FL1ID,0(RB) COMPARE 17 CHAR DSNAME SA69190 57780021 BE OTA26920 BR EQUAL, CORRECT DSN SA69190 57790021 * 57800021 LA RET,K8 BR TABLE OFFSET DSN BAD SA69190 57810021 AIF ('&LIB' NE 'LIB1').LIB25B2 SA69190 57820021 B OTA27200 BR TO XCTL, FINISH DSN SA69190 57830021 * 57840021 .LIB25B2 ANOP SA69190 57850021 AIF ('&LIB' EQ 'LIB1').LIB15B2 SA69190 57860021 TM JFCBIND1,JFCGDG GENERATION DATA SET SA69190 57870021 BNO OTA27200 BR IF NO, INCORRECT DSN SA69190 57880021 LA RF,K9 PREP TO BACK OVER GEN SA69190 57890021 SR RC,RF BACK UP END POINTER SA69190 57900021 BNE OTA27200 BR IF NOT EQUAL SA69190 57905021 CLC FL1VNG,K7(RC) COMPARE VERSION NUMBER SA69190 57910021 BNE OTA27200 BR IF NOT EQUAL SA69190 57915021 SR RB,RF BACK UP COMPARE START SA69190 57920021 CLR RB,RD LEFT PTR WITHIN FIELD SA69190 57925021 BNL OTA26917 BR IF YES TO COMP 17 SA69190 57930021 SR RC,RD GET CHAR COUNT SA69190 57935021 LA RF,FL1ID(RC) PT DSN IN LBL +CHAR CNT SA69190 57940021 CLI 0(RF),BLANK SHOULD BE PAST NAME SA69190 57945021 BNE OTA27200 BR, LONGER THAN IN JFCB SA69190 57950021 BCTR RC,0 SUB 1 FOR EX INSTR SA69190 57955021 EX RC,OTA26916 COMPARE SHORT DSNAMES SA69190 57960021 B OTA26918 GO TEST COMPARE RESULT SA69190 57965021 OTA26916 CLC FL1ID(*-*),JFCBDSNM CLC INSTR FOR EXEC SA69190 57970021 OTA26917 CLC FL1ID,0(RB) COMPARE DSNAMES SA69190 57975021 OTA26918 BNE OTA27200 BR IF DSNAME INCORRECT SA69190 57980021 .LIB15B2 ANOP SA69190 57985021 * 57990021 OTA26920 EQU * DSN CORRECT OR NOT FILE SA69190 57995021 MVC DXCCW1,FSFCCWD SET UP FOR FSF 58000021 BAL RB,OTA27400 BRANCH TO EXCP AND WAIT 58200021 BZ OTA27500 BRANCH IF I/O ERROR 58400021 * 58420021 L RD,UCBFSCT+UCBFSEQ-UCBFSEQ INCREMENT UCB FILE SA70638 58440021 A RD,FW5B101 COUNT AND SEQUENCE SA70638 58460021 ST RD,UCBFSCT+UCBFSEQ-UCBFSEQ BY 1 EACH SA70638 58480021 * 58500021 BAL RC,OTA27420 TEST TRLR LBLS FOR EOV1 SA55582 58600021 * RETURN IF NOT EOV1 SA55582 58602021 B OTA26100 GO LOOP UNTIL PROPER FILE IS 59800021 * REACHED 59810021 * 59820021 OTA26930 EQU * I/O ERR OR TM FOR HDR1 SA70633 59830021 TM IOBSTAT0,CSWUNITX TEST UNIT EXCEPTION TM SA70633 59840021 BZ OTA25750 BR IF NO, I/O ERROR SA70633 59850021 * 59860021 MVC DXCCW1,BSFCCWD SET UP FOR BSF OVER TM SA70633 59870021 BAL RB,OTA27400 BR TO EXCP AND WAIT SA70633 59880021 * 59890021 OABD154 EQU 154 TM BEFORE DESIRED FILE SA70633 59900021 LA R0,OABD154 LOAD A13-10 ABEND CODE SA70633 59910021 OTA26940 EQU * SA69190 59915021 LA RET,K12 LOAD BR TABLE OFFSET SA69190 59920021 B OTA27200 BR TO XCTL POS RECOVERY SA69190 59925021 * 59930021 *---------------------------------------------------------------------- 59940021 * 59950021 * EOV1 LABEL ENCOUNTERED IN FRONT OF OR AT END OF DESIRED FILE. 59960021 * IF POSITIONING TO START OF FILE, TRY TO GO TO NEXT TAPE AND 59970021 * CONTINUE FSF TO CORRECT FILE. (CONTINUED IN IFG0195F) 59980021 * IF POSITIONING TO END OF FILE, ABEND UNLESS EOV1 IS FOR DESIRED 59990021 * FILE AND SO CAN TREAT AS EOF. 60000021 * 60005021 OTA26950 EQU * EOV1 ENCOUNTERED 60010021 OABD156 EQU 156 FILE SEQ BEYOND EOV1 SA70635 60015021 LA R0,OABD156 LOAD A13-18 ABEND CODE SA70635 60020021 LH RC,DXCCW3 IS THIS RDBACK, OUT MOD SA70635 60025021 LTR RC,RC (OTHERWISE FILE BEYOND SA70635 60030021 BZ OTA26955 EOV1), BR IF NO SA70635 60035021 LA RC,K1(RC) IS THIS FILE SEQUENCE SA70635 60040021 CH RC,UCBFSEQ OF DESIRED FILE SA70635 60045021 BNE OTA27600 BR IF NO TO ABEND SA70635 60050021 B OTA26600 BR TO POSITION RDBACK SA70635 60055021 * 60060021 OTA26955 EQU * POS TO START OF FILE SA69190 60065021 SR RET,RET SET BR TABLE OFFSET SM00361 60070021 LA RF,ID5B4R POINT TO IFG0194R IDTTR SM00361 60072021 B OTA27300 XCTL TO IFG0194R TO SM00361 60074021 * FINISH EOV1 PROCESSING SM00361 60075021 * 60080021 *---------------------------------------------------------------------- 60085021 * 60090021 * SUBROUTINE TO CHECK IF PREVIOUS FILE ENDED IN EOV ON THIS VOLUME. 60095021 * TAPE IS AT START OF A FILE AND WILL BE FSF'ED OR IS AT DESIRED FILE. 60100021 * IF NO POSITIONG DONE, CHECK PREVIOUS TRAILER LABELS FOR EOV. 60105021 * 60110021 OTA26990 EQU * ENTRY VIA BAL RC,--- SA69190 60112021 CLI DXLBL,K0 WAS VOL REPOSITIONED SA69190 60117221 BCR 7,RC RETURN IF YES SA69190 60117821 CLC UCBFSCT,FW5B101 IS UCB FILE COUNT =1 SA70259 60117921 BCR 8,RC RETURN IF EQUAL SA70259 60124221 MVC DXCCW1,BSFCCWD SET UP FOR BSF SA55582 60137021 BAL RB,OTA27400 BRANCH TO EXCP AND WAIT SA55582 60143321 BZ OTA27500 BRANCH IF I/O ERROR SA55582 60149621 BAL RB,OTA27400 BRANCH TO EXCP AND WAIT SA55582 60150021 BZ OTA27500 BRANCH IF I/O ERROR SA55582 60155021 B OTA27420 TEST TRLR LBLS FOR EOV1 SA69190 60160021 * RETURN TO CALLER IF NOT EOV1 60165021 * 60170021 *---------------------------------------------------------------------- 60171021 * 60172021 * TAPE IS AT START OF DESIRED FILE. IF NO POSITIONG DONE, CHECK 60173021 * PREVIOUS TRAILER LABELS FOR EOV. 60174021 * 60174521 OTA26995 EQU * YM5583 60174821 BAL RC,OTA26990 GO CHECK FOR PREV EOV1 SA69190 60180021 * 60185021 *********************************************************************** 60190021 * 60195021 OTA27000 EQU * 60200021 LA RF,ID5B6J MERGE MODULE IDTTR 60400021 TM UCBWGT,UCBIN+UCBOUT SYSIN OR SYSOUT 60600021 BNZ OTA27300 YES, BRANCH 60800021 TM PLISTOPT(RPARC),PLISTOIN OUTPUT OR OUTIN S21940 61000021 BNO OTA27100 NO, BRANCH 61200021 TM JFCBIND2,JFCOLD DISPOSITION MOD 61400021 BNZ OTA27300 NO, BRANCH 61600021 OTA27100 EQU * 61800021 EJECT 62000021 *********************************************************************** 62200021 * * 62400021 * FUNCTION PROLOG * 62600021 * * 62800021 *********************************************************************** 63000021 * * 63200021 * FUNCTION NAME - * 63400021 * OPEN TAPE SL INPUT/MOD HEADER LABEL 1 FUNCTION. * 63600021 * * 63800021 * (STATUS) - * 64000021 * NOT APPLICABLE * 64200021 * * 64400021 * FUNCTION - * 64600021 * READ FILE LABEL 1. * 64800021 * VERIFY THAT THE DSNAME FROM THE LABEL IS THE SAME AS THAT * 65000021 * SPECIFIED IN THE JFCB. * 65200021 * IF OPENING FOR RDBACK OR DISP=MOD THE BLOCK COUNT IS MOVED FROM * 65400021 * THE LABEL TO THE DCB. * 65600021 * WHEN OPENING FOR ANY TYPE OF OUTPUT THE EXPIRATION DATE IS * 65800021 * CHECKED TO SEE IF IT HAS PASSED. IF NOT THE OPERATORS DECISION * 66000021 * GOTTEN AS TO WHETHER THE TAPE MAY BE USED. * 66200021 * THE SECURITY BYTE IN THE LABEL IS TESTED TO DETERMINE IF A * 66400021 * PASSWORD MUST BE OBTAINED. IF SECURITY PROTECTED AN INDICATOR * 66600021 * IS SET SO THE PASSWORD WILL BE GOTTEN. * 66800021 * FOR AN ASCII TAPE THAT THE SECURITY BYTE IS NOT BLANK, AND * 67000021 * DOES NOT INDICATE SECURITY, THE TAPE CANNOT BE USED. * 67200021 * * 67400021 * ENTRY POINTS - * 67600021 * ENTERED FROM THE FOLLOWING-- * 67800021 * OPEN TAPE SL POSITION FUNCTION. * 68000021 * REFER TO THE PRECEDING MODULE PROLOG. * 68200021 * * 68400021 * INPUT - * 68600021 * A POINTER TO EACH OF THE FOLLOWING-- * 68800021 * CURRENT PARAMETER LIST ENTRY. * 69000021 * DD ENTRY IN THE TIOT. * 69200021 * WTG TABLE. * 69400021 * CURRENT WTG TABLE ENTRY. * 69600021 * DCB. * 69800021 * OPEN WORK AREA. * 70000021 * RESIDENT ROUTINE. * 70200021 * UCB * 70400021 * * 70600021 * OUTPUT - * 70800021 * THE SECURITY BIT HAS BEEN SET IN THE JFCB SO THAT IF A MOD DATA * 71000021 * SET IS EXTENDED TO ANOTHER VOLUME, EOV WILL SET THE SECURITY * 71200021 * INDICATOR IN THE LABELS. * 71400021 * AN INDICATOR HAS BEEN SET SO THE PASSWORD WILL BE OBTAINED IF * 71600021 * NECESSARY. * 71800021 * THE FOLLOWING MESSAGES ARE ISSUED IF NECESSARY-- * 72000021 * IEC114E D - ASCII SECURITY BYTE IS NOT BLANK OR IS NOT * 72200021 * SET TO INDICATE SECURITY. * 72400021 * IEC107D E - ISSUED VIA THE DSNAME WTO FUNCTION WHEN THE * 72600021 * EXPIRATION DATE HAS NOT PASSED. * 72800021 * * 73000021 * EXTERNAL REFERENCES - * 73200021 * REFER TO THE PRECEDING MODULE PROLOG. * 73400021 * * 73600021 * EXITS, NORMAL - * 73800021 * REFER TO THE PRECEDING MODULE PROLOG. * 74000021 * OPEN TAPE SL INPUT/MOD HEADER LABEL 2 FUNCTION TO CONTINUE * 74200021 * NORMAL PROCESSING. * 74400021 * DISPLAY DSNAME WTO FUNCTION FOR A DATE PROTECT MESSAGE. * 74600021 * * 74800021 * EXITS, ERROR - * 75000021 * REFER TO THE PRECEDING MODULE PROLOG. * 75200021 * EXIT WITH ONE OF THE FOLLOWING INTERNAL CODES-- * 75400021 * 11 - 613-08 ABEND - I/O ERROR READING LABEL. (RECOVERABLE) * 75600021 * 12 - 613-0C ABEND - INVALID LABEL READ. (RECOVERABLE) * 75800021 * 13 - 713-04 ABEND - EXPIRATION DATE NOT PASSED. (RECOVERABLE) 76000021 * 14 - 813-04 ABEND - INCORRECT DATA SET NAME. (RECOVERABLE) * 76200021 * 20 - 913-08 ABEND - ASCII SECURITY BYTE NOT BLANK AND NOT * 76400021 * INDICATING SECURITY. * 76600021 * 155 - A13-14 ABEND - READ TM INSTEAD OF HDR1. * 76700021 * * 76800021 * TABLES/WORK AREAS - * 77000021 * THE OPEN, CLOSE, OR EOV WORK AREA AND THE WHERE-TO-GO (WTG) * 77200021 * TABLE ARE DESCRIBED BY THE DSECTS AT THE END OF THE LISTING. * 77400021 * * 77600021 * ATTRIBUTES - * 77800021 * REFER TO THE PRECEDING MODULE PROLOG. * 78000021 * * 78200021 * CHARACTER CODE DEPENDENCY - * 78400021 * REFER TO THE PRECEDING MODULE PROLOG. * 78600021 * * 78800021 * NOTES - * 79000021 * * 79200021 *********************************************************************** 79400021 EJECT 79600021 * SET UP CHANNEL PROGRAM AND READ LABEL 79800021 * 80000021 BAL RB,OTA27350 GO SET UP READ CCW SA69190 80200021 * 81600021 EXCP DXIOB 81800021 * 81900021 LA RET,K4 SET FOR NEXT MOD ENTRY 82000021 OTA27200 EQU * XCTL TO IFG0195H SA69190 82100021 LA RF,ID5B5H FILE LABEL 1 MOD IDTTR 82200021 OTA27300 EQU * 82400021 IECRES XCTL,(RF),(RET) 82600021 EJECT 82610021 *********************************************************************** 82620021 * 82630021 * SUBROUTINE TO SET UP READ CCW 82640021 * 82650021 OTA27350 EQU * ENTRY VIA BAL RB,--- SA69190 82660021 LA RF,DXLBL ADDR TO READ IN LABEL SA69190 82670021 ST RF,DXCCW1 STORE INTO CCW SA69190 82680021 MVI DXCCW1,CCWRDTAP READ TAPE COMMAND CODE SA69190 82690021 LA RF,K80 NO FLAGS, LENGTH 80 SA69190 82700021 ST RF,DXCCW1+K4 STORE INTO CCW SA69190 82710021 TM JFCBLTYP,JFCBAL IS THIS ANSI LABEL SA69190 82720021 BCR 8,RB RETURN IF NO SA69190 82730021 MVI DXCCW4+K4,CCWSILI TURN ON SILI FOR AL SA69190 82740021 BR RB RETURN SA69190 82750021 * 82760021 *********************************************************************** 82770021 * 82800021 * SUBROUTINE TO READ ONE RECORD, TEST FOR ERRORS, AND XLATE IF AL 82850021 * 82900021 OTA25650 EQU * ENTRY VIA BAL RD,--- SA69190 82950021 BAL RB,OTA27350 GO SET UP READ CCW SA69190 82960021 BAL RB,OTA27400 READ LABEL 82998821 BCR 8,RD RETURN IF I/O ERROR SA69190 83000021 * 83020021 TM JFCBLTYP,JFCBAL CHECK FOR ANSI LABEL 83029921 BZ OTA25690 BR IF NO SA69190 83040021 XLATE DXLBL,K80 TRANSLATE LABEL DATA 83049921 OTA25690 EQU * SA69190 83055021 TM DXECB,ECBNOERR SET NO I/O ERROR CODE SA69190 83057021 BR RD RETURN SA55582 83059921 * 83060021 OTA25750 EQU * I/O ERROR READING LABEL S21940 83061021 OABD011 EQU 011 I/O ERROR READING LABEL S21940 83062021 LA 0,OABD011 LOAD 613-08 ABEND CODE S21940 83063021 B OTA27600 GO TO PROB DET SA68161 83065021 * 83066021 *********************************************************************** 83070021 * 83080021 * SUBROUTINE TO EXCP, WAIT, AND TEST ECB CODE FOR I/O ERROR 83090021 * 83200021 OTA27400 EQU * ENTRY VIA BAL RB,--- 83400021 EXCP DXIOB ISSUE I/O OPERATION 83600021 IECRES WAIT 83800021 TM DXECB,ECBNOERR CK FOR PERMANENT I/O ERROR 84000021 BR RB RETURN 84200021 * 84205021 *********************************************************************** 84206021 * 84207021 * SUBROUTINE TO TEST TRAILER LABELS FOR EOV1 84210021 * 84215021 OTA27420 EQU * ENTRY VIA BAL RC,--- 84220021 MVC DXCCW1,FSFCCWD SET UP FOR FSF SA55582 84230001 BAL RB,OTA27400 BRANCH TO EXCP AND WAIT SA55582 84240001 BZ OTA27500 BRANCH IF I/O ERROR SA55582 84250001 BAL RD,OTA25650 READ A RECORD SA55582 84260001 BZ OTA25750 BR IF I/O ERROR SA69190 84265021 MVC DXCCW1,FSFCCWD SET UP FOR FSF SA55582 84270001 BAL RB,OTA27400 BRANCH TO EXCP AND WAIT SA55582 84280001 BZ OTA27500 BRANCH IF I/O ERROR SA55582 84290001 CLC FL1LABI(4),OP2KEOV1 TEST FOR EOV1 RECORD SA55582 84310001 BE OTA26950 BRANCH IF EOV1 RECORD SA55582 84320001 BR RC RETURN IF NOT EOV1 SA55582 84330001 * 84340021 *********************************************************************** 84350021 * 84360021 OTA27500 EQU * 84400021 OABD010 EQU 010 WRONG FILE SEQ NO. S21940 84410021 LA R0,OABD010 LOAD A13-04 ABEND CODE S21940 84450021 TM IOBSENSE+1,UCBLDPT IS TAPE AT LOAD POINT SA65081 84500003 BO OTA27600 ERROR IF AT LOAD POINT SA65081 84550003 OABD009 EQU 009 I/O ERROR POSITIONING S21940 84560021 LA R0,OABD009 LOAD 613-04 ABEND CODE S21940 84600021 * 84700021 OTA27600 EQU * 84800021 MVI UCBDMCT,K0 ZERO UCB DM COUNT SA69190 84900021 LA RET,K4 SET BR OFFSET FOR 194F SA69190 84950021 DMABCOND (0),ID5B0P,RETURN=ID5B4F XCTL TO PROB DET SA69190 85000021 EJECT 85010021 *********************************************************************** 85020021 * 85030021 * CONSTANTS 85040021 * 85200021 FW5B101 DC 0F'0',H'1',H'1' TO SET UCB COUNT+SEQ 1 SA70631 85300021 OP2KHDR1 DC CL4'HDR1' HDR 1 LBL ID 85400021 OP2KEOV1 DC CL4'EOV1' EOV 1 LBL ID SA55582 85500001 BSRCCW DC X'2700000020000001' BSR CCW 85800021 BSFCCWD DC X'2F00000020000001' BSF CCW 86000021 FSFCCWD DC X'3F00000020000001' FSF CCW 86200021 REWCCWD DC X'0700000020000001' REW CCW 86400021 * 87200021 AIF ('&LIB' NE 'LIB1').LIB25BS 87250021 XCTLTABL ID=(ID5B0P,0P,ID5B4F,4F,ID5B4R,4R,ID5B5H,5H, SA69190X87400021 ID5B6J,6J) SA69190 87410021 .LIB25BS ANOP 87420021 AIF ('&LIB' EQ 'LIB1').LIB15BS 87430021 XCTLTABL ID=(ID5B0P,0P,ID5B4F,4F,ID5B4R,4R,ID5B5H,5H, SA69190X87460021 ID5B6J,6J),LENGTH=2040,PATCH=100 SA69190 87510021 .LIB15BS ANOP 87560021 EJECT 87570021 IECEQU , DEFINE EQUATES S21940 87580021 IECDSECS DCB,UCB,MAIN,EXPAND=YES SA69190 87600021 END 87800021 ./ ADD SSI=21280198,NAME=IFG0195C,SOURCE=0 TITLE 'IFG0195C/OPEN - UNLABELED TAPE POSITIONING' 00200000 GBLC &LIB 00400000 &LIB SETC 'LIB1' 00600000 IFG0195C CSECT 00800000 *********************************************************************** 01000000 * * 01200000 * * 01400000 * RELEASE 25 DELETIONS/CHANGES * 01600000 * RELEASE 24 DELETIONS/CHANGES * 01800000 * RELEASE 23 DELETIONS/CHANGES * 02000000 * RELEASE 22 DELETIONS/CHANGES * 02200000 * RELEASE 21 DELETIONS/CHANGES * 02400000 * * 02600000 * STATUS CHANGE LEVEL 000 * 02800000 * * 03000000 * FUNCTION - * 03200000 * THIS MODULE CONTAINS THE FUNCTION(S) OR PART(S) OF FUNCTION(S)-- * 03400000 * OPEN TAPE NO-LABEL/BLP POSITIONING FUNCTION. * 03600000 * REFER TO THE FOLLOWING 'FUNCTION PROLOG(S)' FOR DETAILS. * 03800000 * * 04000000 * ENTRY POINTS - * 04200000 * IFG0195C - VIA THE RESIDENT ROUTINE XCTL FROM THE FOLLOWING-- * 04400000 * IFG0194D OR IFG0194I - TO CONTINUE NL/BLP PROCESSING. * 04600000 * * 04800000 * INPUT - * 05000000 * REFER TO THE FOLLOWING 'FUNCTION PROLOG(S)'. * 05200000 * * 05400000 * OUTPUT - * 05600000 * REFER TO THE FOLLOWING 'FUNCTION PROLOG(S)'. * 05800000 * * 06000000 * EXTERNAL REFERENCES - * 06200000 * IFG019RA - OPEN/CLOSE/EOV RESIDENT ROUTINE FOR XCTL AND * 06400000 * WAIT. * 06600000 * REFER TO THE FOLLOWING 'FUNCTION PROLOG(S)'. * 06800000 * * 07000000 * EXITS, NORMAL - * 07200000 * EXIT VIA THE RESIDENT ROUTINE XCTL TO THE FOLLOWING-- * 07400000 * IFG0196J - TO CONTINUE NORMAL PROCESSING. * 07600000 * REFER TO THE FOLLOWING 'FUNCTION PROLOG(S)'. * 07800000 * * 08000000 * EXITS, ERROR - * 08200000 * EXIT IS TO THE PROBLEM DETERMINATION MODULE IFG0190P, IF AN * 08400000 * ABEND SITUATION OCCURS IN THIS MODULE. REFER TO THE FOLLOWING * 08600000 * 'FUNCTION PROLOG(S)'. * 08800000 * * 09000000 * TABLES/WORK AREAS - * 09200000 * REFER TO THE FOLLOWING 'FUNCTION PROLOG(S)'. * 09400000 * * 09600000 * ATTRIBUTES - * 09800000 * REENTRANT, REFRESHABLE, READ-ONLY, ENABLED, PRIVILEGED * 10000000 * * 10200000 * CHARACTER CODE DEPENDENCY - * 10400000 * CLASS ONE CHARACTER CODE DEPENDENCY - THE EBCDIC CHARACTER CODE * 10600000 * WAS USED FOR ASSEMBLY. THE MODULE MUST BE REASSEMBLED IF A * 10800000 * DIFFERENT CHARACTER SET IS USED FOR EXECUTION. * 11000000 * * 11200000 * NOTES - * 11400000 * REFER TO THE FOLLOWING 'FUNCTION PROLOG(S)'. * 11600000 * * 11800000 *********************************************************************** 12000000 EJECT 12200000 *********************************************************************** 12400000 * * 12600000 * FUNCTION PROLOG * 12800000 * * 13000000 *********************************************************************** 13200000 * * 13400000 * FUNCTION NAME - * 13600000 * OPEN TAPE NO-LABEL/BLP POSITIONING FUNCTION. * 13800000 * * 14000000 * (STATUS) - * 14200000 * NOT APPLICABLE * 14400000 * * 14600000 * FUNCTION - * 14800000 * ZERO THE DCB BLOCK COUNT. * 15000000 * VERIFY THAT THE UCB FILE SEQUENCE NUMBER IS NOT ZERO. IF ZERO * 15200000 * IT IS SET TO ONE. * 15400000 * POSITION THE TAPE TO THE DESIRED DATA SET BY COMPARING THE * 15600000 * SEQUENCE NUMBER OF THE DESIRED DATA SET, IN THE JFCB, AGINST * 15800000 * THE CURRENT SEQUENCE NUMBER, IN THE UCB. THE TAPE IS MOVED * 16000000 * FORWARD OR BACKWARD AS NEEDED TO REACH THE DESIRED DATA SET. * 16200000 * * 16400000 * ENTRY POINTS - * 16600000 * ENTERED FROM THE FOLLOWING-- * 16800000 * OPEN TAPE VOLUME REFERENCE FUNCTION OR THE OPEN TAPE FINAL * 17000000 * COMMON FUNCTION TO CONTINUE NORMAL NL/BLP PROCESSING. * 17200000 * REFER TO THE PRECEEDING MODULE PROLOG. * 17400000 * * 17600000 * INPUT - * 17800000 * A POINTER TO EACH OF THE FOLLOWING-- * 18000000 * CURRENT PARAMETER LIST ENTRY. * 18200000 * DD ENTRY IN THE TIOT. * 18400000 * WTG TABLE. * 18600000 * CURRENT WTG TABLE ENTRY. * 18800000 * DCB. * 19000000 * OPEN WORK AREA. * 19200000 * RESIDENT ROUTINE. * 19400000 * UCB * 19600000 * * 19800000 * OUTPUT - * 20000000 * THE TAPE IS POSITIONED TO THE REQUESTED FILE. * 20200000 * * 20400000 * EXTERNAL REFERENCES - * 20600000 * REFER TO THE PRECEEDING MODULE PROLOG. * 20800000 * * 21000000 * EXITS, NORMAL - * 21200000 * REFER TO THE PRECEEDING MODULE PROLOG. * 21400000 * OPEN MERGE JFCB FUNCTION TO CONTINUE NORMAL PROCESSING. * 21600000 * * 21800000 * EXITS, ERROR - * 22000000 * REFER TO THE PRECEEDING MODULE PROLOG. * 22200000 * EXIT WITH ONE OF THE FOLLOWING INTERNAL CODES-- * 22400000 * 9 - 613 ABEND - I/O ERROR POSITIONING TAPE. * 22600000 * 10 - A13 ABEND - BACKSPACED INTO LOAD POINT DUE TO A * 22800000 * INCORRECT UCB FILE SEQUENCE NUMBER. * 23000000 * * 23200000 * TABLES/WORK AREAS - * 23400000 * THE OPEN, CLOSE, OR EOV WORK AREA AND THE WHERE-TO-GO (WTG) * 23600000 * TABLE ARE DESCRIBED BY THE DSECTS AT THE END OF THE LISTING. * 23800000 * * 24000000 * ATTRIBUTES - * 24200000 * REFER TO THE PRECEEDING MODULE PROLOG. * 24400000 * * 24600000 * CHARACTER CODE DEPENDENCY - * 24800000 * REFER TO THE PRECEEDING MODULE PROLOG. * 25000000 * * 25200000 * NOTES - * 25400000 * * 25600000 *********************************************************************** 25800000 EJECT 26000000 SPACE 1 26200000 BALR RBASE,R0 SET BASE REGISTER 26400000 USING *,RBASE ESTABLISH ADDRESSABILITY 26600000 USING FORCORE,RCORE WORKAREA ADDRESSABILITY 26800000 USING IHADCB,RDCB DCB ADDRESSABILITY 27000000 USING TIOENTRY,RTIOT TIOT ADDRESSABILITY 27200000 USING UCBOB,RUCB UCB ADDRESSABILITY 27400000 OTA50000 EQU * 27600000 SPACE 1 27800000 SPACE 1 28000000 TM DCBMACRF,DCBMEXCP IS IT EXCP 28200000 BNO OTA50100 NO, BRANCH 28400000 TM DCBMACRF+K1,DEPEND DOES DEVICE PORTION EXIST 28600000 BZ OTA50200 NO, BRANCH 28800000 OTA50100 EQU * 29000000 XC DCBBLKCT,DCBBLKCT ZERO OUT BLOCK COUNT IN DCB 29200000 OTA50200 EQU * 29400000 CLC UCBFSEQ,OP2KONE IS THE FILE SEQ NUMBER IN SRT 29600000 BH OTA50400 BRANCH, GREATER THAN ONE 29800000 BE OTA50300 BRANCH, EQUAL TO ONE 30000000 MVI UCBFSCT+K1,K1 SET FILE SEQ COUNT TO ONE 30200000 MVI UCBFSEQ+K1,K1 SET FILE SEQ NUMBER TO ONE 30400000 OTA50300 EQU * 30600000 TM JFCBLTYP,JFCBLTM TEST LEADING TAPE MARK BIT 30800000 BZ OTA50400 BRANCH IF NOT SET 31000000 BAL RD,OTA52600 GO BYPASS LEADING TAPE MARK 31200000 OTA50400 EQU * 31400000 TM 0(RPARC),X'0E' PRELIMINARY TO RDBACK TEST 31600000 BNZ OTA51500 IF ANY BITS ON, NOT RDBACK 31800000 TM 0(RPARC),DEBOPRBK READ BACKWARD? 32000000 BNO OTA51500 BR IF NO 32200000 SPACE 1 32400000 * 32600000 PLMOP170 EQU * 32800000 SPACE 1 33000000 * SET UP FOR READ BACKWARD AND DISP=MOD POSITIONING 33200000 SPACE 1 33400000 OTA50500 EQU * 33600000 OTA50600 EQU * 33800000 LH RC,JFCBFLSQ JFCB FIL SEQ 34000000 LA RC,K1(K0,RC) INCREMENT JFCB FIL SEQ BY ONE 34200000 LH RD,UCBFSEQ GET CURRENT POSITION OF TAPE 34400000 CR RC,RD JFCB+1=SRT 34600000 BE OTA51100 BRANCH IF THEY ARE EQUAL 34800000 BH OTA51200 BRANCH IF JFCB HIGH 35000000 SPACE 1 35200000 * THE FOLLOWING CODING WILL HANDLE THE CASE WHERE JFCB FIL 35400000 * SEQ CTR +1 IS LESS THAN SRT FIL SEQ CTR 35600000 SPACE 1 35800000 BCTR RC,0 DECREMENT COUNT BY ONE 36000000 SR RD,RC SUBTRACT JFCB CTR FROM SRT CTR 36200000 OTA50700 EQU * 36400000 MVC DXCCW1,BSFCCW SET UP FOR BSF 36600000 OTA50800 EQU * 36800000 BAL RB,OTA52900 GO EXECUTE BACKSPACE 37000000 BCT RD,OTA50800 TEST LOOP COMPLETION 37200000 MVI DXCCW1,CCWNOP SET UP CCW TO ISSUE NOP 37400000 BAL RB,OTA53000 GO EXECUTE A NOP 37600000 TM IOBSENSE+K1,UCBLDPT IS TAPE AT LOAD POINT 37800000 BO OTA52700 YES,ERROR UNABLE TO POSITION 38000000 OTA50900 EQU * 38200000 MVC UCBFSEQ,JFCBFLSQ SET SEQ NUM IN SRT FROM JFCB 38400000 MVC UCBFSCT,OP2KONE SET FILE SEQ. COUNT TO ONE 38600000 CLI JFCBNVOL,K1 IS THIS MULTI REEL 38800000 BH OTA52500 BRANCH IF YES 39000000 MVC UCBFSCT,JFCBFLSQ SET FILE SEQ COUNT IN SRT 39200000 B OTA52500 GO TO MERGE 196J 39400000 SPACE 1 39600000 * POSITION LAST VOLUME OF MULTI-REEL READ BACK D.S. 39800000 SPACE 1 40000000 OTA51000 EQU * 40200000 MVC DXCCW1,FSFCCW SET UP FORWARD SPACE FILE 40400000 BAL RB,OTA52900 POSITION IN BACK OF DATA SET 40600000 MVI DXCCW1,CCWBSF SET UP CCW TO BACKSPACE FILE 40800000 BAL RB,OTA52900 POSITION TO LAST RECORD 41000000 MVC UCBFSEQ,JFCBFLSQ SET LOGICAL FILE SEQUENCE NUM 41200000 B OTA52500 POSITIONING COMPLETE 41400000 * 41600000 OTA51100 EQU * 41800000 LA RD,K1 SET LOOP COUNT=1 42000000 B OTA50700 GO EXECUTE BSF 42200000 SPACE 1 42400000 * THE FOLLOWING CODING WILL HANDLE JFCB FIL SEQ CTR+1 GREATER 42600000 * THAN SRT FIL SEQ CTR 42800000 SPACE 1 43000000 OTA51200 EQU * 43200000 CLI JFCBNVOL,K1 IS THIS MULTI REEL 43400000 BH OTA51000 BRANCH IF YES 43600000 BCTR RC,0 DECREMENT COUNT BY ONE 43800000 SR RC,RD SUBTRACT SRT CTR FROM JFCB CTR 44000000 LTR RD,RD IS SRT COUNT=0 44200000 BZ OTA51300 YES, BRANCH 44400000 LA RC,K1(K0,RC) ADD ONE TO LOOP COUNT 44600000 OTA51300 EQU * 44800000 MVC DXCCW1,FSFCCW SET UP FOR FSF 45000000 OTA51400 EQU * 45200000 BAL RB,OTA52900 GO EXECUTE FSF 45400000 BCT RC,OTA51400 TEST LOOP COMPLETION 45600000 MVI DXCCW1,CCWBSF SET UP CCW TO BACKSPACE FILE 45800000 BAL RB,OTA52900 GO EXECUTE BSF 46000000 B OTA50900 GO UPDATE SEQ COUNT AND NUMBER 46200000 * 46400000 OTA51500 EQU * 46600000 TM 0(RPARC),X'04' TEST FOR INPUT 46800000 BZ OTA51600 YES, BYPASS MOD 47000000 TM JFCBIND2,JFCOLD CK FOR MOD 47200000 BZ OTA50600 BR IF YES 47400000 OTA51600 EQU * 47600000 MVC DXCCW1,FSFCCW SET FORWARD SPACE FILE 47800000 OTA51700 EQU * 48000000 CLC UCBFSEQ,JFCBFLSQ DETERMINE POSITIONING REQUIRED 48200000 BH OTA51900 BRANCH IF SRT HI 48400000 BE OTA51800 BR IF EQ 48600000 SPACE 1 48800000 * THIS CODE WILL HANDLE THE CASE OF JFCB FILE SEQUENCE 49000000 * NUMBER HIGHER THAN SRT FILE SEQUENCE NUMBER 49200000 SPACE 1 49400000 L RD,UCBFSCT GET FILE SEQ COUNT AND NUMBER 49600000 A RD,ANUM1 ADD 1 TO SEQ COUNT AND NUMBER 49800000 ST RD,UCBFSCT STORE UPDATED SEQ CNT & NO 50000000 BAL RB,OTA52900 GO EXECUTE FSF 50200000 B OTA51700 BRANCH BACK IF COMPLETED 50400000 SPACE 1 50600000 OTA51800 EQU * 50800000 TM JFCBLTYP,JFCBLTM TEST LEADING TAPE MARK BIT 51000000 BZ OTA52500 BRANCH IF NOT SET 51200000 CLC JFCBFLSQ,OP2KONE JFCB FILE SEQ EQ 1 51400000 BNE OTA52500 NO, BRANCH 51600000 TM K0(RPARC),DEBOPOIN OUTPUT OR OUTIN 51800000 BNO OTA52500 NO, BRANCH 52000000 LA RB,OTA52500 SET RETURN FROM REW 52200000 B OTA52000 GO REWIND 52400000 SPACE 1 52600000 * THE FOLLOWING CODE WILL POSITION A TAPE IF SRT FILE SEQUENCE 52800000 * IS GREATER THAN JFCB FILE SEQUENCE 53000000 SPACE 1 53200000 OTA51900 EQU * 53400000 LA RB,K1 53600000 CH RB,JFCBFLSQ CK FOR FIL SEQ 1 IN JFCB 53800000 BNE OTA52200 BR IF NO 54000000 LA RB,OTA52100 SET RETURN FROM REW 54200000 OTA52000 EQU * 54400000 MVC DXCCW1,REWCCWC SET CCW FOR REWIND 54600000 MVC UCBFSEQ,JFCBFLSQ SET FIL SEQ TO 1 IN SRT 54800000 MVC UCBFSCT,JFCBFLSQ 55000000 B OTA52900 GO REWIND 55200000 OTA52100 EQU * 55400000 TM JFCBLTYP,JFCBLTM TEST LEADING TAPE MARK BIT 55600000 BZ OTA52500 BRANCH IF NOT SET 55800000 TM K0(RPARC),DEBOPOIN OUTPUT OR OUTIN 56000000 BO OTA52500 YES, BRANCH 56200000 LA RD,OTA52500 SET RETURN FROM BYPASS RTN 56400000 B OTA52600 GO BYPASS LEADING TAPE MARK 56600000 OTA52200 EQU * 56800000 MVI DXCCW1,CCWBSF BACKSPACE FILE CCW 57000000 BAL RB,OTA52900 BRANCH TO EXCP***** 57200000 OTA52300 EQU * 57400000 L RD,UCBFSCT GET FILE SEQ COUNT AND NUMBER 57600000 S RD,ANUM1 DECREMENT SEQ COUNT AND NUMBER 57800000 ST RD,UCBFSCT STORE FILE SEQ CNT & NO 58000000 MVI DXCCW1,CCWBSF BACKSPACE FILE CCW 58200000 BAL RB,OTA52900 GO EXECUTE BSF 58400000 MVI DXCCW1,CCWNOP SET CCW TO ISSUE NOP 58600000 CLC UCBFSEQ,JFCBFLSQ WAS THIS THE LAST BACKSPACE 58800000 BE OTA52400 YES,GO FORWARD SPACE IF NEEDED 59000000 BAL RB,OTA53000 SEE IF TAPE IS AT LOAD POINT 59200000 TM IOBSENSE+K1,UCBLDPT IS THE TAPE AT LOAD POINT 59400000 BNO OTA52300 NO, PERFORM ANOTHER BACKSPACE 59600000 B OTA52700 YES,ERROR - UNABLE TO POSITION 59800000 OTA52400 EQU * 60000000 BAL RB,OTA53000 SEE IF TAPE IS AT LOAD POINT 60200000 TM IOBSENSE+K1,UCBLDPT TAPE AT LOAD POINT 60400000 BO OTA52500 YES, BRANCH 60600000 MVI DXCCW1,CCWFSF FORWARD SPACE FILE CCW 60800000 BAL RB,OTA52900 GO EXECUTE FSF 61000000 SPACE 1 61200000 * SEE IF THIS IS THE LAST DCB IN OPEN LIST 61400000 SPACE 1 61600000 OTA52500 EQU * 61800000 IECRES XCTL,MERGE 62000000 SPACE 1 62200000 * BYPASS ROUTINE - READ ONE RECORD. TEST TO SEE IF TAPE MARK WAS 62400000 * READ, IF SO, TAPE IS IN PROPER POSITION. 62600000 * IF TAPE MARK WAS NOT READ, BACKSPACE ONE RECORD. 62800000 * 63000000 OTA52600 EQU * 63200000 MVC DXCCW1,BSFCCW MOVE IN A CCW 63400000 LA RB,DXLBL GET READ ADDRESS 63600000 ST RB,DXCCW1 STORE IN CCW 63800000 MVI DXCCW1,CCWRDTAP MOVE IN READ OP 64000000 BAL RB,OTA53000 GO READ A RECORD 64200000 TM IOBSTAT0,CSWUNITX WAS A TAPE MARK READ 64400000 BCR 1,RD YES, RETURN 64600000 MVI DXCCW1,CCWBSR MOVE IN BACKSPACE RECORD 64800000 BAL RB,OTA52900 GO EXECUTE BACKSPACE 65000000 BR RD RETURN 65200000 * 65400000 SPACE 1 65600000 * ERROR - SPECIFIED FILE SEQUENCE NUMBER NOT ON TAPE 65800000 SPACE 1 66000000 OTA52700 EQU * 66200000 LA R0,K10 INT CODE - BACKSPACE TO LD PNT 66400000 OTA52800 EQU * 66600000 DMABCOND (0),PROBDET 66800000 * 67000000 OTA52900 EQU * 67200000 EXCP DXIOB INITIATE I/O OPERATION 67400000 IECRES WAIT 67600000 TM DXECB,ECBNOERR CK FOR PERMANET I/O ERROR 67800000 BCR 1,RB RETURN IF NO ERROR 68000000 LA R0,K9 INT CODE - POSITIONING ERROR 68200000 B OTA52800 GO TO PROBLEM DETERMINATION 68400000 * CLOSE - CALL ABNORMAL END OF TASK 68600000 OTA53000 EQU * 68800000 EXCP DXIOB ISSUE I/O OPERATION 69000000 IECRES WAIT 69200000 BR RB RETURN 69400000 SPACE 1 69600000 * CONSTANTS 69800000 SPACE 1 70000000 NOPCCW DC X'0300000000000001' 70200000 BSFCCW DC X'2F00000020000001' 70400000 FSFCCW DC X'3F00000020000001' 70600000 REWCCWC DC X'0700000020000001' 70800000 DANULLC DC X'000000000000' 71000000 OP2KONE DC X'0001' CONSTANT ONE 71200000 DS 0F 71400000 ANUM1 DC X'00010001' MASK TO UPDATE SEQ CNT AND NO 71600000 * 71800000 XCTLTABL XCTLTABL ID=(MERGE,6J,PROBDET,0P) 72000000 * 72200000 IECDSECS TIOT,DCB,UCB,MAIN,EXPAND=YES 72400000 IECEQU 72600000 END 72800000 ./ ADD SSI=00010337,NAME=IFG0195D,SOURCE=0 TITLE 'IFG0195D/OPEN - NSL INPUT' 00200000 COPY LCGASMSW 00250000 IFG0195D CSECT 00800000 *********************************************************************** 01000000 * * 01200000 * * 01400000 * RELEASE 25 DELETIONS/CHANGES * 01600000 * RELEASE 24 DELETIONS/CHANGES * 01800000 * RELEASE 23 DELETIONS/CHANGES * 02000000 * RELEASE 22 DELETIONS/CHANGES * 02200000 * RELEASE 21.7 DELETIONS/CHANGES * 02390001 *0000678000,682000,416000-610000,614000,616000,824000 SA54629 02392001 *0000410000-412000,800000-802000 SA54555 02394001 * RELEASE 21 DELETIONS/CHANGES * 02400000 *0000828000 S21940 02500021 *0000530000,628000-630000,762000-768000,770000-772000 SA58669 02550001 * * 02600000 * STATUS CHANGE LEVEL 000 * 02800000 * * 03000000 * FUNCTION - * 03200000 * THIS MODULE CONTAINS THE FUNCTION(S) OR PART(S) OF FUNCTION(S)-- * 03400000 * OPEN TAPE NSL INPUT INTERFACE FUNCTION. * 03600000 * REFER TO THE FOLLOWING 'FUNCTION PROLOG(S)' FOR DETAILS. * 03800000 * * 04000000 * ENTRY POINTS - * 04200000 * IFG0195D - VIA THE RESIDENT ROUTINE XCTL FROM THE FOLLOWING-- * 04400000 * IFG0194I - NORMAL ENTRY TO PROCESS NSL INPUT LABELS. * 04600000 * IFG0190R - RETURN FROM MESSAGE MODULE. * 04800000 * IGG0190B - ALIAS ENTRY POINT VIA XCTL FROM NSLOHDRI ON RETURN. * 05000000 * * 05200000 * INPUT - * 05400000 * REFER TO THE FOLLOWING 'FUNCTION PROLOG(S)'. * 05600000 * * 05800000 * OUTPUT - * 06000000 * REFER TO THE FOLLOWING 'FUNCTION PROLOG(S)'. * 06200000 * * 06400000 * EXTERNAL REFERENCES - * 06600000 * IFG019RA - OPEN/CLOSE/EOV RESIDENT ROUTINE FOR XCTL AND * 06800000 * WAIT. * 07000000 * REFER TO THE FOLLOWING 'FUNCTION PROLOG(S)'. * 07200000 * * 07400000 * EXITS, NORMAL - * 07600000 * EXIT VIA THE RESIDENT ROUTINE XCTL TO THE FOLLOWING-- * 07800000 * IFG0196J - TO CONTINUE NORMAL PROCESSING. * 08000000 * IFG0190R - FOR MESSAGES REQUIRING DSNAME. * 08200000 * NSLOHDRI - VIA XCTL TO PROCESS NON-STANDARD LABELS. * 08400000 * REFER TO THE FOLLOWING 'FUNCTION PROLOG(S)'. * 08600000 * * 08800000 * EXITS, ERROR - * 09000000 * EXIT IS TO THE PROBLEM DETERMINATION MODULE IFG0190P, IF AN * 09200000 * ABEND SITUATION OCCURS IN THIS MODULE. REFER TO THE FOLLOWING * 09400000 * 'FUNCTION PROLOG(S)'. * 09600000 * * 09800000 * TABLES/WORK AREAS - * 10000000 * REFER TO THE FOLLOWING 'FUNCTION PROLOG(S)'. * 10200000 * * 10400000 * ATTRIBUTES - * 10600000 * REENTRANT, REFRESHABLE, READ-ONLY, ENABLED, PRIVILEGED * 10800000 * * 11000000 * CHARACTER CODE DEPENDENCY - * 11200000 * CLASS ONE CHARACTER CODE DEPENDENCY - THE EBCDIC CHARACTER CODE * 11400000 * WAS USED FOR ASSEMBLY. THE MODULE MUST BE REASSEMBLED IF A * 11600000 * DIFFERENT CHARACTER SET IS USED FOR EXECUTION. * 11800000 * * 12000000 * NOTES - * 12200000 * REFER TO THE FOLLOWING 'FUNCTION PROLOG(S)'. * 12400000 * * 12600000 *********************************************************************** 12800000 EJECT 13000000 *********************************************************************** 13200000 * * 13400000 * FUNCTION PROLOG * 13600000 * * 13800000 *********************************************************************** 14000000 * * 14200000 * FUNCTION NAME - * 14400000 * OPEN TAPE NSL INPUT INTERFACE FUNCTION. * 14600000 * * 14800000 * (STATUS) - * 15000000 * NOT APPLICABLE * 15200000 * * 15400000 * FUNCTION - * 15600000 * SYNCHRONIZE ALL NSL DCBS. SETUP THE CONDITIONS FOR PARALLEL * 15800000 * PROCESSING PRIOR TO EXITING TO THE NSL ROUTINE. * 16000000 * ON RETURN FROM THE NSL ROUTINE RESET TO PROCESS SERIALLY VIA THE * 16200000 * RESIDENT ROUTINE. * 16400000 * CHECK FOR REJECTED VOLUMES BY TESTING THE MOUNT BIT IN THE UCB * 16600000 * (BIT 0, OFFSET 35). IF THE MOUNT BIT IS ON THE VOLUME IS BEING * 16800000 * REJECTED. REMOUNT THE REJECTED VOLUME. * 17000000 * VERIFY THAT THE MOUNTED VOLUME DOES NOT HAVE A STANDARD LABEL. * 17200000 * * 17400000 * ENTRY POINTS - * 17600000 * ENTERED FROM THE FOLLOWING-- * 17800000 * OPEN TAPE FINAL COMMON FUNCTION TO PROCESS INPUT LABELS. * 18000000 * DISPLAY DSNAME WTO FUNCTION ON RETURN FROM ISSUING A MESSAGE * 18200000 * THAT REQUIRED THE DATA SET NAME. * 18400000 * NSL ROUTINE (NSLOHDRI) ON RETURN FROM PROCESSING LABELS. * 18600000 * REFER TO THE PRECEEDING MODULE PROLOG. * 18800000 * * 19000000 * INPUT - * 19200000 * A POINTER TO EACH OF THE FOLLOWING-- * 19400000 * CURRENT PARAMETER LIST ENTRY. * 19600000 * DD ENTRY IN THE TIOT. * 19800000 * WTG TABLE. * 20000000 * CURRENT WTG TABLE ENTRY. * 20200000 * DCB. * 20400000 * OPEN WORK AREA. * 20600000 * RESIDENT ROUTINE. * 20800000 * UCB * 21000000 * * 21200000 * OUTPUT - * 21400000 * THE FOLLOWING MESSAGE IS ISSUED WHEN A VOLUME IS REJECTED. * 21600000 * IEC101A M - MOUNT MESSAGE. * 21800000 * THE VOLUME HAS BEEN VERIFIED AND POSITIONED BY THE NSL ROUTINE. * 22000000 * * 22200000 * EXTERNAL REFERENCES - * 22400000 * REFER TO THE PRECEEDING MODULE PROLOG. * 22600000 * * 22800000 * EXITS, NORMAL - * 23000000 * REFER TO THE PRECEEDING MODULE PROLOG. * 23200000 * OPEN MERGE JFCB FUNCTION TO CONTINUE NORMAL PROCESSING. * 23400000 * DISPLAY DSNAME WTO FUNCTION WHEN THE DATA SET NAME IS REQUIRED * 23600000 * ON THE MOUNT MESSAGE. * 23800000 * NSL ROUTINE TO PROCESS LABELS. * 24000000 * * 24200000 * EXITS, ERROR - * 24400000 * REFER TO THE PRECEEDING MODULE PROLOG. * 24600000 * EXIT WITH ONE OF THE FOLLOWING INTERNAL CODES-- * 24800000 * 2 - 413 ABEND - I/O ERROR ON REWIND OR REWIND/UNLOAD. * 25000000 * 3 - 413 ABEND - I/O ERROR ON ATTEMPT TO READ A LEBEL. * 25200000 * * 25400000 * TABLES/WORK AREAS - * 25600000 * THE OPEN, CLOSE, OR EOV WORK AREA AND THE WHERE-TO-GO (WTG) * 25800000 * TABLE ARE DESCRIBED BY THE DSECTS AT THE END OF THE LISTING. * 26000000 * * 26200000 * ATTRIBUTES - * 26400000 * REFER TO THE PRECEEDING MODULE PROLOG. * 26600000 * * 26800000 * CHARACTER CODE DEPENDENCY - * 27000000 * REFER TO THE PRECEEDING MODULE PROLOG. * 27200000 * * 27400000 * NOTES - * 27600000 * * 27800000 *********************************************************************** 28000000 EJECT 28200000 IECEQU 28400000 * * 28600000 USING FORCORE,RCORE 28800000 USING TIOENTRY,RTIOT 29000000 USING IHADCB,RDCB 29200000 USING UCBOB,RUCB 29400000 USING WTG,RWTG 29600000 * 29800000 BALR RBASE,0 ESTABLISH ADDRESSABILITY 30000000 USING *,RBASE 30200000 * 30400000 B OTA60000(RET) GO TO PROPER ENTRY 30600000 OTA60000 EQU * 30800000 B OTA62000 RETURN FROM MESSAGE ROUTINE 31000000 B OTA60500 NORMAL RETURN PROCESSING 31200000 B OTA60200 INITAL NSL RETURN 31400000 B OTA60100 INITAL ENTRY 31600000 B OTA62300 ENTRY WHEN THERE IS A REJECT 31800000 OTA60100 EQU * 32000000 STM RTIOT,RUCB,DXXCTL SAVE REGS FOR RETURN FROM NSL 32200000 IECRES SYNCHDCB 32400000 NI WTGPATHS+K1,ALLBITS-K2 TURN OFF REJECT SWITCH 32600000 LR RD,RES SAVE RESIDENT PTR FOR RETURN 32800000 L RPAR,WTGECBAD POINT TO ECB LIST 33000000 L RPAR,K0(RPAR) PARAMETER LIST POINTER 33200000 LA RET,K8 RE-ENTRY FORM NSL 33400000 MVC WTGMODNM,NSLOHDRI NSL ROUTINE NAME 33600000 LA RF,DXCCW12 XCTL WORK AREA 33800000 XCTL EPLOC=(RWTG),DCB=0,SF=(E,(15)) 34000000 * 34200000 OTA60200 EQU * 34400000 MVC WTGMODNM,OPENIDB RESTORE IFG019 NAME 34600000 LR RPAR,RPARC GET FIRST NSL PARM PTR 34800000 LR RB,RWTGC GET FIRST NSL WTG ENTRY PTR 35000000 OTA60300 EQU * 35200000 TM K0(RPAR),LASTNTRY IS THIS THE LAST DCB IN LIST 35400000 BO OTA60400 YES, GO CHECK FIRST DCB 35600000 LA RPAR,K4(RPAR) GET NEXT PARM POINTER 35800000 LA RB,K8(RB) GET NEXT WTG ENTRY POINTER 36000000 CLC K0(K2,RB),RETID THIS A NSL IN DCB 36200000 BNE OTA60300 NO, BRANCH 36400000 L RC,K4(RB) GET WORK AREA POINTER 36600000 * RESTORE RTIOT AND RUCB TO 36800000 * REGISTER SAVE AREA 37000000 MVC DXREG9-FORCORE(K8,RC),DXXCTL-FORCORE(RC) 37200000 LA RET,K4 ENTRY TO THIS LOAD AFTER 37400000 * FIRST DCB HAS COMPLETED 37600000 ST RET,DXREGE-FORCORE(RC) SAVE ENTRY VALUE 37800000 B OTA60300 CHECK NEXT DCB 38000000 OTA60400 EQU * 38200000 LR RES,RD RESTORE RESIDENT POINTER 38400000 * 38600000 OTA60500 EQU * 38800000 TM UCBDMCT,UCBMOUNT CK FOR MOUNT SW FOR NSL 39000000 BNO OTA62300 BR IF NOT ON 39200000 OTA60600 EQU * 39400000 OI WTGPATHS+K1,K2 INDICATE REJECT 39600000 MVC DXCCW1,REWCCWB SET UP REWIND CCW 39800000 MVI DXCCW1,CCWRUN MOVE IN REWIND - UNLOAD 40000000 BAL RB,OTA62800 BR TO EXEC RUN 40200000 OI UCBFL1,UCBNOTRD SET UCB NOT READY BIT ON 40400000 * 40600000 * ISSUE DEMOUNT MESSAGE SA54555 40604001 * SA54555 40608001 MVC MSGLSTSZ(L'FLAG+L'MSG15D),FLAG MCS, DEMOUNT MSG SA54555 40620001 MVI MSGLSTSZ+1,K17 MESSAGE LENGTH SA54555 40640001 MVC MSGUN+L'MSGUN(K4),DESC15D DESC, ROUT CODES SA54555 40660001 MVC MSGUN,UCBNAME UNIT NAME SA54555 40680001 WTO MF=(E,MSGLSTSZ) DEMOUNT MESSAGE SA54555 40700001 * SA54555 40720001 L RB,MSGDESC0 LOAD DESC AND ROUT CODES 40800000 MVC MSGLSTSZ+8(L'MSG05D),MSG05D MOUNT MSG ID SA54555 41000001 MVC MSGVOLSR(K6),DXVOLMT1 VOLUME SERIAL NUMBER SA54555 41200001 LA R1,MSGLSTSZ ADDR OF MESSAGE BUFFER 41400000 LA RC,K12 BRANCH OFFSET SA54629 41420001 LA RET,K12 BRANCH OFFSET SA54629 61200001 LA RF,WTOMOD MESSAGE MODULE IDTTR 61600000 OI WTGPATHS,WTGNSL INDICATE MSG MOD REQUIRED 61800000 B OTA62700 GO TO MSG MODULE 62000000 * 62200000 OTA62000 EQU * 62400000 NI WTGPATHS,ALLBITS-WTGNSL TURN OFF WTO MOD REQUIRED SW 62600000 MVC DXCCW1,REWCCWB SET UP REWIND CCW 63200000 BAL RB,OTA62800 BRANCH TO EXECUTE CHANNEL PGM 63400000 LA RB,DXLBL PLACE THE ADDRESS OF THE LABEL 63600000 ST RB,DXCCW1 AREA INTO THE READ CCW 63800000 LA RB,K80 NO FLAGS, 80 CHARACTERS 64000000 ST RB,DXCCW1+K4 64200000 MVI DXCCW1,CCWRDTAP SET UP READ TAPE OP CODE 64400000 NI DXCCW1+4,X'FF'-CCWSILI TURN OFF SLI FLAG SA54629 64500001 EXCP DXIOB 64600000 IECRES WAIT 64800000 OI DXCCW1+4,CCWSILI SET SLI FLAG SA54629 64900001 LA RD,K3 INT CODE - I/O ERROR ON READ 65000000 TM IOBSTAT1,X'3E' CHAN PROG/PROT/DATA/ 65200000 * CTRL/IFCE CHECK 65400000 BNZ OTA63000 YES,ABEND 65600000 * 65800000 TM IOBSTAT0,X'02' CK FOR UNIT CHECK 66000000 BZ OTA62100 BR IF NO 66200000 TM IOBSENSE,X'F7' CK FOR HARDWARE ERROR 66400000 BNZ OTA63000 YES,ABEND 66600000 TM IOBSENS1,X'01' IS NOT CAPABLE BIT ON 66800000 BO OTA60600 YES,REJECT 67000000 B OTA62200 NO 67200000 OTA62100 EQU * 67400000 CLC DXLBL(K4),OP2KVOL1 CK FOR VOLUME LABEL 67600000 BNE OTA62150 BR IF NO TO CONTINUE SA54629 67800001 TM IOBSTAT1,X01 INCORRECT LENGTH ON SA54629 67820001 BNO OTA60600 BR IF NO TO REJECT, SA54629 67840001 * TAPE IS SL SA54629 67860001 OTA62150 EQU * SA54629 67880001 CLC DXLBL(K4),ASCIVOL CK FOR USASI VOL LABEL 68000000 BNE OTA62200 BR IF NO TO CONTINUE 68200001 CLI IOBCNT+1,K0 BYTE COUNT ZERO SA54629 68220001 BE OTA60600 BR IF YES TO REJECT SA54629 68240001 * FALL THROUGH IF NOT, SA54629 68260001 * LABEL IS TOO SHORT TO SA54629 68280001 * BE AL. SA54629 68300001 OTA62200 EQU * 68400000 MVC DXCCW1,REWCCWB SET UP REWIND CCW 68600000 BAL RB,OTA62800 68800000 OTA62300 EQU * 69000000 IECRES SYNCHDCB 69200000 LA RET,K16 REJECT ENTRY AFTER MSG MOD 69400000 LA RF,RETID THIS MODULE IDTTR 69600000 TM WTGPATHS,WTGNSL IS MSG MOD REQUIRED 69800000 BO OTA62400 YES, BRANCH 70000000 LA RET,K0 ENTRY TO MERGE MODULE 70200000 LA RF,MERGE MERGE MODULE IDTTR 70400000 TM WTGPATHS+K1,K2 HAS A TAPE BEEN REJECTED 70600000 BZ OTA62500 NO, GO TO MERGE 70800000 LA RET,K12 RE-ENTRY TO THIS MOD 71000000 LA RF,RETID THIS MODULE IDTTR 71200000 B OTA62500 GO SET UP EXIT 71400000 OTA62400 EQU * 71600000 MVC WTGMODID,BLANKID BLANK MOD ID TO FORCE XCTL 71800000 OTA62500 EQU * 72000000 LR RB,RPARC GET CURRENT PARM LIST ENTRY 72200000 LR RC,RWTGC GET CURRENT WTG ENTRY 72400000 OTA62600 EQU * 72600000 TM K0(RB),LASTNTRY LAST DCB IN PARM LIST 72800000 BO OTA62700 YES, GO SET FIRST DCB EXIT 73000000 LA RB,K4(RB) GET NEXT ENTRY IN PARM LIST 73200000 LA RC,K8(RC) GET NEXT WTG ENTRY 73400000 CLC K0(K2,RC),RETID IS IT A NSL INPUT DCB 73600000 BNE OTA62600 NO, BRANCH 73800000 L RD,K4(RC) GET WORK AREA ADDRESS 74000000 ST RET,DXREGE-FORCORE(RD) SET ENTRY VALUE 74200000 MVC K0(K5,RC),K0(RF) MOVE IN NEXT MODULE IDTTR 74400000 B OTA62600 GO CHECK FOR MORE DCBS 74600000 * 74800000 OTA62700 EQU * 75000000 IECRES XCTL,(RF),(RET) 75200000 * 75400000 * 75600000 OTA62800 EQU * 75800000 EXCP DXIOB 76000000 IECRES WAIT 76200000 TM UCBSTAB,UCBBNUL ANY MSG IDS IN UCB SA58669 76250001 BZ OTA62900 NO, SKIP DOM SA58669 76300001 MVI REPLY+K4,LASTNTRY INDICATE 1 MSG TO DELETESA58669 76350001 MVC REPLY+K5(K3),UCBFSER FIRST MSG ID IN DOM LISTSA58669 76400001 MVC REPLY+K9(K3),UCBFSER+K3 2ND MSG ID IN DOM LIST SA58669 76450001 NC REPLY+K9(K3),REPLY+K9 IS THERE A 2ND MSG SA58669 76550001 BZ OTA62850 NO, GO DELETE ONE MSG SA58669 76600001 MVI REPLY+K4,K0 INDICATE MORE MSG IDS SA58669 76650001 MVI REPLY+K8,LASTNTRY INDICATE END OF DOM LISTSA58669 76700001 OTA62850 EQU * SA58669 76750001 DOM MSGLIST=REPLY+K4 DELETE WTO SA58669 76850001 NI UCBSTAB,X'FF'-UCBBNUL TURN OFF UCB DOM INDR SA58669 76900001 MVC UCBFSER(K6),UCBVOLI RESTORE UCBSQC SA58669 76950001 OTA62900 EQU * 77400000 TM DXECB,ECBNOERR CK FOR I/O ERROR 77600000 BCR 1,RB BR IF NO ERROR 77800000 LA RD,K2 INT CODE - I/O ERROR ON C 78000000 OTA63000 EQU * 78200000 DMABCOND (RD),PROBDET 78400000 * 78600000 OPENIDB DC C'IFG0195D' MOD ID 78800000 NSLOHDRI DC C'NSLOHDRI' NSL MODULE 79000000 OP2KVOL1 DC C'VOL1' VOLUME 1 79200000 ASCIVOL DC X'564F4C31' ASCII CODE FOR 'VOL1' 79400000 REWCCWB DC X'0700000020000001' REWIND CCW 79600000 * MESSAGE 79800000 FLAG DC X'00008000' MCS FLAGS SA54555 80000001 MSG15D DC C'IEC114E D ' BASIC DEMOUNT MESSAGE SA54555 80200001 MSG05D DC C'01A M ' MOUNT MSG ID SA54555 80220001 LOGICAL1 DC C'LGL001' LOGICAL 1 80400000 DS 0F ALIGN ON A FULLWRD BNDRY 80600000 MSGDESC0 DC X'4000' TP DESCRIPTOR CODE 80800000 DESC15D EQU * SA54555 80820001 MSGROUT0 DC X'2000' TP ROUTING CODE 81000000 ROUT15D DC X'2000' DEMOUNT MSG ROUT CODE SA54555 81020001 BLANKID DC C' ' BLANK MOD ID TO FORCE XCTL 81200000 NSLCHAR DC C'NSL' NON STANDARD LABEL 81400000 IDLGTH DC H'8' MESSAGE ID LENGTH. 81600000 TSOMSG DC C'IEC108I OPERATOR ACTION HAS BEEN REQUESTED FOR YOUR DAX81800000 TA SET' 82000000 * 82200000 XCTLTABL XCTLTABL ID=(MERGE,6J,RETID,5D,WTOMOD,4G,PROBDET,0P) SA54629 82400001 * 82600000 IECDSECS TIOT,DCB,UCB,MAIN,JSCB,PSCB,UPT,TJB,TSCVT,SMF, X83000000 TCB,CVT,WTG,EXPAND=YES 83200000 IEEBASEA 83400000 END 83600000 ./ ADD SSI=00010665,NAME=IFG0195E,SOURCE=0 TITLE 'IFG0195E/OPEN - DA VOL SEARCH FOR DISP=MOD DATA SET' 00200000 COPY LCGASMSW 00750000 IFG0195E CSECT 00800000 *********************************************************************** 01000000 * * 01200000 AIF ('&LIB' EQ 'LIB1').LIB15E0 01250000 * * 01300000 * VS2 RELEASE 01 DELETIONS * 01350000 *0000 YM0871 01360000 * * 01370000 .LIB15E0 ANOP 01380000 * * 01400000 * RELEASE 25 DELETIONS/CHANGES * 01600000 * RELEASE 24 DELETIONS/CHANGES * 01800000 * RELEASE 23 DELETIONS/CHANGES * 02000000 * RELEASE 22 DELETIONS/CHANGES * 02200000 * RELEASE 21.7 DELETIONS/CHANGES * 02210001 *0000202000,352000-356000,714000,718000,748000-752000,776000, SA46620 02220001 *0000962000 SA46620 02230001 * RELEASE 21 DELETIONS/CHANGES * 02400000 *0000 A38147 02500021 * * 02600000 * STATUS CHANGE LEVEL 000 * 02800000 * * 03000000 * FUNCTION - * 03200000 * THIS MODULE CONTAINS THE FUNCTION(S) OR PART(S) OF FUNCTION(S)-- * 03400000 * OPEN DA DISP=MOD ERROR RECOVERY FUNCTION * 03600000 * REFER TO THE FOLLOWING 'FUNCTION PROLOG(S)' FOR DETAILS. * 03800000 * * 04000000 * ENTRY POINTS - * 04200000 * IFG0195E * 04400000 * * 04600000 * INPUT - * 04800000 * REFER TO THE FOLLOWING 'FUNCTION PROLOG(S)'. * 05000000 * * 05200000 * OUTPUT - * 05400000 * REFER TO THE FOLLOWING 'FUNCTION PROLOG(S)'. * 05600000 * * 05800000 * EXTERNAL REFERENCES - * 06000000 * IFG019RA - OPEN/CLOSE/EOV RESIDENT ROUTINE FOR XCTL AND * 06200000 * WAIT. * 06400000 * REFER TO THE FOLLOWING 'FUNCTION PROLOG(S)'. * 06600000 * * 06800000 * EXITS, NORMAL - * 07000000 * REFER TO THE FOLLOWING 'FUNCTION PROLOG(S)'. * 07200000 * * 07400000 * EXITS, ERROR - * 07600000 * EXIT IS TO THE PROBLEM DETERMINATION MODULE IFG0190P, IF AN * 07800000 * ABEND SITUATION OCCURS IN THIS MODULE. REFER TO THE FOLLOWING * 08000000 * 'FUNCTION PROLOG(S)'. * 08200000 * * 08400000 * TABLES/WORK AREAS - * 08600000 * REFER TO THE FOLLOWING 'FUNCTION PROLOG(S)'. * 08800000 * * 09000000 * ATTRIBUTES - * 09200000 * REENTRANT, REFRESHABLE, READ-ONLY, ENABLED, PRIVILEGED * 09400000 * * 09600000 * CHARACTER CODE DEPENDENCY - * 09800000 * CLASS ONE CHARACTER CODE DEPENDENCY - THE EBCDIC CHARACTER CODE * 10000000 * WAS USED FOR ASSEMBLY. THE MODULE MUST BE REASSEMBLED IF A * 10200000 * DIFFERENT CHARACTER SET IS USED FOR EXECUTION. * 10400000 * * 10600000 * NOTES - * 10800000 * REFER TO THE FOLLOWING 'FUNCTION PROLOG(S)'. * 11000000 * * 11200000 *********************************************************************** 11400000 EJECT 11600000 *********************************************************************** 11800000 * * 12000000 * FUNCTION PROLOG * 12200000 * * 12400000 *********************************************************************** 12600000 * * 12800000 * FUNCTION NAME - * 13000000 * OPEN DA DISP=MOD ERROR RECOVERY FUNCTION * 13200000 * * 13400000 * (STATUS) - * 13600000 * NOT APPLICABLE * 13800000 * * 14000000 * FUNCTION - * 14200000 * WHEN THE FORMAT 1 DSCB FOR A MOD DATA SET OPENED FOR OUTPUT * 14400000 * IS NOT FOUND ON THE LAST VOLUME, THIS FUNCTION SEARCHES ALL * 14600000 * OF THE VOLUMES FROM THE FIRST FOR THE LAST ONE TO HAVE THE * 14800000 * DATA SET. * 15000000 * * 15200000 * ENTRY POINTS - * 15400000 * IFG0195E * 15600000 * * 15800000 * INPUT - * 16000000 * LIST OF VOLUME SERIAL NUMBERS FOR DATA SET, EITHER ALREADY IN * 16200000 * MAIN STORAGE IN THE JFCB, OR TO BE READ IN FROM JFCB EXTENSIONS. * 16400000 * DXCCW1 + DXCCW2 MUST CONTAIN A SEARCH ID EQ, TIC *-8. * 16600000 * RUCB - ADDR OF CURRENT (SUB) UCB ON WHICH THE FULL VTOC SEARCH * 16800000 * FAILED (USED TO DECREMENT UCB OPEN DCB DATA MANAGEMENT COUNTER). * 17000000 * * 17200000 * OUTPUT - * 17400000 * TIOT UCB POINTER ROTATED TO CORRECT VOLUME, WORK DEB SET UP * 17600000 * WITH ADDRESS OF CORRECT VOLUME, AND DSCB FROM CORRECT VOLUME * 17800000 * IN MAIN WORK AREA. * 18000000 * * 18200000 * EXTERNAL REFERENCES - * 18400000 * IECPCNVT - SUBROUTINE TO CONVERT A DISK ADDRESS FROM TTR * 18600000 * TO MBBCCHHR. IT IS RESIDENT IN THE NUCLEUS. * 18800000 * REFER TO THE PRECEEDING MODULE PROLOG. * 19000000 * * 19200000 * EXITS, NORMAL - * 19400000 * XCTL TO IFG0195A WITH RET=04. * 19600000 * * 19800000 * EXITS, ERROR - * 20000000 * *XCTL TO IFG0190P WITH OPEN INTERNAL ABEND CODE 224 * 20050001 * TO GIVE A 213-1C ABEND IF I/O ERROR READING VTOC FORMAT 4 DSCB. * 20100001 * *XCTL TO IFG0195G WITH RET=08 IF DSCB NOT ON FIRST VOLUME. * 20200001 * REFER TO THE PRECEEDING MODULE PROLOG. * 20400000 * * 20600000 * TABLES/WORK AREAS - * 20800000 * THE FORMAT AND CONTENTS OF THE WORK AREAS USED ARE DSCRIBED BY * 21000000 * THE DSCTS AT THE END OF THE LISTING. * 21200000 * * 21400000 * ATTRIBUTES - * 21600000 * REFER TO THE PRECEEDING MODULE PROLOG. * 21800000 * * 22000000 * CHARACTER CODE DEPENDENCY - * 22200000 * REFER TO THE PRECEEDING MODULE PROLOG. * 22400000 * * 22600000 * NOTES - * 22800000 * THE EQUIVALENT TYPE OF DISP=MOD RECOVERY IS NOT DONE FOR * 23000000 * MAGNETIC TAPE. * 23200000 * THE FULL VTOC SEARCH READS TO THE END OF THE CYLINDER, * 23210001 * EVEN IF THE VTOC ENDS ON OTHER THAN A CYLINDER BOUNDARY. * 23220001 * * 23400000 *********************************************************************** 23600000 EJECT 23800000 IECDSECS CVT,TIOT,UCB,DEB, DEFINE DESIRED DSECTS TO BE X24000000 DCB,MAIN EXPANDED AT THE END 24200000 * 24400000 AIF ('&LIB' NE 'LIB1').LIB25E1 24500000 IECEQU , DEFINE EQUATES 24600000 .LIB25E1 ANOP 24620000 AIF ('&LIB' EQ 'LIB1').LIB15E1 24640000 IECEQU AOS=YES 24660000 QMIJFCBL EQU 408 WORK AREA SIZE 24680000 PTRBUFA EQU 324 OFFSET TO SAVE AREA FOR RD - RE 24700000 PTRBUFB EQU 332 OFFSET TO SAVE AREA FOR QMNGR 24720000 .LIB15E1 ANOP 24740000 * 24800000 USING IHADCB,RDCB DEFINE BASE TO USER'S DCB 25000000 USING FORCORE,RCORE DEFINE BASE TO MAIN WORK AREA 25200000 USING TIOENTRY,RTIOT DEFINE BASE TO TIOT DD ENTRY 25400000 USING UCBOB,RUCB DEFINE BASE TO MAIN UCB 25600000 * 25800000 BALR RBASE,0 ESTABLISH BASE REGISTER 26000000 USING *,RBASE DEFINE BASE REGISTER 26200000 * 26400000 B ODA24000(RET) BR TO INDICATED FUNCTION 26600000 * 26800000 ODA24000 B ODA24050 RET=0 INITIAL ENTRY 27000000 B ODA24700 RET=4 RETURN FROM VOL VERIFY 27200000 * 27400000 *********************************************************************** 27600000 * 27800000 * INITIALIZE TO START VOLUME SEARCH ON FIRST VOLUME. 28000000 * 28200000 ODA24050 EQU * 28400000 MVI JFCBVLSQ+K1,K0 SET VOL SEQ NO. TO 0 28600000 OI JFCBMASK+K4,X01 IND VOL SEQ NO. MODIFIED A38147 28700021 MVI DXWORK2,K0 CLEAR BACKUP INDICATOR 28800000 * 29000000 * READ JFCB EXTENSION IF VOLUME SEQUENCE NUMBER IS GREATER THAN 5. 29200000 * THIS READ IS DONE FOR EVERY VOLUME OVER 5, SINCE IT IS OVERLAID 29400000 * BY THE DSCB FROM EACH VOLUME. 29600000 * 29800000 ODA24100 EQU * 30000000 LH RD,JFCBVLSQ GET VOLUME SEQUENCE NO. 30200000 LA RD,K1(RD) INCR VOL SEQ NO. BY 1 30400000 STH RD,JFCBVLSQ STORE BACK VOL SEQ NO. 30600000 * 30800000 CLI JFCBVLSQ+K1,K5 IS VOL SEQ NO. GREATER THAN 5 31000000 BNH ODA24300 BR IF NO, VOLSER NO. IS IN JFCB 31200000 * 31400000 CLI JFCBVLSQ+K1,K20 IS VOL SEQ NO. GREATER THAN 20 31600000 BH ODA24150 BR IF YES 31800000 L R0,JFCBEXAD-K1 GET EXTENSION TTR FROM JFCB 32000000 AIF ('&LIB' EQ 'LIB1').LIB15E2 32050000 ST R0,DXWORK2 SAVE JFCB TTR0 32100000 .LIB15E2 ANOP 32150000 B ODA24200 BR TO CONTINUE 32200000 ODA24150 EQU * 32400000 L R0,DXWORK2 GET EXTENSION FROM SAVED EXT 32600000 ODA24200 EQU * 32800000 SLL R0,K8 SET TO TTR0 33000000 LTR R0,R0 DOES JFCB EXTENSION EXIST 33200000 BZ ODA25000 BR IF NO, DATA SET ENDS IN 33400000 * CURRENT LAST VOLUME 33600000 * 33800000 AIF ('&LIB' NE 'LIB1').LIB25E2 33900000 LR RF,RDCB SAVE DCB REGISTER 2 IN REG 15 34000000 STM RTIOT,RF,DXREG9 SAVE REGISTERS 9-15 34200000 L RB,CVTPTR GET CVT ADDR 34400000 L RF,CVTPCNVT-CVT(,RB) LOAD ADDR OF IECPCNVT ROUTINE 34600000 L R1,CVTJOB-CVT(,RB) GET ADDR TASK SCHED DCB 34800000 L R1,DCBDEBAD-IHADCB(,R1) GET ADDR TASK SCHED DEB 35000000 MVC DXCCW4(K15),DXDEBUCB+K1 SAVE UCB ADDR-EXTENT SA46620 35200001 MVC DXDEBUCB+K1(K15),K33(R1) JFCB UCB ADDR-EXTENT SA46620 35400001 * 35800000 LA RDCB,DXDAADDR POINT TO MBBCCHHR RESULT FIELD 36000000 BALR RET,RF BR TO CONVERT TTR TO MBBCCHHR 36200000 LM RTIOT,RF,DXREG9 RESTORE REGISTERS 9-15 36400000 LR RDCB,RF RESTORE DCB REG 2 FROM REG 15 36600000 * 36800000 * CONSTRUCT CHANNEL PROGRAM TO READ JFCB EXTENSION. 37000000 * 37200000 * SEARCH ID EQ 37400000 * TIC *-8 37600000 * READ DATA SLI 94 BYTES 37800000 * 38000000 XC DXCCW3,DXCCW3 CLEAR CCW AREA 38200000 LA RF,DXDSCB ADDR OF JFCB EXT READ IN AREA 38400000 ST RF,DXCCW3 38600000 OC DXCCW3,ODA2530K OR IN CMND, FLAGS, LENGTH 38800000 * 39000000 EXCP DXIOB READ JFCB EXTENSION 39200000 * 39400000 IECRES WAIT WAIT FOR READ TO COMPLETE 39600000 * 39800000 MVC DXDEBUCB+K1(K15),DXCCW4 RESTORE UCB ADDR-EXTENT SA46620 39810001 * 39820001 TM DXECB,ECBNOERR CHECK FOR I/O ERROR 40000000 BO ODA24250 BR IF NO 40200000 .LIB25E2 ANOP 40203000 AIF ('&LIB' EQ 'LIB1').LIB15E3 40206000 LA R0,QMIJFCBL SIZE OF QMI WORK AREA 40209000 * 40212000 GETMAIN R,LV=(0) GET CORE FOR QMI WORK AREA 40215000 * 40218000 LR RB,R1 ESTABLISH BASE FOR QMIOLIST 40221000 ST R1,DXWORK1 SAVE STORAGE POINTER 40224000 USING QMIOP,RB 40227000 * 40230000 STM RD,RET,PTRBUFA(R1) SAVE REGISTERS RD AND RE 40233000 LA R1,K24(R1) POINT TO START OF JES WORK AREA 40236000 ST R1,QMIWRKAD STORE POINTER IN PARM LIST 40239000 * 40242000 LA R1,QMIJFCBL(0,R1) JFCB BUFFER POINTER 40245000 ST R1,QMIRECAD STORE POINTER IN PARM LIST 40248000 * 40251000 L R1,CVTPTR ADDRESS OF CVT 40254000 L R1,CVTTCBP-CVT(,R1) GET ADDRESS OF TCB POINTERS 40257000 L R1,K4(R1) GET CURRENT TCB ADDRESS 40260000 ST R1,QMITCBAD STORE CURRENT TCB ADDRESS 40263000 * 40266000 * 40269000 MVC QMIDSKAD,DXWORK2 MOVE JFCB TTR0 TO LIST 40272000 * 40275000 MVI QMIRECL,K0 CLEAR LENGTH BYTE 40278000 MVI QMIRECL+K1,JFCBLGTH SETUP READ LENGTH 40281000 * 40284000 MVI QMIFLAGS,QMIOREAD INDICATE READ OPERATION 40287000 * 40290000 LR R1,RB POINT TO PARAMETER LIST 40293000 * 40296000 * ISSUE READ/WRITE JFCB MACRO 40299000 * 40302000 LA RD,PTRBUFB(R1) SET UP SAVE AREA FOR MACRO 40305000 QMNGRIO 40308000 MVC K0(JFCBEXT,RCORE),QMIJFCBL(RB) MOVE JFCB TO WORK AREA 40311000 LM RD,RET,PTRBUFA(RB) RESTORE REGISTERS RD AND RE 40314000 LR RB,RF SAVE QMNGR RETURN CODE 40317000 LA R0,QMIJFCBL LOAD LENGTH OF JES WORK AREA 40320000 * 40323000 DROP RB 40326000 * 40329000 L R1,DXWORK1 RESTOR STORAGE POINTER 40332000 FREEMAIN R,LV=(0),A=(1) FREE JES WORK AREA 40335000 * 40338000 LTR RB,RB SUCCESSFUL WRITE FROM QMNGR 40341000 BZ ODA24250 YES, BRANCH AROUND ABEND 40344000 * 40347000 .LIB15E3 ANOP 40350000 * 40400000 OABD029 EQU 29 I/O ERROR READING JFCB 40600000 * EXTENSION 40800000 DMABCOND OABD029,ODA2800X XCTL TO PROB DET / ABEND 41000000 * 41200000 *********************************************************************** 41400000 * 41600000 * POINT TO NEXT VOLUME SERIAL NUMBER AND TEST IF NOT SPECIFIED. 41800000 * 42000000 ODA24250 EQU * 42200000 LA RET,DXDSCB+K4 PTR TO JFCB EXT VOLSER NO. - 6 42400000 LA R1,K6 42600000 SR RD,R1 REDUCE VOL SEQ NO. BY 6 42800000 SR RC,RC 43000000 LA R1,K15 43200000 DR RC,R1 DIVIDE VOL SEQ NO. BY 15 43400000 LR RD,RC LOAD REMAINDER IN REG FOR MULT 43600000 LA R1,K14 IS VOL SEQ NO. REMAINDER IN 43800000 CR RC,R1 JFCB EXT EQ 14 44000000 BL ODA24350 BR IF NO, DO NOT SAVE TTR 44200000 MVC DXWORK2+K1(K3),DXDSCB SAVE NEXT JFCB EXT TTR FROM EXT 44400000 B ODA24350 BR TO CONTINUE 44600000 * 44800000 ODA24300 EQU * USING JFCB FOR VOLUME LIST 45000000 LA RET,JFCBVOLS-K6 PTR TO VOL SERIAL NO. - 6 45200000 ODA24350 EQU * 45400000 LA R1,K6 45600000 MR RC,R1 MULT. VOL SEQUENCE NO. BY 6 45800000 AR RET,RD POINTER TO VOL SER NO. IN RET 46000000 * 46200000 CLI 0(RET),C' ' IS VOLUME SERIAL NO. BLANK 46400000 BE ODA24370 BR IF YES 46600000 CLI 0(RET),K0 IS VOLUME SERIAL NO. ZERO 46800000 BNE ODA24400 BR IF NO, IT IS GOOD 47000000 * 47200000 ODA24370 EQU * 47400000 LH R1,JFCBVLSQ GET VOLUME SEQUENCE NO. 47600000 BCTR R1,0 BACK UP BY 1 47800000 STH R1,JFCBVLSQ STORE BACK 48000000 * 48200000 LTR R1,R1 IS VOL SEQ NO. ZERO 48400000 BZ ODA24840 BR IF YES, NO VOL SER NO. 1 48600000 * 48800000 CLI JFCBVLSQ+K1,K5 WAS A JFCB EXT READ OVER DSCB 49000000 BL ODA25050 BR IF NO 49200000 * 49400000 MVI DXWORK2,ALLBITS TURN ON BACKUP INDICATOR 49600000 B ODA24450 BR TO RE-READ DSCB 49800000 * 50000000 ODA24400 EQU * 50200000 MVC DXVOLMT1,0(RET) SAVE NEW CURRENT VOL SER NO. 50400000 ODA24450 EQU * 50600000 * 50800000 *********************************************************************** 51000000 * 51200000 * DECREMENT THE PREVIOUS UCB OPEN DCB DATA MANAGEMENT COUNTER BY 1. 51400000 * 51600000 SR RF,RF SET UP FOR TEST FOR ZERO 51800000 AIF ('&LIB' NE 'LIB1').LIB25E3 51850000 SSM *+K1 DISABLE INTERRUPTS 52000000 .LIB25E3 ANOP 52050000 AIF ('&LIB' EQ 'LIB1').LIB15E4 52100000 MODESET ENABLE=NO DISABLE INTERRUPTS Y01082 52150000 .LIB15E4 ANOP 52160000 CLI UCBID,UCBMAIN IS THIS 2321 52200000 BE ODA24460 BR IF NO 52400000 * 52600000 USING UCBDCELL,RUCB DEFINE BASE TO SUB UCB 52800000 IC RF,UCBDDMCT GET 2321 UCB OPEN DCB COUNT 53000000 LTR RF,RF TEST IF ZERO (SAFETY CHECK) 53200000 BZ ODA24470 BR IF ZERO, DO NOT DECREMENT 53400000 BCTR RF,0 DECR COUNT BY 1 53600000 STC RF,UCBDDMCT STORE COUNT BACK IN UCB 53800000 B ODA24470 BR TO RE-ENABLE INTERRUPTS 54000000 * 54200000 USING UCBOB,RUCB DEFINE BASE TO MAIN UCB 54400000 ODA24460 EQU * 54600000 IC RF,UCBDMCT GET UCB OPEN DCB COUNT 54800000 LTR RF,RF TEST IF ZERO (SAFETY CHECK) 55000000 BZ ODA24470 BR IF ZERO, DO NOT DECREMENT 55200000 BCTR RF,0 DECR COUNT BY 1 55400000 STC RF,UCBDMCT STORE COUNT BACK IN UCB 55600000 AIF ('&LIB' NE 'LIB1').LIB25E4 55650000 ODA24470 SSM ODA2540K RE-ENABLE INTERRUPTS 55800000 .LIB25E4 ANOP 55850000 AIF ('&LIB' EQ 'LIB1').LIB15E5 55900000 ODA24470 MODESET ENABLE=YES RE-ENABLE INTERRUPTS Y01082 55950000 .LIB15E5 ANOP 55960000 * 56000000 *********************************************************************** 56200000 * 56400000 * FIND UCB THAT HAS THE DESIRED VOLUME MOUNTED ON IT. 56600000 * 56800000 MVC DXDEBSCC(K10),ODA2550K SET EXTENT TO COVER DSK SA46620 56810001 * 56820001 LA RC,TIOEFSRT-K1 POINT TO FIRST UCB ADDR 57000000 SR R0,R0 GET LENGTH OF THIS TIOT 57200000 IC R0,TIOELNGH DD ENTRY 57400000 AR R0,RTIOT LAST PLUS ONE UCB ADDR 57600000 B ODA24550 BR TO START UCB LOOP 57800000 * 58000000 ODA24500 EQU * 58200000 LA RC,K4(RC) POINT TO NEXT TIOT UCB ADDR 58400000 CR RC,R0 CHECK FOR MORE UCB ADDRS 58600000 BNL ODA25100 BR IF NO MORE 58800000 * 59000000 ODA24550 EQU * 59200000 L RUCB,0(,RC) LOAD UCB ADDR FROM TIOT 59400000 CLI UCBID,UCBMAIN TEST FOR 2321 59600000 BE ODA24600 BRANCH IF NOT 2321 59800000 * 2321 DATACELL PROCESSING 60000000 USING UCBDCELL,RUCB SET BASE FOR DATACELL 60200000 CLC UCBDVOLI,DXVOLMT1 CHECK FOR CORRECT VOLUME 60400000 BNE ODA24500 BR IF NO 60600000 * 60800000 MVC 0(K4,RC),TIOEFSRT-K1 FIRST UCB ADDR TO CURRENT 61000000 ST RUCB,TIOEFSRT-K1 CURRENT UCB ADDR TO FIRST 61200000 * 61400000 LH RD,UCBDBBNR PICK UP BB NUMBER 61600000 STH RD,DXDEBBIN STORE USER BB IN WORK AREA 61800000 SLA RD,K4 MULTIPLY BB NUMBER BY 16 62000000 LA RD,UCBDCELL-UCBOB(RD) (BB)(16)+MAIN UCB LENGTH 62200000 LCR RD,RD NEGATE OFFSET 62400000 LA RD,0(RD,RUCB) ZERO SET FILE MASK, MAIN UCB 62600000 ST RD,DXDEBUCB STORE MAIN UCB ADDR IN WORK DEB 62800000 * 63000000 AIF ('&LIB' NE 'LIB1').LIB25E5 63050000 SSM *+K1 DISABLE INTERRUPTS 63200000 .LIB25E5 ANOP 63250000 AIF ('&LIB' EQ 'LIB1').LIB15E6 63300000 MODESET ENABLE=NO DISABLE INTERRUPTS Y01082 63350000 .LIB15E6 ANOP 63360000 IC RF,UCBDDMCT INCREMENT UCB 63400000 LA RF,K1(RF) OPEN DCB COUNT 63600000 STC RF,UCBDDMCT BY 1 63800000 AIF ('&LIB' NE 'LIB1').LIB25E6 63850000 SSM ODA2540K RE-ENABLE INTERRUPTS 64000000 .LIB25E6 ANOP 64050000 AIF ('&LIB' EQ 'LIB1').LIB15E7 64100000 MODESET ENABLE=YES RE-ENABLE INTERRUPTS Y01082 64150000 .LIB15E7 ANOP 64160000 * 64200000 TM UCBDDMCT,UCBDDMNT TEST IF MOUNT NOT COMPLETE 64400000 BO ODA25150 BR IF NOT YET COMPLETE 64600000 * 64800000 TM UCBFL1-UCBOB(RD),UCBNOTRD TEST IF MAIN UCB NOT-READY 65000000 BO ODA25200 BR IF YES 65200000 B ODA24650 BR TO CONTINUE 65400000 * 65600000 * NORMAL DIRECT ACCESS PROCESSING 65800000 USING UCBOB,RUCB NORMAL MAIN UCB 66000000 ODA24600 EQU * 66200000 CLC UCBVOLI,DXVOLMT1 CHECK IF CORRECT VOLUME 66400000 BNE ODA24500 BR IF NOT 66600000 * 66800000 MVC 0(K4,RC),TIOEFSRT-K1 FIRST UCB ADDR TO CURRENT 67000000 ST RUCB,TIOEFSRT-K1 CURRENT UCB ADDR TO FIRST 67200000 * 67400000 MVC DXDEBUCB+K1(K3),TIOEFSRT MOVE UCB ADDR INTO WORK DEB 67600000 XC DXDEBBIN,DXDEBBIN ZERO NOT APPLICABLE BIN NO. 67800000 * 68000000 AIF ('&LIB' NE 'LIB1').LIB25E7 68050000 SSM *+K1 DISABLE INTERRUPTS 68200000 .LIB25E7 ANOP 68250000 AIF ('&LIB' EQ 'LIB1').LIB15E8 68300000 MODESET ENABLE=NO DISABLE INTERRUPTS Y01082 68350000 .LIB15E8 ANOP 68360000 IC RF,UCBDMCT INCREMENT UCB 68400000 LA RF,K1(RF) OPEN DCB COUNT 68600000 STC RF,UCBDMCT BY 1 68800000 AIF ('&LIB' NE 'LIB1').LIB25E8 68850000 SSM ODA2540K RE-ENABLE INTERRUPTS 69000000 .LIB25E8 ANOP 69050000 AIF ('&LIB' EQ 'LIB1').LIB15E9 69100000 MODESET ENABLE=YES RE-ENABLE INTERRUPTS Y01082 69150000 .LIB15E9 ANOP 69160000 * 69200000 TM UCBDMCT,UCBMOUNT TEST IF MOUNT NOT COMPLETE 69400000 BO ODA25150 BR IF NOT YET COMPLETE 69600000 * 69800000 TM UCBFL1,UCBNOTRD TEST IF UCB NOT-READY 70000000 BO ODA25150 BR IF YES 70200000 * 70400000 ODA24650 EQU * 70600000 * 70800000 *********************************************************************** 71000000 * 71200000 * READ FORMAT 4 DSCB FROM VTOC TO GET VTOC EXTENT SIZE 71400001 * 71600000 * CONVERT VTOC TTR TO MBBCCHHR FORM 71800001 * 72000000 ODA24700 EQU * 72200000 CLI UCBID,UCBMAIN CHECK FOR 2321 72400000 BE ODA24750 NO, PROCESS OTHER DA DEVICES 72600000 * 72800000 USING UCBDCELL,RUCB SET BASE FOR DATACELL 73000000 L R0,UCBDVTOC GET VTOC TTR FROM UCB 73200000 B ODA24800 BR TO CONTINUE 73400000 * 73600000 USING UCBOB,RUCB SET BASE FOR UCBOB 73800000 ODA24750 EQU * 74000000 L R0,UCBVTOC GET VTOC TTR FROM UCB 74200000 * 74400000 ODA24800 EQU * 74600000 IC R0,ODA2539K MAKE TTR0 SA46620 75200001 * 75400000 LR RF,RDCB SAVE DCB REGISTER 2 IN REG 15 75600000 STM RTIOT,RF,DXREG9 SAVE REGISTERS 9-15 75800000 L RF,CVTPTR GET CVT ADDR 76000000 LA R1,DXDEB POINT TO OPEN WORK DEB 76200000 LA RDCB,DXDAADDR POINT TO MBBCCHHR RESULT FIELD 76400000 L RF,CVTPCNVT-CVT(,RF) LOAD ADDR OF IECPCNVT ROUTINE 76600000 BALR RET,RF BR TO CONVERT TTR TO MBBCCHHR 76800000 LM RTIOT,RF,DXREG9 RESTORE REGISTERS 9-15 77000000 LR RDCB,RF RESTORE DCB REG 2 FROM REG 15 77200000 * 77205001 * CONSTRUCT CHANNEL PROGRAM TO READ FORMAT 4 DSCB 77210001 * 77215001 * SEARCH ID EQ 77220001 * TIC *-8 77225001 * READ DATA 77230001 * 77235001 XC DXCCW3,DXCCW3 CLEAR CCW AREA SA46620 77240001 LA RF,DXDSCB DSCB 4 INPUT BUFFR ADDR SA46620 77245001 ST RF,DXCCW3 INTO CCW3 SA46620 77250001 OC DXCCW3,ODA2538K OR IN CMND,FLAGS,LENGTH SA46620 77255001 * 77260001 EXCP DXIOB READ FORMAT 4 DSCB SA46620 77265001 * 77270001 IECRES WAIT WAIT FOR READ COMPLETE SA46620 77275001 * 77280001 TM DXECB,ECBCOD7F CHECK FOR I/O ERROR SA46620 77285001 BO ODA24820 BR IF NO ERROR SA46620 77290001 * 77295001 OABD224B EQU 224 ERR READING FMT 4 DSCB SA46620 77300001 DMABCOND OABD224B,ODA2800X XCTL TO PROB DET /ABEND SA46620 77305001 * 77310001 ODA24820 EQU * SA46620 77315001 MVC DXDEBECC(K4),DSCUPPLM END VTOC CCHH TO WK DEB SA46620 77320001 * 77325001 *********************************************************************** 77330001 * 77335001 * READ FORMAT 1 DSCB BY FULL VTOC SEARCH. 77340001 * 77400000 * CONSTRUCT CHANNEL PROGRAM TO READ FORMAT 1 DSCB 77600001 * 77800000 * SEARCH ID EQ 78000000 * TIC *-8 78200000 * READ COUNT MT 78400000 * SEARCH KEY EQ 78600000 * TIC *-16 78800000 * READ DATA (DSCB) 79000000 * 79200000 XC DXCCW3(K32),DXCCW3 CLEAR CCW AREA 79400000 LA RF,DXCCW7 SAVE COUNT ADDR 79600000 ST RF,DXCCW3 79800000 LA RF,DXJBF DSNAME KEY ADDR 80000000 ST RF,DXCCW4 80200000 LA RF,DXCCW3 80400000 ST RF,DXCCW5 80600000 LA RF,DXDSCB DSCB BUFF ADDR 80800000 ST RF,DXCCW6 81000000 OC DXCCW3(K32),ODA2535K OR IN CMND, FLAGS, LENGTH 81200000 * 81400000 EXCP DXIOB READ DSCB 81600000 * 81800000 IECRES WAIT WAIT FOR READ COMPLETE 82000000 * 82200000 TM DXECB,ECBNOERR CHECK FOR I/O ERROR 82400000 BO ODA24850 BR IF NO 82600000 * 82800000 CLI JFCBVLSQ+K1,K1 IS THIS FIRST VOLUME 83000000 BNE ODA24900 BR IF NO TO BACK UP 1 VOLUME 83200000 * 83400000 ODA24840 EQU * 83600000 IECRES XCTL,ODA2880X,8 XCTL TO 213 ABEND EXIT TEST 83800000 * 84000000 ODA24850 EQU * 84200000 TM DSCDSIND,X80 IS LAST VOLUME INDICATOR ON 84400000 BO ODA25050 BR IF YES 84600000 CLI DXWORK2,ALLBITS IS BACKING UP 1 VOLUME 84800000 BE ODA25050 INDICATOR ON, BR IF YES 85000000 * 85200000 MVC DXVOLMT2,DXVOLMT1 SAVE CURRENT VOL SER NO. 85400000 B ODA24100 BR TO INCR VOL SEQ NO. 85600000 * 85800000 * THE LAST VOLUME USED INDICATOR IS NOT ON FOR DATA SETS CREATED 86000000 * BEFORE RELEASE 17, OR UNUSED DATA SETS. 86200000 * 86400000 ODA24900 EQU * 86600000 MVC DXVOLMT1,DXVOLMT2 RESTORE PREVIOUS VOL SER NO. 86800000 MVI DXWORK2,ALLBITS TURN ON BACKUP INDICATOR 87000000 LH RF,JFCBVLSQ DECREMENT VOLUME 87200000 BCTR RF,0 SEQUENCE NUMBER 87400000 STH RF,JFCBVLSQ BY 1 87600000 B ODA24450 BR TO DECR UCB DM COUNTER 87800000 * 88000000 *********************************************************************** 88200000 * 88400000 ODA25000 EQU * 88600000 LH R1,JFCBVLSQ GET VOLUME SEQUENCE NO. 88800000 BCTR R1,0 BACK UP BY 1 89000000 STH R1,JFCBVLSQ STORE BACK 89200000 * 89400000 ODA25050 EQU * 89600000 IECRES XCTL,ODA2840X,4 XCTL BACK TO RESUME OPEN 89800000 * 90000000 ODA25100 EQU * 90200000 SR RET,RET SELECT UNIT, MOUNT MSG,VOL VER 90400000 B ODA25250 BR TO XCTL 90600000 ODA25150 EQU * 90800000 LA RET,K4 MOUNT MESSAGE, VOLUME VERIFY 91000000 B ODA25250 BR TO XCTL 91200000 ODA25200 EQU * 91400000 LA RET,K8 VOLUME VERIFY 91600000 ODA25250 EQU * 91800000 LA RF,TIOEFSRT-K1 POINT TO FIRST UCB ADDR 92000000 ST RF,DXCCW2+K4 IN TIOT DD ENTRY FOR MOUNT 92200000 MVC DXRETMOD,ODA2860X IDTTR FOR RETURN 92400000 * 92600000 IECRES XCTL,ODA2820X,(RET) XCTL TO DA MOUNT MODULE 92800000 * 93000000 *********************************************************************** 93200000 * 93400000 * CONSTANTS 93600000 * 93800000 * CCW'S TO READ JFCB EXTENSION 94000000 * DC X'3100000040000005' SEARCH ID EQ 94200000 * DC X'0800000000000000' TIC *-8 94400000 ODA2530K DC X'060000002000005E' READ DATA SLI 94 BYTES 94600000 * 94800000 * CCW'S TO READ FORMAT 1 OR 4 DSCB 95000000 * DC X'3100000040000005' SEARCH ID EQ 95200000 * DC X'0800000000000000' TIC *-8 95400000 ODA2535K DC X'9200000040000008' READ COUNT MT 95600000 DC X'290000004000002C' SEARCH KEY EQ 95800000 DC X'0800000000000000' TIC *-16 96000000 ODA2538K DC X'0600000000000060' READ DATA (DSCB) SA46620 96200001 ODA2539K EQU ODA2538K+K1 CONSTANT ZERO SA46620 96210001 * 96220001 ODA2550K DC X'00000000' START OF EXTENT CCHH SA46620 96230001 DC X'FFFFFFFF' END OF EXTENT CCHH SA46620 96240001 DC X'7FFF' MAX NO OF TRACKS IN EXT SA46620 96242001 AIF ('&LIB' NE 'LIB1').LIB25E9 96250000 * 96400000 ODA2540K DC X'FF' SSM MASK TO ENABLE INTERRUPTS 96600000 * 96800000 XCTLTABL ID=(ODA2800X,0P,ODA2820X,4A,ODA2840X,5A, X97000000 ODA2860X,5E,ODA2880X,5G) 97200000 * 97400000 .LIB25E9 ANOP 97410000 AIF ('&LIB' EQ 'LIB1').LIB15EA 97440000 * 97450000 XCTLTABL ID=(ODA2800X,0P,ODA2820X,4A,ODA2840X,5A, X97460000 ODA2860X,5E,ODA2880X,5G),LENGTH=2048,PATCH=80 YM0871 97470000 * 97472000 IEFJESCT 97480000 IEFQMIOP 97520000 .LIB15EA ANOP 97560000 IECDSECS EXPAND=YES EXPAND DESIRED DSECTS HERE 97600000 * 97800000 END 98000000 ./ ADD SSI=21280212,NAME=IFG0195G,SOURCE=0 TITLE 'IFG0195G/OPEN - DA, EXPIRATION DATE NOT EXPIRED, 213 ABX00200000 END EXIT' 00400000 GBLC &LIB DEFINE GLOBAL CHAR VARIABLE 00600000 &LIB SETC 'LIB1' SET VALUE FOR OS /360 00800000 IFG0195G CSECT 01000000 *********************************************************************** 01200000 * * 01400000 * * 01600000 * RELEASE 25 DELETIONS/CHANGES * 01800000 * RELEASE 24 DELETIONS/CHANGES * 02000000 * RELEASE 23 DELETIONS/CHANGES * 02200000 * RELEASE 22 DELETIONS/CHANGES * 02400000 * RELEASE 21 DELETIONS/CHANGES * 02600000 * * 02800000 * STATUS CHANGE LEVEL 000 * 03000000 * * 03200000 * FUNCTION - * 03400000 * THIS MODULE CONTAINS THE FUNCTION(S) OR PART(S) OF FUNCTION(S)-- * 03600000 * OPEN DA EXPIRATION DATE ERROR FUNCTION * 03800000 * OPEN DA MISSING DSCB 213 ABEND EXIT FUNCTION * 04000000 * REFER TO THE FOLLOWING 'FUNCTION PROLOG(S)' FOR DETAILS. * 04200000 * * 04400000 * ENTRY POINTS - * 04600000 * IFG0195G * 04800000 * * 05000000 * INPUT - * 05200000 * REFER TO THE FOLLOWING 'FUNCTION PROLOG(S)'. * 05400000 * * 05600000 * OUTPUT - * 05800000 * REFER TO THE FOLLOWING 'FUNCTION PROLOG(S)'. * 06000000 * * 06200000 * EXTERNAL REFERENCES - * 06400000 * IFG019RA - OPEN/CLOSE/EOV RESIDENT ROUTINE FOR XCTL AND * 06600000 * WAIT. * 06800000 * REFER TO THE FOLLOWING 'FUNCTION PROLOG(S)'. * 07000000 * * 07200000 * EXITS, NORMAL - * 07400000 * REFER TO THE FOLLOWING 'FUNCTION PROLOG(S)'. * 07600000 * * 07800000 * EXITS, ERROR - * 08000000 * EXIT IS TO THE PROBLEM DETERMINATION MODULE IFG0190P, IF AN * 08200000 * ABEND SITUATION OCCURS IN THIS MODULE. REFER TO THE FOLLOWING * 08400000 * 'FUNCTION PROLOG(S)'. * 08600000 * * 08800000 * TABLES/WORK AREAS - * 09000000 * REFER TO THE FOLLOWING 'FUNCTION PROLOG(S)'. * 09200000 * * 09400000 * ATTRIBUTES - * 09600000 * REENTRANT, REFRESHABLE, READ-ONLY, ENABLED, PRIVILEGED * 09800000 * * 10000000 * CHARACTER CODE DEPENDENCY - * 10200000 * CLASS ONE CHARACTER CODE DEPENDENCY - THE EBCDIC CHARACTER CODE * 10400000 * WAS USED FOR ASSEMBLY. THE MODULE MUST BE REASSEMBLED IF A * 10600000 * DIFFERENT CHARACTER SET IS USED FOR EXECUTION. * 10800000 * * 11000000 * NOTES - * 11200000 * REFER TO THE FOLLOWING 'FUNCTION PROLOG(S)'. * 11400000 * * 11600000 *********************************************************************** 11800000 EJECT 12000000 *********************************************************************** 12200000 * * 12400000 * FUNCTION PROLOG * 12600000 * * 12800000 *********************************************************************** 13000000 * * 13200000 * FUNCTION NAME - * 13400000 * OPEN DA EXPIRATION DATE ERROR FUNCTION * 13600000 * * 13800000 * (STATUS) - * 14000000 * NOT APPLICABLE * 14200000 * * 14400000 * FUNCTION - * 14600000 * REQUEST PERMISSION FROM THE OPERATOR TO WRITE ON A DATA SET * 14800000 * WHOSE EXPIRATION DATE HAS NOT YET EXPIRED. * 15000000 * * 15200000 * ENTRY POINTS - * 15400000 * IFG0195G WITH RET = 0 - ODA90400 * 15600000 * * 15800000 * INPUT - * 16000000 * A REPLY OF 'U' TO USE THE DATA SET. * 16200000 * A REPLY OF 'M' TO NOT USE THE DATA SET. THIS WILL CAUSE A * 16400000 * 713 ABEND TO BE ISSUED BY PROBLEM DETERMINATION. * 16600000 * * 16800000 * OUTPUT - * 17000000 * IEC107D E DDD,VOLSER,JOBNAME,STEPNAME,DSNAME ERROR MESSAGE * 17200000 * WRITTEN TO THE OPERATOR REQUESTING PERMISSION TO USE THE DATA * 17400000 * SET. * 17600000 * * 17800000 * EXTERNAL REFERENCES - * 18000000 * REFER TO THE PRECEEDING MODULE PROLOG. * 18200000 * * 18400000 * EXITS, NORMAL - * 18600000 * IF THE REPLY WAS 'U', XCTL BACK TO IFG0195A TO RESUME * 18800000 * PROCESSING OF THE DATA SET. * 19000000 * * 19200000 * EXITS, ERROR - * 19400000 * IF THE REPLY WAS 'M', XCTL TO IFG0190P WITH OPEN INTERNAL * 19600000 * ABEND CODE 028 TO GIVE AN 713-08 ABEND. * 19800000 * REFER TO THE PRECEEDING MODULE PROLOG. * 20000000 * * 20200000 * TABLES/WORK AREAS - * 20400000 * THE FORMAT AND CONTENTS OF THE WORK AREAS USED ARE DESCRIBED BY * 20600000 * THE DSECTS AT THE END OF THE LISTING. * 20800000 * * 21000000 * ATTRIBUTES - * 21200000 * REFER TO THE PRECEEDING MODULE PROLOG. * 21400000 * * 21600000 * CHARACTER CODE DEPENDENCY - * 21800000 * REFER TO THE PRECEEDING MODULE PROLOG. * 22000000 * * 22200000 * NOTES - * 22400000 * * 22600000 *********************************************************************** 22800000 EJECT 23000000 IECDSECS CVT,TCB,TIOT,UCB, DEFINE DESIRED DSECTS TO BE X23200000 DCB,MAIN EXPANDED AT THE END 23400000 * 23600000 IECEQU , DEFINE EQUATES 23800000 * 24000000 USING IHADCB,RDCB DEFINE BASE TO USER'S DCB 24200000 USING FORCORE,RCORE DEFINE BASE TO MAIN WORK AREA 24400000 USING TIOENTRY,RTIOT DEFINE BASE TO TIOT DD ENTRY 24600000 USING UCBOB,RUCB DEFINE BASE TO MAIN UCB 24800000 * 25000000 BALR RBASE,0 ESTABLISH BASE REGISTER 25200000 USING *,RBASE DEFINE BASE REGISTER 25400000 * 25600000 B ODA90200(RET) BR TO INDICATED FUNCTION 25800000 * 26000000 ODA90200 B ODA90400 RET=0 EXPIRATION DATE ERROR 26200000 B ODA91200 RET=4 EXP DATE WTOR MSG RETURN 26400000 B ODA92000 RET=8 MISSING FMT 1 DSCB 26600000 * 26800000 *********************************************************************** 27000000 * 27200000 * WRITE 'IEC107D E DDD,VOLSER,JOBNAME,STEPNAME,DSNAME' MESSAGE 27400000 * TO THE OPERATOR AND REQUEST HIM TO REPLY U OR M. 27600000 * 27800000 ODA90400 EQU * 28000000 LA RF,REPLY PTR TO REPLY BUFFER 28200000 ST RF,REPLYLTH STORE REPLY PTR IN MSG BUFF 28400000 MVI REPLYLTH,K1 INDICATE REPLY LENGTH OF 1 28600000 LA RF,DXECB 28800000 ST RF,REPLYECB STORE ECB PTR IN MSG BUFF 29000000 MVI DXECB,K0 CLEAR ECB POST CODE 29200000 MVC MCSFLAGS(K16),ODA9400K MOVE IN BASIC MSG 29400000 * 2321 DATACELL PROCESSING 29600000 CLI UCBID,UCBMAIN CHECK IF 2321 29800000 BE ODA90800 BRANCH IF NOT 2321 30000000 USING UCBDCELL,RUCB SET UP BASE FOR DATACELL 30200000 MVI MSGUN+K3,C'/' PUT SLASH IN MSG 30400000 MVC MSGUN+K4(K1),UCBDBBNR+K1 MOVE IN BIN NUMBER 30600000 OI MSGUN+K4,ZONEOF CONVERT TO DECIMAL 30800000 MVI MSGUN+K5,C',' PUT COMMA IN MSG 31000000 MVC MSGVOLSR+K2,DXVOLMT1 PUT VOL SER IN MSG 31200000 L RF,DXDEBUCB GET ADDR OF MAIN UCB 31400000 MVC MSGUN,UCBNAME-UCBOB(RF) PUT UNIT ADDR IN MSG 31600000 LA R1,MSGVOLSR+K7 POINT TO LAST CHAR OF SER 31800000 B ODA91000 BR TO DELIMIT VOL SER NO. 32000000 * 32200000 ODA90600 CLI 0(R1),C' ' FIND THE LAST NON-BLANK CHAR 32400000 BCR 7,RET BR WHEN FOUND 32600000 BCT R1,ODA90600 DECR ADDR AND BR TO LOOK AGAIN 32800000 * 33000000 USING UCBOB,RUCB SET UP BASE FOR UCBOB 33200000 ODA90800 EQU * 33400000 MVC MSGUN,UCBNAME PUT UNIT ADDR IN MSG 33600000 MVC MSGVOLSR,DXVOLMT1 PUT VOL SER IN MSG 33800000 LA R1,MSGVOLSR+K5 POINT TO LAST CHAR OF SER 34000000 * 34200000 ODA91000 EQU * 34400000 MVI K1(R1),C',' DELIMIT VOLUME SERIAL NO. 34600000 MVI K2(R1),C' ' BLANK OUT 34800000 MVC K3(K50,R1),K2(R1) REMAINING BUFFER 35000000 * 35200000 L RF,CVTPTR GET CVT ADDR 35400000 L RF,CVTTCBP-CVT(,RF) GET ADDR TCB POINTERS 35600000 L RF,K4(,RF) GET CURRENT TCB ADDR 35800000 L RF,TCBTIO-TCB(,RF) GET TIOT START ADDR 36000000 * 36200000 MVC K2(K8,R1),TIOCNJOB-TIOT(RF) PUT THE JOB NAME IN MSG 36400000 LA R1,K9(R1) ADVANCE BEYOND JOB NAME 36600000 BAL RET,ODA90600 GO REMOVE BLANKS 36800000 MVI K1(R1),C',' DELIMIT WITH A COMMA 37000000 * 37200000 MVC K2(K8,R1),TIOCSTEP-TIOT(RF) PUT THE STEP NAME IN MSG 37400000 LA R1,K9(R1) UPDATE MSG PTR 37600000 BAL RET,ODA90600 GO REMOVE BLANKS 37800000 * 38000000 LR RF,R1 DETERMINE LENGTH OF 38200000 LA R0,MSGLSTSZ-K1 PRESENT 38400000 SR RF,R0 MESSAGE 38600000 STH RF,MSGLSTSZ SAVE IN MSG LENGTH FIELD 38800000 * 39000000 MVI REPLY,X80 IND WTOR, DSNAME FROM JFCB 39200000 L RB,ODA9440K PASS MCS CODES 39400000 MVC DXRETMOD,ODA9940X RETURN IDTTR 39600000 * 39800000 IECRES XCTL,ODA9970X,4 XCTL TO DSNAME MODULE 40000000 * 40200000 *********************************************************************** 40400000 * 40600000 ODA91200 EQU * 40800000 WAIT ECB=DXECB WAIT ON OPERATOR REPLY 41000000 * 41200000 LTR RB,RB ONE LINE WTOR 41400000 BZ ODA91400 BR IF YES, NO DOM NEEDED 41600000 DOM MSGLIST=REPLY+K4 DELETE FIRST LINE OF MSG 41800000 * 42000000 ODA91400 EQU * 42200000 CLI REPLY,C'U' IGNORE EXP CHECK 42400000 BE ODA91800 YES, GO RESTORE DSCB AREA 42600000 CLI REPLY,C'M' OPERATOR REPLY TO TERMINATE 42800000 BE ODA91600 BR IF YES 43000000 B ODA90400 RECONSTRUCT AND REISSUE MSG 43200000 * 43400000 ODA91600 EQU * 43600000 OABD028 EQU 28 DATA SET DATE NOT EXPIRED 43800000 DMABCOND OABD028,ODA9920X XCTL TO PROB DET / ABEND 44000000 * 44200000 *********************************************************************** 44400000 * 44600000 * THE DSCB MUST BE RE-READ, BECAUSE THE ERROR MESSAGE WAS 44800000 * CONSTRUCTED OVER IT. IT IS READ DIRECTLY BY THE CCHHR IN 45000000 * DXCCW7, WHICH WAS SAVED THERE BY EITHER THE DIRECT DSCB TTR 45200000 * READ OR FULL VTOC SEARCH. 45400000 * 45600000 * CONSTRUCT CHANNEL PROGRAM TO READ FORMAT 1 DSCB DIRECTLY. 45800000 * 46000000 * SEARCH ID EQ 46200000 * TIC *-8 46400000 * READ DATA (DSCB) 46600000 * 46800000 ODA91800 EQU * 47000000 MVC DXDAADDR+K3(K5),DXCCW7 CCHHR OF DSCB TO RE-READ 47200000 * 47400000 XC DXCCW3,DXCCW3 CLEAR THIRD CCW 47600000 LA RF,DXDSCB ADDR TO READ DSCB INTO 47800000 ST RF,DXCCW3 48000000 OC DXCCW3,ODA9460K OR IN CMND, FLAGS, LENGTH 48200000 * 48400000 EXCP DXIOB READ DSCB 48600000 * 48800000 IECRES WAIT WAIT FOR READ OF DSCB 49000000 * 49200000 TM DXECB,ECBNOERR ANY ERRORS 49400000 BZ ODA92000 BR IF YES TO MISSING DSCB 49600000 * 213 ABEND EXIT ERROR RECOVERY 49800000 * 50000000 IECRES XCTL,ODA9960X,12 XCTL BACK TO RESUME OPEN 50200000 * 50400000 *********************************************************************** 50600000 * 50800000 EJECT 51000000 *********************************************************************** 51200000 * * 51400000 * FUNCTION PROLOG * 51600000 * * 51800000 *********************************************************************** 52000000 * * 52200000 * FUNCTION NAME - * 52400000 * OPEN DA MISSING DSCB 213 ABEND EXIT FUNCTION * 52600000 * * 52800000 * (STATUS) - * 53000000 * NOT APPLICABLE * 53200000 * * 53400000 * FUNCTION - * 53600000 * SEARCH THE USER'S DCB EXIT LIST FOR AN X'09' ENTRY. * 53800000 * IF FOUND, BYPASS GOING TO IFG0190P TO ISSUE A 213 ABNED, AND * 54000000 * INSTEAD STOP PROCESSING THIS DCB AND ALLOW A NORMAL RETURN TO * 54200000 * THE CALLER OF OPEN. * 54400000 * IF NOT FOUND, GO TO IFG0190P TO ISSUE THE 213 ABEND. * 54600000 * * 54800000 * ENTRY POINTS - * 55000000 * IFG0195G WITH RET = 08 - ODA92000 * 55200000 * * 55400000 * INPUT - * 55600000 * DCB USER EXIT LIST. * 55800000 * * 56000000 * OUTPUT - * 56200000 * NONE. * 56400000 * * 56600000 * EXTERNAL REFERENCES - * 56800000 * REFER TO THE PRECEEDING MODULE PROLOG. * 57000000 * * 57200000 * EXITS, NORMAL - * 57400000 * IF THE X'09' ENTRY IS FOUND, XCTL TO IFG0198N TO FINISH OPEN. * 57600000 * * 57800000 * EXITS, ERROR - * 58000000 * IF THE X'09' ENTRY IS NOT FOUND, XCTL TO IFG0190P WITH * 58200000 * OPEN INTERNAL ABEND CODE 030 TO GIVE A 213-04 ABEND. * 58400000 * REFER TO THE PRECEEDING MODULE PROLOG. * 58600000 * * 58800000 * TABLES/WORK AREAS - * 59000000 * THE FORMAT AND CONTENTS OF THE WORK AREAS USED ARE DESCRIBED BY * 59200000 * THE DSECTS AT THE END OF THE LISTING. * 59400000 * * 59600000 * ATTRIBUTES - * 59800000 * REFER TO THE PRECEEDING MODULE PROLOG. * 60000000 * * 60200000 * CHARACTER CODE DEPENDENCY - * 60400000 * REFER TO THE PRECEEDING MODULE PROLOG. * 60600000 * * 60800000 * NOTES - * 61000000 * THE X'09' EXIT IS NOT AN EXTERNALLY DOCUMENTED EXIT FOR USE BY * 61200000 * ORDINARY USER PROBLEM PROGRAMS. IT WAS ORIGINALLY USED BY * 61400000 * SYSOUT WRITER PROGRAMS IN ORDER TO AVOID ABENDING WHEN A DATA * 61600000 * SET HAD BEEN DELETED BEFORE IT WAS PRINTED. * 61800000 * THE SAME RESULT CAN NOW BE ACHIEVED BY USING THE X'11' EXIT * 62000000 * AND SPECIFYING BYPASS THE ABEND IN THE EXIT ROUTINE. * 62200000 * * 62400000 *********************************************************************** 62600000 EJECT 62800000 IECDSECS DCB,MAIN,WTG DEFINE DESIRED DSECTS TO BE X63000000 EXPANDED AT THE END 63200000 * 63400000 IECEQU , DEFINE EQUATES 63600000 * 63800000 USING IHADCB,RDCB DEFINE BASE TO USER'S DCB 64000000 USING FORCORE,RCORE DEFINE BASE TO MAIN WORK AREA 64200000 USING UCBOB,RUCB DEFINE BASE TO MAIN UCB 64400000 * 64600000 *********************************************************************** 64800000 * 65000000 * DECREMENT THE OPEN DCB COUNT IN THE CURRENT UCB SO THAT THE 65200000 * CURRENT VOLUME MAY BE DEMOUNTED LATER IF SO DESIRED. 65400000 * 65600000 ODA92000 EQU * 65800000 SR RF,RF SET UP FOR TEST FOR ZERO 66000000 SSM *+K1 DISABLE INTERRUPTS 66200000 CLI UCBID,UCBMAIN IS THIS 2321 66400000 BE ODA92200 BR IF NO 66600000 * 66800000 USING UCBDCELL,RUCB DEFINE BASE TO SUB UCB 67000000 IC RF,UCBDDMCT GET 2321 UCB OPEN DCB COUNT 67200000 LTR RF,RF TEST IF ZERO (SAFETY CHECK) 67400000 BZ ODA92400 BR IF ZERO, DO NOT DECREMENT 67600000 BCTR RF,0 DECR COUNT BY 1 67800000 STC RF,UCBDDMCT STORE COUNT BACK IN UCB 68000000 B ODA92400 BR TO RE-ENABLE INTERRUPTS 68200000 * 68400000 USING UCBOB,RUCB DEFINE BASE TO MAIN UCB 68600000 ODA92200 EQU * 68800000 IC RF,UCBDMCT GET UCB OPEN DCB COUNT 69000000 LTR RF,RF TEST IF ZERO (SAFETY CHECK) 69200000 BZ ODA92400 BR IF ZERO, DO NOT DECREMENT 69400000 BCTR RF,0 DECR COUNT BY 1 69600000 STC RF,UCBDMCT STORE COUNT BACK IN UCB 69800000 ODA92400 SSM ODA9480K RE-ENABLE INTERRUPTS 70000000 * 70200000 *********************************************************************** 70400000 * 70600000 * CHECK FOR DCB EXIT. IF NONE, GO THROUGH NORMAL PROBLEM 70800000 * DETERMINATION ERROR RECOVERY, WHICH WILL USUALLY RESULT IN A 71000000 * 213 ABEND, BECAUSE NO RECOVERY WAS SPECIFIED BY THE USER. 71200000 * 71400000 TM DCBMACRF,DCBMEXCP CHECK FOR EXCP 71600000 BZ ODA92600 BR IF NO 71800000 TM DCBMACRF,DCBMFOUN CHECK FOR FOUNDATION EXTENSION 72000000 BZ ODA93400 BR IF NOT PRESENT 72200000 * 72400000 ODA92600 EQU * 72600000 L R1,DCBEXLST IS ADDR OF EXIT LIST 0 OR 1 72800000 LA R1,0(,R1) 73000000 LA R0,K1 73200000 CR R1,R0 73400000 BNH ODA93400 BR IF NO LIST SPECIFIED 73600000 * 73800000 ODA92800 EQU * 74000000 CLI 0(R1),XL213ABD CHECK FOR ACTIVE X'09' DCB EXIT 74200000 BE ODA93000 BR IF YES 74400000 CLI 0(R1),XL213ABD+LASTNTRY CHECK FOR ACTIVE X'89' DCB EXIT 74600000 BE ODA93000 BR IF YES 74800000 TM 0(R1),LASTNTRY IS THIS END OF LIST 75000000 LA R1,K4(,R1) INCREMENT TO NEXT ENTRY IN LIST 75200000 BZ ODA92800 BR IF NO 75400000 * 75600000 B ODA93400 BR TO PROBLEM DET / ABEND 75800000 * 76000000 *********************************************************************** 76200000 * 76400000 * SINCE A 213 EXIT WAS FOUND, GO TO THE LAST OPEN LOADS TO CLEAN UP. 76600000 * THEY WILL FREEMAIN THE WORK AREAS AND RETURN TO THE CALLER OF OPEN. 76800000 * OTHER DCB'S MAY CONTINUE TO BE OPENED. 77000000 * NO 213 ABEND WILL BE ISSUED. ANY ADDRESS IN THE EXIT LIST ENTRY 77200000 * IS NOT USED. CONTROL WILL RETURN TO THE NORMAL RETURN ADDRESS 77400000 * OF THE CALLER OF OPEN. HE SHOULD THEN TEST THE DCBOFLGS OPEN BIT. 77600000 * THE DCB IS LEFT IN A PARTIALLY OPEN STATE AND SO CAN NOT BE 77800000 * USED AGAIN WITHOUT COMPLETE REINITIALIZATION BY THE USER. 78000000 * 78200000 ODA93000 EQU * 78400000 NI DCBOFLGS,X'FF'-DCBOBUSY CLEAR DCB BUSY BIT TO STOP OPEN 78600000 * 78800000 IECRES XCTL,ODA9980X,4 XCTL TO END OF OPEN 79000000 * 79200000 *********************************************************************** 79400000 * 79600000 * XCTL TO IFG0190P PROBLEM DETERMINATION MODULE. 79800000 * THERE, IF THE USER HAS A X'11' EXIT, HE MAY RECOVER FROM THIS 80000000 * 213 ABEND BY SPECIFYING A NEW VOLUME SERIAL NUMBER TO USE. 80200000 * IF SO, PROBLEM DETERMINATION WILL XCTL TO IFG0194E TO TRY TO 80400000 * RECOVERY WITH THE NEW VOLUME SERIAL NUMBER. 80600000 * PD WILL HAVE PLACED THE NEW VOLUME SERIAL NUMBER SPECIFIED BY THE 80800000 * USER IN DXVOLMT1. 81000000 * 81200000 ODA93400 EQU * 81400000 OABD030 EQU 30 FORMAT 1 DSCB MISSING IN VTOC 81600000 DMABCOND OABD030,ODA9920X, XCTL TO PROBLEM DET / ABEND X81800000 RETURN=ODA9930X,RETCODE=0 IF USER SPECIFIES RECOVERY 82000000 * 82200000 *********************************************************************** 82400000 * 82600000 * CONSTANTS 82800000 * 83000000 ODA9400K DC X'8000' WTOR PREFIX 83200000 ODA9420K DC C'IEC107D E DDD,' BASIC MSG 83400000 * 83600000 ODA9440K DC 0F'0',X'4000' DESC=2 IMMEDIATE ACTION REQUIRD 83800000 DC X'9000' ROUTCDE=(1,4) MASTER CONSOLE, 84000000 * DIRECT ACCESS POOL 84200000 * 84400000 ODA9460K DC X'0600000000000060' READ DATA (DSCB) 84600000 * 84800000 ODA9480K DC X'FF' SSM MASK TO ENABLE INTERRUPTS 85000000 * 85200000 XCTLTABL ID=(ODA9920X,0P,ODA9930X,4E,ODA9940X,5G, X85400000 ODA9960X,5A,ODA9970X,0R,ODA9980X,8N) 85600000 * 85800000 IECDSECS EXPAND=YES EXPAND DESIRED DSECTS HERE 86000000 * 86200000 END 86400000 ./ ADD SSI=00011363,NAME=IFG0195H,SOURCE=0 TITLE 'IFG0195H - OPEN TAPE INPUT SL HDR1 PROCESSING' 00200003 COPY LCGASMSW 00250000 IFG0195H CSECT 00800021 *********************************************************************** 01000021 * * 01200021 * VS1 RELEASE 03.1 DELETIONS/CHANGES * 01300021 *SEE SA69190 XA05166 01310021 *SEE SA70634 XA05414 01320021 *SEE SA70639 XA05419 01330021 * * 01400021 * RELEASE 25 DELETIONS/CHANGES * 01600021 * RELEASE 24 DELETIONS/CHANGES * 01800021 * RELEASE 23 DELETIONS/CHANGES * 02000021 * RELEASE 22 DELETIONS/CHANGES * 02200021 * RELEASE 21.8 DELETIONS/CHANGES * 02210003 *0000332000,348000-350000,510000-512000,514400-514500,514700- SA62401 02220003 *0000514800,516000,700000,716000-730000,768000 SA62401 02222003 *0000002000,262000-270000,320000,390000-392000,400000,460000, S21940 02224003 *0000492000,502000-508000,534000,556000-558000,604000,626000- S21940 02226003 *0000660000,666000-698000,702000-714000,732000-744000,754000- S21940 02228003 *0000760000,764000 S21940 02230003 *0000 SA69190 02232021 *0000 SA70634 02234021 *0000 SA70639 02236021 * RELEASE 21 DELETIONS/CHANGES * 02400021 *0000770000 A43864 02450021 *0000 A39154 02500021 * * 02600021 * STATUS CHANGE LEVEL 000 * 02800021 * * 03000021 * FUNCTION - * 03200021 * THIS MODULE CONTAINS THE FUNCTION(S) OR PART(S) OF FUNCTION(S)-- * 03400021 * OPEN TAPE SL INPUT/MOD HEADER LABEL 1 FUNCTION. * 03600021 * THIS FUNCTION STARTS IN MODULE IFG0195B. * 03800021 * REFER TO THE FOLLOWING 'FUNCTION PROLOG(S)' FOR DETAILS. * 04000021 * * 04200021 * ENTRY POINTS - * 04400021 * IFG0195H - VIA THE RESIDENT ROUTINE XCTL FROM THE FOLLOWING-- * 04600021 * IFG0195B - TO CONTINUE NORMAL PROCESSING. * 04800021 * IFG0190R - RETURN FROM ISSUING DATE PROTECT MESSAGE. * 04900003 * * 05000021 * INPUT - * 05200021 * REFER TO THE FOLLOWING 'FUNCTION PROLOG(S)'. * 05400021 * * 05600021 * OUTPUT - * 05800021 * REFER TO THE FOLLOWING 'FUNCTION PROLOG(S)'. * 06000021 * * 06200021 * EXTERNAL REFERENCES - * 06400021 * IFG019RA - OPEN/CLOSE/EOV RESIDENT ROUTINE FOR XCTL AND * 06600021 * WAIT. * 06800021 * REFER TO THE FOLLOWING 'FUNCTION PROLOG(S)'. * 07000021 * * 07200021 * EXITS, NORMAL - * 07400021 * EXIT VIA THE RESIDENT ROUTINE XCTL TO THE FOLLOWING-- * 07600021 * IFG0195K - TO CONTINUE INPUT/MOD PROCESSING. * 07800021 * IFG0190R - FOR MESSAGE THAT REQUIRES THE DATA SET NAME. * 08000021 * IFG0193A - TO GET NEXT OR PREVIOUS VOLSER NO. AND VOLUME. * 08100021 * REFER TO THE FOLLOWING 'FUNCTION PROLOG(S)'. * 08200021 * * 08400021 * EXITS, ERROR - * 08600021 * EXIT IS TO THE PROBLEM DETERMINATION MODULE IFG0190P, IF AN * 08800021 * ABEND SITUATION OCCURS IN THIS MODULE. REFER TO THE FOLLOWING * 09000021 * 'FUNCTION PROLOG(S)'. * 09200021 * * 09400021 * TABLES/WORK AREAS - * 09600021 * REFER TO THE FOLLOWING 'FUNCTION PROLOG(S)'. * 09800021 * * 10000021 * ATTRIBUTES - * 10200021 * REENTRANT, REFRESHABLE, READ-ONLY, ENABLED, PRIVILEGED * 10400021 * * 10600021 * CHARACTER CODE DEPENDENCY - * 10800021 * CLASS ONE CHARACTER CODE DEPENDENCY - THE EBCDIC CHARACTER CODE * 11000021 * WAS USED FOR ASSEMBLY. THE MODULE MUST BE REASSEMBLED IF A * 11200021 * DIFFERENT CHARACTER SET IS USED FOR EXECUTION. * 11400021 * * 11600021 * NOTES - * 11800021 * REFER TO THE FOLLOWING 'FUNCTION PROLOG(S)'. * 12000021 * * 12200021 *********************************************************************** 12400021 EJECT 12600021 *********************************************************************** 12800021 * * 13000021 * FUNCTION PROLOG * 13200021 * * 13400021 *********************************************************************** 13600021 * * 13800021 * FUNCTION NAME - * 14000021 * OPEN TAPE SL INPUT/MOD HEADER LABEL 1 FUNCTION. * 14200021 * * 14400021 * (STATUS) - * 14600021 * NOT APPLICABLE * 14800021 * * 15000021 * FUNCTION - * 15200021 * READ FILE LABEL 1. * 15400021 * VERIFY THAT THE DSNAME FROM THE LABEL IS THE SAME AS THAT * 15600021 * SPECIFIED IN THE JFCB. * 15800021 * IF OPENING FOR RDBACK OR DISP=MOD THE BLOCK COUNT IS MOVED FROM * 16000021 * THE LABEL TO THE DCB. * 16200021 * WHEN OPENING FOR ANY TYPE OF OUTPUT THE EXPIRATION DATE IS * 16400021 * CHECKED TO SEE IF IT HAS PASSED. IF NOT THE OPERATORS DECISION * 16600021 * GOTTEN AS TO WHETHER THE TAPE MAY BE USED. * 16800021 * (THE FOLLOWING OCCURS IN THE NEXT MODULE, IFG0195K.) * 16900003 * THE SECURITY BYTE IN THE LABEL IS TESTED TO DETERMINE IF A * 17000021 * PASSWORD MUST BE OBTAINED. IF SECURITY PROTECTED AN INDICATOR * 17200021 * IS SET SO THE PASSWORD WILL BE GOTTEN. * 17400021 * FOR AN ASCII TAPE THAT THE SECURITY BYTE IS NOT BLANK, AND * 17600021 * DOES NOT INDICATE SECURITY, THE TAPE CANNOT BE USED. * 17800021 * * 18000021 * ENTRY POINTS - * 18200021 * ENTERED FROM THE FOLLOWING-- * 18400021 * OPEN TAPE SL POSITION FUNCTION. * 18600021 * REFER TO THE PRECEDING MODULE PROLOG. * 18800021 * * 19000021 * INPUT - * 19200021 * A POINTER TO EACH OF THE FOLLOWING-- * 19400021 * CURRENT PARAMETER LIST ENTRY. * 19600021 * DD ENTRY IN THE TIOT. * 19800021 * WTG TABLE. * 20000021 * CURRENT WTG TABLE ENTRY. * 20200021 * DCB. * 20400021 * OPEN WORK AREA. * 20600021 * RESIDENT ROUTINE. * 20800021 * UCB * 21000021 * * 21200021 * OUTPUT - * 21400021 * THE SECURITY BIT HAS BEEN SET IN THE JFCB SO THAT IF A MOD DATA * 21600021 * SET IS EXTENDED TO ANOTHER VOLUME, EOV WILL SET THE SECURITY * 21800021 * INDICATOR IN THE LABELS. * 22000021 * AN INDICATOR HAS BEEN SET SO THE PASSWORD WILL BE OBTAINED IF * 22200021 * NECESSARY. * 22400021 * THE FOLLOWING MESSAGES ARE ISSUED IF NECESSARY-- * 22600021 * IEC114E D - ASCII SECURITY BYTE IS NOT BLANK OR IS NOT * 22800021 * SET TO INDICATE SECURITY. * 23000021 * IEC107D E - ISSUED VIA THE DSNAME WTO FUNCTION WHEN THE * 23200021 * EXPIRATION DATE HAS NOT PASSED. * 23400021 * * 23600021 * EXTERNAL REFERENCES - * 23800021 * REFER TO THE PRECEDING MODULE PROLOG. * 24000021 * * 24200021 * EXITS, NORMAL - * 24400021 * REFER TO THE PRECEDING MODULE PROLOG. * 24600021 * OPEN TAPE SL INPUT/MOD HEADER LABEL 2 FUNCTION TO CONTINUE * 24800021 * NORMAL PROCESSING. * 25000021 * DISPLAY DSNAME WTO FUNCTION FOR A DATE PROTECT MESSAGE. * 25200021 * * 25400021 * EXITS, ERROR - * 25600021 * REFER TO THE PRECEDING MODULE PROLOG. * 25800021 * EXIT WITH ONE OF THE FOLLOWING INTERNAL CODES-- * 26000021 * 11 - 613-08 ABEND - I/O ERROR READING LABEL. (RECOVERABLE) * 26200021 * 12 - 613-0C ABEND - INVALID LABEL READ. (RECOVERABLE) * 26400021 * 13 - 713-04 ABEND - EXPIRATION DATE NOT PASSED. (RECOVERABLE) 26600021 * 14 - 813-04 ABEND - INCORRECT DATA SET NAME. (RECOVERABLE) * 26800021 * 20 - 913-08 ABEND - ASCII SECURITY BYTE NOT BLANK AND NOT * 27000003 * INDICATING SECURITY. * 27200021 * 155 - A13-14 ABEND - READ TM INSTEAD OF HDR1. * 27300021 * * 27400021 * TABLES/WORK AREAS - * 27600021 * THE OPEN, CLOSE, OR EOV WORK AREA AND THE WHERE-TO-GO (WTG) * 27800021 * TABLE ARE DESCRIBED BY THE DSECTS AT THE END OF THE LISTING. * 28000021 * * 28200021 * ATTRIBUTES - * 28400021 * REFER TO THE PRECEDING MODULE PROLOG. * 28600021 * * 28800021 * CHARACTER CODE DEPENDENCY - * 29000021 * REFER TO THE PRECEDING MODULE PROLOG. * 29200021 * * 29400021 * NOTES - * 29600021 * * 29800021 *********************************************************************** 30000021 EJECT 30200021 * 30600021 * ADDRESSABILITY 30800021 SPACE 1 31000021 BALR RBASE,0 ESTABLISH ADDRESSABILITY 31200021 USING *,RBASE 31400021 * 31600021 USING TIOENTRY,RTIOT 31800021 USING UCB,RUCB DEFINE BASE TO MAIN UCB 32000003 USING FORCORE,RCORE ADDRESS OF WORK AREA 32200021 USING IHADCB,RDCB 32400021 * 32600021 B OTA27800(RET) GO TO PROPER ENTRY 32800021 OTA27800 EQU * 33000021 B OTA30100 RETURN FROM MSG MODULE SA62401 33200003 B OTA27900 NORMAL ENTRY 33400021 AIF ('&LIB' NE 'LIB1').LIB25H1 SA69190 33401021 B OTA28510 RET=8 HDR1 DSN GDG TEST SA69190 33402021 .LIB25H1 ANOP SA69190 33403021 AIF ('&LIB' EQ 'LIB1').LIB15H1 SA69190 33404021 B OTA29200 RET=8 DSN BAD IN HDR1 SA69190 33450021 .LIB15H1 ANOP SA69190 33451021 B OTA29210 RET=12 FSEQ BEFORE TAPE SA69190 33460021 * OR TM AT OR BEFORE FILE SA69190 33470021 * 33500003 OTA27850 EQU * 33600021 EXCP DXIOB 33800021 OTA27900 EQU * 34000021 IECRES WAIT 34200021 TM DXECB,ECBNOERR I/O ERROR 34400021 BO OTA28200 NO, BRANCH 34600021 OABD011H EQU 011 I/O ERR READ TAPE LABEL SA62401 34800003 LA R0,OABD011H LOAD 613-08 ABEND CODE SA62401 35000003 * 35020021 TM IOBSTAT0,CSWUNITX TEST UNIT EXCEPTION TM SA70634 35040021 BZ OTA28100 BR IF NO, I/O ERROR SA70634 35060021 * 35080021 MVC DXCCW1,BSFCCW5H SET UP FOR BSF OVER TM SA70634 35100021 EXCP DXIOB START BSF SA70634 35120021 IECRES WAIT WAIT FOR I/O COMPLETE SA70634 35140021 * 35160021 OABD155 EQU 155 TM INSTEAD OF HDR1 READ SA70634 35170021 LA R0,OABD155 LOAD A13-14 ABEND CODE SA70634 35180021 * 35190021 OTA28100 EQU * 35200021 MVI UCBDMCT,K0 ZERO UCB DM COUNT SA62401 35300003 LA RET,K4 RECOVERY ENTRY 35400021 DMABCOND (0),ID5H0P,RETURN=ID5H4F 35600021 SPACE 1 35800021 * DETERMINE LABEL TYPE - VOL,HDR,EOV,EOF 36000021 SPACE 1 36200021 OTA28200 EQU * 36400021 TM UCBSTAB,UCBBSTR IS THIS AN ANSI LABEL 36600021 BZ OTA28300 NO, CONTINUE 36800021 XLATE DXLBL,K80 YES, TRANSLATE LABEL DATE 37000021 OTA28300 EQU * 37200021 CLC FL1LABI,AVOL IS THIS A VOLUME LABEL 37400021 BE OTA27850 BR IF VOL TO READ ANOTHER LBL 37600021 CLC FL1LABI,AHDR5H HDR LABEL 37800021 BE OTA28400 YES, GO CHECK TYPE 38000021 CLC FL1LABI,AEOV5H EOV LABEL 38200021 BE OTA28400 YES, GO CHECK TYPE 38400021 CLC FL1LABI,AEOF5H EOF LABEL 38600021 BE OTA28400 YES, BRANCH 38800021 CLC FL1LABI,AUVL5H IS IT ANSI USER VOL LBL A43864 38850021 BE OTA27850 YES, IGNORE, GO READ A43864 38900021 * ANOTHER LABEL 38950021 B OTA28450 GO LOAD ERROR CODE, GO TO PD 39200003 OTA28400 EQU * 39400021 CLI FL1NO,CHAR1 IS THIS A FILE LABEL 1 39600021 BE OTA28500 YES, BRANCH 39800021 OABD012H EQU 012 INVALID TAPE LABEL READ 39900003 OTA28450 LA R0,OABD012H LOAD 613-0C ABEND CODE 40000003 B OTA28100 GO TO PROBLEM DETERMINATION 40200021 * 40300021 *********************************************************************** 40400021 * 40500021 * PERFORM FILE LABEL 1 VERIFICATION 40600021 SPACE 1 40800021 * DETERMINE 17 LEAST SIGNIFICANT NON-BLANK 41000021 * CHARACTERS IN DATA SET NAME IN JFCB 41200021 SPACE 1 41400021 OTA28500 EQU * 41600021 AIF ('&LIB' NE 'LIB1').LIB25H2 SA69190 41610021 SR RET,RET CLEAR BR TBL ENTRY IND SA69190 41620021 * 41630021 OTA28510 EQU * FINISH HDR1 DSN TEST SA69190 41640021 .LIB25H2 ANOP SA69190 41650021 LA RD,JFCBDSNM POINT TO DSNAME 41800021 LA RB,JFCBDSNM+K27 ADDR OF 1ST POSS SIG CHAR 42000021 OTA28600 EQU * 42200021 CLI K16(RB),BLANK IS THE CHARACTER BLANK 42400021 BNE OTA28700 NO,GO TO SET UP STARTING ADDR 42600021 BCT RB,OTA28600 GO CHECK NEXT CHAR 42800021 OTA28700 EQU * 43000021 LA RC,K17(RB) POINT TO FIRST BLANK 43200021 CLR RB,RD IS LEFT PTR WITHIN FIELD 43400021 BNL OTA28800 YES, BRANCH 43600021 LR RB,RD SET BASE OF START 43800021 SPACE 1 44000021 * COMPARE DSNAME IN JFCB TO FILE IDENTIFICATION 44200021 SPACE 1 44400021 * COMPARE THE DATA SET NAME IN THE LABEL AGINST THE NAME IN THE 44600021 * JFCB. CONTINUE IF EQUAL. IF NOT EQUAL AND THE DATA SET IS A 44800021 * GENERATION DATA SET, IT MAY BE A DOS TAPE IN WHICH CASE THE 45000021 * DATA SET NAME MUST BE COMPARED SEPARATELY FROM THE GENERATION 45200021 * AND VERSION NUMBERS. 45400021 * 45600021 OTA28800 EQU * 45800021 CLC FL1ID,0(RB) COMPARE DSNAME 46000003 BE OTA29300 BRANCH, DSNAME EQUAL 46200021 TM JFCBIND1,JFCGDG GENERATION DATA SET 46400021 BNO OTA29200 NO, BRANCH 46600021 LA RF,K9 PREPARE TO BACK OVER GEN 46800021 SR RC,RF BACK UP END POINTER 47000021 CLC FL1GNO,K2(RC) COMPARE GEN NUMBER 47200021 BNE OTA29200 BRANCH IF NOT EQUAL 47400021 CLC FL1VNG,K7(RC) COMPARE VERSION NUMBER 47600021 BNE OTA29200 BRANCH IF NOT EQUAL 47800021 SR RB,RF BACK UP COMPARE START 48000021 CLR RB,RD IS LEFT POINTER WITHIN FIELD 48200021 BNL OTA29000 YES, BRANCH 48400021 SR RC,RD GET CHAR COUNT 48600021 LA RF,FL1ID(RC) PT DSN IN LBL + CHAR CNT S21940 48800021 CLI 0(RF),BLANK SHOULD BE PAST NAME 49200003 BNE OTA29200 BR, NAME LONGER THAN IN JFCB 49400021 BCTR RC,R0 SUB 1 FOR EX INSTRUCTION 49600021 EX RC,OTA28900 COMPARE DSNAMES 49800021 B OTA29100 GO TEST COMPARE RESULT 50000021 OTA28900 CLC FL1ID(*-*),JFCBDSNM CLC INSTR FOR EXEC 50200003 OTA29000 CLC FL1ID,0(RB) COMPARE DSNAMES 50400003 OTA29100 BE OTA29300 BR IF DSNAME CORRECT 50600003 * 50700003 OTA29200 EQU * DSNAME ERROR 50800003 BAL RC,OTA29280 GO BSR OR FSF TAPE SA69190 50801021 OABD014 EQU 014 DSNAME IH HDR1 NOT= JCL SA69190 50802021 LA R0,OABD014 LOAD 813-04 ABEND CODE SA69190 50803021 * 50804021 *********************************************************************** 50808021 * 50812021 * IF POSITIONING TO END OF FILE (RDBACK OR OUTPUT DISP=MOD), 50816021 * THEN IT IS POSSIBLE WE STARTED AT TOO GREAT A VOLUME SEQUENCE 50820021 * NUMBER AND CAN RECOVER BY BACKING UP VOLUMES. BACKING UP IS 50824021 * USED RATHER THAN READING ALL OF THE VOLUMES IN A FORWARD 50828021 * DIRECTION BECAUSE READING COULD TAKE 10 MINUTES PER VOLUME. 50832021 * BACKING UP IS FAST BUT ONLY WORKS FOR SINGLE FILE MULTI-VOLUME 50836021 * DATA SETS AND NOT MULTI-FILE MULTI-VOLUME. 50840021 * (WOULD NEED AN INDICATOR TO PREVENT LOOPING IF WE TRIED TO RECOVER 50842021 * MULIT-VOLUME MULTI-FILE TAPES AND WOULD HAVE TO PROCESS TAPES IN 50843021 * FORWARD ORDER FIRST WITH ONLY 1 VOLUME BACK UP ALLOWED.) 50844021 * NO RECOVERY IS TRIED IF THE USER SPECIFICALLY ASKED FOR THIS VOLUME. 50845021 * 50848021 OTA29210 EQU * FSEQ OR TM BEFORE FILE SA69190 50850021 LH RD,DXCCW3 GET RDBACK,MOD IND FROM SA69190 50852021 LTR RD,RD IFG0195B TAPE POSITIONG SA69190 50856021 BZ OTA28100 BR IF NOT RDBACK,MOD SA69190 50860021 * 50864021 CLC JFCBFLSQ,FW5H101 IS JFCB FILE SEQ NO = 1 SA69190 50868021 BNE OTA28100 BR IF NO, NO RECOVERY SA69190 50872021 * 50876021 CLC JFCBVLSQ,FW5H101 IS JFCB VOL SEQ NO. = 1 SA69190 50880021 BE OTA28100 BR IF YES TO ABEND SA69190 50884021 BH OTA29220 BR JFCB VOL SEQ NO GT 1 SA69190 50888021 * 50892021 CLI JFCBNVOL,K1 IS NUMBER OF VOL SER NO SA69190 50896021 BE OTA28100 1, BR IF YES TO ABEND SA69190 50900021 * 50904021 MVC JFCBVLSQ+K1(K1),JFCBNVOL SET TO CURRENT VOL NO. SA69190 50916021 OI JFCBMASK+K4,X01 INDICATE VOLSEQ CHANGED SA69190 50920021 * 50924021 OTA29220 EQU * SA69190 50928021 TM JFCBMASK+K4,X01 IS IT SPECIFIC REQUEST SA69190 50932021 BZ OTA28100 BR IF YES TO ABEND SA69190 50936021 * 50940021 LH RD,JFCBVLSQ DECREMENT CURRENT JFCB SA69190 50944021 BCTR RD,0 VOL SEQUECE NUMBER BY 1 SA69190 50948021 STH RD,JFCBVLSQ TO BACK UP 1 VOLUME SA69190 50952021 * XCTL TO WRITE MSG IEC139I, 50954021 * ROTATE UCB ADDRS, SA69190 50956021 * ZERO UCB DM COUNT, SA69190 50958021 IECRES XCTL,ID5H4R,4 AND XCTL TO IFG0193A SA69190 50960021 * 50980021 *********************************************************************** 50988021 * 51410021 * BACKSPACE TO BEGINNING OF HDR1 SO THAT IF A SUCCEEDING 51430021 * STEP ATTEMPTS TO REFERENCE THIS TAPE IT WILL NOT GET 51440003 * A 613-0C ABEND FOR READING AN INVALID TAPE LABEL. 51450003 * IF EOV1/EOF1, FSF AND INCREMENT UCB FILE SEQUENCE COUNTERS. 51455021 * 51460021 OTA29280 EQU * ENTRY VIA BAL RC,--- SA70639 51470021 MVC DXCCW1,BSRCCW5H BSR CCW SA62401 51480003 CLI FL1LABI,C'E' IS THIS EOV1/EOF1 LABEL SA70639 51481021 BNE OTA29290 BR IF NO, HDR1 SA70639 51482021 MVI DXCCW1,CCWFSF CHANGE TO FSF CCW SA70639 51483021 L RF,UCBFSCT+UCBFSEQ-UCBFSEQ INCREMENT UCB FILE SA70639 51484021 A RF,FW5H101 COUNT AND SEQUENCE SA70639 51485021 ST RF,UCBFSCT+UCBFSEQ-UCBFSEQ BY 1 EACH SA70639 51486021 OTA29290 EQU * SA70639 51489521 EXCP DXIOB BSR A39154 51490021 IECRES WAIT A39154 51500021 BR RC RETURN SA70639 51600021 * 51800021 *********************************************************************** 52000021 * 52100021 * PLACE BLOCK COUNT INTO THE DCB 52200021 SPACE 52400021 OTA29300 EQU * 52600021 AIF ('&LIB' NE 'LIB1').LIB25H3 SA69190 52610021 LTR RET,RET SPECIAL ENTRY FROM 195B SA69190 52620021 BZ OTA29350 BR IF NO SA69190 52630021 IECRES XCTL,ID5H5B,4 RETURN TO IFG0195B SA69190 52640021 * 52650021 OTA29350 EQU * SA69190 52660021 .LIB25H3 ANOP SA69190 52670021 CLC FL1LABI,AHDR5H IS THIS A HEADER LABEL 52800021 BE OTA29500 YES,DO NOT MERGE BLOCK COUNT 53000021 TM DCBMACRF,DCBMEXCP IS THE PROBLEM PROG USING EXCP 53200021 BZ OTA29400 BR IF NO TO MERGE BLOCK COUNT 53400003 TM DCBMACRF+K1,DCBMDEV DOES TAPE DEPEND PORTION EXIST 53600021 BZ OTA29500 NO,DO NOT MERGE BLOCK COUNT 53800021 OTA29400 EQU * 54000021 PACK DXCCW2,FL1BLKCT YES,PACK BLOCK COUNT 54200021 CVB RB,DXCCW2 CONVERT IT TO BINARY 54400021 ST RB,DCBBLKCT STORE IT INTO THE DCB 54600021 * 54700021 *********************************************************************** 54800021 * 54900021 * IF OPENING FOR ANY TYPE OUTPUT,RETENTION MUST BE CHECKED 55000021 SPACE 55200021 OTA29500 EQU * 55400021 TM PLISTOPT(RPARC),PLISTIO THIS DCB INOUT,OUTIN,OR OUTPUT 55600003 BNO OTA30200 BR IF NO 55800003 PACK DXCCW2+K5(K3),FL1EXPDT+K1(K5) PACK EXPIRATION DATE FROM 56000021 CLC DXCCW2+K5(K3),NODATE IS DATE IN LBL BLANK 56200021 BE OTA30200 YES,BRANCH 56400021 PACK DXCCW12(K8),FL1EXPDT+K1(K2) GET YEAR FROM LABEL 56600021 CVB RB,DXCCW12 CONVERT YEAR TO BINARY 56800021 STC RB,JFCBXPDT STORE YEAR IN JFCB 57000021 PACK DXCCW12(K8),FL1EXPDT+K3(K3) GET DAY FROM LABEL 57200021 CVB RB,DXCCW12 CONVERT DAY TO BINARY 57400021 STH RB,JFCBXPDT+K1 STORE DAY IN JFCB 57600021 L RB,CVTPTR GET ADDR. OF CVT 57800021 CLC DXCCW2+K5(K3),CVTDATE+K1-CVT(RB) IS RETENTION EXPIRED 58000021 BNH OTA30200 YES, GO CHECK SECURITY 58200021 * *** 58400021 * *** 58600021 * *** NOTIFY OPERATOR THAT EXPIRATION HAS NOT EXPIRED FOR 58800021 * *** THIS INOUT DATA SET 59000021 * *** ASK FOR HIS DECISION TO ACCEPT OR REJECT 59200021 * *** 59400021 * *** IF HE ACCEPTS, USE THE TAPE 59600021 * *** IF HE REJECTS, TERMINATE PROCESSING 59800021 * *** 60000021 * *** 60200021 MVC DXCCW5(K17),FL1ID SAVE DSNAME FOR WTO 60600021 MVC DXCCW7+K1(K1),FL1FSEC SAVE SECURITY INDICATOR 60800021 MVC DXCCW7+K2(K4),FL1LABI SAVE HDR1/EOV1/EOF1 SA70639 60900021 OTA29700 EQU * 61000021 LA RB,REPLY 61200021 ST RB,REPLYLTH STORE REPLY ADDRESS 61400021 MVI REPLYLTH,K1 STORE REPLY LENGTH 61600021 LA RB,DXECB 61800021 ST RB,REPLYECB STORE ECB ADDRESS 62000021 MVI DXECB,K0 CLEAR ECB BYTE 62200021 MVC MCSFLAGS(K16),FLAG190F MOVE IN MESSAGE 62400021 MVC MSGUN,UCBNAME PUT UNIT ADDR IN MSG 65200003 MVC MSGVOLSR,UCBVOLI PUT VOL SER IN MSG 65400003 LA R1,MSGVOLSR+K5 POINT TO LAST CHAR OF SER 65600003 BAL RET,OTA30000 GO REMOVE BLANKS 65800003 MVI K1(R1),COMMA DELIMIT VOL SER WITH A COMMA 66000003 MVI K2(R1),BLANK BLANK OUT 66200021 MVC K3(K50,R1),K2(R1) REMAINING BUFFER 66400021 * 66450003 L RF,CVTPTR GET CVT ADDR 66500003 L RF,CVTTCBP-CVT(,RF) GET ADDR TCB POINTERS 66550003 L RF,K4(,RF) GET CURRENT TCB ADDR 66600003 L RF,TCBTIO-TCB(,RF) GET TIOT START ADDR 66650003 * 67000003 MVC K2(K8,R1),TIOCNJOB-TIOT(RF) PUT JOB NAME IN MSG 67050003 LA R1,K9(R1) ADVANCE TO END OF JOB NAME 67200003 BAL RET,OTA30000 GO REMOVE BLANKS 67400003 MVI K1(R1),COMMA DELIMIT WITH A COMMA 67600003 * 67700003 MVC K2(K8,R1),TIOCSTEP-TIOT(RF) PUT STEP NAME IN MSG 67800003 LA R1,K9(R1) ADVANCE TO END OF STEP NAME 68000003 BAL RET,OTA30000 GO REMOVE BLANKS 68200003 * 68400003 LR RF,R1 DETERMINE LENGTH OF 68600003 LA R0,MSGLSTSZ-K1 PRESENT 68800003 SR RF,R0 MESSAGE 69000003 STH RF,MSGLSTSZ SAVE IN MSG LENGTH FIELD 69200003 * 69400003 MVI REPLY,X'C0' IND WTOR, DSNAME FROM FL1ID 69600003 L RB,MSGDESC PASS MCS CODES 69800003 MVC DXRETMOD,ID5H5H RETURN IDTTR FOR WTOR SA62401 70000003 * 70200003 IECRES XCTL,ID5H0R,0 XCTL TO DSNAME MODULE TO WTOR 70400003 * 70600003 OTA30000 EQU * 70800003 CLI 0(R1),BLANK FIND THE LAST NON-BLANK CHAR 71000003 BCR 7,RET BR WHEN FOUND 71200003 BCT R1,OTA30000 DECR ADDR AND BR TO LOOK AGAIN 71400003 * 71500003 OTA30100 EQU * RETURN FROM DSNAME WTOR SA62401 71600003 IECRES WAIT WAIT FOR OPERATOR REPLY SA62401 71700003 CLI REPLY,CHARU WAS REPLY U - USE VOL SA62401 71800003 BE OTA30150 BR IF YES SA62401 71900003 CLI REPLY,CHARM WAS REPLY M - MOUNT VOL SA62401 72000003 BNE OTA29700 BR IF NO TO REISSUE MSG SA62401 72100003 * 72200003 MVC FL1LABI(K4),DXCCW7+K2 RESTORE HDR1/EOV1/EOF1 SA70639 72210021 BAL RC,OTA29280 GO BSR OR FSF TAPE SA70639 72220021 OABD013 EQU 013 TAPE DS NOT EXPIRED SA62401 72300003 LA R0,OABD013 LOAD 713-04 ABEND CODE SA70639 72400021 B OTA28100 BR TO GO TO PROB DET SA70639 72500021 * 72600003 OTA30150 EQU * SA62401 72700003 MVC FL1FSEC,DXCCW7+K1 RESTORE HDR1 SECURITY SA62401 72800003 * 72900003 OTA30200 EQU * SA62401 73000003 IECRES XCTL,ID5H5K,0 XCTL TO FINISH HDR1 SA62401 73100003 * 73150021 *********************************************************************** 73200021 EJECT 73250021 *********************************************************************** 73300003 * 73400003 * CONSTANTS 73500003 * 73600003 MSGDESC DC 0F'0',X'4000' DESC=2 IMMEDIATE ACTION REQ 73800003 DC X'A000' ROUTCDE=(1, MASTER CONSOLE ACTN 74000003 * 3) TAPE POOL 74200003 FW5H101 DC 0F'0',H'1',H'1' TO INCR UCB COUNT + SEQ SA70639 74300021 BSRCCW5H DC X'2700000020000001' BSR CCW SA62401 74400003 BSFCCW5H DC X'2F00000020000001' BSF CCW SA70634 74500021 AVOL DC C'VOL' VOLUME 74600021 AHDR5H DC C'HDR' HEADER 74800021 AEOV5H DC C'EOV' END OF VOLUME 75000021 AEOF5H DC C'EOF' END OF FILE 75200021 AUVL5H DC C'UVL' ANSI USER VOL LBL ID A43864 75300021 FLAG190F DC X'8000' MCSFLAG FOR 190F 75800021 DC C'IEC107D E UUU,' EXPIRATION MSG 76000003 NODATE DC X'00000F' NO DATE 76200021 * 76600021 AIF ('&LIB' NE 'LIB1').LIB25H6 SA69190 76700021 XCTLTABL ID=(ID5H0P,0P,ID5H0R,0R,ID5H4F,4F,ID5H4R,4R, SA69190X76800021 ID5H5B,5B, SA69190X76850021 ID5H5H,5H,ID5H5K,5K) SA69190 76900021 .LIB25H6 ANOP SA69190 76920021 AIF ('&LIB' EQ 'LIB1').LIB15H6 SA69190 76930021 XCTLTABL ID=(ID5H0P,0P,ID5H0R,0R,ID5H4F,4F,ID5H4R,4R, SA69190X76940021 ID5H5H,5H,ID5H5K,5K) SA69190 76950021 .LIB15H6 ANOP SA69190 76970021 EJECT 76980021 IECEQU , DEFINE EQUATES S21940 76990021 IECDSECS CVT,TCB,TIOT,DCB,UCB,MAIN,EXPAND=YES A43864 77000021 END 77200021 ./ ADD SSI=00010255,NAME=IFG0195J,SOURCE=0 TITLE 'IFG0195J/OPEN - DA - UL, SECURITY, PARALLEL MOUNT DECISX00300021 ION' 00600021 COPY LCGASMSW 00650000 IFG0195J CSECT 01500021 *********************************************************************** 01800021 * * 02100021 * VS1 RELEASE 3.0 DELETION/CHANGES * 02110003 *0000408000 XM4403 02120003 * VS1 RELEASE 2.6 DELETION/CHANGES * 02150002 *0000541000 XA01658 02200002 * * 02250002 * * 02400021 * RELEASE 25 DELETIONS/CHANGES * 02700021 * RELEASE 24 DELETIONS/CHANGES * 03000021 * RELEASE 23 DELETIONS/CHANGES * 03300021 * RELEASE 22 DELETIONS/CHANGES * 03600021 * RELEASE 21 DELETIONS/CHANGES * 03900021 *0000681000,723000-750000 A42110 04000021 *0000540000 A42915 04100021 * * 04200021 * STATUS CHANGE LEVEL 000 * 04500021 * * 04800021 * FUNCTION - * 05100021 * THIS MODULE CONTAINS THE FUNCTION(S) OR PART(S) OF FUNCTION(S)-- * 05400021 * OPEN DA READ DSCB FUNCTION * 05700021 * REFER TO THE FOLLOWING 'FUNCTION PROLOG(S)' FOR DETAILS. * 06000021 * * 06300021 * ENTRY POINTS - * 06600021 * IFG0195J - VIA XCTL FROM IFG0195A. * 06900021 * - VIA RETURN XCTL FROM IFG0195F BEFORE GOING * 07200021 * TO IFG0195O FOR MULTIVOLUME BDAM WITH SUL. * 07500021 * * 07800021 * INPUT - * 08100021 * REFER TO THE FOLLOWING 'FUNCTION PROLOG(S)'. * 08400021 * * 08700021 * OUTPUT - * 09000021 * REFER TO THE FOLLOWING 'FUNCTION PROLOG(S)'. * 09300021 * * 09600021 * EXTERNAL REFERENCES - * 09900021 * IFG019RA - OPEN/CLOSE/EOV RESIDENT ROUTINE FOR XCTL AND * 10200021 * WAIT. * 10500021 * REFER TO THE FOLLOWING 'FUNCTION PROLOG(S)'. * 10800021 * * 11100021 * EXITS, NORMAL - * 11400021 * REFER TO THE FOLLOWING 'FUNCTION PROLOG(S)'. * 11700021 * * 12000021 * EXITS, ERROR - * 12300021 * EXIT IS TO THE PROBLEM DETERMINATION MODULE IFG0190P, IF AN * 12600021 * ABEND SITUATION OCCURS IN THIS MODULE. REFER TO THE FOLLOWING * 12900021 * 'FUNCTION PROLOG(S)'. * 13200021 * * 13500021 * TABLES/WORK AREAS - * 13800021 * REFER TO THE FOLLOWING 'FUNCTION PROLOG(S)'. * 14100021 * * 14400021 * ATTRIBUTES - * 14700021 * REENTRANT, REFRESHABLE, READ-ONLY, ENABLED, PRIVILEGED * 15000021 * * 15300021 * CHARACTER CODE DEPENDENCY - * 15600021 * CLASS ONE CHARACTER CODE DEPENDENCY - THE EBCDIC CHARACTER CODE * 15900021 * WAS USED FOR ASSEMBLY. THE MODULE MUST BE REASSEMBLED IF A * 16200021 * DIFFERENT CHARACTER SET IS USED FOR EXECUTION. * 16500021 * * 16800021 * NOTES - * 17100021 * THE 'FUNCTION PROLOG' FOR THIS MODULE IS IN MODULE IFG0194E. * 17400021 * * 17700021 *********************************************************************** 18000021 EJECT 18300021 IECDSECS TIOT,UCB,DCB,MAIN DEFINE DESIRED DSECTS TO BE X18600021 EXPANDED AT THE END 18900021 * 19200021 IECEQU , DEFINE EQUATES 19500021 * 19800021 USING IHADCB,RDCB DEFINE BASE TO USER'S DCB 20100021 USING FORCORE,RCORE DEFINE BASE TO MAIN WORK AREA 20400021 USING TIOELNGH,RTIOT DEFINE BASE TO TIOT DD ENTRY 20700021 USING UCBOB,RUCB DEFINE BASE TO MAIN UCB 21000021 * 21300021 BALR RBASE,0 ESTABLISH BASE REGISTER 21600021 USING *,RBASE DEFINE BASE REGISTER 21900021 * 22200021 B ODA20050(RET) BR TO INDICATED FUNCTION 22500021 * 22800021 ODA20050 B ODA20100 RET=0 INITIAL ENTRY 23100021 B ODA23550 RET=4 RETURN ENTRY FROM SUL 23400021 * 23700021 *********************************************************************** 24000021 * 24300021 * DETERMINE IF INPUT USER LABELS SHOULD BE PROCESSED 24600021 * 24900021 * (OUTPUT USER LABELS WILL BE WRITTEN AFTER THE JFCB TO DCB MERGE 25200021 * AND THE DCB USER EXIT.) 25500021 * 25800021 ODA20100 EQU * 26100021 NI JFCBMASK+K5,X'FF'-X'04' CLEAR OPEN UL INDICATOR 26400021 * 26700021 TM JFCBTSDM,JFCSDS IS IT SYSIN OR SYSOUT 27000021 BO ODA21400 YES, DON'T PROCESS UL'S 27300021 * 27600021 TM JFCBLTYP,JFCSUL WAS SUL SPECIFIED 27900021 BNO ODA21400 BR IF NO 28200021 * 28500021 TM DCBMACRF,DCBMEXCP IS THIS AN EXCP DCB 28800021 BZ ODA20200 NO, BR TO CK FOR USR LBLS 29100021 TM DCBMACRF,DCBMFOUN YES, DOES FBE EXIST 29400021 BZ ODA21400 BR IF NO, IGNORE USER LABELS 29700021 * 30000021 ODA20200 EQU * 30300021 L RC,DCBEXLST PICK UP EXIT LIST ADDRESS 30600021 CLC DCBEXLST+K1(K3),ODA2500K IS THE EXIT LIST 0 OR 1 30900021 BNH ODA21400 BR IF YES 31200021 * 31500021 TM DCBDSORG,DCBORGPS IS DSORG PS 31800021 BZ ODA21000 BR IF NO TO CHECK FOR DIRECT 32100021 * NOTE-PS INCLUDES CREATE-FOR- 32400021 * BDAM MODE 32700021 * 33000021 TM 0(RPARC),X'07' TEST FOR OUTPUT OR OUTIN 33300021 BO ODA20600 BR IF OUTPUT OR OUTIN 33600021 * 33900021 * 34200021 ODA20400 EQU * 34500021 CLI 0(RC),XLIUHL CHECK FOR INPUT UHL EXIT 34800021 BE ODA21200 BR IF YES 35100021 CLI 0(RC),XLIUHL+LASTNTRY CHECK IF ALSO LAST ENTRY 35400021 BE ODA21200 BR IF YES 35700021 TM 0(RC),LASTNTRY IS IT LAST ENTRY 36000021 BO ODA21400 BR IF YES 36300021 LA RC,K4(RC) INCREMENT POINTER 36600021 B ODA20400 BR TO CHECK NEXT ENTRY 36900021 * 37200021 * 37500021 ODA20600 EQU * 37800021 TM JFCBIND2,JFCOLD IS DISP=MOD (NOT NEW, OLD) 38100021 BO ODA21400 BR IF NOT MOD 38400021 * 38700021 ODA20800 EQU * 39000021 CLI 0(RC),XLIUTL CHECK FOR INPUT UTL EXIT 39300021 BE ODA21200 BR IF YES 39600021 CLI 0(RC),XLIUTL+LASTNTRY CHECK IF ALSO LAST 39900021 BE ODA21200 BR IF YES 40200021 TM 0(RC),LASTNTRY IS THIS THE LAST ENTRY 40500021 BO ODA20900 BR IF YES XM4403 40800003 LA RC,K4(RC) INCREMENT POINTER 41100021 B ODA20800 BR TO CHECK NEXT ENTRY 41400021 ODA20900 EQU * XM4403 41450003 L RC,DCBEXLST PICK UP EXIT LIST ADDR XM4403 41460003 ODA20950 EQU * XM4403 41470003 CLI 0(RC),XLDEFSL DEFER INPUT UTL EXIT XM4403 41500003 BE ODA21200 BR IF YES XM4403 41550003 CLI 0(RC),XLDEFSL+LASTNTRY CHECK IF ALSO LAST XM4403 41600003 BE ODA21200 BR IF YES XM4403 41650003 TM 0(RC),LASTNTRY IS THIS THE LAST ENTRY XM4403 41660003 BO ODA21400 BR IF YES XM4403 41670003 LA RC,K4(RC) INCREMENT POINTER XM4403 41680003 B ODA20950 BR TO CHECK NEXT ENTRY XM4403 41690003 * 41700021 * 42000021 ODA21000 EQU * 42300021 TM DCBDSORG,DCBORGDA IS DSORG DIRECT 42600021 BO ODA20400 BR IF YES 42900021 B ODA21400 BR, USER LABELS FOR PS/DA ONLY 43200021 * NOTE-IF DSORG IS DIRECT, THE 43500021 * DATA SET MUST BE OLD. USER 43800021 * LABELS MAY BE READ FOR 44100021 * INPUT OR UPDATED FOR 44400021 * OUTPUT/UPDAT. BOTH FACI- 44700021 * LITIES USE THE INPUT USR 45000021 * LBL EXIT. 45300021 * 45600021 ODA21200 EQU * 45900021 L RC,0(,RC) LOAD EXLST DATA INTO R12 46200021 LA RF,0(RC) ZERO HI-ORDER BYTE 46500021 LTR RF,RF IS EXIT LIST ADDRESS ZERO 46800021 BZ ODA21400 BR IF YES 47100021 * 47400021 OI JFCBMASK+K5,X'04' SET OPEN UL INDICATOR 47700021 MVC DXDEBSYS(K1),PLISTOPT(RPARC) OPEN ATTRIBUTES IN WRK DEB 48000021 * 48300021 * THE JFCBMASK BIT WILL INDICATE TO THIS MODULE THAT THIS DCB IS 48600021 * GOING TO THE INPUT USER LABEL MODULE. 48900021 * NOTE THAT REGISTER RC MUST BE PASSED TO THE USER LABEL MODULE. 49200021 * 49500021 *********************************************************************** 49800021 * 50100021 * SELECT NEXT MODULE TO GO TO. IF GOING TO THE INPUT USER LABEL 50400021 * MODULE, THE SELECTED MODULE WILL BE XCTLED TO BY THE UL MODULE. 50700021 * 51000021 ODA21400 EQU * 51300021 NI JFCBIND2,CLRSCTY CLEAR SECURITY BIT IN JFCB 51600021 * 51900021 TM DSCDSIND,DS1SECTY TEST FOR SECURITY 52200021 BNO ODA22000 BR IF NO 52500021 TM DSCDSIND,DS1WRSEC IS SECURITY FOR WRITE ONLY 52800021 BZ ODA21600 BR IF NO 53100021 OI JFCBIND2,JFCBRWPW IND SECURITY IS FOR WRITE ONLY 53400021 TM PLISTOPT(RPARC),X'0E' IS THIS INPUT OR RDBACK 53700021 BNZ ODA21600 BR IF NO A42915 53750021 * CHECK FOR ISAM OUTPUT DCB, WHICH CAN BE HAD BY OPENING FOR INPUT 53800021 * WITH MACRF = P OR W 53850021 TM DCBMACRF,DCBMEXCP IS THIS AN EXCP DCB A42915 53900021 BO ODA22000 BR IF YES, NOT ISAM A42915 53950021 TM DCBDSORG,DCBORGIS IS THIS AN ISAM DCB A42915 54000021 BZ ODA22000 BR IF NO A42915 54050021 TM DCBMACRF+K1,ALLBITS-DCBMSETL-DCBMSETK-DCBMSETI XA01658 54100002 * ANY OUTPUT MACRF BIT ON XA01658 54110002 BZ ODA22000 BR IF NO A42915 54150021 * 54200021 ODA21600 EQU * 54300021 TM JFCBIND2,JFCNEW TEST FOR NEW DATA SET 54600021 BO ODA21800 BR IF YES 54900021 OI JFCBMASK+K4,JFCMPSWD IND PASSWORD IS REQUIRED 55200021 ODA21800 EQU * 55500021 OI JFCBIND2,JFCBSCTY 55800021 * 56100021 ODA22000 EQU * 56400021 * 56700021 *********************************************************************** 57000021 * 57300021 * CHECK IF MORE VOLUMES MUST BE SIMULTANEOUSLY MOUNTED FOR THIS 57600021 * DATA SET. 57900021 * 58200021 TM DCBMACRF,DCBMEXCP TEST FOR EXCP 58500021 BO ODA22600 BR IF YES 58800021 TM DCBDSORG,DCBORGIS TEST FOR ISAM 59100021 BNZ ODA22400 BR IF YES 59400021 TM DCBDSORG+K1,DCBORGTQ TEST FOR TCAM TQ 59700021 BO ODA22200 BR IF YES 60000021 TM DCBDSORG,DCBORGDA+DCBORGCQ TEST FOR BDAM OR QTAM 60300021 BZ ODA22800 BR IF NO 60600021 * 60900021 ODA22200 EQU * CHECK FOR MULTIPLE VOL SER NOS. 61200021 CLI JFCBVOLS+K6,C' ' TEST IF BLANK 2ND VOL SER NO. 61500021 BE ODA23200 BR IF YES, NO VOL SER NO. 61800021 CLI JFCBVOLS+K6,K0 TEST IF ZERO 2ND VOL SER NO. 62100021 BE ODA23200 BR IF YES, NO VOL SER NO. 62400021 * 62700021 ODA22400 EQU * 63000021 OI JFCBMASK+K4,JFCMISAM SET PARALLEL MOUNT SWITCH 63300021 B ODA23200 BR TO XCTL TO NEXT MODULE 63600021 * 63900021 *********************************************************************** 64200021 * 64500021 * CHECK IF CONCATENATED BPAM DATA SET. 64800021 * 65100021 ODA22600 EQU * 65400021 TM DCBMACRF,DCBMFOUN TEST FOR FOUNDATION EXTENSION 65700021 BO ODA22800 BR IF YES 66000021 TM DSCFILTY,DCBORGPO IS PO IN DSCB 66300021 BO ODA23000 BR IF YES 66600021 B ODA23200 BR, EXCP WITH NO DSORG 66900021 * 67200021 ODA22800 EQU * 67500021 TM DCBDSORG,DCBORGPO TEST FOR PO DCB 67800021 BZ ODA23100 BR IF NO, MUST BE PS A42110 68100021 * 68400021 ODA23000 EQU * 68700021 SR R1,R1 GET LENGTH OF 69000021 IC R1,TIOELNGH CURRENT TIOT DD ENTRY 69300021 AR R1,RTIOT CALC ADDR OF NEXT ENTRY 69600021 * 69900021 CLI TIOELNGH-TIOENTRY(R1),K0 IS THERE ANOTHER ENTRY 70200021 BE ODA23200 BR IF NO OTHER ENTRY PRESENT 70500021 * 70800021 CLI TIOEDDNM-TIOENTRY(R1),C' ' CHECK FOR CONCATENATION 71100021 BNE ODA23200 BR IF NO 71400021 * 71700021 OI JFCBMASK+K4,JFCMBPAM SET PO CONCATENATION SW ON 72000021 * 72060021 IECRES XCTL,ODA2910X,0 XCTL TO BPAM CONCAT MOD A42110 72120021 * 72180021 *********************************************************************** 72240021 * 72300021 * FOR PS DATA SETS, CHECK ANY FOLLOWING CONCATENATIONS FOR NON-RPS 72360021 * IN ORDER TO SUPPRESS THE USE OF RPS CHANNEL PROGRAM FOR THIS DATA 72420021 * SET, THUS ALLOWING EOV TO CONCATENATE THE DATA SETS WITH LIKE 72480021 * ATTRIBUTES. (THIS NON-RPS INDICATOR BIT HAS NO MEANING FOR EXCP.) 72540021 * 72600021 ODA23100 EQU * A42110 72660021 LR R1,RTIOT TIOT DD ADDR TO WORK REG A42110 72720021 SR RF,RF SET UP FOR IC INSTR A42110 72780021 * 72840021 ODA23120 EQU * A42110 72900021 IC RF,TIOELNGH-TIOENTRY(,R1) ADVANCE WORK REG A42110 72960021 AR R1,RF TO NEXT TIOT DD ENTRY A42110 73020021 * 73080021 CLI TIOELNGH-TIOENTRY(R1),K0 IS THERE ANOTHER ENTRY A42110 73140021 BE ODA23160 BR IF NO A42110 73200021 * 73260021 CLI TIOEDDNM-TIOENTRY(R1),C' ' CHECK FOR CONCAT DD A42110 73320021 BNE ODA23160 BR IF NO A42110 73380021 * 73440021 L RUCB,TIOEFSRT-K1-TIOENTRY(,R1) GET NEXT UCB ADDR A42110 73500021 LA RUCB,0(RUCB) CLEAR HIGH ORDER BYTE A42110 73560021 LTR RUCB,RUCB IS THIS NULL DATA SET A42110 73620021 BZ ODA23120 BR IF YES A42110 73680021 * 73740021 CLI UCBID,UCBMAIN IS DEVICE 2321 A42110 73800021 BNE ODA23140 BR IF YES TO SET NO-RPS A42110 73860021 * 73920021 TM UCBTBYT3,UCB3DACC IS DEVICE DIRECT ACCESS A42110 73980021 BZ ODA23160 BR IF NO, MUST BE UNLIKE A42110 74040021 * 74100021 TM UCBTBYT2,UCBRPS DOES DEVICE HAVE RPS A42110 74160021 BO ODA23120 BR IF YES A42110 74220021 * 74280021 ODA23140 EQU * A42110 74340021 OI JFCBMASK+K6,JFCMNRPS TURN ON NO RPS BIT A42110 74400021 * 74460021 ODA23160 EQU * A42110 74520021 * 74580021 *********************************************************************** 74640021 * 74700021 * DETERMINE NEXT MODULE TO XCTL TO 74760021 * 74820021 ODA23200 EQU * A42110 74880021 LA RF,ODA2920X LOAD ADDR OF IFG0195O 75300021 TM JFCBMASK+K4,JFCMISAM TEST FOR PARALLEL MOUNT 75600021 BO ODA23400 BR IF YES 75900021 * 76200021 LA RF,ODA2940X LOAD ADDR OF IFG0196J 76500021 * 76800021 TM JFCBMASK+K4,JFCMPSWD TEST FOR SECURITY 77100021 BZ ODA23400 BR IF NO 77400021 * 77700021 * SR RET,RET IND INITIAL ENTRY TO SECURITY 78000021 LA RF,ODA2930X LOAD ADDR OF IFG0195T 78300021 * 78600021 ODA23400 EQU * 78900021 TM JFCBMASK+K5,X'04' GOING TO INPUT USER LABELS 79200021 BZ ODA23600 BR IF NO 79500021 * 79800021 SR RET,RET SET RETURN CODE TO 0 80100021 TM JFCBMASK+K4,JFCMISAM TEST FOR PARALLEL MOUNT LATER 80400021 BZ ODA23500 BR IF NO 80700021 * 81000021 LA RF,ODA2905X LOAD ADDR OF THIS MODULE FOR 81300021 LA RET,K4 RETURN, SET RETURN CODE TO 4 81600021 * 81900021 ODA23500 EQU * 82200021 MVC DXRETMOD,0(RF) SAVE IDTTR OF MODULE TO GO 82500021 * TO AFTER UL MODULE 82800021 NI JFCBMASK+K5,X'FF'-X'04' TURN OFF OPEN UL INDICATOR 83100021 * 83400021 IECRES XCTL,ODA2950X,(RET) XCTL TO INPUT USER LABEL MOD 83700021 * 84000021 *********************************************************************** 84300021 * 84600021 * RESTORE FIRST TWO CCW'S NEEDED BY ISAM/BDAM PARALLEL MOUNT MODULE, 84900021 * WHICH WERE DESTROYED BY THE SUL MODULE. 85200021 * 85500021 * SEARCH ID EQ 85800021 * TIC *-8 86100021 * 86400021 ODA23550 EQU * 86700021 XC DXCCW1(K16),DXCCW1 CLEAR CCW AREA 87000021 LA RF,DXDAADDR+K3 SEARCH ADDRESS 87300021 ST RF,DXCCW1 87600021 LA RF,DXCCW1 TIC *-8 ADDRESS 87900021 ST RF,DXCCW2 88200021 OC DXCCW1(K9),ODA2400K OR IN CMND, FLAGS, LENGTH 88500021 * 88800021 LA RF,ODA2920X LOAD ADDR OF IFG01950 89100021 * 89400021 *********************************************************************** 89700021 * 90000021 ODA23600 EQU * 90300021 IECRES XCTL,(RF),0 XCTL TO NEXT MODULE 90600021 * 90900021 *********************************************************************** 91200021 * 91500021 * CONSTANTS 91800021 * 92100021 * CCW'S NEEDED BY ISAM/BDAM PARALLEL MOUNT MODULE, WHICH ARE 92400021 * ASSUMED TO BE ALREADY SET UPON ENTRY TO THE MODULE. 92700021 ODA2400K DC X'3100000040000005' SEARCH ID EQ 93000021 DC X'08' TIC *-8 93300021 * 93600021 ODA2500K D