VMB TITLE 'DMMVMB (IPCS) VM/370 - RELEASE 6' 00001000 * 00002000 * MODULE NAME: 00003000 * DMMVMB SUBROUTINE OF DUMPSCAN 00004000 * 00005000 * FUNCTION: 00006000 * DISPLAY ALL VMBLOCK ADDRESSES, USERIDS AND STATUS 00007000 * 00008000 * ATTRIBUTES: 00009000 * REUSABLE 00010000 * NON-REENTRANT 00011000 * 00012000 * ENTRY POINTS: 00013000 * DMMVMB 00014000 * 00015000 * ENTRY CONDITIONS: 00016000 * NONE 00017000 * 00018000 * EXIT CONDITIONS: 00019000 * RETURN CODE IN R15 0 - GOOD 00020000 * 4 - WARNING 00021000 * 00022000 * CALLS TO OTHER ROUTINES: 00023000 * DMMGET FETCH DUMP INTO CORE 00024000 * DMMINT TRANSLATE HEX TO EBCDIC 00025000 * 00026000 * EXTERNAL REFERENCES: 00027000 * 00028000 * 00029000 * TABLES/WORKAREAS: 00030000 * 00031000 * REGISTER USAGE: 00032000 * R15 ADDRESSES OF EXTERNAL ROUTINES 00033000 * R14 RETURNS FROM EXTERNAL ROUTINES 00034000 * R13 SAVE AREA ADDRESS 00035000 * R12 BASE 00036000 * R11-R7 NOT USED 00037000 * R6-R2 WORK REGISTERS 00038000 * R4 PASSES ADDRESS TO INT 00039000 * R3 PASSES LENGTH TO INT 00040000 * R2 PASSES ADDRESS TO GET 00041000 * 00042000 * NOTES: 00043000 * 00044000 * OPERATION: 00045000 * * * * * * * * THIS ROUTINE PROCESSES 'VMB' REQUESTS. 00046000 * * * * * * * * IT SEARCHES THE VMBLOCK CHAIN, LISTING 00047000 * * * * * * * * THE USERID, BLOCK ADDRESS, AND THE 00048000 * * * * * * * * 'VMR', 'VMD', 'VMO', AND 'VMQ' STATUS BYTES. 00049000 * 00050000 * ERROR MESSAGES: 00051000 * DMMVMB711I LOOP IN VMBLOK CHAIN 00052000 * 00053000 * * * * * * * *------- -------- -------- -------- ------* 00054000 * * * * * * * *------- -------- -------- -------- ------* 00055000 DMMVMB CSECT @VA04250 00056000 EXTRN DMMGET FETCH DUMP INTO CORE @VA04250 00057000 EXTRN DMMINT TRANSLATE @VA04250 00058000 EXTRN TRTABLE TRANSLATE TABLE @VA04830 00059000 STM R14,R12,SAVEDISP(R13) SAVE CALLER REGS @VA04250 00060000 LR R12,R15 ADDRESSABILITY @VA04250 00061000 USING DMMVMB,R12 ADD @VA04250 00062000 ST R13,SAVEBACK CALLERS SAVE AREA PTR @VA04250 00063000 B EYECATCH BYPASS EYE CATCHER @VA04250 00064000 DS 0D ALIGN @VA04250 00065000 DC CL8'DMMVMB' EYECATCHER @VA04250 00066000 RELLEV DC C'REL4LEV0' RELEASE AND LEVEL @V4075A1 00067000 EYECATCH LA R13,SAVEAREA OUR SAVE PTR @VA04250 00068000 XC RETCODE,RETCODE CLEAR RETURN @VA04250 00069000 * * * * * * * *------- -------- -------- -------- ------* 00070000 * * * * * * * * GO TO DMMGET TO GET THE SYSTEM 00071000 * * * * * * * * VMBLOCK ADDRESS 00072000 * * * * * * * *------- -------- -------- -------- ------* 00073000 LA R2,ASYSVM-PSA ADD DISP TO SYSVMB POINTER @VA04250 00074000 BAL R10,GOGET ADDRESS @VA04250 00075000 L R2,0(R2) GET TRUE VMBLOCK ADDRESS @VA04250 00076000 ST R2,BLOCKADD VMB ADDRESS FOR TRANS @VA04250 00077000 MVC USERID(L'OUTLEFT),BLANKOUT CLEAR WORK AREAS @VA04830 00078000 LA R2,VMRSTAT-VMBLOK(R2) ADD DISP TO STATUS @VA04250 00079000 BAL R10,GOGET BRING STATUS INTO CORE @VA04250 00080000 MVC VMBSTAT,0(R2) PLUG STATUS TO TRANSLATE @VA04250 00081000 L R2,BLOCKADD ADDRESS OF VMBLOK @VA04250 00082000 LA R2,VMUSER-VMBLOK(R2) ADD DISP TO USERID @VA04250 00083000 BAL R10,GOGET GET USERID INTO CORE @VA04250 00084000 MVC USERID,0(R2) PLUG USER TO TRANSLATE @VA04250 00085000 LA R3,TRANIN 7 - TRANS LENGTH @VA04250 00086000 LA R4,BLOCKADD+ONE TRANS ADDRESS @VA04250 00087000 L R15,INTADD TRANSLATE @VA04250 00088000 BALR R14,R15 GO @VA04250 00089000 MVC ADDRESS,0(R5) PLUG TRANSLATED ADDRESS IN MSG @VA04250 00090000 MVC VMRSTATE,STAT(R5) PLUG TRANSLATED STATUS @VA04250 00091000 MVC OUTLEFT,USERID FILL LEFT HALF @VA04250 00092000 MVI LRSW,R SET SWITCH RIGHT @VA04250 00093000 L R2,BLOCKADD SYSTEM VMBLOK @VA04250 00094000 LA R2,VMPNT-VMBLOK(R2) ADD DISP TO NEXT USER @VA04250 00095000 BAL R10,GOGET ADDRESS INTO CORE @VA04250 00096000 L R2,0(R2) ADDRESS OF NEXT VMBLOK @VA04250 00097000 LTR R2,R2 IS IT ZEROS @VA04250 00098000 BNZ SAVEOC NO - KEEP ON @VA04250 00099000 LA R8,HEADER1 HEADER ADDRESS @VA04250 00100000 LA R9,L'HEADER1 30 - LENGTH OF SHORT HEADER @VA04250 00101000 BAL R10,WRTERM WRITE HEADER @VA04250 00102000 LA R8,USERID ADDRESS @VA04250 00103000 LA R9,L'OUTLEFT 28 - ENTRY LENGTH @VA04250 00104000 BAL R10,WRTERM WRITE ONE ENTRY @VA04250 00105000 B RETURN CHECK FOR RIGHT HALF @VA04250 00106000 SAVEOC LA R8,HEADER1 HEADER ADDRESS @VA04250 00107000 LA R9,L'HEADER1+L'HEADER2 60 - LENGTH @VA04250 00108000 BAL R10,WRTERM WRITE HEADER @VA04250 00109000 ST R2,OPVMADD SAVE 'END-OF-CHAIN' ADDRESS @VA04250 00110000 ST R2,BLOCKADD VMB ADDRESS FOR TRANS @VA04250 00111000 * * * * * * * *------- -------- -------- -------- ------* 00112000 * * * * * * * * NOW PROCESS THE REMAINING VMBLOCKS 00113000 * * * * * * * *------- -------- -------- -------- ------* 00114000 LA R6,MAXUSER MAX USERS - 256 @VA04250 00115000 BALGET MVC USERID(L'OUTLEFT),BLANKOUT CLEAR WORK AREAS @VA04830 00116000 L R2,BLOCKADD ADDRESS OF NEXT VMBLOK @VA04250 00117000 LA R2,VMRSTAT-VMBLOK(R2) ADD DISP TO STATUS @VA04250 00118000 BAL R10,GOGET BRING STATUS INTO CORE @VA04250 00119000 MVC VMBSTAT,0(R2) PLUG STATUS TO TRANSLATE @VA04250 00120000 L R2,BLOCKADD ADDRESS OF VMBLOK @VA04250 00121000 LA R2,VMUSER-VMBLOK(R2) ADD DISP TO USERID @VA04250 00122000 BAL R10,GOGET GET USERID INTO CORE @VA04250 00123000 MVC USERID,0(R2) PLUG USER TO TRANSLATE @VA04250 00124000 LA R3,TRANIN 7 - TRANS LENGTH @VA04250 00125000 LA R4,BLOCKADD+ONE TRANS ADDRESS @VA04250 00126000 L R15,INTADD TRANSLATE @VA04250 00127000 BALR R14,R15 LINK @VA04250 00128000 MVC ADDRESS,0(R5) PLUG TRANSLATED ADDRESS IN MSG @VA04250 00129000 MVC VMRSTATE,STAT(R5) PLUG TRANSLATED STATUS @VA04250 00130000 CLI LRSW,L IS IT 'LEFT' @VA04250 00131000 BE MOVEL YES - MOVE IN LEFT HALF @VA04250 00132000 MVC OUTRIGHT,USERID NO - MOVE IT TO RIGHT @VA04250 00133000 MVI LRSW,L SET SWITCH LEFT @VA04250 00134000 LA R8,OUTLEFT ADDRESS @VA04250 00135000 LA R9,L'HEADER1+L'HEADER2 LENGTH - 60 @VA04250 00136000 BAL R10,WRTERM WRITE A LINE @VA04250 00137000 B NBA GET ADDRESS OF NEXT BLOCK @VA04250 00138000 MOVEL MVC OUTLEFT,USERID FILL LEFT OF LINE @VA04250 00139000 MVI LRSW,R SET SWITCH RIGHT @VA04250 00140000 NBA L R2,BLOCKADD SYSTEM VMBLOK @VA04250 00141000 LA R2,VMPNT-VMBLOK(R2) ADD DISP TO NEXT USER @VA04250 00142000 BAL R10,GOGET ADDRESS INTO CORE @VA04250 00143000 L R2,0(R2) ADDRESS OF NEXT VMBLOK @VA04250 00144000 ST R2,BLOCKADD VMB ADDRESS FOR TRANS @VA04250 00145000 C R2,OPVMADD POINT TO END OF CHAIN? @VA04250 00146000 BE LASTCHEK YES - CHECK FOR A HALF LINE @VA04250 00147000 BCT R6,BALGET GET NEXT VMBLOCK @VA04250 00148000 LA R8,ERMSG711 ADDRESS @VA04250 00149000 LA R9,L'ERMSG711 LENGTH @VA04250 00150000 BAL R10,WRTERM 'LOOP IN VMBLOCK CHAIN' @VA04250 00151000 MVC RETCODE,CODE4 BAD RET @VA04250 00152000 B RETURN GIVE UP @VA04250 00153000 * * * * * * * * ------- -------- -------- ------- * 00154000 * * * * * * * * CHECK FOR LEFT OR RIGHT 00155000 * * * * * * * * ------- -------- -------- ------- * 00156000 LASTCHEK CLI LRSW,R IS THERE STILL A HALF LINE? @VA04250 00157000 BNE RETURN NO - RETURN @VA04250 00158000 LA R8,OUTLEFT ADDRESS @VA04250 00159000 LA R9,L'OUTLEFT AND LENGTH - 28 @VA04250 00160000 BAL R10,WRTERM YES - WRITE IT @VA04250 00161000 B RETURN CLOSE OUT @VA04250 00162000 * * * * * * * * ------- -------- -------- ------- * 00163000 * * * * * * * * COMMON WRTERM 00164000 * * * * * * * * ------- -------- -------- ------- * 00165000 WRTERM L R7,TRTABADD GET TR TABLE ADDRESS @VA04830 00166000 MVI 0(R7),BLANK SET '00' TO TRANSLATE AS '40' @VA04830 00167000 BCTR R9,R0 CORRECT COUNT FOR TR @VA04830 00168000 EX R9,TRANSLAT GET OUT ALL BAD STUFF @VA04830 00169000 MVI 0(R7),XZERO RESTORE TRANSLATE TABLE @VA04830 00170000 LA R9,1(R9) CORRECT COUNT FOR WRITE @VA04830 00171000 ST R8,PARMLIS1 SAVE MSG TEXT PTR IN PARM LIST @V4075A2 00172000 ST R9,PARMLIS2 AND TEXT LENGTH @V4075A2 00173000 LA R1,PARMLIS1 POINTER TO PASS @V4075A2 00174000 L R15,FEDLNADD ADDRESS OF DMMFEDLN - LINE WRITER@V4075A2 00175000 BALR R14,R15 GO WRITE THE LINE @V4075A2 00176000 BR R10 AND RETURN @V4075A2 00177000 PARMLIS1 DS F PARM1 @V4075A2 00178000 PARMLIS2 DS F PARM2 @V4075A2 00179000 FEDLNADD DC V(DMMFEDLN) LINE WRITER ROUTINE @V4075A2 00180000 TRANSLAT TR 0(0,R8),0(R7) OBJCT TRANSLATE @VA04830 00181000 * * * * * * * * ------- -------- -------- ------- * 00182000 * * * * * * * * COMMON ROUTINE TO LINK TO GETREC 00183000 * * * * * * * * AND CHECK RETURN CODES 00184000 * * * * * * * * ------- -------- -------- ------- * 00185000 GOGET L R15,GETADD GETREC ADDRESS @VA04250 00186000 BALR R14,R15 LINK @VA04250 00187000 LTR R15,R15 CHECK RETURN CODE @VA04250 00188000 BNZ CODECHEK GO FIND OUT JUST HOW BAD @VA04250 00189000 BR R10 RETURN TO CALLER @VA04250 00190000 CODECHEK C R15,CODE4 WARNING? @VA04250 00191000 BNE FATAL NO - BAD STUFF @VA04250 00192000 MVC RETCODE,CODE4 SET WARNING @VA04250 00193000 B RETURN RETURN @VA04250 00194000 FATAL MVC RETCODE,CODE8 FATAL @VA04250 00195000 B RETURN GO BACK @VA04250 00196000 * * * * * * * * ------- -------- -------- ------- * 00197000 * * * * * * * * RETURN 00198000 * * * * * * * * ------- -------- -------- ------- * 00199000 RETURN L R13,SAVEBACK CALLERS SAVE PTR @VA04250 00200000 MVC SAVREG15(L'RETCODE,R13),RETCODE RET CODE IN R15 @VA04250 00201000 LM R14,R12,SAVEDISP(R13) RESTORE REGS @VA04250 00202000 BR R14 RETURN @VA04250 00203000 * * * * * * * * ------- -------- -------- ------- * 00204000 * * * * * * * * CONSTANTS 00205000 * * * * * * * * ------- -------- -------- ------- * 00206000 BLOCKADD DS F VMBLOCK ADDRESS @VA04250 00207000 VMBSTAT DS F STATUS BYTES @VA04250 00208000 OPVMADD DS F ADDRESS OPERATOR VMBLOK @VA04250 00209000 RETCODE DS F RETURN CODE @VA04250 00210000 GETADD DC AL4(DMMGET) DUMP PAGE FETCHER @VA04250 00211000 INTADD DC AL4(DMMINT) TRANSLATOR @VA04250 00212000 TRTABADD DC AL4(TRTABLE) TRANSLATE TABLE @VA04830 00213000 CODE4 DC F'4' WARNING RETURN CODE @VA04250 00214000 CODE8 DC F'8' FATAL RETURN CODE @VA04250 00215000 * * * * * * * * ------- -------- -------- ------- * 00216000 * * * * * * * * SAVEAREA 00217000 * * * * * * * * ------- -------- -------- ------- * 00218000 SAVEAREA DS 0F THIS PROGRAM'S SAVE AREA @VA04250 00219000 SAVEUSR DS F USER WORD @VA04250 00220000 SAVEFWD DS F FORWARD POINTER @VA04250 00221000 SAVEBACK DS F BACKWARD POINTER @VA04250 00222000 SAVER14 DS F SAVE AREA FOR CALLER'S R14 @VA04250 00223000 SAVER15 DS F SAVE AREA FOR CALLER'S R15 @VA04250 00224000 SAVER0 DS F SAVE AREA FOR CALLER'S R0 @VA04250 00225000 SAVER1 DS F SAVE AREA FOR CALLER'S R1 @VA04250 00226000 SAVER2 DS F SAVE AREA FOR CALLER'S R2 @VA04250 00227000 SAVER3 DS F SAVE AREA FOR CALLER'S R3 @VA04250 00228000 SAVER4 DS F SAVE AREA FOR CALLER'S R4 @VA04250 00229000 SAVER5 DS F SAVE AREA FOR CALLER'S R5 @VA04250 00230000 SAVER6 DS F SAVE AREA FOR CALLER'S R6 @VA04250 00231000 SAVER7 DS F SAVE AREA FOR CALLER'S R7 @VA04250 00232000 SAVER8 DS F SAVE AREA FOR CALLER'S R8 @VA04250 00233000 SAVER9 DS F SAVE AREA FOR CALLER'S R9 @VA04250 00234000 SAVER10 DS F SAVE AREA FOR CALLER'S R10 @VA04250 00235000 SAVER11 DS F SAVE AREA FOR CALLER'S R11 @VA04250 00236000 SAVER12 DS F SAVE AREA FOR CALLER'S R12 @VA04250 00237000 * * * * * * * * ------- -------- -------- ------- * 00238000 XZERO EQU X'00' HEX ZERO FOR TRANS TABLE @VA04830 00239000 ONE EQU 1 COUNTER INCREMENT @VA04250 00240000 STAT EQU 6 STAUS DISP @VA04250 00241000 SAVEDISP EQU 12 REGS IN SAVE AREA @VA04250 00242000 SAVREG15 EQU 16 REG 15 IN SAVE AREA @VA04250 00243000 BLANK EQU X'40' BLANK FOR TRANSLATE TABLE @VA04830 00244000 R EQU X'D9' RIGHT SWITCH STATUS @VA04250 00245000 L EQU X'D3' LEFT SWITCH STATUS @VA04250 00246000 MAXUSER EQU 256 MAX OF 256 USERS @VA04250 00247000 TRANIN EQU 7 INPUT LENGTH TO TRANSLATE @VA04250 00248000 LRSW DS C LEFT/RIGHT SWITCH @VA04250 00249000 OUTLINE DS CL60 OUTPUT LINE @VA04250 00250000 ORG OUTLINE LINE DESCRIPTION @VA04250 00251000 OUTLEFT DS CL28 LEFT HALF @VA04250 00252000 OUTSPACE DC CL4' ' SPACE @VA04250 00253000 OUTRIGHT DS CL28 RIGHT HALF @VA04250 00254000 USERID DS 1D USER ID @VA04250 00255000 UIDSPACE DS CL2 PADDING @VA04250 00256000 ADDRESS DS CL6 VMBLOCK ADDRESS @VA04250 00257000 ADDSPACE DS CL4 PADDING @VA04250 00258000 VMRSTATE DS CL8 STATUS @VA04250 00259000 HEADER1 DC CL30'USERID ADDRESS VMRSTAT' @VA04250 00260000 HEADER2 DC CL30' USERID ADDRESS VMRSTAT' @VA04250 00261000 ERMSG711 DC C'DMMVMB711I LOOP IN VMBLOK CHAIN' @VA04428 00262000 BLANKOUT DC CL30' ' FILL CHAR @VA04830 00263000 PATCH DC 50F'0' PATCH @VA04250 00264000 LTORG @VA04250 00265000 PSA LOW CORE DSECT @VA04250 00266000 COPY VMBLOK VBLOKS DSECT @VA04250 00267000 R0 EQU 0 R0 EQUALS REGISTER 0 @VA04250 00268000 R1 EQU 1 R1 EQUALS REGISTER 1 @VA04250 00269000 R2 EQU 2 R2 EQUALS REGISTER 2 @VA04250 00270000 R3 EQU 3 R3 EQUALS REGISTER 3 @VA04250 00271000 R4 EQU 4 R4 EQUALS REGISTER 4 @VA04250 00272000 R5 EQU 5 R5 EQUALS REGISTER 5 @VA04250 00273000 R6 EQU 6 R6 EQUALS REGISTER 6 @VA04250 00274000 R7 EQU 7 R7 EQUALS REGISTER 7 @VA04250 00275000 R8 EQU 8 R8 EQUALS REGISTER 8 @VA04250 00276000 R9 EQU 9 R9 EQUALS REGISTER 9 @VA04250 00277000 R10 EQU 10 R10 EQUALS REGISTER 10 @VA04250 00278000 R11 EQU 11 R11 EQUALS REGISTER 11 @VA04250 00279000 R12 EQU 12 R12 EQUALS REGISTER 12 @VA04250 00280000 R13 EQU 13 R13 EQUALS REGISTER 13 @VA04250 00281000 R14 EQU 14 R14 EQUALS REGISTER 14 @VA04250 00282000 R15 EQU 15 R15 EQUALS REGISTER 15 @VA04250 00283000 END 00284000