BOP TITLE 'DMSBOP (CMS) VM/370 - RELEASE 6' 00001000 SPACE 2 00002000 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00003000 *. * 00004000 * MODULE NAME: * 00005000 * DMSBOP * 00006000 * * 00007000 * FUNCTION: * 00008000 * DMSBOP OPENS CMS/DOS FILES ASSOCIATED WITH THE * 00009000 * FOLLOWING DTFS - DTFCN, DTFCD, DTFPR, DTFMT, DTFDI, * 00010000 * DTFCP AND DTFSD. DTF TABLE INITIALIZATION IS PER- * 00011000 * FORMED ACCORDING TO BOTH DTF TYPE AND DEVICE TYPE. * 00012000 * ONCE THE TABLE INITIALIZATION IS COMPLETE, NORMAL I/O * 00013000 * OPERATIONS CAN BE PERFORMED AGAINST THE FILE. * 00014000 * * 00015000 * ATTRIBUTES: * 00016000 * DISCONTIGUOUS SHARED SEGMENT * 00017000 * REENTRANT * 00018000 * * 00019000 * ENTRY POINTS: * 00020000 * DMSBOP * 00021000 * * 00022000 * ENTRY CONDITIONS: * 00023000 * DMSBOP IS INVOKED BY MEANS OF THE OPEN MACRO EXPANSION * 00024000 * OR IN RESPONSE TO AN SVC 2 BEING ISSUED BY A PROBLEM * 00025000 * PROGRAM. * 00026000 * * 00027000 * EXAMPLE: * 00028000 * * 00029000 * OPEN DTF1,DTF2,ACB * 00030000 * + CNOP 0,4 * 00031000 * + DC 0F'0' * 00032000 * + LA 1,=C'$$BOPEN' * 00033000 * +IJJO0001 BAL 0,*+4+4*(4-1) * 00034000 * + DC A(DTF1) * 00035000 * + DC A(DTF2) * 00036000 * + DC A(ACB) * 00037000 * + SVC 2 * 00038000 * 00039000 * NOTE: THE ABOVE LIST OF ADCONS WILL CONTAIN 00040000 * EITHER DTFS OR ACBS BUT NOT BOTH 00041000 * 00042000 * * 00043000 * THE OPEN ROUTINE IS INVOKED BY MEANS OF AN SVC 2. * 00044000 * SVC 2 IS A FETCH FOR THE ROUTINE POINTED TO BY R1 AS * 00045000 * A RESULT OF THE MACRO EXPANSION ... IN THIS CASE * 00046000 * $$BOPEN. UPON ENTRY TO DMSBOP, R0 POINTS TO THE FIRST * 00047000 * DTF OR ACB ADCON IN THE MACRO EXPANSION. * 00048000 * * 00049000 * EXIT CONDITIONS: * 00050000 * * 00051000 * NORMAL RETURN = 0 * 00052000 * * 00053000 * NORMAL EXITS: * 00054000 * SVC 11 - RETURN TO PROBLEM PROGRAM AFTER OPEN IS * 00055000 * COMPLETE. * 00056000 * SVC 2 - FETCH $$BOVSAM TO OPEN ANY ACBS. THIS WILL BE * 00057000 * FOLLOWED BY A RETURN TO DMSBOP. * 00058000 * * 00059000 * ABNORMAL EXITS: * 00060000 * R15 = 24 * 00061000 * R15 = 36 * 00062000 * R15 = 40 * 00063000 * R15 = 100 * 00064000 * AS FOLLOWS: * 00065000 * * 00066000 * DMSBOP037E DISK 'MODE' IS READ/ONLY * 00067000 * * 00068000 * EXPLANATION: ATTEMPT TO OPEN SEQUENTIAL* 00069000 * DISK FILE FOR OUTPUT BUT ADTFLG1 IN * 00070000 * THE ADT INDICATES READ/ONLY DISK. * 00071000 * * 00072000 * SYSTEM ACTION: RC=36 * 00073000 * THE SESSION IS CANCELLED. * 00074000 * * 00075000 * USER ACTION: INSURE THAT THE * 00076000 * APPROPRIATE DISK IS BEING ASSOCIATED * 00077000 * WITH THE DTF BEING OPENED AND RESTART * 00078000 * THE SESSION. * 00079000 * * 00080000 * * 00081000 * DMSBOP058E END-OF-FILE OR END-OF-TAPE ON 'TAPN' * 00082000 * * 00083000 * EXPLANATION: END OF FILE OR END OF TAPE* 00084000 * HAS BEEN ENCOUNTERED WHILE PERFORMING * 00085000 * TAPE I/O OPERATION. * 00086000 * * 00087000 * SYSTEM ACTION: RC = 40 * 00088000 * THE SESSION IS CANCELLED. * 00089000 * * 00090000 * USER ACTION: REWIND AND REPOSITION THE * 00091000 * TAPE AND RESTART THE SESSION. * 00092000 * * 00093000 * * 00094000 * DMSBOP113S 'TAPN (CUU)' NOT ATTACHED * 00095000 * * 00096000 * EXPLANATION: THE TAPE HAS NOT BEEN * 00097000 * MOUNTED AND/OR THE DEVICE IS NOT * 00098000 * READY. * 00099000 * * 00100000 * SYSTEM ACTION: RC=100 * 00101000 * THE SESSION IS CANCELLED. * 00102000 * * 00103000 * USER ACTION: ATTACH THE TAPE TO THE * 00104000 * USER'S VIRTUAL MACHINE AND RESTART THE * 00105000 * SESSION. * 00106000 * * 00107000 * * 00108000 * DMSBOP069E DISK 'MODE' NOT ACCESSED * 00109000 * * 00110000 * EXPLANATION: ATTEMPT TO OPEN A * 00111000 * SEQUENTIAL DISK FILE AND THE DISK * 00112000 * ASSOCIATED WITH THE FILE HAS NOT BEEN * 00113000 * ACCESSED. * 00114000 * * 00115000 * SYSTEM ACTION: RC = 36 * 00116000 * THE SESSION IS CANCELLED. * 00117000 * * 00118000 * USER ACTION: ACCESS THE DISK AND * 00119000 * RESTART THE SESSION. * 00120000 * * 00121000 * * 00122000 * DMSBOP043E TAPN IS FILE PROTECTED * 00123000 * * 00124000 * EXPLANATION: TAPN WHERE N = 1,2,3,4 IS * 00125000 * FILE PROTECTED. * 00126000 * * 00127000 * SYSTEM ACTION: RC = 36 * 00128000 * THE SESSION IS CANCELLED. * 00129000 * * 00130000 * USER ACTION: VERIFY THAT CORRECT TAPE * 00131000 * HAS BEEN SELECTED, CORRECT THE FILE * 00132000 * PROTECT SITUATION AND RESTART THE * 00133000 * SESSION. * 00134000 * * 00135000 * DMSBOP088E UNSUPPORTED DTF TYPE 'DTFTYPE' * 00136000 * * 00137000 * EXPLANATION: ATTEMPT TO OPEN UNSUPPORTED 00138000 * * 00139000 * SYSTEM ACTION: RC = 24 * 00140000 * THE SESSION IS CANCELLED. * 00141000 * * 00142000 * USER ACTION: NONE, CMSDOS ONLY SUPPORTS* 00143000 * THOSE DTFS IDENTIFIED IN THE * 00144000 * SPECIFICATIONS. * 00145000 * * 00146000 * * 00147000 * * 00148000 * DMSBOP089E OPEN ERROR CODE 'CODE' ON FN/SYSXXX/TAPN* 00149000 * * 00150000 * EXPLANATION:THIS MESSAGE WILL BE ISSUED * 00151000 * FOR MANY OF THE OPEN ERROR MESSAGES. * 00152000 * A UNIQUE ERROR CODE IN THE MESSAGE WILL * 00153000 * IDENTIFY THE ERROR SITUATION. * 00154000 * * 00155000 * * 00156000 * SYSTEM ACTION: * 00157000 * * 00158000 * RC = 1 * 00159000 * SYSXXX VALUE IN DOSCB DOES NOT * 00160000 * MATCH VALUE IN DTF. * 00161000 * * 00162000 * * 00163000 * RC = 2 * 00164000 * CMS/DOS DOES NOT SUPPORT WRITING TO * 00165000 * OS/DOS DISKS. ALL FILES MUST BE WRITTEN* 00166000 * TO CMS DISKS. * 00167000 * * 00168000 * * 00169000 * RC = 3 * 00170000 * ATTEMPTING TO OPEN A SEQUENTIAL DISK * 00171000 * FILE BUT NO DOSCB EXISTS WITH THE DOSCB * 00172000 * DDNAME EQUAL TO THE DTF FILENAME. * 00173000 * CMS/DOS REQUIRES A USER ISSUED DLBL FOR * 00174000 * ALL SEQUENTIAL DISK INPUT AND OUTPUT * 00175000 * FILES. * 00176000 * * 00177000 * RC = 4 * 00178000 * ATTEMPT TO OPEN DTFCD OR DTFPR WITH * 00179000 * ASSOCFLE/FUNC PARAMETERS SPECIFIED ON * 00180000 * DTFXX MACRO. THESE PARAMETERS ARE NOT * 00181000 * SUPPORTED. * 00182000 * * 00183000 * * 00184000 * RC = 5 * 00185000 * ATTEMPT TO OPEN AN INPUT SEQUENTIAL * 00186000 * DISK FILE BUT NO EXTENT INFORMATION HAS * 00187000 * BEEN FOUND IN THE OSFST. * 00188000 * * 00189000 * RC = 6 * 00190000 * ATTEMPT TO VERIFY EXISTENCE OF DISK * 00191000 * INPUT FILE BY CALLING STATE (DMSSTTE) * 00192000 * AND FILE NOT FOUND CONDITION * 00193000 * ENCOUNTERED. * 00194000 * * 00195000 * RC = 7 * 00196000 * THE PUB DEVICE TYPE CODE IS INCOMPATIBLE* 00197000 * WITH THE DEVICE TYPES SUPPORTED BY THE * 00198000 * DTF BEING OPENED. * 00199000 * * 00200000 * RC = 8 * 00201000 * SYSTEM OR PROGRAMMER LOGICAL UNIT * 00202000 * IS UNASSIGNED (PUB POINTER IN LUB = * 00203000 * X'FF'). * 00204000 * * 00205000 * RC = 9 * 00206000 * NO CMS/DOS SUPPORT FOR READING TAPES * 00207000 * IN A BACKWARD DIRECTION. WHEN THE * 00208000 * PARAMETER 'READ= BACK' IS SPECIFIED * 00209000 * ON THE DTFMT MACRO, A FLAG IS SET IN * 00210000 * THE DTF AT COMPILATION TIME INDICATING * 00211000 * THIS CONDITION. CMS/DOS WILL ONLY * 00212000 * SUPPORT TAPE PROCESSING IN A FORWARD * 00213000 * DIRECTION. * 00214000 * * 00215000 * RC = 11 * 00216000 * ATTEMPT TO OPEN DTFMT (TAPE DATA * 00217000 * FILES) AND 'ASCII=YES' WAS * 00218000 * SPECIFIED. THIS PARAMETER IS NOT * 00219000 * SUPPORTED. * 00220000 * * 00221000 * RC = 12 * 00222000 * OPENING DTFMT (FILABL=STD) BUT NO * 00223000 * VOL1/HDR1 ENCOUNTERED. * 00224000 * * 00225000 * RC = 13 * 00226000 * PUB INFORMATION (SEVEN TRACK INDICATOR * 00227000 * OR DENSITY) IS INCOMPATIBLE WITH THE * 00228000 * TAPE DRIVE. * 00229000 * * 00230000 * RC = 14 * 00231000 * 3420 TAPE DRIVE BUT INVALID TAPE * 00232000 * MODEL NUMBER (VALID MODEL NUMBERS ARE * 00233000 * 3, 4, 5, 6, 7, 8. * 00234000 * * 00235000 * RC = 15 * 00236000 * ERROR ACCESSING OS/DOS DISK WHEN * 00237000 * OPENING A SEQUENTIAL DISK INPUT FILE * 00238000 * AS RESULT OF CALL TO STATE (DMSSTTE). * 00239000 * * 00240000 * RC = 16 * 00241000 * SYSIPT OR SYSRDR ASSIGNED TO TAPE * 00242000 * AND RECORD LENGTH DOES NOT EQUAL * 00243000 * 80 OR 81 BYTES. * 00244000 * * 00245000 * RC = 17 * 00246000 * UNEXPECTED TAPE ERROR ENCOUNTERED * 00247000 * WHEN PERFORMING TAPE IO OPERATION. * 00248000 * * 00249000 * THE SESSION IS CANCELLED IN ALL THE * 00250000 * ABOVE SITUATIONS WITH A RC = 36 EXCEPT * 00251000 * IN THE CASE WHERE A SYSTEM/PROGRAMMER * 00252000 * LOGICAL UNIT IS UNASSIGNED (RC = 8). * 00253000 * IN THIS CASE, AN SVC 2 (FETCH) * 00254000 * IS ISSUED TO THE ABNORMAL TERMINATION * 00255000 * ROUTINE (DMSBAB) WHICH VERIFIES WHETHER * 00256000 * LINKAGE HAS BEEN ESTABLISHED TO A STXIT * 00257000 * AB ROUTINE. * 00258000 * * 00259000 * USER ACTION: CORRECTION THE INDIVIDUAL * 00260000 * SITUATION AND RESTART THE SESSION. * 00261000 * 00262000 * DMSBOP400S SYSTEM 'SYSNAME' DOES NOT EXIST 00263000 * EXPLANATION: THE SUBJECT SYSTEM HAS 00264000 * NOT BEEN DEFINED IN THE CONTROL 00265000 * PROGRAM MODULE DMKSNT. 00266000 * 00267000 * SYSTEM ACTION: RC = 44 00268000 * THE SESSION IS CANCELLED. 00269000 * 00270000 * USER ACTION: CONTACT THE INSTALLATION 00271000 * SYSTEM PROGRAMMER WHO MUST USE THE 00272000 * VSAMGEN EXEC PROCEDURE TO SAVE THE CMS 00273000 * VSAM SYSTEM. 00274000 * 00275000 * DMSBOP401S V.M. SIZE CANNOT EXCEED 'CMSDOS' START 00276000 * ADDRESS 00277000 * 00278000 * EXPLANATION: THE USER'S VIRTUAL MACHINE 00279000 * STORAGE SIZE AS CURRENTLY DEFINED IS OF 00280000 * SUCH A SIZE THAT THE NAMED SYSTEM WOULD 00281000 * HAVE OVERLAID PART OF THE USER'S STORAGE. 00282000 * 00283000 * SYSTEM ACTION: RC = 104 THE SYSTEM 00284000 * EXECUTION TERMINATES; THE SYSTEM REMAINS 00285000 * IN THE SAME STATUS AS BEFORE THE ROUTINE 00286000 * WAS ENTERED. 00287000 * 00288000 * USER ACTION: CONTACT THE INSTALLATION 00289000 * SYSTEM PROGRAMMER WNO MUST RESAVE THE 00290000 * NAMED VSAM SYSTEM AT AN ADDRESS LARGE 00291000 * ENOUGH NOT TO CONFLICT WITH NORMAL 00292000 * VIRTUAL MACHINE SIZE PERMITTED TO THE 00293000 * USERS. 00294000 * 00295000 * DMSBOP410S CONTROL PROGRAM ERROR INDICATION 00296000 * 'RETCODE' 00297000 * 00298000 * EXPLANATION: AN UNEXPECTED ERROR 00299000 * OCCURRED WHILE THE CONTROL PROGRAM 00300000 * WAS PROCESSING A REQUEST FROM CMS 00301000 * TO FIND OR LOAD A SAVED VSAM SYSTEM. 00302000 * 00303000 * SYSTEM ACTION: RC = NNN 00304000 * WHERE NNN IS THE ACTUAL ERROR COD 00305000 * FROM THE CONTROL PROGRAM. 00306000 * 117 - PAGING I/O ERRORS. 00307000 * 00308000 * USER ACTION: CONTACT THE INSTALLATION 00309000 * SYSTEM PROGRAMMER FOR ASSISTANCE. 00310000 * 00311000 * DMSBOP413S STORAGE NOT INITIALIZED FOR VSAM 00312000 * PROCESSING. 00313000 * 00314000 * EXPLANATION: SET DOS ON (VSAM WAS NOT 00315000 * SPECIFIED AND THEREFORE STORAGE 00316000 * WAS NOT INITIALIZED FOR VSAM 00317000 * PROCESSING. 00318000 * 00319000 * SYSTEM ACTION: RC = 104 00320000 * EXECUTION OF THE PRESENT ROUTINE IS 00321000 * CANCELLED. THE SYSTEM REMAINS IN THE 00322000 * SAME STATUS AS BEFORE THE ROUTINE 00323000 * WAS ENTERED. 00324000 * 00325000 * USER ACTION: WHEN RUNNING DOSVSAM, 00326000 * USER SHOULD USE 'SET DOS ON (VSAM' 00327000 * TO INSURE THAT STORAGE IS INITIALIZED 00328000 * PROPERLY FOR VSAM. 00329000 * 00330000 * DMSBOP308E ' ' DISK IN CMS FORMAT; INVALID FOR 00331000 * NON-CMS DATASET. 00332000 * 00333000 * EXPLANTION: ACB IS BEING OPENED; 00334000 * DISK MUST BE OS/DOS DISK. 00335000 * SYSTEM ACTION: RC = 24 00336000 * THE ROUTINE IS CANCELLED; THE SYSTEM 00337000 * REMAINS IN THE SAME STATUS AS BEFORE 00338000 * THE ROUTINE WAS ENTERED. 00339000 * 00340000 * USER ACTION: ENSURE THAT PROPER DISK 00341000 * WAS SPECIFIED FOR DATASET. 00342000 * 00343000 * DMSBOP302E NO SYSXXX OPERAND SPECIFIED 00344000 * 00345000 * EXPLANATION: NO SYSXXX WAS SPECIFIED 00346000 * ON THE DTF MACRO OR THE DLBL FOR THE 00347000 * SPECIFIC FILENAME. 00348000 * 00349000 * SYSTEM ACTION: RC = 24 00350000 * EXECUTION OF THE ROUTINE IS CANCELLED. 00351000 * THE SYSTEM REMAINS IN THE SAME STATUS 00352000 * AS BEFORE THE ROUTINE WAS ENTERED. 00353000 * 00354000 * USER ACTION: EITHER SPECIFY THE 00355000 * SYSXXX ON THE DTF OR THE DLBL. 00356000 * 00357000 * DMSBOP086W DLBL 'DDNAME' DUMMY INVALID FOR VSAM 00358000 * 00359000 * EXPLANATION: INVALID TO SPECIFY DUMMY 00360000 * ON VSAM DATA SET 00361000 * 00362000 * SYSTEM ACTION: VSAM RC = 8 00363000 * SYSTEM REMAINS IN SAME STATE AS 00364000 * BEFORE THE ROUTINE WAS ENTERED. 00365000 * 00366000 * USER ACTION: DO NOT SPECIFY 00367000 * DLBL DUMMY FOR VSAM DATA SET 00368000 * * 00369000 * CALLS TO OTHER ROUTINES: * 00370000 * DMSTIO - SVC 202 * 00371000 * DMSSTTE * 00372000 * ADTLKP * 00373000 * DMSFRE * 00374000 * $$BOVSAM - SVC 2 (FETCH) TO PERFORM OPEN OF ACBS * 00375000 * SVC 8 - TEMPORARILY RETURN TO PROB. PROG. TO PROCESS * 00376000 * USER TAPE LABELS * 00377000 * * 00378000 * * 00379000 * EXTERNAL REFERENCES: * 00380000 * NUCON, REGEQU, DOSCB, OSFST, ADT * 00381000 * MAPPUB, BGCOM, FSTB, DOSAVE * 00382000 * * 00383000 * * 00384000 * CALLED BY: * 00385000 * INVOKED IN RESPONSE TO SVC 2 (FETCH FOR DMSBOP). * 00386000 * THE SVC 2 CAN RESULT FROM TWO SITUATIONS: * 00387000 * * 00388000 * 1. SVC 2 GENERATED AS PART OF * 00389000 * OPEN MACRO EXPANSION WHERE R1 * 00390000 * POINTS TO NAME OF FILE TO BE * 00391000 * FETCHED ($$BOPEN). * 00392000 * * 00393000 * 2. SVC 2 ISSUED IN USER PROGRAM * 00394000 * AND R1 POINTS TO NAME OF FILE TO * 00395000 * BE FETCHED ($$BOPEN). * 00396000 * * 00397000 * * 00398000 * TABLES AND WORK AREAS: * 00399000 * * 00400000 * CC - CCHH CONTROL FIELD TABLE CONTAINING AN * 00401000 * ENTRY FOR EACH DISK DEVICE TYPE. EACH * 00402000 * ENTRY CONTAINS A MAXIMUM CCHH VALUE FOR * 00403000 * A FILE RESIDING ON THE SPECIFIC DISK DEVICE * 00404000 * TYPE. THIS VALUE HAS BEEN COMPUTED * 00405000 * BASED ON 32,768 RECORDS/CMS FILE AND THE * 00406000 * NUMBER OF TRACKS/CYL. * 00407000 * * 00408000 * * 00409000 * DISKTAB - TABLE WITH FOUR (8) BYTE ENTRIES. EACH * 00410000 * ENTRY CORRESPONDS WITH A DIRECT ACCESS * 00411000 * STORAGE DEVICE TYPE (3340 35MB, 3340 70MB, * 00412000 * 2314/2319 AND 3330) AND CONTAINS FOUR FIELDS * 00413000 * RELATING TO THE STORATE DEVICE TYPE. * 00414000 * * 00415000 * 1. ADT DEVICE CODE. * 00416000 * 2. DOS DEVICE CODE. * 00417000 * 3. TRACK CAPACITY. * 00418000 * 4. MAXIMUM CCHH ADDRESS FOR THE * 00419000 * STORAGE DEVICE. * 00420000 * * 00421000 * TYPETAB - TABLE WITH AN ENTRY FOR EACH SUPPORTED * 00422000 * DTF TYPE. THE FIRST BYTE OF EACH ENTRY * 00423000 * CONTAINS THE DTF TYPE. THIS ONE-BYTE IS * 00424000 * FOLLOWED BY A THREE-BYTE ADDRESS OF A ROUTINE* 00425000 * TO BE GIVEN CONTROL TO PROCESS THE SPECIFIED * 00426000 * DTF TYPE. THE THIRD FIELD IN EACH ENTRY * 00427000 * IS A 7 CHARACTER CONSTANT (DTFXX) USED IN * 00428000 * ERROR MESSAGES. * 00429000 * * 00430000 * SYSTAB - TABLE OF THREE BYTE ENTRIES CONSISTING OF * 00431000 * SYSTEM LOGICAL UNIT SYMBOLICS (IE; PCH, IPT, * 00432000 * LST ETC.) * 00433000 * * 00434000 * FREE - THIRTY TWO DOUBLE WORDS OF FREE STORAGE USED FOR* 00435000 * SWITCHES, ADDRESSES, PLISTS AND WORKAREAS WHICH * 00436000 * WILL BE MODIFIED AT SOME POINT DURING THE * 00437000 * PROGRAM. (DMSBOP IS REENTRANT) * 00438000 * * 00439000 * * 00440000 * REGISTER USAGE: * 00441000 * * 00442000 * R0 - AT DMSBOP ENTRY R0 POINTS TO THE LIST OF ADCONS * 00443000 * GENERATED BY THE OPEN MACRO. EACH ADCON IS AN * 00444000 * ADDRESS OF A DTF TO BE OPENED BY THE PROGRAM. * 00445000 * R1 - WORKING REGISTER * 00446000 * R2 - DTF ADDRESS * 00447000 * R3 - WORKING REGISTER * 00448000 * R4 - WORKING REGISTER * 00449000 * R5 - POINTER TO PUB INDEX CODE * 00450000 * - POINTER TO PUB ENTRY * 00451000 * - WORKING REGISTER * 00452000 * R6 - BAL RETURN REGISTER * 00453000 * R7 - WORKING REGISTER * 00454000 * R8 - WORKING REGISTER * 00455000 * R9 - FREE STORAGE POINTER * 00456000 * R10 - WORKING REGISTER * 00457000 * R11 - BASE REGISTER * 00458000 * R12 - BASE REGISTER * 00459000 * R13 - WORKING REGISTER * 00460000 * R14 - EXTERNAL LINKAGE/WORKING REGISTER * 00461000 * R15 - RETURN CODES * 00462000 * * 00463000 * * 00464000 * OPERATION: * 00465000 * * 00466000 * * 00467000 * DMSBOP IS THE SIMULATED OPEN ROUTINE USED BY THE * 00468000 * CMS/DOS SUPPORT TO OPEN SUPPORTED DTF TYPES. DMSBOP * 00469000 * IS USED INSTEAD OF THE MANY $$B-TRANSIENTS * 00470000 * USED BY DOS/VS. THE FUNCTION PERFORMED BY DMSBOP IS * 00471000 * BASICALLY THAT OF DTF TABLE INITIALIZATION - * 00472000 * INITIALIZING THOSE FIELDS IN THE DTF WHICH WILL BE USED* 00473000 * LATER BY THE DOS/VS LIOCS ROUTINES. * 00474000 * * 00475000 * * 00476000 * DMSBOP PERFORMS SEVERAL MAJOR ACTIVITIES: * 00477000 * * 00478000 * 1. DMSBOP OBTAINS A WORK AREA FROM FREE STORAGE. * 00479000 * * 00480000 * 2. THE PROGRAM THEN SCANS THE LIST OF DTF/ACB FILES * 00481000 * TO BE OPENED. UPON ENCOUNTERING AN ACB, CONTROL * 00482000 * IS GIVEN TO THE VSAM OPEN ROUTINE ($$BOVSAM) TO * 00483000 * OPEN THE SPECIFIED ACB. * 00484000 * * 00485000 * 3. ONCE THIS IS ACCOMPLISHED, THE DTF TYPE IS EXAMINED* 00486000 * AND CONTROL IS PASSED TO A ROUTINE WHICH OPENS THAT* 00487000 * PARTICULAR DTF TYPE. * 00488000 * * 00489000 * THE OPEN ACTIVITY FOR EACH DTF TYPE FOLLOWS: * 00490000 * * 00491000 * DTFCD (DTF TYPE X'02'): * 00492000 * OPEN BIT IN DTF IS POSTED OPEN. * 00493000 * * 00494000 * DTFCD (DTF TYPE X'04'), * 00495000 * DTFPR (DTF TYPE X'08'): * 00496000 * IF TWO IOAREAS ARE SPECIFIED, THE IOREG * 00497000 * IS LOADED WITH THE APPROPRIATE IOAREA * 00498000 * ADDRESS TAKING INTO ACCOUNT CONTROL CHARACTER * 00499000 * AND VARIABLE LENGTH RECORDS. * 00500000 * NEXT, THE PUB INDEX BYTE IS CHECKED. * 00501000 * IF EQUAL TO X'FF' (UNASSIGNED), AN ERROR * 00502000 * MESSAGE IS ISSUED. IF EQUAL X'FE' (IGNORE), * 00503000 * THE OPEN IGNORE BIT IS POSTED. OTHERWISE, * 00504000 * PROCESSING CONTINUES BY ANALYZING THE PUB DEVICE * 00505000 * CODE. THE DTF OPEN BIT IS THEN POSTED OPEN. * 00506000 * * 00507000 * DTFCN (DTF TYPE X'03'): * 00508000 * NO OPEN IS REQUIRED FOR DTFCN (CONSOLE). * 00509000 * * 00510000 * DTFMT (TAPE DATA FILES DTF TYPE X'11', X'12', * 00511000 * X'14'): * 00512000 * ERROR MESSAGE IS ISSUED IF LOGICAL UNIT IS * 00513000 * UNASSIGNED OR IGNORED. (PUB INDEX BYTE = X'FF' * 00514000 * OR X'FE'). * 00515000 * PUB DEVICE TYPE CODE MUST INDICATE A TAPE. * 00516000 * 'READ=BACK' AND 'ASCII=YES' ARE NOT SUPPORTED. * 00517000 * THE TAPE IS REWOUND IF 'NOREWIND' IS NOT SPECIFIED.* 00518000 * IF AN IOREG IS SPECIFIED, THE IOREG IS LOADED * 00519000 * WITH THE APPROPRIATE IOAREA ADDRESS. * 00520000 * (ONLY APPROPRIATE WITH OUTPUT TAPES) * 00521000 * * 00522000 * INPUT TAPE DATA FILES: * 00523000 * * 00524000 * STANDARD LABEL: * 00525000 * * 00526000 * THE STANDARD LABEL IS SKIPPED. IF A USER * 00527000 * ENTRY HAS BEEN SPECIFIED VIA THE LABADDR * 00528000 * PARAMETER ON THE DTF MACRO, CONTROL IS PASSED * 00529000 * TO THE USER LABEL ROUTINE . UPON RETURN, * 00530000 * THE TAPE IS FORWARD SPACED BEYOND THE TAPE MARK. * 00531000 * IF NO USER ENTRY WAS SPECIFIED, THE TAPE IS * 00532000 * FORWARD SPACED BEYOND THE TAPE MARK. * 00533000 * * 00534000 * NON-STANDARD LABEL: * 00535000 * * 00536000 * IF A USER ENTRY HAS BEEN SPECIFIED, CONTROL IS * 00537000 * PASSED TO THE USER LABEL ROUTINE. IF THE UTILITIES* 00538000 * BIT IS ON UPON RETURN, THE DTF IS POSTED OPEN. * 00539000 * IF THE UTILITIES BIT IS NOT ON, THE TAPE IS * 00540000 * FORWARD SPACED BEYOND THE TAPE MARK AND THE DTF * 00541000 * IS POSTED OPEN. IF NO USER ENTRY WAS SPECIFIED, * 00542000 * THE TAPE IS FORWARD SPACED BEYOND THE TAPE MARK. * 00543000 * * 00544000 * NOLABEL: * 00545000 * * 00546000 * THE TAPE IS POSITIONED AT THE FIRST DATA RECORD. * 00547000 * * 00548000 * TAPE DATA OUTPUT FILES: * 00549000 * * 00550000 * ALL TAPE DATA OUTPUT FILES WILL BE TREATED AS * 00551000 * NOLABEL TAPES. UNLESS 'TRMARK=NO' IS SPECIFIED, * 00552000 * A TAPE MARK WILL BE WRITTEN AND THE DTF POSTED * 00553000 * OPEN. (THIS MEANS THAT IF THE TAPE IS STANDARD * 00554000 * LABEL OR NON-STANDARD LABEL, THE LABEL WILL BE * 00555000 * DESTROYED. * 00556000 * * 00557000 * DTFMT (WORKFILES DTF TYPE X'10'): * 00558000 * TAPE WORKFILES UNDERGO THE SAME OPEN PROCESS * 00559000 * AS TAPE DATA FILES. HOWEVER, SINCE ALL TAPE * 00560000 * WORKFILES ARE OPENED AS OUTPUT FIRST, THERE * 00561000 * WILL BE NO LABEL SUPPORT FOR TAPE WORKFILES. * 00562000 * ALL TAPE WORKFILES WILL BE TREATED AS NO LABEL * 00563000 * TAPES. * 00564000 * * 00565000 * DTFSD (DISK DTF TYPE X'20'), * 00566000 * DTFCP (DISK DTF TYPE X'32'), * 00567000 * DTFDI (DISK DTF TYPE X'33): * 00568000 * THE LUB IS VERIFIED TO INSURE THAT THE * 00569000 * LOGICAL UNIT HAS BEEN ASSIGNED. IF UNASSIGNED, * 00570000 * AN ERROR MESSAGE IS ISSUED. NEXT A CHECK IS * 00571000 * MADE TO SEE IF A DOSCB EXISTS FOR THE DTF FILENAME.* 00572000 * IF TWO IOAREAS ARE SPECIFIED (OUTPUT ONLY), THE * 00573000 * IOREG IS LOADED WITH THE APPROPRIATE IOAREA ADDRESS* 00574000 * IF AN INPUT FILE, A CHECK IS MADE TO VERIFY * 00575000 * EXISTENCE OF THE FILE (CALL TO DMSSTTE). * 00576000 * VARIOUS FIELDS ARE THEN INITIALIZED IN * 00577000 * THE DTF (BOTH INPUT AND OUTPUT) _ * 00578000 * TRACK CAPACITY, UPPER AND LOWER EXTENT FIELDS ETC. * 00579000 * * 00580000 * DISK OUTPUT FILES: * 00581000 * SEARCH ARGUMENT INITIALIZED X'0000000000' * 00582000 * RECORDS/TRACK INITIALIZED X'00' * 00583000 * * 00584000 * DISK INPUT FILES: * 00585000 * SEARCH ARGUMENT INITIALIZED X'0000000001' * 00586000 * IN THE CASE OF A CMS DISK. * 00587000 * SEARCH ARGUMENT INITIALIZED TO LOW EXTENT * 00588000 * IN THE CASE OF DOS DISK. * 00589000 * RECORDS/TRACK INITIALIZED TO X'01' * 00590000 * RECORDS/TRACK INITIALIZED TO X'02' - DTFCP * 00591000 * * 00592000 * DTFCP AND DTFDI FILES OTHER THAN DISK * 00593000 * WILL BE INITIALIZED IN ACCORDANCE WITH * 00594000 * THE RULES FOR THE PARTICULAR DEVICE TYPE * 00595000 * AS INDICATED ABOVE FOR TAPE AND UNIT * 00596000 * RECORD EQUIPMENT. * 00597000 * * 00598000 * 4. AFTER EACH DTF TABLE IS INITIALIZED, A CHECK IS * 00599000 * MADE TO SEE IF MORE DTFS REMAIN TO BE OPENED. * 00600000 * IF SO, PROCESSING CONTINUES AS OUTLINED IN (3) * 00601000 * ABOVE. * 00602000 * 5. WHEN ALL FILES HAVE BEEN OPENED, EXIT IS MADE BY * 00603000 * AN SVC 11 TO THE PROBLEM PROGRAM ASSUMING THERE * 00604000 * WERE NO ACBS TO OPEN. IF ACBS REMAIN TO BE OPEN, * 00605000 * AN SVC 2 IS ISSUED FOR $$BOVSAM. CONTROL RETURNS * 00606000 * TO DMSBOP AND EXIT IS MADE VIA SVC 11. * 00607000 * 6. WHEN ERRORS ARE ENCOUNTERED, AN APPROPRIATE ERROR * 00608000 * MESSAGE IS ISSUED AND EXIT IS MADE VIA SVC 6 * 00609000 * (CANCEL - ABNORMAL TERMINATION). * 00610000 * * 00611000 *. * 00612000 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00613000 PUNCH 'SPB' @VA06270 00614000 SPACE 2 00615000 DMSBOP CSECT @V305066 00616000 USING NUCON,R0 @V305066 00617000 USING DTF,R2 @V305066 00618000 USING DOSSECT,R3 @V305066 00619000 USING FREE,R9 ESTABLISH ADDRESSABILIY @V305066 00620000 USING BGCOM,R7 COMREG ADDRESSABILITY @V305066 00621000 DC CL8'$$BOPEN' @V305066 00622000 BALR R12,0 ESTABLISH ADDRESSABILITY @V305066 00623000 USING *,R12,R11 @V305066 00624000 LA R11,Q4095(R12) @VM03137 00625000 LA R11,ONE(,R11) @VM03137 00626000 LR R2,R0 PTR TO FIRST DTF/ACB ADCON @V305066 00627000 LA R0,FREEDB GET NO. DOUBLE WORDS FOR FREE @V305101 00628000 DMSFREE DWORDS=(0),TYPE=NUCLEUS,TYPCALL=BALR @V305066 00629000 LR R9,R1 ADDRESS OF FREE STORAGE @V305066 00630000 XC 0(FREELN,R9),0(R9) ZERO OUT ACQUIRED AREA @V305101 00631000 MVI SAVEFN,BLANK PROPAGATE BLANKS THROUGH @V305066 00632000 MVC SAVEFN+1(SIX),SAVEFN FIELD USED IN ERROR MSGS @VM03137 00633000 ST R2,SAVEPTR PTR FOR FIRST DTF/ACB ADCON @V305066 00634000 MVC SETMODE(SIXTEEN),CCW MOVE 2 CCWS TO FREE STRG @VM03137 00635000 LA R4,SETMODE PT TO CCW1 IN FREE STORAGE @V305066 00636000 LA R5,BUFFER PREPARE TO PLACE BUFFER @V305066 00637000 LA R6,TWO ADDRESS IN CCW @V305066 00638000 LOOP STCM R5,M7,ONE(R4) PLACE BUFFER AD IN CCW @VM03137 00639000 LA R4,EIGHT(,R4) INCREM TO NEXT CCW @VM03137 00640000 BCT R6,LOOP LOOP IF MORE CCWS @V305066 00641000 GOAHEAD L R2,SAVEPTR RESTORE PTR TO FIRST ADCON @V305066 00642000 L R2,0(,R2) DTF OR ACB ADDRESS @V305066 00643000 ISITACB CLI DTFTYPE,ACB ACB? @V305066 00644000 BE VSAMCHEK YES, GO PROCESS ACB NOW.. @V305101 00645000 CHKTYP LA R3,TYPETAB CHECK FOR SUPPORTED DTF TYPES @V305066 00646000 LA R4,TYPELAST @V305066 00647000 TYPELOOP CLC 0(ONE,R3),DTFTYPE DID WE FIND MATCH? @VM03137 00648000 BE TYPEQ MATCH @V305066 00649000 LA R3,Q11(,R3) BUMP TO NEXT ENTRY IN TABLE @VM03137 00650000 BCT R4,TYPELOOP @V305066 00651000 LA R5,DTFTYPE UNSUPPORTED DTFTYPE @V305066 00652000 B ERR88E BRANCH TO PRINT ERROR MESSAGE @V305066 00653000 TYPEQ CLI DTFTYPE,DTFCD DTFCD - PUNCH @V305066 00654000 BE TYPEFND YES, GO TO OPEN ROUTINE @V305066 00655000 CLI DTFTYPE,DTFPR DTFPR - PRINTER @V305066 00656000 BE TYPEFND YES, GO TO OPEN ROUTINE @V305066 00657000 CLI DTFTYPE,SDTYPE DTFSD @V305066 00658000 BE TYPEFND YES, GO TO OPEN ROUTINE @V305066 00659000 BAL R6,GETLUB GO GET PUB INDEX CODE @V305066 00660000 CLI 0(R5),FE UA, IGN, OR NORMAL ? @V305066 00661000 BL NORMLUB NORMAL ASSIGNMENT TO DEVICE @V305066 00662000 BH ASGNERR UA - UNASSIGNED @V305066 00663000 OI FLAGIGN,OPENIGN OPEN IGNORE @V305066 00664000 CLI DTFTYPE,THIRTY2 DTFCP DASD FILE @V305066 00665000 BE TYPEFND YES, GO TO OPEN ROUTINE @V305066 00666000 CLI DTFTYPE,THIRTY3 DTFDI DASD FILE @V305066 00667000 BE TYPEFND YES, GO TO OPEN ROUTINE @V305066 00668000 LA R6,CHMOR ADD TO SEE IF MORE FILES TO OPEN @V305066 00669000 ISIOREG CLI DTFTYPE,NOLAB NOLAB OR NONSTD LAB TAPE @V305066 00670000 BE TYPE1112 YES @V305066 00671000 CLI DTFTYPE,STD STD LABEL O/P TAPE @V305066 00672000 BE TYPE1112 YES @V305066 00673000 BR R6 RETURN @V305066 00674000 TYPE1112 TM OPENSW,INPUT INPUT FILE ? @V305066 00675000 BCR 1,R6 YES, NO NEED TO LOAD IOREG @V305066 00676000 TM FLAGIGN,SPANNED SPANNED FILE? @V305066 00677000 BCR 1,R6 YES @V305066 00678000 TM OPENSW2,IOREG IOREG PREVIOUSLY LOADED @V305066 00679000 BCR 1,R6 YES @V305066 00680000 SR R4,R4 CLEAR REGISTER 4 @V305066 00681000 IC R4,REG 2ND BYTE OF LOAD/NOP INST @V305066 00682000 SRA R4,4 CLEAR OUT X2 PART OF OPERAND @V305066 00683000 BCR 8,R6 RETURN IF RESULT R1 REG IS 0 @V305066 00684000 SH R4,CONNINE SUBTRACT 9 @V305066 00685000 BC 11,SFREG BR IF RESULT NOT NEGATIVE @V305066 00686000 LA R4,SIXTEEN(,R4) ADD DISP FOR REGS 0-B @VM03137 00687000 SFREG SLL R4,TWO MULT BY 4, 4 BYTE REGS @VM03137 00688000 LH R8,PIBPT PIB POINTER @V305066 00689000 L R8,EIGHT(,R8) PRT TO USER SAVEAREA ADD @VM03137 00690000 LA R8,SIXTEEN(,R8) POINT TO REGISTER SAVEAREA @VM03137 00691000 AR R8,R4 DISP + SAVEAREA ADDRESS @V305066 00692000 SR R4,R4 CLEAR REGISTER 4 @V305066 00693000 IC R4,IOPTR REL ADDR OF PTR TO IOAREA @V305066 00694000 L R4,DTF(R4) IOAREA ADDRESS @V305066 00695000 ST R4,0(,R8) STORE IN REG SAVEAREA @V305066 00696000 BR R6 RETURN @V305066 00697000 NORMLUB NI FLAGIGN,DF SET OFF COBOL IGN IND. @V305066 00698000 LA R6,TYPEFND ADD TO GO TO OPEN ROUTINE @V305066 00699000 B ISIOREG GO LOAD IOREG IF NECESSARY @V305066 00700000 TYPEFND L R4,0(R3) LOAD BR ADDR INTO REG @V305066 00701000 LA R4,0(R4) ZERO OUT HIGH ORDER BYTE @V305066 00702000 BR R4 GO TO APPROPRIATE DEVICE ROUTINE @V305066 00703000 EJECT 00704000 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00705000 * * 00706000 * ROUTINE TO OPEN UNIT RECORD EQUIPMENT * 00707000 * * 00708000 * * 00709000 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00710000 SPACE 2 00711000 USING DTFUNIT,R2 @V305066 00712000 * ENTER HERE IF DTFCD (DTF TYPE = X'02' - READER) 00713000 UNITREC1 TM SWITCH,RDR3525 3525 READER ? @V305066 00714000 BZ UNITREC3 NO @V305066 00715000 TM SWITCH3,ASSOC FUNC/ASSOC SPECIFIED? @V305066 00716000 BZ SETOPNBT NO, GO OPEN FILE @V305066 00717000 ERR4 BAL R6,CVTUNIT CONVERT LOGICAL UNIT @V305066 00718000 LA R15,FOUR RC = 4 @V305066 00719000 B BADOPEN BR TO PRINT MSG @V305066 00720000 * ENTER HERE IF DTFCD OR DTFPR (DTF TYPE = X'04' - PUNCH OR X'08' - 00721000 * PRINTER) 00722000 UNITREC2 TM DEVCODE,PCH3525 3525 PUNCH? @V305066 00723000 BZ UNITREC3 NO FUNC/ASSOCFLE PARMS @V305066 00724000 TM SWITCH3,ASSOC FUNC/ASSOC SPECIFIED? @V305066 00725000 BZ UNITREC3 NO, SKIP INST @V305066 00726000 B ERR4 BR TO PUT OUT MSG @VM03139 00727000 UNITREC4 TM SWITCH3,PRT3525 3525 PRINTER @V305066 00728000 BZ UNITREC3 NO @V305066 00729000 TM SWITCH3,ASSOC FUNC/ASSOC SPECIFIED? @V305066 00730000 BZ UNITREC3 NO @V305066 00731000 B ERR4 ERROR IF SPECIFIED @V305066 00732000 * ENTER HERE FOR DTFCN (DTF TYPE = X'03' - CONSOLE) 00733000 UNITREC3 TM SWITCH,TWOIO TWO IOAREAS? @V305066 00734000 BO LAINST DOES DTF HAVE INST TO LOAD IOREG @V305066 00735000 ABOVE3 BAL R6,GETLUB GO OBTAIN LUB @V305066 00736000 B CHKFE SEE IF 'IGNORE' @V305066 00737000 LAINST CLI LODIOREG,LA IS THERE INST TO LOAD IOREG @V305066 00738000 BNE ABOVE3 NO @V305066 00739000 MVC FULLWORD(4),TWENTY4(R2) MOVE IOAREA1 ADDRESS @VM03137 00740000 L R4,FULLWORD R4 CONTAINS ADDRESS OF IOAREA1 @V305066 00741000 LA R6,ONE CONSTANT @V305066 00742000 LA R5,FOUR CONSTANT @V305066 00743000 * I/O REGISTER IS LOADED WITH THE FIRST BYTE OF DATA. IF THERE IS 00744000 * A CONTROL CHAR OR VARIABLE LENGTH RECORDS, THE I/O AREA1 ADDRESS 00745000 * MUST BE ADJUSTED TO REFLECT THIS 00746000 TM SWITCH,CNTLCHAR CONTROL CHARACTER ? @V305066 00747000 BZ NOCTLCHR @V305066 00748000 SR R4,R6 ADJUST FOR CONTROL CHARACTER @V305066 00749000 NOCTLCHR TM SWITCH,VARIBL VAR LENGTH RECORDS? @V305066 00750000 BZ NOVARY @V305066 00751000 SR R4,R5 ADJUST FOR VAR LEN RECORDS @V305066 00752000 * AT THIS POINT, R4 CONTAINS THE CORRECT VALUE TO BE LOADED 00753000 * INTO THE I/OREG 00754000 * THIS VALUE WILL BE STORED INTO THE USER REG IN THE SUPERVISOR 00755000 * SAVEAREA 00756000 NOVARY L R1,ASYSREF R1 CONTAINS ADD OF COMM REG @V305066 00757000 LH R6,Q90(R1) PIB TABLE ADDRESS @VM03137 00758000 LA R5,EIGHT(R6) CALC ADDRESS OF SAVEAREA @VM03137 00759000 L R6,0(R5) SAVEAREA TO REG @VM03139 00760000 LA R6,SIXTEEN(R6) @VM03137 00761000 * R6 POINTS TO THE BEGINNING OF THE REGISTER SAVEAREA 00762000 SR R5,R5 @V305066 00763000 IC R5,LODIOREG+1 @V305066 00764000 SRL R5,FOUR GET I/O REG @VM03137 00765000 * USER REG ARE STORED STARTING WITH REG9 00766000 LA R7,NINE CONSTANT @V305066 00767000 CR R5,R7 COMPARE I/O REG TO 9 @V305066 00768000 BL LOWIORG BRANCH IF LESS @VM03141 00769000 SR R5,R7 GREATER OR EQUAL 9 BACK UP BY NINE @VA07647 00770000 B COMMON1 JOIN CODE SHORTLY BELOW. @VM03141 00771000 LOWIORG LA R5,SEVEN(R5) ADD 7 TO IOREG @VM03137 00772000 COMMON1 SLL R5,TWO MULT BY 4 TO GET PROPER DISP @VM03137 00773000 AR R5,R6 ADD SAVEAREA+DISP - LOC. OF IOREG@V305066 00774000 ST R4,0(R5) STORE IOAREA1 ADDR IN IOREG SAVE @V305066 00775000 BAL R6,GETLUB GO OBTAIN LUB @V305066 00776000 CHKFE CLI 0(R5),FE TEST FOR IGN OR UNASSIGN @V305066 00777000 BL BELOWFE BR IF NOT IGNORE @V305066 00778000 BE POST GO TO POST IGNORE BIT @V305066 00779000 ASGNERR BAL R6,CVTUNIT CONVERT LOGICAL UNIT @V305066 00780000 LA R15,EIGHT CODE=8, SYSXXX UNASSIGN OR IGNORE@V305066 00781000 B BADOPEN BRANCH TO PRINT MESSAGE @V305066 00782000 POST OI SIXTEEN(R2),TWENTY POST OPEN IGNORE BIT @VM03137 00783000 B CHMOR BYPASS OPENING THE DTF @V305066 00784000 BELOWFE NI SIXTEEN(R2),FF-OPENIGN RESET OPEN IGNORE SWITCH @VM03137 00785000 BAL R6,GETPUB GO GET PUB ENTRY @V305066 00786000 USING PUBADR,R5 @V305066 00787000 MVZ TEMP,PUBDEVT GET ZONE OF PUB DEVICE TYPE @V305066 00788000 CLI DTFTYP,CONSOLE CONSOLE? @V305066 00789000 BNE CHKPRTR NO @VM03141 00790000 CLI TEMP,FORTY DEVICE A PRINTER? @V305066 00791000 BE CHMOR YES @V305066 00792000 CLI TEMP,ZERO DEVICE A CONSOLE? @V305066 00793000 BE CHMOR YES @V305066 00794000 DEVERR BAL R6,CVTUNIT CONVERT 2 BYTE UNIT TO SYSXXX @V305066 00795000 LA R15,SEVEN INVALID DEVICE TYPE CODE IN PUB @V305066 00796000 B BADOPEN BR TO PRINT ERROR MSG @V305066 00797000 CHMOR L R2,SAVEPTR ADDR OF DTF TO BE OPEN @V305066 00798000 LA R2,FOUR(R2) POINT TO NEXT ADCON @VM03137 00799000 CLI 0(R2),ANOTHER ANY MORE FILES TO OPEN? @VA09227 00800300 BNE EXIT NO,END OF LIST @VA09227 00800600 MVI SAVEFN,BLANK PROPAGATE BLANKS THROUGH @VA04418 00802000 MVC SAVEFN+1(SIX),SAVEFN FIELD USED IN ERR. MSGS @VA04418 00803000 ST R2,SAVEPTR STORE POINTER TO NEXT ADCON @V305066 00804000 L R2,0(R2) NEXT DTF ADDR @V305066 00805000 B ISITACB GO TO OPEN NEXT FILE @V305101 00806000 CHKPRTR CLI DTFTYP,PRINTER PRINTER? @V305066 00807000 BE UCSPRT YES @V305066 00808000 CLI DTFTYP,READER DTFCD - DTFTYPE = X'02' ? @V305066 00809000 BE RDRZONE YES, CHECK PUB DEVICE FOR RDR @V305066 00810000 PCHZONE CLI TEMP,TWENTY MUST BE PUNCH DEVICE @V305066 00811000 BNE DEVERR OTHERWISE, ERROR 7 @V305066 00812000 B SETOPNBT PUNCH, GO TO SET OPEN BIT @V305066 00813000 B SETOPNBT INDICATE FILE IS OPEN @V305066 00814000 UCSPRT CLI TEMP,FORTY IS DEVICE A PRINTER? @V305066 00815000 BNE DEVERR NO, ERROR 7 @V305066 00816000 CLI FOUR(R5),UCS UNIVERSAL CHAR SET PRINTER? @VM03137 00817000 BNE SETOPNBT NO @V305066 00818000 LR R1,R2 PLACE DTF ADDRESS IN R1 @V305066 00819000 MVC TEMPSAVE,CCWADDR SAVE USER CCW ADDRESS @V305066 00820000 LA R4,SETMODE ADDRESS OF SETMODE CCW @V305066 00821000 ST R4,FULLWORD STORE THIS ADDRESS @V305066 00822000 MVC CCWADDR(THREE),FULLWORD+1 ADDR OF SETMODE CCW @VM03137 00823000 * TO CCB 00824000 MVI SETMODE,SUPPRESS SUPPRESS DATA CHECKS @V305066 00825000 TM BUFFER1+4,DATACKS WANT DATA CHECKS TO OCCUR @V305066 00826000 BZ STMODEIO DATA CHECKS CANNOT OCCUR @V305066 00827000 MVI SETMODE,DATA WANT DATA CHECKS TO OCCUR @V305066 00828000 STMODEIO SVC EXCP PERFORM SVC 0 @V305066 00829000 MVC CCWADDR(THREE),TEMPSAVE RESTORE USER CCB @VM03137 00830000 SETOPNBT OI SWITCH,HEX80 UNIT RECORD EQUIPMENT OPEN @V305066 00831000 B CHMOR GO SEE IF MORE FILES TO OPEN @VM03139 00832000 RDRZONE CLI TEMP,HEX10 READER? @V305066 00833000 BNE DEVERR NO, ERROR 7 @V305066 00834000 B SETOPNBT READER, GO SET OPEN BIT @V305066 00835000 EJECT 00836000 GETLUB L R7,ASYSREF GET ADDRESS OF BGCOM @V305066 00837000 LH R5,NICLPT NICL ADDRESS @V305066 00838000 SR R4,R4 CLEAR REGISTER R4 @V305066 00839000 IC R4,0(R5) NO. SYS LOGICAL UNITS FROM NICL @V305066 00840000 SR R5,R5 CLEAR REGISTER @V305066 00841000 CLI SIX(R2),FF DEVADDR NOT SPEC IN DTF @VM03137 00842000 BNE IC SPECIFIED @V305066 00843000 CLI DTFTYP,SDTYPE DTFSD @VM03139 00844000 BE ACCEPTFF WILL GET SYSXXX FROM DOSCB @V305066 00845000 MVC SAVEFN,FOUR(R3) MOVE DTF TYPE FOR MSG @VM03137 00846000 LA R15,EIGHT LOG. UNIT UNASSIGNED @V305066 00847000 B BADOPEN BR TO PRINT MESSAGE @V305066 00848000 ACCEPTFF BR R6 RETURN @V305066 00849000 IC IC R5,SEVEN(R2) LOG UNIT CLASS FROM DTF @VM03137 00850000 TM SIX(R2),HEX01 PROGRAMMER LOGICAL UNIT ? @VM03137 00851000 BNO DOUBLE NO, MUST BE SYSTEM UNIT @V305066 00852000 AR R5,R4 INCREM BY NO SYSTEM LUBS @V305066 00853000 DOUBLE AR R5,R5 DOUBLE VALUE IN R3 @V305066 00854000 AH R5,LUBPT ADD LUB TABLE ADDRESS @V305066 00855000 * AT THIS TIME R5 POINTS TO LUB BYTE 00856000 BR R6 RETURN TO MAINLINE @V305066 00857000 GETPUB LH R4,PUBPT PUB ADDRESS @V305066 00858000 LR R1,R5 STORE PUB POINTER @V305066 00859000 SR R5,R5 CLEAR REGISTER @V305066 00860000 IC R5,0(R1) PUB INDEX CODE @V305066 00861000 SLL R5,THREE MULTIPLY BY LENGTH OF PUB @VM03137 00862000 AR R5,R4 ADD PUB ADDRESS @V305066 00863000 * AT THIS TIME R5 POINTS TO CORRECT PUB ENTRY 00864000 BR R6 RETURN TO MAINLINE @V305066 00865000 EJECT 00866000 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00867000 * * 00868000 * ROUTINE TO OPEN TAPE DATA FILES * 00869000 * * 00870000 * * 00871000 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00872000 SPACE 2 00873000 USING DTFMT,R2 TAPE DTF ADDRESSABILITY @V305066 00874000 TAPEDATA TM MTFLAG4,PHTAB DTFPH TABLE? @V305066 00875000 BNO ASCII NO, SEE IF ASCII SPECIFIED @V305066 00876000 LA R5,TYPEMT POINT TO DTF TYPE @V305066 00877000 B ERR88E BR TO PRINT MSG @V305066 00878000 ASCII TM MTFLAG0,ASC ASCII = YES SPECIFIED @V305066 00879000 BZ PUB NO, GO ON ... @V305066 00880000 MVC SAVEFN(SEVEN),MTFN FILENAME FOR MSG @VM03137 00881000 ERR11 LA R15,ELEVEN ERROR CODE = 11 @V305066 00882000 B BADOPEN BR TO PRINT MSG @V305066 00883000 PUB BAL R6,GETPUB GET PUB ENTRY @V305066 00884000 BAL R6,CRPLIST CREATE PLIST FOR TAPEIO REQUEST @V305066 00885000 USING PUBADR,R5 ESTABLISH PUB ADDRESSABILITY @V305066 00886000 MVZ TEMP,PUBDEVT MOVE PUB DEVICE CODE TO TEMP @V305066 00887000 CLI TEMP,FIFTY DEVICE TYPE = TAPE ? @V305066 00888000 BNE DEVERR NO, ERROR @V305066 00889000 CLI PUBDEVT,TCR TAPE CARTRIDGE READER? @VM03139 00890000 BE DEVERR IF TCR, INVALID DEVICE @V305066 00891000 TM MTFLAG3,BACKWARD DRIVE DIRECTION = BACKWARD ?@V305066 00892000 BNO CHKREWND NO, SEE IF NOREWIND SPECIFIED @V305066 00893000 LA R15,NINE READ TAPE BACKWARDS NOT SUPPORTED@V305066 00894000 B TAPEMSG GO PRINT ERROR MESSAGE @V305066 00895000 CHKREWND TM MTFLAG3,NOREWIND NOREWIND SPECIFIED ? @V305066 00896000 BO LABEL YES, DO NOT REWIND @V305066 00897000 MVC FUNC,REW REWIND TAPE @V305066 00898000 BAL R6,IOROUT PERFORM I/O @V305066 00899000 LABEL TM MTFLAG3,STDLABEL STD. LABEL TAPE? @V305066 00900000 BO STDLAB YES, BR TO STD LAB ROUT @V305066 00901000 TM MTFLAG3,NONSTD NONSTD LABEL TAPE ? @V305066 00902000 BO IOCONSTD YES, BR TO NONSTD ROUTINE @V305066 00903000 * UNLABELED FILE READING IN A FORWARD DIRECTION 00904000 NOLABEL MVC FUNC,SENSE PERFORM SENSE AND SAVE SENSE INFO@V305066 00905000 BAL R6,IOROUT PERFORM I/O @V305066 00906000 BAL R6,CHKMODE TAPE MODE COMPATIBLE WITH PUB @V305066 00907000 MVC SAVESENS(ONE),BUFF2 SAVE SENSE INFORMATION @VM03137 00908000 TM SAVESENS,HEX08 TAPE AT LOAD POINT ? @V305066 00909000 BO READIT YES, GO TO READ @V305066 00910000 TM MTFLAG4,FILETYPE INPUT FILE ? @V305066 00911000 BZ SVNTRACK IF NOT, BR AROUND READ AND BACKSP@V305066 00912000 READIT EQU * @VA13166 00913000 TM MTFLAG1,MTINP INPUT @VA13166 00913100 BZ ISLOADPT BRANCH IF OUTPUT @VA13166 00913200 MVC FUNC,READ READ @VA13166 00913300 LA R3,INOUT IF TM ON NEXT IO, GO HERE @V305066 00914000 BAL R6,IO PERFORM IO @V305066 00915000 MVC FUNC,REW REWIND TAPE @V305066 00918000 TM SAVESENS,HEX08 TAPE AT LOADPT BEFORE READING @V305066 00919000 BO SKPBSR YES @V305066 00920000 MVC FUNC,BSR BACKSPACE ONE RECORD @V305066 00921000 SKPBSR BAL R6,IOROUT CALL SUBROUTINE @VM03141 00922000 ISITOPEN TM MTFLAG4,MTOPEN IS FILE OPEN ? @V305066 00923000 BZ SETOPEN NO @V305066 00924000 OI MTFLAG4,ENDFILE SET EOF SWITCH ON @V305066 00925000 NI Q88(R7),FB RESET FIRST TIME SWITCH @VM03137 00926000 SVC SVC11 RETURN TO PROBLEM PROGRAM @V305066 00927000 SETOPEN OI MTFLAG4,MTOPEN INDICATE FILE IS OPEN @V305066 00928000 B CHMOR ANYMORE FILES TO OPEN ? @V305066 00929000 CRPLIST MVC PLIST(EIGHT),TAPEIO PREPARE PLIST FOR TAPEIO @VM03137 00930000 MVC DEVID(THREE),TAPEIO MOVE 'TAP' TO PLIST @VM03137 00931000 MVC DEVID+3(ONE),PUBCUU+1 SECOND DIGIT OF CUU IN PUB@VM03137 00932000 OI DEVID+3,CHAR0 CHANGE SEC DIGIT CUU TO CHAR @V305066 00933000 LA R3,BUFFER BUFFER ADDRESS @V305066 00934000 ST R3,PMODE STORE BUFFER ADDRESS IN PLIST @V305066 00935000 MVC BUFFLEN,EIGHTY BUFFER LEN = 80 @V305066 00936000 MVC PMODE,PUBTAPM1 CMS TAPE MODE TO PLIST @V305066 00937000 BR R6 RETURN TO CALLER. @VM03141 00938000 ISLOADPT TM SAVESENS,HEX08 TAPE AT LOAD POINT? @V305066 00939000 BZ NOTLDPT NO @V305066 00940000 DOREWIND MVC FUNC,REW REWIND TAPE @V305066 00941000 DOIO BAL R6,IOROUT PERFORM I/O @V305066 00942000 SVNTRACK TM SIX(R5),TRACK7 SEVEN TRACK TAPE ? @VM03137 00943000 BO SEV YES @V305066 00944000 MVC FUNC,WRITE WRITE ON TAPE TO SET TAPE MODE @V305066 00945000 BAL R6,IOROUT PERFORM I/O @V305066 00946000 BAL R6,BKSPACE PERFORM I/O @V305066 00947000 SEV TM MTFLAG3,TMOPT TAPE MARK OPTION SPECIFIED ? @V305066 00948000 BO ISITOPEN GO TO OPEN FILE @V305066 00949000 MVC FUNC,WTM WRITE TAPE MARK @V305066 00950000 BAL R6,IOROUT PERFORM I/O @V305066 00951000 B ISITOPEN GO TO OPEN FILE @V305066 00952000 NOTLDPT MVC FUNC,BSR BACKSPACE @V305066 00953000 B DOIO GO TO PERFORM BACKSPACE @V305066 00954000 INOUT TM MTFLAG1,MTINP INPUT FILE ? @V305066 00955000 BZ ISLOADPT NO @V305066 00956000 B ISITOPEN GO SEE IF FILE IS OPEN @VM03141 00957000 BKSPACE MVC FUNC,BSR BAKSPACE @V305066 00958000 SPACE 00959000 * SUBROUTINE TO CALL TAPEIO (R6 = RETURN-REGISTER): 00960000 IOROUT EQU * @V305066 00961000 LA R1,PLIST PREPARE TAPIO REQUEST @V305066 00962000 SVC SVC202 ISSUE SVC @VM03137 00963000 DC AL4(BADTAPIO) @V305066 00964000 BR R6 @V305066 00965000 BADTAPIO EQU * @V305066 00966000 CH R15,H8 WLR LONG? @VA03457 00967000 BNL ERRLONG TELL THEM @VA03457 00968000 CH R15,NOTATT TAPE NOT ATTACHED @V305066 00969000 BE ERR113S YES, ERROR @V305066 00970000 BH ERR43E TAPE FILE PROTECTED @V305066 00971000 CH R15,TM EOF OR END OF TAPE @V305066 00972000 BE ERR58E YES, ERROR @V305066 00973000 ERRLONG LA R15,SEVTEEN UNEXPECTED TAPE ERROR @VA03457 00974000 TAPEMSG MVC SAVEFN(FOUR),DEVID MOVE DEVID FOR ERROR MSG @VM03137 00975000 B BADOPEN BR TO PRINT ERROR MESSAGE @V305066 00976000 EJECT 00977000 IO LA R1,PLIST POINTER TO PLIST @V305066 00978000 SVC SVC202 IO REQUEST @VM03137 00979000 DC AL4(TAPEMARK) ERROR ADDRESS @V305066 00980000 BR R6 RETURN IF SUCCESSFUL IO @V305066 00981000 TAPEMARK CH R15,TM TAPE MARK ENCOUNTERED? @V305066 00982000 BCR 8,R3 RETURN IF TM ENCOUNTERED @V305066 00983000 B BADTAPIO OTHER TAPE ERRORS @V305066 00984000 EJECT 00985000 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00986000 * THIS ROUTINE PROCESSES NONSTD LABELED TAPES * 00987000 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00988000 SPACE 2 00989000 IOCONSTD TM MTFLAG4,FILETYPE I/P TAPE? @V305066 00990000 BNO NOLABEL OUTPUT, TREAT AS NOLABEL @V305066 00991000 TM MTFLAG3,USERENTY USER ENTRY? @V305066 00992000 BZ IOCOTMCK NO @V305066 00993000 * EXIT TO PROCESS USER LABELS 00994000 NI MTFLAG4,FF-UTILITY TURN OFF UTILITIES BIT @VM03137 00995000 BAL R6,USER GO TO USER LABEL ROUTINE @V305066 00996000 TM MTFLAG4,UTILITY IS UTILITIES BIT ON ? @V305066 00997000 BO ISITOPEN YES, SKIP CHECK FOR TM @V305066 00998000 IOCOTMCK MVC FUNC,FSR SKIP 1 BLOCK @V305066 00999000 LA R3,ISITOPEN IF TM ON NEXT IO, GO HERE @V305066 01000000 BAL R6,IO PERFORM IO @V305066 01001000 TM MTFLAG3,USERENTY USER ENTRY? @V305066 01002000 BZ IOCOTMCK NO @V305066 01003000 MVC FUNC,BSR BACKSPACE 1 BLOCK @V305066 01004000 BAL R6,IOROUT PERFORM IO @V305066 01005000 B ISITOPEN GO SEE IF FILE IS OPEN @V305066 01006000 IOCOULAB TM MTFLAG3,NONSTD NONSTD LABELS @V305066 01007000 BZ SEV NO @V305066 01008000 TM MTFLAG3,USERENTY USER ENTRY? @V305066 01009000 BNO SEV NO @V305066 01010000 BAL R6,USER GO TO USER @V305066 01011000 B SEV BRANCH. @VM03141 01012000 USER L R14,MTFLAG3 USER LABEL ADDRESS @V305066 01013000 LA R0,O CHARACTER 'O' IN R0 @V305066 01014000 LH R1,UNITMT LOGICAL UNIT @V305066 01015000 STM R2,R3,TEMPSAVE TEMP STORE R2,R3 @V305066 01016000 SVC SVC8 GO TEMP. TO USER ROUTINE @V305066 01017000 LM R2,R3,TEMPSAVE RESTORE REGISTERS ON RETURN @V305066 01018000 BR R6 RETURN TO CALLER. @VM03141 01019000 EJECT 01020000 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 01021000 * THIS ROUTINE PROCESSES STD LABEL TAPES FOR INPUT * 01022000 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 01023000 SPACE 2 01024000 STDLAB TM MTFLAG1,MTINP INPUT FILE ? @V305066 01025000 BZ NOLABEL NO, STDLAB O/P TREAT AS NOLAB @V305066 01026000 MVC FUNC,SENSE PREPARE TO DO SENSE @V305066 01027000 BAL R6,IOROUT PERFORM IO @V305066 01028000 TM BUFF2,LOADPT IF NOT AT LOADPT @V305066 01029000 MVC FUNC,READ PREPARE FOR READ @V305066 01030000 BZ READTAPE GO HERE @V305066 01031000 * VOLUME LABEL CHECKING 01032000 ATLOADPT LA R3,INOUT IF TM ON NEXT IO, TREAT NOLABEL @V305066 01033000 BAL R6,IO PERFORM IO @V305066 01034000 CLC BUFFER(FOUR),VOL1 VOL1 LABEL READ @VM03137 01035000 BNE ERR1 FILABL=STD BUT NO 'VOL1' @V305066 01036000 TM MTFLAG4,MTOPEN FILE ALREADY OPEN? @V305066 01037000 BO READTAPE YES @V305066 01038000 * HEADER LABEL CHECKING 01039000 READTAPE BAL R6,IOROUT PERFORM IO @V305066 01040000 CLC BUFFER(FOUR),VOL1 VOL1 LABEL READ? @VM03137 01041000 BE READTAPE YES @V305066 01042000 CLC BUFFER(THREE),UVL UVL LABEL READ @VM03137 01043000 BE READTAPE YES @V305066 01044000 CLC BUFFER(FOUR),HDR1 HEADER LABEL READ @VM03137 01045000 BNE ERR1 FILABL=STD BUT NO 'HDR1' @V305066 01046000 TM MTFLAG3,USERENTY USER ENTRY? @V305066 01047000 BZ SPACEFWD NO @V305066 01048000 READLABL LA R3,RESET IF TM ON NEXT IO, GO HERE @V305066 01049000 BAL R6,IO PERFORM IO @V305066 01050000 CLC BUFFER(THREE),HDR1 HDR LABEL READ @VM03137 01051000 BE READLABL READ AGAIN IF SO @V305066 01052000 * USER LABEEL CHECKING ROUTINE 01053000 LA R0,O CHARACTER 'O' IN R0 @V305066 01054000 LA R1,BUFFER BUFFER ADDRESS @V305066 01055000 STM R2,R3,TEMPSAVE STORE REGS TEMPORARILY @V305066 01056000 SVC SVC8 RETURN TEMP TO PROB PROG @V305066 01057000 LM R2,R3,TEMPSAVE RESTORE REGS ON RETURN @V305066 01058000 LTR R1,R1 IF USER IS NOT FINISHED, @V305066 01059000 BC 7,READLABL GO HERE @V305066 01060000 SPACEFWD MVC FUNC,FSF FORWARD SPACE PAST TM @V305066 01061000 BAL R6,IOROUT PERFORM IO @V305066 01062000 RESET XC DTFMT+40(FOUR),DTFMT+40 ZERO BLOCK COUNT @VM03137 01063000 TM MTFLAG4,MTOPEN FILE ALREADY OPEN @V305066 01064000 BZ SETOPEN NO @V305066 01065000 OI MTFLAG4,ENDFILE SET EOF BIT ON @VA04418 01066000 LR R1,R9 POINT TO FREE AREA @VA04418 01067000 BAL R6,FREESTOR RELEASE ACQUIRED STORAGE @VA04418 01068000 LH R14,PIBPT PIB ADDRESS @V305066 01069000 L R14,EIGHT(,R14) GET SAVEAREA OF PP @VM03188 01070000 MVC 40(FOUR,R14),MTFLAG0 REG15 HAS MODULE ADDRESS @VM03137 01071000 SVC SVC11 RETURN TO PROBLEM PROGRAM @V305066 01072000 ERR1 MVC SAVEFN(SEVEN),MTFN FILENAME FOR MSG @VM03137 01073000 LA R15,TWELVE ERROR CODE = 12 @V305066 01074000 B BADOPEN BRANCH. @VM03141 01075000 EJECT 01076000 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 01077000 * THE FOLLOWING ROUTINE VERIFIES THAT THE CHARACTERISTICS OF * 01078000 * THE TAPE DRIVE AGREE WITH WHAT HAS BEEN SPECIFIED IN THE * 01079000 * PUB ENTRY BY THE ASSGN COMMAND. IF THE TAPE DRIVE IS 7TRACK, * 01080000 * THE 7TRACK INDICATOR IN THE PUB ENTRY MUST BE PRESENT. * 01081000 * IF THE TAPE DRIVE IS 9TRACK, THE FOLLOWING CHECKS ARE * 01082000 * PERFORMED: * 01083000 * * 01084000 * 1. IF 2400 SERIES TAPE DRIVE (6 SENSE BYTES READ BY SENSE * 01085000 * OPERATION), THE PUB DENSITY MUST BE EITHER 800 0R 1600 * 01086000 * BPI. * 01087000 * * 01088000 * 2. IF 3420 OR 3803 SERIES TAPE DRIVE (24 SENSE BYTES READ * 01089000 * BY SENSE OPERATION), AND INPUT FILE, THE PUB DENSITY * 01090000 * MUST AGREE WITH THE TAPE DRIVE. * 01091000 * * 01092000 * A. IF MODELS 4,6, OR 8, DENSITY MUST BE 1600 BPI * 01093000 * (C0 DOS MODE IN PUB) OR 6250 BPI (D0 DOS MODE IN * 01094000 * PUB) DEPENDING UPON WHAT IS SPECIFIED IN THE SENSE* 01095000 * INFORMATION. * 01096000 * * 01097000 * B. IF MODELS 3,5, OR 7, DENSITY MUST BE 1600 (C0 DOS * 01098000 * MODE IN PUB) OR 800 BPI (C0 DOS MODE IN PUB IF * 01099000 * SINGLE DENSITY DRIVE OR C8 DOS MODE IF DUAL * 01100000 * DENSITY DRIVE) DEPENDING UPON WHAT IS SPECIFIED IN* 01101000 * THE SENSE INFORMATION. * 01102000 * * 01103000 * 4. IF 3420 OR 3803 SERIES TAPE DRIVE AND OUTPUT FILE, * 01104000 * AND DUAL DENSITY BIT IS ON IN THE SENSE INFORMATION, * 01105000 * DENSITY MUST BE ONE OF THE APPROPRIATE DENSITIES * 01106000 * ASSOCIATED WITH THE MODEL TYPES. * 01107000 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 01108000 SPACE 2 01109000 CHKMODE EQU * @V305066 01110000 TM PUBTAP7,TRACK7 PUB ENTRY FOR 7TRACK ? @V305066 01111000 BO TRK7 YES, TAPE DRIVE MUST BE 7TRK @V305066 01112000 * NINE TRACK VERIFICATION FOLLOWS 01113000 TM BUFF2,TAP7 DOES SENSE INFOR IND 7TRK @VM03139 01114000 BNO PUBMODE IF NOT 7TRK, VERIFY DENSITY DATA @V305066 01115000 INCOMP LA R15,THIRTEEN PUB INCOMPATIBLE WITH TAPE DRIVE @V305066 01116000 B TAPEMSG GO TO PRINT TAPE ERROR MESSAGE @V305066 01117000 * TAPE DATA FILES 01118000 PUBMODE CLI PUBTAPM2,DEN ANY DEN PARM WHEN ASSIGNED @V305066 01119000 BNE CHK2400 YES, VERIFY SENSE AND PUB @V305066 01120000 BR R6 DON'T COMPARE, JUST CONTINUE @V305066 01121000 CHK2400 LA R4,SIX 6 SENSE BYTES FOR 2400 UNIT @V305066 01122000 C R4,BYTES COMP NO. SENSE BYTES READ TO 6 @V305066 01123000 BL CHK3420 IF MORE THAN 6, MUST BE 3420 @V305066 01124000 DT3411 TM BUFF4,BPI1600 @VA14961 01125000 BNO PUB800 NO, SEE IF PUB INDICATES 800 BPI @V305066 01126000 CLI PUBTAPM2,P1600 1600 BPI DEN IN PUB @V305066 01127000 BNE CHKC8 IF DUAL DENSITY, COULD BE 800 @V305066 01128000 BR R6 1600 BPI @V305066 01129000 PUB800 CLI PUBTAPM2,SING800 SENSE-800, C0 IN PUB SINGLE @V305066 01130000 BNE CHKC8 NOT 800 BPI SINGLE DENSITY @V305066 01131000 BR R6 @V305066 01132000 CHKC8 CLI PUBTAPM2,DUAL800 800 BPI DUAL DENSITY @V305066 01133000 BNE INCOMP IF 2400, EITHER C0 OR C8 @V305066 01134000 BR R6 RETURN TO CALLER. @VM03141 01135000 CHK3420 LA R4,NINE @VA14961 01136250 C R4,BYTES D/T3410/3411? @VA14961 01136500 BE DT3411 BR IF YES @VA14961 01136750 BO MOD468 3420 MODEL 8 @V305066 01137000 TM BUFF7,MODEL6 3420 MODEL 6 @V305066 01138000 BO MOD468 3420 MODEL 6 @V305066 01139000 TM BUFF7,MODEL4 3420 MODEL 4 @V305066 01140000 BO MOD468 3420 MODEL 4 @V305066 01141000 TM BUFF7,MODEL7 3420 MODEL 7 @V305066 01142000 BO MOD357 3420 MODEL 7 @V305066 01143000 TM BUFF7,MODEL5 3420 MODEL 5 @V305066 01144000 BO MOD357 3420 MODEL 5 @V305066 01145000 TM BUFF7,MODEL3 3420 MODEL 3 @V305066 01146000 BO MOD357 3420 MODEL 3 @V305066 01147000 B BADMODEL IF NONE OF THE ABOVE - BAD MODEL @V305066 01148000 MOD468 MVI MOD468SW,ON IND. MODELS 4, 6, OR 8 @V305066 01149000 TM BUFF7,BPI6250 CHK TAPE DEN FROM SENSE INFO@V305066 01150000 BO PUB6250 6250 BPI - CHECK PUB @V305066 01151000 B PUB1600 1600 BPI - CHECK PUB @V305066 01152000 MOD357 MVI MOD357SW,ON IND. MODELS 3, 5, OR 7 @V305066 01153000 TM BUFF7,BPI800 CHK TAPE DENS FROM SENSE @V305066 01154000 BO PUB800A 800 BPI - CHECK PUB @V305066 01155000 B PUB1600 1600 BPI - CHECK PUB @V305066 01156000 PUB800A TM BUFF7,DUAL DUAL DEN DRIVE @V305066 01157000 BO DUALDEN YES @V305066 01158000 CLI PUBTAPM2,SING800 SENSE 800, C0 800 SING. @V305066 01159000 BNE INCOMP ERROR, NOT DUAL DENSITY @V305066 01160000 BR R6 RETURN TO MAINLINE @V305066 01161000 DUALDEN TM MTFLAG1,MTINP INPUT FILE @V305066 01162000 BO ISIT800 DENSITY = 800 @V305066 01163000 CLI PUBTAPM2,DUAL800 800 DUAL DENSITY @V305066 01164000 BNE CHK1600 NO, THEN IS IT 1600 @V305066 01165000 BR R6 RETURN TO CALLER. @VM03141 01166000 CHK1600 CLI PUBTAPM2,P1600 1600 BPI @V305066 01167000 BNE INCOMP ERROR IF NEITHER 800 0R 1600 @V305066 01168000 BR R6 RETURN TO CALLER. @VM03141 01169000 ISIT800 CLI PUBTAPM2,DUAL800 800 DUAL DENSITY @V305066 01170000 BNE INCOMP NO, ERROR @V305066 01171000 BR R6 RETURN TO CALLER. @VM03141 01172000 BADMODEL LA R15,FOURTEEN INVALID TAPE MODEL NUMBER @V305066 01173000 B TAPEMSG GO TO PRINT TAPE ERROR MESSAGE @V305066 01174000 PUB6250 CLI PUBTAPM2,DEN6250 6250 BPI IN PUB @V305066 01175000 BNE IPOP2 NO @V305066 01176000 BR R6 RETURN TO CALLER. @VM03141 01177000 IPOP2 CLI TYPEMT,MTWORK WORKFILE? @V305066 01178000 BE IPOP2A ELIM INP CHK, OPEN WORK FOR O/P @V305066 01179000 TM MTFLAG1,MTINP INPUT FILE ? @V305066 01180000 BO INCOMP YES, MUST BE SPECIFIC DENSITY @V305066 01181000 IPOP2A TM BUFF7,DUAL DUAL DEN DRIVE @V305066 01182000 BNO INCOMP NO, MUST BE SPECIFIC DENSITY @V305066 01183000 CLI PUBTAPM2,P1600 1600 BPI @V305066 01184000 BNE INCOMP NO, ERROR @V305066 01185000 BR R6 @V305066 01186000 IPOP1 CLI TYPEMT,MTWORK TAPE WORKFILE @V305066 01187000 BE IPOP1A ELIM INP CHK, OPEN WORK FOR O/P @V305066 01188000 TM MTFLAG1,MTINP INPUT FILE ? @V305066 01189000 BO INCOMP YES, MUST BE SPECIFIC DENSITY @V305066 01190000 IPOP1A CLI MOD468SW,ON 3420 MODEL 4, 6, OR 8 @V305066 01191000 BE CHKDUAL YES, GO LOOK FOR DUAL DENSITY @V305066 01192000 CLI MOD357SW,ON 3420 MODEL 3, 5, OR 7 @V305066 01193000 BE CHKDUAL2 YES, GO LOOK FOR DUAL DENSITY @V305066 01194000 B INCOMP ERROR @V305066 01195000 CHKDUAL TM BUFF7,DUAL DUAL DENSITY DRIVE @V305066 01196000 BNO INCOMP NO @V305066 01197000 CLI PUBTAPM2,DEN6250 6250 BPI @V305066 01198000 BNE INCOMP NO, ERROR @V305066 01199000 BR R6 RETURN TO CALLER. @VM03141 01200000 CHKDUAL2 TM BUFF7,DUAL DUAL DENSITY DRIVE @V305066 01201000 BNO INCOMP NO, ERROR @V305066 01202000 CLI PUBTAPM2,SING800 800 BPI SINGLE DENSITY @V305066 01203000 BNE CHKC8A NO, SEE IF 800 DUAL DENSITY @V305066 01204000 BR R6 RETURN TO CALLER. @VM03141 01205000 CHKC8A CLI PUBTAPM2,DUAL800 800 BPI DUAL DEN @V305066 01206000 BNE INCOMP NO, ERROR @V305066 01207000 BR R6 RETURN TO CALLER. @VM03141 01208000 PUB1600 CLI PUBTAPM2,P1600 1600 BPI @V305066 01209000 BNE IPOP1 CHECK FOR DUAL DENSITY, IF O/P @V305066 01210000 BR R6 RETURN TO CALLER. @VM03141 01211000 TRK7 TM BUFF2,SEVTRK SEVEN TRACK @V305066 01212000 BNO INCOMP NO, INCOMPATIBLE @V305066 01213000 BR R6 RETURN TO CALLER. @VM03141 01214000 EJECT 01215000 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 01216000 * * 01217000 * ROUTINE TO OPEN TAPE WORK FILES * 01218000 * * 01219000 * * 01220000 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 01221000 SPACE 2 01222000 TAPEWK EQU * OPEN TAPE WORK FILES: @VM03141 01223000 BAL R6,GETPUB LOCATE PUB ENTRY @V305066 01224000 MVZ TEMP,PUBDEVT MOVE PUB DEVICE CODE TO TEMP @V305066 01225000 CLI TEMP,FIFTY DEVICE = TAPE ? @V305066 01226000 BNE DEVERR NO, ERROR @V305066 01227000 CLI PUBDEVT,TCR TAPE CARTRIDGE READER @V305066 01228000 BE DEVERR IF TCR - INVALID DEVICE @V305066 01229000 BOMT06 BAL R6,CRPLIST CREATE PLIST FOR TAPEIO REQUEST @V305066 01230000 TM MTFLAG1,WKNORWD NOREWIND SPECIFIED ? @V305066 01231000 BO NREWIND YES, SKIP REWIND INSTR. @V305066 01232000 YESREWND EQU * @V305066 01233000 MVC FUNC,REW REWIND @V305066 01234000 BAL R6,IOROUT PERFORM I/O @V305066 01235000 NREWIND MVC FUNC,SENSE SENSE @V305066 01236000 BAL R6,IOROUT PERFORM I/O @V305066 01237000 BAL R6,CHKMODE SENSE INFO COMPATIBLE WITH PUB @V305066 01238000 TM BUFF2,HEX08 TAPE AT LOAD POINT? @V305066 01239000 BZ CONT NO @V305066 01240000 TM SIX(R5),TRACK7 7-TRACK TAPE ? @VM03137 01241000 BO CONT YES @V305066 01242000 ******* 9-TRACK TAPE PROCESSING 01243000 MVC FUNC,READ READ @V305066 01244000 LA R3,SENSEOP IF TM ON NEXT IO, GO HERE @V305066 01245000 BAL R6,IO PERFORM IO @V305066 01246000 SENSEOP MVC FUNC,SENSE SENSE @V305066 01247000 BAL R6,IOROUT PERFORM I/O @V305066 01248000 MVC FUNC,BSR BACKSPACE RECORD @V305066 01249000 LA R3,DETDEN IF TM ON NEXT IO, GO HERE @V305066 01250000 BAL R6,IO PERFORM IO @V305066 01251000 ***** X'04' IN BUFFER + 3 INDICATES 1600 BPI (ON) OR 800 BPI (OFF) 01252000 ***** X'08' IN PUB + 5 INDICATES 800 BPI ON DUAL DENSITY DRIVE 01253000 DETDEN TM BUFF4,HEX04 1600 BPI @V305066 01254000 BZ VOL800 NO, MUST BE 800 @V305066 01255000 TM PUBTAPM2,HEX08 DUAL DENSITY DRIVE ? @V305066 01256000 BZ CONT NO @V305066 01257000 B NVOLON BRANCH. @VM03141 01258000 VOL800 TM PUBTAPM2,HEX08 DUAL DENSITY DRIVE @V305066 01259000 BO CONT YES @V305066 01260000 NVOLON OI MTFLAG0,NEWVOL TURN NEW VOL SW ON @V305066 01261000 CONT MVC FUNC,READ READ @V305066 01262000 LA R3,CHMOR IF TM ON NEXT IO, GO HERE @V305066 01263000 BAL R6,IO PERFORM IO @V305066 01264000 CLC BUFFER(FOUR),VOL1 VOL1 LABEL @VM03137 01265000 BNE BSPREC NO, BSR AND WTM @V305066 01266000 LA R3,REWWTM GO HERE IF TM ON NEXT IO @V305066 01267000 SPACE 2 01268000 * UNDER DOS/VS, IF NO HDR1 IS ENCOUNTERED OR IF HDR1 RECORD DOES 01269000 * NOT CONTAIN BLANKS OR ZEROS, DOS WRITES THE HDR1 LABEL AND WRITES 01270000 * A TAPEMARK. SINCE CMSDOS DOES NOT SUPPORT WRITING STANDARD LABEL 01271000 * TAPES, WHEN THIS CONDITION IS ENCOUNTERED, THE TAPE WILL BE 01272000 * REWOUND AND A TAPEMARK WRITTEN. THIS MUST BE AN OUTPUT FILE. 01273000 SPACE 2 01274000 RDAGAIN BAL R6,IO READ NEXT RECORD @V305066 01275000 CLC BUFFER(FOUR),VOL1 ANOTHER VOL1 ENCOUNTERED @VM03137 01276000 BE RDAGAIN YES, SKIP ALL VOL1 LABELS @V305066 01277000 CLC BUFFER(FOUR),HDR1 HDR1 LABEL @VM03137 01278000 BNE REWWTM REWIND AND WRITE TM @V305066 01279000 CLI BUFFER+4,HDR00 ZEROS IN HDR RECORD @V305066 01280000 BNE ISBLANK NO, CHECK FOR BLANKS @V305066 01281000 CLC BUFFER+4(Q75),BUFFER+5 ZEROS ? @VM03137 01282000 BE SKIP YES, NO EXPIRATION DATE @V305066 01283000 ISBLANK CLC BUFFER+4(Q76),BLANKS HDR RECORD CONTAIN BLANKS @VM03137 01284000 BNE REWWTM NO, MUST CONTAIN EXP DATE @V305066 01285000 SKIP LA R3,CHMOR GO HERE IF TM ON NEXT IO @V305066 01286000 BAL R6,IO PERFORM READ @V305066 01287000 B CHMOR FINISHED WITH THIS DTF @V305066 01288000 REWWTM MVC FUNC,REW REWIND TAPE @V305066 01289000 BAL R6,IOROUT PERFORM REWIND IO @V305066 01290000 MVC FUNC,WTM WRITE TM @V305066 01291000 BAL R6,IOROUT PERFORM WRITE TM IO @V305066 01292000 B CHMOR FINISHED OPENING DTF @V305066 01293000 BSPREC MVC FUNC,BSR BACKSPACE ONE RECORD @V305066 01294000 BAL R6,IOROUT PERFORM I/O @V305066 01295000 MVC FUNC,WTM WRITE TAPE MARK @V305066 01296000 BAL R6,IOROUT PERFORM I/O @V305066 01297000 B CHMOR ANY MORE FILES TO OPEN ? @V305066 01298000 EJECT 01299000 USING DTFSD,R2 ESTABLISH ADDRESSABILITY @V305066 01300000 USING DOSSECT,R3 @V305066 01301000 DISK EQU * PROCESSING FOR SEQ.DISK FILES @V305066 01302000 BAL R6,GETDOSCB FIND MATCHING DOSCB @V305066 01303000 CLI SIX(R2),FF DEVADDR MISSING FROM DTF? @VM03137 01304000 BE CHECK1 YES, SEE IF SYSXXX IN DOSCB @V305066 01305000 CLC DOSYSXXX(TWO),UNITSD DTB SYSXXX = DOSCB SYSXXX? @VM03137 01306000 BNE CHECK1 NO, DOSCB SYSXXX OVERRIDES @V305066 01307000 BAL R6,GETLUB SEE IF SYSXXX ASSIGNED @V305066 01308000 CHKASSGN CLI 0(R5),FE LOG UNIT ASSIGNED @V305066 01309000 BH ASGNERR ERROR IF UNASSIGNED @V305066 01310000 MVC SAVEFN(SEVEN),FILESD MOVE DISK FN TO SAVEFN @VA04418 01311000 TM SDFLAG1,SDWORK DTFSD WORK FILE? @V305066 01312000 BO PUB3 DO NOT LOAD IOREG @V305066 01313000 TM SDFLAG1,INPSD INPUT FILE? @V305066 01314000 BO PUB3 DO NOT LOAD IOREG @V305066 01315000 SR R4,R4 CLEAR REGISTER 4 @V305066 01316000 IC R4,IOREGSD+1 2ND BYTE OF LOAD/NOP INST @V305066 01317000 SRA R4,FOUR CLEAR X2 PART OF OPERAND @VM03137 01318000 BC 8,PUB3 DO NOT LOAD IOREG @V305066 01319000 SH R4,CONNINE SUBTRACE 9 FROM REG NO. @V305066 01320000 BC 11,SFREG2 BR IF RESULT IF NOT NEG. @V305066 01321000 LA R4,SIXTEEN(,R4) ADD DISP FOR REG 0-8 @VM03137 01322000 SFREG2 SLL R4,TWO MULT BY 4, 4 BYTES PER REG @VM03137 01323000 LH R8,PIBPT PIB POINTER @V305066 01324000 L R8,EIGHT(,R8) PTR TO SAVEAREA ADD @VM03137 01325000 LA R8,SIXTEEN(,R8) POINT TO REG SAVEAREA @VM03137 01326000 AR R8,R4 DISP + SAVEAREA ADDRESS @V305066 01327000 SR R4,R4 CLEAR REGISTER @V305066 01328000 IC R4,IOREGSD+3 RLTV ADD OF PTR TO IOAREA @V305066 01329000 L R4,DTFSD(R4) IOAREA ADDRESS @V305066 01330000 ST R4,0(,R8) STORE IN REGISTER SAVEAREA @V305066 01331000 PUB3 CLI 0(R5),FE LOG UNIT ASSIGNED 'IGN' @V305066 01332000 BE POSTSD YES, POST IGNORE BIT IN DTF @V305066 01333000 NI SIXTEEN(R2),FF-OPENIGN RESET OPEN IGN BIT @VM03137 01334000 BAL R6,GETPUB GET PUB ENTRY @V305066 01335000 USING PUBADR,R5 PUB ADDRESSABILITY @V305066 01336000 MVZ TEMP(ONE),PUBDEVT ZONE OF PUB DEVICE CODE @VM03137 01337000 CLI TEMP,SIXTY DISK DEVICE TYPE @V305066 01338000 BNE DISKERR NO @V305066 01339000 TM SDFLAG1,OPENSD FILE ALREADY OPEN ? @VA04643 01340000 BO SKIPVER YES, SKIP DEVTYPE CHECK @VA04643 01341000 BAL R6,VERIFY VER ADT @V305066 01342000 SKIPVER NI SDFLAG0,FF-TRKHOLD TRK HOLD OPT NOT ALLOWED @VA04643 01343000 TM SDFLAG1,SDWORK WORK FILE ? @V305066 01344000 BO WORK YES @V305066 01345000 TM SDFLAG1,INPSD INPUT FILE ? @V305066 01346000 BO OPEN YES, SEE IF FILE ALREADY OPEN @V305066 01347000 CHKCNTRL TM SDFLAG3,CNTRLSD CONTROL = YES SPECIFIED ? @V305066 01348000 BNO GO1 NO @V305066 01349000 TM SDFLAG0,SPANSD SPANNED PROCESSING @V305066 01350000 BO SPAN YES @V305066 01351000 TM SDFLAG3,FIXSD FIXED LENGTH RECORDS ? @V305066 01352000 BO FIXED YES @V305066 01353000 TM SDFLAG1,INPSD VAR OR UNDEF - IS IT INPUT ? @V305066 01354000 BNO UNDEFOUT NO, OUTPUT @V305066 01355000 CLI CCWB,THIRTY1 SEARCH ID EQ CCW OPCODE = X'31' @V305066 01356000 BE UPDYES IMPLIES UPDATE=YES ON DTF @V305066 01357000 B DOS2 VAR OR UNDEF, INP, NO UPDATE @V305066 01358000 UPDYES MVC DOS6SD,CCBAD VAR OR UNDEF, INP, UPDATE @V305066 01359000 B GO1 CONTINUE PROCESSING @V305066 01360000 UNDEFOUT TM SDFLAG3,UNDEFOP UNDEF O/P FILE ? @V305066 01361000 BO UNDEF YES { @V305066 01362000 B BOTH VAR, OUTPUT, CONTROL @V305066 01363000 UNDEF MVC DOS7SD,CCBAD UNDEF, OUTPUT,CONTROL @V305066 01364000 B GO1 CONTINUE PROCESSING @VM03141 01365000 FIXED EQU * STORE DOSCB ADD IN ALL DTF CCBS @V305066 01366000 TM SDFLAG1,INPSD FIXED INPUT FILE ? @V305066 01367000 BO FIXINP YES @V305066 01368000 DOS3 MVC DOS3SD,CCBAD OTHERWISE FIXED OUTPUT FILE @V305066 01369000 B GO1 CONTINUE PROCESSING @V305066 01370000 FIXINP TM SDFLAG1,SDBLOCK BLOCKED FILE ? @V305066 01371000 BNO GO1 NO @V305066 01372000 CLI CCWA,NINETY2 READ COUNT CCW OPCODE = X'92' @V305066 01373000 BE CHKCCWB IMPLIES TRUNCS=YES ON DTF @V305066 01374000 CLI CCWA,THIRTY1 NO TRUNCS, SRCH ID EQ CCW OPCODE @V305066 01375000 BE UPDONLY = X'31' IMPLIES UPDATE=YES @V305066 01376000 MVC DOS8SD,CCBAD UPDATE=NO, TRUNCS=NO @V305066 01377000 B GO1 CONTINUE PROCESSING @V305066 01378000 CHKCCWB CLI CCWB,THIRTY1 SEARCH ID EQ CCW OPCODE = X'31' @V305066 01379000 BE BOTH IMPLIES UPDATE=YES @V305066 01380000 DOS2 MVC DOS2SD,CCBAD JUST TRUNCS SPECIFIED @V305066 01381000 B GO1 CONTINUE PROCESSING @V305066 01382000 BOTH MVC DOS4SD,CCBAD FIXBLK,INP,UPDATE,TRUNC,CONTROL @V305066 01383000 B GO1 CONTINUE PROCESSING @VM03141 01384000 UPDONLY MVC DOS3SD,CCBAD UPDATE ONLY @V305066 01385000 B GO1 CONTINUE PROCESSING @V305066 01386000 DISKERR LA R15,SEVEN PUB DEVICE TYPE INCOMPATIBLE @V305066 01387000 B BADOPEN BR TO PRINT ERROR MSG @V305066 01388000 SPAN TM SDFLAG1,INPSD SPANNED INPUT FILE ? @V305066 01389000 BNO GO1 NO, CONTINUE PROCESSING @V305066 01390000 CLI CCWB,THIRTY1 SPANNED REC AND UPDATE = YES? @V305066 01391000 BNE DOS2 SPANNED,INP, NO UPDATE @V305066 01392000 MVC DOS6SD,CCBAD SPANNED, INP, UPDATE = YES @V305066 01393000 GO1 LH R6,BLKLESS1 BLOCK SIZE MINUS 1 @V305066 01394000 AH R6,KON1 INCREM BY 1 TO GET BLKSIZE @V305066 01395000 STH R6,DOSBLKSZ STORE BLKSIZE IN DOSCB @V305066 01396000 TM SDFLAG3,FIXSD RECFM = FIXED ? @V305066 01397000 BO FIXFORM YES @V305066 01398000 VARIABLE MVC DOSFORM(TWO),V VARIABLE/UNDEFINED @VM03137 01399000 TESTIP TM SDFLAG1,INPSD INPUT FILE ? @V305066 01400000 BO CONTINUE YES, GO PROCESS INPUT FILE @V305066 01401000 OUT XC RECTRKSD(ONE),RECTRKSD RECS/TRK = 0 FOR OP @VM03137 01402000 OUT2 LA R1,DOSDSMD-Q24 POINT TO FM FOR ADTLKP @VM03137 01403000 L R15,VCADTLKP PREPARE TO DO ADT LOOKUP @VM03093 01404000 BALR R14,R15 ... @V305066 01405000 BNZ ERR69E BR IF NOT FOUND @V305066 01406000 BAL R6,ADTCHECK SEE IF R/W CMS DISK @V305066 01407000 MVC DOSOP(EIGHT),ERASE ERASE FILE SINCE OUTPUT @VM03137 01408000 LA R1,DOSOP R1 POINTS TO PLIST @V305066 01409000 L R15,AERASE ADDRESS OF DMSERS @V305066 01410000 BALR R14,R15 BR TO ERASE FILE @V305066 01411000 LA R4,CC CONTROL FIELD TABLE @VM03139 01412000 BAL R6,GETCON GET APPROPRIATE CONTROL FIELD @V305066 01413000 XC SEARCHSD(FIVE),SEARCHSD DEFAULT SEARCH ARG TO 1 @VM03137 01414000 XC CCHHRSD(FIVE),CCHHRSD EXT LOW LIMIT AND REC NO. @VM03137 01415000 MVC CCHHSD,0(R4) SET UP EXT LIMIT TO MAX VALUE @V305066 01416000 OI SDFLAG1,OPENSD FILE IS NOW OPEN @V305066 01417000 MVI HHSD+1,LOWLIM0 LOWLIM TO 0FOR EXT TYPE 01 @V305066 01418000 MVI COMSD+2,TYPE00 EXT SEQ NO. LAST EXT OPENED @V305066 01419000 NI SDFLAG0,BF RESET SPECIAL OPEN IND. @V305066 01420000 OI COMSD,NOEXTSD NO MORE EXTENT IND. @V305066 01421000 B CHMOR ANYMORE FILES TO OPEN ? @V305066 01422000 FIXFORM TM SDFLAG1,INPSD INPUT FILE? @V305066 01423000 BO FIX INPUT @V305066 01424000 STH R6,TRKCAPSD+1 TRKCAP = BLKSIZE @V305066 01427000 B VARIABLE BR TO PUT VAR FLAG @V305066 01428000 FIX MVC DOSFORM(TWO),F FIXED @VM03137 01429000 B TESTIP BRANCH. @VM03141 01430000 POSTSD TM SDFLAG0,OPENIGN OPEN IGNORE POSTED @V305066 01431000 BZ POST NO, FIRST OPEN CALL @V305066 01432000 TM SDFLAG1,INPSD INPUT FILE? @V305066 01433000 BO RESETEOF YES, EXIT TO USER EOF ROUTINE @V305066 01434000 B EXIT IF OUTPUT,RETURN TO LIOCS MODULE @V305066 01435000 CHECK1 CLI DOSSYS,FF SYSXXX SPECIFIED IN DLBL? @V305066 01436000 BE ERR302E NO, ERROR @V305066 01437000 MVC UNITSD(TWO),DOSYSXXX OVERRIDE SYSXXX IN DTF @VM03137 01438000 BAL R6,GETLUB FIND PUB POINTER (LUB) @V305066 01439000 B CHKASSGN SEE IF ASSIGNED @V305066 01440000 EJECT 01441000 CONTINUE OI COMSD,LASTVOL IND LAST VOL OF DATA SET @V305066 01442000 XC DOSOP(EIGHT),DOSOP CLEAR DOSOP @VM03137 01443000 LA R1,DOSOP GET ADDR OF STATE PLIST @V305066 01444000 L R15,ASTATE CALL STATE @V305066 01445000 BALR R14,R15 @V305066 01446000 L R14,DOSOSFST GET OS FST ADDR @V305066 01447000 LTR R14,R14 IS IT ZERO? @V305066 01448000 BNZ OSDOS DOS DISK @V305066 01449000 CH R15,OSRDERR ERROR ACCESSING OS/DOS DISK? @V305066 01450000 BNL ACCERR ERROR ACCESSING OS/DOS DISK @V305066 01451000 LTR R15,R15 FILE FOUND? @V305066 01452000 BZ GETFST FILE HAS BEEN FOUND @V305066 01453000 STATERR LA R15,SIX FILE NOT FOUND @V305066 01454000 B BADOPEN BRANCH TO PRINT ERROR MESSAGE @V305066 01455000 ACCERR LA R15,FIFTEEN ERROR ACCESSING OS/DOS DISK @V305066 01456000 B BADOPEN GO PRINT ERROR MESSAGE @V305066 01457000 USING FSTSECT,R7 @V305066 01458000 GETFST L R7,DOSBUFF GET ADDR OF FST CMS IP FILE @V305066 01459000 LA R4,CC CONTROL FIELD TABLE @VA07181 01460000 BAL R6,GETCON FILL CONTROL FIELD IN DTF @V305066 01461000 CLI CPBYTE,THIRTY2 DTFCP @V305066 01462000 BE ZEROBYTE YES, CLEAR SWITCH @V305066 01463000 CLI CPBYTE,THIRTY3 DTFDI @V305066 01464000 BE ZEROBYTE YES, CLEAR SWITCH @V305066 01465000 MVI RECTRKSD,RECTRK1 RECS/TRK = 1 @V305066 01466000 NEXT1 MVC SEARCHSD(FIVE),REC SEARCH ARG= ITEM ON CMSFILE @VM03137 01467000 SR R4,R4 @V305066 01468000 SR R5,R5 @V305066 01469000 SR R6,R6 @V305066 01470000 IC R6,TRK NUMBER TRKS/CYL/DEVICE @V305066 01471000 ICM R5,M3,FSTIC NUMBER OF ITEMS ON CMS FILE @V305066 01472000 LA R5,ONE(,R5) INCREM NO. ITEMS BY 1 @VM03137 01473000 DR R4,R6 DIVIDE NO. ITEMS BY NO. TRKS/CYL @V305066 01474000 STH R5,CCHHSD STORE UPPER LIMIT CYL. @VA06293 01475000 STC R4,CCHHSD+3 STORE UPPER LIMIT HEAD @V305066 01476000 MVI HHSD+1,LOWLIM0 LOW LIM = 0 , SIM AS TYPE 1 EXT @V305066 01477000 MVC CCHHRSD(FIVE),SEARCHSD SRCH ARG BUCKET = LOWLIM @VM03137 01478000 NI COMSD,F7 RESET NEW VOL IND. @V305066 01479000 NI COMSD+1,HEX7F RESET 'BYPASSED EXT' IND. @V305066 01480000 MVC COMSD+2,DEFEXTSQ DEF EXT SEQ TO 0 FOR CMSFILE@V305066 01481000 OI COMSD,NOEXTSD SET NO MORE EXTS IND. @V305066 01482000 OI SDFLAG1,OPENSD FILE IS NOW OPEN @V305066 01483000 MVC DOSDSMD,FSTM MOVE MODE FROM FST TO DOSCB @V305066 01484000 B CHMOR MORE FILES TO OPEN ? @V305066 01485000 ZEROBYTE MVI CPBYTE,CLEAR CLEAR SWITCH @V305066 01486000 B NEXT1 RECS/TRK ALREADY IN DTF @V305066 01487000 USING OSFST,R14 @V305066 01488000 OSDOS LTR R15,R15 ANY ERRORS FROM STATE? @V305066 01489000 BNZ STATERR YES, DON'T OPEN @V305066 01490000 CLI CPBYTE2,SW2311 DEV CODE IN DTF=0, 2311 @V305066 01491000 MVI CPBYTE2,CLEAR CLEAR SW FOR NEXT TIME @V305066 01492000 BE BADDEV YES, ALSO UNACCEPTABLE @V305066 01493000 OI DOSINIT,DOS INDICATE DOS DISK IN DOSCB @V305066 01494000 LA R4,CC2 CONTROL FIELD TABLE @VM03139 01495000 BAL R6,GETCON @V305066 01496000 CLI CPBYTE,THIRTY2 DTFCP @V305066 01497000 BE NEXT3 YES, FILL IN RECS/TRK @V305066 01498000 CLI CPBYTE,THIRTY3 DTFDI @V305066 01499000 BNE RECSTRK DTFSD - CALC RECS/TRK @VM03148 01500000 NEXT3 MVI CPBYTE,CLEAR REINIT CP/DI BYTE @V305066 01501000 MVC RECTRKSD,FULSAV+1 RECS/TRK FOR DOS DISK @V305066 01502000 B NEXT2 PLACE EXTENT INFO IN DTF @VM03148 01503000 CALC30 LA R4,CON3330 POINT TO 3330 CONSTANTS @VM03148 01504000 B CALC GO TO CALC RECS/TRK @VM03148 01505000 CALC50 LA R4,CON3350 POINT TO 3350 CONSTANTS @V505098 01506000 B CALC GO TO CALC RECS/TRK @V505098 01507000 CALC14 LA R4,CON2314 POINT TO 2314 CONSTANTS @VM03148 01508000 B CALC GO TO CALC RECS/TRK @VM03148 01509000 RECSTRK CLC DOSFORM(2),F FIXED RECORDS @VM03148 01510000 BNE NEXT2 NO, SKIP CALC OF RECS/TRK @VM03148 01511000 CLI DEVSD,DEV2314 2314? @VM03148 01512000 BE CALC14 YES @VM03148 01513000 CLI DEVSD,DEV3330 3330? @VM03148 01514000 BE CALC30 YES @VM03148 01515000 CLI DEVSD,DEV333B 3330-11? @V505098 01516000 BE CALC30 YES @V505098 01517000 CLI DEVSD,DEV3350 3350? @V505098 01518000 BE CALC50 YES @V505098 01519000 LA R4,CON3340 POINT TO 3340 CONSTANTS @VM03148 01520000 CALC LH R6,0(R4) GET TOLERANCE FACTOR @VM03148 01521000 MH R6,DOSBLKSZ MULT BY BLOCKSIZE @VM03148 01522000 SRL R6,9 DIVIDE BY 512 @VM03148 01523000 AH R6,2(R4) ADD OVERHEAD CONSTANT @VM03148 01524000 LH R15,4(R4) GET TRACK CAPACITY @VM03148 01525000 SH R15,DOSBLKSZ SUBTRACT BLOCKSIZE @VM03148 01526000 LR R1,R14 SAVE R14 TEMPORARILY @VM03148 01527000 SR R14,R14 CLEAR REGISTER FOR DIVIDE @VM03148 01528000 DR R14,R6 DIVIDE @VM03148 01529000 AH R15,KON1 ADD ONE @VM03223 01530000 STH R15,FULSAV STORE TEMPORARILY @VM03148 01531000 MVC RECTRKSD,FULSAV+1 MOVE RECS/TRK TO DTF @VM03148 01532000 LR R14,R1 RESTORE R14 NOW @VM03148 01533000 NEXT2 SR R4,R4 CLEAR REGISTER @V305066 01534000 IC R4,OSFSTXNO NUMBER OF DATA EXTENTS ON DISK @V305066 01535000 LTR R4,R4 ANY ENTENTS? @V305066 01536000 BZ ERR5 NO EXTENTS PRESENT, ERROR @V305066 01537000 LA R1,ONE POINTER TO CURRENT EXT @V305066 01538000 LA R14,OSFSTXTN POINTER TO EXT INFO IN DOSCB @V305066 01539000 B EXTENTS GO FILL DTF WITH EXTENT INFO @V305066 01540000 ERR5 LA R15,FIVE NO EXTENTS PRESENT- ERROR @V305066 01541000 B BADOPEN BRANCH TO PRINT ERROR MESSAGE @V305066 01542000 USING EXTENT,R14 ESTABLISH DSECT ADDRESSABILITY @V305066 01543000 EXTENTS BCT R4,MORE DECREM NUMBER OF EXTENTS @V305066 01544000 OI COMSD,NOEXTSD IF NO MORE, POST IN DTF @V305066 01545000 XC DOSEXT(TWO),DOSEXT FILL DOSEXT AND EXTCOUNT @VM03137 01546000 * ZEROS 01547000 B PROCESS PROCESS THE EXTENT AT HAND @V305066 01548000 MORE STC R4,DOSEXT NUMBER EXTENTS LEFT IN DOSCB @V305066 01549000 STC R1,DOSEXTCT STORE IN DOSCB @V305066 01550000 PROCESS MVC SEARCHSD,EXTLOW LOWER EXTENT= SEARCH ARG @V305066 01551000 MVI RECSD,REC1 REC ON SEARCH ARG = 1 @V305066 01552000 MVC CCHHSD,EXTUP MOVE UPPER LIMIT FROM OSFST @V305066 01553000 MVI HHSD+1,LOWLIM0 LOHD = 0 IF DATA EXT TYPE 01 @V305066 01554000 CLI 0(R14),TYPE01 DATA EXT TYPE = 01 @V305066 01555000 BE DOWN2 YES @V305066 01556000 MVC HHSD+1(ONE),EXTLOW+3 IF SPLIT CYL - LOW HEAD LIM@VM03137 01557000 MVC CONSD+3(ONE),EXTUP+3 SPLIT CYL - UPHD TO CONT. @VM03137 01558000 * FLD 01559000 DOWN2 OI SDFLAG1,OPENSD FILE IS NOW OPEN @V305066 01560000 MVC CCHHRSD(FIVE),SEARCHSD INIT SRCH ARG BUCKET @VM03137 01561000 NI COMSD,F7 RESET NEW VOL IND. @V305066 01562000 NI COMSD+1,HEX7F RESET 'BYPASSED EXT' IND. OFF @V305066 01563000 MVC COMSD+2(ONE),EXTSEQ INIT EXTENT SEQ NO. @VM03137 01564000 USING OSFST,R14 ESTABLISH OSFST ADDRESSABILIY @V305066 01565000 L R14,DOSOSFST ADDRESS OF OSFST @V305066 01566000 MVC DOSDSMD,OSFSTFM MOVE FM TO DOSCB FROM OSFST @V305066 01567000 MVC DOSFORM,OSFSTRFM MOVE RECFM TO DOSCB FROM OSFST@V305066 01568000 B CHMOR ANY MORE FILES TO OPEN ? @VM03141 01569000 EJECT 01570000 OPEN TM SDFLAG1,OPENSD FILE ALREADY OPEN ? @V305066 01571000 BNO CHKCNTRL NO, FIRST TIME OPEN @V305066 01572000 ALLOPEN TM COMSD,NOEXTSD ANYMORE EXTENTS @V305066 01573000 BO TESTSW NO, TEST FOR END OF EXT SW @V305066 01574000 NI SDFLAG2,F7 TURN OFF SW @V305066 01575000 TM DTFSD+4,UNITEXC UNIT EXCEPTION - EOF @V305066 01576000 BZ NEXTXTNT GO GET NEXT EXTENT @V305066 01577000 USING BGCOM,R7 @V305066 01578000 RESETEOF NI DTFSD+4,FF-UNITEXC RESET UNIT EXCEPTION @VM03137 01579000 L R7,ASYSREF BGCOM ADDRESS @V305066 01580000 OI COMSD,EXITEOF SET SW TO EXIT TO EOF ROUT @V305066 01581000 LR R1,R9 POINT TO FREE AREA @VA04418 01582000 BAL R6,FREESTOR RELEASE ACQUIRED FREE STORAGE @VA04418 01583000 LH R14,PIBPT ADDRESS OF PIB TABLE @V305066 01584000 L R14,EIGHT(R14) AD CURRENT PSW SAVE AREA @VM03137 01585000 MVC 13(THREE,R14),EODSD EOF AD TO USER'S OLD PSW @VM03137 01586000 LOADWORK SVC SVC11 RETURN TO PROB. PROG. @V305066 01587000 TESTSW TM SDFLAG2,ENDEXT END OF EXT CONDITION? @V305066 01588000 BO LOADWORK EXIT TO MODULE TO READ LAST REC @V305066 01589000 B RESETEOF EOF EXIT @V305066 01590000 USING OSFST,R14 @V305066 01591000 NEXTXTNT SR R8,R8 CLEAR REGISTER @V305066 01592000 IC R8,DOSEXTCT POINTER TO NEXT EXTENT @V305066 01593000 LA R1,ONE(,R8) INCREM EXT POINTER BY 1 @VM03137 01594000 L R14,DOSOSFST POINTER TO OSFST @V305066 01595000 MH R8,H10 MULT BY LEN OF 1 EXT INFO @V305066 01596000 LA R14,OSFSTXTN PTR TO BEGIN EXT INFO IN DOSCB @V305066 01597000 AR R14,R8 INCREMENT TO RIGHT EXT INFO @V305066 01598000 SR R4,R4 CLEAR REGISTER @V305066 01599000 IC R4,DOSEXT NO. EXTENTS LEFT @V305066 01600000 B EXTENTS FILL DTF WITH EXT INFO @V305066 01601000 EJECT 01602000 VERIFY LA R1,DOSDSMD-Q24 POSITION I/P TO ADTLKP @VM03137 01603000 L R15,VCADTLKP PREPARE TO DO ADT LOOKUP @VM03093 01604000 BALR R14,R15 BRANCH @V305066 01605000 LTR R15,R15 SUCCESSFUL ? @V305066 01606000 BC 8,FOUNDIT YES @V305066 01607000 B ERR69E NO, ERROR @V305066 01608000 FOUNDIT MVC FULLWORD(FOUR),12(R1) SAVE NUCLEUS TABLE ADDRESS@VM03137 01609000 L R4,FULLWORD PLACE THIS ADDRESS IN REG. @V305066 01610000 LA R10,DISKTAB DISTINGUISH DEVICE TYPES @V305066 01611000 CLI THREE(R4),DEV3340 TABLE MATCH ADT DEV CODE - @VM03137 01612000 * 3340 01613000 BE TYP3340 YES - SEE WHAT TYPE OF 3340 @VM03137 01614000 LA R10,SIXTEEN(,R10) TWO TABLE ENTRIES FOR 2314 @VM03137 01615000 CLI 3(R4),TYP2314 DEV CODE = 2314 ? @VM03137 01616000 BE EQUAL YES @VM03137 01617000 LA R10,EIGHT(,R10) ENTRY FOR 3330 @V505098 01618000 CLI 3(R4),TYP3330 DEV CODE = 3350 ? @V505098 01619000 BE EQUAL YES @V505098 01620000 LA R10,EIGHT(R10) ENTRY FOR 3350 @V505098 01621000 CLI 3(R4),TYP3350 DEV CODE = 3350 ? @V505098 01622000 BE EQUAL YES @V505098 01623000 LA R10,EIGHT(R10) MUST BE 3330-11 @V505098 01624000 EQUAL CLI DEVSD,DEF2311 2311 DEF CODE IN DTF @V305066 01625000 BE EQUAL2 YES, GO SET SW @V305066 01626000 CLC 0(ONE,R10),DEVSD DTF DEV CODE MATCH PUB? @VM03137 01627000 BNE ISITWORK SEE IF WORKFILE @V305066 01628000 EQUAL3 MVC DEVSD,ONE(R10) MOVE DEV CODE TO DTF @VM03137 01629000 MVC DOS1SD,CCBAD STORE DOSCB ADDRESS IN DTF CCB @V305066 01630000 BR R6 @V305066 01631000 EQUAL2 OI CPBYTE2,SW2311 SET SW FOR LATER @V305066 01632000 B EQUAL3 BRANCH TO PUT CODE IN DTF @V305066 01633000 TYP3340 CLI PUBDEVT,DSK35MB 3340 35MB? @V305066 01634000 BE EQUAL YES @V305066 01635000 LA R10,EIGHT(,R10) INCREM TO NEXT TABLE ENTRY @VM03137 01636000 B EQUAL 70MB @V305066 01637000 ISITWORK TM SDFLAG1,SDWORK DTFSD WORKFILE ? @V305066 01638000 BO EQUAL3 YES, MODIFY DEVSD PER PUB @V305066 01639000 TM SDFLAG1,INPSD SD INPUT? @VA12559 01639250 BO EQUAL3 @VA12559 01639500 BZ EQUAL3 OUTPUT @VA12559 01639750 BADDEV LA R15,SEVEN INCOMP DEV TYPE @V305066 01640000 B BADOPEN BR TO DISPLAY ERROR MSG @V305066 01641000 EJECT 01642000 USING DTFSDW,R2 ESTABLISH ADDRESSABILIY @V305066 01643000 WORK MVC SDWCAP,TWO(R10) TRACK CAP COUNTER @VM03137 01644000 BAL R6,ADTCHECK SEE IF R/W CMS DISK? @V305066 01645000 MVC DOSFORM(TWO),V FIX VAR FLAG IN DOSCB @VM03137 01646000 CLC COMNAME,PLIOPT IS THIS THE PL/I COMPILER @VA07764 01647000 BNE TRACKCAP NO - TREAT AS USUAL @VA07764 01648000 MVC DOSFORM(TWO),F MAKE FILE FIXED SO COMPILER @VA07764 01649000 * WILL RUN MUCH FASTER 01650000 TRACKCAP MVC LOHDSDW(TWO),SIX(R10) LOHD AND UPHD FOR DEV TYPE@VM03137 01651000 MVC EXTUPLIM(FOUR),FOUR(R10) EXT UP LIM=MAX CCHH @VM03137 01652000 * FOR DEV 01653000 OI COMSDW,EXTOPENW INDICATE EXTENT OPENED @V305066 01654000 NI LOGMODSW,SWOFF SET LIOCS WORKFILE SW OFF @V305066 01655000 XC SRCHSDW(FIVE),SRCHSDW SEARCH ADDRESS AND REC = 0@VM03137 01656000 MVC CNTLIM(FIVE),REC LOW LIM AND REC TO COUNT AREA @VM03137 01657000 OI SDWFLAG1,OPENSDW WORK FILE IS OPEN @V305066 01658000 MVC DOSBLKSZ(TWO),LRECLSDW RECSIZE TO DOSCB @VM03137 01659000 B CHMOR ANY MORE FILES TO OPEN ? @V305066 01660000 SPACE 2 01661000 EJECT 01662000 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 01663000 * ROUTINE TO LOCATE APPROPRIATE DOSCB, IF ONE EXITS, AND TO * 01664000 * STORE THE DOSCB ADDRESS IN THE FIRST CCB IN THE DTF. IF * 01665000 * NO MATCHING DOSCB IS FOUND, AN ERROR MESSAGE IS ISSUED AND * 01666000 * THE OPEN ROUTINE TERMINATED. * 01667000 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 01668000 SPACE 2 01669000 USING DTFSD,R2 @V305066 01670000 GETDOSCB L R3,DOSFIRST LOCATE APPROPRIATE DOSCB @V305066 01671000 TEST LTR R3,R3 ANY DOSCBS ON DOSCB CHAIN ? @V305066 01672000 BNZ COMPDD YES, GO LOOK FOR RIGHT DOSCB @V305066 01673000 MVC SAVEFN(SEVEN),FILESD MOVE DISK FN TO SAVEFN @VA04418 01674000 LA R15,THREE CODE = 3 NO DOSCBS PRESENT @V305066 01675000 B BADOPEN BRANCH TO PRINT ERROR MESSAGE @V305066 01676000 COMPDD CLC DOSDD(SEVEN),FILESD DDNAME IN DOSCB = FN IN @VM03137 01677000 * DTF ? 01678000 BE STOREAD STORE DOSCB ADDRESS @V305066 01679000 USING DTFSD,R2 @V305066 01680000 NEXT L R3,DOSNEXT CONTINUE TO SCAN DOSCB CHAIN @V305066 01681000 LA R3,0(,R3) ZERO HIGH ORDER BYTE @V305066 01682000 B TEST BRANCH @V305066 01683000 STOREAD ST R3,CCBAD STORE DOSCB ADDRESS @V305066 01684000 BR R6 RETURN @V305066 01685000 EJECT 01686000 USING ADTSECT,R1 ESTABLISH ADDRESSABILITY @V305066 01687000 ADTCHECK TM ADTFLG1,ADTFRO READ ONLY DISK ? @V305066 01688000 BO ERR37E CANNOT WRITE TO READ ONLY DISK @V305066 01689000 TM ADTFLG2,ADTFROS OS DISK ? @V305066 01690000 BO OSDOSDSK YES, INVALID TO WRITE TO OS DISK @V305066 01691000 TM ADTFLG2,ADTFDOS DOS DISK ? @V305066 01692000 BO OSDOSDSK YES, INVALID TO WRITE TO DOS DISK@V305066 01693000 BR R6 RETURN TO MAIN LINE @V305066 01694000 OSDOSDSK LA R15,TWO INVALID TO WRITE TO OS/DOS DISK @V305066 01695000 B BADOPEN BRANCH TO PRINT ERROR MESSAGE @V305066 01696000 EJECT 01697000 USING DTFCP,R2 ESTABLISH ADDRESSABILITY @V305066 01698000 CPORDI EQU * @V305066 01699000 TM CPFLAG0,ASC ASCII=YES SPECIFIED @V305066 01700000 BO ASCIIERR YES,ERROR @V305066 01701000 CLI TYPECP,THIRTY2 DISK SYSTEM TABLE ? @V305066 01702000 BNL DISKS YES @V305066 01703000 SPACE 2 01704000 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 01705000 * * 01706000 * * 01707000 * THIS ROUTINE PROCESSES DTF TYPE X'31' OR TAPE RESIDENT * 01708000 * SYSTEMS. THE DISK = PARAMETER HAS BEEN OMITTED FROM THE DTF * 01709000 * MACRO * 01710000 * * 01711000 * * 01712000 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 01713000 SPACE 2 01714000 USING TAPERES,R2 ESTABLISH ADDRESSABILITY @V305066 01715000 NI CCBSW,FB INITIALIZE SWITCH @V305066 01716000 BAL R6,GETLUB OBTAIN LUB @V305066 01717000 CLI 0(R5),FF LOGICAL UNIT UNASSIGNED ? @V305066 01718000 BNE CHKIGN EITHER IGNORE OR ASSIGNED @V305066 01719000 B ASGNERR BRANCH TO PRINT ERROR MESSAGE @V305066 01720000 CHKIGN CLI 0(R5),FE LOGICAL UNIT IGNORED ? @V305066 01721000 BE SETSW TREAT AS RDR IF IGNORED @V305066 01722000 BAL R6,GETPUB OBTAIN PUB @V305066 01723000 MVZ TEMP,PUBDEVT DEVICE TYPE CODE TO SAVE @V305066 01724000 CHKRDR2 CLI TEMP,READZONE READER @V305066 01725000 BE SETSW YES @V305066 01726000 CLI TEMP,TWENTY PUNCH ? @V305066 01727000 BNE CHKPTR2 NO GO SEE IF PRINTER @V305066 01728000 OI CPOPEN1,HEX08 PUNCH @V305066 01729000 TM PUBDEVT,PCH2540 2540/3525 PUNCH @V305066 01730000 BO P2540 YES @V305066 01731000 CLI PUBDEVT,PCH2520 2520 PUNCH @V305066 01732000 BE P2520 YES @V305066 01733000 B UNTRCP ALL OTHERS @V305066 01734000 P2520 OI CPFLAG8,LSTPCH SYSLST/SYSPCH @V305066 01735000 P2540 TM CPFLAG8,HEX40 SYSPCH TO 2540 @V305066 01736000 BZ UNTRCP NO @V305066 01737000 OI CPFLAG8,HEX20 2540 PUNCH @V305066 01738000 B UNTRCP BRANCH. @VM03141 01739000 SETSW OI CPOPEN1,READER INDICATE DEVICE IS READER @V305066 01740000 BAL R6,LDIORG2 @V305066 01741000 B CHMOR ANYMORE FILES TO OPEN ? @V305066 01742000 SPACE 2 01743000 CHKPTR2 CLI TEMP,FORTY X'40' - PRINTER @V305066 01744000 BNE CKMGTP IS IT TAPE ? @V305066 01745000 OI CPOPEN1,PRTIND PRINTER @V305066 01746000 CLI PUBDEVT,PRTUCS DOES PRINTER HAVE UCS @V305066 01747000 BL UNTRCP NO @V305066 01748000 LR R1,R2 R1 POINTS TO DTF CCB @V305066 01749000 MVC TEMPSAVE(THREE),TAPERES+9 SAVE CC @VM03137 01750000 LA R3,STMODCCW SET MODE CCW @V305066 01751000 ST R3,HOLD STORE TEMPORARILY @V305066 01752000 MVC TAPERES+9(THREE),HOLD+1 ADDR OF SET MODE CCW @VM03137 01753000 SVC EXCP ISSUE IO REQUEST @V305066 01754000 MVC TAPERES+9(THREE),TEMPSAVE REST ORIG CCW ADDR @VM03137 01755000 * TO CCB 01756000 B UNTRCP OPEN UNIT RECORD DTFS @V305066 01757000 CKMGTP CLI TEMP,FIFTY TAPE ? @V305066 01758000 BNE TAPERR TAPE ERROR @V305066 01759000 CLI PUBDEVT,TCR TAPE CARTRIDGE READER @V305066 01760000 BNE TAPEOK IF TCR, INVALID DEVICE @V305066 01761000 TAPERR MVC SAVEFN(SEVEN),CPFN1 MOVE FILENAME TO MSG SAVE @VM03137 01762000 * AREA 01763000 CODE7 LA R15,SEVEN OPEN TAPE, BUT PUB DEV TYPE INVAL@V305066 01764000 B BADOPEN BRANCH TO PRINT ERROR MESSAGE @V305066 01765000 TAPEOK BAL R6,CRPLIST CREATE TAPEIO PLIST @V305066 01766000 MVC FUNC,SENSE SENSE @V305066 01767000 BAL R6,IOROUT PERFORM SENSE @V305066 01768000 BAL R6,CHKMODE VERIFY DRIVE AGREES PUB MODE @V305066 01769000 CLI TAPERES+6,HEX01 PROGRAMMER LOGICAL UNIT @V305066 01770000 BE PROG YES, CONTINUE OPEN @V305066 01771000 BAL R6,SYSFILE SPECIAL PROCESSING FOR SYS FILES @V305066 01772000 BAL R4,SYSUNIT SYSIPT/SYSRDR @V305066 01773000 PROG OI CPOPEN1,DEVTAP DEV TYPE = X'01' TAPE @V305066 01774000 TM CPFLAG8,CPIN INPUT FILE ? @V305066 01775000 BO INITIAL2 @V305066 01776000 TM CPFLAG8,FORTY X'40' SYSLST/SYSPCH ASSIGNED @V305066 01777000 BZ INITIAL2 @V305066 01778000 OI CPFLAG8,HEX08 SYSLST/SYSPCH ON O/P TAPE @V305066 01779000 MVC CPFN1(EIGHT),MULTVOL VOL SWITCHING ROUTINE @VM03137 01780000 INITIAL2 LA R6,MGTPOP2 @V305066 01781000 LDIORG2 TM CPOPEN1,TWENTY TWO IOAREAS SUPPORTED @V305066 01782000 BCR 8,R6 YES @V305066 01783000 TM CPFLAG8,CPIN INPUT ? @V305066 01784000 BCR 1,R6 YES @V305066 01785000 LH R1,PIBPT POINTER TO PIB TABLE @V305066 01786000 L R1,EIGHT(R1) USER SAVEAREA ADDRESS @VM03137 01787000 LA R1,SIXTEEN(R1) R1 - REG SAVEAREA @VM03137 01788000 L R3,CPFLAG9 IOAREA2 ADDRESS @V305066 01789000 TM CPOPEN1,PRTPCH PRINT/PUNCH @V305066 01790000 BZ EXC BRANCH IF NEITHER @VM03141 01791000 BCTR R3,0 @V305066 01792000 EXC SR R4,R4 CLEAR REGISTER @V305066 01793000 IC R4,CPINST+1 IOREG NO. @V305066 01794000 SRL R4,FOUR GET IOREG NO. @VM03137 01795000 CH R4,CONNINE IOREG < 9 ? @V305066 01796000 BL LTNINE2 ES @V305066 01797000 SH R4,CONNINE DECREM IOREG BY 9 @V305066 01798000 B MPY2 CONTINUE SHORTLY BELOW @VM03141 01799000 LTNINE2 AH R4,H7 INCREMENT BY 7 @V305066 01800000 MPY2 SLL R4,TWO MULTIPLY BY 4 @VM03137 01801000 AR R1,R4 DISP + SAVE AREA ADDRESS @V305066 01802000 ST R3,0(R1) STORE R3 IN REG SAVE AREA @V305066 01803000 BR R6 @V305066 01804000 MGTPOP2 CLI TAPERES+6,HEX01 PROGRAMMER LOGICAL UNIT @V305066 01805000 BNE CHMOR IF SYS UNIT, DISCONTINUE OPEN @V305066 01806000 MVI CPTYPE1,CPTAP TAPE WORKFILE @V305066 01807000 TM CPFLAG8,CPIN INPUT ? @V305066 01808000 BO BOMT06 GO TO CALL OPEN FOR WORKFILES @V305066 01809000 OI CPOPEN1,HEX08 TAPE O/P FILE @V305066 01810000 B BOMT06 PROCESS AS TAPE WORKFILE @V305066 01811000 UNTRCP L R3,CPCCW0+4 RECORD COUNT FROM CCW @V305066 01812000 SH R3,KON1 DECREM BUFFER LENGTH BY 1 @V305066 01813000 ST R3,CPCCW0+4 STORE BACK IN CCW @V305066 01814000 PPRT L R3,CPCCW0 BUFFER ADDRESS IN CCW @V305066 01815000 AH R3,KON1 POINT TO SEC BYTE OF BUFFER @V305066 01816000 ST R3,CPCCW0 STORE BACK IN CCW @V305066 01817000 L R3,CPFLAG9 ALTERNATE I/O AREA ADDRESS @V305066 01818000 AH R3,KON1 POINT TO SEC BYTE OF ALT AREA @V305066 01819000 ST R3,CPFLAG9 STORE BACK IN DTF FIELD @V305066 01820000 OI CPFLAG8,IO2 2 IO AREAS @V305066 01821000 BAL R6,LDIORG2 @V305066 01822000 B CHMOR ANYMORE FILES TO OPEN ? @V305066 01823000 ASCIIERR MVC SAVEFN(SEVEN),CPFN1 FILENAME FOR MSG @VM03137 01824000 B ERR11 BR TO PRINT MSG @V305066 01825000 EJECT 01826000 USING DTFCP,R2 ESTABLISH ADDRESSABILIY @V305066 01827000 DISKS EQU * @VA04418 01828000 LUB BAL R6,GETLUB GET LUB ENTRY @V305066 01829000 CHKFFFE CLI 0(R5),FE LOG UNIT UNASSIGNED OR IGNORED ? @V305066 01830000 BL PUB1 NOT IGNORE OR UNASSIGN - GET PUB @V305066 01831000 BE RDRCI GO PROCESS AS READER FILE @V305066 01832000 B ASGNERR GO TO PRINT ERROR MESSAGE @V305066 01833000 PUB1 MVC SAVEFN(SEVEN),CPFN FILENAME @VA04418 01834000 BAL R6,GETPUB GET PUB ENTRY @VA04418 01835000 USING PUBADR,R5 ESTABLISH PUB ADDRESSABILITY @V305066 01836000 MVZ TEMP(ONE),PUBDEVT SAVE DEVICE TYPE ZONE BITS @VM03137 01837000 CLI TEMP,SIXTY DASD DEVICE ? @V305066 01838000 BE INDISC YES @V305066 01839000 TM CPDSK,FF IS DISK POSSIBLE WITH THIS DTF ? @V305066 01840000 BO CKRST NO @V305066 01841000 MVI CPDEVID+1,TYPE00 INDICATE NON-DISK DEVICE @V305066 01842000 LR R1,R2 PLACE DTF IN WORK REGISTER @V305066 01843000 LA R1,Q112(R2) INCREM BY 112 @VM03137 01844000 ST R1,CPCCW1 STORE UPD CCW IN CCB @V305066 01845000 TM CPFLAG5,CPIN INPUT FILE ? @V305066 01846000 BO INOM YES @V305066 01847000 MVC CPCCWI+1(SEVEN),CPCCWO+1 SET UP CCW FOR O/P IN @VM03137 01848000 * DTF 01849000 NI CPCCWI+4,B7 DECHAIN CCW @V305066 01850000 MVI CPCCWI,WRITEOP PUT WRITE COMMAND CODE IN CCW @V305066 01851000 B CKRST FIND DEVICE TYPE @V305066 01852000 INOM MVI CPCCWI,READOP PUT READ COMMAND IN CCW FOR IP @V305066 01853000 CKRST MVI CPFLAG4,OTHER X'F0' = OTHER THAN RDR/DASD DEV @V305066 01854000 CKRDR CLI TEMP,READZONE READER? @V305066 01855000 BE SETSW3 GO OPEN DTFCP READER FILE @V305066 01856000 CLI TEMP,TWENTY X'20' PUNCH @V305066 01857000 BNE CKPTR IF NOT SEE IF PRINTER @V305066 01858000 B PUNCH GO OPEN DTFCP PUNCH FILE @V305066 01859000 INDISC BAL R6,GETDOSCB GET DISK DOSCB @V305066 01860000 CLC DOSYSXXX(TWO),DTFCP+6 DTF SYSXXX = DOSCB SYSXXX?@VM03137 01861000 BNE OPENERR1 NO, ERROR ON DTFDI AND DTFCP @V305066 01862000 MVC DOSCB1,CCBAD MOVE DOSCB ADD TO CCB (DTF) @V305066 01863000 MVI CPDEVTY,TWENTY DISK DEVICE X'20' @V305066 01864000 OI CPFLAG1,HEX08 VERSION 2 DISK= YES INDICATOR @V305066 01865000 MVI CPFLAG4,DASD X'F3' DASD @V305066 01866000 MVC DOSBLKSZ(TWO),CPDATLEN LRECL TO DOSCB FOR CP @VM03137 01867000 * OR DI 01868000 MVC DOSFORM(TWO),F DTFCP FIXED UNBLOCKED @VM03137 01869000 CLI TYPECP,THIRTY3 DTFDI @V305066 01870000 BNE CPCONT NO, CONTINUE @V305066 01871000 BAL R6,SLIBIT TURN OFF SLIBIT @V305066 01872000 CPCONT CLI PUBDEVT,DSK2314 2314/2319 @V305066 01873000 BE INIT14 YES @V305066 01874000 CLI PUBDEVT,DSK3330 3330 @V305066 01875000 BE INIT30 YES @V305066 01876000 CLI PUBDEVT,DSK333B 3330-11 @V505098 01877000 BE INIT3B YES @V505098 01878000 CLI PUBDEVT,DSK3350 3350 @V505098 01879000 BE INIT50 YES @V505098 01880000 MVI CPDEV,HEX00 MOVE 3340 DEV CODE TO DTF @V305066 01881000 MVN CPDEV,PUBDEVT SET CORRECT DEV. CODE @V305066 01882000 LA R8,CON3340 POINT TO 3340 CONSTANTS @V305066 01883000 COMPUTE TM CPFLAG5,CPIN INPUT FILE? @V305066 01884000 BO INPCP YES @V305066 01885000 MVI CPRECS,RECTRK1 DEF RECS/TRK TO CMS DISK @V305066 01886000 B SYSO CONTINUE OPEN @V305066 01887000 OPENERR1 LA R15,ONE NO MATCHING SYSXXX @V305066 01888000 B BADOPEN BR TO PRINT ERROR MESSAGE @V305066 01889000 SPACE 2 01890000 * COMPUTE NUMBER OF RECORDS PER TRACK 01891000 * FOR 2314 USE FORMULA: 01892000 * L+(7294-RECSIZE)/(101+(534*RECSIZE)/512) 01893000 * FOR 3330 USE FORMULA: 01894000 * L+(13030-RECISZE)/(135+(512*RECSIZE)/512) 01895000 * FOR 3340 USE FORMULA: 01896000 * L+(8368-RECSIZE)/(167+(512*RECSIZE)/512) 01897000 SPACE 2 01898000 INPCP MVC CPBYTE,TYPECP SAVE DTF TYPE @V305066 01899000 MVI CPRECS,TWO DEF RECS/TRK TO CMS DISK @VM03137 01900000 LH R10,0(R8) GET TOLERANCE FACTOR @V305066 01901000 MH R10,CPDATLEN MULT BY RECSIZE @V305066 01902000 SRL R10,NINE DIVIDE BY 512 @VM03137 01903000 AH R10,TWO(R8) ADD OVERHEAD CONSTANT @VM03137 01904000 LH R7,FOUR(R8) GET TRACK CAPACITY @VM03137 01905000 SH R7,CPDATLEN SUBTRACT RECSIZE @V305066 01906000 SR R6,R6 CLEAR REGISTER FOR DIVIDE @V305066 01907000 DR R6,R10 DIVIDE @V305066 01908000 AH R7,KON2 ADD TWO @V305066 01909000 STH R7,FULSAV SAVE RECS/TRK @V305066 01910000 B SYSO CONTINUE OPEN @V305066 01911000 SLIBIT TM CPFLAG5,CPIN INPUT FILE ? @V305066 01912000 BZ RTNCP NO, OUTPUT @V305066 01913000 NI CPCCWI+4,DF TURN OFF SLI BIT @V305066 01914000 RTNCP BR R6 RETURN TO MAIN LINE @V305066 01915000 INIT14 MVI CPDEV,DEV2314 2314 DEV CODE @V305066 01916000 LA R8,CON2314 POINT TO 2314 CONSTANTS @V305066 01917000 B COMPUTE COMPUTE RECS/TRK @V305066 01918000 INIT30 MVI CPDEV,DEV3330 3330 DEV CODE @V305066 01919000 LA R8,CON3330 POINT TO 3330 CONSTANTS @V305066 01920000 B COMPUTE COMPUTE RECS/TRK @V305066 01921000 INIT3B MVI CPDEV,DEV333B 3330-11 DEV CODE @V505098 01922000 LA R8,CON3330 POINT TO 3330-11 CONSTANTS @V505098 01923000 B COMPUTE COMPUTE RECS/TRK @V505098 01924000 INIT50 MVI CPDEV,DEV3350 3350 DEV CODE @V505098 01925000 LA R8,CON3350 POINT TO 3350 CONSTANTS @V505098 01926000 B COMPUTE COMPUTE RECS/TRK @V505098 01927000 CKPTR CLI TEMP,FORTY X'40' PRINTER @V305066 01928000 BE PRINTIN GO OPEN DTFCP PRINTER FILE @V305066 01929000 CLI TEMP,FIFTY TAPE DEVICE ? @V305066 01930000 BNE DEVERR NO, ERROR INVALID DEVICE TYPE @V305066 01931000 CLI PUBDEVT,TCR TAPE CARTRIDGE READER @V305066 01932000 BE DEVERR IF TCR, DEVICE ERROR @V305066 01933000 BAL R6,CRPLIST CREATE PLIST FOR TAPEIO @V305066 01934000 MVC FUNC,SENSE SENSE @V305066 01935000 BAL R6,IOROUT PERFORM IO @V305066 01936000 BAL R6,CHKMODE VER TAPE MODE AGREES WITH PUB @V305066 01937000 CLI DTFCP+6,HEX01 PROGRAMMER LOGICAL UNIT @V305066 01938000 BE CPCONT1 YES, SKIP SYS FILE PROCESSING @V305066 01939000 BAL R6,SYSFILE PROCESS SYSTEM FILES @V305066 01940000 BAL R4,SYSUNIT MAKE SYS UNIT CHECK @V305066 01941000 CLI TYPECP,THIRTY3 DTF TYPE = X'33' - DTFDI @V305066 01942000 BNE CPCONT1 NO @V305066 01943000 BAL R6,SLIBIT TURN OFF SLIBIT @V305066 01944000 CPCONT1 MVI CPDEVTY,CPTAP INDICATE TAPE DEVICE @V305066 01945000 MVI CPFLAG4,TAPDEV INDICATE TAPE DEVICE @V305066 01946000 TM CPFLAG5,CPIN INPUT ? @V305066 01947000 BO INITIAL YES @V305066 01948000 TM CPFLAG5,PCHFILE SYSLST OR SYSPCH O/P ? @V305066 01949000 BZ INITIAL NO @V305066 01950000 OI CPFLAG5,HEX02 SET SYSLST/SYSPCH O/P TAPE @V305066 01951000 MVC CPFN(EIGHT),MULTVOL NAME OF VOL SWITCHING PHASE @VM03137 01952000 INITIAL LA R6,MGTPOP INITIALIZE BRANCH REGISTER @V305066 01953000 LDIORG TM CPFLAG5,IO2 2 IOAREAS @V305066 01954000 BCR 8,R6 NO I/O REG, GO TO CORRECT INSTR. @V305066 01955000 TM CPFLAG5,CPIN INPUT ? @V305066 01956000 BCR 1,R6 INPUT, NO LOAD NEEDED @V305066 01957000 LH R14,PIBPT PIB POINTER @V305066 01958000 L R14,EIGHT(R14) USER SAVEAREA @VM03137 01959000 LA R14,SIXTEEN(R14) R1 - REG SAVEAREA @VM03137 01960000 L R8,CPFLAG5 IOAREA2 ADDRESS TO REGISTER @V305066 01961000 TM CPDEVTY,PRTPCH PRINTER/PUNCH @V305066 01962000 BZ EXEC NO @V305066 01963000 BCTR R8,0 POINT TO CONTROL CHARACTER @V305066 01964000 EXEC SR R4,R4 CLEAR REGISTER @VM03139 01965000 TM CPDSK,FF DISK POSSSBLE WITH THIS DTF? @V305066 01966000 BO SYSLOD NO @V305066 01967000 IC R4,CPINSTR+1 OBTAIN IOREG NO. @V305066 01968000 B STOR BRANCH. @VM03141 01969000 SYSLOD IC R4,CPIOREG IOREG FOR NON-DISK @V305066 01970000 STOR SRL R4,4 GET IOREG NO. @V305066 01971000 CH R4,CONNINE IOREG < 9 ? @V305066 01972000 BL LTNINE YES @V305066 01973000 SH R4,CONNINE SUBTRACT 9 FROM IOREG @V305066 01974000 B MYP CONTINUE SHORTLY BELOW @VM03141 01975000 LTNINE LA R4,SEVEN(R4) INCREM BY 7 @VM03137 01976000 MYP SLL R4,TWO MULTIPLY BY 4 @VM03137 01977000 AR R14,R4 DISP + SAVE ADDRESS FOR REG @V305066 01978000 ST R8,0(R14) IOAREA1 ADDRESS TO REG SAVE AREA@V305066 01979000 BR R6 @V305066 01980000 SYSO MVI TYPECP,TWENTY DISK DTF TYPE @V305066 01981000 TM CPFLAG5,CPIN INPUT ? @V305066 01982000 BO STKON YES @V305066 01983000 MVI CPDEVID+1,TWENTY X'20' FOR O/P @V305066 01984000 B STKON1 CONTINUE SHORTLY BELOW @VM03140 01985000 STKON MVI CPDEVID+1,HEX18 MOVE CONSTANT TO DTF @V305066 01986000 STKON1 BAL R6,LDIORG CALL SUBROUTINE @VM03140 01987000 TM CPFLAG1,INPSD IS IT INPUT FILE @V305066 01988000 BNO OUT2 NO, MUST BE OUTPUT @V305066 01989000 TM CPFLAG1,OPENSD FILE ALREADY OPEN ? @V305066 01990000 BO ALLOPEN ALREADY OPEN @V305066 01991000 B CONTINUE PROCESS AS INPUT @V305066 01992000 MGTPOP CLI DTFCP+6,HEX01 PROGRAMMER LOGICAL UNIT @V305066 01993000 BNE CHMOR MUST BE SYSTEM FILE @V305066 01994000 TM CPFLAG5,CPIN INPUT ? @V305066 01995000 BO INWKFL YES @V305066 01996000 B OUTWKFL OUTPUT FILE @V305066 01997000 EJECT 01998000 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 01999000 * THIS ROUTINE WILL CORRECTLY POSITION A TAPE ASSOCIATED * 02000000 * WITH A SYSTEM LOGICAL UNIT (DTFCP OR DTFDI). SUCH POSITIONING * 02001000 * WILL ELIMINATE THE NEED FOR NORMAL OPEN PROCESSING. * 02002000 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 02003000 SPACE 2 02004000 SYSUNIT CLC DTFCP+6(TWO),IPTRDR SYSIPT/SYSRDR @VM03137 02005000 BCR 2,R4 CONTINUE TO OPEN @V305066 02006000 MVC FUNC,READ PREPARE TO READ RECORD @V305066 02007000 MVC BUFFLEN(FOUR),LENGTH INCREASE BUF LEN TO 82 @VM03137 02008000 READTM LA R3,READTM IF TM ON NEXT IO, GO HERE @V305066 02009000 BAL R6,IO PERFORM IO @V305066 02010000 MVC BUFFLEN,EIGHTY RESTORE BUFFLEN TO 80 @V305066 02011000 CLC BYTES(FOUR),READ80 80 BYTES READ @VM03137 02012000 BE BACKSP YES, OK @V305066 02013000 CLC BYTES(FOUR),READ81 81 BYTES READ @VM03137 02014000 BE BACKSP YES, OK @V305066 02015000 BAL R6,CVTUNIT CONVERT SYS LOG UNIT @V305066 02016000 LA R15,SIXTEEN SYSIPT/SYSRDR EXCEEDS 81 @V305066 02017000 B BADOPEN BR TO PRINT ERROR @V305066 02018000 BACKSP MVC FUNC,BSR BACKSPACE RECORD @V305066 02019000 BAL R6,IOROUT ISSUE IO @V305066 02020000 BR R4 RETURN TO MAINLINE @V305066 02021000 SPACE 2 02022000 SYSFILE TM BUFF2,LOADPT IS TAPE AT LOADPT? @V305066 02023000 BCR 8,R6 NO, DO NOT REPOSITION TAPE @V305066 02024000 CLC DTFCP+6(TWO),IPTRDR SYSIPT/SYSRDR @VM03137 02025000 BC 2,SYSLST NO, MUST BE SYSLST @V305066 02026000 MVC FUNC,READ PREPARE TO SEE IF LABELS @V305066 02027000 LA R1,PLIST POINT TO PLIST @V305066 02028000 SVC SVC202 ISSUE IO @VM03137 02029000 DC AL4(TM2) ERROR ADDRESS @V305066 02030000 CLC BUFFER(FOUR),VOL1 VOL1 LABEL READ @VM03137 02031000 BNE REWTAP NO LABELS/NO TM - REWIND @V305066 02032000 MVC FUNC,FSF FORWARD SPACE FILE BEYOND TM @V305066 02033000 LA R1,PLIST POINT TO PLIST @V305066 02034000 SVC SVC202 ISSUE IO @VM03137 02035000 DC AL4(BADTAPIO) ERROR ADDRESS @V305066 02036000 BR R6 RETURN TO MAIN LINE @V305066 02037000 REWTAP MVC FUNC,REW REWIND REQUEST @V305066 02038000 LA R1,PLIST POINT TO PLIST @V305066 02039000 SVC SVC202 ISSUE IO @VM03137 02040000 DC AL4(BADTAPIO) ERROR ADDRESS @V305066 02041000 BR R6 RETURN TO MAIN LINE @V305066 02042000 SYSLST MVC FUNC,WTM IF SYSLST, WRITE TM @V305066 02043000 LA R1,PLIST POINT TO PLIST @V305066 02044000 SVC SVC202 ISSUE IO @VM03137 02045000 DC AL4(BADTAPIO) ERROR ADDRESS @V305066 02046000 BR R6 RETURN TO MAIN LINE @V305066 02047000 SPACE 2 02048000 TM2 CH R15,TM TM ENCOUNTERED? @V305066 02049000 BCR 8,R6 YES, NO LABELS @V305066 02050000 B BADTAPIO OTHERWISE ERROR @V305066 02051000 SPACE 2 02052000 EJECT 02053000 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 02054000 * * 02055000 * ROUTINE TO OPEN DTFCP OR DTFDI TAPE OUTPUT FILES * 02056000 * * 02057000 * * 02058000 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 02059000 SPACE 4 02060000 OUTWKFL OI CPFLAG1,HEX08 TAPE O/P INDICATOR @V305066 02061000 SR R3,R3 CLEAR REGISTER 3 @V305066 02062000 MVC FUNC,REW PREPARE TO REWIND TAPE @V305066 02063000 BAL R6,IOROUT PERFORM IO @V305066 02064000 MVC FUNC,READ ISSUE READ REQUEST @V305066 02065000 LA R1,PLIST PREPARE TO ISSUE TAPEIO REQUEST @V305066 02066000 SVC SVC202 ISSUE REQUEST @VM03137 02067000 DC AL4(TM1) ERROR ROUTINE @V305066 02068000 DOSENSE MVC FUNC,REW PREPARE TO REWIND @V305066 02069000 BAL R6,IOROUT PERFORM IO @V305066 02070000 MVC FUNC,SENSE PREPARE TO DO SENSE @V305066 02071000 BAL R6,IOROUT PERFORM IO @V305066 02072000 TM BUFF2,LOADPT IS TAPE AT LOADPT? @V305066 02073000 BC 8,TMREAD NO @V305066 02074000 MVC FUNC,READ PREPARE TO READ @V305066 02075000 LA R1,PLIST PREPARE TO ISSUE READ @V305066 02076000 SVC SVC202 ... @VM03137 02077000 DC AL4(TM8) ERROR ADDRESS @V305066 02078000 TMREAD LTR R3,R3 TM MARK READ? @V305066 02079000 BC 2,SETSW2 YES, R3 > 0 @V305066 02080000 MVC FUNC,REW OTHERWISE, REWIND TAPE @V305066 02081000 BAL R6,IOROUT PERFORM IO @V305066 02082000 SETSW2 NI CPFLAG5,FE TURN OFF TAPE LABELED SWITCH @V305066 02083000 B CHMOR ANYMORE FILES TO OPEN ? @V305066 02084000 TM1 CH R15,TM TAPE MARK ENCOUNTERED @V305066 02085000 BH BADTAPIO NO, OTHER ERROR @V305066 02086000 BL BADTAPIO NO, OTHER ERROR @V305066 02087000 LA R3,ONE R3=1 MEANS TAPE MARK FOUND @V305066 02088000 B DOSENSE BRANCH. @VM03141 02089000 TM8 CH R15,TM TAPE MARK ENCOUNTERED @V305066 02090000 BE TMREAD YES,CONTINUE @V305066 02091000 B BADTAPIO OTHERWISE, ERROR @V305066 02092000 EJECT 02093000 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 02094000 * * 02095000 * ROUTINE TO OPEN DTFCP OR DTFDI TAPE INPUT FILES * 02096000 * * 02097000 * * 02098000 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 02099000 SPACE 4 02100000 INWKFL NI CPFLAG1,FD TURN OFF DISK I/P INDICATOR @V305066 02101000 TM CPFLAG0,ASC ASCII SPECIFIED @V305066 02102000 BO ASCIIERR YES, ERROR @V305066 02103000 SR R14,R14 CLEAR REGISTER 14 @V305066 02104000 TM CPFLAG1,CON80 REWIND OPTION SPECIFIED ? @VM03139 02105000 BO DETPATH NO, SKIP REWIND OPTION @V305066 02106000 MVC FUNC,REW REWIND @V305066 02107000 BAL R6,IOROUT @V305066 02108000 DETPATH MVC FUNC,SENSE PREPARE FOR SENSE OPERATION @V305066 02109000 BAL R6,IOROUT PERFORM IO @V305066 02110000 TM BUFF2,LOADPT IS TAPE AT LOADPT ? @VM03139 02111000 BC 8,ZEROR3 NO @V305066 02112000 LA R14,FOUR(,R14) ADJUST PTR FOR LOADPT @VM03137 02113000 ZEROR3 SR R3,R3 CLEAR REGISTER @V305066 02114000 MVC FUNC,READ READ @V305066 02115000 LA R1,PLIST PREPARE TO ISSUE READ @V305066 02116000 SVC SVC202 ISSUE IO @VM03137 02117000 DC AL4(TM4) ERROR ROUTINE @V305066 02118000 CHKLABEL CLC BUFFER(FOUR),VOL1READ VOL1 LABEL READ ? @VM03137 02119000 BNE HDR1CHK NO @V305066 02120000 LA R14,EIGHT(,R14) ADJUST PTR FOR LABEL FILE @VM03137 02121000 BOCPT4 L R14,PROCTAB(R14) ADD OF PROCEDURE LIST @V305066 02122000 PROCRUN1 L R1,0(R14) @V305066 02123000 BAL R6,0(R1) BR TO ROUTINE @V305066 02124000 PROCRUN2 LA R14,FOUR(,R14) ADDR NEXT SUBROUTINE @VM03137 02125000 B PROCRUN1 ... @V305066 02126000 SPACE 2 02127000 * PROCEDURE LIST 02128000 PROCTAB DC A(PROC7) @V305066 02129000 DC A(PROC7) @V305066 02130000 DC A(PROC6) @V305066 02131000 DC A(PROC5) @V305066 02132000 * ROUTINE ADDRESSES 02133000 PROC5 DC A(VOLSKIP) SKIP ADDITIONAL VOL LABELS @V305066 02134000 PROC6 DC A(FWSPTM) FORWARD SPACE TO TAPE MARK @V305066 02135000 DC A(EXITNLB) EXIT TAPE UNLABELED @V305066 02136000 PROC7 DC A(EXITNLAB) EXIT TAPE UNLABELED @V305066 02137000 SPACE 2 02138000 VOLSKIP MVC FUNC,READ PREPARE TO READ @V305066 02139000 VOLSKIP1 MVI BUFFER,BLANK PROPAGATE BLANKS THROUGH @V305066 02140000 MVC BUFFER+1(Q79),BUFFER IO AREA @VM03137 02141000 LA R1,PLIST PREPARE TO ISSUE IO @V305066 02142000 SVC SVC202 ISSUE IO @VM03137 02143000 DC AL4(BADTAPIO) ERROR ADD @V305066 02144000 CLC BUFFER(FOUR),VOL1 VOL1 LABEL READ @VM03137 02145000 BE VOLSKIP1 READ AGAIN... @V305066 02146000 CLC BUFFER(THREE),UVL UVL LABEL READ @VM03137 02147000 BE VOLSKIP1 YES, READ AGAIN... @V305066 02148000 CLC BUFFER(FOUR),HDR1 HDR1 LABEL READ @VM03137 02149000 BNE ERR1 STDLAB BUT NO HDR1 @V305066 02150000 BR R6 RETURN @V305066 02151000 FWSPTM MVC FUNC,FSF FORWARD SPACE FILE @V305066 02152000 LA R1,PLIST PREPARE TO ISSUE IO @V305066 02153000 SVC SVC202 ISSUE IO @VM03137 02154000 DC AL4(TM3) ERROR ADDRESS @V305066 02155000 BR R6 RETURN @V305066 02156000 HDR1CHK CLC BUFFER(FOUR),HDR1 HDR1 LABEL READ @VM03137 02157000 BNE BOCPT4 MUST BE NOLABEL @V305066 02158000 LA R14,EIGHT(,R14) ADJUST PTR FOR LABELED FILE @VM03137 02159000 B BOCPT4 BR TO PROCESS LABEL @V305066 02160000 TM4 CH R15,TM TAPE MARK ENCOUNTERED @V305066 02161000 BL BADTAPIO ERROR @V305066 02162000 BH BADTAPIO ERROR @V305066 02163000 LA R3,ONE R3=1 IND TAPE MARK ENCOUNTERED @V305066 02164000 B CHKLABEL CHK LABEL SITUATION @V305066 02165000 EXITNLAB LTR R3,R3 TM MARK READ ? @V305066 02166000 BC 2,EXITNLB YES,EXIT @V305066 02167000 MVC FUNC,REW PREPARE TO REWIND @V305066 02168000 BAL R6,IOROUT ISSUE IO REQUEST @V305066 02169000 EXITNLB NI CPFLAG5,FE TURN OFF TAPE LABELED SW @V305066 02170000 B CHMOR ANYMORE FILES TO OPEN ? @V305066 02171000 TM3 CH R15,TM TAPE MARK ENCOUNTERED @V305066 02172000 BCR 8,R6 YES @V305066 02173000 B BADTAPIO OTHERWISE, TAPE ERROR @V305066 02174000 EJECT 02175000 USING CPUNTREC,R2 @V305066 02176000 RDRCI MVI SWITHS,READER INDICATE THAT DEVICE IS READERCI @V305066 02177000 MVI SYSTYPE,RDTAP2 SECOND INDICATOR IN DTF @V305066 02178000 BAL R6,LDIORG GO INITIALIZE I/O REG @V305066 02179000 B CHMOR ANY MORE FILES TO OPEN ? @V305066 02180000 PUNCH MVI SWITHS,PCHFILE INDICATE DEVICE IS A PUNCH @V305066 02181000 CLI PUBDEVT,PUN3525 3525 PUNCH @V305066 02182000 BE UNTRCP2 FINISH INITIALIZING DTF @V305066 02183000 TM PUBDEVT,PCH2540 2540 PUNCH @V305066 02184000 BO P2540B YES @V305066 02185000 CLI PUBDEVT,PCH2520 2520 PUNCH @V305066 02186000 BE P2540B YES @V305066 02187000 B UNTRCP2 ALL OTHERS @V305066 02188000 P2540B TM OPSW1,PCHFILE SYSPCH ASSGNED TO 2540 PCH? @V305066 02189000 BZ UNTRCP2 NO @V305066 02190000 OI OPSW1,HEX08 INDICATE DEVICE IS 2540 PUNCH @V305066 02191000 OI CPCCB+2,EQCHK EQUIPMENT CHECK @V305066 02192000 TM CPOIND,FF IS DISK POSSIBLE WITH THIS DTF @V305066 02193000 BO UNTRCP2 YES @V305066 02194000 MVI CPOIND,FF IND DTF NOT DEFINED FOR DISK @V305066 02195000 MVC LOAD2(FOUR),LOAD MOVE IOREG LOAD INSTRUCTION @VM03137 02196000 MVC CCWND(EIGHT),CCWASA MOVE CCW TO PROPER POSITION @VM03137 02197000 LA R6,CCWND ADDRESS OF CCW @V305066 02198000 ST R6,HOLD ADDRESS OF CCW TO TEMP AREA @V305066 02199000 MVC CCWPTR(THREE),HOLD+1 ADDRESS OF CCW TO CCB @VM03137 02200000 MVC CCWE1(EIGHT),E1CCW RELOCATE 2540 PUNCH ERROR @VM03137 02201000 * CCW1 02202000 LA R6,SAVE1 ADDRESS OF SAVE AREA TO REGISTER @V305066 02203000 ST R6,HOLD ADDR OF SAVE AREA TO TEMP AREA @V305066 02204000 MVC CCWE1+1(THREE),HOLD+1 ADDR OF SAVEAREA1 TO ERR @VM03137 02205000 * CCW1 02206000 MVC CCWE2(EIGHT),E2CCW RELOCATE 2540 PUNCH ERROR @VM03137 02207000 * CCW2 02208000 LA R6,SAVE2 ADDRESS OF SAVE AREA TO REGISTER @V305066 02209000 ST R6,HOLD DRESS OF SAVE AREA TO TEMP AREA @V305066 02210000 MVC CCWE2+1(THREE),HOLD+1 ADDR OF SAVEAREA2 TO ERR @VM03137 02211000 * CCW2 02212000 B UNTRCP2 TO UNIT RECORD OPEN @V305066 02213000 SETSW3 MVI SWITHS,READER INDICATE THAT DEVICE IS A READER @V305066 02214000 MVI SYSTYPE,RDTAP2 SECOND INDICATOR IN DTF @V305066 02215000 B UNTRC1 GO TO UNIT RECORD OPEN @VM03139 02216000 CKPTR3 CLI TEMP,FORTY IS DEVICE A PRINTER ? @V305066 02217000 BNE CHMOR SEE IF MORE FILES TO OPEN @V305066 02218000 PRINTIN MVI SWITHS,HEX08 INDICATE DEVICE IS A PRINTER @V305066 02219000 CLI PUBDEVT,PRTUCS 1403 PRINTER WITH UCS @V305066 02220000 BL UNTRCP2 NO @V305066 02221000 LR R1,R2 R1 POINTS TO CCB @V305066 02222000 MVC TEMPSAVE(THREE),CCWPTR SAVE CCW ADDRESS @VM03137 02223000 LA R8,STMODCCW ADDRESS OF SET MODE CCW @V305066 02224000 ST R8,CCWPTR-1 CCW ADDRESS TO CCB @V305066 02225000 SVC EXCP SET MODE @V305066 02226000 MVC CCWPTR(THREE),TEMPSAVE RESTORE USER CCB @VM03137 02227000 UNTRCP2 TM CPOIND,FF DISK DEVICE? @V305066 02228000 BO ADJSYS BR IF DISK DEVICE @V305066 02229000 L R4,CCWASA+4 LOAD RECORD COUNT @V305066 02230000 SH R4,KON1 SUBTRACT ONE @V305066 02231000 ST R4,CCWASA+4 STORE BACK IN DTF @V305066 02232000 L R4,CCWASA LOAD IO ADDRESS @V305066 02233000 AH R4,KON1 ADD ONE @V305066 02234000 ST R4,CCWASA STORE BACK IN DTF @V305066 02235000 B AJALT GO UPD ALT IO ADDRESS @V305066 02236000 ADJSYS L R4,CCWND+4 LOAD RECORD COUNT @V305066 02237000 SH R4,KON1 SUBTRACT ONE @V305066 02238000 ST R4,CCWND+4 REPLACE COUNT @V305066 02239000 L R4,CCWND LOAD IO ADDRSS @V305066 02240000 AH R4,KON1 ADD ONE @V305066 02241000 ST R4,CCWND RESTORE LOAD IO ADDRESS @V305066 02242000 AJALT L R4,ALTIO-1 LOAD ALTERNATE IO AREA @V305066 02243000 AH R4,KON1 ADD ONE @V305066 02244000 ST R4,ALTIO-1 UPDATE ALTERNATE IOAREA @V305066 02245000 UNTRC1 BAL R6,LDIORG @V305066 02246000 B CHMOR ANY MORE FILES TO OPEN ? @V305066 02247000 EJECT 02248000 USING DTFSD,R2 ESTABLISH ADDRESSABILITY @V305066 02249000 GETCON CLI DEVSD,DEV2314 DEV TYPE = 2314 @V305066 02250000 BE INSERT YES @V305066 02251000 LA R4,FOUR(,R4) BUMP TO NEXT ENTRY IN TABLE @VM03137 02252000 CLI DEVSD,DEV3330 3330 @V305066 02253000 BE INSERT YES @V305066 02254000 LA R4,FOUR(R4) BUMP TO NEXT TABLE @V505098 02255000 CLI DEVSD,DEV333B 3330-11 @V505098 02256000 BE INSERT YES @V505098 02257000 LA R4,FOUR(,R4) BUMP TO NEXT TABLE ENTRY @VM03137 02258000 CLI DEVSD,DEV3350 3350 @V505098 02259000 BE INSERT YES @V505098 02260000 LA R4,FOUR(R4) BUMP TO NEXT TABLE ENTRY @V505098 02261000 TM DEVSD,DEV70MB 3340 70MB @V305066 02262000 BM INSERT NO, 35MB @V305066 02263000 LA R4,FOUR(,R4) BUMP TO NEXT TABLE ENTRY @VM03137 02264000 INSERT MVC CONSD,0(R4) MOVE CONTROL FIELD TO DTF @V305066 02265000 BR R6 RETURN TO MAIN LINE @V305066 02266000 EJECT 02267000 CVTUNIT SR R5,R5 CLEAR @V305066 02268000 IC R5,SEVEN(,R2) GET UNIT NUMBER @VM03137 02269000 TM SIX(R2),HEX01 PROGRAMMER LOGICAL UNIT @VM03137 02270000 BO CNVPROG YES, BRANCH @V305066 02271000 SLL R5,TWO MULTIPLY BY 4 @VM03137 02272000 LA R5,SYSTAB(R5) INDEX TO CORRECT XXX @V305066 02273000 MVC DDNAME+3(THREE),0(R5) MOVE XXX TO AREA @VM03137 02274000 CONVERT2 MVC DDNAME(THREE),SYS FIRST 3 CHAR OF LOG UNIT = @VM03137 02275000 * 'SYS' 02276000 MVC SAVEFN(SIX),DDNAME MOVE SYSXXX TO ERR MSG FIELD @VM03137 02277000 BR R6 RETURN TO CALLER @V305066 02278000 CNVPROG CVD R5,DDNAME CONVERT UNIT NUMBER @V305066 02279000 UNPK DDNAME+3(THREE),DDNAME+6(TWO) CVT TO ZONED @VM03137 02280000 OI DDNAME+5,CHAR0 SET LAST ZONE @V305066 02281000 B CONVERT2 GO TO MOVE SYS TO AREA @V305066 02282000 EJECT 02283000 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 02284000 * * 02285000 * ERROR MESSAGES * 02286000 * * 02287000 * * 02288000 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 02289000 SPACE 5 02290000 BADOPEN EQU * @V305066 02291000 LA R4,BUFFER SCRATCH AREA @V305066 02292000 CVD R15,0(R4) CVT ERROR CODE TO DECIMAL @V305066 02293000 UNPK 0(TWO,R4),SIX(TWO,R4) UNPACK ERROR CODE @VM03137 02294000 MVC TWO(Q14,R4),ERRMSG1 SETUP ERROR MESSAGE @VM03137 02295000 OI ONE(R4),CHAR0 CONVERT ERR CODE TO EBCDIC @VM03137 02296000 MVC EIGHT(SEVEN,R4),SAVEFN FILENAME/SYSXXX/TAPN @VM03137 02297000 LR R5,R15 SAVE R15 @V305066 02298000 DMSERR MF=I,SUB=(CHARA,(R4)),NUM=89,LET=E,TEXT='OPEN ERROR COD*02299000 E ''................' @V305066 02300000 LA R15,THIRTY6 RETURN CODE = 36 @VM03137 02301000 CH R5,H8 PUB UNASSIGNED? @V305066 02302000 BNE SVC6 IF NO 8, GO TO CANCEL @V305066 02303000 LR R1,R9 FREE STOR PTR IN R1 @V305066 02304000 LR R9,R15 SAVE R15 CONTENTS @V305066 02305000 BAL R6,FREESTOR FREE ACQUIRED STORAGE @V305066 02306000 LR R15,R9 RESTORE R15 ERROR CODE @V305066 02307000 SR R0,R0 CLEAR REGISTER 0 @V305066 02308000 IC R0,ABCODE AB TERM CODE @V305066 02309000 LA R1,ABTERM ABTERM ROUTINE @V305066 02310000 SVC SVC2 FETCH AB TERM ROUT @V305066 02311000 SPACE 5 02312000 ERR69E LA R5,DOSDSMD POSITION R5 FOR ERROR MSG @V305066 02313000 DMSERR NUM=69,LET=E,SUB=(CHARA,((R5),1)),TEXT='DISK ''..'' NOT*02314000 ACCESSED' @V305066 02315000 LA R15,THIRTY6 RETURN CODE = 36 @V305066 02316000 B SVC6 BR TO CANCEL @VM03141 02317000 SPACE 5 02318000 ERR37E LA R5,DOSDSMD POSITION R5 FOR ERROR MSG @V305066 02319000 DMSERR NUM=37,LET=E,SUB=(CHARA,((R5),1)),TEXT='DISK ''..'' IS *02320000 READ/ONLY' @V305066 02321000 LA R15,THIRTY6 RETURN CODE = 36 @V305066 02322000 B SVC6 BR TO CANCEL @VM03141 02323000 SPACE 5 02324000 USING DTFMT,R2 @V305066 02325000 ERR58E LA R5,DEVID POINTER TO TAPN @V305066 02326000 DMSERR NUM=58,LET=E,TEXT='END-OF-FILE OR END-OF-TAPE ON ''....*02327000 ''',SUB=(CHARA,(R5)) @V305066 02328000 LA R15,RC40 RETURN CODE = 40 @V305066 02329000 B SVC6 BR TO CANCEL @VM03141 02330000 SPACE 5 02331000 ERR113S BAL R6,CVTCUU CONVERT CUU @V305066 02332000 LA R6,DEVID DEVID POINTER - TAPX @V305066 02333000 DMSERR NUM=113,LET=S,SUB=(CHARA,(R6),CHARA,(R5)),TEXT='''.... *02334000 (...)'' NOT ATTACHED',MF=(E,'SYS') @V305066 02335000 LA R15,HUNDRED RETURN CODE = 100 @V305066 02336000 B SVC6 BR TO CANCEL @V305066 02337000 SPACE 5 02338000 ERR43E LA R5,DEVID POSITION FOR MESSAGE @V305066 02339000 DMSERR NUM=43,LET=E,SUB=(CHARA,(R5)),TEXT='.... IS FILE PROTEC*02340000 TED' @V305066 02341000 LA R15,THIRTY6 RETURN CODE = 36 @V305066 02342000 B SVC6 BR TO CANCEL @V305066 02343000 ERR88E DMSERR NUM=88,LET=E,SUB=(HEX4A,(R5)),TEXT='UNSUPPORTED DTF TYP*02344000 E ''..''' @V305066 02345000 LA R15,TWENTY4 RETURN CODE = 24 @V305066 02346000 B SVC6 BR TO CANCEL @V305066 02347000 CVTCUU LH R5,0(R5) CUU TO REGISTER @V305066 02348000 SLL R5,FOUR ZERO AND SHIFT LAST 4 BITS @VM03137 02349000 ST R5,DDNAME+4 STORE PACKED DECIMAL VALUE @V305066 02350000 OI DDNAME+7,PACK INSURE SIGN IN LAST POSITION @V305066 02351000 UNPK DDNAME(THREE),DDNAME+6(2) CVT CUU TO ZONE @VM03137 02352000 OI DDNAME+2,CHAR0 PRINTABLE CHARACTER @V305066 02353000 LA R5,DDNAME POINT TO CUU @V305066 02354000 BR R6 RETURN TO CALLER. @VM03141 02355000 SPACE 1 02356000 ERR400S EQU * @V305106 02357000 DMSERR MF=(E,'SYS'),NUM=400,LET=S,SUB=(CHARA,(R2)), @V305106*02358000 TEXT='SYSTEM ''........'' DOES NOT EXIST' @V305106 02359000 LA R15,RC44 RETURN CODE = 44 @V305066 02360000 B SVC6 BR TO CANCEL @VM03141 02361000 SPACE 2 02362000 ERR308E EQU * @V305106 02363000 DMSERR NUM=308,LET=E,SUB=(CHARA,(DOSDSMD,1)), @V305106*02364000 TEXT='''..'' DISK IN CMS FORMAT; INVALID FOR NON-CMS DAT*02365000 ASET' @V305106 02366000 LA R15,TWENTY4 RETURN CODE = 24 @V305066 02367000 B SVC6 CANCEL THE JOB @V305106 02368000 SPACE 1 02369000 NOVSAM EQU * VSAM NOT GEND @V305106 02370000 DMSERR LET=S,NUM=413, @V305106*02371000 TEXT='STORAGE NOT INITIALIZED FOR VSAM PROCESSING' 02372000 LA R15,HUNDRED4 RETURN CODE = 104 @VM03137 02373000 B SVC6 CANCEL THE JOB @V305106 02374000 EJECT 02375000 ERR401S EQU * @V305106 02376000 L R6,ASYSNAMS GET A(SAVED SYS TABLE) @V305106 02377000 USING SYSNAMES,R6 @V305106 02378000 DMSERR MF=(E,'SYS'),LET=S,NUM=401,SUB=(HEXA,VMSIZE,CHARA,CMSVS*02379000 AM,HEX,(R2)),TEXT='V.M. SIZE (.......) CANNOT EXCEED ''.*02380000 .......'' START ADDRESS (......)' @V305106 02381000 DROP R6 @V305106 02382000 LA R15,HUNDRED4 RETURN CODE = 104 @V305066 02383000 B SVC6 BR TO CANCEL @VM03141 02384000 SPACE 1 02385000 ERR410S EQU * @V305106 02386000 DMSERR LET=S,NUM=410,SUB=(DEC,(R3)),TEXT='CONTROL PROGRAM ERRO*02387000 R INDICATION ''....''' @V305106 02388000 LR R15,R3 @V305106 02389000 B SVC6 BR TO CANCEL @VM03141 02390000 ERR302E EQU * @V305106 02391000 DMSERR NUM=302,LET=E,TEXT='NO SYSXXX OPERAND SPECIFIED' 02392000 LA R15,TWENTY4 RC = 24 @VM03137 02393000 B SVC6 CANCEL @V305066 02394000 ERR086I EQU * @VM03188 02395000 DMSERR TEXT='DLBL ''........'' DUMMY INVALID FOR VSAM', *02396000 SUB=(CHARA,(R4)),LET=W,NUM=086 @VM03188 02397000 LR R1,R9 POINT TO FREE AREA @VA04418 02398000 BAL R6,FREESTOR RELEASE ACQUIRED FREE STORAGE @VA04418 02399000 LA R15,EIGHT SET VSAM R.C. OF 8 @VM03188 02400000 LH R14,PIBPT GET PIB ADDRESS @VM03188 02401000 L R14,EIGHT(,R14) POINT TO PROGRAM SAVE AREA @VM03188 02402000 ST R15,40(,R14) AND PLACE R.C. IN USER'S R15 @VM03188 02403000 SVC SVC11 NOW, RETURN TO CALLER. @VM03188 02404000 SPACE 1 02405000 EJECT 02406000 *********************************************************************** 02407000 * CHEK ALL VSAM ACBS FOR DATASET DISK ACCESS, CATALOG 02408000 * DISK ACCESS AND THE CORRECT STATUS (R/W,R/O) FOR BOTH 02409000 *********************************************************************** 02410000 USING SYSCOM,R10 @V305106 02411000 USING IKQACB,R2 @V305106 02412000 VSAMCHEK EQU * @V305106 02413000 TM DOSFLAGS,DOSVSAM DOS SET ON WITH 'VSAM'? @V305106 02414000 BZ NOVSAM ERROR IF NOT... @V305106 02415000 L R7,ABGCOM POINT TO BGCOM @V305106 02416000 ICM R1,15,PPEND DOES ANCHOR TABLE EXIST? @VA11066 02416150 BNZ VSAMCHK1 YES, ALREADY IN PLACE @VA11066 02416300 LA R1,DMSSMNAT IF NOT, CALL STORAGE INITIALIZER @VA11066 02416450 SVC 202 SET UP STORAGE AND ANCHOR TABLE @VA11066 02416600 DC AL4(*+4) ... @VA11066 02416750 VSAMCHK1 EQU * @VA11066 02416900 L R10,ASYSCOM POINT TO SYSCOM @V305106 02417000 L R6,SAVEPTR ADDR IF DTF TO BE OPENED @VA07404 02418000 VSAMLOOP EQU * @VA07404 02419000 LA R4,ACBDDNM GET DDNAME FROM ACB @V305106 02420000 LA R14,HITDS FIRST FIND THE DATASET DOSCB @V305106 02421000 FINDCB L R3,DOSFIRST START AT FIRST DOSCB IN CHAIN @V305106 02422000 LH R8,DOSNUM AND NUMBER OF DOSCBS @V305106 02423000 LTR R8,R8 ARE THERE ANY DEFINED? @V305106 02424000 BZ VSAMLOAD NO, GO SEE IF VSAM IS LOADED @V305101 02425000 CBLOOP CLC 0(SEVEN,R4),DOSDD MATCH ON DDNAME ? @VM03137 02426000 BER R14 IF SO, RETURN TO CALLER @V305106 02427000 L R3,DOSNEXT IF NOT, LOAD A(NEXT DOSCB) @V305106 02428000 LA R3,0(,R3) CLEAR HIGH ORDER BYTE @V305106 02429000 BCT R8,CBLOOP KEEP LOOKING UNTIL END OF CHAIN @V305106 02430000 B VSAMLOAD NONE FOUND, SEE IF VSAM LOADED @V305101 02431000 HITDS CLI DOSDEV,DOSDUM IS DDNAME DLBL'D FOR DUMMY ? @VM03188 02432000 BNE CKIFACC NO, CHECK IF DISK ACCESSED. @VM03188 02433000 MVI ACBERFLG,ACBOLIGN SET ACB ERROR FIELD @VM03188 02434000 B ERR086I AND ISSUE INFORMATION MESSAGE. @VM03188 02435000 CKIFACC LA R1,DOSDSMD-24 POINT TO DISK MODE IN DOSCB @VM03188 02436000 L R15,VCADTLKP AND MAKE SURE IT'S ACCESSED @VM03093 02437000 BALR R14,R15 ... @V305106 02438000 BNZ ERR69E ERROR IF NOT FOUND @V305106 02439000 TM ADTFLG2,ADTFMFD FOUND, IS IT CMS DISK? @V305106 02440000 BO ERR308E ERROR IF SO... @V305106 02441000 TM ADTFLG2,ADTFROS ACCESSED AS DOS OR OS DISK? @V305106 02442000 BZ ERR69E ERROR IF NOT... @V305106 02443000 CLC DOSDD(SEVEN),IJSYSCT OPENING MASTER CATALOG @VM03137 02444000 BE INPUTDS YES, SKIP TO R/W CHEK @V305106 02445000 CLC DOSDD(SEVEN),IJSYSUC OPENING USER CATALOG? @VA06032 02446000 BE INPUTDS BRANCH IF YES @VA06032 02447000 TM ACBOFLGS,ACBCAT USER CATALOG? @VA07854 02448000 BO INPUTDS YES, SKIP TO W/R CHECK @VA07854 02449000 TM ACBMACR1,ACBOUT OPENING DATASET FOR OUTPUT? @V305106 02450000 BZ TESTCAT IF NOT, CONTINUE... @V305106 02451000 TM ADTFLG3,ADTFRW IF SO, MAKE SURE DISK R/W @V305101 02452000 BZ ERR37E ERROR IF NOT R/W @V305101 02453000 SPACE 1 02454000 TESTCAT TM DOSINIT,DOSUCAT IS DATASET ON A USER CATALOG? @V305106 02455000 BO USERCAT IF SO, FIND THE NAME @V305106 02456000 LA R4,IJSYSCT IF NO, USE MASTER CATALOG @V305066 02457000 B FINDCAT GO LOOK FOR THE CAT DOSCB @V305106 02458000 USERCAT LA R4,DOSUCNAM POINT TO USER CAT NAME @V305106 02459000 FINDCAT BAL R14,FINDCB FIND THE CATALOG DOSCB @V305106 02460000 CLI DOSDEV,DOSDUM IS DDNAME DLBL'D FOR DUMMY ? @VM03188 02461000 BE VSAMLOAD YES, BYPASS DISK CHECKS @VM03188 02462000 LA R1,DOSDSMD-Q24 FOUND IT...NOW MAKE SURE @VM03137 02463000 L R15,VCADTLKP THAT DISK IS ACCESSED @VM03093 02464000 BALR R14,R15 ... @V305106 02465000 BNZ ERR69E ERROR IF NOT FOUND @V305106 02466000 TM ADTFLG2,ADTFMFD FOUND, IS IT CMS DISK? @V305106 02467000 BO ERR308E ERROR IF SO... @V305106 02468000 TM ADTFLG2,ADTFROS ACCESSED AS DOS OR OS DISK? @V305106 02469000 BZ ERR69E ERROR IF NOT FOUND @V305106 02470000 TM ACBMACR1,ACBIN OPENING DATASET FOR INPUT? @V305106 02471000 BO INPUTDS YES, CONTINUE @V305106 02472000 TM ADTFLG3,ADTFRW NO, SO MAKE SURE CATALOG DISK @V305101 02473000 BZ ERR37E IS R/W... ERROR IF NOT @V305101 02474000 B VSAMLOAD NOW GO SEE IF VSAM IS LOADED @V305101 02475000 INPUTDS TM ADTFLG3,ADTFRW IS CATALOG DISK R/W ? @V305101 02476000 BO VSAMLOAD IF SO, LET STATS BE RECORDED @V305101 02477000 OI ACBINFLG,ACBSTSKP IF NOT R/O, NO STATS ALLOWED @V305106 02478000 SPACE 1 02479000 DROP R2 @V305106 02480000 SPACE 1 02481000 VSAMLOAD EQU * @VA07404 02482000 LA R6,FOUR(R6) POINT TO NEXT ADCON @VA07404 02483000 CLC 0(2,R6),EOL TEST OF END OF LIST @VA08388 02484000 BE DOVSAMO IF YES PROCD WITH OPEN @VA08388 02485000 L R2,ZERO(,R6) DTF/ACB ADDRESS @VA07404 02486000 USING DTF,R2 @VA07404 02487000 CLI DTFTYPE,ACB ACB ? @VA07404 02488000 BE VSAMLOOP YES, GO PROCESS @VA07404 02489000 DROP R2 @VA07404 02490000 DOVSAMO EQU * @VA08388 02491000 TM VSAMFLG1,VSAMRUN HAS VSAM BEEN LOADED ? @VA07404 02492000 BO GENFLAGS YES, NO NEED TO DO IT AGAIN @V305106 02493000 L R6,ASYSNAMS GET A (SAVED SYS TABLE) @V305106 02494000 USING SYSNAMES,R6 AND MAP IT... @V305106 02495000 LA R2,CMSVSAM POINT TO SAVED VSAM NAME @V305106 02496000 LA R3,TWELVE AND USE 'FINDSYS' CODE @VM03137 02497000 DC X'83230064' FIND SAVED SYSTEM @V305106 02498000 BC 8,LOADED CC=0, ALREADY LOADED @V305106 02499000 BC 4,LOADIT CC=1, EXISTS BUT NOT LOADED @V305106 02500000 SPACE 1 02501000 ERRORS CH R3,FORTY4 RC = 44? @V305106 02502000 BE ERR400S IF SO, NO SUCH SYSTEM @V305106 02503000 B ERR410S OTHERWISE, PAGING I/O ERRORS @V305106 02504000 FORTY4 DC H'44' CP RC FOR 'SYSTEM NOT FOUND' @V305106 02505000 SPACE 1 02506000 LOADIT C R2,VMSIZE WILL VSAM OVERLAY USER STORAGE ? @VA04565 02507000 BL ERR401S YES, THEN GIVE ERROR MESSAGE @V305101 02508000 LA R2,CMSVSAM POINT TO VSAM NAME AGAIN @V305106 02509000 DROP R6 @V305106 02510000 XR R3,R3 R3=0 FOR SHARED COPY @V305106 02511000 DC X'83230064' LOAD THE SHARED VSAM SYSTEM @V305106 02512000 BC 2,ERRORS ERRORS (SHOULDN'T HAPPEN) @V305106 02513000 SPACE 1 02514000 LOADED EQU * OK, ALL LOADED @V305106 02515000 OI VSAMFLG1,VSAMRUN SIGNAL VSAM LOADED AND RUNNING @V305106 02516000 ST R2,AVSAMSYS SAVE VSAM DCSS ADDR IN NUCON @V305106 02517000 GENFLAGS OI IJBFLG04,VSAMON INDICATE VSAM=YES IN SYSCOM @V305106 02518000 OI RMSROPEN,RPSON SET RPS BIT FOR SYSTEM @V305106 02519000 DROP R10 @V305066 02520000 LR R1,R9 POINTER TO FREE STORAGE @V305101 02521000 L R9,SAVEPTR POINT TO LIST OF ACB ADDRESSES @V305101 02522000 BAL R6,FREESTOR FREE ACQUIRED STORAGE @V305101 02523000 LA R1,VSAMOPEN PREPARE TO FETCH VSAM OPEN ROUT @V305066 02524000 LR R0,R9 NOW MOVE LIST POINTER TO R0 @V305101 02525000 * THE FOLLOWING CODE INITIALIZES THE AREA 1000(D) FROM THE 02526000 * BEGINNING OF THE LOGICAL TRANSIENT EXECUTION AREA. 02527000 L R4,DOSTRANS GET A(DOS TRANS AREA) @V305106 02528000 ST R0,LISTPNT(R4) SAVE A(ACB LIST) FOR $$BOVSAM @V305106 02529000 LH R3,PIBPT NOW GET THE USER'S PIBTAB @V305106 02530000 L R3,EIGHT(R3) AND PNT TO USER'S SAVEAREA @V305106 02531000 LA R3,SIXTEEN(,R3) NOW PNT AT REGSAVE PART @V305106 02532000 ST R3,REGADDR-1(R4) SAVE A(USER REG SAVEAREA) @V305106 02533000 NI VSAMFLG1,FF-VIPSOP TURN OFF VIPSOP FLAG @VM03137 02534000 LR R2,R0 NOW WE MUST POINT AT @V305106 02535000 L R2,0(R2) A(FIRST ACB) FOR $BOVSAM @V305106 02536000 SVC SVC2 FETCH $$BOVSAM @V305066 02537000 B EXIT2 WHEN WE COME BACK, GO TO EXIT2 @V305101 02538000 EXIT LR R1,R9 POINTER TO FREE STORAGE @V305066 02539000 BAL R6,FREESTOR FREE ACQUIRED STORAGE @V305066 02540000 EXIT2 SR R15,R15 SET RETURN CODE OF ZERO @V305101 02541000 SVC SVC11 EXIT TO PROB. PROG. FROM $$BOPEN @VM03137 02542000 SPACE 5 02543000 SVC6 LR R1,R9 POINTER TO FREE STORAGE @V305066 02544000 LR R9,R15 SAVE RETURN CODE @V305066 02545000 BAL R6,FREESTOR FREE ACQUIRED STORAGE @V305066 02546000 TM VSAMFLG1,VIPSOP WHERE WE CALLED FROM VIP ? @V305101 02547000 BZ CHKAMS NO, SEE IF AMS RUNNING... @V305101 02548000 STC R9,DOSRC SAVE ERROR RETURN CODE @V305101 02549000 SVC SVC11 AND RETURN TO DMSVIP. @V305066 02550000 CHKAMS LR R15,R9 RESTORE RETURN CODE. @V305101 02551000 TM VSAMFLG1,VSAMSERV IS AMSERV RUNNING ? @V305101 02552000 BZ DOSVC6 NO, JUST ISSUE SVC 6 (CANCEL) @V305101 02553000 LA R1,ABTERM OTHERWISE CALL $$BABEND TO @V305101 02554000 SVC SVC2 GIVE CONTROL TO AMSERV STXIT. @V305066 02555000 DOSVC6 SVC SVCSIX ISSUE CANCEL SVC @V305066 02556000 SPACE 5 02557000 FREESTOR LA R0,FREEDB GET NO. DOUBLE WORDS TO FRET @V305101 02558000 DMSFRET DWORDS=(0),LOC=(1),TYPCALL=BALR @V305101 02559000 BR R6 RETURN TO CALLER @VM03140 02560000 EJECT 02561000 CCW CCW X'73',*,X'20',1 SUPPRESS DATA CHECKS FOR UCS@V305066 02562000 CCW X'73',*,X'20',1 @V305066 02563000 SPACE 5 02564000 TAPEIO DC CL8'TAPEIO' @V305066 02565000 REW DC CL8'REW' @V305066 02566000 SENSE DC CL8'SENSE' @V305066 02567000 READ DC CL8'READ' @V305066 02568000 FSR DC CL8'FSR' @V305066 02569000 FSF DC CL8'FSF' @V305066 02570000 WRITE DC CL8'WRITE' @V305066 02571000 BSR DC CL8'BSR' @V305066 02572000 WTM DC CL8'WTM' @V305066 02573000 EOL DC X'0A02' END OF ACB/DTF LIST @VA08388 02574000 SPACE 5 02575000 EIGHTY DC F'80' @V305066 02576000 OSRDERR DC H'80' OS STATE ERROR CODE @V305066 02577000 ERRMSG1 DC C''' ON '' ''' @V305066 02578000 ABTERM DC CL8'$$BABEND' @V305066 02579000 VSAMOPEN DC CL8'$$BOVSAM' @V305066 02580000 MULTVOL DC CL8'$$BCMT07' @V305066 02581000 VOL1READ DC CL4'VOL1' @V305066 02582000 KON1 DC H'1' @V305066 02583000 KON2 DC H'2' @V305066 02584000 CONNINE DC H'9' @V305066 02585000 REC DC XL5'0000000001' @V305066 02586000 BLANKS DC 76C' ' @V305066 02587000 NOTATT DC H'5' TAPE NOT ATTACHED @V305066 02588000 TM DC H'2' TAPE MARK @V305066 02589000 H10 DC H'10' LENGTH OF ONE EXTENT ENTRY @V305066 02590000 H7 DC H'7' @V305066 02591000 H8 DC H'8' @V305066 02592000 IPTRDR DC H'1' SYSIPT/SYSRDR @V305066 02593000 LENGTH DC F'82' @V305066 02594000 PLIOPT DC CL8'PLIOPT' PL/I OPTIMIZING COMPILER @VA07764 02595000 READ80 DC F'80' @V305066 02596000 READ81 DC F'81' @V305066 02597000 VOL1 DC CL4'VOL1' @V305066 02598000 UVL DC CL3'UVL' @V305066 02599000 HDR1 DC CL4'HDR1' @V305066 02600000 V DC CL2'V ' VARIABLE/UNDEFINED FLAG @V305066 02601000 F DC CL2'F ' FIXED FLAG @V305066 02602000 ERASE DC CL8'ERASE' @V305066 02603000 SYS DC CL3'SYS' FIRST 3 CHAR OF LOGICAL UNIT @V305066 02604000 DMSSMNAT DC CL8'DMSSMNAT' ROUTINE TO SET UP ANCHOR TABLE @VA11066 02604500 IJSYSCT DC CL8'IJSYSCT' MASTER CATALOG @V305066 02605000 IJSYSUC DC CL8'IJSYSUC' USER CATALOG @VA06032 02606000 SPACE 5 02607000 * THE FOLLOWING TABLE (CC) CONTAINS DUMMY UPPER EXTENT LIMITS (CCHH) 02608000 * FOR DATA SETS WRITTEN ON CMS DISKS UNDER CMS/DOS. THE 'HH' PORTION 02609000 * TYPE (IE 2314, 3330, 3330-11, 3340, 3350) AND THE FACT THAT 02610000 * A MAXIMUN OF 65,533 02611000 * DEVICE TYPE (IE 2314, 3330, 3340). SINCE A CMS FILE HAS A MAXIMUM 02612000 * CAPACITY OF 65,533 RECORDS REGARDLESS OF DEVICE TYPE, AN EXPLICIT 02613000 * CYLINDER LIMIT IS NOT REQUIRED. 02614000 CC EQU * @VA07181 02615000 DC XL4'FFFF0013' 2314/2319 @VA07181 02616000 DC XL4'FFFF0012' 3330 @VA07181 02617000 DC XL4'FFFF0012' 3330-11 @V505098 02618000 DC XL4'FFFF001D' 3350 @V505098 02619000 DC XL4'FFFF000B' 3340 35MB @VA08280 02620000 DC XL4'FFFF000B' 3340 70MB @VA07181 02621000 SPACE 02622000 ENDCC EQU (*-CC)/4 @V305066 02623000 SPACE 2 02624000 CC2 DC XL4'00C80013' 2314/2319 @V305066 02625000 DC XL4'01FF0012' 3330 @V305066 02626000 DC XL4'03FE0012' 3330-11 @V505098 02627000 DC XL4'022B001D' 3350 @V505098 02628000 DC XL4'015C000B' 3340 35MB @V305066 02629000 DC XL4'02B8000B' 3340 70MB @V305066 02630000 ENDCC2 EQU (*-CC2)/4 @V305066 02631000 SPACE 2 02632000 CON2314 DS 0H 2314 CONSTANTS @V305066 02633000 DC H'534' @V305066 02634000 DC H'101' @V305066 02635000 DC H'7294' @V305066 02636000 CON3330 DS 0H 3330 & 3330-11 CONSTANTS @V505098 02637000 DC H'512' @V305066 02638000 DC H'135' @V305066 02639000 DC H'13030' @V305066 02640000 CON3340 DS 0H 3340 CONSTANTS @V305066 02641000 DC H'512' @V305066 02642000 DC H'167' @V305066 02643000 DC H'8368' @V305066 02644000 CON3350 DS 0H 3350 CONSTANTS @V505098 02645000 DC H'512' @V505098 02646000 DC H'185' @V505098 02647000 DC H'19069' @V505098 02648000 SPACE 2 02649000 DS 0F @V305066 02650000 DISKTAB EQU * @V305066 02651000 DC XL1'08',XL1'09',H'8368',XL4'1556000B' 3340 35 M@V505098 02652000 DC XL1'08',XL1'0A',H'8368',XL4'1556000B' 3340 70 M@V505098 02653000 DC XL1'01',XL1'01',H'7294',XL4'0CCD0013' 2314 @V505098 02654000 DC XL1'04',XL1'04',H'13030',XL4'0D7A0012' 3330 @V505098 02655000 DC XL1'07',XL1'07',H'19069',XL4'0889001D' 3350 @V505098 02656000 DC XL1'05',XL1'05',H'13030',XL4'0D7A0012' 3330-11 @V505098 02657000 DISKEND EQU (*-DISKTAB)/10 @V305066 02658000 SPACE 2 02659000 SYSTAB DS 0H @V305066 02660000 DC CL4'RDR' 00 @V305066 02661000 DC CL4'IPT' 01 @V305066 02662000 DC CL4'PCH' 02 @V305066 02663000 DC CL4'LST' 03 @V305066 02664000 DC CL4'LOG' 04 @V305066 02665000 DC CL4'LNK' 05 @V305066 02666000 DC CL4'RES' 06 @V305066 02667000 DC CL4'SLB' 07 @V305066 02668000 DC CL4'RLB' 08 @V305066 02669000 DC CL4'USE' 09 @V305066 02670000 DC CL4'REC' 0A @V305066 02671000 DC CL4'CLB' 0B @V305066 02672000 DC CL4'VIS' 0C @V305066 02673000 DC CL4'CAT' 0D @V305066 02674000 DS 0F @V305066 02675000 TYPETAB DC XL1'02',AL3(UNITREC1),CL7'DTFCD' @V305066 02676000 DC XL1'03',AL3(UNITREC3),CL7'DTFCN' @V305066 02677000 DC XL1'04',AL3(UNITREC2),CL7'DTFCD' @V305066 02678000 DC XL1'08',AL3(UNITREC4),CL7'DTFPR' @V305066 02679000 DC XL1'10',AL3(TAPEWK),CL7'DTFMT' @V305066 02680000 DC XL1'11',AL3(TAPEDATA),CL7'DTFMT' @V305066 02681000 DC XL1'12',AL3(TAPEDATA),CL7'DTFMT' @V305066 02682000 DC XL1'14',AL3(TAPEDATA),CL7'DTFMT' @V305066 02683000 DC XL1'20',AL3(DISK),CL7'DTFSD' @V305066 02684000 DC XL1'31',AL3(CPORDI),CL7'DTFCP' @V305066 02685000 DC XL1'32',AL3(CPORDI),CL7'DTFCP' @V305066 02686000 DC XL1'33',AL3(CPORDI),CL7'DTFDI' @V305066 02687000 TYPELAST EQU (*-TYPETAB)/11 @V305066 02688000 EJECT 02689000 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 02690000 * * 02691000 * EQUATES * 02692000 * * 02693000 * * 02694000 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 02695000 SPACE 2 02696000 M7 EQU B'0111' LOW 3 BYTES FOR ICM/STCM @VM03137 02697000 DEV3340 EQU X'07' 3340 @VM03137 02698000 Q4095 EQU 4095 FOR ESTABLISHING ADDRESSABILITY @VM03137 02699000 Q90 EQU 90 OFFSET OF PIB TABLE ADDRESS @VM03137 02700000 * OTHER DECIMAL EQUATES: 02701000 Q11 EQU 11 @VM03137 02702000 Q14 EQU 14 @VM03137 02703000 Q24 EQU 24 @VM03137 02704000 Q72 EQU 72 @VM03137 02705000 Q75 EQU 75 @VM03137 02706000 Q76 EQU 76 @VM03137 02707000 Q79 EQU 79 @VM03137 02708000 Q88 EQU 88 @VM03137 02709000 Q112 EQU 112 @VM03137 02710000 SVC202 EQU 202 @VM03137 02711000 M3 EQU B'0011' @V305066 02712000 O EQU C'O' @V305066 02713000 BF EQU X'BF' @V305066 02714000 B7 EQU X'B7' @V305066 02715000 P1600 EQU X'C0' 1600 PUB DENSITY @V305066 02716000 SING800 EQU X'C0' 800 SINGLE PUB DEN @V305066 02717000 MFCMASK EQU X'C0' @V305066 02718000 DUAL800 EQU X'C8' 800 BPI DUAL DENSITY @V305066 02719000 DF EQU X'DF' SET OFF COBOL IGN IND. @V305066 02720000 DEN6250 EQU X'D0' PUB 6250 DENSITY @V305066 02721000 PCHMASK EQU X'EF' @V305066 02722000 FB EQU X'FB' @V305066 02723000 FD EQU X'FD' @V305066 02724000 FE EQU X'FE' @V305066 02725000 FF EQU X'FF' @V305066 02726000 CHAR0 EQU X'F0' @V305066 02727000 TAPDEV EQU X'F1' @V305066 02728000 RDTAP2 EQU X'F1' @V305066 02729000 F7 EQU X'F7' RESET NEW VOL INDICATOR @V305066 02730000 DEV70MB EQU X'0A' 3340 70MB @V305066 02731000 MODEL4 EQU X'0B' 3420 MODEL 4 @V305066 02732000 MODEL6 EQU X'0C' 3420 MODEL 6 @V305066 02733000 PRTPCH EQU X'0C' PRINT/PUNCH @V305066 02734000 PACK EQU X'0C' @V305066 02735000 MODEL8 EQU X'0D' 3420 MODEL 8 @V305066 02736000 ANOTHER EQU X'00' ANOTHER DTF IN OPEN LIST @V305066 02737000 HDR00 EQU X'00' ZEROS IN HDR RECORD @V305066 02738000 LOWLIM0 EQU X'00' SET LOWLIM TO 0 FOR EXT TYPE 01 @V305066 02739000 DEFEXTSQ EQU X'00' DEF EXT SEQ @V305066 02740000 CLEAR EQU X'00' USED TO CLEAR SWITCHES @V305066 02741000 DEN EQU X'00' @V305066 02742000 DEF2311 EQU X'00' DEV CODE IN DTF = 2311 @V305066 02743000 HEX00 EQU X'00' @V305066 02744000 ZERO EQU X'00' @V305066 02745000 ON EQU X'01' TURN SW ON @V305066 02746000 RECTRK1 EQU X'01' INIT TO 1 REC/TRK @V305066 02747000 SW2311 EQU X'01' DEV CODE IN DTF=00, 2311 DEF @V305066 02748000 REC1 EQU X'01' RECORD ON SEARCH ARGUMENT @V305066 02749000 TYPE01 EQU X'01' DAT EXT TYPE @V305066 02750000 UNITEXC EQU X'01' UNIT EXCEPTION @V305066 02751000 WRITEOP EQU X'01' WRITE CCW OPCODE @V305066 02752000 DEV2314 EQU X'01' 2314/2319 @V305066 02753000 DEVTAP EQU X'01' @V305066 02754000 TRACK7 EQU X'01' @V305066 02755000 RPFILE EQU X'01' @V305066 02756000 HEX01 EQU X'01' @V305066 02757000 RPSON EQU X'01' SYSGEN RPS=YES FLG IN COMREG @V305106 02758000 ASC EQU X'02' ASCII SPECIFIED IN DTF @V305066 02759000 UTILITY EQU X'02' UTILITIES BIT @V305066 02760000 READOP EQU X'02' READ CCW OPCODE @V305066 02761000 RECTRK2 EQU X'02' RECS/TRK = 02 @V305066 02762000 TMOPT EQU X'02' @V305066 02763000 PPWFILE EQU X'02' @V305066 02764000 READER EQU X'02' @V305066 02765000 HEX02 EQU X'02' @V305066 02766000 CONSOLE EQU X'03' DTFTYPE FOR DTFCN @V305066 02767000 MODEL3 EQU X'03' 3420 MODEL 3 @V305066 02768000 DTFCD EQU X'04' PUNCH @V305066 02769000 SPANNED EQU X'04' SPANNED @V305066 02770000 MODEL5 EQU X'04' 3420 MODEL 5 @V305066 02771000 USERENTY EQU X'04' USER ENTRY @V305066 02772000 BPI1600 EQU X'04' 1600 BPI TAPE DENSITY @V305066 02773000 LSTPCH EQU X'04' SYSLST/SYSPCH @V305066 02774000 PRTIND EQU X'04' @V305066 02775000 DEV3330 EQU X'04' @V305066 02776000 IOREG EQU X'04' @V305066 02777000 PCHFILE EQU X'04' @V305066 02778000 PCH3525 EQU X'04' @V305066 02779000 TWOIO EQU X'04' @V305066 02780000 HEX04 EQU X'04' @V305066 02781000 MODEL7 EQU X'05' 3420 MODEL 7 @V305066 02782000 DEV333B EQU X'05' 3330-11 DTF DEV CODE @V505098 02783000 DEV3350 EQU X'07' 3350 DTF DEV CODE @V505098 02784000 ASSOC EQU X'07' FUNC/ASSOC SPECIFIED ON DTF @V305066 02785000 DTFPR EQU X'08' PRINTER @V305066 02786000 INPUT EQU X'08' INPUT FILE @V305066 02787000 LOADPT EQU X'08' TAPE LOAD POINT @V305066 02788000 ENDEXT EQU X'08' END OF EXTENT CONDITION @V305066 02789000 TYP2314 EQU X'08' 2314/2319 @V305066 02790000 HEX08 EQU X'08' @V305066 02791000 PRINTER EQU X'08' @V305066 02792000 VARIBL EQU X'08' @V305066 02793000 TYP3330 EQU X'09' 3330 ADT DEV CODE @V505098 02794000 TYP3350 EQU X'0B' 3350 ADT DEV CODE @V505098 02795000 HEX10 EQU X'10' @V305066 02796000 RDR3525 EQU X'10' @V305066 02797000 PRT3525 EQU X'10' @V305066 02798000 BPI6250 EQU X'10' 6250 TAPE DENSITY FROM SENSE @V305066 02799000 BPI800 EQU X'10' 800 BPI FROM SENSE @V305066 02800000 SEVTRK EQU X'10' 7TRK SENSE INDICATOR @V305066 02801000 NEWVOL EQU X'10' NEW VOLUME SWITCH @V305066 02802000 DOS EQU X'10' IND. DOSCB FOR DOS DISK @V305066 02803000 TAP7 EQU X'10' @V305066 02804000 EXITEOF EQU X'10' SW TO EXIT TO EOF ROUT @V305066 02805000 READZONE EQU X'10' @V305066 02806000 CPTAP EQU X'10' @V305066 02807000 IO2 EQU X'10' @V305066 02808000 TRKHOLD EQU X'10' TRK HOLD OPTION @V305066 02809000 PBITON EQU X'10' @V305066 02810000 NOLAB EQU X'11' NOLAB/NONSTD @V305066 02811000 STD EQU X'12' @V305066 02812000 HEX18 EQU X'18' @V305066 02813000 SDTYPE EQU X'20' DTFSD - DISK @V305066 02814000 OPENIGN EQU X'20' @V305066 02815000 DUAL EQU X'20' DUAL DENSITY DRIVE @V305066 02816000 LASTVOL EQU X'20' LAST VOLUME OF DATA SET @V305066 02817000 PCH2520 EQU X'20' 2520 PUNCH @V305066 02818000 HEX20 EQU X'20' @V305066 02819000 CNTLCHAR EQU X'20' @V305066 02820000 TWENTY EQU X'20' @V305066 02821000 VSAMON EQU X'20' SYSGEN VSAM=YES FLG IN SYSCOM @V305106 02822000 PCH2540 EQU X'21' 2540 PUNCH @V305066 02823000 PUN3525 EQU X'23' @V305066 02824000 ABCODE EQU X'26' CODE PASSED TO DMSBAB @V305066 02825000 ACB EQU X'28' @V305066 02826000 THIRTY1 EQU X'31' @V305066 02827000 THIRTY2 EQU X'32' @V305066 02828000 THIRTY3 EQU X'33' @V305066 02829000 BLANK EQU X'40' @V305066 02830000 HEX40 EQU X'40' @V305066 02831000 FORTY EQU X'40' @V305066 02832000 LA EQU X'41' @V305066 02833000 PRTUCS EQU X'42' 1403 WITH UCS @V305066 02834000 UCS EQU X'42' @V305066 02835000 FIFTY EQU X'50' @V305066 02836000 TCR EQU X'51' TAPE CARTRIDGE READER @V305066 02837000 SIXTY EQU X'60' @V305066 02838000 DSK2314 EQU X'62' @V305066 02839000 DSK3330 EQU X'63' 3330-11 PUB DEV CODE @V505098 02840000 DSK333B EQU X'65' 3350 PUB DEV CODE @V505098 02841000 DSK3350 EQU X'67' @V505098 02842000 DSK3340 EQU X'68' @V305066 02843000 DSK35MB EQU X'69' 3340 35MB @V305066 02844000 DATA EQU X'7B' ALLOW DATA CHECKS @V305066 02845000 HEX7F EQU X'7F' @V305066 02846000 SUPPRESS EQU X'73' SUPPRESS DATA CHECKS @V305066 02847000 PHTAB EQU X'80' DTFPH TABLE @V305066 02848000 STDLABEL EQU X'80' STD LABEL TAPE @V305066 02849000 CON80 EQU X'80' @V305066 02850000 DATACKS EQU X'80' @V305066 02851000 BUSY EQU X'80' @V305066 02852000 HEX80 EQU X'80' @V305066 02853000 EQCHK EQU X'86' EQUIPMENT CHECK @V305066 02854000 NINETY2 EQU X'92' @V305066 02855000 EXCP EQU 0 @V305066 02856000 ONE EQU 1 @V305066 02857000 TEN EQU 10 @V305066 02858000 HUNDRED EQU 100 @V305066 02859000 HUNDRED4 EQU 104 @V305066 02860000 SVC11 EQU 11 @V305066 02861000 ELEVEN EQU 11 @V305066 02862000 REGADDR EQU 1181 A(USER REGSAVE AREA) FROM TRANS S@V305106 02863000 LISTPNT EQU 1196 A(USER ACB LIST) FROM TRANS START@V305106 02864000 TWELVE EQU 12 @V305066 02865000 THIRTEEN EQU 13 @V305066 02866000 FOURTEEN EQU 14 @V305066 02867000 FIFTEEN EQU 15 @V305066 02868000 SIXTEEN EQU 16 @V305066 02869000 SEVTEEN EQU 17 @V305066 02870000 SVC2 EQU 2 @V305066 02871000 TWO EQU 2 @V305066 02872000 TWENTY4 EQU 24 @V305066 02873000 THREE EQU 3 @V305066 02874000 THIRTY6 EQU 36 @V305066 02875000 FOUR EQU 4 @V305066 02876000 RC40 EQU 40 @V305066 02877000 RC44 EQU 44 @V305066 02878000 FIVE EQU 5 @V305066 02879000 SVCSIX EQU 6 @V305066 02880000 SIX EQU 6 @V305066 02881000 WAIT EQU 7 @V305066 02882000 SEVEN EQU 7 @V305066 02883000 SVC8 EQU 8 @V305066 02884000 EIGHT EQU 8 @V305066 02885000 DIVID9 EQU 9 @V305066 02886000 NINE EQU 9 @V305066 02887000 EJECT 02888000 FREE DSECT FREE STORAGE DSECT @VM03139 02889000 DDNAME DS D MESSAGE FIELD - SYSXXX/CUU @V305066 02890000 SETMODE DS D CCW @V305066 02891000 STMODCCW DS D CCW @V305066 02892000 FULLWORD DS F USED FOR IO ADD/NUC.TAB. ADD @V305066 02893000 BUFFER DS XL1 NEXT 21F IO BUFFER @V305066 02894000 BUFF2 DS XL1 LOADPT @V305066 02895000 DS XL1 @V305066 02896000 BUFF4 DS XL1 BPI @V305066 02897000 DS XL2 @V305066 02898000 BUFF7 DS XL1 MODEL @V305066 02899000 DS XL1 @V305066 02900000 DS 19F REST OF BUFFER @V305066 02901000 TEMPSAVE DS F TEMP. SAVE AREA @V305066 02902000 HOLD DS F TEMP. SAVE AREA @V305066 02903000 SAVEPTR DS F TEMP. SAVE AREA @V305066 02904000 CCBAD DS F DOSCB ADDRESS @V305066 02905000 SPACE 2 02906000 PLIST DS CL8 IO PLIST @V305066 02907000 FUNC DS CL8 @V305066 02908000 DEVID DS CL4 @V305066 02909000 PMODE DS 1X @V305066 02910000 BUFFAD DS CL3 @V305066 02911000 BUFFLEN DS CL4 @V305066 02912000 BYTES DS CL4 @V305066 02913000 SPACE 2 02914000 SAVEFN DS CL7 MSG FLD FOR SYSXXX/FILENAME/TAPN @V305066 02915000 SAVESENS DS XL1 SAVE FOR SENSE INFORMATION @V305066 02916000 DS XL1 @V305066 02917000 MOD468SW DS XL1 SW FOR 3420 MODELS 4,8,8 @V305066 02918000 MOD357SW DS XL1 SW FOR 3420 MODELS 3,5,7 @V305066 02919000 TEMP DS XL1 SAVE FOR PUB ZONE @V305066 02920000 FULSAV DS H TEMP. SAVE AREA @V305066 02921000 CPBYTE DS XL1 SAVE FOR DTFCP/DTFDI DTF TYPE @V305066 02922000 CPBYTE2 DS XL1 2311 DEFAULT DEV. CODE IN DTFSD @V305066 02923000 FREEND DS 0D @V305101 02924000 FREELN EQU (FREEND-FREE) @V305101 02925000 FREEDB EQU (FREEND-FREE)/8 @V305101 02926000 EJECT 02927000 EXTENT DSECT @V305066 02928000 TYPEEXT DS CL1 TYPE OF DATA EXTENT @V305066 02929000 TYPE00 EQU X'00' NO EXTENTS PRESENT @V305066 02930000 EXTSEQ DS CL1 EXTENT SEQUENCE NUMBER @V305066 02931000 EXTLOW DS CL4 EXTENT LOWER LIMIT @V305066 02932000 EXTUP DS CL4 EXTENT UPPER LIMIT @V305066 02933000 EJECT 02934000 DTF DSECT @V305066 02935000 DS CL16 @V305066 02936000 FLAGIGN DS CL1 @V305066 02937000 DS CL3 @V305066 02938000 DTFTYPE DS CL1 DTF TYPE @V305066 02939000 OPENSW DS CL1 OPEN SWITCH @V305066 02940000 DS CL14 @V305066 02941000 OPENSW2 DS CL1 @V305066 02942000 DS CL16 @V305066 02943000 REG DS CL1 @V305066 02944000 DS CL1 @V305066 02945000 IOPTR DS CL1 @V305066 02946000 EJECT 02947000 DTFUNIT DSECT @V305066 02948000 CCB DS CL6 @V305066 02949000 LOGUNT DS CL3 @V305066 02950000 CCWADDR DS CL3 @V305066 02951000 DS CL4 @V305066 02952000 SWITCH3 DS CL4 @V305066 02953000 DTFTYP DS CL1 @VM03139 02954000 SWITCH DS CL1 @V305066 02955000 COMCODE DS CL2 @V305066 02956000 BUFFER1 DS CL10 @V305066 02957000 LODIOREG DS CL4 @V305066 02958000 DEVCODE DS CL1 @V305066 02959000 EJECT 02960000 DTFSDW DSECT SEQUENTIAL DISK WORKFILE DSECT @VM03139 02961000 DS CL6 @V305066 02962000 UNITSDW DS CL1 LOGICAL UNIT @V305066 02963000 CLASSSDW DS CL1 CLASS @V305066 02964000 DS CL4 @V305066 02965000 DOSSDW DS CL4 DOSCB ADDRESS @V305066 02966000 DS CL4 @V305066 02967000 TYPESDW DS CL1 DTF TYPE X'20' @V305066 02968000 SDWFLAG1 DS CL1 @V305066 02969000 OPENSDW EQU X'04' FILE OPENED @V305066 02970000 FILESDW DS CL7 FILENAME @V305066 02971000 DEVSDW DS CL1 DEVICE TYPE CODE @V305066 02972000 SDWCAP DS CL2 TRACK CAPACITY COUNTER @V305066 02973000 DS CL4 @V305066 02974000 SDWSEQ DS CL1 EXTENT SEQUENCE NUMBER @V305066 02975000 COMSDW DS CL1 OPEN COMMUNICATIONS BYTE @V305066 02976000 EXTOPENW EQU X'04' EXTENT OPENED @V305066 02977000 LOHDSDW DS CL1 LOWER HEAD LIMIT @V305066 02978000 UPHDSDW DS CL1 UPPER HEAD LIMIT @V305066 02979000 LRECLSDW DS CL2 RECORD LENGTH @V305066 02980000 EXT1LL DS CL4 INITIAL EXTENT LOWER LIMIT @V305066 02981000 CUREXTLL DS CL4 CURRENT EXTENT LOWER LIMIT @V305066 02982000 EXTUPLIM DS CL4 EXTENT UPPER LIMIT @V305066 02983000 SEEKSDW DS CL2 SEEK ADDRESS (CCHH) @V305066 02984000 SRCHSDW DS CL4 SEARCH ADDRESS (CCHH) @V305066 02985000 RECSDW DS CL1 RECORD NUMBER @V305066 02986000 LOGMODSW DS CL1 LOGIC MODULE SWITCH @V305066 02987000 SWOFF EQU X'7F' SET WORK FILE SW OFF @V305066 02988000 MAXREC DS CL2 MAXIMUM RECORD LENGTH @V305066 02989000 DS CL1 @V305066 02990000 EOFSDW DS CL3 USER'S EOF ADDRESS @V305066 02991000 LOGIND DS CL1 LOGICAL INDICATORS @V305066 02992000 CNTLIM EQU DTFSDW+144 COUNT AREA @V305066 02993000 EJECT 02994000 DTFSD DSECT SEQUENTIAL DISK DSECT @V305066 02995000 DS CL6 @V305066 02996000 UNITSD DS CL1 LOGICAL UNIT @V305066 02997000 CLASSSD DS CL1 CLASS @V305066 02998000 DS CL4 @V305066 02999000 DOS1SD DS CL4 DOSCB ADDRESS @V305066 03000000 SDFLAG0 DS CL1 @V305066 03001000 SPANSD EQU X'02' SPANNED PROCESSING @V305066 03002000 DS CL3 @V305066 03003000 TYPESD DS CL1 DTF TYPE = X'20' @V305066 03004000 SDFLAG1 DS CL1 @V305066 03005000 SDBLOCK EQU X'40' BLOCKED FILE @V305066 03006000 SDWORK EQU X'20' WORK FILE @V305066 03007000 OPENSD EQU X'04' FILE OPEN @V305066 03008000 INPSD EQU X'02' INPUT FILE @V305066 03009000 FILESD DS CL7 FILENAME @V305066 03010000 DEVSD DS CL1 DEVICE TYPE CODE @V305066 03011000 DS CL8 @V305066 03012000 COMSD DS CL1 OPEN COMMUNICATIONS BYTE @V305066 03013000 NOEXTSD EQU X'80' NO MORE EXTENTS @V305066 03014000 EOFSD EQU X'10' EXIT TO USER'S EOF ROUTINE @V305066 03015000 DS CL5 @V305066 03016000 SDIO1 DS CL4 ADDRESS OF IOAREA1 @V305066 03017000 DS CL4 @V305066 03018000 HHSD DS CL2 LOWER HEAD LIMIT @V305066 03019000 CCHHSD DS CL4 EXT UPPER LIMIT (CCHH) @V305066 03020000 SEEKSD DS CL2 SEEK ADDRESS (BB) @V305066 03021000 SEARCHSD DS CL4 SEARCH ARGUMENT @V305066 03022000 RECSD DS CL1 RECORD NUMBER @V305066 03023000 EODSD DS CL3 EOF ADDRESS IF INPUT @V305066 03024000 CONSD DS CL4 CCHH CONTROL FIELD @V305066 03025000 TRK EQU CONSD+3 TRK PORTION OF CCHH CONTROL FLD @V305066 03026000 RECTRKSD DS CL1 NO RECS PER TRK/INP @V305066 03027000 * NO RECS PER TRK MINUS ONE/OUT 03028000 SDFLAG2 DS CL1 @V305066 03029000 BLKLESS1 DS CL2 BLOCKSIZE MINUS ONE @V305066 03030000 CCHHRSD DS CL5 EXT LOWER LIMIT AND RECORD NO. @V305066 03031000 TRKCAPSD DS CL3 TRACK CAPACITY COUNTER IF OUTPUT @V305066 03032000 IOREGSD DS CL4 INST. TO LOAD IOREG @V305066 03033000 CURIOSD DS CL4 ADDRESS OF CURRENT I/O AREA @V305066 03034000 LRECLSD DS CL4 LOGICAL RECORD SIZE @V305066 03035000 ENDIOSD DS CL4 ADDRESS OF END OF I/O AREA @V305066 03036000 SDFLAG3 DS CL1 LOGICAL INDICATORS @V305066 03037000 IO2SD EQU X'08' 2 I/O AREAS @V305066 03038000 FIXSD EQU X'02' FIXED LENGTH RECORDS @V305066 03039000 CNTRLSD EQU X'01' CONTROL PARAMETER SPECIFIED @V305066 03040000 UNDEFOP EQU X'04' UNDEFINED O/P FILE @V305066 03041000 DS CL35 @V305066 03042000 CCWA DS CL8 BEG. OF VARIABLE PORTION OF DTF @V305066 03043000 CCWB DS CL8 CHK CCWA/CCWB FOR TRUNCS AND UPD @V305066 03044000 DS CL12 @V305066 03045000 DOS2SD DS CL4 VAR/UNDEF/SPAN/INP/UPD=NO DOSCB ADD@V305066 03046000 DS CL8 @V305066 03047000 ORG CCWA FIXBLK,UPDATE,INP @V305066 03048000 DS CL36 FIXBLK,CONTROL,OUTPUT @V305066 03049000 DOS3SD DS CL4 DOSCB ADDRESS @V305066 03050000 DS CL8 @V305066 03051000 ORG CCWA FIXBLK,TRUNC,UPDATE,INP @V305066 03052000 DS CL52 VAR,OUTPUT,CONTROL @V305066 03053000 DOS4SD DS CL4 DOSCB ADDRESS @V305066 03054000 DS CL8 @V305066 03055000 ORG CCWA @V305066 03056000 DS CL12 FIXBLK,CONTROL,INPUT @V305066 03057000 DOS5SD DS CL4 DOSCB ADDRESS @V305066 03058000 DS CL8 @V305066 03059000 ORG CCWA VAR,UNDEF,INP,UPDATE @V305066 03060000 DS CL68 @V305066 03061000 DOS6SD DS CL4 DOSCB ADDRESS @V305066 03062000 DS CL8 @V305066 03063000 ORG CCWA UNDEF,OUTPUT,CONTROL @V305066 03064000 DS CL45 @V305066 03065000 DOS7SD DS CL4 DOSCB ADDRESS @V305066 03066000 DS CL8 @V305066 03067000 ORG CCWA @V305066 03068000 DS CL12 FIXBLK,INP,TRUNCS=NO,UPD=NO @V305066 03069000 DOS8SD DS CL4 CONTROL= YES DOSCB ADDRESS @V305066 03070000 DS CL8 @V305066 03071000 EJECT 03072000 DTFMT DSECT @V305066 03073000 DS CL6 @V305066 03074000 UNITMT DS CL1 LOGICAL UNIT @V305066 03075000 CLASSMT DS CL1 CLASS @V305066 03076000 DS CL8 @V305066 03077000 MTFLAG0 DS CL1 TAPE SWITCH @V305066 03078000 DS CL3 @V305066 03079000 TYPEMT DS CL1 DTF TYPE = X'10'-X'14' @V305066 03080000 MTFLAG1 DS CL1 @V305066 03081000 WKNORWD EQU X'80' NO REWIND SPECIFIED @V305066 03082000 MTWORK EQU X'10' WORK AREA SPECIFIED @V305066 03083000 MTINP EQU X'08' INPUT FILE @V305066 03084000 MTFN DS CL8 FILENAME @V305066 03085000 MTFLAG2 DS CL1 TAPE SWITCH @V305066 03086000 DS CL1 @V305066 03087000 NOREWIND EQU X'10' NOREWIND SPECIFIED @V305066 03088000 NONSTD EQU X'40' NON-STANDARD LABEL PROCESSING @V305066 03089000 BACKWARD EQU X'08' DRIVE DIRECTION = BACKWARD @V305066 03090000 MTFLAG3 DS CL1 TAPE SWITCH @V305066 03091000 FILETYPE EQU X'20' INPUT FILE @V305066 03092000 MTOPEN EQU X'04' FILE OPEN @V305066 03093000 ENDFILE EQU X'08' END OF FILE SWITCH ON @V305066 03094000 DS CL3 @V305066 03095000 MTFLAG4 DS CL1 @V305066 03096000 MTDOF DS CL3 END OF FILE ADDRESS @V305066 03097000 MTBLOCK DS CL4 BLOCK COUNT @V305066 03098000 DS CL8 @V305066 03099000 MTIOREG DS CL4 INST TO LOAD IOREG @V305066 03100000 DS CL8 @V305066 03101000 MTIO DS CL4 IOAREA ADDRESS @V305066 03102000 EJECT 03103000 DTFCP DSECT @V305066 03104000 DS CL8 @V305066 03105000 CPCCW1 DS CL4 CCW ADDRESS @V305066 03106000 DOSCB1 DS CL4 @V305066 03107000 CPFLAG0 DS CL1 SWITCH @V305066 03108000 DS CL3 @V305066 03109000 TYPECP DS CL1 DTF TYPE @V305066 03110000 CPFLAG1 DS CL1 OPEN INDICATORS @V305066 03111000 CPFN DS CL7 FILENAME @V305066 03112000 CPDEV DS CL1 DEVICE TYPE CODE @V305066 03113000 CPDSK DS CL1 CODE IND WHETHER DISK POSSIBLE @V305066 03114000 CPSYSPCH DS CL1 @V305066 03115000 DS CL1 @V305066 03116000 CPIOREG DS CL1 IOREG @V305066 03117000 DS CL3 @V305066 03118000 CPIOREG2 DS CL1 IOREG FOR DIFFERENT DTF @V305066 03119000 CPFLAG2 DS CL1 OPEN SWITCH @V305066 03120000 CPSEQC DS CL1 CURRENT EXTENT SEQ @V305066 03121000 CPSEQL DS CL1 LAST EXT SEQUENCE @V305066 03122000 CPFLAG3 DS CL1 STANDARD LABEL SWITCH @V305066 03123000 CPDEVTY DS CL1 @V305066 03124000 CPFLAG4 DS CL1 DASD,RDR, OR OTHER @V305066 03125000 DASD EQU X'F3' DASD @V305066 03126000 OTHER EQU X'F0' OTHER @V305066 03127000 CPFLAG5 DS CL1 @V305066 03128000 CPIN EQU X'80' @V305066 03129000 DS CL7 @V305066 03130000 CPLOHD DS CL2 LOWER HD LIMIT @V305066 03131000 CPEXTUP DS CL4 EXT UPPER LIMIT @V305066 03132000 DS CL10 @V305066 03133000 CPBUCK DS CL4 CONTROL BUCKET CCHH @V305066 03134000 CPRECS DS CL1 NO. RECS/TRK/ FOR OUT @V305066 03135000 * NO. RECS/TRK+1 FOR INPUT 03136000 CPFLAG6 DS CL1 @V305066 03137000 CPDEVID DS CL2 @V305066 03138000 CPCOUNT DS CL5 CCHHR FOR COUNT FIELD @V305066 03139000 DS CL1 @V305066 03140000 CPDATLEN DS CL2 DATALENGTH IN DTF @V305066 03141000 CPINSTR DS CL4 INST. TO LOAD IOAREA TO IOREG @V305066 03142000 DS CL24 @V305066 03143000 CPCCWI DS CL8 CCW FOR DASD INP AND 1ST CCW FOR DASD OUT @V305066 03144000 CPCCWO DS CL8 SEC CCW FOR O/P @V305066 03145000 EJECT 03146000 TAPERES DSECT @V305066 03147000 DS CL2 @V305066 03148000 CCBSW DS CL14 @V305066 03149000 DS CL1 @V305066 03150000 LOGMOD1 DS CL3 LOGIC MODULE ADDRESS @V305066 03151000 CPTYPE1 DS CL1 DTF TYPE FOR TAPE RES X'31' @V305066 03152000 CPOPEN1 DS CL1 OPEN INDICATORS @V305066 03153000 CPFN1 DS CL7 FILENAME @V305066 03154000 DS CL1 @V305066 03155000 CPFLAG7 DS CL1 X'00' IND TO DTFCP OPEN PHASES @V305066 03156000 CPFLAG8 DS CL1 @V305066 03157000 CPFLAG9 DS CL1 OPEN INDICATORS @V305066 03158000 IO2AD DS CL3 IOAREA2 ADDRESS @V305066 03159000 CPINST DS F INST. TO LOAD IOAREA AD TO IOREG @V305066 03160000 CPCCW0 DS D CCW @V305066 03161000 *** END OF TABLE IF DTF IS DEFINED AS O/P AND DEVADDR IS NOT SYSPCH 03162000 PUNCCW1 DS D 2540 PUNCH ERROR RECOVERY CCW1 @V305066 03163000 PUNCCW2 DS D 2540 PUNCH ERROR RECOVERY CCW2 @V305066 03164000 CPEOF DS CL3 EOF ADDRESS - INPUT ONLY @V305066 03165000 EJECT 1 03166000 IKQACB @VM03188 03167000 EJECT 03168000 CPUNTREC DSECT @V305066 03169000 CPCCB DS CL6 CCB @V305066 03170000 DS CL3 @V305066 03171000 CCWPTR DS CL3 CCW POINTER @V305066 03172000 DS CL4 @V305066 03173000 LOGIC DS CL4 LOGIC MODULE ADDRESS @V305066 03174000 TYPECP2 DS CL1 DTFTYPE @V305066 03175000 CPOPEN2 DS CL1 @V305066 03176000 FILNAM DS CL7 FILENAME @V305066 03177000 DASDID DS CL1 DASD DEVICE IDENTIFICATION @V305066 03178000 CPOIND DS CL6 F1 ADDRESS OR INDICATOR @V305066 03179000 LOAD2 EQU CPOIND+2 LOAD INSTRUCTION @V305066 03180000 DS CL2 VOL SEQ NUMBER @V305066 03181000 DS CL1 DISK OPEN SWITCH @V305066 03182000 DS CL1 XTNT SEQ NO OF CURRENT EXTENT @V305066 03183000 XTNWRK DS CL1 XTNT SEQ NO OF LAST EXTENT @V305066 03184000 DS CL1 @V305066 03185000 SWITHS DS CL1 LOGICAL INDICATORS @V305066 03186000 SYSTYPE DS CL1 INDICATOR FOR DTFCP OPEN @V305066 03187000 OPSW1 DS CL1 @V305066 03188000 ALTIO DS CL3 IO AREA @V305066 03189000 CCWND DS CL4 USER LABEL @V305066 03190000 CCWE1 EQU CCWND+8 AREA TO RELOCATE PPNCH ERR CCW1 @V305066 03191000 CCWE2 EQU CCWE1+8 AREA TO RELOCATE PUNCH ERR CCW2 @V305066 03192000 DS CL8 @V305066 03193000 CPSEK DS CL4 CCHH @V305066 03194000 CPRECORD DS CL1 R @V305066 03195000 EOFADR DS CL3 EOF ADDRESS FOR INPUT FILES @V305066 03196000 CPUPP DS CL4 UPPER LIMIT @V305066 03197000 CPRMX DS CL1 NO. RECORDS/TRACK @V305066 03198000 SAVE1 EQU CPRMX CARD IMAGE SAVE AREA 1 @V305066 03199000 DS CL1 WORK AREA @V305066 03200000 DS CL1 WORK AREA @V305066 03201000 CCWKN DS CL1 ADJUSTMENT FOR CCW @V305066 03202000 CPCNT DS CL6 COUNT AND KEY FIELD @V305066 03203000 DATALGTH DS CL2 DATA LENGTH FIELD @V305066 03204000 LOAD DS CL4 LOAD USER IO REGISTER @V305066 03205000 DS 3D @V305066 03206000 CCWASA DS D @V305066 03207000 CCWOT DS D @V305066 03208000 DS 3D @V305066 03209000 E1CCW DS D 2540 PUNCH ERROR CCW1 @V305066 03210000 SAVE2 EQU E1CCW CARD IMAGE SAVE AREA 2 @V305066 03211000 E2CCW DS D 2540 PUNCH ERROR CCW2 @V305066 03212000 EJECT 03213000 NUCON @V305066 03214000 REGEQU @V305066 03215000 EJECT 03216000 DOSCB @V305066 03217000 OSFST @V305066 03218000 EJECT 03219000 ADT @V305066 03220000 EJECT 03221000 MAPPUB @V305066 03222000 SYSCOM @V305106 03223000 BGCOM @V305066 03224000 FSTB @V305066 03225000 EJECT 03226000 DOSAVE @V305066 03227000 SYSNAMES @V305066 03228000 DMSBOP CSECT @V305066 03229000 LTORG @V305066 03230000 END 03231000