Table of Contents

DMMPRM Source

References

Source Listing

DMMPRM.ASSEMBLE.txt
  1. PRM TITLE 'DMMPRM (IPCS) VM/370 - RELEASE 6' 00001000
  2. * 00002000
  3. * MODULE NAME: DMMPRM 00003000
  4. * 00004000
  5. * 00005000
  6. * FUNCTION: FINAL RTN. IN THE DMMEDM COMPLEX. PROMPTS THE USER 00006000
  7. * FOR ANY INFO. HE MAY HAVE CONCERNING THE PROBLEM, 00007000
  8. * INCLUDING SUPPLEMENTARY DATA FILES AND TEXTUAL 00008000
  9. * NOTES ABOUT THE FAILURE. 00009000
  10. * 00010000
  11. * 00011000
  12. * ATTRIBUTES: NON-REENTRANT 00012000
  13. * NON-REUSABLE 00013000
  14. * 00014000
  15. * 00015000
  16. * ENTRY POINTS: DMMPRM 00016000
  17. * 00017000
  18. * 00018000
  19. * ENTRY CONDITIONS: COMMON SHARED CONSTANT AREA CONTAINS 00019000
  20. * INFORMATION GATHERED BY PREVIOUS ROUTINES. 00020000
  21. * 00021000
  22. * 00022000
  23. * EXIT CONDITIONS: TO DMMEDM WITH PROBLEM REPORT CREATED, THE 00023000
  24. * SYMPTOM SUMMARY FILE APPENDED, AND THE SUMMARY 00024000
  25. * RECORD UPDATED. 00025000
  26. * 00026000
  27. * 00027000
  28. * CALLS TO OTHER ROUTINES: NONE 00028000
  29. * 00029000
  30. * 00030000
  31. * EXTERNAL REFERENCES: SHARECON (COMMON CONSTANT AREA) 00031000
  32. * INTDATA (INTERNAL DATA AREA FOR WRITEREC) 00032000
  33. * 00033000
  34. * 00034000
  35. * TABLES/WORKAREAS: 00035000
  36. * 00036000
  37. * 00037000
  38. * REGISTER USAGE: R13 SAVEAREA 00038000
  39. * R12 BASE 00039000
  40. * R10 INTERNAL LINK REGISTER 00040000
  41. * R9 POINTER TO TERMINAL INPUT OR OUTPUT 00041000
  42. * R8 INTSECT (INTERNAL DATA AREA FOR WRITEREC) 00042000
  43. * R7 SHARECON (SHARED CONSTANT AREA) 00043000
  44. * R2-R6 WORK 00044000
  45. * 00045000
  46. * 00046000
  47. * NOTES: A 200 BYTE PATCH AREA EXISTS AT LABEL 'PATCH' 00047000
  48. * 00048000
  49. * 00049000
  50. * OPERATION: 00050000
  51. * 00051000
  52. * I. TELL THE USER THE NUMBER THIS PROBLEM HAS BEEN ASSIGNED 00052000
  53. * II. PROMPT THE USER FOR THE SEVERITY OF THE PROBLEM 00053000
  54. * III. CHECK WHICH KIND OF FAILURE WE ARE HANDLING, GO DO 00054000
  55. * APPROPRIATE PROCESSING. 00055000
  56. * A. WAIT STATE ERROR PROCESSING: 00056000
  57. * TELL USER OF THE APPARENT WAIT STATE CONDITION AND 00057000
  58. * PROMPT HIM FOR ANY INFORMATION HE CAN SUPPLY ABOUT 00058000
  59. * CONDITIONS AT THE TIME OF THE DUMP. 00059000
  60. * B. INCONCLUSIVE DUMP PROCESSING: 00060000
  61. * TELL USER THE DUMP IS INCONCLUSIVE AND ASK HIM TO 00061000
  62. * INDICATE WHY THE DUMP WAS TAKEN (LOOP, 00062000
  63. * PERFORMANCE OR OTHER. 00063000
  64. * C. PROCESSING ERROR IN PREVIOUS ROUTINE: 00064000
  65. * TELL USER OF PROCESSING ERROR AND INDICATE SUCH IN THE 00065000
  66. * PROBLEM REPORT. 00066000
  67. * D. IF NONE OF THE OTHER CONDITIONS CONTINUE WITH IV. 00067000
  68. * IV. PROMPT THE USER FOR THE NAMES AND LOCATION OF ANY 00068000
  69. * SUPPORTING DATA 00069000
  70. * V. PROMPT USER FOR A TEXTUAL DESCRIPTION OF THE PROBLEM. 00070000
  71. * VI. UPDATE THE SUMMARY RECORD WITH A PROBLEM NUMBER. 00071000
  72. * VII. CALL DMMWRT TO CREATE THE PROB. REPORT AND ADD TO THE 00072000
  73. * SYMPTOM SYMMARY FILE. 00073000
  74. * VIII. RETURN TO DMMEDM 00074000
  75. * 00075000
  76. * ERROR MESSAGES: DMMPRM804I ERROR IN DATA EXTRACTION 00076000
  77. * 00077000
  78. * 00078000
  79. *************************************************************** 00079000
  80. EJECT 00080000
  81. DMMPRM CSECT @VA04250 00081000
  82. USING DMMPRM,R15 TEMPORARY ADDRESSABILITY @VA04250 00082000
  83. B START BRANCH AROUND EYECATCHER @VA04250 00083000
  84. DS 0D @VA04250 00084000
  85. MODNAME DC C'DMMPRM ' MODULE NAME @VA04250 00085000
  86. RELLEV DC C'REL4LEV0' RELEASE AND LEVEL @V4075A1 00086000
  87. DROP R15 @VA04250 00087000
  88. START STM R14,R12,12(R13) SAVE CALLER'S REGISTERS @VA04250 00089000
  89. LR R12,R15 LOAD OUR BASE @VA04250 00090000
  90. USING DMMPRM,R12 ESTABLISH ADDRESSABILITY @VA04250 00091000
  91. ST R13,SAVEAREA+8 SAVE CALLER'S SAVEAREA @VA04250 00092000
  92. LA R13,SAVEAREA SET UP OUR SAVEAREA @VA04250 00093000
  93. L R8,INTERNAL POINT TO INTERNAL DATA AREA @VA04250 00094000
  94. USING INTSECT,R8 ADDRESSABILITY FOR INT. DATA @VA04250 00095000
  95. L R7,VSHARE POINT TO SHARED AREA @VA04250 00096000
  96. USING SHARECON,R7 SHARED CONSTANT ADDRESSABILITY @VA04250 00097000
  97. LA R5,TEXT6 GET START OF USER TEXT AREA @VA04250 00098000
  98. ST R5,TEXTCURR SAVE AS CURRENT POINTER @VA04250 00099000
  99. *************************************************************** 00100000
  100. *INFORM OPERATOR OF PROBLEM NUMBER THAT IS BEING PROCESSED. 00101000
  101. *************************************************************** 00102000
  102. TM TYPESW,PROCERR EXTRACTION ERROR BEEN POSTED? @VA04250 00103000
  103. BNO WPNUM NO @VA04250 00104000
  104. LA R9,MSG804I 'ERROR IN DATA EXTRACT' @VA04250 00105000
  105. LA R3,L'MSG804I SUPPLY WRTERM LENGTH OF MESSAGE @VA04250 00106000
  106. BAL R10,WRTERM GO INFORM USER @VA04250 00107000
  107. WPNUM MVC PROB,DUMPNUM GET PROBLEM NUMBER @VA04250 00108000
  108. LA R9,PROBX POINT TO MESSAGE @VA04250 00109000
  109. LA R3,PROBXL SUPPLY LENGTH OF MESSAGE @VA04250 00110000
  110. BAL R10,WRTERM GO TELL USER @VA04250 00111000
  111. *************************************************************** 00112000
  112. * PROMPT THE USER TO SUPPLY THE SEVERITY FOR THIS PROBLEM 00113000
  113. *************************************************************** 00114000
  114. GETSEV LA R9,SEVMSG ' ENTER SEVERITY (1 2 3 OR 4)' @VA04250 00115000
  115. LA R3,L'SEVMSG LENGTH OF MESSAGE TO WRTERM @VA04250 00116000
  116. BAL R10,WRTERM GO PROMPT USER FOR SEVERITY @VA04250 00117000
  117. LA R9,ADDTEXT POINT TO TERMINAL READ INPUT AREA@VA04250 00118000
  118. BAL R10,RDTERM GO READ USER RESPONSE @VA04250 00119000
  119. MVC INTSEV,ADDTEXT MOVE SEVERITY TO INT.DATA AREA @VA04250 00120000
  120. MVC INTX2,CPCON INDICATE CP AS OPERATING ENV. @VA04250 00121000
  121. CLI INTSEV,SEV4 GREATER THAN ALLOWED? (4) @VA04250 00122000
  122. BH GETSEV YES, FORCE USER @VA04250 00123000
  123. CLI INTSEV,BLANK USER WILLING TO DEFAULT? @VA04250 00124000
  124. BE PRMFORCE YES @VA04250 00125000
  125. CLI INTSEV,SEV1 LESS THAN ALLOWED? @VA04250 00126000
  126. BL GETSEV YES, GO FORCE USER TO ENTER @VA04250 00127000
  127. B PRMTYPSW CONTINUE @VA04250 00128000
  128. PRMFORCE MVI INTSEV,SEV4 DEFAULT TO SEVERITY 4 @VA04250 00129000
  129. ************************************************ 00130000
  130. * TEST THE TYPE SWITCH PERFORM THE 00131000
  131. * FOLLOWING ACTIONS: 00132000
  132. * WAITSW-INFORM OPERATOR PROCESSING 00133000
  133. * APPARENT WAIT AND REQUEST ADD. 00134000
  134. * INFORMATION. 00135000
  135. * LOOPSW-DUMP INCONCLUSIVE POSSIBLE LOOP 00136000
  136. * OR PERFORMANCE PROBLEM REQUEST 00137000
  137. * OPER TO RESPOND LOOP OR PERF 00138000
  138. ************************************************ 00139000
  139. PRMTYPSW TM TYPESW,WAITSW IS WAIT INDICATED @VA04250 00140000
  140. BO PRMWAIT GO TO WAIT ROUTINE @VA04250 00141000
  141. TM TYPESW,LOOPSW LOOP, PERF, OR OTHER? @VA04250 00142000
  142. BO PRMLPPER YES @VA04250 00143000
  143. MVC INTX1,VMFAIL1 MOVE FAILURE TYPE TO OUTPUT @VA04250 00144000
  144. TM TYPESW,PROCERR ERROR IN EXTRACTION? @VA04250 00145000
  145. BO PRMERREX YES @VA04250 00146000
  146. B PRMSUPP GO GET SUPPORTING DATA FILE @VA04250 00147000
  147. *************************************************************** 00148000
  148. * WAIT STATE INDICATED IN DUMP 00149000
  149. *************************************************************** 00150000
  150. PRMWAIT LA R9,WAITMSG1 'DUMP INDICATES WAIT STATE' @VA04250 00151000
  151. LA R3,L'WAITMSG1 SUPPLY WRTERM WITH MESSAGE LENGTH@VA04250 00152000
  152. BAL R10,WRTERM GO TELL USER @VA04250 00153000
  153. LA R9,WAITMSG2 'DESCRIBE CONDITION AT DUMP TIME'@VA04250 00154000
  154. LA R3,L'WAITMSG2 SUPPLY WRTERM WITH LENGTH OF MSG @VA04250 00155000
  155. BAL R10,WRTERM GO PROMPT USER @VA04250 00156000
  156. B PRMSUPP GO GET SUPPORTING DATA FILES @VA04250 00157000
  157. *************************************************************** 00158000
  158. * PROCESSING ERROR IN PREVIOUS ROUTINE 00159000
  159. *************************************************************** 00160000
  160. PRMERREX L R3,TEXTCURR GET CURRENT TEXT POINTER @VA04250 00161000
  161. MVC 0(L'EXMSG,R3),EXMSG PUT PROC. ERR.IN TEXT @VA04250 00162000
  162. LA R3,CARDLEN(R3) BUMP THE TEXT AREA POINTER @VA04250 00163000
  163. ST R3,TEXTCURR SAVE IT FOR NEXT USER @VA04250 00164000
  164. B PRMSUPP GO GET SUPPORTING DATA FILES @VA04250 00165000
  165. *************************************************************** 00166000
  166. *HERE IF DUMP WAS TAKEN BECAUSE OF A LOOP OR PERF. PROBLEM. 00167000
  167. *************************************************************** 00168000
  168. PRMLPPER LA R9,DDIMSG1 'DUMP DATA IS INCONCLUSIVE....' @VA04250 00169000
  169. LA R3,L'DDIMSG1 SUPPLY WRTERM WITH LNG OF MSG @VA04250 00170000
  170. BAL R10,WRTERM GO TELL USER @VA04250 00171000
  171. ENTERIT LA R9,DDIMSG2 'ENTER LOOP PERF OR OTHER' @VA04250 00172000
  172. LA R3,L'DDIMSG2 SUPPLY WRTERM WITH MESSAGE LENGTH@VA04250 00173000
  173. BAL R10,WRTERM GO PROMPT USER @VA04250 00174000
  174. LA R9,ADDTEXT POINT TO TERMINAL READ INPUT AREA@VA04250 00175000
  175. BAL R10,RDTERM GO READ USER RESPONSE @VA04250 00176000
  176. LTR R0,R0 CHECK ENTRY @VA04250 00177000
  177. BZ ENTERIT FORCE ENTRY @VA04250 00178000
  178. CLC =C'LOOP',ADDTEXT USER RESPOND LOOP? @VA04250 00179000
  179. BE LPPF YES @VA04250 00180000
  180. CLC =C'PERF',ADDTEXT USER RESPOND PERF? @VA04250 00181000
  181. BE LPPF YES @VA04250 00182000
  182. CLC =C'OTHER',ADDTEXT USER RESPOND OTHER? @VA04250 00183000
  183. BNE ENTERIT NO, FORCE CORRECT RESPONSE @VA04250 00184000
  184. * 00185000
  185. * 00186000
  186. ********************************************* 00187000
  187. * ALTER THE VMFAILURE KEYWORD TO LOOP OR PERF 00188000
  188. ********************************************* 00189000
  189. * 00190000
  190. LPPF MVC VMFAIL1,ADDTEXT GET KEYWORD FOR SKELETON @VA04250 00191000
  191. LA R2,VMFAILLP-KEY GET LENGTH OF TOTAL KEY AREA @VA04250 00192000
  192. STH R2,KEY SAVE THIS COUNT @VA04250 00193000
  193. MVI FAILLN+ONE,(VMFAIL1-FAILLN+FOUR) FAIL KEY LN @VA04250 00194000
  194. MVC INTX1(FOUR),VMFAIL1 SAVE FAILURE FOR WRITEREC @VA04250 00195000
  195. CLC LP,ADDTEXT IS KEYWORD LOOP @VA04250 00196000
  196. BE LOOP YES @VA04250 00197000
  197. CLC PF,ADDTEXT IS KEYWORD PERFORMANCE @VA04250 00198000
  198. BE PERF YES @VA04250 00199000
  199. B OTHER GO PROCESS AS AN 'OTHER' PROBLEM @VA04250 00200000
  200. EJECT 00201000
  201. ************************************************ 00202000
  202. * ENTERED IF OPERATOR RESPONDED 'LOOP' 00203000
  203. * TO PROMPTING. 00204000
  204. ************************************************ 00205000
  205. * 00206000
  206. *********************************** 00207000
  207. * DETERMINE MODULE NAME 00208000
  208. *********************************** 00209000
  209. LOOP LA R9,LPMS3 MESSAGE TEXT @VA04250 00210000
  210. LA R3,L'LPMS3 SUPPLY LENGTH TO WRTERM @VA04250 00211000
  211. LA R2,L'VMMODPRM GET LENGTH OF KEY @VA04250 00212000
  212. SLL R2,16 PUT LENGTH IN FIRST HALF WORD @VA04250 00213000
  213. ST R2,KEYWRK SAVE FOR LATER USE @VA04250 00214000
  214. LA R2,VMMODPRM POINT TO VMMODULE= KEYWORD @VA04250 00215000
  215. MVI KEYSW,KEYHERE INDICATE KEY PRESENT @VA04250 00216000
  216. BAL R10,WRTREAD GO TO WRITE/READ @VA04250 00217000
  217. *********************************** 00218000
  218. * GET LOOP ADDRESSES 00219000
  219. ********************************** 00220000
  220. LA R5,TEXT6 ADDRESS OF FIRST PROMPT TEXT @VA04250 00221000
  221. LA R9,LPMS4 MESSAGE TEXT @VA04250 00222000
  222. LA R3,L'LPMS4 SUPPLY WRTERM WITH MESSAGE LENGTH@VA04250 00223000
  223. BAL R10,WRTREAD @VA04250 00224000
  224. LTR R0,R0 DID HE ENTER ANYTHING @VA04250 00225000
  225. BZ BYPASS NO, MOVE ON @VA04250 00226000
  226. MVC 0(L'LPADD,R5),LPADD MOVE IN LOOP ADDRESS HEADER @VA04250 00227000
  227. LA R5,L'LPADD(,R5) BUMP TEXT POINTER @VA04250 00228000
  228. EX R2,MVTEXT MOVE THIS TO TEXT AREA @VA04250 00229000
  229. L R6,TEXTCURR GET AMOUNT OF TEXT SO FAR @VA04250 00230000
  230. AH R6,TEXTLEN BUMP COUNT BY 1 RECORD (80) @VA04250 00231000
  231. ST R6,TEXTCURR SAVE IT FOR NEXT USER @VA04250 00232000
  232. ****************************** 00233000
  233. * GET COMMAND IF APPLICABLE 00234000
  234. ***************************** 00235000
  235. BYPASS LA R9,LPMS6 'ENTER COMMAND WHICH CAUSED FAIL'@VA04250 00236000
  236. LA R3,L'LPMS6 SUPPLY WRTREAD MESSAGE LENGTH @VA04250 00237000
  237. LA R2,L'VMCMD GET LENGTH OF KEYWORD @VA04250 00238000
  238. SLL R2,16 PUT LENGTH IN FIRST HALF WORD @VA04250 00239000
  239. ST R2,KEYWRK SAVE FOR LATER USER @VA04250 00240000
  240. LA R2,VMCMD POINT TO KEYWORD VMCMD= @VA04250 00241000
  241. MVI KEYSW,KEYHERE INDICATE KEY PRESENT @VA04250 00242000
  242. BAL R10,WRTREAD GO TO WRITE/READ ROUTINE @VA04250 00243000
  243. B PRMSUPP GO GET SUPPORTIVE DATA FILES @VA04250 00244000
  244. EJECT 00245000
  245. ************************************************ 00246000
  246. ***** ENTERED HERE IF OPERATOR RESPONDED 'PERF'* 00247000
  247. ***** TO PROMPTING. * 00248000
  248. ************************************************ 00249000
  249. * DETERMINE NATURE OF DEGRADATION 00250000
  250. ******************************* 00251000
  251. PERF LA R9,PRMS2 'ENTER NATURE OF DEGRADATION' @VA04250 00252000
  252. LA R3,L'PRMS2 SUPPLY WRTREAD MESSAGE LENGTH @VA04250 00253000
  253. LA R2,L'VMDEG GET LENGTH OF KEY @VA04250 00254000
  254. SLL R2,16 PUT LENGTH INTO FIRST HALF WORD @VA04250 00255000
  255. ST R2,KEYWRK SAVE FOR USE BY KEYMOVE ROUTINE @VA04250 00256000
  256. LA R2,VMDEG POINT TO KEY VMDEGRADE= @VA04250 00257000
  257. MVI KEYSW,KEYHERE INDICATE THIS IS KEYWORDED @VA04250 00258000
  258. BAL R10,WRTREAD GO TO WRITE READ @VA04250 00259000
  259. B PRMSUPP GO GET SUPPLEMENTARY DATA FILES @VA04250 00260000
  260. EJECT 00261000
  261. *************************************************************** 00262000
  262. * NOT LOOP OR PERFORMANCE (OTHER) 00263000
  263. *************************************************************** 00264000
  264. OTHER LA R9,CIRCMSG1 'DESCRIBE CIRCUMSTANCES' @VA04250 00265000
  265. LA R3,L'CIRCMSG1 SUPPLY WRTERM WITH MESSAGE LENGTH@VA04250 00266000
  266. BAL R10,WRTERM GO TELL USER @VA04250 00267000
  267. LA R9,CIRCMSG2 'SUPPLY INFO. WHEN PROMPTED' @VA04250 00268000
  268. LA R3,L'CIRCMSG2 SUPPLY WRTERM LENGTH OF MESSAG @VA04250 00269000
  269. BAL R10,WRTERM GO TELL USER @VA04250 00270000
  270. LA R2,VMFAILOT-KEY GET LN OF KEYAREA IF 'OTHER' @VA04250 00271000
  271. STH R2,KEY UPDATE KEY AREA LENGTH @VA04250 00272000
  272. MVI FAILLN+ONE,(VMFAIL1-FAILLN+FIVE) AND FAIL KEY LN@VA04250 00273000
  273. B PRMSUPP GO GET SUPPORTING DATA FILES @VA04250 00274000
  274. EJECT 00275000
  275. *************************************************************** 00276000
  276. * PROMPT OPERATOR FOR NAME AND LOCATION OF SUPPORTING DOCUM. 00277000
  277. *************************************************************** 00278000
  278. PRMSUPP MVC SUPP1(L'DUMPNUM),DUMPNUM MOVE DUMP NAME TO OUTP.@VA04250 00279000
  279. MVC SUPP1+L'DUMPNUM+ONE(L'SUPPFTFM),SUPPFTFM FN FT @VA04250 00280000
  280. LA R9,SUPPMSG1 'ENTER NAME AND LOC OF SUPP DATA'@VA04250 00281000
  281. LA R3,L'SUPPMSG1 SUPPLY WRTERM WITH LENGTH OF MSG @VA04250 00282000
  282. BAL R10,WRTERM GO PROMPT USER @VA04250 00283000
  283. LA R9,SUPPMSG2 'TRACE TABLE A1 TRACE OUTPUT' @VA04250 00284000
  284. LA R3,L'SUPPMSG2 SUPPLY WRTERM LENGTH OF MESSAG @VA04250 00285000
  285. BAL R10,WRTERM GO PROMPT USER @VA04250 00286000
  286. LA R9,ADDTEXT POINT TO TERMINAL READ INPUT AREA@VA04250 00287000
  287. BAL R10,RDTERM GO READ USER RESPONSE @VA04250 00288000
  288. LTR R0,R0 WAS ENTRY NULL? @VA04250 00289000
  289. BZ PRMTEXTA YES @VA04250 00290000
  290. LA R6,SUPP2 START PUTTING OUTPUT HERE @VA04250 00291000
  291. MVC 0(OUTLEN,R6),ADDTEXT USER RESPONSE TO OUTPUT @VA04250 00292000
  292. LH R5,SUPPLN GET CURRENT AMOUNT OF SUPP DATA @VA04250 00293000
  293. LA R5,OUTLEN(,R5) BUMP SUPPORT DATA LENGTH @VA04250 00294000
  294. STH R5,SUPPLN SAVE IT FOR LATER @VA04250 00295000
  295. PRMDATA LA R9,SUPPMSG3 'ENTER MORE SUPP DATA OR NULL' @VA04250 00296000
  296. LA R3,L'SUPPMSG3 SUPPLY WRTERM WITH LENGTH OF MSG @VA04250 00297000
  297. BAL R10,WRTERM GO PROMPT USER @VA04250 00298000
  298. LA R9,ADDTEXT POINT TO TERMINAL READ INPUT AREA@VA04250 00299000
  299. BAL R10,RDTERM GO READ USER RESPONSE @VA04250 00300000
  300. LTR R0,R0 ANYTHING ENTERED? @VA04250 00301000
  301. BZ PRMTEXTA NO @VA04250 00302000
  302. LA R6,OUTLEN(,R6) POINT TO NEXT OUTPUT RECORD @VA04250 00303000
  303. LH R5,SUPPLN GET CURRENT LENGTH @VA04250 00304000
  304. LA R5,OUTLEN(,R5) ADD IN ONE MORE RECORD WORTH @VA04250 00305000
  305. STH R5,SUPPLN SAVE IT FOR NEXT TIME @VA04250 00306000
  306. CH R5,SUPPMAX GOT ALL WE CAN HANDLE? @VA04250 00307000
  307. MVC 0(OUTLEN,R6),ADDTEXT MOVE USER DATA TO OUTPUT @VA04250 00308000
  308. BNL PRMTEXTA YES @VA04250 00309000
  309. B PRMDATA GO BACK FOR MORE @VA04250 00310000
  310. EJECT 00311000
  311. *************************************************************** 00312000
  312. * PROMPT THE USER FOR FREE FORM TEXT DESCRIPTION 00313000
  313. *************************************************************** 00314000
  314. PRMTEXTA LA R9,MORETEXT 'ENTER ADD. TEXT 80 CHAR LINE @VA04250 00315000
  315. LA R3,L'MORETEXT SUPPLY WRTERM WITH LENGTH OF MSG @VA04250 00316000
  316. BAL R10,WRTERM GO PROMPT USER @VA04250 00317000
  317. LA R9,ENDTX 'ENTER TEXT OR NULL' @VA04250 00318000
  318. LA R3,L'ENDTX SUPPLY WRTERM WITH LENGTH OF MSG @VA04250 00319000
  319. BAL R10,WRTERM GO PROMPT USER @VA04250 00320000
  320. L R6,TEXTCURR GET NEXT AVAILABLE TEXT RECORD @VA04250 00321000
  321. LA R5,TEXTENDO POINT TO END OF TEXT OUTPUT AREA @VA04250 00322000
  322. READ1 LR R9,R6 POINT TO TERMINAL INPUT AREA @VA04250 00323000
  323. BAL R10,RDTERM GO READ USER RESPONSE @VA04250 00324000
  324. CLC ENDTEXT,0(R6) WAS TEXT A NULL LINE? @VA04250 00325000
  325. BE CLEANUP IF YES GO FINISH PROCESSING @VA04250 00326000
  326. LA R6,CARDLEN(,R6) UPDATE OUTPUT POINTER @VA04250 00327000
  327. CR R6,R5 REACHED LIMIT? @VA04250 00328000
  328. BNL CLEANUP YES, GO CLEAN UP AND EXIT @VA04250 00329000
  329. ST R6,TEXTCURR KEEP TRACK OF AMOUNT OF TEXT @VA04250 00330000
  330. LA R9,ENDTX 'ENTER TEXT OR NULL' @VA04250 00331000
  331. LA R3,L'ENDTX SUPPLY WRTERM WITH MESSAGE LENGTH@VA04250 00332000
  332. BAL R10,WRTERM GO PROMPT USER @VA04250 00333000
  333. B READ1 CONTINUE UNTIL USER ENTERS NULL @VA04250 00334000
  334. EJECT 00335000
  335. *************************************************************** 00336000
  336. * FINAL PROCESSING AND EXIT 00337000
  337. *************************************************************** 00338000
  338. CLEANUP EQU * @VA04250 00339000
  339. NORMEXIT ST R8,PRMPARM1 INTSECT ADDRESS TO PARM LIST @VA04250 00340000
  340. LA R5,KEY ADDRESS OF KEY AREA @VA04250 00341000
  341. ST R5,PRMPARM2 KEY ADDRESS TO PARMLIST @VA04250 00342000
  342. L R2,TEXTCURR GET CURRENT TEXT POINTER @VA04250 00343000
  343. LA R3,TEXTA POINT TO START OF AREA @VA04250 00344000
  344. SR R2,R3 GET AMOUNT OF TEXT AREA @VA04250 00345000
  345. STH R2,TEXT SAVE LENGTH FOR WRITEREC @VA04250 00346000
  346. LA R5,TEXT ADDRESS OF TEXT AREA @VA04250 00347000
  347. ST R5,PRMPARM3 TEXT AREA ADDRESS TO PARMLIST @VA04250 00348000
  348. LA R5,SUPPLN ADDRESS OF SUPPORTING DATA AREA @VA04250 00349000
  349. ST R5,PRMPARM4 SUPPORT DATA TO PARM LIST @VA04250 00350000
  350. LA R1,PRMPARM1 PARM LIST ADDRESS TO R1 @VA04250 00351000
  351. MVC INTPNUM,NUM DUMP NUMBER TO INTSECT @VA04250 00352000
  352. CALL DMMWRT @VA04250 00353000
  353. LTR R15,R15 GOOD RETURN FROM DMMWRT? @VA04250 00354000
  354. BNZ EXIT NO, DON'T DO DUPLICATE SEARCH @VA04250 00355000
  355. LA R1,PRMPARM1 RESTORE PARM FOR SEARCH @VA04250 00356000
  356. CALL DMMSEA @VA04250 00357000
  357. EXIT LM R0,R15,EDMSAVE GET DMMEDM RETURN ADDRESS @VA04250 00358000
  358. BR R14 NORMAL RETURN @VA04250 00359000
  359. EJECT 00360000
  360. *************************************************************** 00361000
  361. * USER ENTERED HX (HE WANTS TO HALT EXECUTION) 00362000
  362. *************************************************************** 00363000
  363. HXRTN PACK NEWNUM,NUM(FIVE) PROBLEM NUMBER TO DECIMAL @V4075A1 00364000
  364. SP NEWNUM,WUN SUBTRACT ONE @V4075A1 00364100
  365. UNPK SUMBUF(FIVE),NEWNUM PROBLEM NUMBER IN BUFFER @V4075A1 00364200
  366. OI SUMLOW,NUMERIC STRIP OFF ZONE BITS @V4075A1 00364300
  367. FSWRITE 'SUMMARY RECORD A1',BUFFER=SUMBUF,ERROR=PRBWRTER, X00364400
  368. RECNO=1,BSIZE=80 @V4075A1 00364500
  369. HXRET FSCLOSE 'SUMMARY RECORD A1' @V4075A1 00365000
  370. LM R0,R15,EDMSAVE RESTORE DMMEDM'S REGISTERS @V4075A1 00365100
  371. BR R14 RETURN TO DMMEDM @V4075A1 00365200
  372. PRBWRTER CVD R15,ERRCODE GET RETURN FOR MESSAGE @V4075A1 00365300
  373. UNPK ERRCODEZ,ERRCODE+FOUR(FOUR) UNPACK IT @V4075A1 00365400
  374. OI LOWCODE,NUMERIC MAKE IT READABLE @V4075A1 00365500
  375. MVC ERRMSGCD,CDPLUS1 MOVE RETURN CODE TO MSG @V4075A1 00365600
  376. WRTERM ERRMSG,ERRMSGL WRITE THE MESSAGE @V4075A1 00365700
  377. B HXRET 00365800
  378. EJECT 00366000
  379. ************************************************ 00367000
  380. ***** COMMON TERMINAL PROMPT ROUTINE 00368000
  381. ***** USER RESPONSE IS READ FOLLOWING TERMINAL PROMPT 00369000
  382. ************************************************ 00370000
  383. WRTREAD WRTERM (R9),(R3) @VA04250 00371000
  384. ST R10,R10SAVE SAVE LINK REG @VA04250 00372000
  385. LA R9,ADDTEXT POINT TO TERMINAL READ INPUT AREA@VA04250 00373000
  386. BAL R10,RDTERM GO READ USER RESPONSE @VA04250 00374000
  387. L R10,R10SAVE RESTORE CALLER'S LINK REG @VA04250 00375000
  388. LTR R0,R0 USER ENTER ANYTHING? @VA04250 00376000
  389. BZ NEXTWRIT NO @VA04250 00377000
  390. CLI KEYSW,KEYHERE KEY ASSOCIATED WITH RESPONSE? @VA04250 00378000
  391. BE KEYMOVE YES @VA04250 00379000
  392. LR R2,R0 SAVE LENGTH OF RESPONSE @VA04250 00380000
  393. B NEXTWRIT RETURN TO CALLER @VA04250 00381000
  394. EJECT 00382000
  395. ************************************************ 00383000
  396. ***** ROUTINE TO MOVE KEYWORDS TO KEY AREA * 00384000
  397. ************************************************ 00385000
  398. KEYMOVE LA R6,KEY POINT TO START OF KEY AREA @VA04250 00386000
  399. LH R5,KEY GET CURRENT TOTAL LENGTH @VA04250 00387000
  400. AR R6,R5 POINT TO NEXT AVAIL OUTPUT SPOT @VA04250 00388000
  401. AR R5,R0 ADD USER ENTERED DATA LENGTH @VA04250 00389000
  402. AH R5,KEYWRK ADD KEYWORD LENGTH TO LENGTH @VA04250 00390000
  403. LA R5,LENLEN(R5) ADD IN LENGTH FIELD @VA04250 00391000
  404. STH R5,KEY SAVE CUMULATIVE RESULTS IN OUTPUT@VA04250 00392000
  405. LH R5,KEYWRK GET LENGTH OF THIS KEY @VA04250 00393000
  406. LR R3,R5 SAVE THIS LENGTH FOR LATER @VA04250 00394000
  407. AR R5,R0 ADD IN LNGTH OF USER ENTERED INFO@VA04250 00395000
  408. LA R5,LENLEN(R5) ADD IN LENGTH OF LENGTH FIELD @VA04250 00396000
  409. STH R5,KEYWRK STORE IT @VA04250 00397000
  410. MVC 0(L'KEYWRK,R6),KEYWRK MOVE LN FIELD TO OUTPUT @VA04250 00398000
  411. LA R6,LENLEN(R6) POINT WHERE KEY GOES @VA04250 00399000
  412. BCTR R3,0 SET KEY LENGTH FOR EXECUTE @VA04250 00400000
  413. EX R3,MOVEKEY MOVE KEY TO OUTPUT @VA04250 00401000
  414. LA R6,DATA(R6,R3) POINT TO WHERE DATA WILL GO @VA04250 00402000
  415. LR R3,R0 GET LENGTH OF USER DATA @VA04250 00403000
  416. BCTR R3,0 SET FOR EXECUTE @VA04250 00404000
  417. DATMOVE EX R3,MOVEDAT MOVE USERSUPPLIED DATA TO OUTPUT @VA04250 00405000
  418. NEXTWRIT MVI KEYSW,NOKEY RESET KEY SWITCH @VA04250 00406000
  419. BR R10 RETURN TO CALLER @VA04250 00407000
  420. MOVEKEY MVC 0(0,R6),0(R2) MOVE KEY TO OUTPUT (EXECUTED) @VA04250 00408000
  421. MOVEDAT MVC 0(0,R6),ADDTEXT EXECUTED INSTRUCTION @VA04250 00409000
  422. MVTEXT MVC 0(0,R5),ADDTEXT EXECUTED INSTRUCTION @VA04250 00410000
  423. EJECT 00411000
  424. *************************************************************** 00412000
  425. * TERMINAL READ ROUTINE 00413000
  426. *************************************************************** 00414000
  427. RDTERM RDTERM (R9) READ USER RESPONSE @VA04250 00415000
  428. LTR R0,R0 ANYTHING ENTERED? @VA04250 00416000
  429. BZ RDTERME NO @VA04250 00417000
  430. CLC HALT,0(R9) USER WANT TO QUIT? @VA04250 00418000
  431. BE HXRTN YES @VA04250 00419000
  432. CLC HALT2,0(R9) COLON HX? @VA04250 00420000
  433. BE HXRTN YES @VA04250 00421000
  434. LR R15,R9 ADDRESS OF INPUT TO TEMP WORK @VA04250 00422000
  435. LA R14,FORTY CHECK FIRST 40 CHAR FOR NON BLANK@VA04250 00423000
  436. RDTERML CLI 0(R15),BLANK NON BLANK? @VA04250 00424000
  437. BNE RDTERME YES, RETURN TO CALLER @VA04250 00425000
  438. LA R15,ONE(R15) POINT TO NEXT INPUT BYTE @VA04250 00426000
  439. BCT R14,RDTERML CHECK FIRST 40 BYTES @VA04250 00427000
  440. SR R0,R0 SET READ LENGTH TO ZERO @VA04250 00428000
  441. RDTERME BR R10 RETURN TO CALLER @VA04250 00429000
  442. *************************************************************** 00430000
  443. * COMMON SIMPLE TERMINAL WRITE ROUTINE 00431000
  444. *************************************************************** 00432000
  445. WRTERM WRTERM (R9),(R3) WRITE MESSAGE ON TERMINAL @VA04250 00433000
  446. BR R10 RETURN TO CALLER @VA04250 00434000
  447. *************************************************************** 00435000
  448. * CONSTANTS SAVEAREAS AND EQUATES 00436000
  449. *************************************************************** 00437000
  450. SAVEAREA DS 18F OUR SAVEAREA @VA04250 00438000
  451. VSHARE DC V(SHARECON) POINTER TO SHARED CONSTANT AREA @VA04250 00440000
  452. WKDWD DS D DOUBLE WORK WORK AREA @VA04250 00441000
  453. R10SAVE DS F SAVE AREA FOR INTERNAL LINK REG @VA04250 00442000
  454. ERRMSG DC C'DMMPRM200S ERROR''' @V4075A1 00442100
  455. ERRMSGCD DS CL3 ERROR MSG RETURN CODE @V4075A1 00442200
  456. DC C''' ' @V4075A1 00442300
  457. ERRMSGTY DC C' WRITING FILE ''' SUMMARY RECORD A1 ''' @V4075A1 00442400
  458. ERRMSGL EQU *-ERRMSG LENGTH OF ERROR MESSAGE @V4075A1 00442500
  459. SUPPMAX DC H'400' MAX SUPP DATA ALLOWED @VA04250 00443000
  460. SUMBUF DC 80C' ' PROBLEM NUMBER BUFFER @V4075A1 00443100
  461. WUN DC X'001C' CONSTANT TO DECREMENT PRB NUM @V4075A1 00443200
  462. NEWNUM DS CL5 00443300
  463. DS F @V4075A1 00443400
  464. ERRCODE DS CL8 ERROR CODE FOR FILE ERROR MSG @V4075A1 00443500
  465. ERRCODEZ DS CL4 @V4075A1 00443600
  466. LOWCODE EQU ERRCODEZ+3 LOW ORDER OF THE ERROR CODE @V4075A1 00443700
  467. CDPLUS1 EQU ERRCODEZ+1 @V4075A1 00443800
  468. SUMLOW EQU SUMBUF+4 LOW ORDER OF PROBLEM NUM. @V4075A1 00443900
  469. **************************** 00444000
  470. * PARMS FOR WRITEREC 00445000
  471. **************************** 00446000
  472. PRMPARM1 DS F POINTER TO INTERNAL DATA AREA @VA04250 00447000
  473. PRMPARM2 DS F POINTER TO KEYWORDED AREA @VA04250 00448000
  474. PRMPARM3 DS F POINTER TO TEXT DESCRIPTION AREA @VA04250 00449000
  475. PRMPARM4 DS F POINTER TO SUPPORTING DOC AREA @VA04250 00450000
  476. **************************** 00451000
  477. KEYWRK DS F WORK AREA FOR KEY LENGTH @VA04250 00452000
  478. **************************** 00453000
  479. * SWITCH INDICATING WHETHER OR NOT RESPONSE IS TO BE KEYWORDED 00454000
  480. **************************** 00455000
  481. KEYSW DC X'00' SWITCH (SET TO KEY NOT PRESENT) @VA04250 00456000
  482. NOKEY EQU X'00' RESPONSE NOT TO BE KEYWORDED @VA04250 00457000
  483. KEYHERE EQU X'FF' RESPONSE IS TO BE KEYWORDED @VA04250 00458000
  484. **************************** 00459000
  485. SUPPFTFM DC C'DUMP A1' FILETYPE AND FILEMODE OF DUMP @VA04250 00460000
  486. TEXTLEN DC H'80' HALF WORD OF 80 (RECORD SIZE) @VA04250 00461000
  487. HALT DC C'HX' HALT EXECUTION RESPONSE @VA04250 00462000
  488. HALT2 DC C':HX' ALTERNATE METHOD TO REQUEST HX @VA04250 00463000
  489. LP DC C'LOOP' @VA04250 00464000
  490. PF DC C'PERF' @VA04250 00465000
  491. ENDTEXT DC C' ' @VA04250 00466000
  492. TEXTCURR DS F'0' ADDRESS OF NEXT TEXT OUT REC @VA04250 00467000
  493. LPADD DC C'LOOP ADDR: ' @VA04250 00468000
  494. PACKED1 DC P'1' USED TO INCREMENT PROBLEM NUMBER @VA04250 00469000
  495. PNWORK DS CL5 WORK AREA TO UPDATE PROBLEM NUMB.@VA04250 00470000
  496. ADDTEXT DS CL160 TERMINAL INPUT AREA @VA04250 00471000
  497. CPCON DC C'CP ' @VA04250 00472000
  498. VMCMD DC C'VMCMD=' KEYWORD VM COMMAND @VA04250 00473000
  499. VMDEG DC C'VMDEGRADE=' KEYWORD FOR DEGRADATION @VA04250 00474000
  500. INTERNAL DC V(INTDATA) INTERNAL DATA AREA @VA04250 00475000
  501. VMMODPRM DC C'VMMODULE=' KEYWORD FOR LOOPING MODULES @VA04250 00476000
  502. BLANK EQU C' ' BLANK @VA04250 00477000
  503. SEV1 EQU C'1' USED TO CHECK SEVERITY @VA04250 00478000
  504. SEV4 EQU C'4' USED TO CHECK SEVERITY @VA04250 00479000
  505. NUMERIC EQU X'F0' USED TO MAKE UNPACKED READABLE @VA04250 00480000
  506. LENLEN EQU 4 LENGTH OF LENGTH FIELD @VA04250 00481000
  507. ONE EQU 1 FOR MVC DISP AND LENGTH ETC. @VA04250 00482000
  508. THREE EQU 3 FOR MVC DISP AND LENGTH ETC. @VA04250 00483000
  509. FOUR EQU 4 FOR MVC DISP AND LENGTH ETC. @VA04250 00484000
  510. FIVE EQU 5 FOR MVC DISP AND LENGTH ETC. @VA04250 00485000
  511. SIX EQU 6 FOR MVC DISP AND LENGTH ETC. @VA04250 00486000
  512. FORTY EQU 40 FOR MVC DISP AND LENGTH ETC. @VA04250 00487000
  513. CARDLEN EQU 80 LENGTH OF CARD OF DATA @VA04250 00488000
  514. OUTLEN EQU 80 LENGTH OF CARD OF OUTPUT @VA04250 00489000
  515. *************************************************************** 00490000
  516. * TEXT OF MESSAGES ISSUED IN THIS PROGRAM 00491000
  517. *************************************************************** 00492000
  518. MORETEXT DC C'ENTER ADDITIONAL TEXT 80 CHARS PER LINE' @VA04250 00493000
  519. ENDTX DC C'ENTER TEXT OR NULL' @VA04250 00494000
  520. PRMS1 DC C'ENTER NATURE OF DEGRADATION' @VA04250 00495000
  521. LPMS1 DC C'ENTER OPERATING ENVIRONMENT. CP,CMS,RSCS,VIRTMACH' 00496000
  522. LPMS3 DC C'ENTER KNOWN MODULES WITHIN LOOP. MOD1,MOD2,ETC' 00497000
  523. LPMS4 DC C'ENTER UP TO TEN LOOP ADDRESSES. ADDR1,ADDR2,ETC' 00498000
  524. LPMS6 DC C'ENTER COMMAND WHICH CAUSED FAILURE IF APPLICABLE' 00499000
  525. PRMS2 DC C'ENTER NATURE OF DEGRADATION' @VA04250 00500000
  526. EXMSG DC C'DATA EXTRACTION PROCESS ERROR--SEE MSG. DMMPRM804I' 00501000
  527. EXMSGL EQU *-EXMSG LENGTH OF EXMSG @VA04250 00502000
  528. PROBX DC C'ASSIGNED PROBLEM NUMBER ' @VA04250 00503000
  529. PROB DS CL8 @VA04250 00504000
  530. PROBXL EQU *-PROBX LENGTH OF PRBX MESSAGE @VA04250 00505000
  531. SEVMSG DC C'ENTER SEVERITY OF PROBLEM (1 2 3 OR 4)' @VA04250 00506000
  532. SUPPMSG1 DC C'ENTER FN FT FM OF SUPPORTING DATA AND DESCRIPTION' 00507000
  533. SUPPMSG2 DC C'E.G. PRBNNNNN TRACE A1-CONS. OUTPUT OF TRACE' @VA04250 00508000
  534. SUPPMSG3 DC C'ENTER FURTHER FILES OR NULL LINE' @VA04250 00509000
  535. DDIMSG1 DC C'THE DUMP DATA IS INCONCLUSIVE, POSSIBLE LOOP OR PERF' 00510000
  536. DDIMSG2 DC C'ENTER: LOOP, PERF, OR OTHER' @VA04250 00511000
  537. WAITMSG1 DC C'DUMP INDICATES AN APPARENT WAIT STATE. WHEN PROMPTED' 00512000
  538. WAITMSG2 DC C'FOR TEXT DESCRIBE CONDITIONS AT THE TIME OF THE DUMP' 00513000
  539. MSG804I DC C'DMMPRM804I PROCESSING ERROR IN DATA EXTRACTION' 00514000
  540. CIRCMSG1 DC C'DESCRIBE THE CIRCUMSTANCES AT THE TIME THE DUMP' 00515000
  541. CIRCMSG2 DC C'WAS TAKEN. ENTER WHEN PROMPTED FOR TEXT.' @VA04250 00516000
  542. MSG200 DC C'DMMPRM200S ERROR ''' @VA04250 00517000
  543. WRCODE DS CL3 FSWRITE RETURN CODE @VA04250 00518000
  544. DC C''' WRITING ''SUMMARY RECORD A1' @VA04250 00519000
  545. MSG200L EQU *-MSG200 LENGTH OF ERROR MESSAGE @VA04250 00520000
  546. *************************************************************** 00521000
  547. PATCH DC 50F'0' PATCH AREA @VA04250 00522000
  548. LTORG @VA04250 00523000
  549. SPACE 1 00524000
  550. COPY INTSECT @VA04250 00525000
  551. COPY EXCONST @VA04250 00526000
  552. DATA EQU 1 OUTPUT AREA OFFSET @VA04250 00527000
  553. DECODE EQU WKDWD+6 ERR CODE IN DECIMAL FIELD @VA04250 00528000
  554. LASTBYTE EQU WRCODE+3 LOW ORDER OF RET CODE @VA04250 00529000
  555. REGEQU @VA04250 00530000
  556. END 00531000