ibm:vm370-lib:cp:dmkcsu.assemble_src
Table of Contents
DMKCSU Source
References
- Fixes Applied : 2
- This Source Date : Wednesday, December 13, 1978
- Last Fix ID : [R10719DK]
Source Listing
- DMKCSU.ASSEMBLE.txt
- CSU TITLE 'DMKCSU (CP) VM/370 - RELEASE 6' 00001000
- ISEQ 73,80 VALIDATE SEQUENCING OF INPUT 00002000
- *. 00003000
- * MODULE NAME - 00004000
- * 00005000
- * DMKCSU 00006000
- * 00007000
- * FUNCTION - 00008000
- * 00009000
- * DMKCSU CONTAINS THE CHANGE COMMAND FOR CLASS G 00010000
- * AND CLASS D USERS. 00011000
- * 00012000
- * ATTRIBUTES - 00013000
- * 00014000
- * REENTRANT, PAGEABLE, CALLED VIA SVC 00015000
- * 00016000
- * ENTRY POINTS - 00017000
- * 00018000
- * DMKCSUCH - CHANGE COMMAND 00019000
- * 00020000
- * ENTRY CONDITIONS - 00021000
- * 00022000
- * GPR9 = ADDRESS OF THE COMMAND LINE BUFFER; MUST BE PRESERVED 00023000
- * FOR CALLS TO DMKSCNFD 00024000
- * GPR12 = ADDRESS OF ENTRY POINT 00025000
- * GPR13 = ADDRESS OF SAVEAREA 00026000
- * 00027000
- * EXIT CONDITIONS - 00028000
- * 00029000
- * NORMAL - 00030000
- * GPR2 = 0 00031000
- * 00032000
- * ERROR - 00033000
- * 00034000
- * GPR2 = CONTAINS THE BINARY MESSAGE NUMBER 00035000
- * - EITHER AN OPTION IS ILLEGAL OR SOME CONDITION 00036000
- * EXISTS THAT MAKES IT IMPOSSIBLE TO EXECUTE THE COMMAND 00037000
- * A MESSAGE IS TYPED TO DESCRIBE THE ERROR; THE ERROR 00038000
- * MESSAGES THAT MAY OCCUR ARE LISTED WITH EACH COMMAND 00039000
- EJECT 00040000
- * 00041000
- * CALLS TO OTHER ROUTINES - 00042000
- * 00043000
- * DMKSCNFD - SCAN THE COMMAND LINE BUFFER FOR OPTIONS 00044000
- * DMKSTKIO - TO STACK A IOBLOK 00045000
- * DMKSPLDL - DELETE PURGED FILES FROM THE SYSTEM 00046000
- * DMKCVTDB - CONVERT DECIMAL SPOOLID NUMBERS TO BINARY 00047000
- * DMKCVTBD - CONVERT BINARY TO DECIMAL 00048000
- * DMKERMSG - WRITE ERROR MESSAGES 00049000
- * DMKCSOSD - TO START PUNCH OR PRINTER 00050000
- * DMKSCNAU - TO LOCATE USERID VMBLOK 00051000
- * DMKQCNWT - TO WRITE A MESSAGE AT CONSOLE 00052000
- * DMKUDRFU - TO VERIFY A USER 00053000
- * DMKFREE - TO OBTAIN A BLOCK OF FREE STORAGE 00054000
- * DMKFRET - TO RETURN A BLOCK OF STORAGE 00055000
- * DMKCKSPL - CHECKPOINT THE SFBLOK 00056000
- * DMKRPAGT - READ IN THE FIRST DASD SPOOL FILE BUFFER 00057000
- * DMKRPAPT - WRITE OUT THE FIRST DASD SPOOL FILE BUFFER 00058000
- * DMKPGTVG - GET A PAGE OF VIRTUAL SYSTEM SPACE 00059000
- * DMKPGTVR - RELEASE A PAGE OF VIRTUAL SYSTEM SPACE 00060000
- * EXTERNAL REFERENCES - 00061000
- * 00062000
- * DMKRSPRD - (ARSPRD) READER FILE CHAIN ANCHOR 00063000
- * DMKRSPPR - (ARSPPR) PRINTER FILE CHAIN ANCHOR 00064000
- * DMKRSPPU - (ARSPPU) PUNCH FILE CHAIN ANCHOR 00065000
- * DMKRSPDL - SPOOL DELETE CHAIN ANCHOR 00066000
- * DMKVIOIN - IOBIRA FOR IOBLOK 00067000
- * 00068000
- * TABLES / WORKAREAS - 00069000
- * 00070000
- * IOBLOK 00071000
- * VDEVBLOK AND SFBLOKS ARE UPDATED, ALTERED OR DELETED 00072000
- * 00073000
- * THE SAVEWRK FIELDS IN THE STANDARD SAVEAREA ARE USED BY THE 00074000
- * OPTION PROCESSING SUBROUTINES FOR THE FOLLOWING VALUES - 00075000
- * 00076000
- * SAVEWRK1 - FILE OUTPUT CLASS (1 BYTE) 00077000
- * SAVEWRK1+1 - NUMBER OF COPIES (1 BYTE) 00078000
- * SAVEWRK1+2 - SPOOLID NUMBER (HALF-WORD) 00079000
- * SAVEWRK2,3 - USERID OF FILE'S OWNER 00080000
- * SAVEWRK4 - ADDRESS OF HOLDING AREA (48 BYTES) 00081000
- * SAVEWRK5 - USE VARIES WITH COMMAND 00082000
- * SAVEWRK6,7 - SAVE AREA FOR R0,R1 SCAN OPTIONS 00083000
- * SAVEWRK8,9 - USE VARIES WITH COMMAND 00084000
- * 00085000
- * HLDSECT - INTERNAL WORK AREA 00086000
- * 00087000
- * REGISTER USAGE - 00088000
- * 00089000
- * ALL SUBROUTINES IN THE MODULE CONFORM GENERALLY TO THIS USAGE; 00090000
- * ANY INDIVIDUAL DEVIATIONS OR EXTENSIONS ARE LISTED WITH THE 00091000
- * COMMAND DESCRIPTION 00092000
- * 00093000
- * GPR0 = LENGTH OF OPTION - RETURNED FROM DMKSCNFD 00094000
- * GPR1 = ADDRESS OF OPTION - RETURNED FROM DMKSCNFD 00095000
- * GPR2 = SCRATCH 00096000
- * GPR3 = INTERNAL LINKAGE - 2ND LEVEL 00097000
- * GPR4 = INTERNAL LINKAGE - 1ST LEVEL 00098000
- * GPR5 = DEVICE TYPE FLAGS - LOGICAL SUM OF TYPES 00099000
- * GPR6 = POINTER TO PREVIOUS SFBLOK ON CHAIN 00100000
- * GPR7 = SFBLOK BASE 00101000
- * GPR8 = VDEVBLOK BASE 00102000
- * GPR9 = INPUT COMMAND LINE ADDRESS 00103000
- * GPR10 = ADDRESS OF IOBLOK 00104000
- * GPR11 = VMBLOK BASE 00105000
- * GPR12 = DMKCSU BASE 00106000
- * GPR13 = SAVEAREA BASE 00107000
- * GPR14 = EXTERNAL LINKAGE 00108000
- * GPR15 = EXTERNAL LINKAGE 00109000
- * 00110000
- * NOTES - 00111000
- * 00112000
- * NONE 00113000
- * 00114000
- * OPERATION - 00115000
- * 00116000
- * EACH COMMAND PROCESSOR IS ENTERED VIA A CALL FROM DMKCFM. THE 00117000
- * PROCESSING LOGIC IS EMBODIED IN A SERIES OF INTERNAL CALLS TO 00118000
- * A SET OF OPTION PROCESSORS AND LIST SCANNERS. IN GENERAL, 00119000
- * THE OPTION PROCESSORS ARE CALLED WHEN IT IS KNOWN, EITHER BY 00120000
- * POSITION OR KEYWORD, WHAT TYPE OF OPTION MUST APPEAR NEXT ON 00121000
- * THE COMMAND LINE. THE OPTION PROCESSORS SCAN FOR THE NEXT 00122000
- * FIELD, VERIFY ITS VALIDITY, AND SET UP INFORMATION FOR USE BY 00123000
- * THE LIST SCANNERS. SINCE THE OPERATIONAL DESCRIPTION OF EACH 00124000
- * OF EACH COMMAND PROCESSOR REFERENCES THESE SUBROUTINES, A LIST 00125000
- * OF THEIR NAMES AND FUNCTIONS IS GIVEN HERE; A DESCRIPTION OF 00126000
- * THE OPERATIONAL LOGIC AND REGISTER SETS FOR EACH SUBROUTINE 00127000
- * APPEAR AT THE END OF THE MODULE 00128000
- * 00129000
- * OPTION PROCESSORS - 00130000
- * 1. GETUSER - SAVE THE USER ID OF THE FILE'S OWNER 00131000
- * 2. GETYPE - SAVE THE FILE TYPE (OR DEVICE TYPE) 00132000
- * 3. GETCOPY - LOCATE AND SAVE THE NUMBER OF COPIES REQUESTED 00133000
- * 4. GETNAME - LOCATE AND SAVE THE FILE NAME (AND TYPE) 00134000
- * 5. GETID - LOCATE AND SAVE THE SPOOLID OR CLASS 00135000
- * 6. GETCLASS - LOCATE AND VERIFY THE CLASS REQUESTED (2ND LEVEL 00136000
- * ROUTINE) 00137000
- * 7. GETCHARS - SAVE AND VERIFY CHARS VALUE SPECIFIED 00138000
- * 8. GETFLASH - SAVE AND VERIFY FLASH VALUES SPECIFIED 00139000
- * 9. GETCMOD - SAVE AND VERIFY COPY MOD NAME 00140000
- * 10. GETFCB - SAVE AND VERIFY FCB NAME SPECIFIED 00141000
- * 00142000
- * LIST SCANNING ROUTINES - 00143000
- * 2. GETFILE - LOCATE THE NEXT FILE OF THE CORRECT CLASS, ID, 00144000
- * AND OWNER 00145000
- * 3. GETCHAIN - LOCATE THE NEXT FILE CHAIN TO SEARCH (2ND 00146000
- * LEVEL ROUTINE) 00147000
- * 4. SETPEND - LOCATE AN AVAILABLE VIRTUAL READER AND 00148000
- * POST AN PENDING DEVICE END INTERRUPT 00149000
- * 00150000
- *. 00151000
- EJECT 00152000
- COPY OPTIONS 00153000
- SPACE 2 00154000
- COPY LOCAL OPTIONS 00155000
- DMKCSU CSECT 00156000
- SPACE 3 00157000
- EXTRN DMKSCNFD 00158000
- EXTRN DMKCKSPL @V304298 00159000
- EXTRN DMKCVTDB,DMKCVTBD,DMKSPLDL 00160000
- EXTRN DMKUDRFU,DMKERMSG 00161000
- EXTRN DMKCSOSD,DMKSCNAU 00162000
- EXTRN DMKVIOIN,DMKSTKIO @VM01016 00163000
- EXTRN DMKRPAGT,DMKRPAPT,DMKPGTVG,DMKPGTVR @V60B9BA 00164000
- SPACE 3 00165000
- USING PSA,R0 00166000
- USING SFBLOK,R7 00167000
- USING VDEVBLOK,R8 @VA08042 00168000
- USING BUFFER,R9 00169000
- USING VMBLOK,R11 00170000
- USING SAVEAREA,R13 00171000
- EJECT 00172000
- *. 00173000
- * SUBROUTINE NAME - 00174000
- * 00175000
- * DMKCSUCH 00176000
- * 00177000
- * FUNCTION - 00178000
- * 00179000
- * TO CHANGE ONE OR MORE OF THE CHARACTERISTICS OF A CLOSED SPOOL 00180000
- * FILE. THE CLASS,NUMBER OF COPIES, DISTRIBUTION CODE, 00181000
- * HOLD,NOHOLD AND/OR FILE NAME AND TYPE. 00182000
- * MULTIPLE FILES MAY BE CHANGED BY USING THE 'CLASS' OR 00183000
- * 'ALL' OPTION FOR SPOOLID. 00184000
- * 00185000
- * COMMAND LINE FORMAT - 00186000
- * 00187000
- * +--------+---------------------------------------------------+ 00188000
- * | CHANGE | <USERID> PRT CLASS A <CLASS B> <HOLD|NOHOLD> - | 00189000
- * | CH | <SYSTEM> PCH SPOOLID <COPY NN> <DIST DISTCODE> - | 00190000
- * | | RDR ALL <NAME FNAME <FTYPE>> - | 00191000
- * | | <NAME DSNAME> - | 00192000
- * | | <SYS|NOSYS> - | 00193000
- * | | <FLASH FFFF GG> <MODIFY MMMM> <FCB BBBB> - | 00194000
- * | | <CHARS CCCC> | 00195000
- * +--------+---------------------------------------------------+ 00196000
- * 00197000
- * READER PRINTER PUNCH CLASS ALL 00198000
- * R RDR P PRT PU PCH CL ALL 00199000
- * 00200000
- * NAME COPY HOLD NOHOLD DIST 00201000
- * NA CO HO NOH DI 00202000
- * 00203000
- * FLASH MODIFY FCB CHARS 00204000
- * FL MO FCB CH 00205000
- * 00206000
- * <USERID> AND <SYSTEM> ARE CLASS D USER OPTIONS 00207000
- * 00208000
- * DIST-CODE - 1 TO 8 CHARACTERS 00209000
- * FNAME - 1 TO 8 CHARACTERS 00210000
- * FTYPE - 1 TO 8 CHARACTERS 00211000
- * DSNAME - 1 TO 24 CHARACTERS 00212000
- * FFFF - 1 TO 4 CHARACTERS 00213000
- * GG - 1 TO 99 00214000
- * CCCC - 1 TO 4 CHARACTERS 00215000
- * BBBB - 1 TO 4 CHARACTERS 00216000
- * MMMM - 1 TO 4 CHARACTERS 00217000
- * 00218000
- * OPERATION - 00219000
- * 00220000
- * 1. IF CLASS D USER, CALL GETUSER. 00221000
- * 2. CALL GETYPE - LOCATE AND VALIDATE TYPE OPTION; 00222000
- * IF TYPE = ALL, EXIT GIVING ERROR MSG006E. 00223000
- * 3. CALL GETID - TO LOCATE AND VALIDATE ID OPTION; 00224000
- * IF NONE, EXIT GIVING ERROR MSG027E. 00225000
- * 4. CH01-CALL DMKSCNFD TO LOCATE NEXT OPTION; 00226000
- * IF NONE, GO TO STEP 10. 00227000
- * 5. CH02-IF OPTION = 'CLASS' CALL GETCLASSB TO LOCATE AND 00228000
- * VALIDATE CLASS CHARACTER AND GO TO STEP 4. 00229000
- * 6. CH03 IF OPTION = 'COPY', CALL GETCOPY TO LOCATE AND 00230000
- * VALIDATE NUMBER OF COPIES, GO TO STEP 4. 00231000
- * 7. CH05-IF OPTION = 'DIST', CALL DMKSCNFD TO LOCATE 00232000
- * DIST-CODE; IF NONE OR INVALID, EXIT GIVING 00233000
- * ERROR MSG032E; SAVE DIST-CODE IN SAVEWRK8,9 AND 00234000
- * GO TO STEP 4: OTHERWISE, CONTINUE. 00235000
- * 7A. CH05A-IF OPTION ='FLASH',CALL GETFLASH TO LOCATE AND 00236000
- * VALIDATE THE OVERLAY NAME AND NUMBER OF 00237000
- * COPIES TO BE FLASHED AND GO TO STEP 4;ELSE CONT. 00238000
- * 7B. CH05B-IF OPTION='CHARS',CALL GETCHARS TO LOCATE AND 00239000
- * VALIDATE THE CHARACTER ARRANGEMENT TABLE SPECIFIED. 00240000
- * THEN GO TO STEP 4; OTHERWISE CONTINUE. 00241000
- * 7C. CH05C-IF OPTION='MODIFY',CALL GETCMOD TO LOCATE AND 00242000
- * VALIDATE THE COPY MODIFICATION NAME AND 00243000
- * GO TO STEP 4; OTHERWISE CONTINUE. 00244000
- * 8. CH07-IF OPTION = 'NAME', CALL GETNAME TO LOCATE 00245000
- * SAVE FNAME AND FTYPE: GO TO STEP 4. 00246000
- * 8A. CH16A-IF OPTION='FCB',CALL GETFCB TO LOCATE AND 00247000
- * VALIDATE THE FCB SPECIFIED AND 00248000
- * GO TO STEP 4; OTHERWISE CONTINUE. 00249000
- * 9. CH04,CH06-IF OPTION = 'HOLD' AND/OR 'NOHOLD' SET 00250000
- * FLAG IN SAVEWRK5 AND GO TO STEP 4. 00251000
- * OTHERWISE, EXIT GIVING ERROR MSG003E. 00252000
- * 10. CH08-IF NO OPTIONS, EXIT GIVING ERROR MSG026E. 00253000
- * CALL GETFILE - FET SPOOL FILE: 00254000
- * IF NONE AND SEARCH IS BY SPOOLID, EXIT GIVING 00255000
- * ERROR MSG042E: OTHERWISE EXIT. 00256000
- * 11. CH09-CH14-UPDATE THE SPOOL FILE BLOK WITH 00257000
- * THE DATA ABTAINED FROM THE COMMAND LINE. 00258000
- * IN ADDITION, IF ANY PARAMETERS HAVE BEEN SPECIFIED 00259000
- * WHICH REQUIRE MODIFICATION OF THE FIRST DASD 00260000
- * SPOOL FILE BUFFER, READ THAT IN, MODIFY IT, AND 00261000
- * WRITE IT BACK OUT TO DASD. 00262000
- * IF READER FILE, BAL R4 SETPEND TO POST INTERRUPT. 00263000
- * IF SEARCH IS BY CLASS GO TO STEP 10: IF OUTPUT 00264000
- * FILE TYPE CALL DMKCSOSD TO START PUNCH OR PRINTER. 00265000
- * 00266000
- * 00267000
- * RESPONSE - 00268000
- * 00269000
- * NNNN FILES CHANGED 00270000
- * NO 00271000
- * 00272000
- * ERROR MESSAGES - 00273000
- * 00274000
- * DMKCSU003E INVALID OPTION - (OPTION) 00275000
- * DMKCSU006E INVALID DEVICE TYPE - (TYPE) 00276000
- * DMKCSU008E INVALID SPOOLID - (SPOOLID) 00277000
- * DMKCSU013E CONFLICTING OPTION - (OPTION) 00278000
- * DMKCSU026E OPERAND MISSING OR INVALID 00279000
- * DMKCSU027E SPOOLID MISSING OR INVALID 00280000
- * DMKCSU028E CLASS MISSING OR INVALID 00281000
- * DMKCSU029E FNAME FTYPE MISSING OR INVALID 00282000
- * DMKCSU030E COPIES MISSING OR INVALID 00283000
- * DMKCSU032E DISTCODE MISSING OR INVALID 00284000
- * DMKCSU035E DEVICE TYPE MISSING OR INVALID 00285000
- * DMKCSU042E SPOOLID NNNN DOES NOT EXIST 00286000
- *. 00287000
- EJECT 00288000
- ID DC CL8'DMKCSU' MODULE NAME 00289000
- SPACE 2 00290000
- DMKCSUCH RELOC 00291000
- SPACE 00292000
- BAL R4,CLEAR CLEAR SAVEWRK1,4-9,SAVEWRK2-3 TO 00293000
- * VMUSER AND SAVEWRK5(2) TO FFS 00294000
- MVC SAVEWRK8(8),BLANKS BLANK AREA FOR DIST CODE 00295000
- TM VMCLEVEL,VMCLASSD CLASS D USER ?? 00296000
- BZ CH00 NO -- 00297000
- L R3,FFS INDICATE TEST FOR USERID AND SYSTEM 00298000
- BAL R4,GETUSER GET USERID @V200930 00299000
- SPACE 00300000
- * BITS DEFINED IN SAVEWRK5+3 00301000
- * 00302000
- * X'40' AT LEAST ONE OPTION PRESENT 00303000
- * X'20' HOLD OPTION PRESENT 00304000
- * X'10' NOHOLD OPTION PRESENT 00305000
- * X'08' A FIRST DASD BUFFER FIELD HAS BEEN SPECIFIED 00306000
- * X'04' MULTIPLE COPIES IN 1 TRANSMISSION FOR 3800 PRESENT 00307000
- * X'02' SYS OPTION 00308000
- * X'01' NOSYS OPTION 00309000
- CH00 EQU * 00310000
- LA R0,HLDSIZE SIZE OF LOCAL WORK AREA @V60B9BA 00311000
- CALL DMKFREE GET THE SPACE NEEDED @V60B9BA 00312000
- ST R1,SAVEWRK4 SAVE THE POINTER TO IT @V60B9BA 00313000
- XC 0(HLDSIZE*8,R1),0(R1) CLEAR IT @V60B9BA 00314000
- BAL R4,GETYPE GET DEVICE TYPE @V200930 00315000
- SPACE 00316000
- EX R5,CLIALL TYPE = ALL ?? 00317000
- BE MSG006E YES - INVALID 00318000
- SPACE 00319000
- BAL R4,GETID GET SPOOL ID @V200930 00320000
- BNZ MSG027E NO OPTIONS FOUND 00321000
- SPACE 00322000
- * SCAN FOR 'CLASS' 'COPY' 'HOLD' 'NOHOLD' 'DIST' 'NAME' 00323000
- * 00324000
- CH01 EQU * 00325000
- CALL DMKSCNFD LOCATE NEXT OPTION. 00326000
- BNZ CH07A PROCESS OPTIONS 00327000
- SPACE 00328000
- CH02 EQU * 00329000
- LR R14,R0 GET COUNT 00330000
- BCTR R14,0 -1 00331000
- C R0,F1 LENGTH = 1 00332000
- BE MSG003E YES - INVALID OPTION 00333000
- SPACE 00334000
- OI SAVEWRK5+3,X'40' INDICATE AT LEAST ONE OPTION 00335000
- EX R14,CLCCLASS OPTION = CLASS ?? 00336000
- BNE CH03 NO- 00337000
- CLI SAVEWRK5+2,X'00' CLASS PRESENT ?? 00338000
- BNE MSG013E YES -- CONFLICTING OPTION 00339000
- SPACE 00340000
- BAL R3,GTCLASSB GET CLASS B AND VERIFY AND SAVE 00341000
- * SAVEWRK5+2(1) 00342000
- B CH01 00343000
- SPACE 00344000
- CH03 EQU * 00345000
- EX R14,CLCCOPY OPTION = COPY ?? 00346000
- BNE CH04 NO- 00347000
- CLI SAVEWRK1+1,X'00' COPIES PRESENT ?? 00348000
- BNE MSG013E YES -- CONFLICTING OPTION 00349000
- SPACE 00350000
- BAL R4,GETCOPY GET COPY @V200930 00351000
- B CH01 GO LOCATE NEXT OPTION 00352000
- SPACE 00353000
- CH04 EQU * 00354000
- EX R14,CLCHOLD OPTION = HOLD ?? 00355000
- BNE CH05 NO -- 00356000
- TM SAVEWRK5+3,X'30' HOLD OR NOHOLD SET ?? 00357000
- BNZ MSG013E YES -- CONFLICTING OPTION 00358000
- OI SAVEWRK5+3,X'20' INDICATE HOLD OPTION 00359000
- B CH01 00360000
- SPACE 00361000
- CH05 EQU * 00362000
- EX R14,CLCDIST OPTION = DIST ?? 00363000
- BNE CH05A NO -- @V60B9BA 00364000
- CLI SAVEWRK8,C' ' DIST CODE PRESENT ?? 00365000
- BH MSG013E YES -- CONFLICTING OPTION 00366000
- CALL DMKSCNFD GET DIST CODE 00367000
- BNZ MSG032E MISSING DIST CODE 00368000
- C R0,F8 IS LENGTH CORRECT 00369000
- BH MSG032E DIST CODE INVALID 00370000
- LR R14,R0 COUNT 00371000
- BCTR R14,0 -1 00372000
- EX R14,MVCDIST AND MOVE TO SAVEWRK8,9 00373000
- B CH01 00374000
- SPACE 00375000
- CH05A L R4,SAVEWRK4 GET THE WORK AREA @V60B9BA 00376000
- USING HLDAREA,R4 ADDRESSIBILITY @V60B9BA 00377000
- EX R14,CLCFLASH TEST FOR FLASH @V60B9BA 00378000
- BNE CH05B XFER IF NOT FLASH @V60B9BA 00379000
- CLI HLDFLASH,X'00' FLASH PRESENT? @V60B9BA 00380000
- BNE MSG013E YES - CONFLICTING OPTION @V60B9BA 00381000
- BAL R4,GETFLASH GET FLASH PARAMETERS @V60B9BA 00382000
- B CH01 SCAN FOR NEXT PARAMETER @V60B9BA 00383000
- SPACE 00384000
- CH05B EX R14,CLCCHARS TEST FOR CHARS @V60B9BA 00385000
- BNE CH05C XFER IF NOT CHARS @V60B9BA 00386000
- CLI HLDCHARS,X'00' CHARS PRESENT? @V60B9BA 00387000
- BNE MSG013E YES - CONFLICTING OPTION @V60B9BA 00388000
- BAL R4,GETCHARS GET CHARS PARAMETER @V60B9BA 00389000
- B CH01 SCAN FOR NEXT PARAMETER @V60B9BA 00390000
- SPACE 00391000
- CH05C EX R14,CLCCMOD TEST FOR MODIFY @V60B9BA 00392000
- BNE CH06 XFER IF NOT FLASH @V60B9BA 00393000
- CLI HLDCMOD,X'00' MODIFY PRESENT ? @V60B9BA 00394000
- BNE MSG013E YES - CONFLICTING OPTION @V60B9BA 00395000
- BAL R4,GETCMOD GET MODIFY PARAMETER @V60B9BA 00396000
- B CH01 SCAN FOR NEXT PARAMETER @V60B9BA 00397000
- SPACE 00398000
- CH06 EQU * @VM08881 00399000
- EX R14,CLCNAME OPTION = NAME ?? @VM08881 00400000
- BNE CH07 NO, TEST FOR 3 CHAR TYPES @VM08881 00401000
- BAL R4,GETNAME GET FILE NAME AND FILE TYPE @VM08881 00402000
- CALL DMKSCNFD NEXT ARG PLEASE @VM08881 00403000
- BZ MSG003E WASN'T SUPPOSED TO BE ONE @VM08881 00404000
- B CH07A PROCESS WHAT WE HAVE @VM08881 00405000
- SPACE 00406000
- CH07 EQU * @VM08881 00407000
- C R0,F3 LENGTH = 3 00408000
- BL MSG003E NO - LESS THAN 3, ERROR @VM08713 00409000
- EX R14,CLCNOHLD NOHOLD ?? 00410000
- BNE CH16A NO - @V60B9BA 00411000
- TM SAVEWRK5+3,X'30' NOHOLD OR HOLD SET ?? 00412000
- BNZ MSG013E YES -- CONFLICTING OPTION 00413000
- OI SAVEWRK5+3,X'10' SET NOHOLD 00414000
- B CH01 00415000
- CH16A EX R14,CLCFCB IS IT FCB OPTION @V60B9BA 00416000
- BNE CH16 XFER IF NOT @V60B9BA 00417000
- CLI HLDFCB,X'00' BEEN SPECIFIED BEFORE ? @V60B9BA 00418000
- BNE MSG013E YES - CONFLICTING OPTIONS @V60B9BA 00419000
- BAL R4,GETFCB LOCATE AND VERIFY FCB @V60B9BA 00420000
- B CH01 GET NEXT OPTION @V60B9BA 00421000
- DROP R4 NO LONGER NEEDED @V60B9BA 00422000
- SPACE 00423000
- CH16 EX R14,CLCSYS TEST FOR SYS @V200930 00424000
- BNE CH17 NO @V200930 00425000
- TM VMCLEVEL,VMCLASSD THIS A CLASS D USER ? @VA04090 00426000
- BNO MSG003E NO, INVALID OPTION @VA04090 00427000
- TM SAVEWRK5+3,X'03' SYS OR NOSYS ALREADY ?? @V200930 00428000
- BNZ MSG013E YES @V200930 00429000
- OI SAVEWRK5+3,X'02' SYS OPTION @V200930 00430000
- B CH01 GET NEXT OPTION @V200930 00431000
- CH17 EX R14,CLCNOSYS TEST FOR NOSYS @V200930 00432000
- BNE MSG003E NO, INVALID @V200930 00433000
- C R0,F5 IS IT LESS THAN 'NOSYS' @VM08713 00434000
- BL MSG003E YUP, ERROR @VM08713 00435000
- TM VMCLEVEL,VMCLASSD THIS A CLASS D USER ? @VA04090 00436000
- BNO MSG003E NO, INVALID OPTION @VA04090 00437000
- TM SAVEWRK5+3,X'03' SYS OR NOSYS ALREADY ?? @V200930 00438000
- BNZ MSG013E YES @V200930 00439000
- OI SAVEWRK5+3,X'01' NOSYS OPTION @V200930 00440000
- B CH01 GET NEXT @V200930 00441000
- SPACE 00442000
- CH07A EQU * 00443000
- BAL R4,COUNT ZERO COUNT FIELD 00444000
- TM SAVEWRK5+3,X'40' ANY OPTIONS ?? 00445000
- BZ MSG026E MISSING OPERANDS 00446000
- ST R7,SAVEWRK6 SAVE CHAIN ANCHOR @V304298 00447000
- SPACE 00448000
- CH08 EQU * 00449000
- SLR R10,R10 NOT COUNT ONLY IN GETFILE @VA08376 00450000
- BAL R4,GETFILE GET NEXT SPOOL FILE @V200930 00451000
- LTR R7,R7 SPOOL FILE FOUND ?? 00452000
- BNZ CH09 YES -- 00453000
- CLC SAVEWRK1+2(2),ZEROES SEARCH BY SPOOLID ?? 00454000
- BNE MSG042E YES -- SPOOLID NOT FOUND 00455000
- B CH14 ALL DONE - 00456000
- SPACE 00457000
- CH09 EQU * 00458000
- OI SFBFLAG,SFBINUSE TELL EVERYONE WE HAVE THE FILE @VA08075 00459000
- BAL R4,COUNT UPDATE FILE COUNT 00460000
- CLI SAVEWRK5+2,X'00' NEW CLASS PRESENT ?? 00461000
- BE CH09A NO 00462000
- MVC SFBCLAS(1),SAVEWRK5+2 MOVE IN NEW SFBCLASS 00463000
- SPACE 00464000
- CH09A EQU * 00465000
- CLI SAVEWRK1+1,X'00' NEW COPY PRESENT ?? 00466000
- BE CH10 NO --- 00467000
- MVC SFBCOPY+1(1),SAVEWRK1+1 MOVE IN NEW COPY 00468000
- SPACE 00469000
- CH10 EQU * 00470000
- TM SAVEWRK5+3,X'20' HOLD ?? 00471000
- BZ CH10B NO -- 00472000
- OI SFBFLAG,SFBUHOLD SET USER HOLD STATUS 00473000
- CH10B TM SAVEWRK5+3,X'10' NOHOLD ?? 00474000
- BZ CH11 NO -- 00475000
- NI SFBFLAG,X'FF'-SFBUHOLD RESET USER HOLD STATUS 00476000
- CH11 TM SAVEWRK5+3,X'02' SYS OPTION ?? @V200930 00477000
- BZ CH10C NO, TEST FOR NOSYS @V200930 00478000
- OI SFBFLAG,SFBSHOLD SET SYS HOLD @V200930 00479000
- CH10C TM SAVEWRK5+3,X'01' NOSYS OPTION ?? @V200930 00480000
- BZ CH11A NO, CONT @V200930 00481000
- NI SFBFLAG,X'FF'-SFBSHOLD RESET SYS HOLD @V200930 00482000
- CH11A DS 0H @V200930 00483000
- CLI SAVEWRK8,C' ' NEW DISTRIBUTION CODE PRESENT ?? 00484000
- BE CH12 NO -- 00485000
- MVC SFBDIST(8),SAVEWRK8 MOVE IN NEW DIST CODE 00486000
- SPACE 00487000
- CH12 EQU * 00488000
- L R14,SAVEWRK4 ADDRESS OF FNAME FTYPE 00489000
- CLI 0(R14),X'00' FNAME FTYPE PRESENT ?? @V60B9BA 00490000
- BE CH12A NO --- CONT @V60B9BA 00491000
- MVC SFBFNAME(24),0(R14) MOVE FNAME FTYPE FROM COMMAND LINE 00492000
- SPACE 00493000
- CH12A TM SAVEWRK5+3,X'08' ANYTHING IN SPLINK CHANGED? @V60B9BA 00494000
- BZ CH13 XFER IF NOT @V60B9BA 00495000
- SPACE 00496000
- * THE FIRST DASD BUFFER MUST NOW BE READ IN TO UPDATE ANY FIELDS 00497000
- * THAT MIGHT HAVE BEEN CHANGED. 00498000
- SPACE 00499000
- L R4,SAVEWRK4 POINT TO WORK AREA @V60B9BA 00500000
- USING HLDAREA,R4 ADDRESSIBILITY @V60B9BA 00501000
- CALL DMKPGTVG RESERVE SYSTEM VIRT PAGE @V60B9BA 00502000
- ST R1,HLDPTR SAVE THE ADDRESS OF IT @V60B9BA 00503000
- L R0,SFBSTART DASD ADDRESS OF 1ST BUFFER @V60B9BA 00504000
- CALL DMKRPAGT,PARM=(BRING+SYSTEM) BRING IT IN @V60B9BA 00505000
- BNZ MSG424E PAGING ERROR - QUIT @V60B9BA 00506000
- USING SPLINK,R2 ADDRESSIBILITY TO SPLINK @V60B9BA 00507000
- CLI SAVEWRK1+1,X'00' NEW COPY PRESENT ? @V60B9BA 00508000
- BE CH12C XFER IF NOT @V60B9BA 00509000
- TM SAVEWRK5+3,X'04' SPECIAL COPY SET ? @V60B9BA 00510000
- BZ CH12B XFER IF NOT @V60B9BA 00511000
- OI SPFLAG1,SPCOPYFG SET IT THEN @V60B9BA 00512000
- B CH12C AND CONTINUE @V60B9BA 00513000
- CH12B NI SPFLAG1,X'FF'-SPCOPYFG RESET THE FLAG @V60B9BA 00514000
- SPACE 00515000
- CH12C CLI HLDCHARS,X'00' NEW CHARS PRESENT ? @V60B9BA 00516000
- BE CH12D XFER IF NOT @V60B9BA 00517000
- MVC SPCHAR,HLDCHARS MOVE IN THE NEW VALUE @V60B9BA 00518000
- CLC SPCHAR,=C'NULL' NULL VALUE SPECIFIED ? @V60B9BA 00519000
- BNE CH12D XFER IF NOT @V60B9BA 00520000
- MVC SPCHAR,ZEROES NULLIFY PREVIOUS SETTING @V60B9BA 00521000
- SPACE 00522000
- CH12D CLI HLDFCB,X'00' NEW FCB PRESENT ? @V60B9BA 00523000
- BE CH12E XFER IF NOT @V60B9BA 00524000
- MVC SPFCB,HLDFCB MOVE IN THE NEW VALUE @V60B9BA 00525000
- CLC SPFCB,=C'NULL' NULL VALUE SPECIFIED? @V60B9BA 00526000
- BNE CH12E XFER IF NOT @V60B9BA 00527000
- MVC SPFCB,ZEROES NULLIFY PREVIOUS SETTING V60B9BA 00528000
- SPACE 00529000
- CH12E CLI HLDFLASH,X'00' NEW FLASH PRESENT ? @V60B9BA 00530000
- BE CH12F XFER IF NOT @V60B9BA 00531000
- MVC SFBFLASH,HLDFLASH MOVE IN THE FLASH NAME @V60B9BA 00532000
- MVC SPFLSHC,HLDFLSHC MOVE IN THE FLASH COUNT @V60B9BA 00533000
- CLI SPFLSHC,X'00' NEW COUNT ZERO ? @V60B9BA 00534000
- BNE CH12F XFER IF NOT @V60B9BA 00535000
- XC SFBFLASH,SFBFLASH NULLIFY THE FLASH NAME @V60B9BA 00536000
- SPACE 00537000
- CH12F CLI HLDCMOD,X'00' NEW MODIFY PRESENT ? @V60B9BA 00538000
- BE CH12G XFER IF NOT @V60B9BA 00539000
- MVC SPCMOD,HLDCMOD MOVE IT IN @V60B9BA 00540000
- CLC SPCMOD,=C'NULL' NULL VALUE SPECIFIED ? @V60B9BA 00541000
- BNE CH12G XFER IF NOT @V60B9BA 00542000
- MVC SPCMOD,ZEROES NULLIFY PREVIOUS SETTING @V60B9BA 00543000
- SPACE 00544000
- DROP R2 00545000
- CH12G L R0,SFBSTART DASD ADDR OF 1ST BUFFER @V60B9BA 00546000
- L R1,HLDPTR ADDR OF SYSTEM VIRT PAGE @V60B9BA 00547000
- CALL DMKRPAPT,PARM=SYSTEM WRITE IT OUT @V60B9BA 00548000
- L R1,HLDPTR ADDR OF SYSTEM VIRT PAGE @V60B9BA 00549000
- SR R0,R0 DUMMY DASD ADDRESS @V60B9BA 00550000
- CALL DMKRPAGT,PARM=SYSTEM RELEASE CORE PAGE @V60B9BA 00551000
- CALL DMKPGTVR RETURN SYSTEM VIRT PAGE @V60B9BA 00552000
- SPACE 00553000
- DROP R4 @V60B9BA 00554000
- CH13 DS 0H @VA07708 00555000
- CALL DMKCKSPL,PARM=CHGSFB CHECKPOINT @VA07708 00556000
- EX R5,TMRDR READER FILE ? @VA07708 00557000
- BZ CH13C NO - CHECK FOR MORE @VA01375 00558000
- CH13A TM SAVEWRK5+3,X'11' NOHOLD OR NOSYS ?? @VA01375 00559000
- BNZ CH13B YES - POST DEVICE END INTERRUPT @VA01375 00560000
- CLI SAVEWRK5+2,X'00' CLASS PRESENT ?? @VA01375 00561000
- BE CH13C NO - CHECK FOR MORE FILES @VA01375 00562000
- CH13B EQU * @VA07456 00563000
- TM SFBFLAG,SFBUHOLD+SFBSHOLD HELD FILE ?? @VA07456 00564000
- BNZ CH13C YES DO NOT GEN AN INTERUPT @VA07456 00565000
- BAL R4,SETPEND POST READER WITH D. E. @VA07456 00566000
- CH13C DS 0H ANY MORE ? @VA07708 00567000
- NI SFBFLAG,255-SFBINUSE WE ARE DONE WITH FILE @VA08075 00568000
- CLC SAVEWRK1+2(2),ZEROES SEARCH BY SPOOLID ? @V304298 00569000
- BNE CH14 XFER IF SO @V304298 00570000
- LR R2,R7 SAVE CURRENT SFBLOK @V304298 00571000
- L R7,SAVEWRK6 START AT TOP OF CHAIN @V304298 00572000
- CH13D L R7,0(R7) GET NEXT SPOOL FILE @V304298 00573000
- LTR R7,R7 ANY AROUND? @V304298 00574000
- BZ CH14 XFER IF NOT @V304298 00575000
- CR R7,R2 BACK TO CURRENT ONE? @V304298 00576000
- BE CH08 XFER IF SO @V304298 00577000
- B CH13D TRY AGAIN IF NOT @V304298 00578000
- CH14 EX R5,TMRDR TYPE = RDR ?? 00579000
- BO CH14B YES -- EXIT 00580000
- TM SAVEWRK5+3,X'11' NOHOLD OR NOSYS ?? @V200930 00581000
- BNZ CH14A YES, START PERHAPS @V200930 00582000
- CLI SAVEWRK5+2,X'00' CLASS PRESENT ?? 00583000
- BE CH14B NO -- EXIT 00584000
- CH14A EQU * 00585000
- CALL DMKCSOSD START PUNCH OR PRINTER 00586000
- * IF NOT ACTIVE 00587000
- CH14B B CSUEXIT 00588000
- SPACE 3 00589000
- * ***EXECUTED INSTRUCTIONS*** 00590000
- CLIALL CLI =AL1(CSURDR+TYPPRT+TYPPUN),X'00' MASK = READER PRINTER 00591000
- * PUNCH 00592000
- TMRDR TM =AL1(CSURDR),X'00' MASK = READER 00593000
- TMPRT TM =AL1(TYPPRT),X'00' MASK = PRINTER 00594000
- TMPUN TM =AL1(TYPPUN),X'00' MASK = PUNCH 00595000
- SPACE 00596000
- CNTMSG EQU * NUMBER OF FILES PROCESSED MESSAGE 00597000
- MSGCNT DC CL5' ' PLACE FOR COUNT OR NO 00598000
- MSGFILE DC CL6' ' FOR FILES OR FILE 00599000
- MSGCMD DC CL11' ' PLACE FOR COMMAND @VA04869 00600000
- CNTMSGL EQU *-CNTMSG LENGTH OF MESSAGE 00601000
- DS 0H 00602000
- EJECT 00603000
- *. 00604000
- **************************************** 00605000
- * 00606000
- * SUBROUTINES 00607000
- * 00608000
- **************************************** 00609000
- * 00610000
- * 00611000
- * 00612000
- * OPERATION OF GETUSER - 00613000
- * 00614000
- * 1. CALL DMKSCNFD TO LOCATE USERID: 00615000
- * IF NONE, EXIT GIVING ERROR MSG020E. 00616000
- * 2. IF GPR3 = FFS AND OPTION = 'SYSTEM', RETURN TO CALLER 00617000
- * 3. CALL DMKUDRFU: VERIFY USERID. 00618000
- * IF INVALID AND GPR3 = FFS, RETURN TO CALLER 00619000
- * IF INVALID OR MISSING EXIT GIVING ERROR MSG020E. 00620000
- * 4. MOVE USERID TO SAVEWRK2,3 AND RETURN TO CALLER. 00621000
- *. 00622000
- SPACE 3 00623000
- GETUSER EQU * HERE TO MOVE USERID TO SAVEWRK2,3 00624000
- SPACE 00625000
- GU01 EQU * 00626000
- C R3,FFS TEST FOR 'SYSTEM' OR 1ST USERID ? 00627000
- BNE *+10 NO -- 00628000
- MVC SAVEWRK6(8),BUFNXT-BUFFER(R9) SAVE SCAN POINTERS 00629000
- CALL DMKSCNFD LOCATE USERID 00630000
- BZ GU02 OPTION PRESENT 00631000
- C R3,FFS TEST FOR SYSTEM ?? 00632000
- BE GU02C YES -- 00633000
- B MSG020E USERID MISSING 00634000
- SPACE 00635000
- GU02 MVC SAVEWRK2(8),BLANKS RESET USERID SAVE AREA 00636000
- C R0,F8 LENGTH GREATER THAN EIGHT ?? 00637000
- BNH GU02A 00638000
- C R3,FFS TEST FOR 'SYSTEM' OR FIRST USERID ?? 00639000
- BE GU02C YES -- 00640000
- B MSG007E INVALID USERID MESSAGE 00641000
- SPACE 00642000
- GU02A C R3,FFS TEST FOR 'SYSTEM' ?? 00643000
- BNE GU02B NO -- 00644000
- C R0,F6 LENGTH OF 'SYSTEM' 00645000
- BNE GU02B NO -- WRONG LENGTH 00646000
- CLC =C'SYSTEM',0(R1) OPTION = 'SYSTEM' ?? 00647000
- BNE GU02B NO -- CONT 00648000
- BALR R3,R4 RESET GPR3 AND RETURN 00649000
- SPACE 00650000
- GU02B SR R2,R2 PARM REG 00651000
- CALL DMKUDRFU VERIFY USER 00652000
- BZ GU03 VALID USERID 00653000
- TM SAVEWRK5+3,X'40' IS IT A RECLAIM FUNCTION ?? @V200930 00654000
- BZ GU02D NO, CONT @V200930 00655000
- C R0,F3 IS IT 3 CHARS ?? @V200930 00656000
- BNE GU02D NO, CONT @V200930 00657000
- CLC 0(3,R1),=CL3'ALL' IS IT ALL OPTION ?? @V200930 00658000
- BNE GU02D NO, CONT @V200930 00659000
- BALR R3,R4 RETURN WITH USERID BLANK @V200930 00660000
- GU02D DS 0H @V200930 00661000
- C R3,FFS CLASS D WITH USERID ?? 00662000
- BNE MSG053E NO -- INDICATE ERROR 00663000
- GU02C MVC SAVEWRK2(8),VMUSER MOVE IN CLASS D USERID 00664000
- MVC BUFNXT-BUFFER(8,R9),SAVEWRK6 RESET SCAN POINTERS 00665000
- BR R4 RETURN TO CALLER 00666000
- GU03 LR R14,R0 COUNT 00667000
- BCTR R14,0 -1 00668000
- EX R14,MVCID MOVE USER ID FROM COMMAND LINE TO 00669000
- * SAVEWRK2,3 00670000
- BALR R3,R4 RESET GPR3 AND RETURN TO CALLER 00671000
- SPACE 00672000
- MVCID MVC SAVEWRK2(0),0(R1) ***EXECUTED*** 00673000
- SPACE 3 00674000
- CLEAR XC SAVEWRK4(24),SAVEWRK4 CLEAR SAVEWRK AREA 00675000
- XC SAVEWRK1(4),SAVEWRK1 00676000
- MVC SAVEWRK2(8),VMUSER MOVE IN USERID 00677000
- MVC SAVEWRK5(2),FFS SET TO X'FFFF' 00678000
- BR R4 RETURN TO CALLER 00679000
- SPACE 3 00680000
- COUNT EQU * HERE TO UPDATE FILE COUNT 00681000
- LH R14,SAVEWRK5 GET COUNT 00682000
- LA R14,1(R14) UPDATE BY ONE AND 00683000
- STH R14,SAVEWRK5 STORE 00684000
- BR R4 RETURN TO CALLER 00685000
- EJECT 00686000
- *. 00687000
- * 00688000
- * OPERATION OF GETYPE - 00689000
- * 00690000
- * 1. CALL DMKSCNFD TO LOCATE DEVICE TYPE FIELD 00691000
- * 2. IF OPTION = 'READER', 'PRINT', 'PUNCH' OR 'ALL', SET 00692000
- * GPR5 = APPROPRIATE DEVICE TYPE AND GO TO STEP 3. 00693000
- * IF OPTION = 'ALL', SET GPR5 EQUAL TO CSURDR+TYPPRT+ 00694000
- * TYPPUN, AND GO TO STEP 3. 00695000
- * IF TEST FOR SYSTEM OR 1ST USERID, EXIT GIVING MSG003E. 00696000
- * OTHERWISE EXIT GIVING MSG0006E. 00697000
- * 3. SET GPR6 TO FFS, CALL GETCHAIN (GPR6 WILL BE FILLED BY 00698000
- * GETCHAIN WITH THE APPROPRIATE FILE CHAIN ANCHOR) 00699000
- * 4. EXIT 00700000
- *. 00701000
- SPACE 3 00702000
- GETYPE EQU * 00703000
- SPACE 00704000
- GT01 LA R5,CSURDR+TYPPRT+TYPPUN SET FOR ALL TYPE 00705000
- CALL DMKSCNFD LOCATE DEVICE TYPE FIELD 00706000
- STM R0,R1,SAVEWRK6 SAVE COUNT AND ADDRESS OF TYPE 00707000
- BZ GT02 OPTION PRESENT 00708000
- C R3,FFS CLASS D USER ?? 00709000
- BE MSG026E YES -- OPERAND MISSING 00710000
- B MSG035E DEVICE TYPE MISSING 00711000
- SPACE 00712000
- GT02 EQU * 00713000
- * GPR1 ADDRESS OF TYPE 00714000
- LR R14,R0 GET OPTION COUNT 00715000
- BCTR R14,0 -1 00716000
- C R0,F2 COUNT LENGTH OF 2 00717000
- BE GT02A VALID FOR PUNCH 00718000
- BL GT02B VALID FOR READER PRINTER 00719000
- EX R14,CLCALL ALL ?? 00720000
- BE DEVIC YES 00721000
- LA R5,CSURDR SET R5 TO READER TYPE 00722000
- EX R14,CLCRDR RDR ?? 00723000
- BE DEVIC YES 00724000
- LA R5,TYPPRT PRINTER MASK 00725000
- EX R14,CLCPRT PRT ?? 00726000
- BE DEVIC YES - 00727000
- SPACE 00728000
- LA R5,TYPPUN SET GPR5 TO PUNCH TYPE 00729000
- EX R14,CLCPCH PCH ?? 00730000
- BE DEVIC YES 00731000
- GT02A LA R5,TYPPUN PUNCH MASK 00732000
- EX R14,CLCPUN PUNCH ?? 00733000
- BE DEVIC YES - 00734000
- SPACE 00735000
- GT02B LA R5,TYPPRT SET GPR5 TO PRINTER TYPE 00736000
- EX R14,CLCPRINT PRINTER ?? 00737000
- BE DEVIC YES - 00738000
- SPACE 00739000
- LA R5,CSURDR TYPE MASK FOR READER 00740000
- EX R14,CLCREAD READER ?? 00741000
- BE DEVIC 00742000
- C R3,FFS TEST FOR 'SYSTEM' OR 1ST USERID ? 00743000
- BE MSG003E YES -- INVALID OPTION 00744000
- B MSG006E INVALID DEVICE TYPE 00745000
- SPACE 00746000
- DEVIC EQU * HERE TO SET UP FILE POINTER 00747000
- SPACE 00748000
- GT05 L R6,FFS SET 1ST TIME SWITCH FOR GETCHAIN 00749000
- BAL R3,GETCHAIN GET NEXT ORDERED CHAIN @V200930 00750000
- SPACE 00751000
- GT06 CR R2,R2 SET CC = ZERO 00752000
- BR R4 RETURN TO CALLER 00753000
- SPACE 3 00754000
- SPACE 3 00755000
- CLCALL CLC 0(0,R1),=C'ALL ' COMPARE FOR ALL 00756000
- CLCRDR CLC 0(0,R1),=C'RDR ' COMPARE FOR RDR 00757000
- CLCPCH CLC 0(0,R1),=C'PCH ' COMPARE FOR PCH 00758000
- CLCPRT CLC 0(0,R1),=C'PRT ' COMPARE FOR PRT 00759000
- CLCPRINT CLC 0(0,R1),=C'PRINTER ' COMPARE FOR PRINTER 00760000
- CLCPUN CLC 0(0,R1),=C'PUNCH ' COMPARE FOR PUNCH 00761000
- CLCREAD CLC 0(0,R1),=C'READER ' COMPARE FOR READER 00762000
- CLCCLASS CLC 0(0,R1),=C'CLASS ' COMPARE FOR CLASS 00763000
- CLCHOLD CLC 0(0,R1),=C'HOLD ' COMPARE FOR HOLD 00764000
- CLCNOHLD CLC 0(0,R1),=C'NOHOLD ' COMPARE FOR NOHOLD 00765000
- CLCSYS CLC 0(0,R1),=C'SYS ' COMPARE FOR SYS @V200930 00766000
- CLCNOSYS CLC 0(0,R1),=C'NOSYS ' COMPARE FOR NOSYS @V200930 00767000
- CLCCOPY CLC 0(0,R1),=C'COPY ' COMPARE FOR COPY 00768000
- CLCNAME CLC 0(0,R1),=C'NAME ' COMPARE FOR NAME 00769000
- CLCDIST CLC 0(0,R1),=C'DIST ' COMPARE FOR DIST 00770000
- MVCDIST MVC SAVEWRK8(0),0(R1) MOVE DIST CODE 00771000
- CLCCHARS CLC 0(0,R1),=C'CHARS ' COMPARE FOR CHARS @V60B9BA 00772000
- CLCFLASH CLC 0(0,R1),=C'FLASH ' COMPARE FOR FLASH @V60B9BA 00773000
- CLCCMOD CLC 0(0,R1),=C'MODIFY ' COMPARE FOR MODIFY @V60B9BA 00774000
- CLCFCB CLC 0(0,R1),=C'FCB ' COMPARE FOR FCB @V60B9BA 00775000
- EJECT 00776000
- *. 00777000
- * OPERATION OF GETCLASS - 00778000
- * 00779000
- * 1. CALL DMKSCNFD TO LOCATE THE DESIRED CLASS 00780000
- * 2. VERIFY THAT ONLY ONE CLASS IS GIVEN, AND TRT THE CLASS 00781000
- * AGAINST A TABLE OF VALID CLASSES TO VERIFY ITS VALIDITY; 00782000
- * THE FUNCTION TABLE IS SET TO STORE THE VALID CLASS IN GPR2 00783000
- * IF CLASS IS MISSING OR INVALID, EXIT GIVING MSG028E. 00784000
- * 3. IF ENTRY IS GTCLASSB, STORE CLASS IN SAVEWRK8, 00785000
- * OTHERWISE STORE THE CLASS IN SAVEWRK1 AND EXIT. 00786000
- * 4. NOTE THAT GETCLASS IS A 2ND LEVEL ROUTINE; LINKAGE IS VIA 00787000
- * GPR3 00788000
- *. 00789000
- SPACE 3 00790000
- GTCLASSB MVI SAVEWRK5+2,X'FF' INDICATE CLASS NOT SPOOLID 00791000
- GETCLASS EQU * HERE TO LOCATE AND VERIFY CLASS 00792000
- SPACE 00793000
- GCL01 CALL DMKSCNFD 00794000
- BNZ MSG028E CLASS MISSING - EXIT 00795000
- SPACE 00796000
- GCL02 C R0,F1 MUST BE ONLY ON CLASS COUNT=1 00797000
- BNE MSG028E NO-- 00798000
- CLI 0(R1),C'A' CLASS LOWER THAN A 00799000
- BL MSG028E YES - INVALID CLASS 00800000
- ST R2,TEMPR2 SAVE GPR2 00801000
- TRT 0(1,R1),CLTABLE CLASS VALID ?? 00802000
- BH GCL03 VALID 00803000
- B MSG028E NO - INVALID CLASS 00804000
- SPACE 00805000
- GCL03 CLI SAVEWRK5+2,X'FF' STORE CLASS IN SAVEWRK5+2 ?? 00806000
- BNE GCL04 NO STORE IN SAVEWRK1 00807000
- STC R2,SAVEWRK5+2 SAVE CLASS CHARACTER 00808000
- B GCL05 00809000
- SPACE 00810000
- GCL04 EQU * 00811000
- STC R2,SAVEWRK1 SAVE CLASS 00812000
- GCL05 CR R1,R1 CC = ZERO 00813000
- L R2,TEMPR2 RESTORE GPR2 00814000
- BR R3 RETURN TO CALLER 00815000
- SPACE 3 00816000
- ORG *-193 00817000
- CLTABLE EQU * 00818000
- ORG 00819000
- DC C'ABCDEFGHI' 00820000
- DC XL7'00' 00821000
- DC C'JKLMNOPQR' 00822000
- DC XL8'00' 00823000
- DC C'STUVWXYZ' 00824000
- DC XL6'00' 00825000
- DC C'0123456789' 00826000
- DC XL6'00' 00827000
- DS 0H 00828000
- SPACE 00829000
- EJECT 00830000
- *. 00831000
- * 00832000
- * OPERATION OF GETFILE - 00833000
- * 00834000
- * 1. UPON ENTRY, GPR7 = ADDRESS OF A POINTER TO THE NEXT SFBLOK 00835000
- * TO TEST 00836000
- * 2. LOAD GPR7 WITH POINTER TO NEXT BLOK; IF ZERO, EXIT 00837000
- * 3. IF SAVEWRK2,3 EQUALS ZERO OR SFBUSER, GO TO STEP 4; 00838000
- * OTHERWISE GO TO STEP 6 00839000
- * 4. IF SAVEWRK1(1) EQUALS ZERO OR SFBCLAS,GO TO STEP 5; 00840000
- * OTHERWISE GO TO STEP 6 00841000
- * 5. IF SAVEWRK1+2(2) EQUALS ZERO OR SFBFILID, EXIT 00842000
- * 5.5 IF SWITCH = X'FF', COUNT THE NUMBER OF SPOOL 00843000
- * FILE BLOCKS. 00844000
- * 6. IF NO MATCH, GO TO STEP 2 00845000
- *. 00846000
- SPACE 00847000
- GETFILE EQU * HERE TO LOCATE THE REQUESTED FILE 00848000
- * OR TO GET A COUNT OF THE NUMBER OF FILES TO 00849000
- * BE TRANSFERRED, R10 FF IS SWITCH 00850000
- SPACE 00851000
- GF01 EQU * GPR7 = POINTER TO NEXT SFBLOK 00852000
- GF02 LR R6,R7 SFBLOK PRESENT ?? 00853000
- L R7,0(R7) 00854000
- LTR R7,R7 00855000
- BCR 8,R4 NO -RETURN TO CALLER WITH GPR7 ZERO 00856000
- SPACE 00857000
- GF03 TM SFBFLAG,SFBINUSE FILE IN USE ?? 00858000
- BO GF02 GET NEXT FILE 00859000
- CLI SAVEWRK2,X'40' USERID PRESENT ?? 00860000
- BNH GF04 NO -- USE ALL FILES 00861000
- CLC SAVEWRK2(8),SFBUSER USERID EQUALS ?? 00862000
- BNE GF02 NO 00863000
- SPACE 00864000
- GF04 CLI SAVEWRK1,X'00' SEARCH BY CLASS ?? 00865000
- BE GF05 NO 00866000
- CLC SAVEWRK1(1),SFBCLAS CLASS EQUALS ?? 00867000
- BNE GF02 NO - 00868000
- SPACE 00869000
- GF05 CLC SAVEWRK1+2(2),ZEROES SEARCH BY SPOOLID 00870000
- BE TOTAL NO @VA06206 00871000
- CLC SAVEWRK1+2(2),SFBFILID SPOOLID EQUAL ?? 00872000
- BNE GF02 NO - 00873000
- TOTAL EQU * @VA06206 00874000
- C R10,X2048BND ARE WE COUNTING ? (FROM TR05A) @VA08042 00875000
- BNE GF06 NOT TODAY @VA07375 00876000
- LH R14,SAVEWRK7 GET THE COUNT @VA06206 00877000
- LA R14,1(R14) UPDATE BY ONE @VA06206 00878000
- STH R14,SAVEWRK7 STORE IT AWAY @VA06206 00879000
- B GF02 KEEP ON TRUCKING @VA06206 00880000
- SPACE 00881000
- GF06 EQU * 00882000
- BR R4 RETURN TO CALLER 00883000
- EJECT 00884000
- *. 00885000
- * OPERATION OF GETCOPY - 00886000
- * 00887000
- * 1. CALL DMKSCNFD TO LOCATE NUMBER OF COPIES 00888000
- * 2. CONVERT DECIMAL NUMBER TO BINARY, AND VERIFY THAT 00889000
- * IT IS LESS THAN 100 00890000
- * IF COPIES IS MISSING OR INVALID, EXIT GIVING MSG030E 00891000
- * 3. STORE NUMBER OF COPIES IN SAVEWRK1+1(1) 00892000
- *. 00893000
- SPACE 3 00894000
- GETCOPY EQU * HERE TO LOCATE NUMBER OF COPIES AND CONVERT TO BINARY 00895000
- CALL DMKSCNFD LOCATE NUMBER OF COPIES 00896000
- BNZ MSG030E NUMBER OF COPIES MISSING 00897000
- OI SAVEWRK5+3,X'08' WE MUST UPDATE 1ST DASD BUFFER @VA10719 00897100
- CLI 0(R1),C'*' SPECIAL COPY FOR 3800 ? @V60B9BA 00898000
- BNE GETCOPY2 XFER IF NOT @V60B9BA 00899000
- OI SAVEWRK5+3,X'04' SET THE FLAG @V60B9BA 00900000
- BCTR R0,0 DECREMENT THE COUNT @V60B9BA 00902000
- LTR R0,R0 IT IS ZERO ? @V60B9BA 00903000
- BZ MSG030E NUMBER OF COPIES INVALID @V60B9BA 00904000
- LA R1,1(R1) POINT PAST THE ASTERISK @V60B9BA 00905000
- GETCOPY2 C R0,F2 LENGTH GREATER THAN 2 ?? 00906000
- BH MSG030E YES - INVALID COPIES 00907000
- CALL DMKCVTDB CONVERT TO BINARY 00908000
- BNZ MSG030E INVALID NUMBER OF COPIES 00909000
- SPACE 00910000
- CH R1,=H'99' LARGER THAN 99 ?? 00911000
- BH MSG030E YES - 00912000
- LTR R1,R1 COPY EQUAL ZERO 00913000
- BNP MSG030E 00914000
- STC R1,SAVEWRK1+1 SAVE NUMBER OF COPIES 00915000
- BR R4 RETURN TO CALLER 00916000
- SPACE 00917000
- EJECT 00918000
- *. 00919000
- * OPERATION OF GETNAME - 00920000
- * 00921000
- * 1. CALL DMKFREE FOR A 24 BYTE AREA FOR FNAME AND FTYPE 00922000
- * AND SAVE IN SAVEWRK4 00923000
- * 2. CALL DMKSCNFD TO LOCATE FNAME AND MOVE TO ADDRESS 00924000
- * IN SAVEWRK4, IF FNAME IS MISSING OR IVALID, EXIT 00925000
- * GIVING MSG029E. IF FNAME IS GREATER THAN 8 BYTES RETURN; 00926000
- * 3. CALL DMKSCNFD TO LOCATE FTYPE, IF NONE, RETURN; 00927000
- * MOVE FTYPE TO ADDRESS IN SAVEWRK4+11 AND RETURN. 00928000
- * 00929000
- *. 00930000
- SPACE 3 00931000
- GETNAME EQU * HERE TO LOCATE FNAME FTYPE 00932000
- SPACE 00933000
- GN01 L R2,SAVEWRK4 POINT TO THE WORK AREA @V60B9BA 00934000
- MVI 0(R2),C' ' CLEAR 00935000
- MVC 1(23,R2),0(R2) AREA TO BLANKS 00936000
- SPACE 00937000
- GN02 CALL DMKSCNFD LOCATE FNAME 00938000
- BNZ MSG029E FNAME MISSING 00939000
- LR R14,R0 GET LENGTH COUNT 00940000
- BCTR R14,R0 -1 FOR MOVE 00941000
- C R0,F24 LENGTH OVER 24 BYTES ?? 00942000
- BH MSG029E YES - INVALID 00943000
- SPACE 00944000
- EX R14,MVCFNAME MOVE FNAME AND MAYBE FTYPE 00945000
- C R14,F7 LENGTH OVER 8 BYTES ?? 00946000
- BCR 2,R4 YES - RETURN NO FTYPE 00947000
- SPACE 00948000
- GN03 CALL DMKSCNFD LOCATE FTYPE 00949000
- BCR 7,R4 NO FTYPE PRESENT - RETURN 00950000
- EJECT 00951000
- LR R14,R0 GET LENGTH OF FTYPE 00952000
- BCTR R14,R0 -1 FOR MOVE 00953000
- C R14,F7 OVER 8 CHARACTERS ?? 00954000
- BH MSG029E YES - INVALID FOR FTYPE 00955000
- EX R14,MVCFTYPE MOVE FTYPE 00956000
- BR R4 RETURN TO CALLER 00957000
- SPACE 2 00958000
- MVCFNAME MVC 0(0,R2),0(R1) MOVE FNAME 00959000
- MVCFTYPE MVC 12(0,R2),0(R1) MOVE FTYPE 00960000
- EJECT 00961000
- *. 00962000
- * OPERATION OF GETID - 00963000
- * 00964000
- * 1. CALL DMKSCNFD TO LOCATE THE SPOOLID; ACCEPTABLE ID'S ARE - 00965000
- * - A SPOOLID NUMBER 00966000
- * - THE KEYWORD 'CLASS' FOLLOWED BY A VALID SPOOL CLASS 00967000
- * - THE KEYWORD 'ALL' 00968000
- * 2. SET SAVEWRK1, SAVEWRK1+2(2) = 0 00969000
- * 3. IF OPTION = 'ALL', EXIT TO CALLER 00970000
- * 4. IF OPTION = 'CL', CALL GETCLASS AND SAVE THE CLASS 00971000
- * RETURNED IN GPR2 IN SAVEWRK1; THEN EXIT 00972000
- * 5. IF OPTION = A SPOOLID NUMBER, CONVERT TO BINARY AND STORE 00973000
- * IN SAVEWRK1+2(2) 00974000
- * 6. RETURN TO CALLER. 00975000
- *. 00976000
- SPACE 3 00977000
- GETID EQU * HERE TO LOCATE SPOOLID 00978000
- SPACE 00979000
- GI01 MVI SAVEWRK1,X'00' SET TO ALL 00980000
- XC SAVEWRK1+2(2),SAVEWRK1+2 00981000
- SPACE 00982000
- GI02 CALL DMKSCNFD LOCATE SPOOLID 00983000
- STM R0,R1,SAVEWRK6 SAVE COUNT AND ADDRESS 00984000
- BCR 7,R4 NO MORE FILID, RETURN WITH CC 00985000
- * NON-ZERO 00986000
- SPACE 00987000
- LR R14,R0 COUNT 00988000
- BCTR R14,0 -1 00989000
- C R0,F2 MIN FOR CLASS 00990000
- BL GI05 NO - MUST BE FILE ID 00991000
- BE GI04 YES - MIN FOR CLASS 00992000
- SPACE 00993000
- GI03 EX R14,CLCALL IS IT ALL ?? 00994000
- BE GI06 YES GO TO RETURN 00995000
- SPACE 00996000
- GI04 EX R14,CLCCLASS IS IT CLASS ?? 00997000
- BNE GI05 NO 00998000
- BAL R3,GETCLASS GET CLASS AND VERIFY @V200930 00999000
- B GI06 GO RETURN 01000000
- SPACE 01001000
- GI05 EQU * OPTION MUST BE FILED 01002000
- C R0,F4 LENGTH GREATER THAN 4 ? 01003000
- BH GI05A YES -- INVALID SPOOLID 01004000
- CALL DMKCVTDB CONVERT TO BINARY 01005000
- BZ VALID VALID SPOOLID 01006000
- GI05A LM R0,R1,SAVEWRK6 RESTORE COUNT AND ADDRESS 01007000
- C R3,FFS TEST FOR 'SYSTEM' OR 1ST USERID ? 01008000
- BE MSG003E YES -- DMKCSU003E 01009000
- B MSG008E INVALID SPOOLID 01010000
- VALID STH R1,SAVEWRK1+2 SAVE BINARY VALUE (SPOOLID) 01011000
- LTR R1,R1 SPOOLID ZERO ?? 01012000
- BZ GI05A YES -- INVALID 01013000
- SPACE 01014000
- GI06 CR R12,R12 SET CC ZERO 01015000
- BR R4 RETURN TO CALLER 01016000
- EJECT 01017000
- *. OPERATION OF GETCHARS - 01018000
- * 01019000
- * 1. CALL DMKSCNFD TO LOCATE CHARS SPECIFIED 01020000
- * 2. IF MISSING OR GREATER THAN 4 CHARACTERS, EXIT 01021000
- * GIVING MSG245E. 01022000
- * 3. STORE VALUE IN HLDCHARS. 01023000
- *. 01024000
- SPACE 3 01025000
- GETCHARS CALL DMKSCNFD LOCATE CHARS VALUE @V60B9BA 01026000
- BNZ MSG245E CHARS PARAMETER MISSING @V60B9BA 01027000
- C R0,F4 LENGTH GREATER THAN 4 ? @V60B9BA 01028000
- BH MSG245E YES - INVLALID @V60B9BA 01029000
- L R3,SAVEWRK4 WORKAREA ADDRESSIBILITY @V60B9BA 01030000
- MVC HLDCHARS-HLDAREA(4,R3),BLANKS INITIALIZE @V60B9BA 01031000
- LR R2,R0 EXECUTE FROM R2 @V60B9BA 01032000
- BCTR R2,0 LESS ONE FOR EXECUTE INST @V60B9BA 01033000
- EX R2,MVCCHARS SAVE THE CHARS VALUE @V60B9BA 01034000
- OI SAVEWRK5+3,X'08' MUST UPDATE 1ST DASD BUFFER @V60B9BA 01035000
- BR R4 RETURN TO CALLER @V60B9BA 01036000
- SPACE 01037000
- MVCCHARS MVC HLDCHARS-HLDAREA(0,R3),0(R1) @V60B9BA 01038000
- EJECT 01039000
- *. 01040000
- * OPERATION OF GETFLASH - 01041000
- * 01042000
- * 1. CALL DMKSCNFD TO GET FLASH OVERLAY NAME. 01043000
- * 2. IF MISSING OR GREATER THAN 4 CHARS EXIT 01044000
- * GIVING MSG243E. 01045000
- * 3. SAVE FLASH OVERLAY NAME IN HLDFLASH. 01046000
- * 4. CALL DMKSCNFD TO GET FLASH COUNT. 01047000
- * 5. IF MISSING OF NOT BETWEEN 0 AND 99, EXIT 01048000
- * GIVING MSG243E. 01049000
- * 6. SAVE FLASH COUNT IN HLDFLSHC. 01050000
- *. 01051000
- SPACE 3 01052000
- GETFLASH CALL DMKSCNFD LOCATE FLASH OVERLAY NAME @V60B9BA 01053000
- BNZ MSG243E FLASH NAME MISSING @V60B9BA 01054000
- C R0,F4 GREATER THAN 4 CHARS ? @V60B9BA 01055000
- BH MSG243E INVALID IF SO @V60B9BA 01056000
- L R3,SAVEWRK4 ADDRESSIBILITY TO WORK AREA @V60B9BA 01057000
- MVC HLDFLASH-HLDAREA(4,R3),BLANKS INITIALIZE @V60B9BA 01058000
- LR R2,R0 WHERE TO EX FROM @V60B9BA 01059000
- BCTR R2,0 DECREMENT FOR EXECUTE @V60B9BA 01060000
- EX R2,MVCFLASH SAVE THE FLASH NAME @V60B9BA 01061000
- CALL DMKSCNFD LOCATE FLASH COUNT @V60B9BA 01062000
- BNZ MSG243E FLASH COUNT MISSING @V60B9BA 01063000
- C R0,F2 LENGTH GREATER THAN 2 @V60B9BA 01064000
- BH MSG243E INVALID IF SO @V60B9BA 01065000
- CALL DMKCVTDB CONVERT TO BINARY @V60B9BA 01066000
- BNZ MSG243E INVALID FLASH COUNT @V60B9BA 01067000
- CH R1,=H'99' LARGER THAN 99 ? @V60B9BA 01068000
- BH MSG243E XFER IF SO @V60B9BA 01069000
- STC R1,HLDFLSHC-HLDAREA(R3) SAVE THE COUNT @V60B9BA 01070000
- OI SAVEWRK5+3,X'08' MUST UPDATE 1ST DASD BUFFER @V60B9BA 01071000
- BR R4 RETURN TO CALLER @V60B9BA 01072000
- SPACE 01073000
- MVCFLASH MVC HLDFLASH-HLDAREA(0,R3),0(R1) @V60B9BA 01074000
- EJECT 01075000
- *. 01076000
- * OPERATION OF GETCMOD - 01077000
- * 01078000
- * 1. CALL DMKSCNFD TO LOCATE MODIFY VALUE. 01079000
- * 2. IF MISSING OR GREATER THAN 4 CHARACTERS, 01080000
- * EXIT GIVING MSG253E. 01081000
- * 3. SAVE THE MODIFY VALUE IN HLDCMOD. 01082000
- *. 01083000
- SPACE 3 01084000
- GETCMOD CALL DMKSCNFD LOCATE MODIFY VALUE @V60B9BA 01085000
- BNZ MSG253E ERROR IF MISSING @V60B9BA 01086000
- C R0,F4 MORE THAN 4 CHARACTERS ? @V60B9BA 01087000
- BH MSG253E INVALID IF SO @V60B9BA 01088000
- L R3,SAVEWRK4 POINT TO WORK AREA @V60B9BA 01089000
- MVC HLDCMOD-HLDAREA(4,R3),BLANKS INITIALIZE @V60B9BA 01090000
- LR R2,R0 COUNT FOR EXECUTE @V60B9BA 01091000
- BCTR R2,0 DECREMENT FOR EXECUTE @V60B9BA 01092000
- EX R2,MVCCMOD SAVE THE MODIFY VALUE @V60B9BA 01093000
- OI SAVEWRK5+3,X'08' MUST UPDATE 1ST DASD BUFFER @V60B9BA 01094000
- BR R4 RETURN TO CALLER @V60B9BA 01095000
- SPACE 01096000
- MVCCMOD MVC HLDCMOD-HLDAREA(0,R3),0(R1) @V60B9BA 01097000
- EJECT 01098000
- *. 01099000
- * OPERATION OF GETFCB - 01100000
- * 01101000
- * 1. CALL DMKSCNFD TO LOCATE FCB VALUE. 01102000
- * 2. IF MISSING OR GREATER THAN 4 CHARACTERS, 01103000
- * EXIT GIVING MSG246E. 01104000
- * 3. SAVE THE FCB VALUE IN HLDFCB. 01105000
- *. 01106000
- SPACE 3 01107000
- GETFCB CALL DMKSCNFD LOCATE FCB VALUE @V60B9BA 01108000
- BNZ MSG246E ERROR IF MISSING @V60B9BA 01109000
- C R0,F4 GREATER THAN 4 CHARS ? @V60B9BA 01110000
- BH MSG246E XFER IF SO @V60B9BA 01111000
- L R3,SAVEWRK4 POINT TO WORK AREA @V60B9BA 01112000
- MVC HLDFCB-HLDAREA(4,R3),BLANKS INITIALIZE @V60B9BA 01113000
- LR R2,R0 GET THE COUNT IN R2 @V60B9BA 01114000
- BCTR R2,0 DECREMENT FOR EXECUTE @V60B9BA 01115000
- EX R2,MVCFCB SAVE THE FCB VALUE @V60B9BA 01116000
- OI SAVEWRK5+3,X'08' MUST UPDATE 1ST DASD BUFFER @V60B9BA 01117000
- BR R4 RETURN TO CALLER @V60B9BA 01118000
- SPACE 01119000
- MVCFCB MVC HLDFCB-HLDAREA(0,R3),0(R1) @V60B9BA 01120000
- EJECT 01121000
- *. 01122000
- * OPERATION OF GETCHAIN - 01123000
- * 01124000
- * 1. IF GPR5 = 0, SET GPR6 = 0 AND EXIT; 01125000
- * 2. IF GPR6 = FFS, GO TO STEP 6; 01126000
- * 3. IF GPR5 HAS CSURDR BIT ON,REMOVE BIT, GO TO STEP 7; 01127000
- * 4. IF GPR5 HAS TYPPRT BIT ON,REMOVE BIT, GO TO STEP 8; 01128000
- * 5. REMOVE TYPPUN BIT IN GPR5, SET GPR6 TO ZERO, EXIT 01129000
- * 6. IF GPR5 HAS CSURDR BIT ON, LOAD GPR6 WITH ARSPRD, EXIT; 01130000
- * 7. IF GPR5 HAS TYPPRT BIT ON, LOAD GPR6 WITH ARSPPR, EXIT; 01131000
- * 8. IF GPR5 HAS TYPPUN BIT ON, LOAD GPR6 WITH ARSPPU,EXIT; 01132000
- * 9. SET GPR6 = 0, EXIT 01133000
- *. 01134000
- SPACE 3 01135000
- GETCHAIN EQU * HERE TO GET NEXT FILE CHAIN ANCHOR POINTER 01136000
- SPACE 01137000
- GC01 LTR R5,R5 FILE TYPE ZERO ?? 01138000
- BNZ GC02 NO-- 01139000
- SR R6,R6 YES - ZERO GPR6 01140000
- BR R3 RETURN TO CALLER 01141000
- SPACE 01142000
- GC02 C R6,FFS 1ST TIME SWITCH ON ?? 01143000
- BE GC06 YES - DO NOT RESET ANY BITS, JUST 01144000
- * LOAD GPR6 01145000
- SPACE 01146000
- GC03 LR R6,R5 SAVE R5 FOR CHANGE COMPARE 01147000
- N R5,=A(255-CSURDR) REMOVE READER BIT 01148000
- CR R6,R5 WAS IT ON ?? 01149000
- BNE GC07 NO 01150000
- SPACE 01151000
- GC04 N R5,=A(255-TYPPRT) REMOVE PRINTER BIT 01152000
- CR R6,R5 WAS IT ON ?? 01153000
- BNE GC08 NO 01154000
- SPACE 01155000
- GC05 SR R5,R5 REMOVE PUNCH BIT 01156000
- SR R6,R6 SET GPR6 TO ZERO 01157000
- BR R3 RETURN TO CALLER - END OF CHAIN 01158000
- SPACE 01159000
- GC06 L R7,ARSPRD LOAD READER FILE CHAIN POINTER 01160000
- * ANCHOR 01161000
- EX R5,TMRDR READER BIT ON ?? 01162000
- BCR 7,R3 YES - RETURN TO CALLER 01163000
- SPACE 01164000
- GC07 L R7,ARSPPR LOAD PRINTER FILE CHAIN POINTER 01165000
- * ANCHOR 01166000
- EX R5,TMPRT PRINTER BIT ON ?? 01167000
- BCR 7,R3 YES - RETURN TO CALLER 01168000
- SPACE 01169000
- GC08 L R7,ARSPPU LOAD PUNCH FILE CHAIN POINTER ANCHOR 01170000
- EX R5,TMPUN PUNCH BIT ON ?? 01171000
- BCR 7,R3 YES - RETURN TO CALLER 01172000
- GC09 SLR R6,R6 SET GPR6 = ZERO - ALL DONE @VA01375 01173000
- SLR R7,R7 .. @VA01375 01174000
- BR R3 RETURN TO CALLER @VA01375 01175000
- EJECT 01176000
- *. 01177000
- * OPERATOR OF SETPEND - 01178000
- * 01179000
- * 1. IF SPOOL FILE (SFBLOK) IS IN USER HOLD STATUS; 01180000
- * RETURN TO CALLER. 01181000
- * 2. LOCATE AN AVAILABLE VIRTUAL READER, CONSTRUCT AN 01182000
- * IOBLOK CONTAINING A DEVICE END INTERRUPT AND STACK IT 01183000
- * FOR THE OPPROPRIATE VIRTUAL DEVICE VIA CALL TO 01184000
- * DMKSTKIO. 01185000
- *. 01186000
- SPACE 3 01187000
- SETPEND EQU * HERE TO POST PENDIN INTERRUPT @VM01016 01188000
- SPACE 01189000
- USING VCHBLOK,R6 @VM01016 01190000
- USING VCUBLOK,R9 @VM01016 01191000
- USING IOBLOK,R10 @VM01016 01192000
- SPACE 01193000
- ST R11,TEMPR3 SAVE CALLERS VMBLOK POINTER @VA04139 01194000
- CLC SFBUSER,VMUSER ONLY THE OWNER GETS THE INT. @VA04139 01195000
- BE SAMEUSER BRANCH IF SAME USER, ALL OK! @VA04139 01196000
- LA R0,8 SET UP TO ... @VA04139 01197000
- LA R1,SFBUSER FIND THE VMBLOK OF... @VA04139 01198000
- CALL DMKSCNAU THE USER TO GET THE INT. @VA04139 01199000
- BNZR R4 IF NOT LOGED ON RETURN @VA04139 01200000
- ST R11,TEMPR3 RESAVE CALLERS VMBLOK POINTER @VA04139 01201000
- CHARGE SWITCH,1 SWITCH TIMING TO RECEIVER @V407510 01202000
- SAMEUSER STM R4,R5,TEMPR4 SAVE CALLERS REGS @VA04139 01203000
- SR R1,R1 CLEAR CHANNEL TABLE INDEX @VM01016 01204000
- LA R4,2 GET GENERAL INDEX INCREMENT @VM01016 01205000
- LA R5,30 GET GENERAL COMPARAND FOR BXLE @VM01016 01206000
- SPACE 01207000
- NEXTCH LH R6,VMCHTBL(R1) GET INDEX TO NEXT VIRTUAL CHANNEL@VM01016 01208000
- LTR R6,R6 IS THERE ONE AT THIS ADDRESS @VM01016 01209000
- BM CHINDEX NO -- @VM01016 01210000
- A R6,VMCHSTRT POINT TO VCHBLOK @VM01016 01211000
- SR R2,R2 CLEAR CU TABLE INDEX @VM01016 01212000
- NEXTCU LH R9,VCHCUTBL(R2) GET INDEX TO VIRTUAL CU BLOK @VM01016 01213000
- LTR R9,R9 IS THERE ONE AT THIS ADDRESS ? @VM01016 01214000
- BM CUINDEX NO -- @VM01016 01215000
- A R9,VMCUSTRT POINT TO VCUBLOK @VM01016 01216000
- SR R3,R3 CLEAR DEVICE BLOK TABLE INDEX @VM01016 01217000
- NEXTDEV LH R8,VCUDVTBL(R3) GET INDEX TO DEVICE BLOK @VM01016 01218000
- LTR R8,R8 IS THERE ONE AT THIS ADDRESS @VM01016 01219000
- BM DEVINDEX NO -- @VM01016 01220000
- A R8,VMDVSTRT POINT TO DEVICE BLOK @VM01016 01221000
- SPACE 01222000
- CLI VDEVTYPC,CLASURI INPUT DEVICE @VM01016 01223000
- BNE DEVINDEX NO - @VM01016 01224000
- TM VDEVTYPE,TYPRDR IS IT THE RIGHT TYPE ?? @VM01016 01225000
- BZ DEVINDEX NO -- @VM01016 01226000
- TM VDEVSTAT,X'FF' ANY STATUS PENDING ?? @VM01016 01227000
- BNZ DEVINDEX YES, CHECK NEXT DEVICE @VM01016 01228000
- CLI VDEVCLAS,C'*' ALL CLASS READER ? @VM01016 01229000
- BE TSTBUSY YES, TEST FOR ACTIVE DEVICE @VM01016 01230000
- CLC VDEVCLAS(1),SFBCLAS FILE CLASS SAME AS DEVICE ? @VM01016 01231000
- BNE DEVINDEX NO - @VM01016 01232000
- TSTBUSY ICM R14,B'1111',VDEVSPL IS THE DEVICE BUSY ?? @VM01016 01233000
- BZ RDRPEND NO -- FINALLY FOUND A DEVICE @VM01016 01234000
- SPACE 01235000
- DEVINDEX BXLE R3,R4,NEXTDEV INDEX TO NEXT DEVICE ON CONTROL @VM01016 01236000
- * UNIT 01237000
- CUINDEX BXLE R2,R4,NEXTCU INDEX TO NEXT CONTROL UNIT ON @VM01016 01238000
- * CHANNEL 01239000
- CHINDEX BXLE R1,R4,NEXTCH INDEX TO NEXT CHANNEL ON MACHINE @VM01016 01240000
- LM R3,R5,TEMPR3 GET CALLERS R11(IN R3), R4 & R5 @VA04139 01241000
- B INTEXIT RETURN @VA04139 01242000
- SPACE 01243000
- RDRPEND EQU * HERE TO QUEUE DEVICE END @VM01016 01244000
- LH R2,VDEVADD GET FULL ADDRESS OF DEVICE @VM01016 01245000
- LH R5,VCUADD .. @VM01016 01246000
- OR R2,R5 .. @VM01016 01247000
- AH R2,VCHADD .. @VM01016 01248000
- LM R3,R5,TEMPR3 GET CALLERS R11(IN R3), R4 & R5 @VA04139 01249000
- LA R0,IOBSIZE BUILD IOBLOK @VM01016 01250000
- CALL DMKFREE .. @VM01016 01251000
- LR R10,R1 ADDRESS OF IOBLOK @VM01016 01252000
- XC IOBLOK(IOBSIZE*8),IOBLOK CLEAR BLOK @VM01016 01253000
- ST R10,IOBLINK INDICATE ORIGINAL COPY @VM01016 01254000
- MVI IOBCSW+4,DE FAKE DEVICE END CSW @VM01016 01255000
- ST R11,IOBUSER MOVE USER ADDRESS OF VMBLOK @VM01016 01256000
- MVC IOBIRA,=A(DMKVIOIN) RETURN ADDRESS @VM01016 01257000
- STH R2,IOBVADD PUT ADDRESS IN IOBLOK @VM01016 01258000
- OI VDEVSTAT,VDEVPEND SET PENDING FLAG @VM01016 01259000
- MVC VDEVCSW(8),IOBCSW MOVE IN DEVICE END CSW @VM01016 01260000
- CALL DMKSTKIO GO STACK IO @VM01016 01261000
- INTEXIT CLR R11,R3 ORIGINAL CALLER? @VA04139 01262000
- BER R4 YES- RETURN @VA04139 01263000
- CHARGE SWITCH,3 SWITCH BACK TO CALLER @V407510 01264000
- BR R4 RETURN TO CALLER @VM01016 01265000
- DROP R6 @VM01016 01266000
- DROP R9 @VM01016 01267000
- DROP R10 @VM01016 01268000
- SPACE 3 01269000
- ********************************** 01270000
- * 01271000
- * ERROR EXITS FROM DMKCSU 01272000
- * 01273000
- ********************************** 01274000
- SPACE 2 01275000
- MSG003E EQU * HERE IF INVALID OPTION FOR THIS @VA01375 01276000
- * COMMAND 01277000
- LA R2,003 ERROR MSG DMKCSU003E @VA01733 01278000
- B EXIT8 EXIT TO ERROR MODULE 01279000
- SPACE 2 01280000
- MSG006E EQU * HERE IF DEVICE TYPE IS INVALID 01281000
- LA R2,006 ERROR MSG DMKCSU006E 01282000
- LM R0,R1,SAVEWRK6 COUNT AND ADDRESS OF INVALID TYPE 01283000
- B EXIT8 EXIT TO ERROR MODULE 01284000
- SPACE 2 01285000
- MSG007E EQU * HERE IF USERID IS INVALID 01286000
- LA R2,007 ERROR MSG DMKCSU007E 01287000
- B EXIT8 01288000
- SPACE 2 01289000
- MSG008E EQU * HERE IF SPOOLID IS INVALID 01290000
- LA R2,008 ERROR MSG DMKCSU008E 01291000
- LM R0,R1,SAVEWRK6 COUNT AND ADDRESS OF SPOOLID 01292000
- B EXIT8 EXIT TO ERROR MODULE 01293000
- SPACE 2 01294000
- MSG013E EQU * HERE IF OPTION IS CONFLICTING 01295000
- LA R2,013 ERROR MSG DMKCSU013E 01296000
- B EXIT8 .. 01297000
- SPACE 2 01298000
- MSG020E EQU * HERE IF USERID IS MISSING OR INVALID 01299000
- LA R2,020 ERROR MSG DMKCSU020E 01300000
- B EXIT8R1 EXIT TO ERROR MODULE 01301000
- SPACE 2 01302000
- MSG026E EQU * HERE IF OPERAND MISSING OR INVALID 01303000
- LA R2,026 ERROR MSG DMKCSU026E 01304000
- B EXIT8R1 EXIT TO ERROR MODULE 01305000
- SPACE 2 01306000
- MSG027E EQU * HERE IF SPOOLID MISSING OR INVALID 01307000
- LA R2,027 ERROR MSG DMKCSU027E 01308000
- B EXIT8R1 01309000
- SPACE 2 01310000
- MSG028E EQU * HERE IF CLASS IS MISSING OR INVALID 01311000
- LA R2,028 ERROR MSG DMKCSU028E 01312000
- B EXIT8R1 01313000
- SPACE 01314000
- MSG029E EQU * HERE IF FNAME FTYPE MISSING OR INVALID 01315000
- LA R2,029 ERROR MSG DMKCSU029E 01316000
- B EXIT8R1 EXIT TO ERROR MODULE 01317000
- SPACE 2 01318000
- MSG030E EQU * HERE IF COPIES IS MISSING OR INVALID 01319000
- LA R2,030 ERROR MSG DMKCSU030E 01320000
- B EXIT8R1 EXIT TO ERROR MODULE 01321000
- SPACE 2 01322000
- MSG032E EQU * HERE IF DISTCODE IS MISSING OR INVALID 01323000
- LA R2,032 ERROR MSG DMKCSU032E 01324000
- B EXIT8R1 EXIT TO ERROR MODULE 01325000
- SPACE 2 01326000
- MSG035E EQU * HERE IF DEVICE TYPE MISSING OR INVALID 01327000
- LA R2,035 ERROR MSG DMKCSU035E 01328000
- B EXIT8R1 EXIT TO ERROR MODULE 01329000
- SPACE 2 01330000
- MSG042E EQU * HERE IF SPOOL FILE NOT FOUND 01331000
- LH R1,SAVEWRK1+2 GET SPOOLID OF FILE 01332000
- BAL R2,CVTBD AND CONVERT 01333000
- LA R2,042 ERROR MSG DMKCSU032E 01334000
- B EXIT8R0 01335000
- SPACE 2 01336000
- MSG053E EQU * HERE IF USERID NOT IN CP DIRECTORY 01337000
- LA R2,053 ERROR MSG DMKCSU053E 01338000
- B EXIT8 01339000
- SPACE 2 01340000
- MSG243E EQU * HERE IF FLASH MISSING OR INVALID @V60B9BA 01341000
- LA R2,243 ERROR MSG DMKCSP243E @V60B9BA 01342000
- B EXIT8R1 EXIT TO ERROR MODULE @V60B9BA 01343000
- SPACE 2 01344000
- MSG245E EQU * HERE IF CHARS MISSING OR INVALID @V60B9BA 01345000
- LA R2,245 ERROR MSG DMKCSP245E @V60B9BA 01346000
- B EXIT8R1 EXIT TO ERROR MODULE @V60B9BA 01347000
- SPACE 2 01348000
- MSG246E EQU * HERE IS FCB MISSING OR INVALID @V60B9BA 01349000
- LA R2,246 ERROR MSG DMKCSP246E @V60B9BA 01350000
- B EXIT8R1 EXIT TO ERROR MODULE @V60B9BA 01351000
- SPACE 2 01352000
- MSG253E EQU * HERE IS MODIFY MISSING OR INVALID @V60B9BA 01353000
- LA R2,253 ERROR MSG DMKCSP253E @V60B9BA 01354000
- B EXIT8R1 EXIT TO ERROR MODULE @V60B9BA 01355000
- SPACE 2 01356000
- MSG424E L R4,SAVEWRK4 ADDRESS THE WORK AREA @V60B9BA 01357000
- L R1,HLDPTR-HLDAREA(R4) DASD BUFFER VIRT ADDR @V60B9BA 01358000
- CALL DMKPGTVR RELEASE THE PAGE @V60B9BA 01359000
- LA R2,424 MSG NUM FOR PAGING ERROR @V60B9BA 01360000
- B EXIT8R1 EXIT TO ERROR MODULE @V60B9BA 01361000
- SPACE 2 01362000
- CVTBD EQU * HERE TO CONVERT BINARY TO DECIMAL 01363000
- CALL DMKCVTBD 01364000
- BR R2 01365000
- SPACE 01366000
- SPACE 2 01367000
- EJECT 01368000
- **************************************** 01369000
- * 01370000
- * FINAL EXIT BACK TO DMKCFM 01371000
- * 01372000
- **************************************** 01373000
- SPACE 3 01374000
- CSUEXIT EQU * HERE FOR NORMAL EXIT FROM DMKCSU 01375000
- SR R2,R2 CLEAR ERROR REGISTER 01376000
- B EXIT1 NOW EXIT 01377000
- SPACE 2 01378000
- EXIT8R1 SR R1,R1 01379000
- EXIT8R0 SR R0,R0 01380000
- EXIT8 ICM R0,14,ID+3 MOVE IN MODULE ID 01381000
- EXIT1 LR R3,R0 SAVE GPR 0-2 01382000
- LR R4,R1 .. 01383000
- LTR R5,R2 ANY ERRORS?? @V2A3663 01384000
- BNZ REGXIT YES - REGULAR EXIT PLEASE @V2A3663 01385000
- TM VMMLVL2,VMMIMSG NO - SUPPRESS INFO MSGS? @V2A3663 01386000
- BZ NOMSG YES @V2A3663 01387000
- REGXIT EQU * NO @V2A3663 01388000
- LH R1,SAVEWRK5 GET FILE COUNT 01389000
- LTR R1,R1 PROCESSING STARTED ?? 01390000
- BM NOMSG NO -- NO MESSAGE 01391000
- MVC MSGCNT(4),=C' NO ' SET MESSAGE 01392000
- BZ NOCNT NO FILE MSG 01393000
- CALL DMKCVTBD CONVERT COUNT FOR MSG 01394000
- STCM R1,15,MSGCNT STORE COUNT IN MESSAGE 01395000
- NOCNT MVC MSGFILE(5),=C'FILES' .. 01396000
- C R1,=C'0001' ONE FILE ?? 01397000
- BNE *+8 NO 01398000
- MVI MSGFILE+4,C' ' CHANGE FILES TO FILE 01399000
- MVC MSGCMD+3(8),BLANKS BLANK COMMAND NAME AREA @VA04869 01400000
- MVC MSGCMD(8),VMCOMND MOVE IN COMMAND NAME 01401000
- MVI MSGCMD+6,C'D' CHANGE CHANGE TO CHANGED @VA04869 01402000
- MSGLEN LA R0,CNTMSGL SET UP MSG LENGTH @VA04869 01403000
- LA R1,CNTMSG ADDRESS OF MESSAGE 01404000
- CALL DMKQCNWT,PARM=NORET WRITE MESSAGE 01405000
- NOMSG EQU * 01406000
- L R1,SAVEWRK4 ADDRESS OF 24 BYTE AREA 01407000
- LTR R1,R1 ADDRESS PRESENT ?? 01408000
- BZ EXIT2 NO --- 01409000
- LA R0,HLDSIZE LENGTH OF AREA @V60B9BA 01410000
- CALL DMKFRET RETURN AREA TO FREE STORAGE 01411000
- EXIT2 LR R0,R3 RESTORE REG 0-2 01412000
- LR R1,R4 .. 01413000
- LR R2,R5 .. 01414000
- LTR R2,R2 ERROR CODE PRESENT ?? 01415000
- BNZ ERREXIT YES -- 01416000
- EXIT3 EXIT - EXIT -- NO ERROR @V60B9BA 01417000
- SPACE 01418000
- ERREXIT EQU * HERE TO CALL ERROR MESSAGE MODULE 01419000
- CALL DMKERMSG EXIT TO MESSAGE MODULE 01420000
- SPACE 01421000
- * MODULE DMKERMSG WILL GIVE SVC16 AND RETURN CONTROL TO DMKCFM 01422000
- EJECT 01423000
- **************************************** 01424000
- * 01425000
- * MESSAGES AND CONSTANTS 01426000
- * 01427000
- **************************************** 01428000
- SPACE 2 01429000
- LTORG 01430000
- EJECT 01431000
- CSURDR EQU X'20' 01432000
- SPACE 3 01433000
- HLDAREA DSECT , LOCAL WORK AREA @V60B9BA 01434000
- HLDFNAM DS CL12 FILENAME @V60B9BA 01435000
- HLDFTYP DS CL12 FILETYPE @V60B9BA 01436000
- ORG HLDFNAM @V60B9BA 01437000
- HLDFILE DS CL24 FULL 24 CHAR NAME @V60B9BA 01438000
- HLDCHARS DS CL4 CHARS OPTION @V60B9BA 01439000
- HLDFCB DS CL4 FCB OPTION @V60B9BA 01440000
- HLDFLASH DS CL4 FLASH OVERLAY NAME @V60B9BA 01441000
- HLDCMOD DS CL4 COPY MODIFICATION NAME @V60B9BA 01442000
- HLDFLSHC DS 1X FLASH COUNT @V60B9BA 01443000
- DS 3X RESERVED @V60B9BA 01444000
- HLDPTR DS 1A VIRTUAL ADDR FOR SPLINK @V60B9BA 01445000
- HLDSIZE EQU (*-HLDAREA)/8 SIZE IN DOUBLE WORDS @V60B9BA 01446000
- SPACE 2 01447000
- PSA , @V306638 01448000
- COPY CONBUF @V306638 01449000
- COPY DEVTYPES @V306638 01450000
- COPY EQU @V306638 01451000
- COPY IOBLOKS @V306638 01452000
- COPY RBLOKS @V306638 01453000
- COPY SAVE @V306638 01454000
- COPY SPOOL @V306638 01455000
- COPY UDIRECT @V306638 01456000
- COPY VBLOKS @V306638 01457000
- COPY VMBLOK @V306638 01458000
- END 01459000
ibm/vm370-lib/cp/dmkcsu.assemble_src.txt ยท Last modified: 2023/08/06 13:36 by Site Administrator