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