ibm:vm370-lib:cp:dmkthi.assemble_src
Table of Contents
DMKTHI Source
References
- Fixes Applied : 2
- This Source Date : Thursday, December 7, 1978
- Last Fix ID : [R09251DK]
Source Listing
- DMKTHI.ASSEMBLE.txt
- THI TITLE 'DMKTHI (CP) VM/370 - RELEASE 6' 00001000
- ISEQ 73,80 VALIDATE SEQUENCING OF INPUT @V2B2698 00002000
- COPY OPTIONS @V2B2698 00003000
- COPY LOCAL OPTIONS @V2B2698 00004000
- DMKTHI CSECT @V2B2698 00005000
- USING SAVEAREA,R13 @V2B2698 00006000
- USING PSA,R0 @V2B2698 00007000
- USING VMBLOK,R11 @V2B2698 00008000
- MODID DC CL8'DMKTHI' @V2B2698 00009000
- EJECT 00010000
- *. 00011000
- * MODULE NAME - 00012000
- * 00013000
- * DMKTHI - GIVE DATA ON UTILIZATION OF AND CONTENTION FOR 00014000
- * MAJOR SYSTEM RESOURCES 00015000
- * 00016000
- * FUNCTION - 00017000
- * 00018000
- * TO HANDLE THE 'INDICATE' CONSOLE FUNCTION 00019000
- * 00020000
- * ATTRIBUTES - 00021000
- * 00022000
- * SERIALLY REUSABLE, PAGEABLE, CALLED VIA SVC 00023000
- * 00024000
- * ENTRY POINTS - 00025000
- * DMKTHIEN - TO PROCESS ALL FORMS OF INDICATE COMMAND 00026000
- * 00027000
- * ENTRY CONDITIONS - 00028000
- * 00029000
- * GPR9 - ADDRESS OF COMMAND LINE BUFFER 00030000
- * GPR11 - ADDRESS OF VMBLOK 00031000
- * GPR12 - ADDRESS OF ENTRY POINT 00032000
- * GPR13 - ADDRESS OF STANDARD SAVE AREA 00033000
- * 00034000
- * EXIT CONDITIONS - 00035000
- * 00036000
- * NONE 00037000
- * 00038000
- * CALLS TO OTHER ROUTINES - 00039000
- * 00040000
- * DMKCVTBD - TO CONVERT BINARY TO EBCDIC DECIMAL 00041000
- * DMKCVTBH - TO CONVERT BINARY TO EBCDIC HEX 00042000
- * DMKQCNWT - TO WRITE INDICATE RESPONSE TO USER 00043000
- * DMKSCNFD - TO LOOK FOR INDICATE PARAMETERS IN COMMAND FIELDS 00044000
- * DMKSCNVU - VIRTUAL DEVICE BLOCKS FROM VIRTUAL ADDRESS 00045000
- * DMKSCNRD - FULL REAL DEVICE ADDRESS FROM REAL DEVICE BLOCK 00046000
- * DMKFREE - TO OBTAIN STORAGE FOR REPLY MESSAGES 00047000
- * DMKFRET - TO RELEASE STORAGE 00048000
- * DMKERMSG - TO WRITE ERROR MESSAGES 00049000
- * DMKTMRPT - TO OBTAIN CURRENT UP TO DATE VALUE OF VMVTIME 00050000
- * 00051000
- * EXTERNAL REFERENCES - 00052000
- * 00053000
- EXTRN DMKSCHCU SMOOTHED WAIT TIME FOR 30 SEC CPU@V407577 00054100
- EXTRN DMKSCHCA SMOOTHED WAIT TIME FOR 30 SEC APU@V407577 00054200
- EXTRN DMKSCHRL RUNLIST ANCHOR @V407577 00054300
- EXTRN DMKSCHEL ELIGIBLE LIST ANCHORS @V407577 00054400
- EXTRN DMKSCHS1 SMOOTHED CPU CONTENTION, Q1 COUNT@V2B2698 00055000
- EXTRN DMKSCHS2 SMOOTHED CPU CONTENTION, Q2 COUNT@V2B2698 00056000
- EXTRN DMKSCHCO SMOOTHED CORE UTILIZATION @V2B2698 00057000
- EXTRN DMKSCHSC SMOOTHED SCHED CONTENTION RATIO @V2B2698 00058000
- EXTRN DMKSCHLI WAIT STATE SAMPLING INTERVAL @V2B2698 00059000
- EXTRN DMKCVTBD CONVERT FROM BINARY TO DECIMAL @V2B2698 00060000
- EXTRN DMKCVTBH CONVERT FROM BINARY TO HEX @V2B2698 00061000
- EXTRN DMKQCNWT WRITE MESSAGES TO USER @V2B2698 00062000
- EXTRN DMKSCNFD SEARCH FOR NEXT FIELD ON CMD LINE@V2B2698 00063000
- EXTRN DMKSCNVU OBTAIN VIRTUAL DEVICE BLOCKS @V2B2698 00064000
- EXTRN DMKSCNRD OBTAIN REAL DEVICE ADDRESS @V2B2698 00065000
- EXTRN DMKFREE OBTAIN FREE STORAGE @V2B2698 00066000
- EXTRN DMKFRET RELEASE STORAGE @V2B2698 00067000
- EXTRN DMKERMSG WRITE AN ERROR MESSAGE TO USER @V2B2698 00068000
- EXTRN DMKTMRPT OBTAIN UP-TO-DATE VTIME VALUE @V2B2698 00069000
- * 00070000
- * REGISTER USAGE - 00071000
- * 00072000
- * GPR9 - CHAINING THROUGH VMBLOK LIST 00073000
- * GPR6 - BRANCH AND LINK REG FOR SUBROUTINES 00074000
- * GPR4 - DSECT COVER REGISTER FOR REPLIES 00075000
- * GPR0-3 - WORK REGISTERS 00076000
- * 00077000
- * COMMAND FORMAT - 00078000
- * 00079000
- * +----------+---------+--------+ 00080000
- * | INDICATE | LOAD | | 00081000
- * | | ------- | | 00082000
- * | IND | USER | * | 00083000
- * | | |--- | 00084000
- * | | USER | USERID | 00085000
- * | | | | 00086000
- * | | QUEUES | | 00087000
- * | | | | 00088000
- * | | I/O | | 00089000
- * | | | | 00090000
- * | | PAGING | WAIT | 00091000
- * | | PAG | ---- | 00092000
- * | | | ALL | 00093000
- * +----------+---------+--------+ 00094000
- * 00095000
- * INTERPRETATION 00096000
- * 00097000
- * INDICATE LOAD PRODUCES THE RESPONSE AS FOLLOWS: 00098000
- * CPU-095% APU-040% Q1-05 Q2-02 STORAGE-042% RATIO-01.0 00099600
- * THE CPU AND APU FIELDS ARE OBTAINED FROM SMOOTHED INTERVAL 00099700
- * WAIT STATE MAINTAINED BY THE SCHEDULER. THE THIRD FIELD GIVES 00099800
- * THE SMOOTHED CONTENTIONS FOR CPU IN TERMS OF THE SMOOTHED 00099900
- * Q1 AND Q2 VALUES. 00100000
- * THE NEXT FIELD IN THE INDICATE RESPONSE IS A MEASURE OF THE 00104000
- * UTILIZATION OF MAIN HIGH SPEED STORAGE. IT IS CALCULATED 00105000
- * FROM THE RATIO BETWEEN THE SUM OF THE ESTIMATED WORKING SETS 00106000
- * OF THE MULTIPROGRAMMING SET, AND THE NUMBER OF PAGABLE PAGES 00107000
- * IN THE SYSTEM.(THE LATTER IS ROUND ABOUT 400 ON A 2MEGABYTE 00108000
- * SYSTEM. THE VALUE IS SMOOTHED AND EXPRESSED AS A PERCENTAGE. 00109000
- * THE SCHEDULER CONTENTION RATIO IS A MEASURE OF THE CONTENTION 00110000
- * FOR HIGH SPEED STORAGE, AND IS ARBITRARILY DEFINED AS 00111000
- * RATIO = (E+M)/M, WHERE E IS THE NUMBER OF USERS WAITING 00112000
- * TO BE ALLOCATED STORAGE SPACE AND THEREFORE TEMPORARILY 00113000
- * RESIDENT IN THE SCHEDULER 'ELIGIBLE' LISTS, AND M IS 00114000
- * THE NUMBER OF USERS ALREADY RESIDENT IN STORAGE, I.E. 00115000
- * THE MEMBERS OF THE MULTIPROGRAMMING SET. 00116000
- * THUS THE RATIO IS THE RATIO OF ACTIVE USERS TO BEING SERVICED 00117000
- * USERS, AND IS IDEALY 1.0 FOR OPTIMUM RESPONSE, WHEN THERE IS 00118000
- * ENOUGH MAIN STORAGE TO ACCOMMODATE ALL ACTIVE USERS. WHEN 00119000
- * SCR=1.5 AND M = 10, THEN 5 USERS ARE IN THE ELIGIBLE LISTS 00120000
- * WAITING FOR THE SCHEDULER TO ALLOCATE THEM STORAGE SPACE, AND 00121000
- * THE FULL DISCRIMINATION CAPABILITIES OF THE SCHEDULER MAY 00122000
- * BE EXCERCISED ON THOSE USERS. (SEE TR 75.0001 FOR DETAILS) 00123000
- * 00124000
- * THE PURPOSE OF THE INDICATE QUEUES OPTION IS TO PROVIDE A 00125100
- * DISPLAY OF THE ACTIVE USERS, THE QUEUES THEY OCCUPY, THEIR 00125200
- * CURRENT STATUS, AND THEIR MAIN STORAGE REQUIREMENTS. 00125300
- * THE RESPONSE IS ORDERED AS FOLLOWS: 00125400
- * 1. Q1 AND Q2 USERS IN ORDER OF RUNLIST PRIORITY 00125500
- * 2. ELIGIBLE LIST E1 IN ORDER OF SCHEDULING PRIORITY 00125600
- * 3. ELIGIBLE LIST E2 IN ORDER OF SCHEDULING PRIORITY 00125700
- * THE QUEUE INDICATORS ARE Q1, Q2, E1, OR E2. POSSIBLE STATUS 00125800
- * CONDITIONS ARE: RU...RUNUSER ON THE CPU, RA...RUNUSER ON THE 00125900
- * APU, PG...IN PAGEWAIT, IO...IN I/O WAIT, EX...IN INSTRUCTION 00126000
- * SIMULATION WAIT, PS...IN PSW WAIT, OR --...RUNNABLE AND JUST 00126100
- * WAITING FOR THE CPU. WHEN MUTIPLE STATUS CONDITIONS ARE 00126200
- * POSSIBLE, THE FIRST ENCOUNTERED IN THE ORDER INDICATED ABOVE 00126300
- * IS RECORDED IN THE REPLY. FOLLOWING THE STATUS INDICATION 00126400
- * FOR EACH USER ARE TWO FIELDS REPRESENTING THAT USER'S MAIN 00126500
- * STORAGE REQUIREMENT. THE FIRST FIELD IS THE NUMBER OF RESIDENT 00126600
- * PAGES AND THE SECOND IS THAT USER'S PROJECTED WORKING SET. 00126700
- * 00147000
- * THE PURPOSE OF THE INDICATE I/O OPTION IS TO PROVIDE INSIGHT 00148000
- * INTO THE CONDITIONS LEADING TO POSSIBLE I/O BOUNDNESS WITHIN 00149000
- * THE SYSTEM. THE RESPONSE GIVES THE USERID OF ALL THE USERS IN 00150000
- * THE I/O WAIT STATE AT THAT INSTANT OF TIME, AND THE REAL 00151000
- * DEVICE ADDRESS BEING WAITED ON. SINCE THE RESPONSE 00152000
- * IS A SNAP SHOT, THE COMMAND SHOULD BE USED SEVERAL TIMES 00153000
- * BEFORE A CONDITION MAY BE THOUGHT TO BE PERSISTENT, AND 00154000
- * THEN IT IS AN INDICATION THAT THE SEEKS OPTION OF VM 00155000
- * MONITOR SHOULD BE RUN IN ORDER TO CONDUCT A THOROUGH 00156000
- * INVESTIGATION OF THE SUGGESTED CONGESTION. 00157000
- * 00158000
- * THE INDICATE PAGING OPTION IS TO CHECK IF OVERFLOWING OF THE 00159000
- * 2305 (OR FIXED HEAD DEVICE) IS CONTRIBUTING TO A PERSISTENT 00160000
- * PAGE WAIT PROBLEM. THE RESPONSE GIVES ALL USERS IN PAGE 00161000
- * WAIT AND THE COUNTS OF THE NUMBERS OF PAGES ALLOCATED ON 00162000
- * DRUM AND ON DISK. IF A USER IS PAGING PRIMARILY FROM DISK 00163000
- * HE WILL BE RUNNING SLOWER THAN IF HE WERE PAGING FROM DRUM 00164000
- * AND IF THERE IS A LOW LEVEL OF MULTIPROGRAMMING, THIS MAY 00165000
- * FORCE HIGH SYSTEM PAGE WAIT TIMES. OF COURSE IF A USER IS 00166000
- * PAGING ON DISK, YOU WOULD LIKE TO KNOW WHO HAS FILLED UP THE 00167000
- * DRUM, AND THIS IS THE PURPOSE OF THE INDICATE PAGING ALL 00168000
- * OPTION WHICH GIVES THE PAGE RESIDENCY DATA FOR ALL THE USERS 00169000
- * CURRENTLY LOGGED ONTO THE SYSTEM. 00170000
- * 00171000
- * THE PURPOSE OF THE INDICATE USER OPTION IS TO ALLOW 00172000
- * USERS TO FIND OUT MORE ABOUT THE ACTIVITY OF THEIR 00173000
- * VIRTUAL MACHINES IN TERMS OF THE RESOURCES USED 00174000
- * AND OCCUPIED AND EVENTS THAT HAVE TAKEN PLACE. 00175000
- * USERS WITH ONLY G CLASS AUTHORITY MAY ONLY ACCESS 00176000
- * DATA FROM THEIR OWN VMBLOK, USERS WITH E CLASS 00177000
- * AUTHORITY MAY ACCESS DATA FROM ANY VMBLOK 00178000
- * 00179000
- * THE DATA OBTAINED IS AS FOLLOWS: 00180000
- * PAGES: RES-010 WS-010 READS=001234 WRITES=000645 DISK-0128 DRUM-0000 00181000
- * VTIME=000:59 TTIME=001:35 SIO=000099 RDR-000009 PRT-000000 PCH-000000 00182000
- * 00183000
- * 00184000
- * OPERATION 00185000
- * 00186000
- * 1. CALL DMKSCNFD TO CHECK FOR ARGUMENTS, IF NONE FOUND 00187000
- * ASSUME PROCESSING FOR INDICATE ONLY 00188000
- * 00189000
- * IF 'LOAD' OR DEFAULT OF NO PARAMETER FOUND GOTO PART 2 00190000
- * 00191000
- * IF 'I/O' FOUND GO TO SECTION WHICH LOOKS FOR RUNNABLE 00192000
- * USERS IN I/O WAIT STATE, PART 3. 00193000
- * 00194000
- * IF 'PAGING' FOUND GO TO SECTIONS TO HANDLE 'IND PAGING' 00195000
- * FUNCTIONS, PARTS 4 AND 5. 00196000
- * 00197000
- * IF 'USER' FOUND HANDLE USER RESOURCE REQUEST FUNCTION 00198000
- * PART 6. 00199000
- * 00200000
- * IF 'QUEUES' FOUND DISPLAY CURRENT MULTIPROGRAMMING SET 00201000
- * PART 7. 00202000
- * 00203000
- * IF INVALID PARAMS FOUND SEND CANNED ERROR MSGS AND EXIT 00204000
- * 00205000
- * 2. INDICATE LOAD PROCESSING: 00206000
- * USING REPLY MESSAGE DSECT GET BUFFER FOR REPLY AND 00207000
- * MOVE IN THE SKELETON REPLY MESSAGE, THEN PATCH REPLY 00208000
- * WITH INDICATE COMPONENT VALUES AS FOLLOWS: 00209000
- * PICK UP SMOOTHED WAIT STATE NUMBERS FROM SCHEDULER, 00210100
- * CONVERT TO PERCENTAGE IN PRINTABLE HEX. AND MOVE INTO 00211000
- * REPLY. GET SMOOTHED NUMBERS OF USERS IN Q1 AND Q2 FROM 00212000
- * DMKSCH CONVERT TO HEX AND MOVE INTO MESSAGE. 00213000
- * GET SMOOTHED CORE UTILIZATION AND SCHEDULER CONTENTION 00214000
- * RATIO NUMBERS, CONVERT TO HEX AND MOVE INTO REPLY 00215000
- * CALL DMKQCNWT TO SEND REPLY TO USER, FREE BUFFER AND EXIT 00216000
- * 00217000
- * 3. INDICATE I/O PROCESSING: 00218000
- * USING REPLY MESSAGE DSECT GET BUFFER FOR REPLY AND 00219000
- * BUILD REPLY FIELD BY FIELD AS FOLLOWS: 00220000
- * SCAN VMBLOK CHAIN LOOKING FOR IN Q NOT RUNNABLE 00221000
- * USERS WHO ARE IN I/O WAIT. WHEN ONE IS FOUND 00222000
- * PICK UP FROM HIS VMBLOK THE VIRTUAL ADDRESS OF THE DEVICE 00223000
- * FOR WHICH HE LAST ISSUED A VIRTUAL I/O REQUEST. CALL 00224000
- * DMKSCNVU TO LOCATE THE VIRTUAL DEVICE BLOCK ADDRESS 00225000
- * AND THENCE THE POINTER TO THE CORRESPONDING REAL 00226000
- * DEVICE ADDRESS. THEN USEDMKSCNRD 00227000
- * TO GET THE FULL REAL DEVICE ADDRESS AND DMKCVTBH 00228000
- * TO CONVERT THE RESULT TO EBCDIC HEX FOR INSERTION IN THE 00229000
- * REPLY MESSAGE. ADD THE USERID FOR WHOM THE I/O IS 00230000
- * BEING PERFORMED. 00231000
- * 00232000
- * EACH LINE OF THE REPLY MESSAGE MAY CONTAIN A MAXIMUM 00233000
- * OF 5 FIELDS (USERID AND REAL DEVICE ADDRESS IN EACH FIELD) 00234000
- * AS EACH LINE IS FILLED IT IS STACKED IN A BUFFER ONTO 00235000
- * THE USER'S VMBLOK IN A CHAIN WHOSE ANCHOR POINT IS THE 00236000
- * VMSTKO FIELD OF THE VMBLOK. WHEN THE LAST VMBLOK HAS 00237000
- * BEEN SCANNED, THE LAST PARTIALLY FILLED REPLY LINE 00238000
- * IS STACKED UP AND AN EXIT IS MADE. 00239000
- * 00240000
- * 4. INDICATE PAGING PROCESSING: 00241000
- * USING A REPLY MESSAGE DSECT OBTAIN THE APPROPRIATE SIZED 00242000
- * BUFFER AND BUILD AS MANY AS 5 FIELDS INTO REPLY AS FOLLOWS 00243000
- * WHEN THE 'PAGING' PARAMETER IS ENCOUNTERED, A CALL TO 00244000
- * DMKSCNFD IS MADE TO CHECK FOR THE 'WAIT' OR 'ALL PARAMETER 00245000
- * IF NEITHER ARE FOUND, THE DEFAULT IS 'WAIT' FOR WHICH 00246000
- * PROCESSING IS AS FOLLOWS: 00247000
- * THE VMBLOK CHAIN IS SCANNED LOOKING FOR IN Q 00248000
- * USERS, WHO ARE NOT RUNNABLE AND ARE IN PAGE WAIT. WHEN 00249000
- * ONE IS FOUND, A FIELD IS ADDED TO THE REPLY MESSAGE 00250000
- * CONTAINING THE USERID AND A COUNT OF THE NUMBER OF PAGES 00251000
- * RESIDENT ON DRUM AND ON DISK. 00252000
- * 00253000
- * 5. INDICATE PAGING ALL PROCESSING: 00254000
- * WHEN THE 'PAGING ALL' PARAMTERS ARE FOUND, THE REPLY 00255000
- * MESSAGE CONSTRUCTED CONTAINS INFORMATION ON THE PAGE 00256000
- * RESIDENCY COUNTS OF ALL USERS LOGGED ONTO THE SYSTEM. 00257000
- * 00258000
- * EACH LINE OF REPLY TO THE 'INDICATE PAGING ALL' COMMAND 00259000
- * MAY CONTAIN A MAXIMUM OF 4 FIELDS, EACH CONTAINING THE 00260000
- * USERID AND 3CHAR. DRUM RESIDENCY AND DISK RESIDENCY 00261000
- * PAGE COUNT SEPARATED BY A COLON; THE STACK 00262000
- * PROCEEDURE IS USED AS BEFORE TO ACCUMULATE THE 00263000
- * REPLY MESSAGES. 00264000
- * 00265000
- * 6. INDICATE USER COMMAND PROCESSING: 00266000
- * WHEN THE 'USER' PARAMETER IS ENCOUNTERED, THEN THE '*' IS 00267000
- * ALLOWED BY ANY CLASS OF USER, AND IS THE DEFAULT. HOWEVER 00268000
- * ONLY PRIVILEGED CLASSE USERS E ARE 00269000
- * ALLOWED TO ACCESS VMBLOK DATA FROM OTHER USERS 00270000
- * OF THE SYSTEM. DATA ACCORDING TO THE CONTENTS 00271000
- * DESCRIBED ABOVE ARE CONVERTED TO DECIMAL AND 00272000
- * STACKED ON THE USERS VMBLOK FOR REPLY. 00273000
- * 00274000
- * 7. INDICATE QUEUES COMMAND PROCESSING: 00275000
- * THE'QUEUES' PARAMETER MAY ONLY BE USED BY PRIVILEGED USERS 00276000
- * A SCAN IS MADE OF THE RUNLIST AND ELIGIBLE LISTS AND 00277100
- * DATA RELATING TO THOSE USERS ARE DISPLAYED. THE DATA 00277200
- * INCLUDE USERID, QUEUE INDICATOR (Q1,Q2,E1,E2), STATUS 00277300
- * INDICATOR (RU, RA, PG, IO, EX, PS, OR --), 00277400
- * PAGES RESIDENT AND MOST RECENT WORKING SET SIZE ESTIMATE. 00281000
- * THE STACK SUBROUTINE IS USED TO ADD THE REPLY BUFFERS TO 00282000
- * THE REQUESTOR'S VMBLOK. SUBSEQUENTLY DMKCFM OUTPUTS THE 00283000
- * MESSAGES AND FREES UP THE BUFFER SPACE. 00284000
- *. 00285000
- DMKTHIEN RELOC @V2B2698 00286000
- CALL DMKSCNFD LOOK FOR OPTION @V2B2698 00287000
- BNZ THILOAD DEFAULT IS INDICATE LOAD @V2B2698 00288000
- LR R2,R0 PARAMETER LENGTH @V2B2698 00289000
- CL R2,F8 GREATER THAN MAX. ALLOWED? @V2B2698 00290000
- BH THI003E YES-INVALID OPTION @V2B2698 00291000
- BCTR R2,0 LESS ONE FOR COMPARE @V2B2698 00292000
- LA R3,PARMTBL PARAMETER SCAN TABLE @V2B2698 00293000
- LA R4,PARMENT LENGTH OF ONE ENTRY @V2B2698 00294000
- LA R5,PARMEND LAST ENTRY IN TABLE @V2B2698 00295000
- SPACE 00296000
- THISRCH EQU * SCAN TABLE FOR FNCTN PARM MATCH @V2B2698 00297000
- EX R2,CLCR1R3 'CLC 0(*-*,R1),0(R3)' @V2B2698 00298000
- BNE NEXSRCH NO MATCH - SKIP TO NEXT ENTRY @V2B2698 00299000
- CLM R2,1,9(R3) CHECK FOR MINIMUM ABBREVIATION @V2B2698 00300000
- BL NEXSRCH TOO SMALL - SKIP TO NEXT ENTRY @V2B2698 00301000
- SLR R6,R6 @V2B2698 00302000
- ICM R6,8,VMCLEVEL CHECK PRIVILEGED CLASS...MAY BE @V2B2698 00303000
- N R6,8(0,R3) RESTRICTED @V2B2698 00304000
- BZ THI003E INVALID OPTION IF IT IS @V2B2698 00305000
- LH R4,10(0,R3) CHECKS OUT PICK UP BRANCH ADDRESS@V2B2698 00306000
- B DMKTHI(R4) GO TO FUNCTIONAL SUBROUTINE @V2B2698 00307000
- NEXSRCH EQU * @V2B2698 00308000
- BXLE R3,R4,THISRCH ON TO NEXT TABLE ENTRY @V2B2698 00309000
- B THI003E NO MATCH, INVALID OPTION @V2B2698 00310000
- SPACE 00311000
- PARMTBL DS 0F FUNCTION PARAMETER TABLE @V2B2698 00312000
- DC C'LOAD ',AL1(E+G,3),AL2(THILOAD-DMKTHI) @V2B2698 00313000
- DC C'USER ',AL1(E+G,3),AL2(THIUSER-DMKTHI) @V2B2698 00314000
- DC C'QUEUES ',AL1(E,0),AL2(THIQUE-DMKTHI) @V2B2698 00315000
- DC C'PAGING ',AL1(E,2),AL2(THIPAG-DMKTHI) @V2B2698 00316000
- PARMEND DC C'I/O ',AL1(E,2),AL2(THIIO-DMKTHI) @V2B2698 00317000
- PARMENT EQU *-PARMEND LENGTH OF 1 ENTRY @V2B2698 00318000
- SPACE 00319000
- CLCR1R3 CLC 0(*-*,R1),0(R3) EX'ED COMPARE FOR PARM CHECK @V2B2698 00320000
- SPACE 00321000
- USING LOADMSGD,R4 LOAD MESSAGE DSECT @V2B2698 00322000
- THILOAD LA R0,LOADMSGL FIRST GET NO. DBL WORDS @V2B2698 00323000
- CALL DMKFREE GET THE STORAGE @V2B2698 00324000
- LR R4,R1 THE DSECT COVER REGISTER @V2B2698 00325000
- LA R1,LOADMSGC GET BYTE COUNT OF REPLY MESSAGE @V2B2698 00326000
- BCTR R1,0 LESS 1 FOR EXECUTED MOVE @V2B2698 00327000
- EX R1,MVLODMSG MOVE SKELETON MESSAGE TO BUFFER @V2B2698 00328000
- L R2,=A(DMKSCHCU) ADDR OF SMOOTH WAIT VALUE TO @V2B2698 00329000
- * NEAREST 1/4 SEC 00330100
- SLR R7,R7 CLEAR TO INDICATE CPU PASS @V407577 00330200
- CVTLOAD L R3,0(R2) LOAD THE SMOOTHED WAIT TIME @V407577 00330300
- L R1,=A(DMKSCHLI) SAMPLING INTERVAL IN SECONDS @V2B2698 00331000
- L R5,0(R1) @V2B2698 00332000
- SLL R5,2 TO NEAREST 1/4 SEC ALSO @V2B2698 00333000
- LR R1,R5 @V2B2698 00334000
- SR R1,R3 GET INTERVAL CPU IN 1/4 SECONDS @V2B2698 00335000
- LTR R1,R1 UNLIKELY ZERO FOR NO ACTIVITY @V2B2698 00336000
- BZ ZEROUT BUT WE HIT IT ANYWAY @V2B2698 00337000
- SR R0,R0 CLEAR FOR MULT AND DIVIDE @V2B2698 00338000
- M R0,=F'100' BY 100 FOR PERCENT @V2B2698 00339000
- LR R2,R5 @V2B2698 00340000
- DR R0,R2 DIVIDE BY SAMPLE INTERVAL @V2B2698 00341000
- SRL R5,1 GET HALF SAMPLING INTERVAL @V2B2698 00342000
- CR R0,R5 IS REMAINDER SIGNIFICANT (>1/2) @V2B2698 00343000
- BNH ZEROUT NO, SKIP CORRECTION @V2B2698 00344000
- LA R1,1(,R1) YES, ADD 1 TO RESULT @V2B2698 00345000
- ZEROUT BAL R8,CONVERT CONVERT TO DECIMAL @V2B2698 00346000
- LTR R7,R7 IS THIS THE CPU WAIT TIME @V407577 00347100
- BNZ APUDATA NO..MUST BE APU WAIT TIME @V407577 00347200
- MVC CPUTIL,TEMPHOLD+5 FILL IN CPU PERCENT LOAD @V407577 00347300
- L R7,=A(DMKSCHCA) LOAD R7 TO INDICATE APU PASS @V407577 00347400
- LR R2,R7 AND POINT TO THE APU WAIT TIME @V407577 00347500
- B CVTLOAD NOW GO COMPUTE APU TIMES @V407577 00347600
- APUDATA MVC APUTIL,TEMPHOLD+5 FILL IN APU PERCENT LOAD @V407577 00347700
- L R2,=A(DMKSCHS1) SMOOTHED Q1*1024 @V2B2698 00348000
- L R1,0(R2) @V2B2698 00349000
- SRL R1,10 BACK TO NEAREST INTERGER @V2B2698 00350000
- BAL R8,CONVERT DECIMAL FOR REPLY @V2B2698 00351000
- MVC NUMQ1,TEMPHOLD+6 AND MOVE INTO REPLY BUFFER @V2B2698 00352000
- L R2,=A(DMKSCHS2) SMOOTHED NO OF Q2 USERS * 1024 @V2B2698 00353000
- L R1,0(R2) @V2B2698 00354000
- SRL R1,10 BACK TO NEAREST INTEGER FOR REPLY@V2B2698 00355000
- BAL R8,CONVERT DECIMAL FOR REPLY @V2B2698 00356000
- MVC NUMQ2,TEMPHOLD+6 @V2B2698 00357000
- L R1,=A(DMKSCHCO) ADDR CORE UTIL FRACTION*1024 @V2B2698 00358000
- L R1,0(R1) @V2B2698 00359000
- SR R0,R0 @V2B2698 00360000
- M R0,=F'100' CONVERT TO PERCENTAGE*1024 @V2B2698 00361000
- SRL R1,10 /1024 TO GET PURE PERCENTAGE @V2B2698 00362000
- BAL R8,CONVERT @V2B2698 00363000
- MVC CORUTIL,TEMPHOLD+5 @V2B2698 00364000
- L R1,=A(DMKSCHSC) SCHED CONTENTION RATIO*1024 @V2B2698 00365000
- L R1,0(R1) @V2B2698 00366000
- SR R0,R0 @V2B2698 00367000
- M R0,=F'100' FOR ACCURACY TO 1 DEC PLACE @V2B2698 00368000
- SRL R1,10 /1024 TO GET BACK TO BASE @V2B2698 00369000
- BAL R8,CONVERT @V2B2698 00370000
- MVC QUTIL,TEMPHOLD+4 PATCH Q CONT RATIO INFO @VA04300 00371500
- MVC QUTILDEC,TEMPHOLD+6 MSG. INSERTING DECIMAL PT @V2B2698 00372000
- LA R0,LOADMSGC MESSAGE SIZE IN BYTES @V2B2698 00373000
- LR R1,R4 LOCATION OF MESSAGE BUFFER @V2B2698 00374000
- LA R3,LOADMSGL DOUBLE WORDS OF BUFFER TO FRET @V2B2698 00375000
- CALL DMKQCNWT,PARM=NORET+DFRET @V2B2698 00376000
- THIEXIT EXIT @V2B2698 00377000
- SPACE 00378000
- MVLODMSG MVC 0(*-*,R4),LODMSGSK SKELETON LOAD MESSAGE @V2B2698 00379000
- MVUSRMS1 MVC 0(*-*,R4),USERMSG1 SKELETON USER MESSAGE LINE 1 @V2B2698 00380000
- MVUSRMS2 MVC 0(*-*,R4),USERMSG2 SKELETON USER MESSAGE LINE 2 @V2B2698 00381000
- DROP R4 @V2B2698 00382000
- SPACE 00383000
- CONVERT CALL DMKCVTBD CONVERT BIN NUMB IN R1 TO DECIMAL@V2B2698 00384000
- STM R0,R1,TEMPHOLD SAVE RESULT FOR MVC @V2B2698 00385000
- BR R8 RETURN TO BALER @V2B2698 00386000
- EJECT 00387000
- THIIO LA R0,IOPGMSGL 64 BYTES OR 4 13 BYTE FIELDS 1 12@V2B2698 00388000
- CALL DMKFREE GET BUFFER @V2B2698 00389000
- ST R1,SAVEWRK1 START OF EACH REPLY @V2B2698 00390000
- LA R3,64(R1) END OF MAX REPLY MESSAGE @V2B2698 00391000
- ST R3,SAVEWRK2 SAVE FOR LATER COMPARE @V2B2698 00392000
- LR R4,R1 @V2B2698 00393000
- SR R10,R10 @V2B2698 00394000
- ST R10,SAVEWRK3 CLEAR STACK COUNTER @V2B2698 00395000
- LR R9,R11 HOOK INTO VMBLOK CHAIN, THIS USER@V2B2698 00396000
- MOREUSR2 DS 0H @VA07710 00397500
- TM VMDSTAT-VMBLOK(R9),VMRUN IS HE RUNNABLE @V2B2698 00399000
- BO NXTUSR2 YES, COULDN'T BE IN A WAIT STATE @V2B2698 00400000
- TM VMRSTAT-VMBLOK(R9),VMIOWAIT IS HE IN I/O WAIT @V2B2698 00401000
- BO BALFIOB YES, GO TO SUBROUTINE BAL @V2B2698 00402000
- TM VMDSTAT-VMBLOK(R9),VMINQ IS THIS USER IN A QUEUE@VA07710 00402330
- BZ NXTUSR2 NO, NOT INTERESTED @VA07710 00402660
- TM VMRSTAT-VMBLOK(R9),VMPSWAIT WAIT PSW WHILE IN Q @V2B2698 00403000
- BZ NXTUSR2 NO, TRY NEXT IN CHAIN @V2B2698 00404000
- BALFIOB BAL R6,FINDRDEV YES, FIND RDEV AND ADD TO REPLY @V2B2698 00405000
- NXTUSR2 L R9,VMPNT-VMBLOK(,R9) USE FORWARD PTR TO GET NEXT@V2B2698 00406000
- CR R9,R11 END OF VMBLOK LOOP YET @V2B2698 00407000
- BNE MOREUSR2 NO, MORE USERS YET @V2B2698 00408000
- ENDLOOP2 MVC PATCH(4),=C'I/O ' PATCH WARNING MESSAGE @V2B2698 00409000
- ENDLOOPC C R4,SAVEWRK1 STILL ONLY AT START OF BUFFER @V2B2698 00410000
- BE FRETBUF YES, HAVEN'T STARTED FILLING YET @V2B2698 00411000
- BAL R6,STACK NO, STACK WHAT IS SO FAR FILLED @V2B2698 00412000
- FRETBUF LA R0,IOPGMSGL @V2B2698 00413000
- L R1,SAVEWRK1 @V2B2698 00414000
- CALL DMKFRET RELEASE REPLY BUFFER @V2B2698 00415000
- L R10,SAVEWRK3 FIND OUT IF WE HAVE AT LEAST ONE @V2B2698 00416000
- LTR R10,R10 USER IN WAIT STATE @V2B2698 00417000
- BNZ THIEXIT YES NO PANICK MESSAGE @V2B2698 00418000
- LA R0,NOIOMSGL WE DON'T HAVE A SINGLE ONE @V2B2698 00419000
- LA R1,NOIOMSG GET SIZE AND LOCATION OF MESSAGE @V2B2698 00420000
- CALL DMKQCNWT,PARM=NORET AND SEND IT @V2B2698 00421000
- B THIEXIT AND RETURN @V2B2698 00422000
- SPACE 00423000
- FINDRDEV LR R11,R9 SUBROUTINE INPUT CONDITION @V2B2698 00424000
- ST R6,SAVEWRK6 RETURN ADDRESS WILL BE DESTROYED @V2B2698 00425000
- LH R1,VMACTDEV VIRT ADDRESS OF MOST RECENT V-IO @V2B2698 00426000
- CALL DMKSCNVU GET VIRTUAL DEVICE BLOCKS @V2B2698 00427000
- L R11,SAVER11 RESTORE CALLERS VMBLOK ADDR @V2B2698 00428000
- BZ GOTDEV WE DID GET SOMETHING AFTERALL @V2B2698 00429000
- NORDEV EQU * @VA09251 00429500
- MVC TEMPHOLD+1(3),=C'---' DEV ADDRESS NOT AVAIL @V2B2698 00430000
- B NODEV @V2B2698 00431000
- SPACE 00432000
- GOTDEV L R8,VDEVREAL-VDEVBLOK(,R8) POINTER TO REAL DEV @V2B2698 00433000
- LTR R8,R8 IS THERE A RDEVICE ? @VA09251 00433300
- BZ NORDEV NO @VA09251 00433600
- CALL DMKSCNRD GET FULL REAL DEVICE ADDRESS @V2B2698 00434000
- CALL DMKCVTBH CONVERT TO EBCDIC HEX @V2B2698 00435000
- ST R1,TEMPHOLD SAVE FOR MOVE @V2B2698 00436000
- NODEV L R6,SAVEWRK6 GOOD TIME TO RESTORE RET ADDRESS @V2B2698 00437000
- USING IOMSGD,R4 I/O REPLY MESSAGE DSECT @V2B2698 00438000
- MVC IRADD,TEMPHOLD+1 WE FINALLY GOT THERE @V2B2698 00439000
- MVC IUSERID,VMUSER-VMBLOK(R9) USERID INTO MESSAGE @V2B2698 00440000
- MVI ISEP1,C' ' BLANK SEPARATOR @V2B2698 00441000
- LR R5,R4 SAVE FOR END OF FIELD SEPARATOR @V2B2698 00442000
- LA R4,13(R4) INDEX TO NEXT MESSAGE FIELD @V2B2698 00443000
- C R4,SAVEWRK2 END OF THIS BUFFER YET @V2B2698 00444000
- BNL STACK YES, STACK THIS MESSAGE AND RESET@V2B2698 00445000
- MVI ISEP2-IOMSGD(R5),C' ' END SEP FOR LAST FIELD @V2B2698 00446000
- BR R6 NO, SPACE FOR MORE FIELDS YET @V2B2698 00447000
- DROP R4 @V2B2698 00448000
- EJECT 00449000
- THIPAG CALL DMKSCNFD LOOK FOR ANY PARAMTER @V2B2698 00450000
- BNZ THIPGONL NONE, THI PAGING ONLY @V2B2698 00451000
- CL R0,F4 MAY NOT BE MORE THAN 4 CHARS. @V2B2698 00452000
- BH THI003E INVALID OPTION @V2B2698 00453000
- CL R0,F3 AND NOT LESS THAN 3 CHARS. @V2B2698 00454000
- BL THI003E INVALID OPTION @V2B2698 00455000
- BH CLWAIT MUST BE WAIT IF ITS ANYTHING @V2B2698 00456000
- CLC =C'ALL',0(R1) IS IT ALL? @V2B2698 00457000
- BE THIPGALL FINE, HANDLE 'THI PAGING ALL' @V2B2698 00458000
- B THI003E GARBAGE IN, GARBAGE OUT. @V2B2698 00459000
- SPACE 00460000
- CLWAIT CLC =C'WAIT',0(R1) IS IT WAIT? @V2B2698 00461000
- BNE THI003E INVALID OPTION @V2B2698 00462000
- THIPGONL LA R0,IOPGMSGL 67 BYTES OR 3 17 BYTE FIELDS 1 16@V2B2698 00463000
- CALL DMKFREE GET BUFFER @V2B2698 00464000
- ST R1,SAVEWRK1 START OF EACH REPLY @V2B2698 00465000
- LA R3,67(R1) END OF MAX REPLY MESSAGE @V2B2698 00466000
- ST R3,SAVEWRK2 SAVE FOR LATER COMPARE @V2B2698 00467000
- LR R4,R1 @V2B2698 00468000
- SR R10,R10 @V2B2698 00469000
- ST R10,SAVEWRK3 CLEAR STACK COUNTER @V2B2698 00470000
- LR R9,R11 START INTO VMBLOK CHAIN, USER @V2B2698 00471000
- MOREUSR3 TM VMDSTAT-VMBLOK(R9),VMINQ IS HE EVEN IN Q @V2B2698 00472000
- BZ NXTUSR3 NO, NOT AT ALL INTERESTED @V2B2698 00473000
- TM VMDSTAT-VMBLOK(R9),VMRUN YA, IS HE STIL RUNABLE @V2B2698 00474000
- BO NXTUSR3 YA, SO CAN'T BE IN ANY WAIT STATE@V2B2698 00475000
- TM VMRSTAT-VMBLOK(R9),VMPGWAIT IS HE IN PAGE WAIT @V2B2698 00476000
- BZ NXTUSR3 NO, TRY NEXT IN CHAIN @V2B2698 00477000
- BAL R6,BLDPMSG YES, PUT PAGE RES DATA IN MSG @V2B2698 00478000
- NXTUSR3 L R9,VMPNT-VMBLOK(,R9) GET FORWARD POINTER @V2B2698 00479000
- CR R9,R11 BACK AT START OF LOOP YET @V2B2698 00480000
- BNE MOREUSR3 NO, MORE TO COME @V2B2698 00481000
- ENDLOOP3 MVC PATCH(4),=C'PAGE' PATCH WARNING MESSAGE @V2B2698 00482000
- B ENDLOOPC JOIN COMMON CODE TO END UP @V2B2698 00483000
- SPACE 00484000
- USING PAGMSGD,R4 @V2B2698 00485000
- BLDPMSG UNPK 0(5,R4),VMPDRUM-VMBLOK(3,R9) DRUM RES COUNT @V2B2698 00486000
- MVC PDRUM,1(R4) SELECT CHARACTERS OF INTEREST @V2B2698 00487000
- * ONLY 00488000
- TR PDRUM,ABX-240 TRANSLATE A THRU F CHARS @V2B2698 00489000
- MVI PSEP1,C' ' BLANK SEPARATOR @V2B2698 00490000
- MVI PCOLON,C':' BETWEEN DRUM AND DISK COUNT @V2B2698 00491000
- UNPK 0(5,R4),VMPDISK-VMBLOK(3,R9) DISK RES COUNT @V2B2698 00492000
- MVC PDISK,1(R4) SELECT ONLY CHARACTERS OF @V2B2698 00493000
- * INTEREST 00494000
- TR PDISK,ABX-240 TRANSLATE A THRU F CHARS @V2B2698 00495000
- MVC PUSERID,VMUSER-VMBLOK(R9) ADD USERID TO MESSAGE @V2B2698 00496000
- LR R5,R4 MAY BE SPACE FOR FIELD SEPARATOR @V2B2698 00497000
- LA R4,17(R4) INDEX TO NEXT MESSAGE FIELD @V2B2698 00498000
- C R4,SAVEWRK2 END OF BUFFER YET @V2B2698 00499000
- BNL STACK YES, STACK THIS MSG AND RESET @V2B2698 00500000
- MVI PSEP2-PAGMSGD(R5),C' ' NO, SEP FOR LAST FIELD @V2B2698 00501000
- BR R6 AND SPACE FOR MORE FIELDS YET @V2B2698 00502000
- DROP R4 @V2B2698 00503000
- SPACE 00504000
- THIPGALL LA R0,IOPGMSGL 67 BYTES OR 3 17 BYTE FIELDS 1 16@V2B2698 00505000
- CALL DMKFREE GET BUFFER @V2B2698 00506000
- ST R1,SAVEWRK1 START OF EACH REPLY @V2B2698 00507000
- LA R3,67(R1) END OF MAX REPLY MESSAGE @V2B2698 00508000
- ST R3,SAVEWRK2 SAVE FOR LATER COMPARE @V2B2698 00509000
- LR R4,R1 @V2B2698 00510000
- LA R10,1 MUST BE AT LEAST 1 USER IN CHAIN @V2B2698 00511000
- ST R10,SAVEWRK3 SET STACK COUNTER @V2B2698 00512000
- LR R9,R11 START WITH CALLER @V2B2698 00513000
- NXTUSER BAL R6,BLDPMSG GET PAGE RES DATA FOR THIS USER @V2B2698 00514000
- L R9,VMPNT-VMBLOK(,R9) NEXT VMBLOK PLEASE... @V2B2698 00515000
- CR R9,R11 BACK AT START OF LOOP YET @V2B2698 00516000
- BNE NXTUSER NO, GET DATA FOR THIS USER @V2B2698 00517000
- L R9,ASYSVM YES, SYSTEM HAS SPACE TOO @V2B2698 00518000
- BAL R6,BLDPMSG SO LETS INCLUDE ITS CONTRIBUTION @V2B2698 00519000
- B ENDLOOPC DONE, SEND LAST BUFFER @V2B2698 00520000
- EJECT 00521000
- STACK L R3,SAVEWRK1 START OF BUFFER @V2B2698 00522000
- LR R7,R3 POINTER FOR LATER MOVE @V2B2698 00523000
- C R4,SAVEWRK2 ARE WE HERE BECAUSE OF FULL BUFF @V2B2698 00524000
- BL NODEC NO, R4 IS EXACTLY RIGHT @V2B2698 00525000
- BCTR R4,R0 YES, R4 IS 1 TOO BIG, DECR COUNT @V2B2698 00526000
- NODEC SR R4,R3 BYTE COUNT OF MESSAGE @V2B2698 00527000
- LA R0,7(R4) ROUND UP TO FULL DBL WORD @V2B2698 00528000
- SRL R0,3 CONVERT TO DBL WORDS @V2B2698 00529000
- A R0,F1 PLUS 1 FOR HEADER @V2B2698 00530000
- CALL DMKFREE GET STACK BUFFER @V2B2698 00531000
- STH R4,4(R1) MESSAGE SIZE AND BUFFER SIZE @V2B2698 00532000
- STH R0,6(R1) INTO HEADER @V2B2698 00533000
- BCTR R4,R0 LESS 1 FOR EXECUTED MOVE @V2B2698 00534000
- EX R4,MVCSTK MESSAGE INTO STACK BUFFER @V2B2698 00535000
- SR R0,R0 @V2B2698 00536000
- ST R0,0(R1) NEW LAST BUFFER IN STACK @V2B2698 00537000
- LA R2,VMSTKO VMBLOK POINTER TO STACK CHAIN @V2B2698 00538000
- STKLOOP L R3,0(R2) LOCATE LAST BUFFER IN CHAIN @V2B2698 00539000
- LTR R3,R3 IN EXISTING STACK @V2B2698 00540000
- BZ CHAIN THIS IS IT @V2B2698 00541000
- LR R2,R3 NOT THIS ONE, POINT TO NEXT @V2B2698 00542000
- B STKLOOP MAYBE THIS IS @V2B2698 00543000
- CHAIN ST R1,0(R2) PREVIOUS LAST POINTS TO NEW @V2B2698 00544000
- L R4,SAVEWRK1 RESET BUFFER POINTER @V2B2698 00545000
- L R1,SAVEWRK3 ADD 1 TO COUNT OF BUFFERS @V2B2698 00546000
- LA R1,1(R1) STACKED @V2B2698 00547000
- ST R1,SAVEWRK3 AND RESTORE @V2B2698 00548000
- BR R6 AND CONTINUE VMBLOK SCAN @V2B2698 00549000
- SPACE 00550000
- MVCSTK MVC 8(0,R1),0(R7) MOVE MESSAGE INTO STACK BUFFER @V2B2698 00551000
- SPACE 00552000
- THI003E EQU * INVALID OPTION @V2B2698 00553000
- LA R2,003(0) MESSAGE NUMBER @V2B2698 00554000
- B MSGEND @V2B2698 00555000
- SPACE 00556000
- THI045E EQU * DMKTHI045E USERID NOT LOGGED ON @V2B2698 00557000
- LA R2,045(0) MESSAGE NUMBER @V2B2698 00558000
- B MSGEND R0,R1 POINT TO USERID @V2B2698 00559000
- SPACE 00560000
- MSGEND ICM R0,14,MODID+3 @V2B2698 00561000
- CALL DMKERMSG DMKERM WILL RETURN TO CFM @V2B2698 00562000
- EJECT 00563000
- THIUSER CALL DMKSCNFD LOOK FOR NEXT PARAMETER @V2B2698 00564000
- BNZ GETMYDA DEFAULT IS NO PARAMETER @V2B2698 00565000
- CL R0,F8 MAX. 8 CHAR. USERID @V2B2698 00566000
- BH THI003E TOO MANY - INVALID OPTION @V2B2698 00567000
- CL R0,F1 MAY BE 1 CHAR SPECIAL @V2B2698 00568000
- BE TESTAS OK. CHECK FOR ASTERISK @V2B2698 00569000
- NOTAST LR R3,R0 @V2B2698 00570000
- BCTR R3,R0 LESS 1 FOR EXECUTED MOVE @V2B2698 00571000
- MVC SAVEWRK1(8),BLANKS PREPARE FIELD FOR USERID @V2B2698 00572000
- EX R3,MVUSID MOVE WHAT WE HAVE @V2B2698 00573000
- CLC SAVEWRK1(8),VMUSER START WITH CALLER @V2B2698 00574000
- BE GETMYDA LIKES TO SEE HIS NAME IN PRINT @V2B2698 00575000
- TM VMCLEVEL,E IS HE AUTHORIZED TO LOOK AROUND @V2B2698 00576000
- BZ THI003E NO, REJECT COMMAND @V2B2698 00577000
- LR R9,R11 YES, NOW VALIDATE USERID PARM @V2B2698 00578000
- B NOTSELF @V2B2698 00579000
- NXTUSR4 CLC SAVEWRK1(8),VMUSER-VMBLOK(R9) DOES USERID MATCH @V2B2698 00580000
- BE GETVMDA YES, FORMAT USER DATA FROM VMBLOK@V2B2698 00581000
- NOTSELF L R9,VMPNT-VMBLOK(,R9) NO, ONTO NEXT USER @V2B2698 00582000
- CR R9,R11 ARE WE AT END OF VMBLOK CHAIN @V2B2698 00583000
- BE THI045E YES, NO USERID MATCH...ERROR @V2B2698 00584000
- B NXTUSR4 NO, CHECK THIS USER @V2B2698 00585000
- SPACE 00586000
- MVUSID MVC SAVEWRK1(*-*),0(R1) MOVE USERID @V2B2698 00587000
- SPACE 00588000
- TESTAS CLI 0(R1),C'*' LOOK SPECIFICALLY FOR '*' @V2B2698 00589000
- BNE NOTAST UNLIKELY CASE OF 1 CHAR USERID @V2B2698 00590000
- GETMYDA LR R9,R11 OK POINT TO YOUR OWN USERID @V2B2698 00591000
- SPACE 00592000
- GETVMDA LA R0,USRMSG1L SPACE FOR LARGER OF 2 REPLY MSGS @V2B2698 00593000
- CALL DMKFREE GET THE BUFFER @V2B2698 00594000
- USING USRMSG1D,R4 DSECT FOR FIRST LINE OF REPLY @V2B2698 00595000
- LR R4,R1 @V2B2698 00596000
- LA R1,USRMSG1C LENGTH OF SKELETON REPLY @V2B2698 00597000
- BCTR R1,0 LESS 1 FOR EXECUTED MOVE @V2B2698 00598000
- EX R1,MVUSRMS1 MOVE INTO BUFFER @V2B2698 00599000
- LH R1,VMPAGES-VMBLOK(R9) CURR NUMBER OF RES PAGES @V2B2698 00600000
- BAL R8,CONVERT @V2B2698 00601000
- MVC RES,TEMPHOLD+4 @V2B2698 00602000
- LH R1,VMWSPROJ-VMBLOK(R9) CURRENT PROJECTED WSS @V2B2698 00603000
- BAL R8,CONVERT @V2B2698 00604000
- MVC WSS,TEMPHOLD+4 @V2B2698 00605000
- L R1,VMPGREAD-VMBLOK(R9) TOTAL PAGES READ SO FAR @V2B2698 00606000
- BAL R8,CONVERT @V2B2698 00607000
- MVC READS,TEMPHOLD+2 6 CHARS @V2B2698 00608000
- L R1,VMPGWRIT-VMBLOK(R9) TOTAL PAGES WRITTEN @V2B2698 00609000
- BAL R8,CONVERT @V2B2698 00610000
- MVC WRITES,TEMPHOLD+2 @V2B2698 00611000
- LH R1,VMPDISK-VMBLOK(R9) PAGES ALLOCATED ON DISK @V2B2698 00612000
- BAL R8,CONVERT @V2B2698 00613000
- MVC DISK,TEMPHOLD+4 @V2B2698 00614000
- LH R1,VMPDRUM-VMBLOK(R9) PAGES ALLOCATED ON DRUM @V2B2698 00615000
- BAL R8,CONVERT @V2B2698 00616000
- MVC DRUM,TEMPHOLD+4 4 CHARS @V2B2698 00617000
- LA R0,USRMSG1C REPLY MESSAGE LENGTH @V2B2698 00618000
- LR R1,R4 AND LOCATION @V2B2698 00619000
- CALL DMKQCNWT,PARM=NORET WRITE MSG, DON'T WAIT @V2B2698 00620000
- SPACE 00621000
- DROP R4 @V2B2698 00622000
- USING USRMSG2D,R4 DSECT FOR SECOND LINE OF REPLY @V2B2698 00623000
- LA R1,USRMSG2C BYTE COUNT OF SECOND LINE @V2B2698 00624000
- BCTR R1,0 LESS 1 FOR EXECUTED MOVE @V2B2698 00625000
- EX R1,MVUSRMS2 MOVE SKELETON REPLY INTO BUFFER @V2B2698 00626000
- LR R11,R9 SET UP PROPER VMBLOK ADDR @V2B2698 00627000
- CALL DMKTMRPT GET TOT VIRT TIME, DONT MISS ANY @V2B2698 00628000
- L R11,SAVER11 RESTORE CALLERS VMBLOK ADDR @V2B2698 00629000
- LR R2,R0 MOVE VTIME TOTAL TO R2,R3 @V2B2698 00630000
- LR R3,R1 ... @V2B2698 00631000
- ST R2,TEMP2 AND SAVE IT FOR LATER @V2B2698 00632000
- ST R3,TEMP2+4 ... @V2B2698 00633000
- LTR R2,R2 WATCH OUT FOR ZERO @V2B2698 00634000
- BP SHIFT MAKE SURE VALUE POSITIVE @VA06179 00634500
- SR R2,R2 MAKE SURE R2 IS ZERO @VA06179 00635000
- ST R2,TEMP2 MAKE SURE TEMP2 IS NOT NEG @VA06179 00635500
- TM TEMP2+4,X'80' DON'T WANT TO MISS 1/2 SEC @V2B2698 00636000
- BO SHIFT STILL OK TO DIVIDE, VALUE IS SIG @V2B2698 00637000
- SR R1,R1 LESS THAN 1/2 SEC, SAME AS ZERO @V2B2698 00638000
- B NOVT SKIP DIVIDES @V2B2698 00639000
- SHIFT SRDL R2,12 RIGHT ALIGNED MICROSECS @V2B2698 00640000
- D R2,=F'1000000' SECONDS IN R3, REM IN R2 @V2B2698 00641000
- C R2,=F'500000' IS REMAINDER SIGNIFICANT @V2B2698 00642000
- BNH NORND NO, NO ROUND UP @V2B2698 00643000
- LA R3,1(,R3) YES, ADD 1 TO RESULT @V2B2698 00644000
- NORND SR R2,R2 CLEAR AGAIN FOR DIVIDE @V2B2698 00645000
- LTR R3,R3 ABOUT TO DIVIDE BY ZERO? @V2B2698 00646000
- BZ *+8 YES, DON'T DO IT. @V2B2698 00647000
- D R2,F60 MINS IN R3, SECS IN R2 @V2B2698 00648000
- LR R1,R3 @V2B2698 00649000
- NOVT BAL R8,CONVERT CONVERT TO DEC. IN TEMPHOLD @V2B2698 00650000
- MVC VTIME,TEMPHOLD+5 MAX 999 MINS @V2B2698 00651000
- LR R1,R2 NOW CONVERT THE SECONDS FIELD @V2B2698 00652000
- BAL R8,CONVERT @V2B2698 00653000
- MVC VSECS,TEMPHOLD+6 MAX 59 OF COURSE @V2B2698 00654000
- LM R0,R1,VMTTIME-VMBLOK(R9) SIMULATION TIME @V2B2698 00655000
- SL R1,TEMP2+4 SUBTRACT PROBLEM TIME TO GET @V2B2698 00656000
- BC 8+2+1,*+8 TOTAL TIME, BRANCH ON NO CARRY @V2B2698 00657000
- SL R0,F1 @V2B2698 00658000
- SL R0,TEMP2 TOTAL NOW IN R0,R1 @V2B2698 00659000
- LM R2,R3,=X'7FFFFFFFFFFFF000' MAX POSITIVE NUMBER @V2B2698 00660000
- SLR R3,R1 GET POSITIVE TOTAL TIME @V2B2698 00661000
- BC 8+2+1,*+8 BR ON NO CARRY @V2B2698 00662000
- SL R2,F1 @V2B2698 00663000
- SLR R2,R0 TOTAL POSITIVE VALUE IN R2,R3 @V2B2698 00664000
- LTR R2,R2 BE WARY OF ZERO CASE @V2B2698 00665000
- BNZ SHIFT2 NO PROBLEM @V2B2698 00666000
- LTR R3,R3 DON'T WANT TO MISS 1/2 SEC @V2B2698 00667000
- BM SHIFT2 SMALL BUT OK FOR A WHILE @V2B2698 00668000
- SLR R3,R3 < 1/2 SEC, MAKE IT ZERO. @V2B2698 00669000
- B ZEROT ABSOLUTELY ZERO @V2B2698 00670000
- SHIFT2 SRDL R2,12 NOW RIGHT ALIGNED MICROSECONDS @V2B2698 00671000
- D R2,=F'1000000' CONVERT TO SEC IN R3, REM IN R2 @V2B2698 00672000
- C R2,=F'500000' IS REMAINDER SIGNIFICANT @V2B2698 00673000
- BNH NORND2 NO @V2B2698 00674000
- LA R3,1(,R3) YES, ROUND UP TO NEAREST SECOND @V2B2698 00675000
- NORND2 SR R2,R2 @V2B2698 00676000
- LTR R3,R3 SMALL CHANCE A ZERO CREPT THROUGH@V2B2698 00677000
- BZ ZEROT SO IN THAT CASE SKIP DIVIDE @V2B2698 00678000
- D R2,F60 MINS IN R3, SECS IN R2 @V2B2698 00679000
- ZEROT LR R1,R3 MINS INTO R1 FOR CONVERT @V2B2698 00680000
- NOTT BAL R8,CONVERT @V2B2698 00681000
- MVC TTIME,TEMPHOLD+5 MAX 999 MINS @V2B2698 00682000
- LR R1,R2 SECS IN R1 FOR CONVERT @V2B2698 00683000
- BAL R8,CONVERT @V2B2698 00684000
- MVC TSECS,TEMPHOLD+6 MAX 59 SECS OF COURSE @V2B2698 00685000
- L R1,VMIOCNT-VMBLOK(R9) TOTAL VIRTUAL DISK I/O @V2B2698 00686000
- BAL R8,CONVERT @V2B2698 00687000
- MVC SIO,TEMPHOLD+2 6 CHARS @V2B2698 00688000
- L R1,VMCRDS-VMBLOK(R9) TOTAL VIRTUAL CARDS READ @V2B2698 00689000
- BAL R8,CONVERT @V2B2698 00690000
- MVC RDR,TEMPHOLD+2 @V2B2698 00691000
- L R1,VMLINS-VMBLOK(R9) TOTAL VIRT LINE PRINTED @V2B2698 00692000
- BAL R8,CONVERT @V2B2698 00693000
- MVC PRT,TEMPHOLD+2 @V2B2698 00694000
- L R1,VMPNCH-VMBLOK(R9) TOTAL VIRT CARDS PUNCHED @V2B2698 00695000
- BAL R8,CONVERT @V2B2698 00696000
- MVC PCH,TEMPHOLD+2 @V2B2698 00697000
- LA R0,USRMSG2C BYTE COUNT OF 2ND LINE OF REPLY @V2B2698 00698000
- LR R1,R4 LOCATION OF BUFFER @V2B2698 00699000
- LA R3,USRMSG1L DOUBLE WORD SIZE OF LARGEST BUFF @V2B2698 00700000
- CALL DMKQCNWT,PARM=NORET+DFRET FRET BUFF, DONT WAIT @V2B2698 00701000
- B THIEXIT @V2B2698 00702000
- DROP R4 @V2B2698 00703000
- EJECT 00704000
- THIQUE LA R0,QUEMSGL 68 BYTES OR 2 23 BYTE + 1 22 @V2B2698 00705000
- CALL DMKFREE GET BUFFER @V2B2698 00706000
- ST R1,SAVEWRK1 START OF EACH REPLY @V2B2698 00707000
- LA R3,68(R1) END OF MAX REPLY MESSAGE @V2B2698 00708000
- ST R3,SAVEWRK2 SAVE FOR LATER COMPARE @V2B2698 00709000
- LR R4,R1 @V2B2698 00710000
- SR R10,R10 @V2B2698 00711000
- ST R10,SAVEWRK3 CLEAR STACK COUNTER @V2B2698 00712000
- L R10,PREFIXB GET OTHER PROC'S PREFIX ADDRESS @V4M0174 00712100
- L R10,RUNUSER(R10) GET RUNUSER ON OTHER PROCESSOR @V4M0174 00712200
- ST R10,SAVEWRK4 SAVE RUNUSER ON OTHER PROCESSOR @V4M0174 00712300
- L R9,=A(DMKSCHRL) START BY SCANNING THE RUNLIST @V407577 00713100
- MORERL L R9,VMQFPNT-VMBLOK(,R9) POINT TO THE NEXT VMBLOK @V407577 00713200
- C R9,=A(DMKSCHRL) END OF THE RUNLIST? @V407577 00713300
- BE TRYE1 GO TRY ELIGIBLE LIST E1 @V407577 00713400
- BAL R6,BLDMSMSG ADD THIS USER TO THE RESPONSE @V407577 00713500
- B MORERL TRY FOR MORE USERS @V407577 00713600
- TRYE1 L R9,=A(DMKSCHEL) NOW SCAN ELIGIBLE LIST E1 @V407577 00713700
- MOREE1 L R9,VMQFPNT-VMBLOK(,R9) POINT TO NEXT USER @V407577 00713800
- C R9,=A(DMKSCHEL) AT END OF ELIGIBLE LIST E1? @V407577 00713900
- BE TRYE2 YES...TRY E2 @V407577 00714000
- BAL R6,BLDMSMSG ADD THIS USER TO THE RESPONSE @V407577 00714100
- B MOREE1 GO LOOK FOR MORE E1 USERS @V407577 00714200
- TRYE2 L R9,=A(DMKSCHEL+8) POINT TO THE ANCHOR FOR E2 @V407577 00714300
- MOREE2 L R9,VMQFPNT-VMBLOK(,R9) POINT TO NEXT USER @V407577 00714400
- C R9,=A(DMKSCHEL+8) AT END OF ELIGIBLE LIST E2? @V407577 00714500
- BE LASTQ YES...END OF SCAN @V407577 00714600
- BAL R6,BLDMSMSG ADD THIS USER TO THE RESPONSE @V407577 00714700
- B MOREE2 GO BACK FOR MORE E2 @V407577 00714800
- LASTQ EQU * @V407577 00714900
- C R4,SAVEWRK1 ALL DONE, DID WE GET ANYTHING @V2B2698 00720000
- BE FRET NO, NO LAST LINE TO STACK UP @V2B2698 00721000
- BAL R6,STACK YES, STACK PARTIALLY FILLED LINE @V2B2698 00722000
- FRET LA R0,QUEMSGL AND FREE INTERMEDIATE BUFFER @V2B2698 00723000
- L R1,SAVEWRK1 BUFFER POINTER @V2B2698 00724000
- CALL DMKFRET @V2B2698 00725000
- L R10,SAVEWRK3 CNT OF PASSES THROUGH STACK RTN @V2B2698 00726000
- LTR R10,R10 IF NONE, SEND SPECIAL REPLY @V2B2698 00727000
- BNZ THIEXIT AT LEAST ONE @V2B2698 00728000
- LA R0,NOINQML MESSAGE LENGTH AND LOCATION @V2B2698 00729000
- LA R1,NOINQM @V2B2698 00730000
- CALL DMKQCNWT,PARM=NORET @V2B2698 00731000
- B THIEXIT @V2B2698 00732000
- SPACE 00733000
- USING QUEMSGD,R4 @V2B2698 00734000
- BLDMSMSG MVC QUSERID,VMUSER-VMBLOK(R9) USERID AS ALWAYS @V2B2698 00735000
- TM VMDSTAT-VMBLOK(R9),VMELIG WHICH Q IS HE IN @V2B2698 00736000
- BZ USERINQ NOT IN ELIG LIST MUST BE IN Q @V2B2698 00737000
- TM VMQLEVEL-VMBLOK(R9),VMQ1 IS IT Q1 @V2B2698 00738000
- BZ ELIGQ2 NO, MUST BE ELIG FOR Q2 @V2B2698 00739000
- MVC QQUEUE,=C' E1 ' PATCH MESSAGE @V2B2698 00740000
- B GETSTAT @V2B2698 00741000
- ELIGQ2 MVC QQUEUE,=C' E2 ' @V2B2698 00742000
- B GETSTAT @V2B2698 00743000
- USERINQ TM VMQLEVEL-VMBLOK(R9),VMQ1 IS HE IN Q1 @V2B2698 00744000
- BZ INQ2 NO, MUST BE IN Q2 @V2B2698 00745000
- MVC QQUEUE,=C' Q1 ' @V2B2698 00746000
- B GETSTAT @V2B2698 00747000
- INQ2 MVC QQUEUE,=C' Q2 ' @V2B2698 00748000
- GETSTAT MVC QSTATUS,=C'-- ' THIS STATUS WILL DO FOR MANY @V2B2698 00749000
- L R8,RUNUSER HIGHEST PRIORITY IS RUNUSER @V2B2698 00750000
- SLR R7,R7 POINT TO THIS PROCESSOR'S PREFIX @V407577 00752100
- CR R8,R9 IS THIS USER RUNUSER ON THIS @V407577 00752200
- * PROCESSOR? 00752300
- BE SETRU YES...GO TEST WHETHER CPU OR APU @V407577 00752400
- TRYAPU TM APSTAT1,APUOPER IS THE APU OPERATIONAL? @V407577 00752500
- BNO TRYPGW NO...TEST FOR PAGEWAIT @V407577 00752600
- L R7,PREFIXB POINT TO OTHER PROCESSOR'S @V407577 00752700
- * PREFIX PAGE 00752800
- C R9,SAVEWRK4 RUNUSER ON OTHER PROCESSOR? @V4M0174 00752900
- BNE TRYDF NO...TRY FOR DEFERRED TASK PNDNG @V4M0174 00753000
- SETRU TM APSTAT1-PSA(R7),PROCIO IS THIS THE CPU? @V407577 00753100
- BNO SETRA NO...INDICATE RUNUSER ON APU @V407577 00753200
- MVC QSTATUS,=C'RU ' YES...INDICATE RUNUSER CPU @V407577 00753300
- B GETPRES GO FILL IN THE WORKING SET DATA @V407577 00753400
- SETRA MVC QSTATUS,=C'RA ' INDICATE RUNUSER ON THE APU @V407577 00753500
- B GETPRES GO FILL IN WORKING SET DATA @V407577 00753600
- TRYDF DS 0H @V4M0174 00753700
- TM VMPEND-VMBLOK(R9),VMDEFSTK TEST FOR DEFERRED @V4M0174 00753800
- BZ TRYPGW NO...TRY FOR PAGEWAIT @V4M0174 00753900
- MVC QSTATUS,=C'DF ' INDICATE DEFERRED TASK PENDING @V4M0174 00754000
- B GETPRES GO FILL IN WORKING SET DATA @V4M0174 00754100
- TRYPGW TM VMRSTAT-VMBLOK(R9),VMPGWAIT IS HE IN PAGEWAIT @V2B2698 00755000
- BZ TRYIOW NO, I/O WAIT NEXT PRIORITY @V2B2698 00756000
- MVC QSTATUS,=C'PG ' YES, PATCH STATUS FLAG @V2B2698 00757000
- B GETPRES ON WITH THE SHOW @V2B2698 00758000
- TRYIOW TM VMRSTAT-VMBLOK(R9),VMIOWAIT IS HE IN I/O WAIT @V2B2698 00759000
- BZ TRYINW NO, INST SIMULATION WAIT NEXT @V2B2698 00760000
- MVC QSTATUS,=C'IO ' I/O WAIT STATUS INDICATOR @V2B2698 00761000
- B GETPRES @V2B2698 00762000
- TRYINW TM VMRSTAT-VMBLOK(R9),VMEXWAIT IS HE IN INST WAIT @V2B2698 00763000
- BZ TRYPSW NO, PSW WAIT LAST PRIORITY @V2B2698 00764000
- MVC QSTATUS,=C'EX ' YES, INSTRUCTION WAIT INDICATOR @V2B2698 00765000
- B GETPRES @V2B2698 00766000
- TRYPSW TM VMRSTAT-VMBLOK(R9),VMPSWAIT ENAB WAIT IN QUEUE @V2B2698 00767000
- BZ GETPRES NO, NO OTHER STATES OF INTEREST @V2B2698 00768000
- MVC QSTATUS,=C'PS ' PATCH FOR PSW WAIT STATUS @V2B2698 00769000
- GETPRES UNPK QPRES(4),VMPAGES-VMBLOK(3,R9) SHRT CNT, TRUNC HI@V2B2698 00770000
- TR QPRES,ABX-240 CHANGE GRABBAGE TO EBCDIC @V2B2698 00771000
- MVI QSEP1,C'/' FIX UP CLOBBERED CHARACTER @V2B2698 00772000
- UNPK QWSS(4),VMWSPROJ-VMBLOK(3,R9) SHRT CNT, TRUNC HI@V2B2698 00773000
- TR QWSS,ABX-240 CHANGE GRABBAGE TO EBCDIC @V2B2698 00774000
- LR R5,R4 SAVE FOR FIELD SEPARATOR @V2B2698 00775000
- LA R4,23(R4) INDEX TO NEXT FIELD @V2B2698 00776000
- C R4,SAVEWRK2 SPACE FOR ANOTHER FIELD @V2B2698 00777000
- BNL STACK NO, STACK THIS FIRST, RESET PTR @V2B2698 00778000
- MVI QSEP2-QUEMSGD(R5),C' ' YES, ADD FIELD SEPARATOR @V2B2698 00779000
- BR R6 AND CONTINUE WITH NEXT VMBLOK @V2B2698 00780000
- EJECT 00781000
- LODMSGSK DS 0H THI SUMMARY SKELETON REPLY @V2B2698 00782000
- DC C'CPU-' @V2B2698 00783000
- DC C' ' @V2B2698 00784000
- DC C'% APU-' @V407577 00784100
- DC C' ' @V407577 00784200
- DC C'% Q1-' @V2B2698 00785000
- DC C' ' @V2B2698 00786000
- DC C' Q2-' @V2B2698 00787000
- DC C' ' @V2B2698 00788000
- DC C' STORAGE-' @V2B2698 00789000
- DC C' ' @V2B2698 00790000
- DC C'% RATIO-' @V2B2698 00791000
- DC C' . ' @VA04300 00792500
- ABX DC C'0123456789ABCDEF' @V2B2698 00793000
- NOIOMSG DS 0H @V2B2698 00794000
- DC C'NO USERS IN ' @V2B2698 00795000
- PATCH DC C'I/O ' @V2B2698 00796000
- DC C' WAIT' @V2B2698 00797000
- NOIOMSGL EQU *-NOIOMSG @V2B2698 00798000
- NOINQM DS 0H @V2B2698 00799000
- DC C'NO USERS IN Q' @V2B2698 00800000
- NOINQML EQU *-NOINQM @V2B2698 00801000
- USERMSG1 DC C'PAGES: RES- ' USER SKELETON REPLY, LINE 1 @V2B2698 00802000
- DC C' WS- ' @V2B2698 00803000
- DC C' READS= ' @V2B2698 00804000
- DC C' WRITES= ' @V2B2698 00805000
- DC C' DISK- ' @V2B2698 00806000
- DC C' DRUM- ' @V2B2698 00807000
- USERMSG2 DC C'VTIME= : ' USER SKELETON REPLY, LINE 2 @V2B2698 00808000
- DC C' TTIME= : ' @V2B2698 00809000
- DC C' SIO= ' @V2B2698 00810000
- DC C' RDR- ' @V2B2698 00811000
- DC C' PRT- ' @V2B2698 00812000
- DC C' PCH- ' @V2B2698 00813000
- SPACE 00814000
- TEMP2 DC D'0' CURRENT UP TO DATE VMVTIME VALUE @V2B2698 00815000
- TEMPHOLD DC D'0' @V2B2698 00816000
- DC C' ' BLANK SEP MUST FOLLOW TEMPHOLD @V2B2698 00817000
- SPACE 00818000
- LOADMSGD DSECT THI LOAD REPLY MESSAGE @V2B2698 00819000
- DS CL4 CPU- @V2B2698 00820000
- CPUTIL DS CL3 CPU UTILIZATION IN PERCENT @V2B2698 00821000
- DS CL7 @V407577 00821100
- APUTIL DS CL3 @V407577 00821200
- DS CL6 % Q1 @V2B2698 00822000
- NUMQ1 DS CL2 SMOOTHED NUMBER OF USERS IN Q1 @V2B2698 00823000
- DS CL5 Q2- @V2B2698 00824000
- NUMQ2 DS CL2 SMOOTHED NUMBER OF USERS IN Q2 @V2B2698 00825000
- DS CL10 STORAGE- @V2B2698 00826000
- CORUTIL DS CL3 SMOOTHED CORE UTILIZATION @V2B2698 00827000
- DS CL9 RATIO @V2B2698 00828000
- QUTIL DS CL2 SMOOTHED Q CONVENTION RATIO @VA04300 00829500
- DS CL1 . @V2B2698 00830000
- QUTILDEC DS CL1 @V2B2698 00831000
- SPACE 00832000
- LOADMSGL EQU (*-LOADMSGD+7)/8 LOAD REPLY MSG SIZE IN DBL WDS @V2B2698 00833000
- LOADMSGC EQU *-LOADMSGD IN BYTES @V2B2698 00834000
- SPACE 00835000
- USRMSG1D DSECT USER REPLY MESSAGE..FIRST LINE @V2B2698 00836000
- DS CL11 PAGES: RES @V2B2698 00837000
- RES DS CL4 COUNT OF PAGES RESIDENT @V2B2698 00838000
- DS CL4 WS- @V2B2698 00839000
- WSS DS CL4 CURRENT WORKING SET VALUE @V2B2698 00840000
- DS CL7 READS= @V2B2698 00841000
- READS DS CL6 TOTAL PAGE READS @V2B2698 00842000
- DS CL8 WRITES= @V2B2698 00843000
- WRITES DS CL6 TOTAL PAGE WRITES @V2B2698 00844000
- DS CL6 DISK- @V2B2698 00845000
- DISK DS CL4 VIRTUAL PAGES RESIDENT ON DISK @V2B2698 00846000
- DS CL6 DRUM- @V2B2698 00847000
- DRUM DS CL4 VIRTUAL PAGES RESIDENT ON DRUM @V2B2698 00848000
- SPACE 00849000
- USRMSG1L EQU (*-USRMSG1D+7)/8 IND USER REPLY BUFFER SIZE @V2B2698 00850000
- USRMSG1C EQU *-USRMSG1D IN BYTES @V2B2698 00851000
- SPACE 00852000
- USRMSG2D DSECT USER MESSAGE REPLY..2ND LINE @V2B2698 00853000
- DS CL6 VTIME= @V2B2698 00854000
- VTIME DS CL3 VTIME THIS SESSION IN MINS @V2B2698 00855000
- DS CL1 : @V2B2698 00856000
- VSECS DS CL2 AND SECONDS @V2B2698 00857000
- DS CL7 TTIME= @V2B2698 00858000
- TTIME DS CL3 VTIME+TTIME IN MINS @V2B2698 00859000
- DS CL1 : @V2B2698 00860000
- TSECS DS CL2 AND SECONDS @V2B2698 00861000
- DS CL5 SIO= @V2B2698 00862000
- SIO DS CL6 TOTAL NON MULTIPLEXOR SIO COUNT @V2B2698 00863000
- DS CL5 RDR- @V2B2698 00864000
- RDR DS CL6 TOTAL VIRTUAL CARDS READ @V2B2698 00865000
- DS CL5 PRT- @V2B2698 00866000
- PRT DS CL6 TOTAL VIRTUAL LINES PRINTED @V2B2698 00867000
- DS CL5 PCH- @V2B2698 00868000
- PCH DS CL6 TOTAL VIRTUAL CARDS PUNCHED @V2B2698 00869000
- SPACE 00870000
- USRMSG2L EQU (*-USRMSG2D+7)/8 LENGTH IN DOUBLE WORDS @V2B2698 00871000
- USRMSG2C EQU *-USRMSG2D IN BYTES @V2B2698 00872000
- SPACE 00873000
- IOMSGD DSECT DSECT FOR REPLY TO THI I/O @V2B2698 00874000
- IUSERID DS CL8 USERID AS USUAL @V2B2698 00875000
- ISEP1 DS CL1 BLANK SEPARATOR @V2B2698 00876000
- IRADD DS CL3 REAL DEVICE ADDRESS @V2B2698 00877000
- ISEP2 DS CL1 BLANK SEPARATOR BETWEEN FIELDS @V2B2698 00878000
- SPACE 00879000
- PAGMSGD DSECT DSECT FOR REPLY TO THI PAGING @V2B2698 00880000
- PUSERID DS CL8 USERID @V2B2698 00881000
- PSEP1 DS CL1 BLANK SEPARATOR @V2B2698 00882000
- PDRUM DS CL3 PAGES RESIDENT ON DRUM @V2B2698 00883000
- PCOLON DS CL1 COLON SEPARATOR @V2B2698 00884000
- PDISK DS CL3 PAGES RESIDENT ON DISK @V2B2698 00885000
- PSEP2 DS CL1 BLANK SEPARATOR BETWEEN FIELDS @V2B2698 00886000
- SPACE 00887000
- IOPGMSGL EQU 9 BUFF SIZE FOR 6 I/O OR 5 PAGING @V2B2698 00888000
- SPACE 00889000
- QUEMSGD DSECT DSECT FOR REPLY TO THI QUEUE @V2B2698 00890000
- QUSERID DS CL8 USERID @V2B2698 00891000
- QQUEUE DS CL4 QUEUE OCCUPIED BY THIS USER @V2B2698 00892000
- QSTATUS DS CL3 STATUS OF THIS USER @V2B2698 00893000
- QPRES DS CL3 PAGES RESIDENT IN MAIN STORAGE @V2B2698 00894000
- QSEP1 DS CL1 SEPARATOR '/' @V2B2698 00895000
- QWSS DS CL3 CURRENT WORKING SET SIZE @V2B2698 00896000
- QSEP2 DS CL1 SEPARATOR BETWEEN FIELDS @V2B2698 00897000
- SPACE 00898000
- QUEMSGL EQU ((*-QUEMSGD)*3+7)/8 BUFFER FOR REPLY @V2B2698 00899000
- QUEMSGC EQU *-QUEMSGD REPLY LENGTH IN BYTES @V2B2698 00900000
- EJECT 00901000
- COPY VMBLOK @V2B2698 00902000
- PSA @V2B2698 00903000
- COPY SAVE @V2B2698 00904000
- COPY EQU @V2B2698 00905000
- SPACE 00906000
- * EQUATES USED FOR COMMAND CLASSES: 00907000
- A EQU VMCLASSA SYSTEM OPERATOR @V2B2698 00908000
- B EQU VMCLASSB RESOURCE CONTROL OPERATOR @V2B2698 00909000
- C EQU VMCLASSC SYSTEM PROGRAMMER @V2B2698 00910000
- D EQU VMCLASSD SPOOL CONTROL OPERATOR @V2B2698 00911000
- E EQU VMCLASSE SYSTEM EXAMINER @V2B2698 00912000
- F EQU VMCLASSF PROGRAM SUPPORT REPRESENTATIVE @V2B2698 00913000
- G EQU VMCLASSG GENERAL USERS @V2B2698 00914000
- EJECT 00915000
- COPY IOBLOKS @V2B2698 00916000
- COPY VBLOKS @V2B2698 00917000
- COPY RBLOKS @V2B2698 00918000
- COPY DEVTYPES @V2B2698 00919000
- END 00920000
ibm/vm370-lib/cp/dmkthi.assemble_src.txt ยท Last modified: 2023/08/06 13:37 by Site Administrator