Table of Contents

DMMWRT Source

References

Source Listing

DMMWRT.ASSEMBLE.txt
  1. WRT TITLE 'DMMWRT (IPCS) VM/370 - RELEASE 6' 00001000
  2. *************************************************************** 00002000
  3. * 00003000
  4. * MODULE NAME: 00004000
  5. * 00005000
  6. * DMMWRI 00006000
  7. * 00007000
  8. * FUNCTION: 00008000
  9. * 00009000
  10. * TO CREATE A PROBLEM REPORT ON DISK AND ADD THIS PROBLEM TO 00010000
  11. * THE SYMPTOM SUMMARY. DATA TO CREATE REPORT PASSED BY CALLER 00011000
  12. * 00012000
  13. * ATTRIBUTES: 00013000
  14. * 00014000
  15. * NON-REENTRANT 00015000
  16. * NON-REUSABLE 00016000
  17. * 00017000
  18. * ENTRY POINTS: 00018000
  19. * 00019000
  20. * DMMWRI 00020000
  21. * 00021000
  22. * ENTRY CONDITIONS: 00022000
  23. * 00023000
  24. * R1 POINTS TO PARM LIST 00024000
  25. * 00025000
  26. * WD1 POINTER TO INTERNAL DATA (DSECT INTSECT) 00026000
  27. * WD2 POINTER TO KEYWORDED DATA (VAR BLK FORMAT) 00027000
  28. * WD3 POINTER TO TEXT DESCRIPTION (HLFWD LNGTH PREFIX) 00028000
  29. * WD4 POINTER TO SUPLEMENTARY DATA (HLFWD LNGTH PREFIX) 00029000
  30. * 00030000
  31. * EXIT CONDITIONS: 00031000
  32. * 00032000
  33. * RETURN CODE IN R15 00033000
  34. * 00034000
  35. * 0 NORMAL SUCCESSFUL COMPLETION 00035000
  36. * 8 ERROR OCCURRED 00036000
  37. * 00037000
  38. * CALLS TO OTHER ROUTINES: 00038000
  39. * 00039000
  40. * NONE 00040000
  41. * 00041000
  42. * EXTERNAL REFERENCES: 00042000
  43. * 00043000
  44. * NONE 00044000
  45. * 00045000
  46. * TABLES/WORKAREAS: 00046000
  47. * 00047000
  48. * INTERNAL DATA AREA (INTSECT DSECT) 00048000
  49. * CMS LOW CORE (NUCON DSECT) 00049000
  50. * SYMPTOM SUMMARY CONTROL RECORD (SYMSECT DSECT) 00050000
  51. * 00051000
  52. * REGISTER USAGE: 00052000
  53. * 00053000
  54. * R13 REGISTER SAVE AREA 00054000
  55. * R12 BASE REGISTER 00055000
  56. * R11 00056000
  57. * R10 INTSECT DSECT (INTERNAL DATA) 00057000
  58. * R9 SYMSECT DSECT (SYMPTOM SUMMARY CONTROL RECORD) 00058000
  59. * R8 PARMS DSECT (PARMS PASSED BY CALLER) 00059000
  60. * R7-R2 WORK 00060000
  61. * 00061000
  62. * NOTES: 00062000
  63. * 00063000
  64. * KEYWORDED DATA IS PASSED IN VARIABLE BLOCKED FORMAT. 00064000
  65. * 00065000
  66. * |TT00|LL00|..DATA1..|LL00|..DATA2..|......... 00066000
  67. * 4 4 LL-4 4 LL-4 00067000
  68. * 00068000
  69. * 00069000
  70. * WHERE TT IS THE TOTAL LENGTH OF THE BLOCK INCLUDING 00070000
  71. * LENGTH FIELDS, AND EACH LL IS THE LENGTH OF THAT 00071000
  72. * LOGICAL RECORD INCLUDING ITS LENGTH FIELD. 00072000
  73. * 00073000
  74. * OPERATION: 00074000
  75. * 00075000
  76. * I. PROBLEM REPORT RECORDS 1,2, AND 3 CREATED 00076000
  77. * II. KEYWORDED DATA ADDED 00077000
  78. * III. SUPPLEMENTARY FILE DESCRIPTIONS ADDED 00078000
  79. * IV. TEXTUAL DESCRIPTION DATA ADDED 00079000
  80. * V. SYMPTOM SUMMARY CTL RCD ADDED TO SYMPTOM SUMMARY FILE 00080000
  81. * VI. KEYWORD DATA ADDED TO SYMPTOM SUMMARY 00081000
  82. * VII. OPERATION OF FSWRITE SUBROUTINE 00082000
  83. * 00083000
  84. * 00084000
  85. * 00085000
  86. * I. INFO FROM THE INTERNAL DATA AREA AND DATE AND TIME 00086000
  87. * STAMPS FROM CMS LOW CORE ARE PUT IN THE FIRST 2 RCDS 00087000
  88. * THE 3RD RCD IS AN INDICATOR RCD MARKING THE START OF 00088000
  89. * THE KEYWORDED SYMPTOMS. 00089000
  90. * 00090000
  91. * A. 1ST RCD DATA CONSISTS OF THE PROBLEM NUMBER, CURRENT 00091000
  92. * DATE, AND CURRENT TIME. 00092000
  93. * B. SECOND RECORD DATA CONSISTS OF THE DATE THE PROBLEM 00093000
  94. * OCCURRED, THE CPU TYPE, AND THE CPU SERIAL. 00094000
  95. * C. AFTER THE DATA HAS BEEN PLACED IN THE OUTPUT RECORDS 00095000
  96. * ROUTINE FSWRITE IS LINKED TO FOR CREATION OF THE PROBLEM 00096000
  97. * REPORT WITH THIS MUCH DATA. 00097000
  98. * 00098000
  99. * 00099000
  100. * II. KEYWORDED INFO HAS BEEN PASSED IN VARIABLE BLOCKED 00100000
  101. * RECORD FORMAT. KEYWORDS AND ASSOCIATED DATA WILL BE PUT ON 00101000
  102. * SEPARATE RECORDS IN THE PROBLEM REPORT. 00102000
  103. * 00103000
  104. * A. POINTER TO END OF KEYWORD DATA IS CALCULATED AND SAVED. 00104000
  105. * B. NEXT LENGTH FIELD MINUS ITS LENGTH (4) IS THE LENGTH OF 00105000
  106. * KEYWORD+DATA. THE KYWD+DATA IS MOVED TO THE NEXT 80 BYTE 00106000
  107. * OUTPUT RECORD. 00107000
  108. * C. THE NEXT LOGICAL RCD LENGTH FIELD IS LOCATED BY ADDING 00108000
  109. * THE CURRENT LENGTH FIELD TO THE CURRENT POINTER. 00109000
  110. * D. IF THE END OF DATA HAS NOT BEEN REACHED GO TO B. 00110000
  111. * E. THE NEXT OUTPUT RCD IS MARKED WITH AND END OF KYWRDED 00111000
  112. * DATA INDICATOR. 00112000
  113. * F. THE FSWRITE SUBROUTINE IS CALLED TO ADD THIS MUCH 00113000
  114. * MORE DATA TO THE OUTPUT PROBLEM REPORT. 00114000
  115. * 00115000
  116. * 00116000
  117. * III. OUTPUT SUPPORTING DATA RCDS. THE DATA HAS BEEN PASSED 00117000
  118. * PREFIXED BY A HALFWORD LEN FIELD. THIS LENGTH IS QUARANTEED 00118000
  119. * BY THE CALLER TO BE A MULTIPLE OF 80 CHAR RECORDS. 00119000
  120. * 00120000
  121. * A. IF THE LENGTH FIELD IS ZERO GO TO IV. 00121000
  122. * B. AN INDICATOR RCD MARKING THE START OF SUPPTING DATA IS 00122000
  123. * ADDED TO THE PROBLEM REPORT VIA A LINK TO FSWRITE. 00123000
  124. * C. THE NUMBER OF SUPPORTING DATA RECORDS IS CALCULATED AND 00124000
  125. * THESE ARE ADDED TO THE PROBLEM REPORT VIA LINK TO FSWRITE 00125000
  126. * D. AN INDICATOR RCD MARKING THE END OF SUPPORTING DATA IS 00126000
  127. * ADDED TO THE PROBLEM REPORT VIA LINK TO FSWRITE 00127000
  128. * 00128000
  129. * 00129000
  130. * IV. ADD TEXTUAL DESCRIPTION. TEXT DATA IS PASSED PREFIXED 00130000
  131. * BY A LENGTH FIELD. THE LENGTH IS GUARANTEED BY CALLER TO BE 00131000
  132. * A MULTIPLE OF 80 BYTES. 00132000
  133. * 00133000
  134. * A. IF LENGTH IS ZERO GO TO V. 00134000
  135. * B. FSWRITE IS CALLED TO ADD AN INDICATOR RCD MARKING THE 00135000
  136. * THE START OF TEXTUAL DATA. 00136000
  137. * C. THE NUMBER OF TEXT DESCRIPTION RCDS IS CALCULATED AND 00137000
  138. * FSWRITE IS LINKED TO TO ADD THEM TO THE PROBLEM REPORT. 00138000
  139. * D. FSWRITE IS LINKED TO TO ADD AN END OF TEXT DESCRIPTION 00139000
  140. * MARKER. 00140000
  141. * 00141000
  142. * 00142000
  143. * V. ADD A CTL RCD FOR THE PROBLEM TO THE SYMPTOM SUMMARY. 00143000
  144. * 00144000
  145. * A. DATA FROM THE INTERNAL DATA AREA, DATE STAMPS FROM CMS 00145000
  146. * LOW CORE, AND INITIAL STATUS FIELDS ARE MOVED TO AN 80 00146000
  147. * BYTE OUTPUT RECORD. 00147000
  148. * B. FSWRITE IS LINKED TO TO ADD THE CONTROL RECORD TO THE 00148000
  149. * SYMPTOM SUMMARY FILE. 00149000
  150. * 00150000
  151. * 00151000
  152. * VI. ADD KEYWORDED DATA TO THE SYMPTOM SUMMARY FILE. 00152000
  153. * 00153000
  154. * A. THE BLOCK LENGTH OF THE DATA IS OBTAINED AND ROUNDED UP 00154000
  155. * TO AN EVEN MULTIPLE OF 80 CHAR RECORDS. 00155000
  156. * B. FSWRITE IS CALLED TO ADD THE KEYWORDED SYMPTOMS TO THE 00156000
  157. * SYMPTOM SUMMARY FILE. 00157000
  158. * 00158000
  159. * 00159000
  160. * VII. OPERATION OF THE FSWRITE SUBROUTINE. 00160000
  161. * 00161000
  162. * A. FSWRITE MACRO IS ISSUED AND THE RETURN CODE IS SAVED. 00162000
  163. * B. AN IMMEDIATE FSCLOSE IS ISSUED. 00163000
  164. * C. THE FSWRITE RETURN CODE IS NOW CHECKED AND IF ZERO 00164000
  165. * THE CALLER IS RETURNED TO. 00165000
  166. * D. IF NON ZERO RETURN FROM FSWRITE MESSAGE DMMWRT200S IS 00166000
  167. * FILLED IN WITH THE PROPER INFORMATION AND WRITTEN TO THE 00167000
  168. * TERMINAL. RETURN CODE 8 EXIT IS TAKEN. 00168000
  169. * 00169000
  170. * ERROR MESSAGES: 00170000
  171. * 00171000
  172. * DMMWRT200S ERROR 'NNN' WRITING FILE 'FILENAME FILETYPE FM' 00172000
  173. * 00173000
  174. *************************************************************** 00174000
  175. EJECT 00175000
  176. DMMWRT CSECT @VA04250 00176000
  177. USING DMMWRT,R15 TEMPORARY ADDRESSABILITY @VA04250 00177000
  178. B START GO AROUND EYECATCHER @VA04250 00178000
  179. DS 0D @VA04250 00179000
  180. DC C'DMMWRT ' EYECATCHER @VA04250 00180000
  181. RELLEV DC C'REL4LEV0' RELEASE AND LEVEL @V4075A1 00181000
  182. START STM R14,R12,12(R13) SAVE CALLER'S REGS @VA04250 00182000
  183. LR R12,R15 LOAD OUR BASE REG @VA04250 00183000
  184. DROP R15 @VA04250 00184000
  185. USING DMMWRT,R12 ESTABLISH OUR ADDRESSABILITY @VA04250 00185000
  186. ST R13,SAVEBACK SAVE CALLER'S POINTER @VA04250 00186000
  187. LA R13,SAVEAREA POINT TO OUR SAVEAREA @VA04250 00187000
  188. USING INTSECT,R10 INTERNAL DATA @VA04250 00188000
  189. USING SYMSECT,R9 SYMPTOM SUMMARY CONTROL RECORD @VA04250 00189000
  190. USING PARMS,R8 PARMS PASSED BY CALLER @VA04250 00190000
  191. USING NUCON,R0 CMS LOW CORE @VA04250 00191000
  192. MAINLINE LR R8,R1 SAVE PARMS POINTER @VA04250 00192000
  193. L R10,INTDATA POINT TO INTERNAL DATA @VA04250 00193000
  194. *************************************************************** 00194000
  195. * MOVE INTDATA TO FIRST 2 OUTPUT RECORDS 00195000
  196. *************************************************************** 00196000
  197. INTOUT MVC R1PROB,INTPNUM MOVE PROBLEM NUMBER TO OUTPUT @VA04250 00197000
  198. MVC PROBNUM,INTPNUM SAVE IT IN FILE NAME OF REPORT @VA04250 00198000
  199. MVC R1DATE,CURRDATE REPORT CREATION DATE TO OUTPUT @VA04250 00199000
  200. MVC R1TIME,CURRTIME CURRENT TIME TO OUTPUT @VA04250 00200000
  201. CLI INTBYPS,YES BYPASS REQUESTED BY USER? @VA04250 00201000
  202. BNE INTOUT1 NO @VA04250 00202000
  203. MVC R1BYPASS,BYPASS INDICATE IN REPORT @VA04250 00203000
  204. INTOUT1 CLC INTED,BLANKS DID THE USER SUPPLY A FAIL DATE @VA04250 00204000
  205. BNE MVCUDATE YES, USE HIS @VA04250 00205000
  206. MVC R2DATE,CURRDATE MOVE CURRENT DATE TO OUTPUT @VA04250 00206000
  207. B INTCONT1 CONTINUE @VA04250 00207000
  208. MVCUDATE MVC R2DATE,INTED MOVE USER SUPPLIED DATE TO OUTPUT@VA04250 00208000
  209. INTCONT1 MVC R2CPUT,INTCPUT MOVE CPU TYPE TO OUTPUT @VA04250 00209000
  210. MVC R2CPUS,INTSER MOVE CPU SERIAL TO OUTPUT @VA04250 00210000
  211. MVC R2TIME,INTET ERROR TIME TO OUTPUT @VA04250 00211000
  212. MVC R2SEVIN,INTSEV MOVE SEVERITY TO OUTPUT @VA04250 00212000
  213. *************************************************************** 00213000
  214. * PUT EACH KYWD AND ASSOCIATED DATA ON A SEPERATE OUTPUT CARD 00214000
  215. *************************************************************** 00215000
  216. KEYOUT LA R7,OUTCONT POINT TO NEXT OUTPUT RECORD @VA04250 00216000
  217. L R6,KYDATA GET POINTER TO KEY DATA @VA04250 00217000
  218. LH R5,0(R6) GET LENGTH OF KEY DATA @VA04250 00218000
  219. AR R5,R6 POINT TO END OF DATA @VA04250 00219000
  220. ST R5,ENDKEY SAVE ADDRESS FOR LATER @VA04250 00220000
  221. LA R6,LNFLDLN(R6) POINT TO FIRST KEY LENGTH FIELD @VA04250 00221000
  222. KEYLOOP C R6,ENDKEY PROCESSED ALL DATA? @VA04250 00222000
  223. BNL KEYDONE YES @VA04250 00223000
  224. LH R4,0(R6) GET THIS LOGICAL RECORD LENGTH @VA04250 00224000
  225. LA R5,LNFLDLN(R6) POINT PAST LENGTH FIELDS TO DATA @VA04250 00225000
  226. AR R6,R4 POINT TO NEXT RECORD FOR LATER @VA04250 00226000
  227. SH R4,=H'5' SUBTRACT LENGTH OF LENGTH FIELD @VA04250 00227000
  228. * PLUS 1 (FOR EXECUTE INSTRUCTION) 00228000
  229. EX R4,KYMVC MOVE KEY PLUS DATA TO OUTPUT @VA04250 00229000
  230. LA R7,RSIZE(R7) POINT TO NEXT OUTPUT RECORD @VA04250 00230000
  231. B KEYLOOP OUTPUT ALL KEYWORDED DATA @VA04250 00231000
  232. KYMVC MVC 0(0,R7),0(R5) MOVE KEY PLUS DATA TO OUTPUT RCD @VA04250 00232000
  233. KEYDONE MVC 0(RSIZE,R7),KYMARK1 '- END OF KEY WORDED DATA-' @VA04250 00233000
  234. LA R7,RSIZE(R7) POINT TO NEXT OUTPUT RECORD @VA04250 00234000
  235. LA R2,OUTPUT POINT TO START OF OUTPUT AREA @VA04250 00235000
  236. LR R5,R7 GET END OF OUTPUT SO FAR @VA04250 00236000
  237. SR R5,R2 GET AMOUNT OF OUTPUT SO FAR @VA04250 00237000
  238. LR R3,R5 SAVE LENGTH FOR FSWRITE @VA04250 00238000
  239. SR R4,R4 SET FOR DIVIDE @VA04250 00239000
  240. D R4,=F'80' GET NUMBER OF RECORDS SO FAR @VA04250 00240000
  241. LA R4,REPORTFN POINT TO REPORT FN FT FM @VA04250 00241000
  242. BAL R6,FSWRITE OUTPUT THIS MUCH @VA04250 00242000
  243. *************************************************************** 00243000
  244. * WRITE SUPPORTING DATA TO OUTPUT 00244000
  245. *************************************************************** 00245000
  246. SUPPOUT L R4,SUPPDATA GET POINTER TO SUPPLEMENTARY DATA@VA04250 00246000
  247. LH R3,0(R4) GET LENGTH OF DATA @VA04250 00247000
  248. LTR R3,R3 ANY SUPPLEMENTARY DATA? @VA04250 00248000
  249. BZ TEXTOUT NO, GO DO TEXT OUTPUT @VA04250 00249000
  250. LA R5,ONE PUT OUT START-OF-SUPP-DATA CARD @VA04250 00250000
  251. LA R4,REPORTFN POINT TO FN FT FM @VA04250 00251000
  252. LA R3,RSIZE LENGTH @VA04250 00252000
  253. LA R2,SUPMARK1 POINT TO ACTUAL DATA @VA04250 00253000
  254. BAL R6,FSWRITE GO ADD THIS CARD @VA04250 00254000
  255. L R4,SUPPDATA POINT TO SUPPLEMENTARY DATA @VA04250 00255000
  256. LH R3,0(R4) GET LENGTH OF DATA @VA04250 00256000
  257. LA R2,TWO(R4) POINT PAST LENGTH FIELD @VA04250 00257000
  258. SR R4,R4 SET FOR DIVIDE @VA04250 00258000
  259. LR R5,R3 GET LENGTH @VA04250 00259000
  260. D R4,=F'80' GET NUMBER OF 80 BYTE RECORDS @VA04250 00260000
  261. LA R4,REPORTFN POINT TO FN FT FM OF OUTPUT FILE @VA04250 00261000
  262. BAL R6,FSWRITE ADD ON THIS MUCH @VA04250 00262000
  263. LA R5,ONE 1 CARD TO MARK END OF SUPP DATA @VA04250 00263000
  264. LA R3,RSIZE LENGTH OF 1 CARD OF DATA @VA04250 00264000
  265. LA R2,SUPMARK2 END-OF-SUPPLEMENTARY-DATA @VA04250 00265000
  266. BAL R6,FSWRITE GO PUT THE END CARD OUT @VA04250 00266000
  267. *************************************************************** 00267000
  268. * WRITE OUT TEXT PORTION OF REPORT 00268000
  269. *************************************************************** 00269000
  270. TEXTOUT L R4,TXTDATA POINT TO TEXT DATA (COUNT) @VA04250 00270000
  271. LH R3,0(R4) GET LENGTH OF TEXT DATA @VA04250 00271000
  272. LTR R3,R3 ANY TEXT DATA? @VA04250 00272000
  273. BZ CNTRLOUT NO, GO ADD TO SYMPTOM SUMMARY @VA04250 00273000
  274. LA R5,ONE 1 CARD INDICATING START-OF-TEXT @VA04250 00274000
  275. LA R4,REPORTFN POINT TO FN FT FM OF FILE @VA04250 00275000
  276. LA R3,RSIZE LENGTH OF DATA, 80 BYTES @VA04250 00276000
  277. LA R2,TXTMARK1 START-OF-TEXT-DATA @VA04250 00277000
  278. BAL R6,FSWRITE GO MARK START OF TEXT IN FILE @VA04250 00278000
  279. L R4,TXTDATA POINT TO TEXT AREA (COUNT FIELD) @VA04250 00279000
  280. LH R3,0(R4) GET LENGTH OF DATA AGAIN @VA04250 00280000
  281. LA R2,TWO(R4) POINT PAST COUNT TO ACTUAL DATA @VA04250 00281000
  282. LR R5,R3 DATA COUNT TO R5 @VA04250 00282000
  283. SR R4,R4 SET FOR DIVIDE @VA04250 00283000
  284. D R4,=F'80' NUMBER OF 80 BYTE RECORDS @VA04250 00284000
  285. LA R4,REPORTFN POINT TO FN FT FM @VA04250 00285000
  286. BAL R6,FSWRITE ADD TEXT TO PROBLEM REPORT @VA04250 00286000
  287. LA R5,ONE WRITE 1 RECORD (END-OF-TEXT) @VA04250 00287000
  288. LA R3,RSIZE BUFFER SIZE @VA04250 00288000
  289. LA R2,TXTMARK2 POINT TO END-OF-TEXT-DATA @VA04250 00289000
  290. BAL R6,FSWRITE GO WRITE THE END MARKER RECORD @VA04250 00290000
  291. EJECT 00291000
  292. *************************************************************** 00292000
  293. * THE PROBLEM REPORT IS NOW COMPLETE. NEXT WE WILL ADD THIS 00293000
  294. * PROBLEM TO THE SYMPTOM SUMMARY FILE. 00294000
  295. *************************************************************** 00295000
  296. CNTRLOUT LA R9,OUTCONT POINT TO BUFFER AREA @VA04250 00296000
  297. MVI 0(R9),BLANK BLANK FIRST BYTE @VA04250 00297000
  298. MVC ONE(RSIZE-ONE,R9),0(R9) CLEAR ONE 80 BYTE RECORD@VA04250 00298000
  299. MVC SYMPNUM,INTPNUM PROBLEM NUMBER TO CONTROL RCD @VA04250 00299000
  300. MVC SYMCREAT,CURRDATE TODAY'S DATE TO CREATION FLD @VA04250 00300000
  301. MVC SYMLACT,CURRDATE TODAY'S DATE IN LAST ACTIVITY @VA04250 00301000
  302. MVC SYMLFCT,=C'CREATE ' POST CREATE AS LAST ACT @VA04250 00302000
  303. MVC SYMSTAT,=C'OPENUSER' POST STATUS AS OPENUSER @VA04250 00303000
  304. MVC SYMSEV,INTSEV MOVE SEVERITY TO CONTROL RECORD @VA04250 00304000
  305. MVC SYMPLC,INTPLC MOVE PLC LEVEL TO COLTROL RECORD @VA04250 00305000
  306. MVC SYMFAIL,INTX1 MAJOR FAILURE DESCRIPTION @VA04250 00306000
  307. MVC SYMENVIR,INTX2 GENERAL ENVIRON AT TIME OF FAIL @VA04250 00307000
  308. L R4,KYDATA POINT TO KYWD DATA AREA (COUNT) @VA04250 00308000
  309. LH R5,0(R4) GET LENGTH OF DATA @VA04250 00309000
  310. LA R5,RSIZE-ONE(R5) SET TO ROUND TO NEXT HIGHEST @VA04250 00310000
  311. SR R4,R4 SET FOR DIVIDE @VA04250 00311000
  312. D R4,=F'80' NUMBER OF 80 BYTE RCDS OF KEYWDS @VA04250 00312000
  313. STC R5,SYMCCNT SAVE COUNT IN CONTROL RECORD @VA04250 00313000
  314. LA R5,ONE CONTROL RECORD ONLY FIRST @VA04250 00314000
  315. LA R4,SYMFNAME POINT TO 'SYMPTOM SUMMARY A1' @VA04250 00315000
  316. LA R3,RSIZE 1 80 BYTE RECORD @VA04250 00316000
  317. LA R2,OUTCONT POINT TO OUTPUT @VA04250 00317000
  318. BAL R6,FSWRITE GO ADD CNTRL RECORD @VA04250 00318000
  319. SR R5,R5 SET FOR IC @VA04250 00319000
  320. IC R5,SYMCCNT GET CARD COUNT OF DATA @VA04250 00320000
  321. LA R2,RSIZE SET FOR MULTIPLY @VA04250 00321000
  322. MR R2,R5 GET LENGTH OF DATA IN R3 @VA04250 00322000
  323. L R2,KYDATA POINT TO KEY DATA AREA (COUNT) @VA04250 00323000
  324. LH R6,0(R2) GET LENGTH OF VALID DATA @VA04250 00324000
  325. LR R1,R3 GET LENGTH OF TOTAL DATA @VA04250 00325000
  326. SR R1,R6 GET DIFFERENCE @VA04250 00326000
  327. LTR R1,R1 ANY DIFFERENCE? @VA04250 00327000
  328. BNP KYWRTOUT NO @VA04250 00328000
  329. AR R6,R2 POINT TO FIRST TRASH BYTE @VA04250 00329000
  330. KYTRASH MVI 0(R6),BLANK BLANK OUT ANY RESIDUAL TRASH @VA04250 00330000
  331. LA R6,ONE(R6) POINT TO NEXT BYTE @VA04250 00331000
  332. BCT R1,KYTRASH CLEAR TO END OF 80 BYTE BOUNDRY @VA04250 00332000
  333. KYWRTOUT BAL R6,FSWRITE GO ADD KEY DATA TO SYMTOM SUMMARY@VA04250 00333000
  334. B NORMEXIT WE'RE ALL DONE, RETURN TO CALLER @VA04250 00334000
  335. EJECT 00335000
  336. *************************************************************** 00336000
  337. * ROUTINE TO WRITE TO A DISK FILE 00337000
  338. * 00338000
  339. * ENTRY CONDITIONS: 00339000
  340. * 00340000
  341. * R6 RETURN REGISTER 00341000
  342. * R5 NUMBER OF 80 CHAR RECORDS TO WRITE 00342000
  343. * R4 POINTER TO FILENAME FILETYPE FILEMODE 00343000
  344. * R3 BUFFER SIZE 00344000
  345. * R2 BUFFER POINTER 00345000
  346. * 00346000
  347. * RETURN CONDITIONS: 00347000
  348. * 00348000
  349. * NORMAL RETURN ON R6. R2 IS ONLY ALTERED REGISTER 00349000
  350. * 00350000
  351. * ERROR EXIT TO RETCOD8 AFTER ISSUING MSG DMMWRT200S 00351000
  352. * 00352000
  353. *************************************************************** 00353000
  354. FSWRITE FSWRITE (R4),BSIZE=(R3),NOREC=(R5),BUFFER=(R2) @VA04250 00354000
  355. LR R2,R15 SAVE RETURN CODE @VA04250 00355000
  356. FSCLOSE (R4) DO THIS EVEN IF WE HAD ERROR @VA04250 00356000
  357. LTR R2,R2 CHECK FSWRITE RETURN CODE @VA04250 00357000
  358. BZ 0(R6) RETURN TO CALLER IF GOOD RET CODE@VA04250 00358000
  359. CVD R2,WKDWD HEX RETURN CODE TO PACKED @VA04250 00359000
  360. UNPK MSGNNN,WKDWD+SIX(RCCNT) UNPACK TO MESSAGE @VA04250 00360000
  361. OI MSGNNN+2,NUMERIC MAKE IT READABLE @VA04250 00361000
  362. MVC MSGFILE,0(R4) MOVE FN FT FM TO MESSAGE @VA04250 00362000
  363. MVC MSGFTYPE,FTDISP(R4) MOVE FILE TYPE TO MESSAGE @VA04250 00363000
  364. MVC MSGFMODE,FMDISP(R4) MOVE FILE TYPE TO MESSAGE @VA04250 00364000
  365. LA R3,MSG200 POINT TO MESSAGE @VA04250 00365000
  366. LA R4,MSG200L GET TOTAL LENGTH @VA04250 00366000
  367. WRTERM (R3),(R4) PUT MESSAGE ON TERMINAL @VA04250 00367000
  368. B RETCOD8 TAKE ERROR EXIT @VA04250 00368000
  369. * DMMWRT200S ERROR 'NNN' WRITING 'FILENAME FILETYPE FILEMODE' 00369000
  370. MSG200 DC C'DMMWRT200S ERROR ''' @VA04250 00370000
  371. MSGNNN DS CL3 ERROR RETURN CODE @VA04250 00371000
  372. DC C''' WRITING FILE ''' @VA04250 00372000
  373. MSGFILE DS CL8 FN FT FM @VA04250 00373000
  374. DC C' ' FILLER @VA04250 00374000
  375. MSGFTYPE DS CL8 FILE TYPE @VA04250 00375000
  376. DC C' ' FILLER @VA04250 00376000
  377. MSGFMODE DS CL2 FILE MODE @VA04250 00377000
  378. DC C'''' @VA04250 00378000
  379. MSG200L EQU *-MSG200 LENGTH OF MESSAGE @VA04250 00379000
  380. EJECT 00380000
  381. *************************************************************** 00381000
  382. * EXIT ROUTINES 00382000
  383. * RETURN CODES IN R15 OF 0 NORMAL 00383000
  384. * 8 ERROR ENCOUNTERED 00384000
  385. *************************************************************** 00385000
  386. NORMEXIT L R13,SAVEBACK GET CALLER'S SAVE AREA POINTER @VA04250 00386000
  387. LM R14,R12,12(R13) RESTORE HIS REGISTERS @VA04250 00387000
  388. SR R15,R15 RETURN CODE 0 @VA04250 00388000
  389. BR R14 RETURN TO CALLER @VA04250 00389000
  390. RETCOD8 L R13,SAVEBACK GET CALLER'S SAVE AREA POINTER @VA04250 00390000
  391. LM R14,R12,12(R13) RESTORE HIS REGISTERS @VA04250 00391000
  392. LA R15,8 RETURN CODE OF 8 @VA04250 00392000
  393. BR R14 RETURN TO CALLER @VA04250 00393000
  394. EJECT 00394000
  395. *************************************************************** 00395000
  396. * SAVEAREAS CONSTANTS AND EQUATES 00396000
  397. *************************************************************** 00397000
  398. DS 0F @VA04250 00398000
  399. SAVEAREA EQU * OUR REGISTER SAVE AREA @VA04250 00399000
  400. SAVEUSR DS F USER WORD @VA04250 00400000
  401. SAVEFWD DS F FORWARD POINTER @VA04250 00401000
  402. SAVEBACK DS F BACK CHAIN POINTER @VA04250 00402000
  403. SAVER14 DS F CALLER'S R14 @VA04250 00403000
  404. SAVER15 DS F CALLER'S R15 @VA04250 00404000
  405. SAVER0 DS F CALLER'S R0 @VA04250 00405000
  406. SAVER1 DS F CALLER'S R1 @VA04250 00406000
  407. SAVER2 DS F CALLER'S R2 @VA04250 00407000
  408. SAVER3 DS F CALLER'S R3 @VA04250 00408000
  409. SAVER4 DS F CALLER'S R4 @VA04250 00409000
  410. SAVER5 DS F CALLER'S R5 @VA04250 00410000
  411. SAVER6 DS F CALLER'S R6 @VA04250 00411000
  412. SAVER7 DS F CALLER'S R7 @VA04250 00412000
  413. SAVER8 DS F CALLER'S R8 @VA04250 00413000
  414. SAVER9 DS F CALLER'S R9 @VA04250 00414000
  415. SAVER10 DS F CALLER'S R10 @VA04250 00415000
  416. SAVER11 DS F CALLER'S R11 @VA04250 00416000
  417. SAVER12 DS F CALLER'S R12 @VA04250 00417000
  418. WKDWD DS D DOUBLE WORD WORK AREA @VA04250 00418000
  419. ENDKEY DS F AREA FOR PTR TO END OF KEY DATA @VA04250 00419000
  420. BLANKS DC C' ' BLANKS TO USE @VA04250 00420000
  421. FNAME DS 0CL8 FILENAME OF REPORT @VA04250 00421000
  422. REPORTFN EQU * FILENAME OF REPORT @VA04250 00422000
  423. DC C'PRB' @VA04250 00423000
  424. PROBNUM DS CL5 PROBLEM NUMBER @VA04250 00424000
  425. FTYPE DC C'REPORT ' FILETYPE OF REPORT @VA04250 00425000
  426. FMODE DC C'A1' FILE MODE OF OUTPUT REPORT @VA04250 00426000
  427. SYMFNAME DC C'SYMPTOM SUMMARY A1' @VA04250 00427000
  428. KYMARK1 DC CL80'--- END-OF-KEYWORDED-DATA ---' @VA04250 00428000
  429. SUPMARK1 DC CL80'--- START-OF-SUPPLEMENTARY-DATA-FILE-DESCRIPTIONS ---' 00429000
  430. SUPMARK2 DC CL80'--- END-OF-SUPPLEMENTARY-DATA-FILE-DESCRIPTIONS ---' 00430000
  431. TXTMARK1 DC CL80'--- START-OF-TEXT-DESCRIPTION ---' @VA04250 00431000
  432. TXTMARK2 DC CL80'--- END-OF-TEXT-DESCRIPTION ---' @VA04250 00432000
  433. BYPASS DC C'**** BYPASS REQUESTED' @VA04250 00433000
  434. PATCH DC 50F'0' PATCH AREA @VA04250 00434000
  435. YES EQU C'Y' USED TO CHECK FOR 'YES' @VA04250 00435000
  436. BLANK EQU C' ' BLANK @VA04250 00436000
  437. NUMERIC EQU X'F0' MASK FOR UNPACKED NUMERICS @VA04250 00437000
  438. ONE EQU 1 FOR LA DISPLACEMENTS ETC. @VA04250 00438000
  439. TWO EQU 2 SIZE OF HALFBYTE COUNT FIELD @VA04250 00439000
  440. RCCNT EQU 2 SIZE OF USABLE RETURN CODE @VA04250 00440000
  441. LNFLDLN EQU 4 LENGTH FIELD LENGTH @VA04250 00441000
  442. SIX EQU 6 DISP TO RETURN CODE IN WORK AREA @VA04250 00442000
  443. FTDISP EQU L'MSGFILE USED TO MOVE FILETYPE TO MSG @VA04250 00443000
  444. FMDISP EQU L'MSGFILE+L'MSGFTYPE WHERE FILE MODE GOES @VA04250 00444000
  445. RSIZE EQU 80 SIZE OF RECORDS @VA04250 00445000
  446. LTORG @VA04250 00446000
  447. OUTPUT EQU * PROBLEM REPORT OUTPUT AREA @VA04250 00447000
  448. *************************************************************** 00448000
  449. RECORD1 DS 0CL80 FIRST OUTPUT RECORD @VA04250 00449000
  450. R1LIT1 DC C'PROBLEM ' @VA04250 00450000
  451. R1PROB DS CL5 PROBLEM NUMBER @VA04250 00451000
  452. DC 16C' ' FILLER @VA04250 00452000
  453. R1LIT2 DC C'CREATED ' @VA04250 00453000
  454. R1DATE DS CL8 REPORT CREATION DATE MM/DD/YY @VA04250 00454000
  455. DC 3C' ' FILLER @VA04250 00455000
  456. R1TIME DS CL5 TIME OF REPORT @VA04250 00456000
  457. DC 5C' ' FILL TO 80 CHARACTERS @VA04250 00457000
  458. R1BYPASS DC C' ' BYPASS REQD GOES HERE @VA04250 00458000
  459. *************************************************************** 00459000
  460. RECORD2 DS 0CL80 SECOND OUTPUT RECORD @VA04250 00460000
  461. R2LIT1 DC C'FAILURE DATE ' @VA04250 00461000
  462. R2DATE DS CL8 DATE OF FAILURE MM/DD/YY @VA04250 00462000
  463. DC C' ' FILLER @VA04250 00463000
  464. R2TIME DC CL5' ' ERROR TIME @VA04250 00464000
  465. DC CL2' ' FILLER @VA04250 00465000
  466. R2LIT2 DC C'CPU TYPE ' @VA04250 00466000
  467. R2CPUT DS CL3 CPU TYPE @VA04250 00467000
  468. DC 8C' ' FILLER @VA04250 00468000
  469. R2LIT3 DC C'CPU SERIAL ' @VA04250 00469000
  470. R2CPUS DS CL6 CPU SERIAL @VA04250 00470000
  471. DC 4C' ' FILLER @VA04250 00471000
  472. R2SEV DC C'SEV ' @VA04250 00472000
  473. R2SEVIN DC C' ' THIS PROBLEM'S SEVERITY @VA04250 00473000
  474. DC 5C' ' FILLER @VA04250 00474000
  475. *************************************************************** 00475000
  476. RECORD3 DS 0CL80 THIRD OUTPUT RECORD @VA04250 00476000
  477. DC C'--- KEYWORDED SYMPTOMS ---' @VA04250 00477000
  478. DC 54C' ' BLANK FILLER @VA04250 00478000
  479. *************************************************************** 00479000
  480. OUTCONT DC 3200C' ' THE REST OF THE OUTPUT AREA @VA04250 00480000
  481. *************************************************************** 00481000
  482. * DSECTS AND REGISTER EQUATES 00482000
  483. *************************************************************** 00483000
  484. * DSECTS 00484000
  485. SPACE 1 00485000
  486. COPY INTSECT @VA04250 00486000
  487. SPACE 1 00487000
  488. COPY SYMSECT @VA04250 00488000
  489. SPACE 1 00489000
  490. PARMS DSECT @VA04250 00490000
  491. INTDATA DS F POINTER TO INTERNAL DATA AREA @VA04250 00491000
  492. KYDATA DS F POINTER TO KEY WORDED DATA @VA04250 00492000
  493. TXTDATA DS F POINTER TO TEXT DESCRIPTION DATA @VA04250 00493000
  494. SUPPDATA DS F PTR TO SUPPLEMENTARY FILE DATA @VA04250 00494000
  495. NUCON @VA04250 00495000
  496. SPACE 1 00496000
  497. REGEQU @VA04250 00497000
  498. END 00498000