Table of Contents

DMMSEA Source

References

Source Listing

DMMSEA.ASSEMBLE.txt
  1. SEA TITLE 'DMMSEA (IPCS) VM/370 - RELEASE 6' 00001000
  2. *************************************************************** 00002000
  3. * 00003000
  4. * MODULE NAME: DMMSEA 00004000
  5. * 00005000
  6. * 00006000
  7. * FUNCTION: LOCATE ANY PROBLEM(S) WHICH ARE DUPLICATES OF A 00007000
  8. * NEWLY ENTERED PROBLEM. 00008000
  9. * 00009000
  10. * 00010000
  11. * ATTRIBUTES: NON-REENTRANT 00011000
  12. * NON-REUSABLE 00012000
  13. * 00013000
  14. * 00014000
  15. * ENTRY POINTS: DMMSEA 00015000
  16. * 00016000
  17. * 00017000
  18. * ENTRY CONDITIONS: 00018000
  19. * R1 POINTS TO A PARM LIST AS FOLLOWS: 00019000
  20. * WD1 POINTER TO INTERNAL DATA AREA 00020000
  21. * WD2 POINTER TO KEYWORD STRING (WITH LENGTH FIELDS) 00021000
  22. * WD3 POINTER TO TEXT AREA FOR THIS PROBLEM 00022000
  23. * 00023000
  24. * EXIT CONDITIONS: 00024000
  25. * EXIT CONDITIONS PASSED IN R15 00025000
  26. * 0 NO DUPS FOUND 00026000
  27. * 4 DUPS FOUND 00027000
  28. * 8 UNRECOVERABLE ERROR ENCOUNTERED 00028000
  29. * 00029000
  30. * CALLS TO OTHER ROUTINES: DMMSUM (TO POST DUPLICATE STATUS 00030000
  31. * TO SUMMARY CONTROL RECORD OF PROBLEM) 00031000
  32. * 00032000
  33. * 00033000
  34. * EXTERNAL REFERENCES: NONE 00034000
  35. * 00035000
  36. * 00036000
  37. * TABLES/WORKAREAS: NONE 00037000
  38. * 00038000
  39. * 00039000
  40. * REGISTER USAGE: 00040000
  41. * R13 SAVEAREA 00041000
  42. * R12 BASE REGISTER 00042000
  43. * R11 INTSECT (INTERNAL DATA AREA) 00043000
  44. * R10 NOT USED 00044000
  45. * R9 SYMSECT (SYMPTOM SUMMARY PROBLEM CONTROL RECORD) 00045000
  46. * R8 POINTER TO NEW PROBLEM KEY AREA 00046000
  47. * R7 POINTER TO NEW PROBLEM CURRENT KEY 00047000
  48. * R6 NEW PROBLEM CURRENT KEY LENGTH 00048000
  49. * R5 WORK 00049000
  50. * R4 OLD PROBLEM CURRENT KEY POINTER (+ WORK) 00050000
  51. * R3 OLD PROBLEM CURRENT KEY LENGTH (+ WORK) 00051000
  52. * R2 WORK 00052000
  53. * 00053000
  54. * 00054000
  55. * NOTES: NONE 00055000
  56. * 00056000
  57. * 00057000
  58. * OPERATION: 00058000
  59. * 00059000
  60. * THE KEYWORDED DATA FOR THE NEW PROBLEM IS COMPARED AGAINST 00060000
  61. * THAT OF EACH PROBLEM ALREADY KNOWN TO THE SYSTEM AND ANY 00061000
  62. * EXACT MATCHES ARE CONSIDERED DUPLICATE PROBLEMS. 00062000
  63. * THE USER IS INFORMED OF THE PROBLEM NUMBER, STATUS, AND PTF 00063000
  64. * OF EACH DUPLICATE PROBLEM UP TO A MAXIMUM OF 10. 00064000
  65. * 00065000
  66. * DETERMINING AN EXACT DUPLICATE. 00066000
  67. * EACH KYWD PLUS DATA IN THE NEW PROBLEM IS COMPARED AGAINST 00067000
  68. * ALL KYWDS PLUS DATA FOR EACH OLD PROBLEM. THE OLD PROBLEM 00068000
  69. * KEYWORDS ARE OBTAINED FROM THE SYMPTOM SUMMARY FILE. IF A 00069000
  70. * MATCH IS NOT FOUND FOR A GIVEN KEYWORD THAT OLD PROBLEM IS 00070000
  71. * CONSIDERED NOT TO BE A MATCH AND THE PROCESSING CONTINUES 00071000
  72. * WITH THE NEXT PROBLEM FOUND IN THE SYMPTOM SUMMARY FILE. 00072000
  73. * WHEN THE PROBLEM NO. OF THE NEXT OLD PROBLEM IS THE SAME AS 00073000
  74. * THAT OF THE NEW PROBLEM THE SEARCH IS CONSIDERED TO BE DONE 00074000
  75. * (THE NEW PROB HAS ALREADY BEEN ADDED TO THE SYMPTOM SUMMARY 00075000
  76. * FILE). 00076000
  77. * 00077000
  78. * ERROR MESSAGES: 00078000
  79. * 00079000
  80. * DMMSEA100S ERROR 'NNN' READING FILE 'SYMPTOM SUMMARY A1' 00080000
  81. * 00081000
  82. *************************************************************** 00082000
  83. EJECT 00083000
  84. DMMSEA CSECT @VA04250 00084000
  85. USING DMMSEA,R15 TEMPORARY ADDRESSABILITY @VA04250 00085000
  86. B START BRANCH AROUND EYECATCHER @VA04250 00086000
  87. DS 0D @VA04250 00087000
  88. MODNAME DC C'DMMSEA ' MODULE NAME @VA04250 00088000
  89. RELLEV DC C'REL4LEV0' RELEASE AND LEVEL @V4075A1 00089000
  90. START STM R14,R12,12(R13) SAVE CALLER'S REGISTERS @VA04250 00090000
  91. LR R12,R15 ESTABLISH OUR BASE REGISTER @VA04250 00091000
  92. DROP R15 @VA04250 00092000
  93. USING DMMSEA,R12 OUR BASE @VA04250 00093000
  94. ST R13,SAVEAREA+8 SAVE CALLERS SAVEAREA IN OURS @VA04250 00094000
  95. LA R13,SAVEAREA POINT TO OUR SAVEAREA @VA04250 00095000
  96. LM R6,R9,0(R1) GET INT,KEY, AND TEXT AREAS @VA04250 00096000
  97. USING INTSECT,R11 ADDRESSABILITY FOR INTERNAL DATA @VA04250 00097000
  98. USING SYMSECT,R9 ADDRESSABILITY FOR SUMMARY CTL @VA04250 00098000
  99. LR R8,R7 GET KEY AREA PTR FOR NEW PROBLEM @VA04250 00099000
  100. LH R2,0(R8) LENGTH OF KEY AREA IN NEW PROBLEM@VA04250 00100000
  101. LA R3,0(R2,R8) CALCULATE END @VA04250 00101000
  102. ST R3,NEWEND SAVE @VA04250 00102000
  103. LR R11,R6 GET VMI HDR RECORD POINTER @VA04250 00103000
  104. MVC PROBNO,INTPNUM MOVE PROBLEM NUMBER @VA04250 00104000
  105. LA R9,HEADIN SYMPTOM SUMMARY HDR INPUT @VA04250 00105000
  106. *************************************************************** 00106000
  107. * READ A SUMMARY CONTROL RCD AND SEE IF WE HAVE REACHED THE END 00107000
  108. *************************************************************** 00108000
  109. RDHEAD LA R5,ONE READ 1 RECORD @VA04250 00109000
  110. LA R3,CARDLEN BSIZE @VA04250 00110000
  111. LA R6,HEADIN BUFFER POINTER @VA04250 00111000
  112. BAL R10,FSREAD DO READ @VA04250 00112000
  113. CLC PROBNO,SYMPNUM LAST ENTRY IS THIS PROBLEM @VA04250 00113000
  114. BE ENDRTN YES, WE KNOW WE ARE AT THE END @VA04250 00114000
  115. IC R5,SYMCCNT NUMBER OF KEY RCDS IN THIS ENTRY @VA04250 00115000
  116. MR R2,R5 CALC BUFFER SIZE @VA04250 00116000
  117. LA R6,INPUT POINT TO INPUT BUFFER @VA04250 00117000
  118. BAL R10,FSREAD GO GET KEY RCDS FOR THIS PROBLEM @VA04250 00118000
  119. LA R7,KYFLDLN(R8) POINTER TO NEW @VA04250 00119000
  120. LH R6,0(R7) GET KEY LENGTH @VA04250 00120000
  121. *************************************************************** 00121000
  122. * BEGIN AT START OF THIS PROBLEM'S KYWDS AND SEE IF IT IS A DUP 00122000
  123. *************************************************************** 00123000
  124. OLDREST LA R4,INPUT POINT PAST TOTAL LENGTH FIELD @VA04250 00124000
  125. LH R3,0(R4) GET FIRST KEY+DAT+LNTH LENGTH @VA04250 00125000
  126. LA R2,0(R4,R3) CALCULATE END OF DATA @VA04250 00126000
  127. ST R2,OLDEND SAVE IT @VA04250 00127000
  128. LA R4,KYFLDLN(R4) FIRST KEYLN+KEY+DATA @VA04250 00128000
  129. * LOOP THROUGH THIS UNTIL MATCH NOT FOUND OR END 00129000
  130. OLDLOOP LH R3,0(R4) GET OLD KEY+DATA LENGTH @VA04250 00130000
  131. LR R1,R3 SAVE LENGTH TEMPORARILY @VA04250 00131000
  132. BCTR R3,0 FOR EXECUTE @VA04250 00132000
  133. CR R1,R6 SAME LENGTH ENTRY? @VA04250 00133000
  134. BNE NOTSAME NO @VA04250 00134000
  135. EX R3,KYCMPR SAME? @VA04250 00135000
  136. BNE NOTSAME NO @VA04250 00136000
  137. LA R7,0(R6,R7) NEW KEY @VA04250 00137000
  138. C R7,NEWEND END OF NEW? @VA04250 00138000
  139. BNL PUTOUT GO TELL ABOUT DUPS @VA04250 00139000
  140. LH R6,0(R7) LENGTH OF NEW KEY @VA04250 00140000
  141. LA R4,INPUT+KYFLDLN START SEARCHING OLD FROM TOP @VA04250 00141000
  142. B OLDLOOP GO TO IT @VA04250 00142000
  143. *************************************************************** 00143000
  144. * CYCLE THROUGH ALL OF THIS PROBLEM LOOKING FOR THIS KEYWORD 00144000
  145. * IF END OF KYWDS IS FOUND HERE WE KNOW WE DON'T HAVE A DUP 00145000
  146. *************************************************************** 00146000
  147. NOTSAME LA R4,ONE(R4,R3) NEXT OLD ENTRY @VA04250 00147000
  148. C R4,OLDEND END? @VA04250 00148000
  149. BNL RDHEAD YES, NOT A DUP OF THIS PROB @VA04250 00149000
  150. B OLDLOOP EXAMINE ALL THIS PROB'S ENTRIES @VA04250 00150000
  151. *************************************************************** 00151000
  152. * PUT IN OUTPUT AND INCR COUNT AND SEE IF GT 10 00152000
  153. *************************************************************** 00153000
  154. PUTOUT CLI FRSTSW,FRSTON WE BEEN HERE BEFORE? @VA04250 00154000
  155. BE NODUPMSG YES, ONLY PUT OUT HEADER ONCE @VA04250 00155000
  156. MVI FRSTSW,FRSTON INDICATE WE'VE BEEN HERE @VA04250 00156000
  157. MVC DUPSAVE,SYMPNUM LATER WE'LL PUT FIRST DUP FOUND @VA04250 00157000
  158. * IN CONTROL RECORD FOR THIS PROBLEM. 00158000
  159. LA R2,MSGDUP 'THE FOLLOWING PROBLEMS ARE DUPS'@VA04250 00159000
  160. LA R3,L'MSGDUP LENGTH OF MESSAGE FOR WRTERM @VA04250 00160000
  161. BAL R10,WRTERM ISSUE DUP MESSAGE HEADER @VA04250 00161000
  162. NODUPMSG MVC OUTPUT(48),BLANKS CLEAR OUTPUT @VA04250 00162000
  163. MVC OPNUM,SYMPNUM PROBLEM NUMBER THIS IS A DUP OF @VA04250 00163000
  164. MVC ODATE,SYMCREAT WHEN THAT PROBLEM WAS CREATED @VA04250 00164000
  165. MVC OSTAT,SYMSTAT WHAT ITS CURRENT STATUS IS @VA04250 00165000
  166. CLC SYMPTF,BLANKS ANY PTF? @VA04250 00166000
  167. BE NOPTF NO @VA04250 00167000
  168. CLC SYMDUP1,=C'DUP OF ' COULD BE IN PTF AREA ALSO @VA04250 00168000
  169. BE NOPTF REDUNDANT SO SKIP IT @VA04250 00169000
  170. CLI SYMPTFDV,BLANK BLANK IN RIGHT PLACE FOR PTF? @VA04250 00170000
  171. BNE NOPTF NO, NOT A PTF FILENAME FILE TYPE @VA04250 00171000
  172. CLI SYMPTFFT,BLANK ANY FILE TYPE? @VA04250 00172000
  173. BE NOPTF NO, NOT A PTF @VA04250 00173000
  174. MVC OPTF1,=C'PTF=' TELL USER OF PTF AVAILABLITIY @VA04250 00174000
  175. MVC OPTF2,SYMPTF PTF FILENAME FILETYPE @VA04250 00175000
  176. NOPTF LA R2,OUTPUT POINT TO OUTPUT DATA @VA04250 00176000
  177. LA R3,LOUT LENGTH OF OUTPUT WRTERM @VA04250 00177000
  178. BAL R10,WRTERM PUT INFORMATION ON TERMINAL @VA04250 00178000
  179. IC R2,OUTCOUNT GET NUMBER OF MSGS WE'VE PUT OUT @VA04250 00179000
  180. CLI OUTCOUNT,TEN 10 DUPS FOUND? @VA04250 00180000
  181. BE ENDRTN YES @VA04250 00181000
  182. LA R2,ONE(R2) INCREMENT DUP COUNT @VA04250 00182000
  183. STC R2,OUTCOUNT AND STORE IT @VA04250 00183000
  184. B RDHEAD RESTART AT BEGIN OF OLD @VA04250 00184000
  185. KYCMPR CLC 0(0,R4),0(R7) EXECUTED INSTR. KEYS COMPARE? @VA04250 00185000
  186. ENDRTN FSCLOSE 'SYMPTOM SUMMARY A1' @VA04250 00186000
  187. CLI OUTCOUNT,OUTZERO NO DUPS FOUND? @VA04250 00187000
  188. BE NORMEXIT YES, RETURN CODE 0 @VA04250 00188000
  189. LA R1,UPDUP-PSIZE UPDATE THE SUMMARY CONTROL RECORD@VA04250 00189000
  190. MVC UPPRBNO,PROBNO TO INDICATE THAT THIS PROBLEM @VA04250 00190000
  191. MVC UPPRB,=C'PRB' IS A DUPLICATE OF ANOTHER. @VA04250 00191000
  192. L R15,VSUMMARY SUMMARY WILL DO THE UPDATE @VA04250 00192000
  193. BALR R14,R15 GO TO SUMMARY @VA04250 00193000
  194. B FNDRTRN WE'RE ALL DONE @VA04250 00194000
  195. *************************************************************** 00195000
  196. * SYMPTOM SUMMARY FILE READ ROUTINE 00196000
  197. *************************************************************** 00197000
  198. FSREAD FSREAD 'SYMPTOM SUMMARY A1',BUFFER=(R6),NOREC=(R5),BSIZE=(R3) 00198000
  199. LTR R15,R15 GOOD RETURN? @VA04250 00199000
  200. BNZ RDERR NO @VA04250 00200000
  201. BR R10 RETURN TO CALLER @VA04250 00201000
  202. *************************************************************** 00202000
  203. * TERMINAL SUPPORT ROUTINES 00203000
  204. *************************************************************** 00204000
  205. WRTERM WRTERM (R2),(R3) @VA04250 00205000
  206. BR R10 RETURN TO CALLER @VA04250 00206000
  207. *************************************************************** 00207000
  208. * READ ERROR ENCOUNTERED USE RETURN CODE 8 00208000
  209. *************************************************************** 00209000
  210. RDERR LR R2,R15 SAVE FSREAD RETURN CODE @VA04250 00210000
  211. FSCLOSE 'SYMPTOM SUMMARY A1' @VA04250 00211000
  212. CVD R2,WKDWD CONVERT RETURN CODE TO DECIMAL @VA04250 00212000
  213. UNPK RDCODE,WKDWD+SIX(TWO) UNPACK INTO MESSAGE @VA04250 00213000
  214. OI RDCODE+TWO,NUMERIC MAKE IT PRINTABLE @VA04250 00214000
  215. LA R2,MSGERR POINT TO ERROR MESSAGE @VA04250 00215000
  216. LA R3,MSGLNTH GET MESSAGE LENGTH @VA04250 00216000
  217. BAL R10,WRTERM GO DISPLAY ON TERMINAL @VA04250 00217000
  218. L R13,8(R13) RESTORE CALLER'S SAVEAREA POINTER@VA04250 00218000
  219. LM R14,R12,12(R13) RESTORE CALLER'S REGISTERS @VA04250 00219000
  220. LA R15,8 I/O ERROR RETURN CODE @VA04250 00220000
  221. BR R14 RETURN TO CALLER @VA04250 00221000
  222. *************************************************************** 00222000
  223. * EXIT ROUTINES 00223000
  224. *************************************************************** 00224000
  225. FNDRTRN L R13,8(R13) GET CALLERS SAVEAREA POINTER @VA04250 00225000
  226. LM R14,R12,12(R13) RESTORE CALLER'S REGISTERS @VA04250 00226000
  227. LA R15,4 DUP FOUND RETURN CODE @VA04250 00227000
  228. BR R14 RETURN TO CALLER @VA04250 00228000
  229. NORMEXIT L R13,8(R13) GET CALLER'S SAVEAREA POINTER @VA04250 00229000
  230. LM R14,R12,12(R13) RESTORE CALLER'S REGISTERS @VA04250 00230000
  231. SR R15,R15 NO DUPS FOUND RETURN CODE @VA04250 00231000
  232. BR R14 RETURN TO CALLER @VA04250 00232000
  233. EJECT 00233000
  234. *************************************************************** 00234000
  235. * SAVE AREAS, CONSTANTS, AND EQUATES 00235000
  236. *************************************************************** 00236000
  237. SAVEAREA DS 18F OUR SAVEAREA @VA04250 00237000
  238. WKDWD DS D WORK DOUBLE WORD @VA04250 00238000
  239. NEWEND DS F END OF NEW PROBLEM KEYWORD AREA @VA04250 00239000
  240. OLDEND DS F END OF OLD PROBLEM KEYWORD AREA @VA04250 00240000
  241. NEWCURR DS F WHERE WE ARE IN NEW KEY AREA @VA04250 00241000
  242. OLDCURR DS F WHERE WE ARE IN OLD KEY AREA @VA04250 00242000
  243. OUTCOUNT DC X'00' NUMBER OF DUPS FOUND SO FAR @VA04250 00243000
  244. OUTZERO EQU X'00' NOTHING OUTPUTTED YES @VA04250 00244000
  245. *************************************************************** 00245000
  246. * PARMS PASSED TO SUMMARY TO UPDATE SYMPTOM SUMMARY CTL RECORD 00246000
  247. *************************************************************** 00247000
  248. UPDUP DS 0CL8 PROBLEM NUMBER @VA04250 00248000
  249. UPPRB DC C'PRB' INDICATOR OF PRB FOR SUMMARY @VA04250 00249000
  250. UPPRBNO DS CL5 PROBLEM NUMBER PROPER @VA04250 00250000
  251. DC C'UPDUP ' MAKE SUMMARY POST PROBLEM AS DUP @VA04250 00251000
  252. DUPSAVE DS CL5 PROBLEM NUMBER OF DUPLICATE PROB @VA04250 00252000
  253. VSUMMARY DC V(DMMSUM) SUMMARY PROGRAM @VA04250 00253000
  254. SPACE 1 00254000
  255. *************************************************************** 00255000
  256. FRSTSW DC X'00' FIRST TIME SWITCH FOR DUP HEADER @VA04250 00256000
  257. FRSTON EQU X'01' 1ST TIME SW ON (NOT FIRST TIME @VA04250 00257000
  258. *************************************************************** 00258000
  259. SPACE 1 00259000
  260. MSGDUP DC C'THE FOLLOWING PROBLEM(S) ARE POSSIBLE DUPLICATES' 00260000
  261. PROBNO DS CL5 NEW PROBLEM PROBLEM NUMBER @VA04250 00261000
  262. SPACE 1 00262000
  263. MSGERR DC C'DMMSEA100S ERROR ''' @VA04250 00263000
  264. RDCODE DS CL3 RETURN CODE FROM FSREAD @VA04250 00264000
  265. DC C''' READING FILE ''SYMPTOM SUMMARY A1''' @VA04250 00265000
  266. MSGLNTH EQU *-MSGERR LENGTH OF ERROR MESSAGE @VA04250 00266000
  267. SPACE 1 00267000
  268. *************************************************************** 00268000
  269. * OUTPUT AREA FOR DUPLICATE PROBLEM INFO TO TERMINAL 00269000
  270. *************************************************************** 00270000
  271. OUTPUT DS 0CL40 OUTPUT AREA POINTER @VA04250 00271000
  272. OPNUM DS CL5 PROBLEM NUMBER @VA04250 00272000
  273. DC C' ' SEPARATOR @VA04250 00273000
  274. OSTAT DS CL8 OLD PROBLEM STATUS @VA04250 00274000
  275. DS CL1 SEPARATOR @VA04250 00275000
  276. ODATE DS CL8 OLD PROBLEM REPORTED DATE @VA04250 00276000
  277. DS CL1 SEPARATOR @VA04250 00277000
  278. OPTF1 DS CL4 PTF= INDICATOR @VA04250 00278000
  279. OPTF2 DS CL17 FN FT OF PTF FILE @VA04250 00279000
  280. LOUT EQU *-OUTPUT @VA04250 00280000
  281. *************************************************************** 00281000
  282. BLANKS DC 60C' ' BLANKS FOR CLEARING AREAS @VA04250 00282000
  283. BLANK EQU X'40' BLANK @VA04250 00283000
  284. NUMERIC EQU X'F0' MASK FOR MAKING UNPACKED PRINT @VA04250 00284000
  285. ONE EQU 1 FOR LA DISPLACEMENTS ETC. @VA04250 00285000
  286. TWO EQU 2 FOR LA DISPLACEMENTS ETC. @VA04250 00286000
  287. KYFLDLN EQU 4 SIZE OF KEY FIELD LENGTH FIELD @VA04250 00287000
  288. SIX EQU 6 DISPLACEMENT INTO WORK FOR RETCOD@VA04250 00288000
  289. PSIZE EQU 8 PARM ENTRY SIZE FOR DMMSUM @VA04250 00289000
  290. CARDLEN EQU 80 LENGTH OF DATA HUNKS @VA04250 00290000
  291. LTORG @VA04250 00291000
  292. HEADIN DS CL80 INPUT FOR SUMMARY CONTROL RECORD @VA04250 00292000
  293. INPUT DS 10CL80 INPUT FOR KYWD DATA FOR OLD PROB @VA04250 00293000
  294. TEN EQU 10 MAX NUMBER OF DUPS WE WILL DSPLY @VA04250 00294000
  295. PATCH DC 50F'0' PATCH AREA @VA04250 00295000
  296. COPY SYMSECT @VA04250 00296000
  297. COPY INTSECT @VA04250 00297000
  298. REGEQU @VA04250 00298000
  299. END 00299000