CQP TITLE 'DMKCQP (CP) VM/370 - RELEASE 6' 00001000 ISEQ 73,80 VALIDATE SEQUENCING OF INPUT 00002000 *. 00003000 * 00004000 * MODULE NAME - 00005000 * DMKCQP 00006000 * 00007000 * FUNCTION - 00008000 * TO RETURN TO THE REQUESTOR INFORMATION FOR 00009000 * THE QUERY PAGING, PRIORITY, SYSTEM, LINKS, DUMP, HOLD, REAL, 00010000 * FREE, PROCESSOR, ALL, OR TERMINAL COMMAND. 00011000 * 00012000 * ATTRIBUTES - 00013000 * REENTRANT, PAGEABLE, CALLED VIA SVC 00014000 * 00015000 * ENTRY POINTS - 00016000 * DMKCQPRV - THIS IS THE ONLY ENTRY POINT IN THIS ROUTINE. 00017000 * 00018000 * 00019000 * ENTRY CONDITIONS - 00020000 * GPR6 - BRANCH TABLE INDEX VALUE 00021000 * GPR9 - ADDRESS OF THE COMMAND LINE BUFFER 00022000 * GPR11 - ADDRESS OF THE VMBLOK 00023000 * GPR12 - ADDRESS OF THE ENTRY POINT 00024000 * GPR13 - ADDRESS OF THE STANDARD SAVE AREA 00025000 * 00026000 * EXIT CONDITIONS - 00027000 * NORMAL - 00028000 * GPR2 = 0 00029000 * 00030000 * ERROR - 00031000 * GPR2 = ERROR MESSAGE CODE NUMBER 00032000 * 00033000 * CALLS TO OTHER ROUTINES - 00034000 * DMKSCNFD - TO LOCATE THE NEXT ARGUMENT IN THE COMMAND BUFFER 00035000 * DMKSCNAU - TO FIND THE VMBLOK FOR A SPECFIC USERID 00036000 * DMKSCNVU - TO FIND CONTROL BLOKS FOR A VIRTUAL DEVICE 00037000 * DMKSCNRU - TO FIND CONTROL BLOKS FOR A REAL DEVICE 00038000 * DMKSCNRD - GET ADDRESS OF REAL DEVICE. 00039000 * DMKSCNRA - TO GET CCU ADDRESS OF REAL DEVICE 00039100 * DMKSCNRN - TO GET THE NAME OF THE DEVICE. 00040000 * DMKSCNVD - GET THE VIRTUAL DEVICE ADDRESS. 00041000 * DMKCVTHB - TO CONVERT HEXADECIMAL ADDRESS TO BINARY 00042000 * DMKCVTDB - TO CONVERT A DECIMAL NUMBER TO BINARY. 00043000 * DMKCVTBD - TO CONVERT A BINARY NUMBER TO DECIMAL 00044000 * DMKCVTBH - TO CONVERT A BINARY NUMBER TO HEXADECIMAL 00045000 * DMKFREE - TO OBTAIN MEMORY FROM FREE STORAGE 00046000 * DMKFRET - TO RETURN MEMORY TO FREE STORAGE 00047000 * DMKQCNWT - TO OUTPUT MESSAGES TO THE TERMINAL 00048000 * DMKERMSG - TO SEND ERROR MESSAGES TO THE TERMINAL. 00049000 * DMKRSPUR - TO FORMAT ACTIVE FILE MESSAGE 00050000 * DMKCFCSC - SCAN OPERAND FOR RANGE OF ADDRESSES 00050100 * 00051000 *EXTERNAL REFERENCES - 00052000 * DMKSYSMA - MAXIMUM NUMBER USERS 00053000 * DMKSCHPG - PAGE WAIT THRESHOLD 00054000 * DMKSYSRM - REAL MEMORY SIZE 00055000 * DMKRIORN - TABLE OF 370X CONTROL UNITS 00056000 * 00057000 * TABLES/WORKAREAS - 00058000 * NONE 00059000 * 00060000 * REGISTER USAGE - 00061000 * GPR0 - LENGTH OF ARGUMENT IN LINE BUFFER(RETURNED BY DMKSCNFD 00062000 * GPR1 - ADDRESS OF NEXT ARGUMENT(RETURNED BY DMKSCNFD) 00063000 * GPR2 - PARAMETERS PASSED TO CALLED ROUTINES 00064000 * GPR3 - WORK REG AND INDEX FOR BXLE'S 00065000 * GPR4 - WORK REG AND INCREMENT REG FOR BXLE'S 00066000 * GPR5 - WORK REGISTER AND COMPARAND REGISTER FOR BXLE'S. 00067000 * GPR6 - ADDRESS OF RCHBLOK OR VCUBLOK 00068000 * GPR7 - ADDRESS OF RCUBLOK OR VCUBLOK 00069000 * GPR8 - ADDRESS OF RDEVBLOK OR VDEVBLOK 00070000 * GPR9 - ADDRESS OF COMMAND LINE BUFFER 00071000 * GPR10 - WORK REGISTER 00072000 * GPR11 - ADDRESS OF THE VMBLOK 00073000 * GPR12 - MODULE BASE REGISTER 00074000 * GPR13 - SAVEAREA BASE 00075000 * GPR14 - LINKAGE REGISTER 00076000 * GPR15 - LINKAGE REGISTER 00077000 * 00078000 * 00079000 EJECT 00082000 * COMMAND FORMAT - 00083000 * 00084000 * CLASS B 00085000 * +---------+---------------------+ 00086000 * | QUERY | SYSTEM RADDR | 00087000 * | Q | | 00088000 * | | LINKS VADDR | 00089000 * | | | 00090000 * | | DASD VOLID | 00091000 * | | TDSK | 00092000 * | | | 00093000 * | | DASD ACTIVE | 00094000 * | | TAPE OFFLINE | 00095000 * | | LINES FREE | 00096000 * | | UR ATTACH | 00097000 * | | ALL ALL | 00098000 * | | GRAF | 00099000 * | | STORAGE | 00100000 * | | PROCESSOR | 00100100 * | | RADDR | 00101000 * | | RADDR1-RADDR2 | 00101100 * +---------+---------------------+ 00102000 * 00103000 * 00104000 * OPERATION - 00105000 * 00106000 * 1. ISSUE SVC 16 TO RETURN THE SAVEAREA, THUS, WHEN EXIT 00107000 * WILL RETURN DIRECTLY TO DMKCFM COMMAND PROCESSING 00108000 * INSTEAD OF DMKCFMQU. 00109000 * 2. THE PROPER ROUTINE IS ENTERED VIA A BRANCH TABLE. 00110000 * REGISTER 6 IS SET UP BY DMKCFMQU TO INDEX TO THE 00111000 * PROPER BRANCH INSTRUCTION. 00112000 * 3. EACH ROUTINE SCANS THE APPROPRIATE CONTROL BLOKS TO 00113000 * PICK UP THE INFORMATION NEEDED FOR THE REQUEST AND FORMATS 00114000 * THE MESSAGE TO BE RETURNED TO THE USER. 00115000 * STEPS 4 AND 5 DELETED ... NO LONGER USED; PROCESSING 00116000 * MOVED TO MODULE DMKCQR. 00116100 * 6. SYSTEM - CALL DMKSCNFD TO LOCATE THE RADDR ARGUMENT. IF 00118000 * NONE IS FOUND, CALL DMKERMSG TO SEND ERROR MESSAGE 00119000 * DMKCQP021E. IF ONE FOUND, CALL DMKCVTHB TO CONVERT THIS 00120000 * ADDRESS TO BINARY. IF THE CONVERT FAILS, CALL DMKERMSG 00121000 * TO SEND ERROR MESSAGE DMKCQP021E. IF THE CONVERT WAS 00122000 * GOOD, CALL DMKSCNRU TO LOCATE THE RDEVBLOK ADDRESS FOR 00123000 * THIS DEVICE. IF THE RDEVBLOK CAN'T BE FOUND, CALL DMKERMSG 00124000 * TO SEND ERROR MESSAGE DMKCQP040E. IF BLOCK IS FOUND AND IT 00125000 * IS A DASDI DEVICE WHICH IS A CP-VOLUME CALL DMKFREE FOR 00126000 * A MESSAGE BUFFER AREA. PROCEED TO GET THE NAMES OF ALL 00127000 * USERS WHO ARE LINKED TO THIS VOLUME. AS THE MESSAGE 00128000 * OUTPUT LINES FILL CALL DMKQCNWT TO WRITE THE LINE TO THE 00129000 * USER. IF THE DEVICE IS NOT CP-OWNED TREAT THE REQUEST AS 00130000 * IF IT WERE FOR A SINGLE DEVICE. 00131000 * STEPS 7 AND 8 DELETED. MOVED TO DMKCQR. 00132000 * 9. 'DEVICE CLASS' - SET A FLAG IN SAVEWRK1 TO INDICATE 00133000 * WHICH TYPE OF REQUEST WAS RECEIVED. IF IT IS A STORAGE 00134000 * REQUEST, OBTAIN THE REAL STORAGE SIZE AND CALL DMKCVTBD 00135000 * TO CONVERT TO DECIMAL. PUT THIS IN THE MESSAGE AND CALL 00136000 * DMKQCNWT TO OUTPUT IT. FOR DEVICE TYPE REQUEST, SCAN 00137000 * THE REAL DEVICE BLOCKS AND WHEN A MATCH OCCURS ON THE 00138000 * REQUESTED DEVICE CLASS BUILD THE MESSAGE ACCORDING TO THE 00139000 * TYPE OF DEVICE AND ITS STATUS. THEN CALL DMKQCNWT TO 00140000 * OUTPUT THE MESSAGE. CHECK RDEVNRDY FLAG. IF ON, CALL 00141000 * DMKQCNWT AND OUTPUT INT REQ MESSAGE. CONTINUE DOING THIS 00142000 * UNTIL ALL RDEVBLOKS HAVE BEEN SCANNED. 00143000 * STEP 10 DELETED; PROCESSING MOVED TO DMKCQR. 00144000 * 11. LINK - CALL DMKCVTHB TO CONVERT VADDR TO BINARY. IF 00145000 * ERROR DURING CONVERT CALL DMKERMSG TO ISSUE ERROR 00146000 * MESSAGE DMKCQP022E. IF VADDR IS VALID CALL DMKSCNVU TO 00147000 * LOCATE THE VIRTUAL DEVICE BLOCK. IF THE DEVICE IS NOT 00148000 * FOUND CALL DMKERMSG TO ISSUE ERROR MESSAGE DMKCQP040E. IF 00149000 * ADDRESS IS CORRECT CHECK THAT DEVICE IS DASDI. IF NOT 00150000 * DASDI ISSUE ERROR MESSAGE DMKCQP006E. IF ALL OF THE ABOVE 00151000 * REQUIREMENTS ARE MET, PROCEED TO FIND EACH USER ON THE 00152000 * SYSTEM THAT IS USING THE SAME DISK EXTENT, ON THE SAME 00153000 * CP-VOLUME THAT THIS USER HAS. CALL DMKQCNWT TO OUTPUT 00154000 * THE RESPONSE LINE. CONTINUE SCANNING ALL VDEVBLOKS IN THE 00155000 * SYSTEM UNTIL THE VDEVBLOKS ARE EXHAUSTED. 00156000 * 00157000 * 12. TDSK - USE THE SAME LOOP AS QUERY LINKS ONLY PICK UP 00158000 * THE VIRTUAL DISKS MARKED AS TDSK ALLOCATED. 00159000 * THE VIRTUAL TDSKS INDICATE THE NUMBER OF CYLINDERS 00160000 * THE STACK ROUTINE IS USED TO STACK THE OUTPUT LINE. 00161000 * 00161010 * 13. PROCESSOR - CALL DMKCVTBH TO CONVERT EACH ONLINE PROCESSOR 00161020 * ADDRESS TO PRINTABLE HEXADECIMAL THEN BUILD PROCESSOR 00161030 * ONLINE MESSAGE. IN AP MODE, THE MAIN PROCESSOR WILL BE 00161040 * GIVEN FIRST. 00161050 * RESPONSES - 00162000 * 00163000 * THE FOLLOWING ARE TYPICAL RESPONSES TO THE QUERY COMMAND. XXX 00164000 * DENOTES A VIRTUAL ADDRESS AND YYY A REAL ADDRESS. 00165000 * 00166000 * QUERY SYSTEM RADDR 00167000 * USERID XXX R/O, USERID XXX R/W, USERID XXX CCC, USERID.. 00168000 * 00169000 * QUERY LINKS VADDR 00170000 * USERID XXX R/O, USERID XXX R/O, USERID XXX R/W, USERID... 00171000 * 00172000 * QUERY TDSK 00173000 * USERID XXX CCC, USERID XXX CCC, USERID XXX CCC, USERID ... 00174000 * 00175000 * 00176000 * 00177000 * QUERY ALL 00178000 * STORAGE = NNNNNK 00179000 * PROCESSOR YY ONLINE, PROCESSOR ZZ ONLINE 00179100 * TYPE YYY STARTED SYSTEM CLASS= ABCD SEP 00180000 * TYPE YYY DRAINED SYSTEM CLASS= ABCD NOSEP 00181000 * FOR A 3800 PRINTER 00181100 * PRT YYY STARTED SYSTEM CLASS= ABCD SEP CHAR LPI 00181200 * PRT YYY FLASH OVLY IMAGE IMAGELIB 00181300 * 00181400 * DASD YYY CP OWNED VOLID NNN 00182000 * DASD YYY CP SYSTEM VOLID NNN 00183000 * LINE YYY LOGIN AS USERID 00184000 * TYPE YYY ATTACH TO USERID XXX 00185000 * CTLR YYY DEV 1000 NCP= NCPNAMEX DUMP AUTO 00186000 * 00187000 * TYPE YYY OFFLINE, TYPE YYY OFFLINE, TYPE YYY OFFLINE, TYPE 00188000 * 00189000 * TYPE YYY FREE , TYPE YYY DISABLE, TYPE YYY ENABLED, TYPE 00190000 * TYPE YYY DRAINED, TYPE YYY VOLID , TYPE YYY FREE , TYPE 00191000 * 00192000 * 00193000 * TYPE YYY INT REQ 00194000 * 00195000 * DMKCQP466I CTLR YYY IN BUFFER SLOWDOWN MODE 00196000 * 00197000 * 00198000 * TYPE ACTIVE NOT FOUND 00199000 * OFFLINE 00200000 * FREE 00201000 * DEVICES 00202000 * 00203000 * QUERY PAGING 00204000 * 00205000 * ERROR MESSAGES - 00206000 * DMKCQP003E INVALID OPTION - (OPTION) 00207000 * DMKCQP006E INVALID DEVICE TYPE - (ADDR) 00208000 * DMKCQP021E RADDR MISSING OR INVALID 00210000 * DMKCQP022E VADDR MISSING OR INVALID 00211000 * DMKCQP023E VOLID MISSING OR INVALID 00212000 * DMKCQP040E DEV (ADDR) DOES NOT EXIST 00213000 * DMKCQP045E (USERID) NOT LOGGED ON 00214000 * 00215000 *. 00216000 EJECT 00217000 DMKCQP CSECT 00218000 MODID DC CL8'DMKCQP' MODULE ID AND EYE CATCHER @V200930 00219000 SPACE 3 00220000 USING PSA,R0 00221000 USING VMBLOK,R11 00222000 USING SAVEAREA,R13 00223000 SPACE 00224000 EXTRN DMKRSPHQ,DMKRSPUR @V200820 00225000 EXTRN DMKRIORN @V200820 00226000 EXTRN DMKSCNVD 00227000 EXTRN DMKSCNRN 00228000 EXTRN DMKSCNRD 00229000 EXTRN DMKSCNRA @V407438 00229100 EXTRN DMKSYSRM 00230000 EXTRN DMKSCNRU 00231000 EXTRN DMKSCNVU 00232000 EXTRN DMKCVTBD 00233000 EXTRN DMKCVTBH 00234000 EXTRN DMKSCNAU 00235000 EXTRN DMKCVTHB 00236000 EXTRN DMKSYSMA 00237000 EXTRN DMKSYSNM 00238000 EXTRN DMKSCNFD 00239000 EXTRN DMKERMSG 00240000 EXTRN DMKSYSRV 00241000 EXTRN DMKCFCSC SCAN OPERAND FOR RANGE @V3E7466 00241100 SPACE 3 00242000 ENTRY DMKCQPRV 00243000 EJECT 00244000 * SINCE THE SAVEAREA CREATED ON THE CALL FROM CFMQU IS NOT USED 00245000 * IT WILL BE RELEASED, THUS WHEN THIS ROUTINE RETURNS, IT 00246000 * WILL GO BACK TO CFM INSTEAD OF CFMQU. CFM'S 00247000 * REGISTERS ARE SAVED BY CFMQU 00248000 * UPON ENTRY GPR6 WILL HAVE BEEN SET UP BY DMKCFMQU TO INDEX 00249000 * TO THE PROPER BRANCH, THUS THE ORDER OF BRANCHES MUST 00250000 * BE THE SAME AS THE LIST OF ARGUMENTS IN DMKCFMQU. 00251000 * 00252000 SPACE 00253000 USING *,R12 00254000 DMKCQPRV SVC 16 RELEASE SAVEAREA, USE DMKCFMQU @V200930 00255000 SL R12,=A(DMKCQPRV-DMKCQP) ADJUST ADDRESSING @V200930 00256000 USING DMKCQP,R12 BASE @V200930 00257000 MVC SAVEWRK1(4),ZEROES ZERO FLAG AREA 00258000 SLR R2,R2 INITIALIZE ZERO RETURN CODE @V3E7466 00258050 STM R0,R11,SAVEREGS SAVE REGISTERS R0 THRU R11 00259000 B PVVECTOR(R6) GPR6 USED TO INDEX INTO BRANCH TABLE 00260000 PVVECTOR EQU * 00261000 B QRYADDR Q RADDR/USERID @V200930 00262000 B QRYSYS Q SYSTEM XXX 00263000 B QRYDASD Q DASD 00264000 B QRYTAPE Q TAPES 00265000 B QRYLINE Q LINES 00266000 B QRYUR Q UR 00267000 B QRYSTG Q STORAGE 00268000 B QRYALL Q ALL 00269000 B QRYLINK Q LINKS XXX 00270000 B QRYGRAF Q GRAF @V200930 00271000 B QRYTDSK Q TDSK @V200930 00272000 B QRYPROC Q PROCESSOR @V5BC0AB 00272010 SPACE 3 00273000 QRYWRIT CALL DMKQCNWT,PARM=NORET 00274000 TM CQPBITS,RANGE RANGE BEING PROCESSED? @V3E7466 00274100 BO NEXTADDR GET NEXT ADDR IN RANGE @V3E7466 00274200 QRYEXIT EQU * 00275000 EXIT RETURN 00280000 NEXTADDR L R1,SAVEWRK4 RESTORE CURRENT RADDR @V3E7466 00280100 LA R1,1(,R1) UP BY ONE TO NEXT RADDR @V3E7466 00280200 ST R1,SAVEWRK4 STORE UPDATED ADDRESS @V3E7466 00280300 CH R1,RADDR2 END OF RANGE @V3E7466 00280400 BNH SCNRU GET REAL DEVICE BLOKS @V3E7466 00280500 LA R0,FRBUFSIZ LOAD BUFFER SIZE @V3E7466 00280600 LR R1,R9 POINT TO GOTTEN CORE @V3E7466 00280700 LTR R9,R9 BUFFER TO FRET ?? @V407490 00280725 BZ QRYEXIT NO, EXIT TO CFM @V407490 00280750 CALL DMKFRET GO RELEASE CORE @V3E7466 00280800 B QRYEXIT EXIT TO CFM @V3E7466 00280900 EJECT 00281000 * 00282000 * ROUTINE TO PROVIDE REAL MACHINE INFO TO SYSTEMS OPERATOR 00283000 * 00284000 SPACE 00285000 * 00286000 * EQUATES FOR QRYREAL---FLAGS IN SAVEWRK1+3 00287000 * 00288000 SPACE 00289000 DEVREQ EQU X'80' INDICATES OPERATOR REQUESTED SPECIFIC DEV 00290000 FREEDEV EQU X'40' SEARCH FOR AVAILABLE DEVICES @V200930 00291000 OFFDEV EQU X'20' SERACH ONLY FOR OFFLINE DEVICES @V200930 00292000 ATTDEV EQU X'10' SERACH FOR ATTACHED (DEDICATED) @V200930 00293000 * DEVS ONLY 00294000 ACTDEV EQU X'04' OPERATOR ONLY WANTS ACTIVE DEVICES 00295000 DASDVOL EQU X'02' SEARCH FOR DASD WITH VOLID ONLY @V200930 00296000 REALFND EQU X'01' BIT TO INDICATE AT LEAST ONE DEVICE 00297000 * WAS FOUND AND PRINTED 00298000 RANGE EQU X'08' RANGE BEING PROCESSED? @V3E7466 00298100 SPACE 00298200 * EQUATES FOR SAVEWRK1+1 00298300 PASS1 EQU X'80' FIRST PASS SWITCH @V3E7466 00298400 SPACE 00298500 * MISCELLANEOUS EQUATES 00298600 BLANK EQU X'40' DELIMITER @V3E7466 00298700 SPACE 3 00299000 * EQUATES FOR SAVEWRK1 00300000 QUERYALL EQU X'0F' FLAG IN TABLE OF QUERY ARGS TO = Q X ALL 00301000 QUERYCOR EQU X'F0' FLAG IN TABLE OF QUERY ARGS TO = Q X MEMORY 00302000 SPACE 2 00303000 QRYDASD OI SAVEWRK1,CLASDASD SET DASD CLASS @V200930 00304000 B QRYRSET GET NEXT ARG @V200930 00305000 QRYTAPE OI SAVEWRK1,CLASTAPE SET TAPE CLASS @V200930 00306000 B QRYRSET GET NEXT ARG @V200930 00307000 QRYLINE OI SAVEWRK1,CLASTERM SET TERM CLASS @V200930 00308000 B QRYRSET GET NEXT ARG @V200930 00309000 QRYUR OI SAVEWRK1,CLASURO+CLASURI SET UR CLASS @V200930 00310000 B QRYRSET GET NEXT ARG @V200930 00311000 QRYGRAF OI SAVEWRK1,CLASGRAF SET GRAF CLASS @V200930 00312000 B QRYRSET GET NEXT ARG @V200930 00313000 QRYALL OI SAVEWRK1,QUERYALL SET FOR ALL @V200930 00314000 B QRYRSET GET NEXT ARG @V200930 00315000 QRYSTG OI SAVEWRK1,QUERYCOR SET FOR STORAGE @V200930 00316000 B REALCORE QUERY STORAGE @V200930 00317000 QRYADDR SR R9,R9 CLEAR BUFFER REG @V407490 00317500 CL R0,F7 MORE THAN SEVEN CHARACTERS ?? @V407490 00318000 BH QRYUSRID YES, TRY USERID @V3E7466 00318010 LA R2,DASH PREPARE FOR RANGE SCAN @V3E7466 00318020 CALL DMKCFCSC SEE IF RANGE SPECIFIED @V3E7466 00318030 BZ NORANGE NO '-' FOUND IN OPERAND @V3E7466 00318040 CR R1,R2 INVALID IF '-' FIRST CHAR. @V3E7466 00318050 BNL QRYUSRID TREAT AS USERID @V3E7466 00318060 LR R3,R2 ... @V3E7466 00318070 SR R3,R1 LENGTH OF RADDR1 FIELD @V3E7466 00318080 LR R4,R0 ENTIRE OPERAND LENGTH @V3E7466 00318090 LR R0,R3 RADDR1 LENGTH @V3E7466 00318100 MVI 0(R2),BLANK REPLACE '-' WITH BLANK @V3E7466 00318110 CALL DMKCVTHB CONVERT TO BINARY @V3E7466 00318120 LR R0,R4 OPERAND LENGTH @V3E7466 00318130 MVI 0(R2),CHARDASH PUT DASH BACK IN OPERAND @V3E7466 00318140 BNZ QRYUSRID TREAT AS USERID @V3E7466 00318150 STH R1,RADDR1 SAVE FIRST ADDR IN RANGE @V3E7466 00318160 LA R1,1(,R2) PT TO SECOND RADDR IN RANGE @V3E7466 00318170 LR R6,R4 ENTIRE OPERAND LENGTH @V3E7466 00318180 SR R6,R3 RADDR2 LENGTH @V3E7466 00318190 BCTR R6,0 MINUS ONE FOR '-' @V3E7466 00318200 CL R6,F3 SECOND OPERAND GT THREE @VA10292 00318203 * CHARACTERS 00318206 BH QRYUSRID YES, NOT A VALID ADDRESS @VA10292 00318209 LR R0,R6 TO R0 @V3E7466 00318210 CALL DMKCVTHB CONVERT SEC. ADDR IN RANGE @V3E7466 00318220 LR R0,R4 ENTIRE OPERAND LENGTH @V3E7466 00318230 MVI 0(R2),CHARDASH PUT '-' BACK IN OPERAND @V3E7466 00318240 BNZ QRYUSRID TREAT AS USERID @V3E7466 00318250 LH R4,RADDR1 FIRST ADD IN RANGE @V3E7466 00318260 CR R1,R4 RADDR2 > RADDR1 @V3E7466 00318270 BNH CQP021A ISSUE MSG 021E @V407490 00318280 STH R1,RADDR2 STORE RADDR2 IN SAVEWRK7+2 @V3E7466 00318290 OI CQPBITS,RANGE INDICATE PROCESSING RANGE @V3E7466 00318300 LH R1,RADDR1 FIRST RADDR IN RANGE @V3E7466 00318310 ST R1,SAVEWRK4 SAVE FOR LATER @V3E7466 00318320 B SCNRU FIND REAL DEVICE BLOKS @V3E7466 00318330 NORANGE CL R0,F3 ARG. TOO BIG FOR ADDR? @V3E7466 00318340 BH QRYUSRID YES, TRY USERID. @VA01607 00319000 CALL DMKCVTHB ATTEMPT CONVERSION TO BINARY @VA01607 00320000 BNZ QRYUSRID ERROR IF ADDRESS INVALID 00321000 SCNRU CALL DMKSCNRU GET REAL DEVICE BLOKS @V3E7466 00322000 BNZ CHKRA DET. WHETHER TO ISSUE 040E MSG @V3E7466 00322100 LNKERR OI SAVEWRK1+3,DEVREQ FLAG DEVICE REQUEST @V200930 00324000 B TSTALL SET FLAGS, FIND DEVICE @V200930 00325000 CHKRA TM CQPBITS,RANGE RANGE BEING PROCESSED @V3E7466 00325100 BZ QRYUSRID TREAT AS USERID @V3E7466 00325200 B CQP040A DEV ADDR DOES NOT EXIST @V3E7466 00325300 SPACE 00325400 CHARDASH EQU C'-' RANGE DELIMITER @V3E7466 00325500 EJECT 00326000 QRYUSRID L R0,SAVER0 LOAD LENGTH OF ARG. 00327000 L R1,SAVER1 RESTORE ADDRESS OF ARG. 00328000 MVC SAVEWRK2(8),BLANKS CLEAR WORK AREA. 00329000 MVC SAVEWRK2+8(8),BLANKS " " " 00330000 CALL DMKSCNAU IS USER LOGGED ON ? 00331000 BNZ CQP045 IF NOT, PROVIDE AN ERROR MESSAGE. 00332000 DROP R11 00333000 LR R10,R1 LOAD ADDRESS OF VMBLOK INTO R-10. 00334000 USING VMBLOK,R10 ADDRESSABILITY 00335000 MVC SAVEWRK2(8),VMUSER MOVE IN USERID. 00336000 MVI SAVEWRK2+9,C'-' PUT IN THE DASH. 00337000 MVC SAVEWRK2+11(3),=C'DSC' PROBABLY NOT DISCONNECTED . 00338000 TM VMOSTAT,VMDISC IS USER DISCONNECTED ? 00339000 BO QRYDSC IF YES, BR. 00340000 L R8,VMTERM LOAD ADDRESS OF USER'S TERMINAL RDEVBLOK. 00341000 TM RDEVADD-RDEVBLOK(R8),RDEVLDEV Is this an LDEV? HRC065DK 00341100 BO QRYLDEV Yes HRC065DK 00341200 CLI RDEVTYPC-RDEVBLOK(R8),CLASTERM IS CLASS TERMINAL 00342000 BNE *+12 NO, BYPASS TEST FOR BISYNC LINE 00343000 CLI RDEVTYPE-RDEVBLOK(R8),TYPBSC IS THIS A LINE 00344000 BE *+12 YES, GET RESOURCE ID. 00345000 CLI RDEVTYPC-RDEVBLOK(R8),CLASSPEC 3705 TERM ? @V200820 00346000 BNE QRYUSRT NO -- DIFFERENT @V200820 00347000 LH R1,VMTRMID TERMINAL RESOURCE REFERENCE @V200820 00348000 CALL DMKCVTBH @V200820 00349000 STCM R1,15,SAVEWRK2+10 PUT FOUR-CHAR ID IN MSG @V200820 00350000 B QRYDSC @V200820 00351000 QRYLDEV EQU * HRC065DK 00351100 LH R1,RDEVADD-RDEVBLOK(,R8) Get the LDEV address HRC065DK 00351200 N R1,F4095 Keep only the dev num HRC065DK 00351300 CALL DMKCVTBH Make it displayable HRC065DK 00351400 STCM R1,7,SAVEWRK2+11 Put dev addr in message HRC065DK 00351500 MVI SAVEWRK2+10,C'L' Move in LDEV indicator HRC065DK 00351600 B QRYDSC Go display msg HRC065DK 00351700 QRYUSRT EQU * FORMAT OUTPUT FOR NORMAL TERMINAL@V200820 00352000 DROP R10 00353000 USING VMBLOK,R11 RE-ESTABLISH ADDRESSABILITY 00354000 CALL DMKSCNRD GET DEVICE ADDRESS INTO R1. 00355000 CALL DMKCVTBH CONVERT TO PRINTABLE CHAR'S. 00356000 STCM R1,7,SAVEWRK2+11 STORE DEVICE ADDRESS. 00357000 QRYDSC LA R0,14 SET LENGTH OF PRINT LINE. 00358000 LA R1,SAVEWRK2 AND ALSO ITS ADDRESS. 00359000 B QRYWRIT GO OUTPUT THIS LINE. 00360000 EJECT 00361000 QRYRSET CALL DMKSCNFD GET NEXT FIELD IF ANY @V200930 00362000 BNZ QRYSACT NO FIELD, DEFAULT TO ACTIVE @V200930 00363000 LR R2,R0 SIZE @V200930 00364000 BCTR R2,R0 LESS 1 @V200930 00365000 * 00365100 * TEST TO SEE IF THE 'VIRTUAL' OR 'SYSVIRT' 00365200 * PARAMETER WAS SPECIFIED. 00365300 * 00365400 EX R2,VIRTCLC WAS 'VIRTUAL' SPECIFIED @V60B6B8 00365500 BE SETVIRT YES @V60B6B8 00365600 EX R2,SYSVCLC WAS 'SYSVIRT' SPECIFIED @V60B6B8 00365700 BE SETSYSV YES @V60B6B8 00365800 CL R0,F3 IS IT LESS THAN 3 ?? @V200930 00366000 BL QRYTDAS YES, TEST FOR VOLID @V200930 00367000 EX R2,CLCFRE SET FOR FREE @V200930 00368000 BNE QRYTACT NO, TEST FOR ACTIVE @V200930 00369000 OI SAVEWRK1+3,FREEDEV SET FOR FREE ONLY @V200930 00370000 B QRYRSCAN GO FIND DEVICES @V200930 00371000 SETVIRT EQU * Q DASD VIRTUAL COMMAND @V60B6B8 00371100 OI SAVEWRK1+1,VIRTUAL SET FLAG @V60B6B8 00371200 B QRYRSET GET NEXT OPTION @V60B6B8 00371300 SETSYSV EQU * Q DASD SYSVIRT COMMAND @V60B6B8 00371400 OI SAVEWRK1+1,SYSVIRT SET FLAG @V60B6B8 00371500 B QRYRSET GET NEXT OPTION @V60B6B8 00371600 QRYTACT EX R2,CLCACT TEST FOR ACTIVE @V200930 00372000 BNE QRYTOFF TEST FOR OFFLINE @V200930 00373000 QRYSACT OI SAVEWRK1+3,ACTDEV SET FOR ACTIVE @V200930 00374000 B QRYRSCAN GO FIND DEVICES @V200930 00375000 QRYTOFF EX R2,CLCOFF TEST FOR OFFLINE @V200930 00376000 BNE QRYTALL TEST FOR ALL @V200930 00377000 OI SAVEWRK1+3,OFFDEV SET FOR OFFLINE @V200930 00378000 B QRYRSCAN GO FIND DEVICES @V200930 00379000 QRYTALL EX R2,CLCALL TEST FOR ALL @V200930 00380000 BE TSTALL YES, SET AND TEST @V200930 00381000 EX R2,CLCATT TEST FOR ATTACH @V200930 00382000 BNE QRYTDAS NO, TEST FOR VOLID @V200930 00383000 OI SAVEWRK1+3,ATTDEV+ACTDEV SET FOR ATTACH DEVS @V200930 00384000 * ONLY 00385000 B QRYRSCAN GO FIND DEVICE @V200930 00386000 QRYTDAS CLI SAVEWRK1,CLASDASD IS IT DASD SERACH ?? @V200930 00387000 BNE CQP003 NO, ERROR @V200930 00388000 CL R0,F6 BIGGER THAN 6 CHARACTERS ?? @V200930 00389000 BH CQP023 YES, ERROR @V200930 00390000 MVC SAVEWRK2(8),BLANKS PREP FIELD @V200930 00391000 EX R2,MVCVOL MOVE VOLID FOR COMPARE @V200930 00392000 OI SAVEWRK1+3,DASDVOL SET FOR VOLID SEARCH @V200930 00393000 TSTALL OI SAVEWRK1+3,ACTDEV+FREEDEV+OFFDEV DO ALL @V200930 00394000 TM SAVEWRK1,QUERYALL IS IT ALL REQUEST ?? @V200930 00395000 BO REALCORE YES, DO STORAGE FIRST @V200930 00396000 TM CQPBITS,RANGE RANGE BEING PROCESSED? @V3E7466 00397000 BZ QRYRSCAN NO, SCAN FOR DEVICES @V3E7466 00397100 TM SAVEWRK1+1,PASS1 IS THIS FIRST PASS? @V3E7466 00397200 BO QRYLOOP NO, SKIP ACQUIRING STORAGE @V3E7466 00397300 OI SAVEWRK1+1,PASS1 INDICATE FIRST PASS @V3E7466 00397400 B QRYRSCAN SCAN DEVICES @V3E7466 00397500 SPACE 00398000 MVCVOL MVC SAVEWRK2(*-*),0(R1) EX FOR VOLID @V200930 00399000 CLCFRE CLC 0(*-*,R1),=CL5'FREE ' EX FOR FREE @V200930 00400000 CLCACT CLC 0(*-*,R1),=CL7'ACTIVE ' EX FOR ACTIVE @V200930 00401000 CLCOFF CLC 0(*-*,R1),=CL8'OFFLINE ' EX FOR OFFLINE @V200930 00402000 CLCALL CLC 0(*-*,R1),=CL4'ALL ' EX FOR ALL @V200930 00403000 CLCATT CLC 0(*-*,R1),=CL7'ATTACH ' EX FOR ATTACH @V200930 00404000 VIRTCLC CLC 0(*-*,R1),=CL7'VIRTUAL' CLC FOR Q DASD VIRTUAL @V60B6B8 00404100 SYSVCLC CLC 0(*-*,R1),=CL7'SYSVIRT' CLC FOR Q DASD SYSVIRT @V60B6B8 00404200 EJECT 00405000 REALCORE L R1,=A(DMKSYSRM) LOAD REAL STORAGE SIZE ADDRESS 00406000 L R1,0(,R1) LOAD REAL STORAGE SIZE 00407000 L R2,=A(DMKSYSRV) NOW GET SIZE OF SYSGEN'D STORAGE 00408000 L R2,0(,R2) . . . . 00409000 CR R1,R2 WHICH ONE WILL WE USE ?? 00410000 BNH MAKEK IF REAL IS EQUAL OR LESS USE IT 00411000 LR R1,R2 ELSE USE THE SYSGEN'D VALUE 00412000 MAKEK EQU * 00413000 SRL R1,10 MAKE SIZE = K 00414000 CALL DMKCVTBD CONVERT SIZE TO PRINT. FORM 00415000 MVC SAVEWRK2(7),=C'STORAGE' SET "STORAGE" INTO MSG LINE 00416000 MVC SAVEWRK2+7(3),=C' = ' SET "=" ALSO IN LINE 00417000 STC R0,SAVEWRK2+10 00418000 STCM R1,15,SAVEWRK2+11 PUT IN STORAGE SIZE 00419000 MVI SAVEWRK2+15,C'K' THE "K" FINISH UP THE SIZE MSG. 00420000 LA R0,16 MESSAGE LENGTH 00421000 LA R1,SAVEWRK2 DATA ADDRESS @V200930 00422000 BAL R3,STACK STACK LINE FOR OUTPUT @V200930 00423000 TM SAVEWRK1,QUERYALL QUERY ALL ?? @V200930 00424000 BZ QRYEXIT NO, EXIT @V200930 00425000 QRYPROC DS 0H @V5BC0AB 00426010 LA R0,PROCBSIZ GET BUFFER SIZE IN DOUBLE-WORDS @V5BC0AB 00426020 CALL DMKFREE GET BUFFER STORAGE @V5BC0AB 00426030 LR R9,R1 PUT BUFFER ADDRESS IN R9 @V5BC0AB 00426040 SPACE 00426050 USING PROCBUF,R9 @V5BC0AB 00426060 SPACE 00426070 MVC PROCBUF(10),=C'PROCESSOR ' PROCESSOR INTO MSG @V5BC0AB 00426080 SR R1,R1 CLEAR REGISTER 1 @V5BC0AB 00426090 ICM R1,B'0011',IPUADDR PUT PROCESSOR ADDRESS IN R1 @V5BC0AB 00426100 CALL DMKCVTBH CONVERT TO PRINTABLE FORM @V5BC0AB 00426110 STCM R1,B'0011',PROCBUF+10 SET PROCESSOR ADDRESS @V5BC0AB 00426120 MVC PROCBUF+12(7),=C' ONLINE' MOVE IN ONLINE @V5BC0AB 00426130 LA R0,19 GET MESSAGE LENGTH @V5BC0AB 00426140 TM APSTAT1,APUOPER SYSTEM IN AP MODE? @V5BC0AB 00426150 BZ MSGSTACK NO, BRANCH @V5BC0AB 00426160 MVC PROCBUF+19(12),=C', PROCESSOR ' @V5BC0AB 00426170 SR R1,R1 CLEAR REGISTER 1 @V5BC0AB 00426180 ICM R1,B'0011',IPUADDRX GET ADDRESS OF OTHER PROC. @V5BC0AB 00426190 CALL DMKCVTBH CONVERT TO PRINTABLE FORM @V5BC0AB 00426200 STCM R1,B'0011',PROCBUF+31 MOVE IN PROCESSOR ADDR. @V5BC0AB 00426210 MVC PROCBUF+33(7),=C' ONLINE' MOVE IN ONLINE @V5BC0AB 00426220 LA R0,40 GET MESSAGE LENGTH @V5BC0AB 00426230 TM APSTAT1,PROCIO ON MAIN PROCESSOR? @V5BC0AB 00426240 BO MSGSTACK YES, BRANCH @V5BC0AB 00426250 SR R14,R14 CLEAR REGISTER 14 @V5BC0AB 00426260 ICM R14,B'0011',PROCBUF+10 GET ATTACHED PROC. ADDR @V5BC0AB 00426270 STCM R1,B'0011',PROCBUF+10 MOVE IN MAIN'S ADDRESS @V5BC0AB 00426280 STCM R14,B'0011',PROCBUF+31 MOVE IN ATTACH. PROC ADR @V5BC0AB 00426290 MSGSTACK DS 0H @V5BC0AB 00426300 LA R1,PROCBUF GET DATA ADDRESS @V5BC0AB 00426310 BAL R3,STACK STACK LINE FOR OUTPUT @V5BC0AB 00426320 LR R1,R9 GET BUFFER ADDRESS IN R1 @V5BC0AB 00426330 LA R0,PROCBSIZ GET BUFFER SIZE IN DOUBLE-WORDS @V5BC0AB 00426340 CALL DMKFRET FREE THE BUFFER STORAGE @V5BC0AB 00426350 TM SAVEWRK1,QUERYALL QUERY ALL? @V5BC0AB 00426360 BZ QRYEXIT NO, EXIT @V5BC0AB 00426370 B QRYRSCAN YES, GO SCAN DEVICES @V5BC0AB 00426380 SPACE 00426390 DROP R9 @V5BC0AB 00426400 SPACE 00426410 EJECT 00427000 USING RCHBLOK,R6 00428000 USING RCUBLOK,R7 00429000 USING RDEVBLOK,R8 00430000 USING FREEBUF,R9 00431000 REALFMT MVC FREEMSG(8),BLANKS CLEAR MESSAGE AREA @V200930 00432000 MVC FREEMSG+8(9*8),FREEMSG .. @V200930 00433000 CALL DMKSCNRA GET 'CCU' FORM OF ADDRESS @V407438 00433400 BZ CQP1OK OK THIS TIME, CONTINUE @V407438 00433800 ABEND 1 BAD BLOCKS SENT TO DMKSCNRA @V407438 00434200 CQP1OK EQU * CONTINUE @V407438 00434600 LR R3,R1 SAVE THE ADDRESS FOR LATER USE @V200820 00435000 CALL DMKCVTBH GET IN PRINTABLE FORM 00436000 STCM R1,7,FREEMSG+5 SAVE ADDRESS @V200930 00437000 CALL DMKSCNRN GET DEVICE NAME @V200930 00438000 STCM R1,15,FREEMSG SET NAME @V200930 00439000 TM RCUTYPE,RCUSUB IS THIS A SUBORDINATE? @V407438 00439050 BZ *+8 NOPE, SKIP @V407438 00439100 L R7,RCUPRIME YES, GET PRIMARY BLOCK FOR STATUS@V407438 00439150 STM R1,R3,TEMPR1 TEMPORARILY SAVE REGS @V407438 00439200 LA R1,RCUCHA ADDRESS OF THE FIRST CHANNEL @V407438 00439250 LA R2,4 INCREMENT @V407438 00439300 LA R3,RCUCHD ADDRESS OF THE LAST CHANNEL @V407438 00439350 NEXTCHA CL R6,0(R1) R6 REPRESENT THIS CU -> CH PATH? @V407438 00439400 BE *+8 YES, PATH FOUND, BR. @V407438 00439450 BXLE R1,R2,NEXTCHA NOPE, LOOK AT ALL CHANNEL PATHS @V407438 00439500 LA R2,RCUCHA ADDRESS OF THE BEGINNING AGAIN @V407438 00439550 SLR R1,R2 FIND HOW FAR DOWN WE FOUND IT @V407438 00439600 SRL R1,2 CONVERT TO INDEX FROM 0 TO 3 @V407438 00439650 IC R3,DISATBL(R1) GET CU->CH PTH BIT @V407438 00439700 EX R3,CUCHENAB (TM RCUSTAT,RCUCHXOF) TEST PATH @V407438 00439750 LM R1,R3,TEMPR1 RESTORE REGS @V407438 00439800 BO REALCONT CHANNEL PATH OFFLINE, SKIP IT @V407438 00439850 TM RCUSTAT,RCUDISA IS THE CONTROL UNIT OFFLINE? @V407438 00439900 BO REALCONT YES, SKIP IT @V407438 00439950 TM RDEVSTAT,RDEVDISA IS IT OFFLINE ?? @V200930 00440000 BO REALCONT YES, SKIP IT @V200930 00441000 TM RDEVSTAT,RDEVDED IS IT DEDICATED ?? @V200930 00442000 BO RDEVATCH YES @V200930 00443000 TM SAVEWRK1+3,ATTDEV SEARCH FOR ATTACHED ONLY ?? @V200930 00444000 BO REALCONT YES, SKIP THIS ONE @V200930 00445000 TM RDEVTYPC,CLASTERM+CLASGRAF IS IT A TERMINAL ?? @V200930 00446000 BNZ LINESET YES @V200930 00447000 TM RDEVTYPC,CLASURO+CLASURI IS IT UNIT RECORD ?? @V200930 00448000 BNZ URSET YES @V200930 00449000 CLI RDEVTYPC,CLASSPEC SPECIAL CLASS DEVICE ? @V200820 00450000 BE SPECSET YES -- @V200820 00451000 B NOTURIO TEST FOR OTHERS @V200930 00452000 SPACE 00452200 * RCU TO RCH BLOCK PATH AVAILABLE BITS IN RCUSTAT 00452400 DISATBL DC AL1(RCUCHAOF,RCUCHBOF,RCUCHCOF,RCUCHDOF) @V407438 00452600 CUCHENAB TM RCUSTAT,0 TEST PATH AVAILABILITY @V407438 00452800 EJECT 00453000 LINESET DS 0H @V200930 00454000 L R2,RDEVUSER LOAD VMBLOK FOR THIS LINE 00455000 C R2,ASYSVM SYSTEM STILL HAS IT ?? 00456000 BE REALCONT YES, SKIP IT @V200930 00457000 DROP R11 00458000 USING VMBLOK,R2 00459000 LA R0,27 SET UP LNG 00460000 MVC FREEMSG+19(8),VMUSER SET USERID @V200930 00461000 DROP R2 00462000 USING VMBLOK,R11 00463000 MVC FREEMSG+9(9),=CL9'LOGON AS' LINE LOGGED IN @V200930 00464000 B REALWRIT GO PRINT IT NOW 00465000 URSET MVC FREEMSG+9(7),=CL7'STARTED' SET MSG @V200930 00466000 TM RDEVFLAG,RDEVDRAN IS IT DRAINED ?? @V200930 00467000 BZ URSYS NO, DEV STARTED @V200930 00468000 MVC FREEMSG+9(7),=CL7'DRAINED' SET MSG @V200930 00469000 URSYS MVC FREEMSG+19(9),=CL9'SYSTEM' USER @V200930 00470000 MVC FREEMSG+28(8),=CL8'CLASS = ' SET MSG @V200930 00471000 MVC FREEMSG+36(4),RDEVCLAS SET CLASS @V200930 00472000 OC FREEMSG+36(4),BLANKS EDIT LINE @V200930 00473000 MVC FREEMSG+40(6),=CL6' NOSEP' SET NOSEP @V200930 00474000 TM RDEVFLAG,RDEVSEP IS IT SEP ?? @V200930 00475000 BZ *+10 NO, OK @V200930 00476000 MVC FREEMSG+40(3),BLANKS SET SEP @V200930 00477000 LA R0,46 SIZE @V200930 00478000 TM RDEVTYPC,CLASURI IS IT A READER ?? @V200930 00479000 BZ *+8 NO, SIZE IS 46 @V200930 00480000 LA R0,27 SHORTER MSG FOR READERS @V200930 00481000 CLI RDEVTYPE,TYP3800 IS IT A 3800 PRINTER ? @V60B9BA 00481200 BNE URSYS2 XFER IF NOT @V60B9BA 00481300 MVC FREEMSG+47(4),RDEVXSEP CHAR FOR SEP PAGE @V60B9BA 00481400 SR R1,R1 SET UP TO GET LPI FOR 3800 @V60B9BA 00481500 IC R1,RDEVFSEP FCB LINES/INCH @V60B9BA 00481600 CALL DMKCVTBD CONVERT TO EBCDIC @V60B9BA 00481700 STCM R1,B'0011',FREEMSG+52 INSERT IN MSG @V60B9BA 00481800 LA R0,55 EVEN LONGER LENGTH FOR 3800 @V60B9BA 00481900 URSYS2 LA R1,FREEMSG DATA @V60B9BA 00482000 BAL R3,STACK STACK LINE FOR OUTPUT @V200930 00483000 CLI RDEVTYPE,TYP3800 3800 PRINTER ? @V60B9BA 00483250 BNE URSYS3 XFER IF NOT @V60B9BA 00483300 MVI FREEMSG+9,C' ' CLEAR THE MESSAGE AREA @V60B9BA 00483350 MVC FREEMSG+10(45),FREEMSG+9 ... @V60B9BA 00483400 MVC FREEMSG+9(5),=C'FLASH' FLASH NAME @V60B9BA 00483450 MVC FREEMSG+15(4),RDEVOVLY ... @V60B9BA 00483500 MVC FREEMSG+21(5),=C'IMAGE' ACTIVE IMAGE LIBRARY @V60B9BA 00483550 MVC FREEMSG+27(8),RDEVIMAG ... @V60B9BA 00483600 MVC FREEMSG+37(4),=C'HOLD' ASSUME HOLD ON ERROR @V60B9BA 00483650 TM RDEVSTA2,RDEVPURG IS IT REALLY PURGE ? @V60B9BA 00483700 BZ *+10 XFER IF NOT @V60B9BA 00483750 MVC FREEMSG+37(5),=C'PURGE' MOVE IN THE PURGE @V60B9BA 00483800 LA R0,42 LENGTH OF LINE @V60B9BA 00483850 LA R1,FREEMSG ADDRESS OF DATA @V60B9BA 00483900 BAL R3,STACK STACK LINE FOR OUTPUT @V60B9BA 00483950 URSYS3 TM RDEVFLAG,RDEVACNT DOING ACCOUNTING CARDS ?? @V60B9BA 00484000 BO TESTINT YES, SKIP ACTIVE CHECK 00485000 L R2,RDEVSPL GET ACTIVE FILE CONTROL POINTER @V200930 00486000 LTR R2,R2 TEST FOR ACTIVE FILE @V200930 00487000 BZ TESTINT TEST FOR INT REQ @V200930 00488000 CLI 0(R2),X'FF' DOES REG 2 POINT TO SFBLOK ? @VA02207 00489000 BE URSYS1 YES -- GO SET UP DMKRSP CALL @VA02207 00490000 USING RSPLCTL,R2 @V200930 00491000 L R2,RSPSFBLK GET POINTER TO SFBLOK @V200930 00492000 DROP R2 @V200930 00493000 URSYS1 LR R7,R2 R7 POINTS TO SFBLOK FOR CALL @VA02207 00494000 CALL DMKRSPUR FORMAT MESSAGE FOR ACTIVE FILE @V200930 00495000 BAL R3,STACK STACK LINE FOR OUTPUT @V200930 00496000 B TESTINT TEST FOR INT REQ @V200930 00497000 EJECT 00498000 NOTURIO EQU * 00499000 SPACE 00500000 * RDEVFLAG SYS OWN MOUT DASD TAPE MEANING 00501000 * 0 0 1 X DEVICE FREE; VOLUME MOUNTED 00502000 * AFTER IPL OR DEVICE DETACHED 00503000 * 0 0 0 X DEVICE ATTACHED TO SYSTEM; NO LINES 00504000 * EXCEPT WHEN RDEVSER = BLANKS; DEVICE IS FREE 00505000 * 0 0 0 X DEVICE FREE 00506000 * 1 0 0 X DEV ATTACHED TO SYSTEM; WITH LINKS 00507000 * 1 0 0 X DEVICE ATTACHED TO SYSTEM 00508000 * 1 1 0 X DEV ATTACHED TO SYSTEM AND CPOWNED 00509000 SPACE 00510000 TM RDEVFLAG,RDEVMOUT DEV MOUNTED ?? @V200930 00511000 BO REALCONT NO - DEVICE IS FREE @V200820 00512000 LA R0,19 SET LINE SIZE @V200930 00513000 TM RDEVTYPC,CLASDASD IS IT DASD ?? @V200930 00514000 BZ NOVOLSER NO, NO VOLID @V200930 00515000 MVC FREEMSG+19(6),RDEVSER SET VOLID @V200930 00516000 LH R1,RDEVLNKS GET NUMBER OF USERS ON THIS DEVICE 00517000 CALL DMKCVTBD AND GO CONVERT IT. 00518000 STCM R1,7,FREEMSG+28 SET LINK COUNT @V200930 00519000 LA R0,31 LINE SIZE @V200930 00520000 CLC RDEVSER,BLANKS IS IT FREE ?? @V200930 00521000 BE REALCONT YES - SKIP IT @V200820 00522000 NOVOLSER MVC FREEMSG+9(8),=CL8'CP OWNED' @V200930 00523000 TM RDEVFLAG,RDEVOWN IS IT A CP OWNED VOLUME ? 00524000 BO REALWRIT IF YES,, PRINT IT 00525000 MVC FREEMSG+9(9),=CL9'CP SYSTEM' @V200930 00526000 TM RDEVFLAG,RDEVSYS IS IT SYSTEM ?? @V200930 00527000 BZ REALCONT NO -- CONTINUE TO NEXT DEVIC@V200820 00528000 REALWRIT LA R1,FREEMSG SET DATA ADDRESS @V200930 00529000 BAL R3,STACK STACK LINE FOR OUTPUT @V200930 00530000 TESTINT OI SAVEWRK1+3,REALFND FLAG DEVICE FOUND @V200930 00531000 TM RDEVSTAT,RDEVNRDY TEST FOR DEVICE READY @V200930 00532000 BZ REALCONT NO, GET NEXT DEVICE @V200930 00533000 MVC FREEMSG+9(7),=C'INT REQ' FLAG INT REQ @V200930 00534000 LA R0,16 SIZE @V200930 00535000 LA R1,FREEMSG DATA ADDRESS @V200930 00536000 CALL DMKQCNWT,PARM=NORET+ALARM INT REQ MSG @V200930 00537000 B REALCONT DO NEXT DEVICE @V200930 00538000 EJECT 00539000 RDEVATCH MVC FREEMSG+9(9),=CL9'ATTACH TO' @V200930 00540000 LH R1,RDEVATT LOAD VIRTUAL ADDRESS OF DEVICE 00541000 CALL DMKCVTBH CONVERT. 00542000 STCM R1,7,FREEMSG+28 VIRTUAL ADDRESS @V200930 00543000 DROP R11 00544000 L R2,RDEVUSER GET USERID FOR DEVICE 00545000 USING VMBLOK,R2 00546000 MVC FREEMSG+19(8),VMUSER ATTACHED USERID @V200930 00547000 DROP R2 00548000 USING VMBLOK,R11 00549000 LA R0,31 SET LNG OF LINE 00550000 LA R1,FREEMSG SET ADDRESS OF DATA @V200930 00551000 B REALWRIT GO PRINT IT 00552000 EJECT 00553000 SPECSET EQU * FORMAT OUTPUT FOR SPECIAL 3705 DEVICE @V200820 00554000 CLI RDEVTYPE,TYP3705 IS THIS A 3705 OR 3704 ? @V200820 00555000 BNE REALCONT NO -- SYSTEM WILL NOT USE IT@V200820 00556000 MVC FREEMSG+9(L'MSG3705),MSG3705 FORMAT THE OUTPUT @V200820 00557000 L R2,=A(DMKRIORN) ADDRESS OF CONTROLLER TABLE @V200820 00558000 L R14,0(0,R2) PICK UP COUNT OF ENTRIES @V200820 00559000 SPECSTL EQU * FIND THIS 370X IN THE TABLE @V200820 00560000 CH R3,6(0,R2) IS THIS THE ONE ? @V200820 00561000 BE SPECSTF YES -- @V200820 00562000 LA R2,4(0,R2) NEXT ENTRY @V200820 00563000 BCT R14,SPECSTL CONTINUE @V200820 00564000 B SPECSTN LEAVE FIELD BLANK IF NOT FOUND @V200820 00565000 SPECSTF EQU * FIGURE OUT 370X DEVICE CODE @V200820 00566000 SL R2,=A(DMKRIORN) COMPUTE DISPLACEMENT IN TABLE @V200820 00567000 SLL R2,10(0) SHIFT FOR '0000', '1000', ETC. @V200820 00568000 LR R1,R2 INTO GR1 FOR DMKCVT @V200820 00569000 CALL DMKCVTBH CONVERT TO PRINTABLE HEX @V200820 00570000 STCM R1,15,FREEMSG+13 SET IN THE OUTPUT LINE @V200820 00571000 SPECSTN EQU * @V200820 00572000 MVC FREEMSG+24(8),RDEVNCP MOVE IN RDEVBLOK NCPNAME@V200820 00573000 TM RDEVFLAG,RDEVLNCP IS THIS AN NCP ? @V200820 00574000 BZ SPECNCP NO -- LEAVE IT AS EMULATOR @V200820 00575000 MVC FREEMSG+19(3),=C'NCP ' @V200820 00576000 SPECNCP EQU * @V200820 00577000 TM RDEVFLAG,RDEVLCEP EMULATOR PROGRAM ACTIVE ? @V200820 00578000 BZ SPECCEP NO -- @V200820 00579000 MVC FREEMSG+19(3),=C'EP ' @V200820 00580000 SPECCEP EQU * @V200820 00581000 TM RDEVFLAG,RDEVLNCP+RDEVLCEP PARTITIONED EMULATOR@V200820 00582000 BNO SPECPEP NO --- @VM08589 00583000 MVC FREEMSG+19(3),=C'PEP ' @V200820 00584000 SPECPEP EQU * @V200820 00585000 TM RDEVFLAG,RDEVAUTO AUTOMATIC DUMP / RESTART ? @V200820 00586000 BO SPECWRT YES - O.K. AS IS @V200820 00587000 MVC FREEMSG+39(4),=C'OFF ' DUMP OFF @V200820 00588000 SPECWRT EQU * WRITE RESPONSE TO CONSOLE @V200820 00589000 LA R0,43 MESSAGE LENGTH @V200820 00590000 TM RDEVFLAG,RDEVSLOW NCP IN BUFFER SLOWDOWN MODE @V200820 00591000 BZ REALWRIT NO -- STACK THE MSG AS IS @V200820 00592000 LA R1,FREEMSG POINT TO THE MESSAGE DATA @V200820 00593000 BAL R3,STACK STACK THE LINE FOR LATER OUTPUT @V200820 00594000 L R1,FREEMSG+4 PICK UP 'CCU' FROM FIRST MESSAGE @V200820 00595000 L R15,=A(MSGSLOW) -> message text HRC065DK 00595100 MVC FREEMSG(L'MSGSLOW),0(R15) MOVE IN SLOWDOWN MSGHRC065DK 00596000 STCM R1,7,FREEMSG+16 PUT 'CCU' ADDRESS IN NEW MSG@V200820 00597000 LA R1,FREEMSG @V200820 00598000 LA R0,L'MSGSLOW MESSAGE LENGTH @V200820 00599000 CALL DMKQCNWT,PARM=NORET+ERRMSG+ALARM SEND THIS ONE@V200820 00600000 MVC FREEMSG(9),FREEMSG+11 MOVE 'TYPE RADDR' BACK @V200820 00601000 B TESTINT ...IN CASE OF 'INT REQ'@V200820 00602000 EJECT 00603000 QRYRSCAN LA R0,FRBUFSIZ BUFFER SIZE IN DOUBLE WORDS 00604000 CALL DMKFREE GO GET CORE 00605000 LR R9,R1 POINT R9 TO GOTTEN CORE 00606000 QRYLOOP LA R3,FREEMSG START OF MESSAGE AREA @V200930 00607000 LA R4,18 INCREMENT FOR FREE MSG @V200930 00608000 LA R5,FRMSGEND LOAD ADDRESS OF LAST MSG IN BUFFER 00609000 STM R3,R5,FRREGSAV SAVE FOR POSSIBLE LATER USE 00610000 MVI CQPFLAG,BIN0 ZERO FLAG @V3E7466 00610100 MVC FREEMSG(8),BLANKS CLEAR MSG AREA @V200930 00611000 MVC FREEMSG+8(9*8),FREEMSG .. @V200930 00612000 TM SAVEWRK1+3,DEVREQ SINGLE DEV REQUEST ?? @V200930 00613000 BO REALSAVE YES, DONT SEARCH @V200930 00614000 MVC CUINDSAV(2),FFS MOVE ALL ONES TO INDEX SAVE @V3E7466 00615000 LA R4,2 LOAD INCREMENT COUNT 00616000 SR R1,R1 ZERO INDEX FOR CHANNEL SEARCH 00617000 QRYRNCH L R10,ARIOCT ADDRESS OF CHANNEL INDEX TABLE @V200930 00618000 LA R5,30 LOAD END OF CHAN INDEX TABLE 00619000 LH R6,0(R1,R10) LOAD INDEX TO NEXT CHANNEL @V200930 00620000 LTR R6,R6 DOES CHAN EXIST ? 00621000 BM QRYRCHI NO, TRY NEXT 00622000 A R6,ARIOCH POINT R6 TO RCHBLOK 00623000 USING RCHBLOK,R6 00624000 MVC CUINDSAV(4),FFS ZIP LAST CU INDEX PROCESSED @V407438 00624500 SR R2,R2 ZERO INDEX FOR CONTROL UNIT SEARCH 00625000 QRYRNCU LA R5,62 POINT TO END OF CU INDEX @V200930 00626000 LH R7,RCHCUTBL(R2) INDEX TO NEXT CONTROL UNIT @V200930 00627000 LTR R7,R7 DOES CONTROL UNIT EXIST ? 00628000 BM QRYRCUI NO, TRY NEXT 00629000 CH R7,CUINDSAV IS THIS INDEX SAME AS LAST ONE ? 00630000 BE QRYRCUI YES - BYPASS THIS ONE SINCE ALREADY DONE 00631000 STH R7,CUINDSAV NO - SAVE FOR NEXT GO AROUND 00632000 A R7,ARIOCU POINT R7 TO RCUBLOK 00633000 USING RCUBLOK,R7 00634000 SR R3,R3 ZERO INDEX FOR DEVICE TABLE INDEX 00635000 QRYRNDV LA R5,30 SET R5 TO END OF DEVICE INDEX TABLE 00636000 LH R8,RCUDVTBL(R3) LOAD NEXT DEVICE 00637000 LTR R8,R8 DOES DEVICE EXIST ? 00638000 BM QRYRDVI NO, TRY NEXT 00639000 SLL R8,3(0) CONVERT TO BYTE INDEX @V200820 00640000 A R8,ARIODV YES, POINT R8 TO RDEVBLOK 00641000 USING RDEVBLOK,R8 00642000 SPACE 00643000 * FOLLOWING CODE TO CHEK IF UNIT IS OF PROPER CLASS 00644000 SPACE 00645000 LA R0,CLASDASD*256+TYP2305 CHECK FOR FIXED-HEAD @VM08747 00646000 CH R0,RDEVTYPC . . .MULTIPLE-EXPOSURE DRUM @VM08747 00647000 BNE CHKQRYT NO -- CONTINUE NORMALLY @VM08747 00648000 TM RDEVADD+1,X'07' SUBSIDIARY EXPOSURE ? @VM08747 00649000 BNZ QRYRDVI YES - SKIP OVER IT @VM08747 00650000 CHKQRYT EQU * @VM08747 00651000 TM SAVEWRK1,QUERYALL IS IT ALL ?? @V200930 00652000 BO REALSAVE YES,, PROCESS IT 00653000 TM SAVEWRK1,CLASURI+CLASURO IS THIS A UR REQUEST? 00654000 BZ TYPCCHEK NO GO CHEK FOR OTHER MATCH 00655000 TM RDEVTYPC,CLASURI+CLASURO IS THIS DEVICE UR ? 00656000 BZ QRYRDVI NO - GO TRY NEXT DEVICE 00657000 B REALSAVE UNIT RECORD DEV. HAS BEEN FOUND. 00658000 TYPCCHEK CLC SAVEWRK1(1),RDEVTYPC PROPER CLAS OF DEVICE ? 00659000 BNE QRYRDVI NOT PROPER CLASS GO TRY AGAIN 00660000 TM SAVEWRK1+3,DASDVOL SEARCH BY VOLID ?? @V200930 00661000 BZ REALSAVE NO, CONT @V200930 00662000 CLC RDEVSER,SAVEWRK2 IS THIS IT ?? @V200930 00663000 BNE QRYRDVI NO, CONT @V200930 00664000 REALSAVE STM R1,R8,REGSAVE SAVE REGS FOR CALL @V200930 00665000 TM SAVEWRK1+1,VIRTUAL+SYSVIRT 3330V QUERY @V60B6B8 00665010 BZ REALSAV1 NO, CONTINUE @V60B6B8 00665020 CLI RDEVTYPE,TYP3330 IS RDEVICE A 3330 @V60B6B8 00665030 BNE QRYRDVI GET NEXT DEVICE @VMI2000 00665040 TM RDEVFTR,SYSVIRT IS RDEV A SYSVIRT @V60B6B8 00665050 BO TSTSYSV YES @V60B6B8 00665060 TM RDEVFTR,VIRTUAL IS RDEV A VIRTUAL @V60B6B8 00665070 BZ QRYRDVI NO, RDEV IS NOT A 3330V @V60B6B8 00665080 TM SAVEWRK1+1,VIRTUAL WAS REQUEST FOR VIRTUAL @V60B6B8 00665090 BZ QRYRDVI NO, GET NEXT DEVICE @V60B6B8 00665100 B REALSAV1 DEV TYPE MATCH, CONTINUE @V60B6B8 00665110 TSTSYSV EQU * @V60B6B8 00665120 TM SAVEWRK1+1,SYSVIRT WAS REQUEST FOR SYSVIRT @V60B6B8 00665130 BZ QRYRDVI NO, GET NEXT DEVICE @V60B6B8 00665140 REALSAV1 EQU * GO PUT OUT MSG @V60B6B8 00665150 TM SAVEWRK1+3,ACTDEV ACTIVE DEVICE ?? @V200930 00666000 BO REALFMT YES, DO IT @V200930 00667000 B FREEFMT DO OFFLINE AND FREE @V200930 00668000 SPACE 00669000 REALCONT LM R1,R8,REGSAVE RESTORE REGS FOR SEARCH @V200930 00670000 TM SAVEWRK1+3,DEVREQ DEVICE REQUEST ?? @V200930 00671000 BO TSTFROF YES, TEST FOR LOOP @V200930 00672000 QRYRDVI BXLE R3,R4,QRYRNDV INCREMENT THRU DEVICES 00673000 LA R5,62 POINT R5 TO END OF CU INDEX 00674000 QRYRCUI BXLE R2,R4,QRYRNCU INCREMENT THRU CONTROL UNITS 00675000 LA R5,30 POINT R5 TO END OF CH INDEX 00676000 QRYRCHI BXLE R1,R4,QRYRNCH INCREMENT THRU CHANNELS 00677000 SPACE 00678000 * 00679000 * WHEN FALL THRU HERE HAVE SCANNED ALL REAL DEVICES 00680000 * 00681000 * 00682000 SPACE 00683000 TSTFROF TM SAVEWRK1+3,FREEDEV+OFFDEV FREE OR OFF REQ ?? @V200930 00684000 BZ QRYNXT NO, TEST FOR MORE @V200930 00685000 LM R3,R5,FRREGSAV GET FREE MESSGAE REGISTERS 00686000 LA R2,FREEMSG LOAD START OF MESSAGE AREA 00687000 CR R2,R3 ANYTHING TO OUTPUT ? 00688000 BE QRYNXT NO, TEST FOR MORE @V200930 00689000 S R3,F2 BACK TO COMMA @V200930 00690000 MVI 0(R3),C' ' EDIT OUT COMMA @V200930 00691000 SR R3,R2 COMPUTE MESSAGE LENGTH 00692000 LR R0,R3 MESSAGE LENGTH TO R0 00693000 LA R1,FREEMSG ADDRESS OF MESSAGE 00694000 BAL R3,STACK STACK OUTPUT LINE @V200930 00695000 QRYNXT TM SAVEWRK1+3,ACTDEV DONE ACTIVE DEVS ?? @V200930 00696000 BZ QRYN1 NO, TEST MORE @V200930 00697000 TM SAVEWRK1+3,FREEDEV+OFFDEV MORE TO DO ?? @V200930 00698000 BZ QRYRFRET NO, DONE @V200930 00699000 NI SAVEWRK1+3,X'FF'-ACTDEV DONE THESE @V200930 00700000 B TSTDFND TEST FOR DEV REQ FOUND @V200930 00701000 QRYN1 TM SAVEWRK1+3,FREEDEV DONE FREE ?? @V200930 00702000 BZ QRYRFRET NO, DONE @V200930 00703000 TM SAVEWRK1+3,OFFDEV OFFLINE TO DO ?? @V200930 00704000 BZ QRYRFRET NO, DONE @V200930 00705000 NI SAVEWRK1+3,X'FF'-FREEDEV DONE THESE @V200930 00706000 TSTDFND TM SAVEWRK1+3,DEVREQ+REALFND FOUND DEV REQ ?? @V200930 00707000 BO QRYRFRET YES, LEAVE @V200930 00708000 B QRYLOOP GO DO OFFLINE @V200930 00709000 SPACE 00710000 QRYRFRET TM CQPBITS,DEVREQ+RANGE RANGE? @V3E7466 00711000 BZ FRETBUF NO, RELEASE STORAGE BUFFER @V3E7466 00711100 NI SAVEWRK1+3,X'FF'-REALFND TURN OFF 'FOUND' BIT @V3E7466 00711200 B NEXTADDR PROCESS NEXT ADDR IN RANGE @V3E7466 00711300 FRETBUF LA R0,FRBUFSIZ LOAD BUFFER SIZE @V3E7466 00711400 LR R1,R9 POINT TO GOTTEN CORE 00712000 CALL DMKFRET GO RELEASE CORE 00713000 TM SAVEWRK1+3,REALFND WAS ANY DEVICE FOUND ? 00714000 BO QRYEXIT ALL FINISHED - RETURN @V3E7466 00715000 LA R0,NFMSGL SIZE @V200930 00716000 LA R1,NFMSG MESSAGE @V200930 00717000 MVC NFSRCH,BLANKS CLEAR @V200930 00718000 MVC NFSRCH(5),=CL5'FREE ' FREE SEARCH @V200930 00719000 TM SAVEWRK1+3,FREEDEV FREE RQE ?? @V200930 00720000 BO MVTAPES YES, CONT @V200930 00721000 MVC NFSRCH(7),=CL7'ATTACH' ATTACH SEARCH @V200930 00722000 TM SAVEWRK1+3,ATTDEV ATT REQ ?? @V200930 00723000 BO MVTAPES YES @V200930 00724000 MVC NFSRCH(7),=CL7'ACTIVE ' ACTIVE SEARCH @V200930 00725000 TM SAVEWRK1+3,ACTDEV ACTIVE ?? @V200930 00726000 BO MVTAPES YES, CONT @V200930 00727000 MVC NFSRCH,=CL8'OFFLINE ' OFFLINE SEARCH @V200930 00728000 TM SAVEWRK1+3,OFFDEV OFFLINE ?? @V200930 00729000 BO MVTAPES YES, CONT @V200930 00730000 MVC NFSRCH,=CL8'DEVICES' ALL SERACH @V200930 00731000 MVTAPES MVC 0(5,R1),=C'TAPE ' ASSUME TAPES @V200930 00732000 CLI SAVEWRK1,CLASTAPE TAPE ?? @V200930 00733000 BE QRYWRIT @V200930 00734000 MVC 0(5,R1),=CL5'DASD ' @V200930 00735000 TM SAVEWRK1+3,DASDVOL IS IT VOLID SEARCH ?? @V200930 00736000 BZ *+10 NO, CONT @V200930 00737000 MVC NFSRCH,SAVEWRK2 GET VOLID @V200930 00738000 CLI SAVEWRK1,CLASDASD DASD ?? @V200930 00739000 BE QRYWRIT @V200930 00740000 MVC 0(5,R1),=CL5'LINE ' @V200930 00741000 CLI SAVEWRK1,CLASTERM LINE ?? @V200930 00742000 BE QRYWRIT @V200930 00743000 MVC 0(5,R1),=CL5'UR ' @V200930 00744000 CLI SAVEWRK1,CLASURO+CLASURI UR ?? @V200930 00745000 BE QRYWRIT @V200930 00746000 MVC 0(5,R1),=CL5'GRAF ' ASSUME GRAF CLASS @V200930 00747000 CLI SAVEWRK1,CLASGRAF IS IT GRAF ?? @V200930 00748000 BE QRYWRIT YES @V200930 00749000 MVC 0(5,R1),=CL5'ALL ' @V200930 00750000 B QRYWRIT SEND MESSAGE AND RETURN 00751000 SPACE 00752000 QRYCOMP CLC 0(0,R3),0(R1) 00753000 SPACE 00754000 NFMSG DC CL5' ' @V200930 00755000 NFSRCH DC CL8' ' @V200930 00756000 DC C'NOT FOUND' @V200930 00757000 NFMSGL EQU *-NFMSG @V200930 00758000 EJECT 00759000 FREEFMT TM RCUTYPE,RCUSUB IS THIS A SUBORDINATE? @V407438 00759050 BZ *+8 NOPE, SKIP @V407438 00759100 L R7,RCUPRIME YES, GET PRIMARY BLOCK FOR STATUS@V407438 00759150 LA R3,RCUCHA ADDRESS OF THE FIRST CHANNEL @V407438 00759200 LA R4,4 INCREMENT @V407438 00759250 LA R5,RCUCHD ADDRESS OF THE LAST CHANNEL @V407438 00759300 NEXTCHB CL R6,0(R3) R6 REPRESENT THIS CU -> CH PATH? @V407438 00759350 BE *+8 YES, PATH FOUND, BR. @V407438 00759400 BXLE R3,R4,NEXTCHB NOPE, LOOK AT ALL CHANNEL PATHS @V407438 00759450 LA R4,RCUCHA ADDRESS OF THE BEGINNING AGAIN @V407438 00759500 SLR R3,R4 FIND HOW FAR DOWN WE FOUND IT @V407438 00759550 SRL R3,2 CONVERT TO INDEX FROM 0 TO 3 @V407438 00759600 IC R5,DISATBL(R3) GET CU->CH PTH BIT @V407438 00759650 EX R5,CUCHENAB (TM RCUSTAT,RCUCHXOF) CH PTH OFF?@V407438 00759700 LM R3,R5,FRREGSAV GET REGS SAVED @V407438 00759750 BO FROFF YES, BR. CHECK FOR CONTINUATION @V407438 00759800 TM RCUSTAT,RCUDISA IS THE CONTROL UNIT OFFLINE? @V407438 00759850 BO FROFF YES, BR. CHECK FOR CONTINUATION @V407438 00759900 TM RDEVSTAT,RDEVDISA IS THE DEVICE OFFLINE? @V407438 00759950 BO FROFF YES, BR. CHECK FOR CONTINUATION @V407438 00760000 TM RDEVSTAT,RDEVDED DEDICATED ?? @V200930 00761000 BO REALCONT YES, SKIP @V200930 00762000 TM SAVEWRK1+3,FREEDEV DOING FREE ?? @V200930 00765000 BZ REALCONT NO, SKIP THIS ONE @V200930 00766000 TM RDEVTYPC,CLASTERM+CLASGRAF IS IT A TERMINAL ?? @V200930 00767000 BNZ FRTERM YES, CHECK @V200930 00768000 TM RDEVTYPC,CLASURO+CLASURI IS IT UNIT RECORD ?? @V200930 00769000 BNZ FRUR YES, CHECK @V200930 00770000 TM RDEVFLAG,RDEVSYS+RDEVOWN SYSTEM OR OWNED ?? 00771000 BNZ REALCONT YES, SKIP @V200930 00772000 MVC 9(4,R3),=CL5'FREE ' FLAG FREE @V200930 00773000 TM RDEVTYPC,CLASDASD IS IT DASD ?? @V200930 00774000 BZ FRADD NO, CONT @V200930 00775000 CLC RDEVSER,BLANKS IS IT MOUNTED ?? @V200930 00776000 BE FRADD NO, CONT @V200930 00777000 MVC 9(6,R3),RDEVSER SET VOLID @V200930 00778000 B FRADD CONT @V200930 00779000 SPACE 00780000 FROFF TM SAVEWRK1+3,FREEDEV DOING FREE DEV ?? @V200930 00781000 BO REALCONT YES, SKIP THIS ONE @V200930 00782000 MVC 9(8,R3),=CL8'OFFLINE ' FLAG OFFLINE @V200930 00783000 B FRADD CONT @V200930 00784000 SPACE 00785000 FRTERM L R2,RDEVUSER GET USERID VMBLOK @V200930 00786000 C R2,ASYSVM IS IT SYSTEM OWNED ?? @V200930 00787000 BNE REALCONT NO, SKIP THIS ONE @V200930 00788000 MVC 9(8,R3),=CL8'ENABLED ' @V200930 00789000 TM RDEVFLAG,RDEVENAB IS IT ENABLED ?? @V200930 00790000 BNO FRDISB BRANCH TO DISABLE TEST @VA15324 00790100 TM RDEVFLAG,RDEVDISB DEVICE IS ENABLED, NOW @VA15324 00790200 * TEST FOR DISABLE PENDING 00790300 BNO FRADD DISABLE NOT PENDING, BRANCH @VA15324 00790400 MVC 9(8,R3),=CL8'DSBLPND ' DISABLE PENDING @VA15324 00790500 B FRADD BRANCH WITH DISABLE MESSAGE @VA15324 00790600 FRDISB EQU * DISABLE TEST @VA15324 00791100 MVC 9(8,R3),=CL8'DISABLED' @V200930 00792000 B FRADD CONT @V200930 00793000 SPACE 00794000 FRUR EQU * @VA03049 00795000 TM RDEVFLAG,RDEVDRAN IS IT DRAINED ?? @V200930 00796000 BZ REALCONT NO, NOT FREE @V200930 00797000 MVC 9(7,R3),=CL7'DRAINED' INDICATE DRAINED @VA03049 00798000 FRADD CALL DMKSCNRA GET CCU DEVICE ADDRESS @V407438 00799000 CALL DMKCVTBH CONVERT @V200930 00800000 STCM R1,7,5(R3) SET ADDRESS @V200930 00801000 CALL DMKSCNRN GET DEV NAME @V200930 00802000 STCM R1,15,0(R3) SET NAME @V200930 00803000 MVI 16(R3),C',' EDITING COMMA @V200930 00804000 LA R3,18(R3) BUMP POINTER @V200930 00805000 CLR R3,R5 AT END OF BUFFER ?? @V200930 00806000 BL FRST NO, CONT @V200930 00807000 S R3,F2 BACK TO COMMA @V200930 00808000 MVI 0(R3),C' ' EDIT OUT COMMA @V200930 00809000 LA R0,70 SIZE @V200930 00810000 LA R1,FREEMSG DATA ADDRESS @V200930 00811000 BAL R3,STACK STACK LINE FOR OUTPUT @V200930 00812000 MVC FREEMSG(8),BLANKS CLEAR FIELD @V200930 00813000 MVC FREEMSG+8(9*8),FREEMSG .. @V200930 00814000 LA R3,FREEMSG RE-INITIALIZE @V200930 00815000 LA R4,18 .. @V200930 00816000 LA R5,FRMSGEND .. @V200930 00817000 FRST STM R3,R5,FRREGSAV SAVE NEW VALUES @V200930 00818000 OI SAVEWRK1+3,REALFND FREE DEV FOUND @V200930 00819000 B REALCONT CONT @V200930 00820000 DROP R6,R7,R8 @V3E7466 00821000 EJECT 00822000 * 00823000 * ROUTINE TO STACK OUTPUT LINES ON VMBLOK 00824000 * THE LINES WILL BW PRINTED BY DMKCFM ON RETURN 00825000 * 00826000 STACK LR R4,R0 GET LINE LENGTH @V200930 00827000 LR R5,R1 GET BUFFER ADDRESS @V200930 00828000 LA R0,7(R4) ROUND UP TO DBL WORD @V200930 00829000 SRL R0,3 GET SIZE IN DBL WORDS @V200930 00830000 A R0,F1 ONE MORE FOR CHAINING @V200930 00831000 CALL DMKFREE GET STACK BUFFER @V200930 00832000 MVI 0(R1),BIN0 ZERO ERROR INDICATOR @V3E7466 00832100 STH R4,4(R1) SAVE LINE SIZE @V200930 00833000 STH R0,6(R1) SAVE BUFFER SIZE @V200930 00834000 BCTR R4,R0 DECREMENT FOR EXECUTE @V200930 00835000 TM CQPBITS,RANGE RANGE PROCESSING @V3E7466 00836000 BZ EXECUTE NO, NO CHANCE FOR ERROR MSG @V3E7466 00836100 TM CQPFLAG,CQPERR IS THIS ERROR MSG @V3E7466 00836200 BZ EXECUTE NO, NORMAL STACK @V3E7466 00836300 MVI 0(R1),CQPERR IND. ERR. MSG IN STACK BUFFER @V3E7466 00836400 EXECUTE EX R4,MVCSTK MOVE DATA TO STACK BUFFER @V3E7466 00836500 SR R0,R0 CLEAR @V200930 00837000 STCM R0,B'0111',1(R1) PRESERVE CQPERR FLAG @V3E7466 00838000 LA R2,VMSTKO GET OUTPUT STACK POINTER @V200930 00839000 STKLOOP EQU * @VA09404 00840000 ICM R4,B'0111',1(R2) GET PTR TO STACK BUFFER @V3E7466 00840100 BZ CHAIN FOUND END, CHAIN THIS BUFFER @V200930 00842000 LR R2,R4 POINT TO NEXT BUFFER @V200930 00843000 B STKLOOP GO FIND END OF STACK @V200930 00844000 CHAIN STCM R1,B'0111',1(R2) CHAIN AT END @V3E7466 00845000 BR R3 RETURN @V200930 00846000 * 00847000 MVCSTK MVC 8(*-*,R1),0(R5) EXECUTED FOR STACK BUFFER MOVE @V200930 00848000 EJECT 00849000 LNKREQ EQU X'80' INDICATES QUERY LINK REQUEST 00850000 SYSREQ EQU X'40' INDICATES QUERY SYSTEM REQUEST 00851000 LNKDONE EQU X'20' INDICAYES COMPLETION OF VDEVLINK CHAIN 00852000 LNKFND EQU X'10' INCATES AT LEAST 1 LINK TO DEVICE 00853000 TDSK EQU X'08' SEARCH FOR TDSK ALLOCATED @V200930 00854000 SPACE 2 00855000 QRYLINK OI SAVEWRK1,LNKREQ INDICATE A QUERY LINK REQUEST 00856000 B LNKDEV 00857000 QRYTDSK OI SAVEWRK1,TDSK FLAG TO SEARCH FOR TDSK ALLOCATED@V200930 00858000 B LNKPROC PROCESS @V200930 00859000 SPACE 00860000 QRYSYS OI SAVEWRK1,SYSREQ INDICATE A QUERY SYSTEM REQUEST 00861000 SPACE 00862000 LNKDEV CALL DMKSCNFD GET ARGUMENT 00863000 BNZ CHK022 ERROR, IF ARGUMENT MISSING 00864000 STM R0,R1,SAVEWRK8 SAVE LENGTH AND ADDRESS FOR LATER 00865000 CL R0,F3 CAN'T HAVE MORE THAN THREE DIGITS 00866000 BH CHK022 AND STILL BE A VALID ADDRESS 00867000 CALL DMKCVTHB CONVERT DEVICE ADDRESS TO BINARY 00868000 BNZ CHK022 ERROR, IF NOT VALID HEX CHARACTORS 00869000 TM SAVEWRK1,SYSREQ IS REQUEST FOR "SYSTEM" ? 00870000 BO SCANSYS YES, TAKE THE BRANCH 00871000 CALL DMKSCNVU IS THIS A VALID VIRTUAL DEVICE ? 00872000 BNZ CQP040 ERROR, IF NOT 00873000 USING VDEVBLOK,R8 ADDRESSABILITY 00874000 CLI VDEVTYPC,CLASDASD DEVICE MUST BE DASDI 00875000 BNE CQP006 ERROR, IF NOT A DASD DEVICE 00876000 L R3,VDEVREAL LOAD ADDRESS OF RDEVBLOK 00877000 ST R3,SAVEWRK3 SAVE RDEVBLOK ADDRESS @V200930 00878000 L R5,VDEVRELN GET DISK RELOCATION AND SIZE @VA07972 00879100 ST R5,SAVEWRK5 SAVE RELOCATION @V200930 00880000 B LNKPROC CONTINUE 00881000 SPACE 00882000 CHK022 TM SAVEWRK1,SYSREQ SYSTEM REQUEST ???? 00883000 BO CQP021 SEND 021E MESSAGE IF IT IS 00884000 B CQP022 ELSE - SEND 022 MESSAGE 00885000 SPACE 00886000 DROP R8 00887000 SPACE 00888000 SCANSYS CALL DMKSCNRU IS DEVICE VALID 00889000 BNZ CQP040 ERROR, IF CONTROL BLOCKS NOT FOUND 00890000 USING RDEVBLOK,R8 ADDRESSABILITY 00891000 CLI RDEVTYPC,CLASDASD DEVICE MUST BE DASD 00892000 BNE LNKERR ERROR, IF NOT. 00893000 TM RDEVFLAG,RDEVOWN+RDEVSYS ERROR IF NOT CP VOLUME. 00894000 BZ LNKERR BRANCH IF ERROR. 00895000 ST R8,SAVEWRK3 SAVE RDEVBLOK ADDRESS @V200930 00896000 SPACE 00897000 LNKPROC LA R0,LINKBSIZ GET SIZE OF BUFFER NEEDED. 00898000 CALL DMKFREE CALL DMKFREE 00899000 LR R6,R1 SAVE ADDRESS OF BUFFER IN GPR 6 00900000 ST R6,SAVEWRK8 REMEMBER BUFFER START @V200930 00901000 USING LINKBUF,R6 ADDRESSABAILITY 00902000 MVI LINKBUF,C' ' CLEAR FIRST POSITION OF BUFFER. 00903000 MVC LINKBUF+1(79),LINKBUF CLEAR BUFFER @V200930 00904000 ST R6,SAVEWRK6 SAVE BUFFER ADDRESS @V200930 00905000 LA R7,VDEVSIZE*8 R7 = SIZE IN BYTES OF 1 VDEVBLOK 00906000 LR R10,R11 LOAD ADDR. OF 1'ST VMBLOK TO CHECK 00907000 DROP R11 00908000 USING VMBLOK,R10 ADDRESSABILITY 00909000 LINKLCNT LH R9,VMDVCNT LOAD COUNT OF VDEVBLOKS 00910000 LTR R9,R9 ANY BLOCKS FOR THIS USER. 00911000 BNP LINKNUSR IF NOT, GET NEXT USER. 00912000 L R8,VMDVSTRT LOAD ADDRESS OF 1'ST VDEVBLOK. 00913000 USING VDEVBLOK,R8 ADDRESSABILITY 00914000 LINKCKAD TM VDEVADD,X'80' VALID VDEVBLOK ? 00915000 BO LINKNVDV IF INVALID, SKIP IT AND GET NEXT ONE. 00916000 TM VDEVTYPC,CLASDASD IS IT DASD ?? @V200930 00917000 BZ LINKNVDV NO, NEXT DEVICE @V200930 00918000 TM SAVEWRK1,TDSK LOOKING FOR TDSK ?? @V200930 00919000 BO LINKFIND YES, CHECK FURTHER @V200930 00920000 L R3,VDEVREAL GET RDEVBLOK ADDRESS @V200930 00921000 CL R3,SAVEWRK3 IS IT THE ONE WE ARE LOOKING @V200930 00922000 * FOR ?? 00923000 BE LINKFIND YES, PROCESS IT. 00924000 LINKNVDV AR R8,R7 ADD SIZE OF ONE VDEVBLOK 00925000 BCT R9,LINKCKAD ITERATE THRU ALL VDEVBLOKS 00926000 LINKNUSR L R10,VMPNT GET NEXT USER IN CHAIN OF VMBLOKS. 00927000 CR R10,R11 ARE WE AT THE END OF THE CHAIN ? 00928000 BNE LINKLCNT IF NOT, PROCESS NEXT DEVBLOK. 00929000 OI SAVEWRK1,LNKDONE INDICATE ALL VDEVBLOK HAVE BEEN USE 00930000 B LINKPRT PRINT THIS LINE AND EXIT. 00931000 SPACE 1 00932000 LINKFIND TM SAVEWRK1,SYSREQ IS REQUEST FOR QUERY SYSTEM ? 00933000 BO LINKEQAL IF YES, A MATCH HAS BEEN FOUND. 00934000 TM SAVEWRK1,TDSK SEARCH FOR TDSK ?? @V200930 00935000 BZ LINKREL NO, GET RELOCATION @V200930 00936000 TM VDEVFLAG,VDEVTDSK IS THIS A TDSK ?? @V200930 00937000 BZ LINKNVDV NO, GET NEXT DEVICE @V200930 00938000 B LINKEQAL YES, PROCESS IT @V200930 00939000 LINKREL DS 0H @V200930 00940000 L R2,VDEVRELN LOAD RELO FACTOR AND SIZE FOR @VA07972 00941100 * COMP 00941200 C R2,SAVEWRK5 DO RELO AMD SIZE MATCH? @VA07972 00942100 BE LINKEQAL IF YES, PROCESS IT. 00943000 B LINKNVDV 00944000 SPACE 2 00945000 LINKEQAL OI SAVEWRK1,LNKFND INDICATE A MATCH HAS BEEN FOUND 00946000 L R6,SAVEWRK6 SET BUFFER ADDRESS @V200930 00947000 MVC LINKBUF(8),VMUSER MOVE IN USERID 00948000 LR R11,R10 LOAD ADDRESS OF VMBLOK OF THIS DEV. 00949000 CALL DMKSCNVD GET VIRTUAL DEV ADDRESS IN GPR 1 00950000 L R11,SAVER11 RESTORE TRUE VMBLOK ADDRESS 00951000 L R6,SAVEWRK6 RESTORE BUFFER ADDRESS @V200930 00952000 CALL DMKCVTBH CONVERT TO PRINTABLE CHARS. 00953000 STCM R1,7,LINKBUF+9 DEV IN MSG @V200930 00954000 MVC LINKBUF+13(3),=CL3'R/O' ASSUME READ ONLY @V200930 00955000 TM VDEVFLAG,VDEVRDO IS IT A R/O DASD UNIT 00956000 BO *+8 IF YES BRANCH 00957000 MVI LINKBUF+15,C'W' FLAG WRITE STATUS @V200930 00958000 MVI LINKBUF+16,C',' EDIT COMMA @V200930 00959000 TM VDEVFLAG,VDEVTDSK IS THIS A TDSK ?? @V200930 00960000 BZ INDEX NO, INDEX REG @V200930 00961000 LH R1,VDEVBND GET NUMBER OF CYLINDERS @V200930 00962000 CALL DMKCVTBD CONVERT @V200930 00963000 STCM R1,7,LINKBUF+13 PUT IN MESSAGE @V200930 00964000 INDEX LA R6,18(R6) NEXT BUFFER POSITION @V200930 00965000 ST R6,SAVEWRK6 SAVE BUFFER ADDRESS @V200930 00966000 L R7,SAVEWRK8 GET BUFFER START ADDRESS @V200930 00967000 LA R7,72(R7) BUFFER END ADDRESS @V200930 00968000 CR R6,R7 AT END YET ?? @V200930 00969000 BNL LINKPRT YES, PRINT IT @V200930 00970000 LA R7,VDEVSIZE*8 SET INDEX @V200930 00971000 B LINKNVDV GET NEXT VDEVBLOK IN THE LIST 00972000 * 00973000 * ON ENTRY HERE GPR 7 = LENGTH OF PRINT LINE + 1. 00974000 * 00975000 LINKPRT L R0,SAVEWRK6 GET BUFFER ADDRESS @V200930 00976000 S R0,SAVEWRK8 MINUS BUFFER START @V200930 00977000 BZ LINKEXIT EXIT, IF NO LINE TO OUTPUT. 00978000 BCTR R0,R0 DECREMENT LINE LENGTH BY - 1. 00979000 L R3,SAVEWRK6 LAST BUFFER POSITION @V200930 00980000 S R3,F2 DECREMENT BUFFER POSITION BY TWO BYTES. 00981000 MVI 0(R3),C' ' REMOVE THE LAST COMMA INSERTED 00982000 L R1,SAVEWRK8 GET BUFFER ADDRESS @V200930 00983000 BAL R3,STACK STACK FOR OUTPUT @V200930 00984000 L R6,SAVEWRK8 GET BUFFER START @V200930 00985000 MVI LINKBUF,C' ' CLEAR FIRST BYTE OF BUFFER. 00986000 MVC LINKBUF+1(79),LINKBUF CLEAR @V200930 00987000 TM SAVEWRK1,LNKDONE HAVE ALL VDEVBLOKS BEEN SCANNED ? 00988000 BO LINKEXIT IF YES, EXIT. 00989000 ST R6,SAVEWRK6 SET BUFFER START ADDRESS @V200930 00990000 LA R7,VDEVSIZE*8 SET INDEX @V200930 00991000 B LINKNVDV LOOK FOR MORE VDEVBLOKS. 00992000 SPACE 00993000 LINKEXIT TM SAVEWRK1,LNKFND WERE ANY LINKS FOUND ? 00994000 BO LINKFRET IF YES, EXIT 00995000 LA R0,NFMSGL SET SIZE @V200930 00996000 LA R1,NFMSG MESSAGE ADDRESS @V200930 00997000 MVC NFMSG,=CL5'DASD ' DSAD DEVICE ONLY @V200930 00998000 MVC NFSRCH,BLANKS CLEAR @V200930 00999000 MVC NFSRCH(6),=CL6'LINKS' ASSUME LINKS @V200930 01000000 TM SAVEWRK1,LNKREQ LINK REQUEST ?? @V200930 01001000 BO LNKCALL YES @V200930 01002000 MVC NFSRCH(6),=CL6'MDISKS' ASSUME SYSTEM @V200930 01003000 TM SAVEWRK1,SYSREQ SYSTEM SEARCH ?? @V200930 01004000 BO LNKCALL YES @V200930 01005000 MVC NFSRCH(6),=CL6'TDSKS' TDSK SEARCH @V200930 01006000 LNKCALL DS 0H @V200930 01007000 CALL DMKQCNWT,PARM=NORET 01008000 SPACE 01009000 LINKFRET L R1,SAVEWRK8 GET BUFFER ADDRESS @V200930 01010000 LA R0,LINKBSIZ AND ALSO ITS SIZE 01011000 CALL DMKFRET FRET STORAGE. 01012000 B QRYEXIT EXIT 01013000 SPACE 2 01014000 DROP R6 01015000 DROP R10 01016000 USING VMBLOK,R11 01017000 EJECT 01018000 CQP003 LA R2,RC3 ERROR RETURN CODE = 3 @V3E7466 01019000 B CALLERM .... 01020000 SPACE 01021000 CQP006 LA R2,RC6 ERROR RETURN CODE = 6 @V3E7466 01022000 LM R0,R1,SAVEWRK8 LOAD LENGTH AND ADDRESS OF BAD ARG. 01023000 B CALLERM .... 01024000 SPACE 01025000 CQP021 LA R2,RC21 ERROR RETURN CODE = 21 @V3E7466 01026000 B NOVAR .... 01027000 SPACE 01028000 CQP021A LR R0,R6 GET COUNT OF INVALID PARM @V407490 01028100 LA R1,1(,R2) POINT TO INVALID PARM @V407490 01028200 LA R2,21 LOAD ERROR CODE @V407490 01028300 B CALLERM @V407490 01028400 SPACE 01028500 CQP022 LA R2,RC22 ERROR RETURN CODE = 22 @V3E7466 01029000 B NOVAR .... 01030000 SPACE 01031000 CQP023 LA R2,RC23 ERROR RETURN CODE = 23 @V3E7466 01032000 B NOVAR @V200930 01033000 CQP040A EQU * @VA08691 01033010 TM SAVEWRK1+1,PASS1 IS THIS THE FIRST MESSAGE? @VA08691 01033020 BO CQP040B NO - WE HAVE A MSG AREA @VA08691 01033030 OI SAVEWRK1+1,PASS1 SET MSG AREA FLAG @VA08691 01033040 LA R0,FRBUFSIZ GET BUFFER SIZE IN DOUBLE WORDS @VA08691 01033050 CALL DMKFREE GET MSG AREA @VA08691 01033060 LR R9,R1 PUT IT WHERE WE NEED IT @VA08691 01033070 CQP040B EQU * @VA08691 01033080 MVC FREEMSG(L'MSG40),MSG40 SUBSTITUTE MSG TEXT @VA08691 01033090 L R1,SAVEWRK4 ADDR @V3E7466 01033100 CALL DMKCVTBH CONVERT ADDR TO HEX FOR MSG @V3E7466 01033150 STCM R1,B'0111',FREEMSG+15 SUBSTITUTE IN MSG @V3E7466 01033200 OI CQPFLAG,CQPERR IND. ERROR MSG FOR STACK @V3E7466 01033250 LA R0,MSGSIZE SIZE OF MESSAGE @V3E7466 01033300 LA R1,FREEMSG DATA AREA ADDRESS @V3E7466 01033350 BAL R3,STACK GO STACK MESSAGE @V3E7466 01033400 MVI CQPFLAG,X'00' RESET MSG FLAG @V3E7466 01033450 LA R2,RC40 ERROR RETURN CODE = 40 @V3E7466 01033500 ST R2,SAVER2 SAVE TO RETURN TO CALLER @V3E7466 01033550 B NEXTADDR @V3E7466 01033600 SPACE 01034000 CQP040 LA R2,RC40 ERROR RETURN CODE = 40 @V3E7466 01035000 LM R0,R1,SAVEWRK8 ADDRESS AND LENGTH OF ARGUMENT 01036000 B CALLERM .... 01037000 SPACE 01038000 CQP045 LA R2,RC45 ERROR RETURN CODE = 45 @V3E7466 01039000 LM R0,R1,SAVER0 LENGTH AND ADDRESS OF BAD ARGUMENT 01040000 B CALLERM .... 01041000 SPACE 01042000 NOVAR SR R1,R1 ZERO PARM REG 01043000 CALLERM ICM R0,14,MODID+3 INSERT MODULE ID 01044000 CALL DMKERMSG GO SEND MESSAGE 01045000 * DMKERMSG WILL RETURN DIRECTLY TO DMKCFM 01046000 SPACE 01046100 RC3 EQU 3 ERROR RETURN CODE = 3 @V3E7466 01046150 RC6 EQU 6 ERROR RETURN CODE = 6 @V3E7466 01046200 RC21 EQU 21 ERROR RETURN CODE = 21 @V3E7466 01046250 RC22 EQU 22 ERROR RETURN CODE = 22 @V3E7466 01046300 RC23 EQU 23 ERROR RETURN CODE = 23 @V3E7466 01046350 RC40 EQU 40 ERROR RETURN CODE = 40 @V3E7466 01046400 RC45 EQU 45 ERROR RETURN CODE = 45 @V3E7466 01046450 * MESSAGES FOR 3705 RESPONSES 01048000 MSG3705 DC C'DEV XXXX PGM= ........ DUMP AUTO' @V200820 01049000 DASH DC C'-' RANGE DELIMITER? @V3E7466 01050100 SPACE 01050200 MSG40 DC CL33'DMKCQP040E DEV DOES NOT EXIST' @V3E7466 01050300 MSGSIZE EQU *-MSG40 DATA LENGTH @V3E7466 01050400 MVCADDR MVC MSG40+15,0(R1) MVC FOR MSG SUBSTITUTION @V3E7466 01050500 SPACE 01051000 EJECT 01052000 LTORG 01053000 MSGSLOW DC C'DMKCQP466I CTLR XXX IN BUFFER SLOWDOWN MODE' HRC065DK 01053100 EJECT 01054000 FREEBUF DSECT 01055000 REGSAVE DS 8F REGSAVE R1-R8 @V200930 01056000 CUINDSAV DS H CU INDEX SAVE @V3E7466 01057000 CQPFLAG DS X ERR. MSG IND. FOR STACK @V3E7466 01057100 DS X UNUSED @V3E7466 01057200 FRREGSAV DS 3F BXLE REG SAVE @V200930 01058000 FREEMSG DS 20F MESSAGE BUILDING AREA @V200930 01059000 FRMSGEND EQU FREEMSG+72 SIZE @V200930 01060000 DS 0D 01061000 FRBUFSIZ EQU (*-FREEBUF)/8 SIZE OF BUFFER IN DOUBLE WORDS 01062000 CQPERR EQU X'80' IND. ERROR MSG. FOR STACK @V3E7466 01062100 BIN0 EQU X'00' RESET FLAG INDICATOR @V3E7466 01062200 SPACE 6 01063000 SPACE 2 01064000 LINKBUF DSECT 01065000 DS CL80 OUTPUT BUFFER , LINKS, SYSTEM, @V200930 01066000 * TDSK 01067000 LINKBSIZ EQU (*-LINKBUF)/8 SIZE IN DBL WORDS 01068000 PROCBUF DSECT @V5BC0AB 01068010 DS CL40 PROCESSOR ONLINE MESSAGE BUFFER @V5BC0AB 01068012 PROCBSIZ EQU (*-PROCBUF)/8 SIZE IN DOUBLE-WORDS @V5BC0AB 01068014 SPACE 2 01069000 EJECT 01070000 PSA , @V306638 01071000 COPY DEVTYPES @V306638 01072000 COPY EQU @V306638 01073000 COPY RBLOKS @V306638 01074000 COPY SAVE @V306638 01075000 RADDR1 EQU SAVEWRK7 FIRST RADDR IN RANGE @V3E7466 01075100 RADDR2 EQU SAVEWRK7+2 SECOND RADDR IN RANGE @V3E7466 01075200 CQPBITS EQU SAVEWRK1+3 @V3E7466 01075300 COPY SPOOL @V306638 01076000 COPY VBLOKS @V306638 01077000 COPY VMBLOK @V306638 01078000 END 01079000