CLS TITLE 'DMSCLS (CMS) VM/370 - RELEASE 6' 00001000 SPACE 2 00002000 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00003000 *. * 00004000 * MODULE NAME: * 00005000 * DMSCLS * 00006000 * * 00007000 * FUNCTION: * 00008000 * DMSCLS CLOSES CMS/DOS FILES ASSOCIATED WITH THE * 00009000 * FOLLOWING DTFS - DTFCN, DTFCD, DTFPR, DTFMT, DTFDI, * 00010000 * DTFCP AND DTFSD. THE CLOSE OPERATION DEPENDS ON * 00011000 * BOTH DTF TYPE AND DEVICE TYPE AS DETERMINED FROM THE * 00012000 * PUB ASSIGNMENT. ONCE THE DTF TABLE HAS BEEN IDENTIFIED * 00013000 * AS CLOSED, A 'CP CLOSE' IS PERFORMED IN THE CASE OF * 00014000 * READER, PRINTER, AND PUNCH. IF A DISK FILE IS BEING * 00015000 * CLOSED, A 'FINIS FN FT FM' IS PERFORMED. IF A DISK * 00016000 * WORKFILE IS BEING CLOSED AND DELETFL=NO IS NOT * 00017000 * SPECIFIED, THE WORKFILE IS ERASED (DMSERS). * 00018000 * * 00019000 * ATTRIBUTES: * 00020000 * DISCONTIGUOUS SHARED SEGMENT * 00021000 * REENTRANT * 00022000 * * 00023000 * ENTRY POINTS: * 00024000 * DMSCLS * 00025000 * * 00026000 * ENTRY CONDITIONS: * 00027000 * DMSCLS IS INVOKED BY MEANS OF THE CLOSE OR CLOSER * 00028000 * MACRO EXPANSION OR IN RESPONSE TO AN SVC 2 (FETCH FOR * 00029000 * $$BCLOSE) BEING ISSUED BY A PROBLEM PROGRAM. * 00030000 * * 00031000 * EXAMPLE: * 00032000 * CLOSE DTF1,DTF2,DTF3 * 00033000 * + CNOP 0,4 * 00034000 * + DC 0F'0' * 00035000 * + LA 1,=C'$$BCLOSE' * 00036000 * +IJJC0002 BAL 0,*+4+4*(2-1) * 00037000 * + DC A(DTF1) * 00038000 * + DC A(DTF2) * 00039000 * + DC A(DTF3) * 00040000 * + SVC 2 * 00041000 * * 00042000 * THE CLOSE ROUTINE IS INVOKED BY MEANS OF AN SVC 2. * 00043000 * SVC 2 IS A FETCH FOR THE ROUTINE POINTED TO BY R1 AS * 00044000 * A RESULT OF THE MACRO EXPANSION...IN THIS CASE * 00045000 * $$BCLOSE. UPON ENTRY TO DMSCLS, R0 POINTS TO THE * 00046000 * FIRST DTF OR ACB ADCON IN THE MACRO EXPANSION. * 00047000 * * 00048000 * EXIT CONDITIONS: * 00049000 * * 00050000 * NORMAL RETURN = 0 * 00051000 * * 00052000 * NORMAL EXITS: * 00053000 * SVC 11 - RETURN TO PROBLEM PROGRAM AFTER CLOSE IS * 00054000 * COMPLETE. * 00055000 * * 00056000 * SVC 2 - FETCH FOR $$BCVSAM TO CLOSE ANY ACBS. THIS * 00057000 * WILL BE FOLLOWED BY A RETURN TO DMSCLS AND AN EVENTUAL * 00058000 * RETURN TO THE PROBLEM PROGRAM VIA AN SVC 11. * 00059000 * * 00060000 * ABNORMAL EXITS: * 00061000 * R15 = 24 * 00062000 * R15 = 36 * 00063000 * R15 = 100 * 00064000 * R15 = 40 * 00065000 * IN EACH OF ABOVE SITUATIONS, ROUTINE IS * 00066000 * CANCELLED WITH AN SVC 6. * 00067000 * * 00068000 * ERROR MESSAGES ISSUED BY THIS ROUTINE: * 00069000 * * 00070000 * DMSCLS088E UNSUPPORTED DTF TYPE 'DTF TYPE' * 00071000 * * 00072000 * EXPLANATION: ATTEMPT TO OPEN * 00073000 * UNSUPPORTED DTF TYPE . * 00074000 * * 00075000 * SYSTEM ACTION: RC = 24 * 00076000 * THE SESSION IS CANCELLED. * 00077000 * * 00078000 * USER ACTION: USE A SUPPORTED DTF * 00079000 * IN THE USER PROGRAM AND RESTART THE * 00080000 * SESSION. * 00081000 * * 00082000 * DMSCLS113S 'TAPN (CUU)' NOT ATTACHED * 00083000 * * 00084000 * EXPLANATION: THE TAPE HAS NOT BEEN * 00085000 * MOUNTED AND/OR THE DEVICE IS NOT * 00086000 * READY. * 00087000 * * 00088000 * SYSTEM ACTION: RC = 100 * 00089000 * THE SESSION IS CANCELLED * 00090000 * * 00091000 * USER ACTION: ATTACH THE TAPE TO * 00092000 * THE USER'S VIRTUAL MACHINE AND RE- * 00093000 * START THE SESSION. * 00094000 * * 00095000 * DMSCLS058E END-OF-FILE OR END-OF-TAPE ON 'TAPN'* 00096000 * * 00097000 * EXPLANATION: END OF FILE OR END * 00098000 * OF TAPE HAS BEEN ENCOUNTERED WHILE * 00099000 * PERFORMING TAPE I/O OPERATIONS. * 00100000 * * 00101000 * SYSTEM ACTION: RC = 40 * 00102000 * THE SESSION IS CANCELLED. * 00103000 * * 00104000 * USER ACTION: REWIND AND REPOSITION * 00105000 * THE TAPE AND RESTART THE SESSION. * 00106000 * * 00107000 * DMSCLS043E TAPN IS FILE PROTECTED. * 00108000 * * 00109000 * EXPLANATION: TAPN WHERE N= 1, 2, 3,* 00110000 * 4 IS FILE PROTECTED. * 00111000 * * 00112000 * SYSTEM ACTION: RC = 36 * 00113000 * THE SESSION IS CANCELLED. * 00114000 * * 00115000 * USER ACTION: VERIFY THAT THE * 00116000 * CORRECT TAPE HAS BEEN SELECTED, * 00117000 * CORRECT THE FILE PROTECT SITUATION * 00118000 * AND RESTART THE SESSION. * 00119000 * * 00120000 * DMSCLS089E CLOSE ERROR CODE 'NN' ON * 00121000 * FN/SYSXXX/TAPN * 00122000 * * 00123000 * EXPLANATION: THIS MESSAGE WILL BE * 00124000 * ISSUED FOR MANY OF THE CLOSE ERROR * 00125000 * MESSAGES. A UNIQUE ERROR CODE IN * 00126000 * THE MESSAGE WILL IDENTIFY THE ERROR * 00127000 * SITUATION. * 00128000 * * 00129000 * * 00130000 * SYSTEM ACTION: * 00131000 * * 00132000 * RC = 1 * 00133000 * SYSXXX VALUE IN DOSCB DOES NOT * 00134000 * MATCH THE VALUE IN THE DTF. * 00135000 * * 00136000 * RC = 3 * 00137000 * ATTEMPTING TO CLOSE A SEQUENTIAL * 00138000 * DISK FILE BUT NO DOSCB EXISTS WITH * 00139000 * THE DOSCB DDNAME EQUAL TO THE DTF * 00140000 * FILENAME. CMS/DOS REQUIRES A USER * 00141000 * ISSUED DLBL FOR ALL SEQUENTIAL DISK * 00142000 * INPUT AND OUTPUT FILES. * 00143000 * * 00144000 * * 00145000 * RC = 4 * 00146000 * ATTEMPT TO CLOSE DTFCD/DTFPR WITH * 00147000 * ASSOCFLE/FUNC PARAMETERS SPECIFIED * 00148000 * ON DTF MACRO. THESE PARAMETERS ARE * 00149000 * NOT SUPPORTED. * 00150000 * * 00151000 * RC = 7 * 00152000 * THE PUB DEVICE TYPE CODE IS IN- * 00153000 * COMPATIBLE WITH THE DEVICE TYPES * 00154000 * SUPPORTED BY THE DTF BEING CLOSED. * 00155000 * * 00156000 * RC = 8 * 00157000 * SYSTEM OR PROGRAMMER LOGICAL UNIT * 00158000 * IS UNASSIGNED (PUB POINTER IN LUB * 00159000 * EQUALS X'FF'). * 00160000 * * 00161000 * RC = 11 * 00162000 * ASCII=YES SPECIFIED ON THE DTFMT/ * 00163000 * DTFCP MACRO. THIS PARAMETER IS NOT * 00164000 * SUPPORTED. * 00165000 * * 00166000 * RC = 17 * 00167000 * UNEXPECTED TAPE ERROR ENCOUNTERED * 00168000 * WHEN PERFORMING TAPE IO OPERATION. * 00169000 * * 00170000 * THE SESSION IS CANCELLED IN ALL THE * 00171000 * ABOVE SITUATIONS. RC = 36 * 00172000 * * 00173000 * USER ACTION: CORRECT THE INDIVIDUAL* 00174000 * SITUATION AND RESTART THE SESSION. * 00175000 * * 00176000 * CALLS TO OTHER ROUTINES: * 00177000 * DMSTIO - SVC 202 * 00178000 * DMSFNS - FINIS (BALR) * 00179000 * DMSFREB - DMSFREE FOR FREE STORAGE * 00180000 * 'CP CLOSE' TO CLOSE READER, PRINTER AND PUNCH FILES. * 00181000 * DMSXCP - SVC 0 TO PERFORM IO * 00182000 * DMSERR - ERROR MESSAGES * 00183000 * DMSERS - TO ERASE DISK WORKFILES. * 00184000 * * 00185000 * EXTERNAL REFERENCES: * 00186000 * NUCON, DOSAVE, BGCOM, MAPPUB, DOSCB, REGEQU * 00187000 * * 00188000 * CALLED BY: * 00189000 * INVOKED IN RESPONSE TO SVC 2 (FETCH FOR $$BCLOSE). * 00190000 * THE SVC 2 CAN RESULT FROM TWO SITUATIONS: * 00191000 * 1. SVC 2 GENERATED AS PART OF * 00192000 * CLOSE/CLOSER MACRO EXPANSION * 00193000 * WHERE R1 POINTS TO THE NAME OF * 00194000 * A FILE TO BE FETCHED ($$BCLOSE).* 00195000 * * 00196000 * 2. SVC 2 ISSUED IN USER PROGRAM * 00197000 * AND R1 POINTS TO THE NAME OF A * 00198000 * FILE TO BE FETCHED ($$BCLOSE). * 00199000 * * 00200000 * TABLES AND WORK AREAS: * 00201000 * SYSTAB - TABLE CONTAINING A 4 BYTE ENTRY FOR EACH * 00202000 * SYSTEM LOGICAL UNIT. (IE: CL4'RDR', CL4'IPT',* 00203000 * ETC.) THIS TABLE IS USED TO CONVERT THE TWO- * 00204000 * BYTE LOGICAL UNIT IN THE DTF TO THE MORE * 00205000 * RECOGNIZED FORM OF 'SYSXXX'. * 00206000 * * 00207000 * PROCTAB - A TABLE CONTAINING A SERIES OF ADCONS WHICH * 00208000 * POINT TO A LIST OF ROUTINE ADDRESSES TO BE * 00209000 * GIVEN CONTROL IN A GIVEN SITUATION . * 00210000 * PROCTAB EQU * * 00211000 * DC A(PROC7) O/P, NOREW * 00212000 * EXAMPLE: DC A(PROC3) I/P, NOREW * 00213000 * DC A(PROC6) O/P, REW * 00214000 * DC A(PROC1) I/P, REW * 00215000 * * 00216000 * PROC7 DC A(TMWRITE) WRITE TM * 00217000 * DC A(EXIT) EXIT PHASE * 00218000 * * 00219000 * FREE - 31 DOUBLEWORDS OF FREE STORAGE USED FOR * 00220000 * SWITCHES, ADDRESSES, PLISTS AND WORKAREAS * 00221000 * WHICH WILL BE MODIFIES AT SOME POINT DURING THE * 00222000 * PROGRAM. (DMSCLS IS REENTRANT) * 00223000 * * 00224000 * REGISTER USAGE: * 00225000 * * 00226000 * R0 - AT DMSCLS ENTRY R0 POINTS TO THE LIST OF ADCONS * 00227000 * GENERATED BY THE CLOSE MACRO. EACH ADCON IS AN * 00228000 * ADDRESS OF A DTF OR ACB TO BE CLOSED BY THE * 00229000 * PROGRAM. * 00230000 * R1 - PLIST POINTER AND WORKING REGISTER * 00231000 * R2 - DTF POINTER * 00232000 * R3 - WORKING REGISTER * 00233000 * R4 - WORKING REGISTER * 00234000 * R5 - PUB POINTER/WORKING REGISTER * 00235000 * R6 - BAL REGISTER * 00236000 * R7 - WORKING REGISTER * 00237000 * R8 - WORKING REGISTER * 00238000 * R9 - FREE STORAGE POINTER * 00239000 * R10 - BGCOM POINTER * 00240000 * R11 - BASE REGISTER 2 * 00241000 * R12 - BASE REGISTER 1 * 00242000 * R13 - WORKING REGISTER * 00243000 * R14 - WORKING REGISTER * 00244000 * R15 - RETURN CODES * 00245000 * * 00246000 * OPERATION: * 00247000 * * 00248000 * DMSCLS IS THE SIMULATED CLOSE ROUTINE USED BY THE * 00249000 * CMS/DOS SUPPORT TO CLOSE SUPPORTED DTF TYPES. DMSCLS * 00250000 * IS USED INSTEAD OF THE MANY $$B-TRANSIENTS * 00251000 * USED BY DOS/VS. * 00252000 * * 00253000 * DMSCLS PERFORMS THE FOLLOWING MAJOR ACTIVITIES: * 00254000 * * 00255000 * 1. DMSCLS OBTAINS ITS WORK AREA FROM FREE STORAGE. * 00256000 * * 00257000 * 2. THE PROGRAM THEN SCANS THE LIST OF DTF/ACB FILES * 00258000 * TO BE CLOSED. UPON ENCOUNTERING AN ACB, CONTROL * 00259000 * IS PASSED TO THE VSAM CLOSE ROUTINE ($$BCVSAM) * 00260000 * TO CLOSE THE SPECIFIED ACB. * 00261000 * * 00262000 * 3. ONCE THIS IS ACCOMPLISHED, THE DTF TYPE IS EXAMINED* 00263000 * AND CONTROL IS PASSED TO A ROUTINE WHICH CLOSES * 00264000 * THAT PARTICULAR DTF TYPE. * 00265000 * * 00266000 * OPEN IGNORE BIT POSTED - NO ACTION. * 00267000 * * 00268000 * UNIT RECORD EQUIPMENT - (DTF TYPES X'02', X '04', * 00269000 * X'08') RESET OPEN INDICATOR IN DTF. * 00270000 * * 00271000 * TAPE WORKFILE (DTF TYPE X'10') - * 00272000 * IF NOREWIND IS SPECIFIED, THE TAPE IS NOT REWOUND. * 00273000 * IF REWIND/UNLOAD IS SPECIFIED, THE TAPE * 00274000 * IS REWOUND AND UNLOADED. IF A WRITE COMMAND IS * 00275000 * FOUND IN THE DTF, A TAPE MARK IS WRITTEN. * 00276000 * * 00277000 * TAPE DATA FILES (DTF TYPES X'11', X'12', X'14') * 00278000 * IF OUTPUT FILE, AND BLOCKED RECORDS, RETURN CONTROL* 00279000 * TO TRUNCS ROUTINE IN LOGIC MODULE VIA SVC 8. * 00280000 * IF OUTPUT FILE, AND UNBLOCKED RECORDS A TAPE MARK * 00281000 * IS WRITTEN. IF REWIND/UNLOAD IS INDICATED, * 00282000 * THIS ACTION IS TAKEN AND THE DTF IS POSTED CLOSED. * 00283000 * IF A TAPE DATA INPUT FILE, AND NO USASI * 00284000 * COBOL CLOSE, THE NORMAL REWIND/UNLOAD IS * 00285000 * DONE IF SPECIFIED. IF TAPE DATA INPUT FILE, * 00286000 * AND USASI COBOL CLOSE IS SPECIFIED, AND * 00287000 * NONSTANDARD LABEL TAPE, EXIT IS MADE TO USER * 00288000 * LABEL ROUTINE IF SPECIFIED. IN OTHER INPUT CASES, * 00289000 * THE TAPE IS REWOUND/UNLOADED AS SPECIFIED. * 00290000 * * 00291000 * DISK FILES (DTFSD/DTFCP/DTFDI) * 00292000 * IN THE CASE OF OUTPUT FILES, AN EXIT IS MADE TO * 00293000 * THE LOGIC MODULE TO WRITE THE LAST RECORD IF * 00294000 * REQUIRED. OTHERWISE, FIELDS ARE INITIALIZED TO * 00295000 * CLOSE STATUS IN THE DTF AND A CALL IS MADE * 00296000 * TO FINIS TO CLOSE THE DISK FILE. IN THE CASE * 00297000 * OF A DISK WORKFILE WHEN DELETFL=NO HAS NOT * 00298000 * BEEN SPECIFIED ON THE DTF MACRO, A CALL IS MADE * 00299000 * TO DMSERS TO ERASE THE WORKFILE. * 00300000 * * 00301000 * IN THE CASE OF DTFCP SYSTEM TAPE FILES, * 00302000 * NO REWIND OR UNLOAD IS PERFORMED. THIS IS NECESSARY* 00303000 * FOR COMPILER FILES. * 00304000 * * 00305000 * * 00306000 * 4. AFTER EACH DTF TABLE IS INITIALIZED PER THE CLOSE * 00307000 * RULES, A CHECK IS MADE TO SEE IF MORE DTFS REMAIN * 00308000 * TO BE CLOSED. IF SO, PROCESSING CONTINUES AS OUT- * 00309000 * LINED ABOVE IN (3). * 00310000 * * 00311000 * 5. WHEN ALL FILES HAVE BEEN CLOSED, EXIT IS MADE BY * 00312000 * AN SVC 11 TO THE PROBLEM PROGRAM ASSUMING THERE * 00313000 * WERE NO ACBS TO CLOSE. IF ACBS REMAIN TO BE * 00314000 * CLOSED, AN SVC 2 IS ISSUED FOR $$BCVSAM. CONTROL * 00315000 * RETURNS TO DMSBOP AND EXIT IS MADE VIA AND SVC 11. * 00316000 * * 00317000 * 6. WHEN ERRORS ARE ENCOUNTERED, AN APPROPRIATE ERROR * 00318000 * MESSAGE IS ISSUED AND EXIT IS MADE VIA AN SVC 6 * 00319000 * (CANCEL - ABNORMAL TERMINATION). * 00320000 *. * 00321000 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00322000 PUNCH 'SPB' @VA06270 00322500 SPACE 2 00323000 DMSCLS CSECT @V305066 00324000 USING DMSCLS,R12,R11 ESTABLISH ADDRESSABILITY @V305066 00325000 USING DOSSECT,R13 DOSCB ADDRESSABILITY @V305066 00326000 USING NUCON,R0 NUCON ADDRESSABILITY @V305066 00327000 USING FREE,R9 ADDRESSABILITY FOR FREE STORAGE @V305066 00328000 USING DTFSD,R2 DTF ADDRESSABILITY @V305066 00329000 USING PUBADR,R5 PUB ADDRESSABILITY @V305066 00330000 USING BGCOM,R10 PART.COMREG ADDRESSABILITY @V305066 00331000 DC CL8'$$BCLOSE' @V305066 00332000 BALR R12,0 ESTABLISH OWN ADDRESSABILITY @V305066 00333000 USING *,R12,R11 ADDRESSABILITY @V305066 00334000 LA R11,4095(R12) ESTABLISH SECOND BASE REGISTER @V305066 00335000 LA R11,1(,R11) @V305066 00336000 L R10,ASYSREF BGCOM ADDRESS @V305066 00337000 LR R2,R0 PTR TO FIRST DTF/ACB ADCON @V305066 00338000 LA R0,FREEDB GET NO. DOUBLE WORDS FREE STOR @V305101 00339000 DMSFREE DWORDS=(0),TYPE=NUCLEUS,TYPCALL=BALR @V305066 00340000 LR R9,R1 ADDRESS OF FREE STORAGE @V305066 00341000 XC FREE(FREELN),FREE ZERO OUT ACQUIRED AREA @V305101 00342000 MVI DDNAME,BLANK PROPAGATE BLANKS THROUGH @V305066 00343000 MVC DDNAME+1(L'DDNAME-1),DDNAME PROPAGATE BLANKS @V305066 00344000 ST R2,SAVEPTR SAVE PTR FOR FIRST DTF/ACB ADCON @V305066 00345000 MVC CCWS(L'CCWS),CCW MOVE 1 CCW TO FREE STORAGE @V305066 00346000 LA R8,BUFFER PREPARE TO RELOCATE CCWS @V305066 00347000 STCM R8,SEVEN,CCWS+1 PLACE BUFFER ADDRESS IN CCW @VM03102 00348000 B GOAHEAD GO START CHECKING LIST @V305101 00349000 EJECT 00350000 CHMOR CLI TYPESD,TWENTY DTFSD? @V305066 00351000 BE GETDOSCB GO GET DOSCB @V305066 00352000 MVZ ZONE,PUBDEVT MOVE PUB DEV CODE ZONE TO TEMP @V305066 00353000 CLI ZONE,CON CONSOLE? @V305066 00354000 BE ENDUP YES, NO CLOSE @V305066 00355000 CLI ZONE,TAPE TAPE? @V305066 00356000 BE ENDUP YES, NO CLOSE @V305066 00357000 CLI ZONE,TEN READER? @V305066 00358000 BE RDRCLOSE YES, CLOSE READER @V305066 00359000 CLI ZONE,TWENTY PUNCH? @V305066 00360000 BE PCHCLOSE YES, CLOSE PUNCH @V305066 00361000 CLI ZONE,PRINTER PRINTER? @V305066 00362000 BE PRTCLOSE YES, CLOSE PRINTER @V305066 00363000 * MUST BE DTFCP/DTFDI DISK FILE 00364000 GETDOSCB L R13,DOSFIRST ADDRESS FIRST DOSCB @V305066 00365000 TEST LTR R13,R13 ANY DOSCBS ON CHAIN? @V305066 00366000 BNZ COMPDD YES, SEE IF MATCH @V305066 00367000 LA R15,THREE NO DOSCB FOR DISK FILE @V305066 00368000 MVC DDNAME(SEVEN),FILESD FILE NAME FOR ERROR MSG @VM03102 00369000 B BADCLOSE BR TO PRINT ERROR MSG @V305066 00370000 COMPDD CLC DOSDD(SEVEN),FILESD MATCH? @VM03102 00371000 BE SYMUNIT YES, CHECK SYSXXX @V305066 00372000 L R13,DOSNEXT GET NEXT DOSCB ADDRESS @V305066 00373000 LA R13,0(,R13) ZERO HIGH ORDER BYTE @V305066 00374000 B TEST REPEAT TEST @V305066 00375000 SYMUNIT CLC DOSYSXXX,UNITSD MATCHING SYSXXX @V305066 00376000 BE CLOSDSK YES, MATCHING DOSCB @V305066 00377000 LA R15,ONE ERROR CODE = 1 @V305066 00378000 MVC DDNAME(SEVEN),FILESD FILE NAME FOR MSG @VM03102 00379000 B BADCLOSE BR TO PRINT ERROR MSG @V305066 00380000 CLOSDSK MVC FUNC(EIGHTEEN),DOSDSNAM FN, FT, FM @VM03102 00381000 LA R1,PLIST GET FINIS PLIST FOR DISK @V305066 00382000 L R15,AFINIS GET DMSFNS ADDRESS @V305066 00383000 BALR R14,R15 BRANCH TO FINIS @V305066 00384000 TM SDFLAG1,SDWORK DTFSD WORKFILE? @V305066 00385000 BNO ENDUP NO, CONTINUE @V305066 00386000 * CHECK FOR RESERVED CMS FILETYPE- IF FOUND DO NOT ERASE @VA04538 00386100 * FILE IS REQUIRED AT EXECUTION TIME @VA04538 00386200 CLC DOSDSTYP,=CL8'SYMDMP' RESERVED WORKFILE? @VA04538 00386300 BE ENDUP AH SO- SKIP ERASE CALL @VA04538 00386400 TM SDFLAG1,DEL DELETFL=NO SPECIFIED? @V305066 00387000 BO ENDUP YES, DO NOT ERASE WORKFILE @V305066 00388000 MVC PLIST,ERASE PREPARE ERASE PLIST @V305066 00389000 L R15,AERASE ADDRESS OF DMSERS @V305066 00390000 BALR R14,R15 BR TO DMSERS @V305066 00391000 ENDUP L R2,SAVEPTR PTR TO CURRENT ADCON @V305066 00392000 LA R2,FOUR(,R2) POINT TO NEXT ADCON @VM03102 00393000 CLI 0(R2),HEX00 ANY MORE FILES TO CLOSE? @V305066 00394000 BNE FINALE NO, ALL FILES ARE OPEN @V305101 00395000 ST R2,SAVEPTR SAVE CURRENT ADCON PTR @V305066 00396000 L R2,0(,R2) GET NEXT DTF ADDRESS @V305066 00397000 B ISITACB VERIFY DTF TYPE ON NEXT FILE @V305066 00398000 RDRCLOSE MVC DEVID(EIGHT),CREADER READER @VM03102 00399000 CLOSEIT MVC PLIST(SIXTEEN),CLOSE MOVE 'CP CLOSE' TO PLIST @VM03102 00400000 MVC BUFFLEN(EIGHT),FENCE IND END OF PLIST @VM03102 00401000 LA R1,PLIST POINT TO PLIST @V305066 00402000 SVC SVC202 ISSUE IO @VM03102 00403000 DC AL4(ENDUP) NO-OP @V305066 00404000 B ENDUP SEE IF MORE FILES TO CLOSE @V305066 00405000 PCHCLOSE MVC DEVID(EIGHT),CPUNCH PUNCH @VM03102 00406000 B CLOSEIT CLOSE FILE @V305066 00407000 PRTCLOSE MVC DEVID(EIGHT),CPRINT PRINTER @VM03102 00408000 B CLOSEIT GO CLOSE FILE @V305066 00409000 GOAHEAD L R2,SAVEPTR RESTORE PTR TO FIRST ADCON @V305066 00410000 L R2,0(,R2) DTF OR ACB ADDRESS @V305066 00411000 ISITACB CLI TYPESD,ACB IS IT ACB? @V305066 00412000 BE VSAMCHEK YES, PROCESS THIS ACB NOW.. @V305101 00413000 TM SDFLAG0,TWENTY WAS OPEN IGNORED? @V305066 00414000 BO ENDUP SEE IF MORE FILES TO CLOSE @V305066 00415000 CLI TYPESD,TWENTY SEQ DASD? @V305066 00416000 BL BCLOS2 DTF TYPES LESS THAN X'20' @V305066 00417000 BE BOSDC1 SEQ DASD @V305066 00418000 CLI TYPESD,CP DTFCD? @V305066 00419000 BE CP32 YES @V305066 00420000 CLI TYPESD,DI DTFDI? @V305066 00421000 BE CP32 DTFDI TREATED AS DTFCP @V305066 00422000 BL BCLOS2 ANY REMAINING IE: X'31' DTFCP @V305066 00423000 B ERR88E UNSUPPORTED DTF TYPE @V305066 00424000 EJECT 00425000 CP32 TM SDFLAG0,TWO ASCII SPECIFIED? @V305066 00426000 BNO CPNEXT NO, CONTINUE @V305066 00427000 LA R15,ELEVEN RC = 11 @V305066 00428000 MVC DDNAME(SEVEN),FILESD FILENAME TO DDNAME @VM03102 00429000 B BADCLOSE BR TO PRINT MSG @V305066 00430000 USING DTFCP,R2 @V305066 00431000 CPNEXT TM CPDEVTY,TWENTY DTFCP/DTFDI DISK FILE? @V305066 00432000 USING DTFSD,R2 @V305066 00433000 BO BOSDC1 CLOSE SAME AS FOR SEQ DISK @V305066 00434000 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00435000 * ROUTINE FOR ALL DTF TYPES EXCEPT DTFSD, AND DTFCP/DTFDI FOR * 00436000 * DISK FILES. * 00437000 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00438000 SPACE 2 00439000 BCLOS2 EQU * @V305066 00440000 BAL R6,GETLUB GET LUB ENTRY @V305066 00441000 CLI 0(R3),IGN LOGICAL UNIT ASSIGNED X'FE' @V305066 00442000 BE CHKRDR SEE IF DTFCD READER FILE @V305066 00443000 BH ASGNERR LOG UNIT IS UNASSIGNED @V305066 00444000 BAL R6,GETPUB GET CORRESPONDING PUB ENTRY @V305066 00445000 CLI TYPESD,TWO DTFCD READER ? @V305066 00446000 BL ERR88E IF TYPE LESS, ERROR @V305066 00447000 BE UNITRCD1 DTFCD - READER @V305066 00448000 CLI TYPESD,HEX4 DTFCD PUNCH? @V305066 00449000 BL CHMOR DTFCN @V305066 00450000 BE UNITRCD2 DTFCD - PUNCH @V305066 00451000 CLI TYPESD,HEX8 DTFPR? @V305066 00452000 BE UNITRCD3 DTFPR - PRINTER @V305066 00453000 CLI TYPESD,TEN TAPE WORKFILE? @V305066 00454000 BE BCMT06 BRANCH IF TAPE WORKFILE @V305066 00455000 CLI TYPESD,HEX11 NOLAB/NONSTD TAPE? @V305066 00456000 BE BCLOS3 BRANCH IF TAPE DATA FILE @V305066 00457000 CLI TYPESD,HEX12 STANDARD LABEL TAPE? @V305066 00458000 BE BCLOS3 YES @V305066 00459000 CLI TYPESD,HEX14 STANDARD LABEL TAPE? @V305066 00460000 BE BCLOS3 YES @V305066 00461000 CLI TYPESD,HEX31 IF LOWER THAN X'31' INVALID @V305066 00462000 BL ERR88E IF LOW, INVALID TYPE @V305066 00463000 CLI TYPESD,CP DTFCP FILE? @V305066 00464000 BL CP31A DTFCP TYPE X'31' @V305066 00465000 BE CP32A DTFCP TYPE X'32' @V305066 00466000 CLI TYPESD,DI DTFDI? @V305066 00467000 BNE ERR88E INVALID TYPE @V305066 00468000 EJECT 00469000 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00470000 * ROUTINE FOR DTFDI - DTF TYPE = X'33' * 00471000 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00472000 SPACE 2 00473000 USING DTFCP,R2 @V305066 00474000 TM CPDEVTY,HEX18 IS IT PRINTER OR PUNCH @V305066 00475000 BZ CP32A PUNCH @V305066 00476000 TM CPDEVTY,HEX8 IS IT PRINTER? @V305066 00477000 BZ TAPLST NO, TAKE BRANCH @V305066 00478000 MVI SUBONE,HEX01 NO-OP BRANCH @V305066 00479000 TAPLST BAL R6,SUBONE1 PRINTER, SUBTRACT 1 FROM BUFFER @V305066 00480000 MVC ALTERIO(THREE),CPCCWOB IS SWAP NEEDED? @VM03102 00481000 BNE CP32A NO @V305066 00482000 MVC ALTERIO(THREE),CPCCWIB SWAP @VM03102 00483000 BAL R6,SUBONE1 SUBTRACT ONE FROM BUFFER @V305066 00484000 B CP32A BR TO PROCESS AS DTFCP @V305066 00485000 SUBONE1 CLI SUBONE,HEX01 CONTINUE OR BRANCH @V305066 00486000 BE NEXTINST KEEP GOING @V305066 00487000 BR R6 RETURN FROM SUBROUTINE @V305066 00488000 NEXTINST L R4,CPFLAG5 LOAD ALT IOAREA ADDRESS @V305066 00489000 BCTR R4,0 SUBTRACT ONE @V305066 00490000 ST R4,CPFLAG5 RESTORE UPD IOAREA ADDRESS IN DTF@V305066 00491000 BR R6 RETURN FROM SUBROUTINE @V305066 00492000 SPACE 5 00493000 CHKRDR CLI TYPECP,TWO DTFCD? @V305066 00494000 BNE ENDUP NO, SEE IF MORE FILES TO CLOSE @V305066 00495000 USING DTFUNIT,R2 @V305066 00496000 NI SWITCH,HEX7F RESET OPEN INDICATOR @V305066 00497000 B ENDUP ANY MORE FILES TO CLOSE ? @V305066 00498000 EJECT 00499000 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00500000 * UNIT RECORD CLOSE - DTF TYPES X'02', X'03', X'04', AND X'08' * 00501000 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00502000 SPACE 2 00503000 USING DTFUNIT,R2 @V305066 00504000 UNITRCD1 TM SWITCH,TEN 3525 READER ? @V305066 00505000 BZ CHK3525 NO @V305066 00506000 TM SWITCH3,HEX07 FUNC/ASSOC SPECIFIED? @V305066 00507000 BZ CHK3525 NO @V305066 00508000 ERR4 BAL R6,CVTUNIT CONVERT LOGICAL UNIT @V305066 00509000 LA R15,FOUR ERROR CODE = 04 @V305066 00510000 B BADCLOSE GO TO PRINT MSG @V305066 00511000 UNITRCD2 TM DEVCODE,HEX4 3525 PUNCH? @V305066 00512000 BZ CHK3525 NO @V305066 00513000 TM SWITCH3,HEX07 FUNC/ASSOC SPECIFIED? @V305066 00514000 BZ CHK3525 NO @V305066 00515000 B ERR4 ERROR @V305066 00516000 UNITRCD3 TM SWITCH3,TEN 3525 PRINTER @V305066 00517000 BZ CHK3525 NO @V305066 00518000 TM SWITCH3,HEX07 FUNC/ASSOC SPECIFIED? @V305066 00519000 BZ CHK3525 NO @V305066 00520000 B ERR4 ERROR @V305066 00521000 CHK3525 NI SWITCH,HEX7F RESET FILE OPEN IND. @V305066 00522000 CLI PUBDEVT,HEX23 3525 PUNCH? @V305066 00523000 BE CHKFILE YES @V305066 00524000 B CHMOR ANY MORE FILES TO CLOSE ? @V305066 00525000 CHKFILE CLI DTFTYPE,HEX8 PRINTER? @V305066 00526000 BE FEEDCARD YES @V305066 00527000 CLI DTFTYPE,HEX4 DTF PUNCH FILE? @V305066 00528000 BE PUNCH YES @V305066 00529000 B CHMOR MORE FILES TO CLOSE ? @V305066 00530000 PUNCH NI SWITCH3,HEXEF TURN OFF SEQ BIT (PUNCH) @V305066 00531000 B CHMOR ANY MORE FILE TO CLOSE ? @V305066 00532000 FEEDCARD LR R1,R2 USER CCB ADDRESS @V305066 00533000 MVC ADSAVE(FOUR),CCWADDR SAVE CCW ADDRESS @VM03102 00534000 LA R4,CCWS GET ADDR OF BLANK CCW @V305066 00535000 ST R4,CCWADDR STORE IN DTF @V305066 00536000 FEED SVC SVC0 PERFORM IO @V305066 00537000 MVC CCWADDR(FOUR),ADSAVE RESTORE CCW ADDR IN CCB @VM03102 00538000 MVI CCWS,HEX01 RESTORE PUNCH COMMAND @V305066 00539000 B CHMOR ANY MORE FILES TO CLOSE ? @V305066 00540000 EJECT 00541000 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00542000 * PUNCH CLOSE ROUTINE * 00543000 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00544000 SPACE 2 00545000 BCLOSP EQU * PUNCH CLOSE ROUTINE CLOSP @V305066 00546000 USING DTFCP,R2 @V305066 00547000 OI CPSTAT,DE POST AT DEVICE END @VM03103 00548000 CLI PUBDEVT,PCH2540 2540 PUNCH @V305066 00549000 BE CP2540 YES @V305066 00550000 CLI PUBDEVT,PCH2520 2520 PUNCH @V305066 00551000 BE CP2540 PROCESS AS 2540 @V305066 00552000 B CHMOR ANY MORE FILES TO CLOSE ? @V305066 00553000 CP2540 EQU * @V305066 00554000 USING TAPERES,R2 @V305066 00555000 CLI CPTYPE1,CP DTFCP DISK @V305066 00556000 BNL DISK3 YES @V305066 00557000 LA R7,CPCCW0 RESTORE ORIGINAL CCW ADD TO CCB @V305066 00558000 B CONT3 IN TAPE DTFCP TABLE @V305066 00559000 USING DTFCP,R2 @V305066 00560000 DISK3 LA R7,CCWORIG RESTORE ORIG CCW AD TO DISK CCB @V305066 00561000 CONT3 ST R7,CPCCW1 IN DISK DTFCP @V305066 00562000 TM CPDEVTY,PCH PUNCH? @V305066 00563000 BZ CHMOR NO, ANY MORE TO CLOSE ? @V305066 00564000 L R7,CPFLAG5 LOAD ADD IOAREA @V305066 00565000 BCTR R7,0 RESET TO ORIG LOCATION @V305066 00566000 ST R7,CPFLAG5 RESTORE IN DTF @V305066 00567000 L R7,CCWORIG LOAD ADD IOAREA @V305066 00568000 BCTR R7,0 RESET TO ORIGINAL LOC @V305066 00569000 ST R7,CCWORIG RESTORE IN DTF @V305066 00570000 L R7,CCWORIG+4 LOC RECORD COUNT @V305066 00571000 AH R7,K1 ADD ONE @V305066 00572000 ST R7,CCWORIG+4 RESTORE TO DTF @V305066 00573000 B CHMOR CHECK IF ANY MORE FILES TO CLOSE @VM03105 00574000 EJECT 00575000 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00576000 * TAPE CLOSE ROUTINE * 00577000 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00578000 SPACE 2 00579000 BCLOS3 EQU * TAPE CLOSE ROUTINE @V305066 00580000 USING DTFMT,R2 ESTABLISH ADDRESSABILIY @V305066 00581000 TM MTFLAG4,TAPEPH DTFPH FOR TAPE? @V305066 00582000 BO ERR88E DTFPH NOT SUPPORTED @V305066 00583000 NI MTFLAG1,HEX7F TURN OFF 1ST TIME SW @V305066 00584000 TM MTFLAG1,TAPIP TAPE INPUT FILE @V305066 00585000 BZ TESTBLK BR IF NOT I/P FILE @V305066 00586000 CLI MTDIR,FORMAT TEST FOR VAR RECFM @VM03103 00587000 BL VARIBL BR IF VAR BLOCK LENGTH @V305066 00588000 SPACE 2 00589000 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00590000 * TAPE IS FIXBLK AND PROCESSING IS IN FORWARD DIRECTION. * 00591000 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00592000 SPACE 2 00593000 XC DBLOCK1(FOUR),DBLOCK1 ZERO DBL 1 @VM03102 00594000 XC DBLOCK3(FOUR),DBLOCK3 ZERO DBL 3 @VM03102 00595000 B BCMT05 SEE IF I/P OR O/P @V305066 00596000 VARIBL TM MTDIR,RECFMVAR TEST FOR VARIABLE RECFM @V305066 00597000 BZ BCMT05 SEE IF I/P OR O/P @V305066 00598000 XC DBLOCK3(EIGHT),DBLOCK3 ZERO DBL3 AND DBL4 @VM03102 00599000 XC DBLOCK6(FOUR),DBLOCK6 ZERO DBL6 @VM03102 00600000 B BCMT05 YES @V305066 00601000 TESTBLK TM MTFLAG1,MTBLOCK BLOCKED RECORDS @V305066 00602000 BZ BCMT05 NO @V305066 00603000 LR R1,R2 DTF ADD FOR TRUNCS ROUTINE @V305066 00604000 L R15,MTFLAG0 ADD OF LOGIC MODULE @V305066 00605000 LA R14,DEC20(R15) TRANSFER ADD TO TRUNC ROUTINE @VM03102 00606000 OI MTFLAG1,HEX01 SET INDICATOR @V305066 00607000 SVC SVC8 TEMP. RETURN TO PROB. PROG. @V305066 00608000 NI MTFLAG1,HEXFE RESET INDICATOR @V305066 00609000 SPACE 2 00610000 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00611000 * ROUTINE TO CLOSE TAPE DATA FILES * 00612000 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00613000 SPACE 2 00614000 BCMT05 EQU * @V305066 00615000 MVZ ZONE(ONE),PUBDEVT DEVICE TYPE MUST BE TAPE @VM03102 00616000 CLI ZONE,TAPE TAPE? @V305066 00617000 BE CHKTCR CHK FOR TP CART READER @V305066 00618000 ERR3 BAL R6,CVTUNIT CONVERT LOGICAL UNIT @V305066 00619000 LA R15,SEVEN PUB DEV NOT COMPATIBLE @V305066 00620000 B BADCLOSE BR TO PRINT ERROR MSG @V305066 00621000 CHKTCR CLI PUBDEVT,TCR TAPE CARTRIDGE READER? @V305066 00622000 BE ERR3 ERROR IF TCR @V305066 00623000 BAL R6,CRPLIST CREATE TAPEIO PLIST @V305066 00624000 TM MTFLAG4,OPENIND FILE OPEN? @V305066 00625000 BC 14,IOCCPART NO @V305066 00626000 TM MTFLAG4,FILETYPE INPUT FILE? @V305066 00627000 BC 14,IOCCOUTF NO, BRANCH TO O/P ROUTINE @V305066 00628000 TESTREW TM MTFLAG3,NOREWIND NOREWIND ENTRY? @V305066 00629000 BO IOCCEFSW YES, SKIP @V305066 00630000 B IOCCREWX BRANCH TO REWIND @V305066 00631000 IOCCOUTF MVC FUNC,WTM WTM @V305066 00632000 BAL R6,IOROUT PERFORM IO @V305066 00633000 IOCCWRIT MVC FUNC,WTM WRITE TAPE MARK @V305066 00634000 BAL R6,IOROUT PERFORM IO @V305066 00635000 TM MTFLAG3,NOREWIND NOREWIND SPECIFIED? @V305066 00636000 BO IOCCBKSP NO REWIND SPECIFIED @V305066 00637000 IOCCREWX TM MTFLAG3,REWUNL REWIND/UNLOAD ? @V305066 00638000 BC 14,IOCCRWTP NO @V305066 00639000 MVC FUNC,RUN REW/UNLOAD @V305066 00640000 BAL R6,IOROUT PERFORM IO @V305066 00641000 B IOCCEFSW BR TO SET CLOSE INDICATORS @V305066 00642000 IOCCRWTP MVC FUNC,REW REWIND @V305066 00643000 BAL R6,IOROUT PERFORM IO @V305066 00644000 IOCCEFSW XI MTFLAG4,OPENIND SET FILE STATUS TO CLOSE @V305066 00645000 IOCCPART XC BLOCKCNT(FOUR),BLOCKCNT RESET BLOCK COUNT BUCKET@VM03102 00646000 NI MTFLAG1,HEX7F TURN OFF LOGIC SWITCH @V305066 00647000 B CHMOR ANY MORE FILES TO CLOSE ? @V305066 00648000 IOCCBKSP MVC FUNC,BSR BKSP TAPE OPCODE TO CCW @V305066 00649000 LA R8,IOCCEFSW GO HERE IF TM ON NEXT IO @V305066 00650000 BAL R6,IO PERFORM IO REQUEST @V305066 00651000 B IOCCEFSW @V305066 00652000 SPACE 2 00653000 IO LA R1,PLIST POINT TO TAPIO PLIST @V305066 00654000 SVC SVC202 ISSUE IO REQUEST @VM03102 00655000 DC AL4(TAPEMARK) ERROR ADDRESS @V305066 00656000 BR R6 RETURN TO MAIN LINE @V305066 00657000 TAPEMARK CH R15,K2 TM ENCOUNTERED? @V305066 00658000 BCR 8,R8 RETURN TO RIGHT ADDRESS @V305066 00659000 B BADTAPIO OTHERWISE TAPE ERROR @V305066 00660000 EJECT 00661000 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00662000 * TAPE I/O ROUTINE * 00663000 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00664000 SPACE 2 00665000 IOROUT EQU * @V305066 00666000 LA R1,PLIST PREPARE FOR TAPEIO REQUEST @V305066 00667000 SVC SVC202 ISSUE SVC @VM03102 00668000 DC AL4(BADTAPIO) ERROR ADDRESS @V305066 00669000 BR R6 @V305066 00670000 BADTAPIO EQU * @VA03457 00670200 CH R15,K8 WLR LONG? @VA03457 00670400 BNL ERRLONG TELL THEM @VA03457 00670600 CH R15,K5 TAPE NOT ATTACHED? @VA03457 00671100 BE ERR113SB YES, ERROR @V305066 00672000 BH ERR43E TAPE FILE PROTECTED @V305066 00673000 CH R15,K2 EOF OR END OF TAPE? @V305066 00674000 BE ERR58E YES, ERROR @V305066 00675000 ERRLONG LA R15,SEVTEEN UNEXPECTED TAPE ERROR @VA03457 00676100 MVC DDNAME(FOUR),DEVID MVE DEVID FOR ERROR MSG @VM03102 00677000 B BADCLOSE ERROR @V305066 00678000 EJECT 00679000 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00680000 * TAPE WORKFILE CLOSE * 00681000 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00682000 SPACE 2 00683000 BCMT06 EQU * @V305066 00684000 MVZ ZONE,PUBDEVT DEVICE TYPE MUST BE TAPE @V305066 00685000 CLI ZONE,TAPE TAPE? @V305066 00686000 BNE ERR3 IF NOT , ERROR @V305066 00687000 CLI PUBDEVT,TCR TAPE CARTRIDGE READER? @V305066 00688000 BE ERR3 ERROR IF TCR @V305066 00689000 BAL R6,CRPLIST CREATE TAPEIO PLIST @V305066 00690000 TM MTFLAG1,WRITE TEST DTF FOR WRITE COMMAND @V305066 00691000 BZ REWINDT IF NO, BR TO REWIND TEST @V305066 00692000 MVC FUNC,WTM WTM REQUEST @V305066 00693000 BAL R6,IOROUT TO WRITE A TAPE MARK @V305066 00694000 REWINDT TM MTFLAG1,WKNORWD NOREWIND SPECIFIED (WORK) @V305066 00695000 BO EXITCLOS YES @V305066 00696000 TM MTFLAG1,WORKRUN IS REWIND/UNLOAD SPECIFIED? @V305066 00697000 BZ REWIND IF NOT BR TO REWIND @V305066 00698000 MVC FUNC,RUN MOVE REW/UNLOAD OPCODE @V305066 00699000 BAL R6,IOROUT PERFORM IO @V305066 00700000 B EXITCLOS @V305066 00701000 REWIND MVC FUNC,REW REWIND TAPE @V305066 00702000 BAL R6,IOROUT PERFORM IO @V305066 00703000 EXITCLOS XC BLOCKCNT(FOUR),BLOCKCNT ZERO BLOCK COUNT BUCKET @VM03102 00704000 B CHMOR ANY MORE FILES TO CLOSE @V305066 00705000 EJECT 00706000 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00707000 * DTFCP/DTFDI CLOSE ROUTINE * 00708000 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00709000 SPACE 2 00710000 USING DTFCP,R2 @V305066 00711000 CP31A TM CPSYSPCH,PCH2520 2540/2520 PUNCH FILE @V305066 00712000 BO BCLOSP CALL PUNCH CLOSE TRANSIENT @V305066 00713000 MVZ ZONE(ONE),PUBDEVT PUB DEVICE TYPE @VM03102 00714000 CLI ZONE,TAPE TAPE? @V305066 00715000 BNE CHMOR NO, NO CLOSE PROCESSING @V305066 00716000 CLI PUBDEVT,TCR TAPE CARTRIDGE READER? @V305066 00717000 BE ERR3 ERROR @V305066 00718000 LSTPCH CLC DTFCP+6(TWO),SYSLST SYSLST LOG UNIT? @VM03102 00719000 BE WTMBSR YES, WTM AND BSR @V305066 00720000 CLC DTFCP+6(TWO),SYSPCH SYSPCH LOG UNIT? @VM03102 00721000 BE WTMBSR YES, WTM AND BSR @V305066 00722000 B CHMOR OTHERWISE NO CLOSE PROCESSING @V305066 00723000 SPACE 2 00724000 WTMBSR BAL R6,CRPLIST CREATE TAPIO PLIST @V305066 00725000 MVC FUNC,SENSE PREPARE TO DO SENSE @V305066 00726000 BAL R6,IOROUT PERFORM IO @V305066 00727000 TM BUFFER+1,LOADPT TAPE AT LOADPT @V305066 00728000 MVC FUNC,WTM PREPARE TO WRITE TM @V305066 00729000 BC 8,BACKSP NO, WRITE TM AND BSR @V305066 00730000 BAL R6,IOROUT PERFORM WTM @V305066 00731000 B CHMOR END CLOSE PROCESSING @V305066 00732000 BACKSP BAL R6,IOROUT ISSUE IO REQUEST @V305066 00733000 MVC FUNC,BSR PREPARE TO BACK SPACE REC @V305066 00734000 LA R8,CHMOR GO HERE IF TM ON NEXT IO @V305066 00735000 BAL R6,IO PERFORM IO REQUEST @V305066 00736000 B CHMOR END OF CLOSE PROCESSING @V305066 00737000 CP32A TM CPDEVTY,TAPECP DTFCP TAPE FILE? @V305066 00738000 BO CPTAPE YES, BRANCH @V305066 00739000 TM CPDEVTY,DISKCP DTFCP DISK FILE? @V305066 00740000 BO BOSDC1 YES, BRANCH @V305066 00741000 CLI PUBDEVT,PCH3525 3525 PUNCH? @V305066 00742000 BE FEEDCARD YES, BRANCH @V305066 00743000 CLI CPFLAG5,PCHCP 2540 OR 2520 PUNCH DTFCP FILE? @V305066 00744000 BO BCLOSP YES @V305066 00745000 B CHMOR MORE FILES REMAIN TO BE OPENED? @V305066 00746000 EJECT 00747000 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00748000 * DTFCP/DTFDI TAPE FILE CLOSE * 00749000 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00750000 SPACE 2 00751000 CPTAPE CLI LOGUNT1,PROG SYSTEM TAPE FILE? @V305066 00752000 BC 8,BCCPT1 NO, CONTINUE CLOSE PROCESSING @V305066 00753000 B LSTPCH SEE IF SYSLST/SYSPCH @V305066 00754000 EJECT 00755000 BCCPT1 EQU * DTFCP TAPE CLOSE ROUTINE @V305066 00756000 USING DTFCP,R2 ESTABLISH ADDRESSABILITY @V305066 00757000 TM CPFLAG0,CPASCII ASCII SPECIFIED? @V305066 00758000 BNO BCCPT1A NO, CONTINUE @V305066 00759000 LA R15,ELEVEN RC = 11 @V305066 00760000 MVC DDNAME(SEVEN),CPFN FILENAME @VM03102 00761000 B BADCLOSE BR TO PRINT MSG @V305066 00762000 BCCPT1A BAL R6,CRPLIST CREATE TAPEIO PLIST @V305066 00763000 SR R3,R3 CLEAR REGISTER @VM03103 00764000 TM CPFLAG1,CPREWIND REWIND OPTION SPECIFIED? @V305066 00765000 BO CHKINP NO, SKIP REWIND OPTION @V305066 00766000 LA R3,FOUR(,R3) ADJUST POINTER FOR REWIND @VM03102 00767000 CHKINP TM CPFLAG5,CPIN INPUT FILE ? @V305066 00768000 BZ PROCRUN NO, DETERMINE PROPER PROCEDURE @V305066 00769000 ADJINPUT LA R3,EIGHT(,R3) ADJUST POINTER FOR IP FILE @VM03102 00770000 TM CPFLAG1,CPREWIND REWIND OPTION SPECIFIED? @V305066 00771000 BZ PROCRUN YES, SKIP EOF TEST @V305066 00772000 MVC FUNC,READ READ @V305066 00773000 LA R8,CHKEOF GO HERE IF TM ON NEXT IO @V305066 00774000 BAL R6,IO PERFORM IO REQUEST @V305066 00775000 CHKEOF CLC BUFFER(FOUR),EOF1 EOF1 LABEL ? @VM03102 00776000 BE PROCRUN YES, DETERMINE PROPER PROCEDURE @V305066 00777000 LA R3,EIGHT(,R3) NO EOF1 LABEL @VM03102 00778000 MVC FUNC,BSR BACKSPACE RECORD READ @V305066 00779000 LA R8,PROCRUN GO HERE IF TM ON NEXT IO @V305066 00780000 BAL R6,IO PERFORM IO REQUEST @V305066 00781000 PROCRUN L R3,PROCTAB(R3) PICK UP AD OF PROCEDURE LIST @V305066 00782000 PROCRUN1 L R7,0(R3) AD OF FIRST ROUTINE TO CALL @V305066 00783000 BAL R4,0(R7) BRANCH TO CORRECT SUBROUTINE @V305066 00784000 PROCRUN2 LA R3,FOUR(,R3) AD NEXT SUBROUTINE @VM03102 00785000 B PROCRUN1 BRANCH TO GET AD OF NEXT ROUTINE @V305066 00786000 TREWIND MVC FUNC,REW REWIND @V305066 00787000 BAL R6,IOROUT PERFORM I/O @V305066 00788000 BR R4 @V305066 00789000 SPACE 2 00790000 BYSTDUTL MVC FUNC,READ READ REQUEST @V305066 00791000 EOFSKIP MVI BUFFER,BLANK BLANK OUT @V305066 00792000 MVC BUFFER+1(SEVENTY9),BUFFER IOAREA @VM03102 00793000 LA R8,TRAILER GO HERE IF TM ON NEXT IO @V305066 00794000 BAL R6,IO PERFORM IO REQUEST @V305066 00795000 TRAILER CLC BUFFER(THREE),EOF1 EOF TRAILER @VM03102 00796000 BE EOFSKIP YES, SKIP EOF, READ NEXT RECORD @V305066 00797000 CLC BUFFER(THREE),UTL @VM03102 00798000 BE EOFSKIP YES, SKIP UTL, READ NEXT RECORD @V305066 00799000 CH R15,K2 TAPE MARK ENCOUNTERED? @V305066 00800000 BNE EOFSKIP NO, READ NEXT RECORD @V305066 00801000 BR R4 RETURN @V305066 00802000 SPACE 2 00803000 TMWRITE MVC FUNC,WTM WTM REQUEST @V305066 00804000 BAL R6,IOROUT PERFORM IO @V305066 00805000 BR R4 @V305066 00806000 SPACE 2 00807000 EXIT NI CPFLAG5,HEXFE TURN OFF LABEL SWITCH IN DTF @V305066 00808000 B CHMOR ANY MORE FILES TO CLOSE ? @V305066 00809000 EJECT 00810000 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00811000 * THE FOLLOWING ROUTINE OBTAIN THE APPROPRIATE LUB * 00812000 * AND PUB ENTRIES BASED ON THE LOGICAL UNIT CODES IN THE * 00813000 * DTF * 00814000 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00815000 SPACE 2 00816000 GETLUB LH R3,NICLPT NICL ADDRESS @V305066 00817000 SR R4,R4 CLEAR REGISTER R4 @V305066 00818000 IC R4,0(R3) NO. SYS LOGICAL UNITS FROM NICL @V305066 00819000 SR R3,R3 CLEAR REGISTER @V305066 00820000 IC R3,LOGUNT2 LOG UNIT CLASS FROM DTF @V305066 00821000 TM LOGUNT1,PROG PROG LOG. UNIT? @V305066 00822000 BNO DOUBLE NO, MUST BE SYSTEM UNIT @V305066 00823000 AR R3,R4 INCREM BY NO SYSTEM LUBS @V305066 00824000 DOUBLE AR R3,R3 DOUBLE VALUE IN R3 @V305066 00825000 AH R3,LUBPT ADD LUB TABLE ADDRESS @V305066 00826000 BR R6 RETURN TO MAINLINE @V305066 00827000 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00828000 * AT THIS TIME R5 POINTS TO PUB INDEX CODE IN LUB * 00829000 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00830000 SPACE 2 00831000 GETPUB LH R4,PUBPT PUB ADDRESS @V305066 00832000 SR R5,R5 CLEAR REGISTER @V305066 00833000 IC R5,0(R3) CONTAINS PUB INDEX CODE @VM03103 00834000 SLL R5,3 MULTIPLY BY LENGTH OF PUB @V305066 00835000 AR R5,R4 ADD PUB ADDRESS @V305066 00836000 BR R6 RETURN TO MAINLINE @V305066 00837000 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00838000 * AT THIS TIME R5 POINTS TO THE CORRECT PUB ENTRY * 00839000 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00840000 SPACE 2 00841000 ASGNERR BAL R6,CVTUNIT CONVERT LOGICAL UNIT @V305066 00842000 LA R15,EIGHT ERROR CODE = 08 @V305066 00843000 B BADCLOSE BR TO PRINT MESSAGE @V305066 00844000 EJECT 00845000 USING DTFSD,R2 @V305066 00846000 BOSDC1 BAL R6,GETLUB GET PUB POINTER @V305066 00847000 CLI 0(R3),IGN ASSIGNED IGN? @V305066 00848000 BE ENDUP YES, DO NOT PERFORM CLOSE @V305066 00849000 BH ASGNERR LOGICAL UNIT IS UNASSIGNED @V305066 00850000 TM SDFLAG1,OPENIND FILE BEEN OPENED? @V305066 00851000 BZ UNEXOFF NO, DON'T PERFORM CLOSE @V305066 00852000 CLI UNITSD,SYSFILE IS THIS A SYSTEM FILE CLOSE? @V305066 00853000 BNE WORKFILE NO @V305066 00854000 CLI CLASSSD,SYSLNK DETERMINE TYPE OF SYS FILE @V305066 00855000 BL CLOSFIL1 BRANCH IF SYSRDR TO SYSLST @VM03104 00856000 SPACE 2 00857000 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00858000 * NEXT A CHECK IS MADE TO SEE IF CLOSING A PRIVATE LIBRARY. * 00859000 * (SYSRLB, SYSCLB, SYSSLB) * 00860000 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00861000 SPACE 2 00862000 CLI CLASSSD,SYSRES PRIVAT LIBRARY CLOSE? @V305066 00863000 BH WORKCLOS YES @V305066 00864000 SPACE 2 00865000 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00866000 * A TEST IS MADE TO DETERMINE IF THIS IS A WORKFILE CLOSE. * 00867000 * IF IT IS, INITIALIZATION IS DONE FOR THE WORKFILE LIOCS. * 00868000 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00869000 SPACE 2 00870000 WORKFILE TM SDFLAG1,SDWORK WORKFILE CLOSE @V305066 00871000 BZ CPCLOSE NO @V305066 00872000 USING DTFSDW,R2 WORKFILE ADDRESSABILITY @V305066 00873000 CLI WRITECCW,WRCKD NEED TO EXIT TO LOG MOD ADDRESS @V305066 00874000 BNE RESET NO @V305066 00875000 OI SDWFLAG1,FMCLOSE ROUT. ENTERED FROM CLOSE ROUT. @V305066 00876000 OI LOGMODSW,CHECKRW SET 'CHK AFTER RD/WTE IND.' ON @V305066 00877000 XC CNTLIM(TWO),CNTLIM SET 'DL' IN CNT FIELD TO 0 @VM03102 00878000 LR R1,R2 DTF ADDRESS IN R1 FOR LIOCS @V305066 00879000 ST R2,DTFREG STORE DTF POINTER @V305066 00880000 L R14,LOGMODAD LOGIC MODULE ADDRESS @V305066 00881000 LR R15,R14 LOG MOD ADD IN R15 @V305066 00882000 LA R14,THIRTY6(,R14) GET LOGIC MODULE REENTRY ADDR @VM03102 00883000 TM SDWFLAG1,SECOND GO TO LOG MOD FOR SEC TIME @V305066 00884000 BO SVC8A YES @V305066 00885000 LA R14,FOUR(,R14) LOGMOD WRITE ADDRESS @VM03102 00886000 SVC8A SVC SVC8 RETURN TO LIOCS @V305066 00887000 SPACE 2 00888000 L R2,DTFREG REST DTF ADD AFTER RET. FM LIOCS @V305066 00889000 RESET NI SDWFLAG1,HEXF6 SET LIOCS CLOSE IND TO OFF @V305066 00890000 MVI SDWCAP,ZERO SET BIN. NO. TO 0 FOR WORK CLOSE @V305066 00891000 MVI SRCHSDW+2,HEXFF ILLEG. SEEK IN LOW LIM @V305066 00892000 MVI LOGMODSW,ZERO RESET WORKFILE SWITCHES @V305066 00893000 B WORKCLOS @V305066 00894000 USING DTFSD,R2 RE-EST. ADDR. FOR SEQ DISK @V305066 00895000 CPCLOSE TM TYPESD,CPTYPE THIS IS A CP CLOSE @V305066 00896000 BO WORKCLOS YES @V305066 00897000 INPUTFLE TM SDFLAG1,INPSD INPUT FILE? @V305066 00898000 BZ OUTPTFL NO @V305066 00899000 TM COMSD,UPDSD IS IT AN UPDATE FILE? @V305066 00900000 BZ CLOSFILE NO @V305066 00901000 TM SDFLAG2,TWO HAS LAST RECORD BEEN WRITTEN ? @V305066 00902000 BZ CLOSFILE YES @V305066 00903000 OI COMSD,TLOSESD SW-CLOSE AFTER WRITING LST REC @V305066 00904000 OI UPDATSW,LASTREC WRITING LAST RECORD @V305066 00905000 SPACE 2 00906000 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00907000 * IF DTFSD OUTPUT FILE, EXIT IS MADE TO LIOCS CLOSE ADDRESS * 00908000 * TO WRITE LAST RECORD. * 00909000 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00910000 SPACE 2 00911000 OUTPTFL LR R1,R2 PLACE DTF ADDRESS IN R1 @V305066 00912000 ST R2,DTFREG STORE DTF POINTER @V305066 00913000 L R14,SDFLAG0 LOGIC MODULE ADDRESS IN R14 @V305066 00914000 LR R15,R14 LOG MOD ADD IN R15 @V305066 00915000 LA R14,SIXTEEN(,R14) GET CLOSE ENTRY ADDRESS @VM03102 00916000 CLI UPDATSW,LASTREC WRITING LAST REC? @V305066 00917000 BE SVC8B YES @V305066 00918000 TM SDFLAG2,SECTIME GO TO LOGMOD SEC TIME? @V305066 00919000 BZ SVC8B NO @V305066 00920000 LA R14,EIGHT(,R14) LOGMOD RE-ENTRY ADDRESS @VM03102 00921000 SVC8B SVC SVC8 RETURN TO LIOCS @V305066 00922000 SPACE 2 00923000 L R2,DTFREG RESTORE DTF ADDRESS AFTER RETURN @V305066 00924000 TM SDFLAG1,INPSD INPUT FILE ? @V305066 00925000 BO CLOSFILE YES @V305066 00926000 WORKCLOS TM SDFLAG1,SDWORK WORK FILE CLOSE ? @V305066 00927000 BO UNEXOFF UES @V305066 00928000 CLOSFILE MVI SDFLAG2,ZERO RESET LIOCS DTF SW @V305066 00929000 CLOSFIL1 MVI CCHHRSD+2,HEXFF SET ILLEG ADDRESS @VM03104 00930000 MVI SEARCHSD+2,HEXFF SET ILLEG SEEK IN LOW LIM @V305066 00931000 MVI COMSD,OFF RESET OPEN IND. SWITCH @VM03103 00932000 MVI COMSD+1,ZERO RESET OPEN SW2 TO ZERO @V305066 00933000 UNEXOFF NI DTFSD+4,HEXFE RESET UNIT EXCPT.IN DTF CCB @V305066 00934000 MVI F1ADDR+5,ZERO RESET LABEL CREATED IND. @V305066 00935000 TM SDFLAG1,OPENIND FILE OPENED? @V305066 00936000 BZ ENDUP NO, SEE IF MORE FILES TO CLOSE @V305066 00937000 NI SDFLAG1,HEXFB SET OPEN INDICATOR OFF @V305066 00938000 B CHMOR SEE IF MORE FILES TO CLOSE @V305066 00939000 EJECT 00940000 *********************************************************************** 00941000 * CHEK ALL VSAM ACBS FOR DLBL DEFINITIONS AND 00942000 * SET UP THE NECESSARY FIELDS IN THE TRANSIENT AREA+1000 00943000 *********************************************************************** 00944000 USING IKQACB,R4 @V305106 00945000 VSAMCHEK EQU * @V305106 00946000 LR R4,R2 POINT TO ACB TO OPEN @V305101 00947000 SPACE 1 00948000 VSAMPREP EQU * @V305106 00949000 LR R1,R9 POINTER TO FREE STORAGE @V305101 00950000 L R9,SAVEPTR POINT TO LIST OF ACBS @V305101 00951000 BAL R6,FREESTOR GO RELEASE FREE STORAGE @V305101 00952000 TM VSAMFLG1,VIPTCLOS OS 'TCLOSE' CALL? @V305106 00953000 BZ VCLOSE NO, NORMAL CLOSE @V305106 00954000 LA R1,VSAMTCLS YES, CALL $$BTCLOS @V305106 00955000 B VCLOSE3 CONTINUE BELOW @V305174 00956000 VCLOSE EQU * @V305174 00957000 ICM R3,B'1111',AVSRWORK DMSVSR ACTIVE? @V305174 00958000 BZ VCLOSE2 NO, SKIP @V305174 00959000 TM VSAMFLG1,VIPINIT VSR WORKING FOR OS? @V305174 00960000 BZ VCLOSE2 NO, SKIP @V305174 00961000 * 00962000 * ASSIST AUTOMATIC CLOSE FOR OS USER 00963000 * 00964000 * VSAM CLOSE ROUTINE REQUIRES THAT THE ADDRESS OF IKQVSM 00965000 * (DATA MGT REQUEST DRIVER) BE CONTAINED IN THE OPEN ACB- 00966000 * REPLACE A(DMSVIP) TO AVOID CLOSE ERRORS. 00967000 * 00968000 LR R5,R9 POINT TO LIST OF ACB'S @V305174 00969000 * GET ADDRESS OF VSAM DATA MGT REQUEST DRIVER 00970000 L R3,AVSAMSYS POINT TO VSAM SAVED SYSTEM @V305174 00971000 LA R3,FOUR(,R3) POINT TO 1ST PHASE NAME @VM03102 00972000 FINDVRM CLC VDRIVER,0(R3) FOUND DRIVER ENTRY? @V305174 00973000 BE STORVRM YES, GO WORK ON ACB'S @V305174 00974000 CLC 0(EIGHT,R3),FENCE HIT END OF TABLE? @VM03102 00975000 BE VCLOSE2 YES @V305174 00976000 LA R3,TWELVE(,R3) POINT TO NEXT ENTRY @VM03102 00977000 B FINDVRM AND CONTINUE @V305174 00978000 STORVRM L R3,EIGHT(R3) GET ADDR OF IKQVSM IN WORK REG @VM03102 00979000 STV2 L R4,0(R5) POINT TO ACB @V305174 00980000 ST R3,ACBAM0 STORE VSM ADDR INTO ACB @V305174 00981000 LA R5,FOUR(,R5) POINT TO NEXT ACB ADDRESS @VM03102 00982000 CLI 0(R5),HEX0A END OF LIST MARKER? @V305174 00983000 BNE STV2 NO, CONTINUE @V305174 00984000 DROP R4 @V305174 00985000 VCLOSE2 EQU * @V305174 00986000 LA R1,VSAMCLSE CALL $$BCLOSE @V305174 00987000 VCLOSE3 EQU * @V305174 00988000 LR R0,R9 GET ACB LIST POINTER IN R0 @V305101 00989000 L R4,DOSTRANS GET A(DOS TRANSIENT AREA) @V305106 00990000 ST R0,LISTPNT(R4) SAVE A(ACB LIST) FOR $$BOVSAM @V305106 00991000 LH R3,PIBPT NOW GET THE USER'S PIBTAB @V305106 00992000 L R3,EIGHT(R3) AND PNT TO USER'S SAVEAREA @VM03102 00993000 LA R3,SIXTEEN(,R3) NOW PNT AT REGSAVE PART @VM03102 00994000 ST R3,REGADDR-1(R4) SAVE A(USER REG SAVEAREA) @V305106 00995000 NI VSAMFLG1,HEXFF-VIPSOP ENSURE 'OS CALL' FLAG OFF @VM03102 00996000 SVC SVC2 FETCH $$BCVSAM @VM03102 00997000 B FINALE2 WHEN WE COME BACK, GO TO FINALE2 @V305101 00998000 FINALE LR R1,R9 FREE STORAGE @V305066 00999000 BAL R6,FREESTOR RELEASE ACQUIRED FREE STORAGE@V305066 01000000 FINALE2 SR R15,R15 SET RETURN CODE TO ZERO @V305101 01001000 SVC SVC11 RETURN TO PROB. PROG @V305066 01002000 SPACE 5 01003000 SVC6 LR R1,R9 FREE STORAGE POINTER @V305066 01004000 LR R9,R15 SAVE RETURN CODE @V305066 01005000 BAL R6,FREESTOR RELEASE ACQUIRED FREE STORAGE@V305066 01006000 TM VSAMFLG1,VIPSOP WHERE WE CALLED FROM VIP ? @V305101 01007000 BZ CHKAMS NO, SEE IF AMS RUNNING... @V305101 01008000 DMSKEY RESET UNSTACK VIP'S NUCLEUS KEY, @V305101 01009000 NI VSAMFLG1,HEXFF-VIPSOP AND RESET VIPSOP FLAG. @VM03102 01010000 CHKAMS LR R15,R9 RESTORE RETURN CODE. @V305101 01011000 TM VSAMFLG1,VSAMSERV IS AMSERV RUNNING ? @V305101 01012000 BZ DOSVC6 NO, JUST ISSUE SVC 6 (CANCEL) @V305101 01013000 LA R1,ABTERM OTHERWISE CALL $$BABEND TO @V305101 01014000 SVC SVC2 GIVE CONTROL TO AMSERV STXIT. @VM03102 01015000 DOSVC6 SVC SVCSIX ISSUE CANCEL SVC @VM03102 01016000 SPACE 5 01017000 FREESTOR LA R0,FREEDB GET NUMBER DOUBLE WORDS TO FREE @V305101 01018000 DMSFRET DWORDS=(0),LOC=(1),TYPCALL=BALR @V305101 01019000 BR R6 RETURN TO MAIN LINE ROUTINE @V305066 01020000 EJECT 01021000 CRPLIST MVC PLIST(EIGHT),TAPEIO PREPARE PLIST FOR TAPEIO @VM03102 01022000 MVC DEVID(THREE),TAPEIO MOVE 'TAP' TO PLIST @VM03102 01023000 MVC DEVID+3(ONE),PUBCUU+1 SECOND DIGIT OF CUU IN PUB@VM03102 01024000 OI DEVID+3,CHARDATA CHANGE TO CHAR DATA @V305066 01025000 LA R3,BUFFER BUFFER ADDRESS @V305066 01026000 ST R3,PMODE STORE BUFFER ADDRESS IN PLIST@V305066 01027000 MVC BUFFLEN,EIGHTY BUFFER LEN = 80 @V305066 01028000 MVC PMODE,PUBTAPM1 CMS TAPE MODE TO PLIST @V305066 01029000 BR R6 @V305066 01030000 EJECT 01031000 SPACE 2 01032000 CVTUNIT SR R5,R5 CLEAR @V305066 01033000 IC R5,SEVEN(,R2) GET UNIT NUMBER @VM03102 01034000 TM SIX(R2),PROG IS IT PROGRAMMER UNIT? @VM03102 01035000 BO CNVPROG YES, BRANCH @V305066 01036000 SLL R5,TWO MULTIPLY BY 4 @VM03102 01037000 LA R5,SYSTAB(R5) INDEX TO CORRECT XXX @V305066 01038000 MVC DDNAME+3(THREE),0(R5) MOVE XXX TO AREA @VM03102 01039000 CONVERT2 MVC DDNAME(THREE),SYS MOVE THE SYS TO AREA @VM03102 01040000 BR R6 RETURN REG @V305066 01041000 CNVPROG CVD R5,DDNAME CONVERT UNIT NUMBER @V305066 01042000 UNPK DDNAME+3(THREE),DDNAME+6(TWO) CVT TO ZONED @VM03102 01043000 OI DDNAME+5,CHARDATA SET LAST ZONE @V305066 01044000 B CONVERT2 GO TO MOVE SYS TO AREA @V305066 01045000 EJECT 01046000 CVTCUU LH R5,0(R5) CUU TO REGISTER @V305066 01047000 SLL R5,4 ZERO AND SHIFT LAST 4 BITS @V305066 01048000 ST R5,DDNAME+4 STORE IN DOUBLE WORD @V305066 01049000 OI DDNAME+7,PACKED PUT IN PACKED DEC FORMAT @V305066 01050000 UNPK DDNAME(THREE),DDNAME+6(TWO) CVT CUU TO ZONE @VM03102 01051000 OI DDNAME+2,CHARDATA PRINTABLE CHARACTER @V305066 01052000 LA R5,DDNAME POINT FOR ERROR MESSAGE @V305066 01053000 BR R6 RETURN REG @VM03105 01054000 EJECT 01055000 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 01056000 * ERROR MESSAGES * 01057000 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 01058000 SPACE 5 01059000 BADCLOSE LA R4,BUFFER SCRATCH AREA @V305066 01060000 CVD R15,0(R4) CVT ERROR CODE TO DEC @V305066 01061000 UNPK 0(TWO,R4),SIX(TWO,R4) UNPACK @VM03102 01062000 MVC TWO(FOURTEEN,R4),ERRMSG1 SETUP ERROR MESSAGE @VM03102 01063000 OI ONE(R4),CHARDATA CVT ERROR CODE TO EBCDIC @VM03102 01064000 MVC EIGHT(SEVEN,R4),DDNAME TAPN/SYSXXX @VM03102 01065000 LR R5,R15 SAVE RETURN CODE @V305066 01066000 DMSERR MF=I,SUB=(CHARA,(R4)),NUM=89,LET=E,TEXT='CLOSE ERROR CO*01067000 DE ''..................' @V305066 01068000 LA R15,THIRTY6 RETURN CODE = 36 @V305066 01069000 CH R5,K8 UNASSIGNMENT ERROR @V305066 01070000 BNE SVC6 NO, JUST REGULAR CANCEL @V305066 01071000 LR R1,R9 FREE STORAGE POINTER @V305066 01072000 LR R9,R15 SAVE RETURN CODE @V305066 01073000 BAL R6,FREESTOR FREE ACQUIRED STORAGE @V305066 01074000 LR R15,R9 RESTORE RETURN CODE @V305066 01075000 SR R0,R0 CLEAR REGISTER 0 @V305066 01076000 IC R0,DOSVSUA @V305066 01077000 LA R1,ABTERM ROUT.TO SEE IF STXIT AB ROUTINE @V305066 01078000 SVC SVC2 @V305066 01079000 SPACE 2 01080000 ERR88E LA R4,TYPESD POINT TO DTF TYPE @V305066 01081000 DMSERR NUM=88,LET=E,SUB=(HEX4A,(R4)),TEXT='UNSUPPORTED DTF TYP*01082000 E ''..''' @V305066 01083000 LA R15,TWENTY4 RETURN CODE = 24 @V305066 01084000 B SVC6 BR TO CANCEL ROUTINE @V305066 01085000 SPACE 5 01086000 ERR113SB BAL R6,CVTCUU CONVERT CUU TO PRINTABLE @V305066 01087000 LA R6,DEVID POINT TO TAPX @V305066 01088000 DMSERR NUM=113,LET=S,SUB=(CHARA,(R6),CHARA,(R5)),TEXT='''.... *01089000 (...)'' NOT ATTACHED',MF=(E,'SYS') @V305066 01090000 LA R15,HUNDRED RETURN CODE = 100 @V305066 01091000 B SVC6 BR TO CANCEL @V305066 01092000 SPACE 5 01093000 ERR58E LA R6,DEVID POINT TO TAPN @V305066 01094000 DMSERR NUM=58,LET=E,TEXT='END-OF-FILE OR END-OF-TAPE ON ''....*01095000 ''',SUB=(CHARA,(R6)) @V305066 01096000 LA R15,FORTY RETURN CODE = 40 @V305066 01097000 B SVC6 BR TO CANCEL ROUTINE @V305066 01098000 SPACE 5 01099000 ERR43E LA R5,DEVID POINT TO TAPX @V305066 01100000 DMSERR NUM=43,LET=E,SUB=(CHARA,(R5)),TEXT='.... IS FILE PROTEC*01101000 TED' @V305066 01102000 LA R15,THIRTY6 RETURN CODE = 36 @V305066 01103000 B SVC6 BR TO CANCEL ROUTINE @V305066 01104000 EJECT 01105000 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 01106000 * CONSTANTS * 01107000 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 01108000 SPACE 5 01109000 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 01110000 * SYSXXX CONSTANTS FOR SYSTEM LOGICAL UNITS * 01111000 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 01112000 SPACE 2 01113000 SYSTAB DS 0H @V305066 01114000 DC CL4'RDR' 00 @V305066 01115000 DC CL4'IPT' 01 @V305066 01116000 DC CL4'PCH' 02 @V305066 01117000 DC CL4'LST' 03 @V305066 01118000 DC CL4'LOG' 04 @V305066 01119000 DC CL4'LNK' 05 @V305066 01120000 DC CL4'RES' 06 @V305066 01121000 DC CL4'SLB' 07 @V305066 01122000 DC CL4'RLB' 08 @V305066 01123000 DC CL4'USE' 09 @V305066 01124000 DC CL4'REC' 0A @V305066 01125000 DC CL4'CLB' 0B @V305066 01126000 DC CL4'VIS' 0C @V305066 01127000 DC CL4'CAT' 0D @V305066 01128000 EJECT 01129000 EOF1 DC C'EOF1' @V305066 01130000 UTL DC C'UTL' @V305066 01131000 EIGHTY DC F'80' @V305066 01132000 ERRMSG1 DC C''' ON '' ''' @V305066 01133000 ABTERM DC CL8'$$BABEND' @V305066 01134000 VSAMCLSE DC CL8'$$BCVSAM' @V305066 01135000 VSAMTCLS DC CL8'$$BTCLOS' THE LONG WAY FOR OS REQUEST @V305106 01136000 SPACE 5 01137000 CLOSE DC CL8'CP' COMMAND NAME @V305066 01138000 DC CL8'CLOSE' ACTION @V305066 01139000 FENCE DC 8X'FF' PLIST FENCE @V305066 01140000 SPACE 5 01141000 CREADER DC CL8'READER' @V305066 01142000 CPUNCH DC CL8'PUNCH' @V305066 01143000 CPRINT DC CL8'PRINT' @V305066 01144000 ERASE DC CL8'ERASE' @V305066 01145000 SYS DC CL3'SYS' FIRST 3 CHAR OF ALL LOG UNITS @V305066 01146000 SPACE 2 01147000 K1 DC H'1' ONE @V305066 01148000 K2 DC H'2' TAPE MARK ENCOUNTERED @V305066 01149000 K5 DC H'5' TAPE NOT ATTACHED @V305066 01150000 K8 DC H'8' DOS/VS CODE FOR UNASSIGNED @V305066 01151000 SYSLST DC H'3' SYSLST @V305066 01152000 SYSPCH DC H'2' SYSPCH @V305066 01153000 SPACE 5 01154000 TAPEIO DC CL8'TAPEIO' @V305066 01155000 REW DC CL8'REW' @V305066 01156000 RUN DC CL8'RUN' @V305066 01157000 WTM DC CL8'WTM' @V305066 01158000 READ DC CL8'READ' @V305066 01159000 BSR DC CL8'BSR' @V305066 01160000 FSF DC CL8'FSF' @V305066 01161000 SENSE DC CL8'SENSE' @V305066 01162000 SPACE 5 01163000 DC 0F'0' @V305066 01164000 CCW CCW X'01',0,X'20',1 CCW TO EJECT CARD @V305066 01165000 VDRIVER DC CL8'IKQVRM' VSAM DM REQ DRIVER PHASE NAME@V305174 01166000 EJECT 01167000 PROC1 DC A(TREWIND) REWIND TAPE @V305066 01168000 PROC2 DC A(EXIT) EXIT FROM PHASE @V305066 01169000 PROC3 DC A(BYSTDUTL) BYPASS ALL TRAILER LABELS @V305066 01170000 DC A(EXIT) EXIT FROM PHASE @V305066 01171000 SPACE 2 01172000 PROC7 DC A(TMWRITE) WRITE TM @V305066 01173000 DC A(EXIT) EXIT FROM PHASE @V305066 01174000 SPACE 2 01175000 PROC6 DC A(TMWRITE) WRITE A TM @V305066 01176000 DC A(TREWIND) REWIND @V305066 01177000 DC A(EXIT) EXIT FROM PHASE @V305066 01178000 SPACE 5 01179000 PROCTAB EQU * @V305066 01180000 DC A(PROC7) O/P FILE, NOREWIND @V305066 01181000 DC A(PROC6) O/P FILE, REWIND @V305066 01182000 DC A(PROC3) I/P FILE, NOREWIND, EOF @V305066 01183000 DC A(PROC1) I/P FILE, REWIND @V305066 01184000 DC A(PROC2) I/P FILE, NOREWIND, NOEOF @V305066 01185000 SPACE 5 01186000 EJECT 01187000 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 01188000 * EQUATES * 01189000 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 01190000 SPACE 5 01191000 CPTYPE EQU X'30' @V305066 01192000 TEN EQU X'10' @V305066 01193000 TWENTY EQU X'20' @V305066 01194000 TWO EQU X'02' @V305066 01195000 ONE EQU 1 @VM05066 01196000 THREE EQU 3 @VM05066 01197000 FOUR EQU 4 @VM05066 01198000 SIX EQU 6 @VM03102 01199000 SEVEN EQU 7 @VM05066 01200000 EIGHT EQU 8 @VM03102 01201000 ELEVEN EQU 11 @VM05066 01202000 TWELVE EQU 12 @VM03102 01203000 FOURTEEN EQU 14 @VM03102 01204000 SIXTEEN EQU 16 @VM03102 01205000 SEVTEEN EQU 17 @VM05066 01206000 EIGHTEEN EQU 18 @VM03102 01207000 DEC20 EQU 20 @VM03102 01208000 TWENTY4 EQU 24 @VM05066 01209000 THIRTY6 EQU 36 @VM05066 01210000 FORTY EQU 40 @VM05066 01211000 SEVENTY9 EQU 79 @VM03102 01212000 HUNDRED EQU 100 @V305066 01213000 REGADDR EQU 1181 A(USER REGSAVE AREA) FROM TRANS @V305106 01214000 LISTPNT EQU 1196 A(USER ACB LIST) FROM TRANS @V305106 01215000 HEXEF EQU X'EF' @V305066 01216000 HEXFB EQU X'FB' SET OPEN IND OFF @V305066 01217000 HEXFE EQU X'FE' @V305066 01218000 IGN EQU X'FE' @V305066 01219000 HEXFF EQU X'FF' ILLEG SEEK IN LOW LIM @V305066 01220000 CHARDATA EQU X'F0' INSURE PRINTABLE CHARACTERS @V305066 01221000 HEXF6 EQU X'F6' LIOCS CLOSE INDICATOR OFF @V305066 01222000 PACKED EQU X'0C' PACKED DECIMAL FORMAT @V305066 01223000 CON EQU X'00' @V305066 01224000 SYSFILE EQU X'00' SYSTEM FILE @V305066 01225000 ZERO EQU X'00' USED FOR TURNING OFF SWITCHES @V305066 01226000 HEX00 EQU X'00' @V305066 01227000 PROG EQU X'01' PROGRAMMER LOGICAL UNIT @V305066 01228000 LASTREC EQU X'01' WRITING LAST RECORD @V305066 01229000 HEX01 EQU X'01' @V305066 01230000 CPASCII EQU X'02' DTFCP TAPE WITH ASCII @V305066 01231000 DE EQU X'04' DEVICE END @V305066 01232000 PCH EQU X'04' PUNCH DEVICE CODE @V305066 01233000 OPENIND EQU X'04' @V305066 01234000 HEX4 EQU X'04' @V305066 01235000 HEX07 EQU X'07' @V305066 01236000 WRITE EQU X'08' TAPE WRITE COMMAND @V305066 01237000 LOADPT EQU X'08' TAPE AT LOAD POINT @V305066 01238000 PCHCP EQU X'08' 2540/2520 PUNCH @V305066 01239000 OFF EQU X'08' RESET OPEN COMMUNICATION SW @V305066 01240000 TAPIP EQU X'08' TAPE INPUT FILE @V305066 01241000 HEX8 EQU X'08' @V305066 01242000 SECOND EQU X'09' GOING TO LOG MOD FOR SEC TIME @V305066 01243000 WRCKD EQU X'1D' WRITE COUNT, KEY AND DATA CCW @V305066 01244000 TAPECP EQU X'10' DTFCP TAPE @V305066 01245000 HEX11 EQU X'11' @V305066 01246000 HEX12 EQU X'12' @V305066 01247000 HEX14 EQU X'14' @V305066 01248000 HEX18 EQU X'18' @V305066 01249000 DISKCP EQU X'20' DTFCP DISK @V305066 01250000 PCH2520 EQU X'20' 2520 PUNCH @V305066 01251000 REWUNL EQU X'20' REWIND/UNLOAD @V305066 01252000 PCH2540 EQU X'21' 2540 PUNCH @V305066 01253000 PCH3525 EQU X'23' 3525 PUNCH @V305066 01254000 HEX23 EQU X'23' @V305066 01255000 DOSVSUA EQU X'26' DOS/VS CODE FOR UNASSIGN @V305066 01256000 SECTIME EQU X'28' GOING TO LOG MOD SEC TIME @V305066 01257000 ACB EQU X'28' @V305066 01258000 HEX31 EQU X'31' @V305066 01259000 CP EQU X'32' DTFCP @V305066 01260000 DI EQU X'33' DTFDI @V305066 01261000 BLANK EQU X'40' @V305066 01262000 WORKRUN EQU X'40' REW/UNLOAD FOR TAPE WORKFILES @V305066 01263000 RECFM EQU X'40' RECFM @V305066 01264000 RECFMVAR EQU X'40' TEST FOR VARIABLE RECFM @V305066 01265000 PRINTER EQU X'40' @V305066 01266000 DEL EQU X'40' @V305066 01267000 TAPE EQU X'50' @V305066 01268000 TCR EQU X'51' TAPE CARTRIDGE READER @V305066 01269000 HEX7F EQU X'7F' @V305066 01270000 CPREWIND EQU X'80' REWIND TAPE FOR DTFCP @V305066 01271000 TAPEPH EQU X'80' DTFPH TAPE FILE @V305066 01272000 FORMAT EQU X'86' READ DIR + RECFM @V305066 01273000 HEX0A EQU X'0A' DOS END OF LIST MARKER @V305174 01274000 SVC0 EQU 0 SVC 0 @V305066 01275000 SVC2 EQU 2 SVC 2 @V305066 01276000 SYSLNK EQU 5 SYSLNK @V305066 01277000 SYSRES EQU 6 SYSRES @V305066 01278000 SVCSIX EQU 6 SVC 6 @V305066 01279000 SVC8 EQU 8 SVC 8 @V305066 01280000 SVC11 EQU 11 SVC 11 @V305066 01281000 SVC202 EQU 202 TO CALL CMS ROUTINES @VM03102 01282000 SPACE 2 01283000 EJECT 01284000 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 01285000 * DSECTS 01286000 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 01287000 SPACE 5 01288000 DTFUNIT DSECT @V305066 01289000 CCB DS CL6 @V305066 01290000 LOGUNT DS CL2 LOGICAL UNIT @V305066 01291000 CCWADDR DS CL4 ADDRESS OF CCW CHAIN @V305066 01292000 DS CL4 @V305066 01293000 SWITCH3 DS CL4 @V305066 01294000 DTFTYPE DS CL1 @V305066 01295000 SWITCH DS CL1 @V305066 01296000 COMCODE DS CL2 @V305066 01297000 BUFFER1 DS CL10 @V305066 01298000 LODIOREG DS CL4 @V305066 01299000 DEVCODE DS CL1 @V305066 01300000 EJECT 01301000 DTFSDW DSECT SEQUENTIAL DISK WORKFILE DSECT @V305066 01302000 DS CL6 @V305066 01303000 UNITSDW DS CL1 LOGICAL UNIT @V305066 01304000 CLASSSDW DS CL1 CLASS @V305066 01305000 DS CL4 @V305066 01306000 FCBSDW DS CL4 FCB ADDRESS @V305066 01307000 LOGMODAD DS CL4 LOGIC MODULE ADDRESS @V305066 01308000 TYPESDW DS CL1 DTF TYPE X'20' @V305066 01309000 SDWFLAG1 DS CL1 @V305066 01310000 DISKSDW EQU X'00' DISK DEVICE @V305066 01311000 SDWORKW EQU X'20' WORK FILE @V305066 01312000 POINTSDW EQU X'10' TYPE OF OPEN - POINT OR NORMAL @V305066 01313000 RESETPNT EQU X'EF' RESET POINT INDICATOR @V305066 01314000 FMCLOSE EQU X'08' ROUT. ENTERED FROM CLOSE ROUTINE @V305066 01315000 OPENSDW EQU X'04' FILE OPENED @V305066 01316000 TOCLOSE EQU X'01' REENTRY TO CLOSE ROUTINE @V305066 01317000 FILESDW DS CL7 FILENAME @V305066 01318000 DEVSDW DS CL1 DEVICE TYPE CODE @V305066 01319000 SDW2311 EQU X'00' 2311 @V305066 01320000 SDW2314 EQU X'01' 2314 0R 2319 @V305066 01321000 SDW3330 EQU X'04' 3330 @V305066 01322000 SDW3340 EQU X'08' 3340 GENERAL @V305066 01323000 SDW3340X EQU X'09' 3340 35MB @V305066 01324000 SDW3340Y EQU X'0A' 3340 70MB @V305066 01325000 SDWCAP DS CL2 TRACK CAPACITY COUNTER @V305066 01326000 DS CL4 @V305066 01327000 SDWSEQ DS CL1 EXTENT SEQUENCE NUMBER @V305066 01328000 COMSDW DS CL1 OPEN COMMUNICATIONS BYTE @V305066 01329000 EXTOPENW EQU X'04' EXTENT OPENED @V305066 01330000 LOHDSDW DS CL1 LOWER HEAD LIMIT @V305066 01331000 UPHDSDW DS CL1 UPPER HEAD LIMIT @V305066 01332000 LRECLSDW DS CL2 RECORD LENGTH @V305066 01333000 EXT1LL DS CL4 INITIAL EXTENT LOWER LIMIT @V305066 01334000 CUREXTLL DS CL4 CURRENT EXTENT LOWER LIMIT @V305066 01335000 EXTUPLIM DS CL4 EXTENT UPPER LIMIT @V305066 01336000 SEEKSDW DS CL2 SEEK ADDRESS (CCHH) @V305066 01337000 SRCHSDW DS CL4 SEARCH ADDRESS (CCHH) @V305066 01338000 RECSDW DS CL1 RECORD NUMBER @V305066 01339000 LOGMODSW DS CL1 LOGIC MODULE SWITCH @V305066 01340000 SWOFF EQU X'7F' SET WORK FILE SW OFF @V305066 01341000 CHECKRW EQU X'02' CHECK AFTER READ/WRITE @V305066 01342000 MAXREC DS CL2 MAXIMUM RECORD LENGTH @V305066 01343000 EOFSDW DS CL3 USER'S EOF ADDRESS @V305066 01344000 LOGIND DS CL1 LOGICAL INDICATORS @V305066 01345000 WRITECCW EQU DTFSDW+96 CCW @V305066 01346000 CNTLIM EQU DTFSDW+150 PART OF COUNT AREA FIELD @V305066 01347000 RECORD EQU DTFSDW+148 RECORD NUMBER IN COUNT AREA @V305066 01348000 EJECT 01349000 DTFSD DSECT SEQUENTIAL DISK DSECT @V305066 01350000 DS CL6 @V305066 01351000 UNITSD DS CL1 LOGICAL UNIT @V305066 01352000 CLASSSD DS CL1 CLASS @V305066 01353000 DS CL4 @V305066 01354000 FCB1SD DS CL4 FCB ADDRESS @V305066 01355000 SDFLAG0 DS CL1 @V305066 01356000 SPANSD EQU X'02' SPANNED PROCESSING @V305066 01357000 DS CL3 @V305066 01358000 TYPESD DS CL1 DTF TYPE = X'20' @V305066 01359000 SDFLAG1 DS CL1 @V305066 01360000 SDBLOCK EQU X'40' BLOCKED FILE @V305066 01361000 SDWORK EQU X'20' WORK FILE @V305066 01362000 WORKSD EQU X'10' WORK AREA SPECIFIED @V305066 01363000 OPENSD EQU X'04' FILE OPEN @V305066 01364000 INPSD EQU X'02' INPUT FILE @V305066 01365000 FILESD DS CL7 FILENAME @V305066 01366000 DEVSD DS CL1 DEVICE TYPE CODE @V305066 01367000 SD2311 EQU X'00' 2311 @V305066 01368000 SD2314 EQU X'01' 2314, OR 2319 @V305066 01369000 SD3330 EQU X'04' 3330 @V305066 01370000 SD3340 EQU X'08' 3340 GENERAL @V305066 01371000 SD3340X EQU X'09' 3340 35MB @V305066 01372000 SD3340Y EQU X'0A' 3340 70MB @V305066 01373000 F1ADDR DS CL8 F1ADDR @V305066 01374000 COMSD DS CL1 OPEN COMMUNICATIONS BYTE @V305066 01375000 NOEXTSD EQU X'80' NO MORE EXTENTS @V305066 01376000 EOFSD EQU X'10' EXIT TO USER'S EOF ROUTINE @V305066 01377000 TLOSESD EQU X'04' RETURN TO CLOSE ROUTINE @V305066 01378000 EXTSWSD EQU X'01' EXTENT SWITCH @V305066 01379000 UPDSD EQU X'40' UPDATE = YES @V305066 01380000 DS CL5 @V305066 01381000 SDIO1 DS CL4 ADDRESS OF IOAREA1 @V305066 01382000 DS CL4 @V305066 01383000 HHSD DS CL2 LOWER HEAD LIMIT @V305066 01384000 CCHHSD DS CL4 EXT UPPER LIMIT (CCHH) @V305066 01385000 SEEKSD DS CL2 SEEK ADDRESS (BB) @V305066 01386000 SEARCHSD DS CL4 SEARCH ARGUMENT @V305066 01387000 RECSD DS CL1 RECORD NUMBER @V305066 01388000 EODSD DS CL3 EOF ADDRESS IF INPUT @V305066 01389000 KEYDATA EQU EOFSD KEY LEN AND DATA LEN IF OUTPUT @V305066 01390000 CONSD DS CL4 CCHH CONTROL FIELD @V305066 01391000 TRK EQU CONSD+3 TRK PORTION OF CCHH CONTROL FIELD@V305066 01392000 RECTRKSD DS CL1 NO RECS PER TRK/INP @V305066 01393000 * NO RECS PER TRK MINUS ONE/OUT 01394000 SDFLAG2 DS CL1 @V305066 01395000 BLKLESS1 DS CL2 BLOCKSIZE MINUS ONE @V305066 01396000 CCHHRSD DS CL5 EXT LOWER LIMIT AND RECORD NUMBER@V305066 01397000 TRKCAPSD DS CL3 TRACK CAPACITY COUNTER IF OUTPUT @V305066 01398000 IOREGSD DS CL4 INST. TO LOAD IOREG @V305066 01399000 CURIOSD DS CL4 ADDRESS OF CURRENT I/O AREA @V305066 01400000 LRECLSD DS CL4 LOGICAL RECORD SIZE @V305066 01401000 ENDIOSD DS CL4 ADDRESS OF END OF I/O AREA @V305066 01402000 SDFLAG3 DS CL1 LOGICAL INDICATORS @V305066 01403000 IO2SD EQU X'08' 2 I/O AREAS @V305066 01404000 FIXSD EQU X'02' FIXED LENGTH RECORDS @V305066 01405000 CNTRLSD EQU X'01' CONTROL PARAMETER SPECIFIED @V305066 01406000 UNDEFOP EQU X'04' UNDEFINED O/P FILE @V305066 01407000 NOTRUNCF EQU X'04' TRUNC IS NOT SPECIFIED @V305066 01408000 DS CL35 @V305066 01409000 CCWA DS CL8 BEG. OF VARIABLE PORTION OF DTF @V305066 01410000 CCWB DS CL8 CHK CCWA & CCWB FOR TRUNCS/UPDATE@V305066 01411000 DS CL12 @V305066 01412000 FCB2SD DS CL4 VAR/UNDEF/SPAN/INP/UPD=NO FCB ADDR@V305066 01413000 DS CL8 @V305066 01414000 ORG CCWA FIXBLK,UPDATE,INP @V305066 01415000 DS CL36 FIXBLK,CONTROL,OUTPUT @V305066 01416000 FCB3SD DS CL4 FCB ADDRESS @V305066 01417000 DS CL8 @V305066 01418000 ORG CCWA FIXBLK,TRUNC,UPDATE,INP @V305066 01419000 DS CL52 VAR,OUTPUT,CONTROL @V305066 01420000 FCB4SD DS CL4 FCB ADDRESS @V305066 01421000 DS CL8 @V305066 01422000 ORG CCWA @V305066 01423000 DS CL12 FIXBLK,CONTROL,INPUT @V305066 01424000 FCB5SD DS CL4 FCB ADDRESS @V305066 01425000 DS CL8 @V305066 01426000 ORG CCWA VAR,UNDEF,INP,UPDATE @V305066 01427000 DS CL68 @V305066 01428000 FCB6SD DS CL4 FCB ADDRESS @V305066 01429000 DS CL8 @V305066 01430000 ORG CCWA UNDEF,OUTPUT,CONTROL @V305066 01431000 DS CL45 @V305066 01432000 FCB7SD DS CL4 FCB ADDRESS @V305066 01433000 DS CL8 @V305066 01434000 ORG CCWA @V305066 01435000 DS CL12 FIXBLK,INP,TRUNCS=NO,UPD=NO @V305066 01436000 FCB8SD DS CL4 CONTROL= YES FCB ADDRESS @V305066 01437000 DS CL8 @V305066 01438000 EJECT 01439000 DTFMT DSECT @V305066 01440000 DS CL6 @V305066 01441000 UNITMT DS CL1 LOGICAL UNIT @V305066 01442000 CLASSMT DS CL1 CLASS @V305066 01443000 DS CL8 @V305066 01444000 MTFLAG0 DS CL1 TAPE SWITCH @V305066 01445000 DS CL3 @V305066 01446000 TYPEMT DS CL1 DTF TYPE = X'10'-X'14' @V305066 01447000 MTFLAG1 DS CL1 @V305066 01448000 WKNORWD EQU X'80' NO REWIND SPECIFIED @V305066 01449000 MTBLOCK EQU X'40' BLOCKED FILE @V305066 01450000 MT2IO EQU X'20' 2 I/O AREAS @V305066 01451000 MTWORK EQU X'10' WORK AREA SPECIFIED @V305066 01452000 MTINP EQU X'08' INPUT FILE @V305066 01453000 MTBACK EQU X'04' BACKWARDS @V305066 01454000 MTFN DS CL8 FILENAME @V305066 01455000 MTFLAG2 DS CL1 TAPE SWITCH @V305066 01456000 DS CL1 @V305066 01457000 NOREWIND EQU X'10' NOREWIND SPECIFIED @V305066 01458000 NONSTD EQU X'40' NON-STANDARD LABEL PROCESSING @V305066 01459000 BACKWARD EQU X'08' DRIVE DIRECTION = BACKWARD @V305066 01460000 MTFLAG3 DS CL1 TAPE SWITCH @V305066 01461000 FILETYPE EQU X'20' INPUT FILE @V305066 01462000 MTOPEN EQU X'04' FILE OPEN @V305066 01463000 ENDFILE EQU X'08' END OF FILE SWITCH ON @V305066 01464000 DS CL3 @V305066 01465000 MTFLAG4 DS CL1 @V305066 01466000 DS CL3 @V305066 01467000 BLOCKCNT DS CL4 @V305066 01468000 MTDIR DS CL4 TAPE DIRECTION, FORWARD, BACKWARD@V305066 01469000 DS CL8 @V305066 01470000 MTCCW DS CL8 @V305066 01471000 DS CL4 @V305066 01472000 DBLOCK1 DS CL4 @V305066 01473000 DS CL4 @V305066 01474000 DBLOCK3 DS CL4 @V305066 01475000 DS CL4 @V305066 01476000 DS CL4 @V305066 01477000 DBLOCK6 DS CL4 DBLOCKER 6 @V305066 01478000 EJECT 01479000 DTFCP DSECT @V305066 01480000 DS CL2 @V305066 01481000 CPSTAT DS CL1 STATUS BYTE @V305066 01482000 DS CL3 @V305066 01483000 LOGUNT1 DS CL1 FIRST BYTE OF LOG. UNIT @V305066 01484000 LOGUNT2 DS CL1 SEC. BYTE OF LOG. UNIT @V305066 01485000 CPCCW1 DS CL4 CCW ADDRESS @V305066 01486000 DS CL4 @V305066 01487000 CPFLAG0 DS CL1 SWITCH @V305066 01488000 DS CL3 @V305066 01489000 TYPECP DS CL1 DTF TYPE @V305066 01490000 CPFLAG1 DS CL1 OPEN INDICATORS @V305066 01491000 CPFN DS CL7 FILENAME @V305066 01492000 CPDEV DS CL1 DEVICE TYPE CODE @V305066 01493000 CPDSK DS CL1 DISK POSSIBILE WITH THIS DTF ? @V305066 01494000 CPSYSPCH DS CL1 @V305066 01495000 DS CL1 @V305066 01496000 CPIOREG DS CL1 IOREG @V305066 01497000 DS CL3 @V305066 01498000 CPIOREG2 DS CL1 IOREG FOR DIFFERENT DTF @V305066 01499000 CPFLAG2 DS CL1 OPEN SWITCH @V305066 01500000 CPSEQC DS CL1 CURRENT EXTENT SEQ @V305066 01501000 CPSEQL DS CL1 LAST EXT SEQUENCE @V305066 01502000 CPFLAG3 DS CL1 STANDARD LABEL SWITCH @V305066 01503000 STDLAB EQU X'80' @V305066 01504000 CPDEVTY DS CL1 @V305066 01505000 CPFLAG4 DS CL1 DASD,RDR, OR OTHER @V305066 01506000 DASD EQU X'F3' DASD @V305066 01507000 RDR EQU X'F1' RDR @V305066 01508000 OTHER EQU X'F0' OTHER @V305066 01509000 CPFLAG5 DS CL1 @V305066 01510000 CPIN EQU X'80' @V305066 01511000 ALTERIO DS CL3 @V305066 01512000 CCWORIG DS CL4 @V305066 01513000 CPLOHD DS CL2 LOWER HD LIMIT @V305066 01514000 CPEXTUP DS CL4 EXT UPPER LIMIT @V305066 01515000 DS CL10 @V305066 01516000 CPBUCK DS CL4 CONTROL BUCKET CCHH @V305066 01517000 CPRECS DS CL1 NO. RECS/TRK/ FOR OUT @V305066 01518000 * NO. RECS/TRK+1 FOR INPUT 01519000 CPFLAG6 DS CL1 @V305066 01520000 CPINP EQU X'00' INPUT @V305066 01521000 CPOUT EQU X'01' OUTPUT @V305066 01522000 CPDEVID DS CL2 @V305066 01523000 CPCOUNT DS CL5 CCHHR FOR COUNT FIELD @V305066 01524000 DS CL1 @V305066 01525000 CPDATLEN DS CL2 DATALENGTH IN DTF @V305066 01526000 CPINSTR DS CL4 INST TO LOAD IOAREA ADDR TO IOREG@V305066 01527000 DS CL24 @V305066 01528000 CPCCWIA DS CL1 FIRST BYTE INPUT CCW @V305066 01529000 CPCCWIB DS CL7 CCW FOR DASD INP/CCW FOR DASD OUT@V305066 01530000 CPCCWOA DS CL1 FIRST BYTE OF OUTPUT CCW @V305066 01531000 CPCCWOB DS CL7 REST OF OUTPUT CCW @V305066 01532000 EJECT 01533000 DS 0D @V305066 01534000 TAPERES DSECT @V305066 01535000 DS CL1 @V305066 01536000 CCBSW DS CL14 @V305066 01537000 DS CL2 @V305066 01538000 LOGMOD1 DS CL3 LOGIC MODULE ADDRESS @V305066 01539000 CPTYPE1 DS CL1 DTF TYPE FOR TAPE RES X'31' @V305066 01540000 CPOPEN1 DS CL1 OPEN INDICATORS @V305066 01541000 CPFN1 DS CL7 FILENAME @V305066 01542000 DS CL1 @V305066 01543000 CPFLAG7 DS CL1 X'00' IND.TO DTFCP OPEN PHASES @V305066 01544000 CPFLAG8 DS CL1 @V305066 01545000 CPFLAG9 DS CL1 OPEN INDICATORS @V305066 01546000 IO2AD DS CL3 IOAREA2 ADDRESS @V305066 01547000 CPINST DS F INST TO LOAD IOAREA AD TO IOREG @V305066 01548000 CPCCW0 DS D CCW @V305066 01549000 * END OF TABLE IF DTF IS DEFINED AS O/P AND DEVADDR IS NOT SYSPCH 01550000 PUNCCW1 DS D 2540 PUNCH ERROR RECOVERY CCW1 @V305066 01551000 PUNCCW2 DS D 2540 PUNCH ERROR RECOVERY CCW2 @V305066 01552000 CPEOF DS CL3 EOF ADDRESS - INPUT ONLY @V305066 01553000 EJECT 01554000 FREE DSECT @V305066 01555000 DS 0D @V305066 01556000 CCWS DS D CCW TO EJECT CARD @V305066 01557000 SPACE 2 01558000 PLIST DS CL8 IO PLIST @V305066 01559000 FUNC DS CL8 @V305066 01560000 DEVID DS CL4 @V305066 01561000 PMODE DS 1X @V305066 01562000 BUFFAD DS CL3 @V305066 01563000 BUFFLEN DS CL4 @V305066 01564000 BYTES DS CL4 @V305066 01565000 SPACE 2 01566000 DDNAME DS D USED FOR MESSAGE FIELD @V305066 01567000 DTFREG DS F SAVE FOR DTF ADDRESS @V305066 01568000 SAVEPTR DS F POINTER TO DTF PARM LIST @V305066 01569000 ADSAVE DS F CCW ADDRESS @V305066 01570000 BUFFER DS 20F IO BUFFER @V305066 01571000 UPDATSW DS XL1 WRITING LAST REC SW @V305066 01572000 SUBONE DS XL1 SWITCH @V305066 01573000 ZONE DS XL1 PUB DEVICE TYPE ZONE @V305066 01574000 FREEND DS 0D @V305174 01575000 FREELN EQU (FREEND-FREE) @V305174 01576000 FREEDB EQU (FREEND-FREE)/8 @V305174 01577000 EJECT 01578000 DS 0D @V305106 01579000 IKQACB DSECT @V305106 01580000 DS XL8 ACB INFORMATION @V305174 01581000 ACBAM0 DS A POINTER TO AM/0 CODE @V305174 01582000 DS XL1 @V305174 01583000 ACBINFLG DS XL1 @V305106 01584000 ACBSTSKP EQU X'08' SKIP UPDATING STATISTICS @V305106 01585000 DS XL4 @V305106 01586000 ACBMACR1 DS BL1 MACRF INFO @V305106 01587000 ACBIN EQU X'04' DATASET OPENED FOR INPUT @V305106 01588000 ACBOUT EQU X'02' DATASET OPENED FOR OUTPUT @V305106 01589000 DS XL9 @V305106 01590000 ACBDDNM DS CL8 DDNAME @V305106 01591000 EJECT 01592000 NUCON @V305066 01593000 REGEQU @V305066 01594000 EJECT 01595000 DOSAVE @V305066 01596000 BGCOM @V305066 01597000 MAPPUB @V305066 01598000 DOSCB @V305066 01599000 DMSCLS CSECT @V305066 01600000 LTORG @V305066 01601000 END 01603000