MAP TITLE 'DMMMAP (IPCS) VM/370 - RELEASE 6' 00001000
* 00002000
* 00003000
* MODULE NAME: DMMMAP 00004000
* 00005000
* 00006000
* FUNCTION: APPEND COMPRESSED AND SORTED LOAD MAP AT END OF 00007000
* DUMP FILE 00008000
* 00009000
* ATTRIBUTES: NON-REENTRANT 00010000
* NON-REUSABLE 00011000
* 00012000
* 00013000
* ENTRY POINTS: DMMMAP 00014000
* 00015000
* 00016000
* ENTRY CONDITIONS: PARM POINTER IN R1 00017000
* WD1 POINTER TO 12K OUTPUT BUFFER 00018000
* 00019000
* 00020000
* EXIT CONDITIONS: RETURN CODE IN R15 00021000
* 0 NORMAL COMPLETION (LOAD MAP INFO APPENDED TO DUMP) 00022000
* 8 FUNCTION NOT PERFORMED (ERROR ENCOUNTERED) 00023000
* 00024000
* 00025000
* CALLS TO OTHER ROUTINES: NONE 00026000
* 00027000
* 00028000
* EXTERNAL REF: SHARECON (SHARED CONSTANT AREA FOR DMKINI) 00029000
* 00030000
* 00031000
* TABLES/WORKAREAS: NONE 00032000
* 00033000
* 00034000
* REGISTER USAGE: R12 BASE 00035000
* R11 SHARECON DSECT 00036000
* R10 NUCMAP DSECT 00037000
* R9 OUTPUT BUFFER POINTER 00038000
* R8 DYNAMIC POINTER INTO OUTPUT BUFFER 00039000
* R2-R7 WORK 00040000
* 00041000
* 00042000
* NOTES: A 200 BYTE PATCH AREA EXISTS AT LABEL 'PATCH' 00043000
* 00044000
* 00045000
* OPERATION: 00046000
* 00047000
* I. READING THE LOAD MAP 'CPNUC MAP' HRC001DM 00048490
* II. SORTING THE ENTRY POINT ADDRESSES 00049000
* III. APPENDING THE SORTED LOAD MAP TO THE DUMP 00050000
* IV. ERROR PROCESSING 00051000
* 00052000
* I. READING THE LOAD MAP 'CPNUC MAP' HRC001DM 00053490
* 00054000
* A. A RECORD IS READ FROM THE FILE 'CPNUC MAP * ' HRC001DM 00055490
* B. THE RECORD IS EXAMINED FOR 'DMKAAAEE AT XXXXXX' OR HRC001DM 00055980
* 'HDKAAAEE AT XXXXXX' WHICH HRC001DM 00056470
* INDICATES THE RECORD CONTAINS A VALID MOD NAME AND ADDR 00057000
* (DMKAAAEE IS ANY VALID MODULE NAME OR ENTRY POINT) 00058000
* IF THE RECORD DOES NOT CONTAIN A VALID MODULE AND ENTRY THE 00059000
* NEXT RECORD IS READ. 00060000
* C. THE VALID RECORD MOD NAME IS MOVED TO THE OUTPUT BUFF. 00061000
* D. THE EBCDIC HEX ENTRY POINT ADDRESS IS NOW CONVERTED 00062000
* TO INTERNAL HEX AND STORED IN THE OUTPUT BUFFER. 00063000
* E. THE MOD NAME IS EXAMINED FOR 'DMKCPEND' AND IF NOT 00064000
* THE NEXT RECORD IS READ. (GO BACK TO A.) 00065000
* IF IT IS DMKCPEND THE ADDRESS IS COMPARED WITH THE DMKCPEND 00066000
* ADDRESS IN THE DUMP. IF THEY ARE DIFFERENT THE USER IS PROMPTED 00067000
* TO ENTER THE FILE NAME - FILE TYPE - FILEMODE OF THE NUCLEUS LOAD 00068000
* MAP OR ENTER A NULL IF THE NAME IS NOT KNOWN. 00069000
* 00070000
* II. SORTING THE ENTRY POINT ADDRESSES. 00071000
* 00072000
* A. SINCE THE ADDR. PRODUCED ARE SEQUENTIAL BY 00073000
* MODULE BUT NOT NECESSARILY BY ENTRY POINT WITHIN MODULE A 00074000
* SORT IS PERFORMED ON THE DATA IN THE BUFFER. 00075000
* B. BECAUSE THE ADDR ARE CLOSE TO BEING IN ORDER ALREADY 00076000
* THE BUFFER IS MERELY SCANNED SEQUENTIALLY SWAPPING 00077000
* ADJACENT OUT OF SEQUENCE RECORDS. WHEN A SCAN OF THE 00078000
* BUFFER REVEALS NO OUT OF SEQUENCE RECORDS THE SORT IS DONE. 00079000
* 00080000
* III. APPENDING THE COMPRESSED LOAD MAP TO THE DUMP FILE. 00081000
* 00082000
* THE 20K BUFFER IS WRITTEN TO THE END OF THE DUMP FILE 00083000
* (PRBNNNNN DUMP A) IN 5 4096 BYTE WRITES. 00084000
* 00085000
* IV. ERROR PROCESSING 00086000
* 00087000
* ERRORS IN THIS ROUTINE MAY INHIBIT PROCESSING IN OTHER 00088000
* ROUTINES WITHIN THE DMMEDM STRUCTURE NO ERROR 00089000
* WILL TERMINATE PROCESSING. 00090000
* 00091000
* COMP. THE ADDR.OF DMKCPEND BETWEEN THE DUMP AND THE 00092000
* LOAD MAP IS NOT A CERTAIN METHOD OF DETERMINING THE 00093000
* VALIDITY OF A LOAD MAP BUT WILL BE EFFECTIVE IN MOST CASES. 00094000
* 00095000
* ERROR MESSAGES: 00096000
* 00097000
* DMKMAP810S ERROR 'NNN' READING FILE 'FILENAME FILETYPE FM' 00098000
* DMMMAP200S ERROR 'NNN' WRITING FILE 'PRBNNNNN DUMP A1' 00099000
* DMMMAP801I FILE 'CPNUC MAP' IS NOT VALID HRC001DM 00100490
* DMMMAP802I PROCEEDING.... 00101000
* DMMMAP806R ENTER FN FT FM OF THE NUCLEUS LOAD MAP 00102000
* DMMMAP807I UNABLE TO LOCATE 'FN FT FM' 00103000
* DMMMAP808I NUCLEUS MAP INVALID ' FN FT FM ' 00104000
* 00105000
EJECT 00106000
DMMMAP CSECT @VA04250 00107000
USING DMMMAP,R15 TEMPORARY ADDRESSABILITY @VA04250 00108000
B START BRANCH AROUND EYECATCHER @VA04250 00109000
DS 0D @VA04250 00110000
MODNAME DC C'DMMMAP ' MODULE NAME @VA04250 00111000
RELLEV DC C'REL4LEV0' RELEASE AND LEVEL @V4075A1 00112000
START STM R14,R12,12(R13) SAVE CALLERS REGS @VA04250 00113000
LR R12,R15 SET UP OUR BASE @VA04250 00114000
DROP R15 @VA04250 00115000
USING DMMMAP,R12 ESTABLISH OUR BASE @VA04250 00116000
ST R13,SAVEAREA+8 SAVE CALLER'S SAVEAREA PTR @VA04250 00117000
LA R13,SAVEAREA POINT TO OUR SAVEAREA @VA04250 00118000
LA R10,INLINE SET R10 FOR USING @VA04250 00119000
USING NUCMAP,R10 DSECT OF NUC MAP VALID DATA @VA04250 00120000
L R11,VSHARE POINT TO SHARED CON AREA @VA04250 00121000
USING SHARECON,R11 ADDRESSABILITY FOR SHARECON @VA04250 00122000
MVC DUMPNAME,DUMPNUM SAVE DUMP NAME PASSED IN R1 @VA04250 00123000
MVC WRFN,DUMPNUM SAVE FILENAME IN ERROR MSG @VA04250 00124000
L R9,0(R1) ADDRESS OF MAP BUFFERS @VA04250 00125000
ST R1,PARMSAVE SAVE PARM LIST ADDRESS @VA04250 00126000
*************************************************************** 00127000
* THIS ROUTINE READS AN EXISTING LOAD MAP WHICH MUST BE NAMED 00128000
* 'NUC MAP A'. IT TRANSLATES THE ADDR FROM EBCDIC TO HEX, SORTS 00129000
* THE ENTRY POINTS INTO ASCENDING ADDRESS ORDER, AND WRITES THE 00130000
* SORTED LOAD MAP AT THE END OF THE DUMP FILE. 00131000
*************************************************************** 00132000
SPACE 1 00133000
LR R8,R9 GET PASSED BUFFER POINTER @VA04250 00134000
READ LA R2,NUCMAPFN POINT TO 'CPNUC MAP * ' HRC001DM 00135490
FSREAD (R2),BUFFER=INLINE,ERROR=INERR,BSIZE=160 @VA04832 00136000
CLC NCDMK,=C'HDK' IS THIS AN HRC MODULE ? HRC001DM 00136300
BE CHKAT HRC001DM 00136600
CLC NCDMK,=C'DMK' IS THIS A VALID MODULE NAME? @VA04250 00137000
BNE READ NOT 'DMK' GO GET NEXT RECORD @VA04250 00138000
CHKAT DS 0H HRC001DM 00138500
CLC NCAT,=C'AT' IF NOT 'AT' THEN JUST TRASH @VA04250 00139000
BNE READ NOT 'AT', GO GET NEXT RECORD @VA04250 00140000
*************************************************************** 00141000
* WE NOW HAVE A VALID ENTRY FROM THE NUC MAP OF THE FORM: 00142000
* DMKAAABB AT XXXXXX OR HDKAAABB AT XXXXXX HRC001DM 00143490
* WE WILL NOW TRANSLATE THE XXXXXX BACK TO HEXADECIMAL 00144000
*************************************************************** 00145000
MVC 0(L'NCMODULE,R8),NCMODULE MOD NAME TO BUFFER @VA04250 00146000
LA R8,OUTADDR(R8) OUTPUT ADDRESS FIELD @VA04250 00147000
LA R2,LASTBYTE POINT TO LAST BYTE OF ADDR. @VA04250 00148000
LA R3,L'NCADDR EBCDIC ADDR IS 6 BYTES LONG @VA04250 00149000
XLOOP IC R4,0(R2) GET A BYTE OF ADDRESS @VA04250 00150000
TM 0(R2),NUMERIC IS THIS BYTE 0 TO 9? @VA04250 00151000
BO XNOADD YES @VA04250 00152000
LA R4,ADDNINE(R4) X'C1' BECOMES X'CA' (E.G.) @VA04250 00153000
XNOADD SRDL R4,4 SAVE RESULT HEX DIGIT IN R5 @VA04250 00154000
BCTR R2,0 POINT BACK TO NEXT BYTE @VA04250 00155000
BCT R3,XLOOP DO THIS FOR 6 BYTES @VA04250 00156000
SR R4,R4 CLEAR R4 @VA04250 00157000
SRDL R4,8 HIGH ORDER X'00' TO R5 @VA04250 00158000
ST R5,0(R8) SAVE RESULT HEX ADDR IN OUT @VA04250 00159000
CLC NCMODULE,=C'DMKCPEND' CP END ADDRESS? @VA04250 00160000
BE XCK YES, GO CHECK FOR VALID MAP @VA04250 00161000
LA R8,BUFFNXT(R8) UPDATE BUFFER POINTER @VA04250 00162000
B READ CONTINUE @VA04250 00163000
XCK MVI ENDFOUND,SWITCHON DMKCPEND FOUND @VA04250 00164000
C R5,REALEND NUC MAP CPEND SAME AS MAP @VA04250 00165000
BNE MAPERROR NO, WE CAN'T USE IT @VA04250 00166000
MVC TEXT5(RECLEN),TEXT7 CLEAR ANY MSGS OUT OF TEXT5 @VA04250 00167000
LA R8,OUTNEXT(R8) POINT TO NEXT OUTPUT FIELD @VA04250 00168000
B READ GET NEXT ENTRY @VA04250 00169000
INERR CH R15,EOF END OF FILE? @VA04250 00170000
BNE READERR NO, WE REALLY HAD AN ERROR @VA04250 00171000
CLI ENDFOUND,SWITCHON DID WE FIND DMKCPEND? @VA04250 00172000
BNE MAPERROR GO WRITE INVALID MESSAGE @VA04250 00173000
FSCLOSE (R2) @VA04250 00174000
*************************************************************** 00175000
* WE NOW HAVE ALL ADDR. TRANSLATED AND ALL MOD NAMES AND THEIR 00176000
* ADDR PUT IN OUTPUT BUFFER. WE WILL NOW SORT THE ENTRY POINT 00177000
* ADDRESSES IN ASCENDING ORDER. 00178000
* 00179000
* THE LOAD MAP IS ALREADY IN SEQUENCE BY MOD NAME AND ONLY 00180000
* THE ENTRY POINTS WITHIN MODS MAY BE OUT OF SEQUENCE THIS SORT 00181000
* WILL GO THROUGH THE BUFFER SWAPPING OUT OF SEQUENCE RECORDS. 00182000
* WHEN A PASS THROUGH THE BUFFER IS MADE WITHOUT ENCOUNTERING 00183000
* AN OUT OF SEQUENCE CONDITION THE SORT IS DONE. 00184000
*************************************************************** 00185000
MAPSORT LA R4,SWITCH R4 WILL BE USED AS A SWITCH @VA04250 00186000
* IF IT IS ZERO AT LEAST ONE OUT 00187000
* OF SEQUENCE RECORD WAS FOUND. 00188000
LR R2,R9 POINT TO START OF BUFFER @VA04250 00189000
LA R3,NEXTREC(R2) POINT TO NEXT RECORD @VA04250 00190000
MAPLOOP CLC PASTNAME(MAPADDR,R2),PASTNAME(R3) COMP. ADDR. @VA04250 00191000
* OF THE TWO ADDRESSES 00192000
BH MAPSWAP OUT OF SEQUENCE, BRANCH @VA04250 00193000
LR R2,R3 NEXT RECORD @VA04250 00194000
LA R3,NEXTREC(R3) NEXT RECORD @VA04250 00195000
CR R3,R8 AT END? @VA04250 00196000
BL MAPLOOP NO CONTINUE @VA04250 00197000
LTR R4,R4 ANY OUT OF SEQUENCE FOUND? @VA04250 00198000
BZ MAPSORT YES, GO MAKE ANOTHER PASS @VA04250 00199000
B WRTOUT ALL DONE SORTING, CONTINUE @VA04250 00200000
MAPSWAP LM R5,R7,0(R2) SAVE OLD MODNAME AND ADDRESS @VA04250 00201000
MVC 0(NEXTREC,R2),0(R3) SWAP THE TWO ENTRIES @VA04250 00202000
STM R5,R7,0(R3) DONE SWAPPING NOW @VA04250 00203000
LR R2,R3 NEXT ENTRY @VA04250 00204000
LA R3,NEXTREC(R2) NEXT ENTRY @VA04250 00205000
SR R4,R4 SET OUT OF SEQUENCE SWITCH @VA04250 00206000
CR R3,R8 AT END? @VA04250 00207000
BL MAPLOOP NO @VA04250 00208000
B MAPSORT START FROM BEGINNING AGAIN @VA04250 00209000
*************************************************************** 00210000
* NOW APPEND THE SORTED LOAD MAP TO THE END OF THE DUMP. 00211000
* THREE 4096 CHARACTER RECORDS WILL BE WRITTEN. 00212000
*************************************************************** 00213000
WRTOUT LR R3,R9 POINT TO OUTPUT BUFFER @VA04250 00214000
LA R4,WRITCNT COUNT WRITES TO DUMP @VA04250 00215000
WRITE LA R2,DUMPNAME POINT TO 'PRBNNNNN DUMP A1' @VA04250 00216000
FSWRITE (R2),BUFFER=(R3),ERROR=WRTERR,BSIZE=4096 @VA04250 00217000
A R3,FOURK GET NEXT OUTPUT AREA @VA04250 00218000
BCT R4,WRITE AND GO WRITE IT @VA04250 00219000
FSCLOSE (R2) @VA04250 00220000
B ALLDONE WE ARE FINISHED @VA04250 00221000
*************************************************************** 00222000
* TERMINAL WRITE 00223000
*************************************************************** 00224000
WRTERM WRTERM (R2),(R3) @VA04250 00225000
BR R4 RETURN @VA04250 00226000
*************************************************************** 00227000
* THE CPEND ADDRESS IN THE DUMP IS NOT THE SAME AS THAT IN THE 00228000
* 'CPNUC MAP ' FILE. HRC001DM 00229490
* DMMMAP801I FILE 'NUC MAP IS NOT VALID FOR THIS DUMP' 00230000
*************************************************************** 00231000
MAPERROR MVC MSGMAP2,NUCMAPFN MOVE FILE NAME TO MSG @VA04250 00232000
MVC MSGMAP3,NUCMAPFT MOVE FILE TYPE TO MSG @VA04250 00233000
MVC MSGMAP4(L'NUCMAPFM),NUCMAPFM FILE MODE TO MSG @VA04250 00234000
LA R2,MSGMAP DMMMAP801I MSG @VA04250 00235000
LA R3,MSGMAPL LENGTH OF MESSAGE @VA04250 00236000
BAL R4,WRTERM GO PUT MESSAGE ON TERMINAL @VA04250 00237000
B CONTMSG GO ISSUE PROCEEDING MSG @VA04250 00238000
*************************************************************** 00239000
* READ ERROR ON FILE 'CPNUC MAP A' HRC001DM 00240490
*************************************************************** 00241000
READERR CVD R15,WKDWD CONVERT FSREAD RETURN TO DEC @VA04250 00242000
UNPK RDCODE,DECNUM(DECLN) UNPK DECIMAL RC TO MSG @VA04250 00243000
OI RDCODE2,NUMERIC MAKE IT READABLE @VA04250 00244000
CLI RETRYSW,SWITCHON ARE WE IN SUBSEQUENT READ @VA04250 00245000
BE RETRYMSG YES, BUILD DIFFERENT MSG @VA04250 00246000
LA R2,MSGREAD DMMMAP810S ERROR MESSAGE @VA04250 00247000
LA R3,MSGREADL LENGTH OF ERROR MESSAGE @VA04250 00248000
MVC TEXT5(MSGREADL),MSGREAD ERR MSG TO REPT TEXT @VA04250 00249000
BAL R4,WRTERM OUTPUT MESSAGE TO TERMINAL @VA04250 00250000
LA R2,NUCMAPFN POINT TO NUC MAP FILENAME @VA04250 00251000
FSCLOSE (R2) @VA04250 00252000
B CONTMSG ISSUE DMMMAP802I MESSAGE @VA04250 00253000
RETRYMSG MVC RETRYCD(L'RDCODE),RDCODE RETURN CODE TO MSG @VA04250 00254000
MVC RETRYRD1(L'NUCMAPFN),NUCMAPFN FILE NAME TO MSG @VA04250 00255000
MVC RETRYRD2(L'NUCMAPFT),NUCMAPFT FILE TYPE TO MSG @VA04250 00256000
MVC RETRYRD3(L'NUCMAPFM),NUCMAPFM FILE MODE TO MSG @VA04250 00257000
LA R2,RETRYRDM ADDRESS OF READ ERR MSG @VA04250 00258000
LA R3,RETRYRDL LENGTH OF MESSAGE @VA04250 00259000
BAL R4,WRTERM GO TO COMMON WRITE @VA04250 00260000
B CONTMSG GO WRITE PROCEEDING MSG @VA04250 00261000
WRTERR CVD R15,WKDWD CONVERT RET CODE TO DECIMAL @VA04250 00262000
UNPK WRCODE,DECNUM(DECLN) UNPK DECIMAL RC TO MSG @VA04250 00263000
OI WRCODE2,NUMERIC MAKE IT READABLE @VA04250 00264000
LA R2,MSGWRT DMMMAP200S ERROR MESSAGE @VA04250 00265000
LA R3,MSGWRTL MESSAGE LENGTH @VA04250 00266000
MVC TEXT5(MSGWRTL),MSGWRT ERR MSG TO REPT TEXT @VA04250 00267000
BAL R4,WRTERM PUT ERR MESSAGE ON TERMINAL @VA04250 00268000
LA R2,DUMPNAME POINT TO FILE NAME @VA04250 00269000
FSCLOSE (R2) @VA04250 00270000
B RETCOD8A RETURN TO CALLER @VM04420 00271000
CONTMSG LA R2,MSGCONT DMMMAP802I PROCEEDING... @VA04250 00272000
LA R3,MSGCONTL MESSAGE LENGTH @VA04250 00273000
BAL R4,WRTERM PUT MESSAGE ON TERMINAL @VA04250 00274000
************************************************************* 00275000
* * PROMPT THE USER TO ENTER THE NAME OF THE NUCLEUS LOAD MAP 00276000
************************************************************* 00277000
MAPNAME LA R2,MSGENT ADDRESS OF MESSAGE @VA04250 00278000
LA R3,MSGENTLN LENGTH OF MESSAGE @VA04250 00279000
BAL R4,WRTERM GO WRITE MESSAGE @VA04250 00280000
MVI ENDFOUND,SWTCHOFF RESET CPEND FOUND SWITCH @VA04250 00281000
RDTERM PROMPT READ USER REPLY @VA04250 00282000
LTR R0,R0 CHECK FOR NO REPLY @VA04250 00283000
BZ RETCOD8 IF NULL REPLY QUIT @VA04250 00284000
B CHECKIN LETS BUILD A FN FT FM @VA04250 00285000
************************************************************* 00286000
** HERE TO CHECK USER INPUT. ALLOW UP TO 5 BLANKS PRECEDING 00287000
** FILE NAME AND FIVE BLANKS BETWEEN FILE TYPE AND FILE MODE. 00288000
** IF FILE MODE IS LEFT BLANK, DEFAULT TO MODE 'A1'. 00289000
************************************************************* 00290000
CHECKIN LA R5,BLANKCNT SET BLANK COUNT TO FIVE @VA04250 00291000
LA R6,PROMPT GET ADDRESS OF USER INPUT @VA04250 00292000
FNCHK CLI 0(R6),BLANK IS FIRST CHARACTER BLANK? @VA04250 00293000
BNE FNMOVE IF NOT MOVE 1ST CHAR FN @VA04250 00294000
LA R6,ONEBYTE(R6) INCREMENT INPUT AREA @VA04250 00295000
BCT R5,FNCHK IF BLANK CHECK NEXT CHAR. @VA04250 00296000
B MAPNAME @VA04250 00297000
FNMOVE MVC NUCMAPFN,FNCLEAR CLEAR FILE NAME AREA @VA04250 00298000
LA R4,NUCMAPFN R4 HAS FN ADDRESS @VA04250 00299000
FNMOVE1 MVC 0(ONEBYTE,R4),0(R6) MOVE ONE BYTE TO FN @VA04250 00300000
LA R6,ONEBYTE(R6) INCREMENT INPUT AREA @VA04250 00301000
LA R4,ONEBYTE(R4) INCREMENT OUTPUT AREA @VA04250 00302000
LA R3,FNEND START OF FT ADDRESS @VA04250 00303000
CR R4,R3 END OF FN? @VA04250 00304000
BE FNINCR YES, GO MOVE FILE TYPE @VA04250 00305000
CLI 0(R6),BLANK IS IT BLANK? @VA04250 00306000
BNE FNMOVE1 NO, GO MOVE IT @VA04250 00307000
FNINCR LA R6,ONEBYTE(R6) INCREMENT INPUT AREA @VA04250 00308000
FTCHECK LA R5,BLANKCNT RESET BLANK COUNT AMOUNT @VA04250 00309000
FTBLANK CLI 0(R6),BLANK IS IT BLANK? @VA04250 00310000
BNE FTMOVE NO, GO MOVE IT @VA04250 00311000
LA R6,ONEBYTE(R6) INCREMENT INPUT AREA @VA04250 00312000
BCT R5,FTBLANK GO CHECK AGAIN FOR BLANK @VA04250 00313000
B MAPNAME GO BACK AND LET HIM TRY AGAIN @VA04250 00314000
FTMOVE MVC NUCMAPFT,FTCLEAR CLEAR FILE TYPE AREA @VA04250 00315000
LA R4,NUCMAPFT R4 HAS FT ADDRESS @VA04250 00316000
FTMOVE1 MVC 0(ONEBYTE,R4),0(R6) MOVE ONE BYTE TO FT @VA04250 00317000
LA R6,ONEBYTE(R6) INCREMENT INPUT AREA @VA04250 00318000
LA R4,ONEBYTE(R4) INCREMENT OUTPUT AREA @VA04250 00319000
LA R3,FTEND END OF FILE NAME @VA04250 00320000
BE FTINCR YES GO MOVE FILE MODE @VA04250 00321000
CLI 0(R6),BLANK IS IT BLANK? @VA04250 00322000
BNE FTMOVE1 NO, GO MOVE IT @VA04250 00323000
FTINCR LA R6,ONEBYTE(R6) INCREMENT INPUT AREA @VA04250 00324000
B FMCHECK GO GET FILE MODE @VA04250 00325000
FMCHECK LA R5,BLANKCNT RESET BLANK COUNT @VA04250 00326000
FMBLANK CLI 0(R6),BLANK IS IT BLANK? @VA04250 00327000
BNE FMMOVE NO, GO MOVE IT @VA04250 00328000
LA R6,ONEBYTE(R6) INCREMENT INPUT AREA @VA04250 00329000
BCT R5,FMBLANK GO LOOK AT NEXT CHAR @VA04250 00330000
MVC NUCMAPFM,FMDEF NO ENTRY, DEFAULT TO A1 @VA04250 00331000
B MAPSTATE GO DO FSSTATE FOR MAP @VA04250 00332000
FMMOVE MVC NUCMAPFM(ONEBYTE),0(R6) MOVE FILE MODE @VA04250 00333000
MAPSTATE LA R2,NUCMAPFN GET FN-FT-FM FOR STATE @VA04250 00334000
MVI RETRYSW,SWITCHON TURN ON READ RETRY SWITCH @VA04250 00335000
FSSTATE (R2),ERROR=STATERR IS MAP NAME VALID? @VA04250 00336000
MVI ENDFOUND,SWTCHOFF RESET CPEND FOUND SWITCH @VA04250 00337000
L R9,PARMSAVE GET ADDRESS OF PARM SAVE @VA04250 00338000
L R9,0(,R9) BUFF ADDRESS FROM PARM @VA04250 00339000
LR R8,R9 PUT BUFF ADDRESS IN R8 @VA04250 00340000
B READ IF YES GO READ IT @VA04250 00341000
STATERR MVC MAPERR1(L'NUCMAPFN),NUCMAPFN FILE NAME TO MSG @VA04250 00342000
MVC MAPERR2(L'NUCMAPFT),NUCMAPFT FILE NAME TO MSG @VA04250 00343000
MVC MAPERR3(L'NUCMAPFM),NUCMAPFM FILE MODE TO MSG @VA04250 00344000
MVC STATERRM(L'MAP807),MAP807 MOVE 807I TO MSG @VA04250 00345000
LA R2,STATERRM MESSAGE TEXT @VA04250 00346000
LA R3,STATERRL MESSAGE TEXT LENGTH @VA04250 00347000
BAL R4,WRTERM GO WRITE STATE ERR MSG @VA04250 00348000
B CONTMSG GO SET UP PROCEEDING MSG @VA04250 00349000
RETCOD8 L R13,SAVEAREA+8 REST CALLER'S SAVEAREA PTR @VA04250 00350000
MVC MSGMAP2,NUCMAPFN SET UP MSG FOR REPORT TEXT @VA04250 00351000
MVC MSGMAP3,NUCMAPFT FILE TYPE TO MSG @VA04250 00352000
MVC MSGMAP4,NUCMAPFM FILE MODE TO MSG @VA04250 00353000
MVC TEXT5(MSGMAPL),MSGMAP ERROR MSG TO REPORT TEXT @VA04250 00354000
RETCOD8A L R13,SAVEAREA+8 RESTORE SAVEAREA POINTER @VM04420 00355000
LM R14,R12,12(R13) RESTORE CALLER'S REGISTERS @VM04420 00356000
LA R15,RETCODE8 LOAD RETURN CODE 8 @VA04250 00357000
BR R14 RETURN @VA04250 00358000
ALLDONE L R13,SAVEAREA+8 REST CALLER'S SAVEAREA PTR @VA04250 00359000
LM R14,R12,12(R13) CALLER'S REGISTERS @VA04250 00360000
SR R15,R15 RETURN CODE ZERO @VA04250 00361000
BR R14 RETURN @VA04250 00362000
EJECT 00363000
*************************************************************** 00364000
* CONSTANTS SAVEAREAS AND EQUATES 00365000
*************************************************************** 00366000
SAVEAREA DS 18F OUR SAVEAREA @VA04250 00367000
WKDWD DS D DOUBLE WORD FOR WORK AREA @VA04250 00368000
********* 00369000
DUMPNAME DS CL8 PRBNNNNN DUMP NAME @VA04250 00370000
DC C'DUMP A1' FILETYPE AND FILEMODE @VA04250 00371000
********* 00372000
NUCMAPFN DC CL8'CPNUC ' NUC MAP FILE NAME HRC001DM 00373490
NUCMAPFT DC CL8'MAP ' NUC MAP FILE TYPE @VA04250 00374000
NUCMAPFM DC CL2'* ' NUC MAP FILE MODE HRC001DM 00375490
PROMPT DC CL132' ' USER INPUT AREA @VA04250 00376000
FNCLEAR DC CL8' ' 8 BLANKS TO CLEAR FILE NAME @VA04250 00377000
FTCLEAR DC CL8' ' 8 BLANKS TO CLEAR FILE TYPE @VA04250 00378000
FMDEF DC CL2'A1' DEFAULT FILE MODE A1 @VA04250 00379000
DS F @VA04250 00380000
PARMSAVE DC CL4' ' PARM ADDRESS SAVE AREA @VA04250 00381000
RETRYSW DC CL1' ' READ RETRY SWITCH @VA04250 00382000
ENDFOUND DC CL1' ' CPEND FOUND SWITCH @VA04250 00383000
STATERRM DC C' ''' @VA04250 00384000
MAPERR1 DC CL9' ' FILE NAME MESSAGE ENTRY @VA04250 00385000
MAPERR2 DC CL9' ' FILE TYPE MESSAGE ENTRY @VA04250 00386000
MAPERR3 DC CL2' ' FILE MODE ENTRY @VA04250 00387000
DC X'7D' APOSTROPHE @VA04250 00388000
STATERRL EQU *-STATERRM LENGTH OF MESSAGE @VA04250 00389000
RETRYRDM DC C'DMMMAP810S Error ''' HRC001DM 00390490
RETRYCD DS CL3 RETURN CODE @VA04250 00391000
DC C''' reading file ''' HRC001DM 00392490
RETRYRD1 DC CL9' ' FILE NAME LOCATION @VA04250 00393000
RETRYRD2 DC CL9' ' FILE TYPE MSG LOCATION @VA04250 00394000
RETRYRD3 DC CL2' ' FILE MODE MSG LOCATION @VA04250 00395000
DC X'7D' APOSTROPHE @VA04250 00396000
RETRYRDL EQU *-RETRYRDM LENGTH OF MESSAGE @VA04250 00397000
MSGENT DC C'DMMMAP806R Enter FN FT FM of NUCLEUS LOAD MAP or enterX00398590
null' HRC001DM 00399180
MSGENTLN EQU *-MSGENT LENGTH OF MESSAGE @VA04250 00400000
MAP807 DC C'DMMMAP807I Unable to locate ' HRC001DM 00401490
VSHARE DC V(SHARECON) COMMON SHARED CONSTANTS @VA04250 00402000
NUMERIC EQU X'F0' USED TO CHK FOR NUMER. DATA @VA04250 00403000
ONE EQU 1 1 FOR LOAD ADDRESS ETC. @VA04250 00404000
FOUR EQU 4 4 FOR LOAD ADDRESS ETC. @VA04250 00405000
EIGHT EQU 8 8 FOR LOAD ADDRESS ETC. @VA04250 00406000
NINE EQU 9 9 FOR LOAD ADDRESS ETC. @VA04250 00407000
TWELVE EQU 12 12 FOR LOAD ADDRESS ETC. @VA04250 00408000
FNEND EQU NUCMAPFT START OF FT IS END OF FN @VA04250 00409000
FTEND EQU NUCMAPFM END OF FILE TYPE @VA04250 00410000
INLINE DS CL160 NUC MAP INPUT RECORD @VA04832 00411000
EOF DC H'12' END OF FILE @VA04250 00412000
OUTADDR EQU 8 INCREMENT OUTPUT ADDRESS @VA04250 00413000
ADDNINE EQU 9 TRANSLATE VALUE @VA04250 00414000
BUFFNXT EQU 4 INCREMENT BUFFER ADDRESS @VA04250 00415000
OUTNEXT EQU 4 DISPLACEMENT OF NEXT OUTPUT AREA @VA04250 00416000
NEXTREC EQU 12 DISPL.FOR LOAD MAP ENTRIES @VA04250 00417000
SWTCHOFF EQU X'00' SWITCH OFF INDICATOR @VA04250 00418000
SWITCHON EQU X'FF' SWITCH ON INDICATOR @VA04250 00419000
BLANKCNT EQU 5 BLANK COUNT = 5 @VA04250 00420000
BLANK EQU C' ' EQUATE BLANK TO '40' @VA04250 00421000
ONEBYTE EQU 1 COUNT FOR MOVING ONE BYTE @VA04250 00422000
FOURK DC F'4096' CONSTANT OF 4K @VA04250 00423000
*************************************************************** 00424000
* ERROR MESSAGES 00425000
*************************************************************** 00426000
MSGMAP DC C'DMMMAP801I NUC MAP ' INVALID MSG NUMBER @VA04250 00427000
MSGMAP1 DC X'7D' @VA04250 00428000
MSGMAP2 DC CL8' ' FILE NAME FOR 801 MSG @VA04250 00429000
DC CL1' ' @VA04250 00430000
MSGMAP3 DC CL8' ' FILE TYPE FOR 801 MSG @VA04250 00431000
DC CL1' ' @VA04250 00432000
MSGMAP4 DC CL2' ' FILE MODE FOR 801 MSG @VA04250 00433000
DC X'7D' APOSTROPHE FOR FN FT FM @VA04250 00434000
MSGMAP5 DC C' not valid for this DUMP' HRC001DM 00435490
MSGMAPL EQU *-MSGMAP LENGTH OF MESSAGE @VA04250 00436000
MSGREAD DC C'DMMMAP810S Error ''' HRC001DM 00437490
RDCODE DS CL3 FSREAD RETURN CODE @VA04250 00438000
DC C''' reading file ''CPNUC MAP * ''' HRC001DM 00439490
MSGREADL EQU *-MSGREAD LENGTH OF MESSAGE @VA04250 00440000
MSGWRT DC C'DMMMAP200S Error ''' HRC001DM 00441490
WRCODE DS CL3 FSWRITE RETURN CODE @VA04250 00442000
DC C''' writing file ''' HRC001DM 00443490
WRFN DS CL8 PRBNNNNN (DUMP FILENAME) @VA04250 00444000
DC C' DUMP A1''' @VM04420 00445000
MSGWRTL EQU *-MSGWRT LENGTH OF MESSAGE @VA04250 00446000
MSGCONT DC C'DMMMAP802I Proceeding.....' HRC001DM 00447490
MSGCONTL EQU L'MSGCONT LENGTH OF MESSAGE @VA04250 00448000
PATCH DC 50F'0' PATCH AREA @VA04250 00449000
LTORG @VA04250 00450000
*************************************************************** 00451000
* DSECT OF NUC MAP RECORD WHICH HAS VALID MOD NAME AND ADDR: 00452000
* DMKAAAEE AT XXXXXX 00453000
*************************************************************** 00454000
NUCMAP DSECT @VA04250 00455000
NUCMAP1 DS 0CL132 LENGTH OF PRINT RECORD @VA04250 00456000
NC1 DS CL7 BLANKS @VA04250 00457000
NCMODULE DS 0CL8 DMKAAAEE @VA04250 00458000
NCDMK DS CL3 'DMK' INDICATOR @VA04250 00459000
NCAAAEE DS CL5 REST OF MODULE NAME @VA04250 00460000
NC2 DS CL1 BLANK @VA04250 00461000
NCAT DS CL2 'AT' @VA04250 00462000
NC3 DS CL1 BLANK @VA04250 00463000
NCADDR DS CL6 EBCDIC HEX ADDRESS @VA04250 00464000
LASTBYTE EQU NCADDR+L'NCADDR-1 LAST BYTE OF HEX ADDR. FIELD @VA04250 00465000
SWITCH EQU 1 SWITCH SET @VA04250 00466000
PASTNAME EQU 9 ADDRESS PORTION OF MAP RECORD @VA04250 00467000
MAPADDR EQU 3 LENGTH OF MAP ADDRESS FIELD @VA04250 00468000
WRITCNT EQU 5 NUMBER OF DISK WRITES @VA08369 00469000
NC4 DS CL107 BLANKS @VA04250 00470000
DECNUM EQU WKDWD+6 RET CODE DECIMAL FIELD @VA04250 00471000
DECLN EQU 2 LENGTH OF DECIMAL FIELD @VA04250 00472000
RDCODE2 EQU RDCODE+2 LOW ORDER OF RET CODE @VA04250 00473000
WRCODE2 EQU WRCODE+2 LOW ORDER OF RET CODE @VA04250 00474000
RETCODE8 EQU 8 RETURN CODE 8 @VA04250 00475000
RECLEN EQU 80 LENGTH OF OUTPUT RECORD @VA04250 00476000
SPACE 1 00477000
COPY EXCONST @VA04250 00478000
REGEQU @VA04250 00479000
END 00480000