WRT TITLE 'DMMWRT (IPCS) VM/370 - RELEASE 6' 00001000 *************************************************************** 00002000 * 00003000 * MODULE NAME: 00004000 * 00005000 * DMMWRI 00006000 * 00007000 * FUNCTION: 00008000 * 00009000 * TO CREATE A PROBLEM REPORT ON DISK AND ADD THIS PROBLEM TO 00010000 * THE SYMPTOM SUMMARY. DATA TO CREATE REPORT PASSED BY CALLER 00011000 * 00012000 * ATTRIBUTES: 00013000 * 00014000 * NON-REENTRANT 00015000 * NON-REUSABLE 00016000 * 00017000 * ENTRY POINTS: 00018000 * 00019000 * DMMWRI 00020000 * 00021000 * ENTRY CONDITIONS: 00022000 * 00023000 * R1 POINTS TO PARM LIST 00024000 * 00025000 * WD1 POINTER TO INTERNAL DATA (DSECT INTSECT) 00026000 * WD2 POINTER TO KEYWORDED DATA (VAR BLK FORMAT) 00027000 * WD3 POINTER TO TEXT DESCRIPTION (HLFWD LNGTH PREFIX) 00028000 * WD4 POINTER TO SUPLEMENTARY DATA (HLFWD LNGTH PREFIX) 00029000 * 00030000 * EXIT CONDITIONS: 00031000 * 00032000 * RETURN CODE IN R15 00033000 * 00034000 * 0 NORMAL SUCCESSFUL COMPLETION 00035000 * 8 ERROR OCCURRED 00036000 * 00037000 * CALLS TO OTHER ROUTINES: 00038000 * 00039000 * NONE 00040000 * 00041000 * EXTERNAL REFERENCES: 00042000 * 00043000 * NONE 00044000 * 00045000 * TABLES/WORKAREAS: 00046000 * 00047000 * INTERNAL DATA AREA (INTSECT DSECT) 00048000 * CMS LOW CORE (NUCON DSECT) 00049000 * SYMPTOM SUMMARY CONTROL RECORD (SYMSECT DSECT) 00050000 * 00051000 * REGISTER USAGE: 00052000 * 00053000 * R13 REGISTER SAVE AREA 00054000 * R12 BASE REGISTER 00055000 * R11 00056000 * R10 INTSECT DSECT (INTERNAL DATA) 00057000 * R9 SYMSECT DSECT (SYMPTOM SUMMARY CONTROL RECORD) 00058000 * R8 PARMS DSECT (PARMS PASSED BY CALLER) 00059000 * R7-R2 WORK 00060000 * 00061000 * NOTES: 00062000 * 00063000 * KEYWORDED DATA IS PASSED IN VARIABLE BLOCKED FORMAT. 00064000 * 00065000 * |TT00|LL00|..DATA1..|LL00|..DATA2..|......... 00066000 * 4 4 LL-4 4 LL-4 00067000 * 00068000 * 00069000 * WHERE TT IS THE TOTAL LENGTH OF THE BLOCK INCLUDING 00070000 * LENGTH FIELDS, AND EACH LL IS THE LENGTH OF THAT 00071000 * LOGICAL RECORD INCLUDING ITS LENGTH FIELD. 00072000 * 00073000 * OPERATION: 00074000 * 00075000 * I. PROBLEM REPORT RECORDS 1,2, AND 3 CREATED 00076000 * II. KEYWORDED DATA ADDED 00077000 * III. SUPPLEMENTARY FILE DESCRIPTIONS ADDED 00078000 * IV. TEXTUAL DESCRIPTION DATA ADDED 00079000 * V. SYMPTOM SUMMARY CTL RCD ADDED TO SYMPTOM SUMMARY FILE 00080000 * VI. KEYWORD DATA ADDED TO SYMPTOM SUMMARY 00081000 * VII. OPERATION OF FSWRITE SUBROUTINE 00082000 * 00083000 * 00084000 * 00085000 * I. INFO FROM THE INTERNAL DATA AREA AND DATE AND TIME 00086000 * STAMPS FROM CMS LOW CORE ARE PUT IN THE FIRST 2 RCDS 00087000 * THE 3RD RCD IS AN INDICATOR RCD MARKING THE START OF 00088000 * THE KEYWORDED SYMPTOMS. 00089000 * 00090000 * A. 1ST RCD DATA CONSISTS OF THE PROBLEM NUMBER, CURRENT 00091000 * DATE, AND CURRENT TIME. 00092000 * B. SECOND RECORD DATA CONSISTS OF THE DATE THE PROBLEM 00093000 * OCCURRED, THE CPU TYPE, AND THE CPU SERIAL. 00094000 * C. AFTER THE DATA HAS BEEN PLACED IN THE OUTPUT RECORDS 00095000 * ROUTINE FSWRITE IS LINKED TO FOR CREATION OF THE PROBLEM 00096000 * REPORT WITH THIS MUCH DATA. 00097000 * 00098000 * 00099000 * II. KEYWORDED INFO HAS BEEN PASSED IN VARIABLE BLOCKED 00100000 * RECORD FORMAT. KEYWORDS AND ASSOCIATED DATA WILL BE PUT ON 00101000 * SEPARATE RECORDS IN THE PROBLEM REPORT. 00102000 * 00103000 * A. POINTER TO END OF KEYWORD DATA IS CALCULATED AND SAVED. 00104000 * B. NEXT LENGTH FIELD MINUS ITS LENGTH (4) IS THE LENGTH OF 00105000 * KEYWORD+DATA. THE KYWD+DATA IS MOVED TO THE NEXT 80 BYTE 00106000 * OUTPUT RECORD. 00107000 * C. THE NEXT LOGICAL RCD LENGTH FIELD IS LOCATED BY ADDING 00108000 * THE CURRENT LENGTH FIELD TO THE CURRENT POINTER. 00109000 * D. IF THE END OF DATA HAS NOT BEEN REACHED GO TO B. 00110000 * E. THE NEXT OUTPUT RCD IS MARKED WITH AND END OF KYWRDED 00111000 * DATA INDICATOR. 00112000 * F. THE FSWRITE SUBROUTINE IS CALLED TO ADD THIS MUCH 00113000 * MORE DATA TO THE OUTPUT PROBLEM REPORT. 00114000 * 00115000 * 00116000 * III. OUTPUT SUPPORTING DATA RCDS. THE DATA HAS BEEN PASSED 00117000 * PREFIXED BY A HALFWORD LEN FIELD. THIS LENGTH IS QUARANTEED 00118000 * BY THE CALLER TO BE A MULTIPLE OF 80 CHAR RECORDS. 00119000 * 00120000 * A. IF THE LENGTH FIELD IS ZERO GO TO IV. 00121000 * B. AN INDICATOR RCD MARKING THE START OF SUPPTING DATA IS 00122000 * ADDED TO THE PROBLEM REPORT VIA A LINK TO FSWRITE. 00123000 * C. THE NUMBER OF SUPPORTING DATA RECORDS IS CALCULATED AND 00124000 * THESE ARE ADDED TO THE PROBLEM REPORT VIA LINK TO FSWRITE 00125000 * D. AN INDICATOR RCD MARKING THE END OF SUPPORTING DATA IS 00126000 * ADDED TO THE PROBLEM REPORT VIA LINK TO FSWRITE 00127000 * 00128000 * 00129000 * IV. ADD TEXTUAL DESCRIPTION. TEXT DATA IS PASSED PREFIXED 00130000 * BY A LENGTH FIELD. THE LENGTH IS GUARANTEED BY CALLER TO BE 00131000 * A MULTIPLE OF 80 BYTES. 00132000 * 00133000 * A. IF LENGTH IS ZERO GO TO V. 00134000 * B. FSWRITE IS CALLED TO ADD AN INDICATOR RCD MARKING THE 00135000 * THE START OF TEXTUAL DATA. 00136000 * C. THE NUMBER OF TEXT DESCRIPTION RCDS IS CALCULATED AND 00137000 * FSWRITE IS LINKED TO TO ADD THEM TO THE PROBLEM REPORT. 00138000 * D. FSWRITE IS LINKED TO TO ADD AN END OF TEXT DESCRIPTION 00139000 * MARKER. 00140000 * 00141000 * 00142000 * V. ADD A CTL RCD FOR THE PROBLEM TO THE SYMPTOM SUMMARY. 00143000 * 00144000 * A. DATA FROM THE INTERNAL DATA AREA, DATE STAMPS FROM CMS 00145000 * LOW CORE, AND INITIAL STATUS FIELDS ARE MOVED TO AN 80 00146000 * BYTE OUTPUT RECORD. 00147000 * B. FSWRITE IS LINKED TO TO ADD THE CONTROL RECORD TO THE 00148000 * SYMPTOM SUMMARY FILE. 00149000 * 00150000 * 00151000 * VI. ADD KEYWORDED DATA TO THE SYMPTOM SUMMARY FILE. 00152000 * 00153000 * A. THE BLOCK LENGTH OF THE DATA IS OBTAINED AND ROUNDED UP 00154000 * TO AN EVEN MULTIPLE OF 80 CHAR RECORDS. 00155000 * B. FSWRITE IS CALLED TO ADD THE KEYWORDED SYMPTOMS TO THE 00156000 * SYMPTOM SUMMARY FILE. 00157000 * 00158000 * 00159000 * VII. OPERATION OF THE FSWRITE SUBROUTINE. 00160000 * 00161000 * A. FSWRITE MACRO IS ISSUED AND THE RETURN CODE IS SAVED. 00162000 * B. AN IMMEDIATE FSCLOSE IS ISSUED. 00163000 * C. THE FSWRITE RETURN CODE IS NOW CHECKED AND IF ZERO 00164000 * THE CALLER IS RETURNED TO. 00165000 * D. IF NON ZERO RETURN FROM FSWRITE MESSAGE DMMWRT200S IS 00166000 * FILLED IN WITH THE PROPER INFORMATION AND WRITTEN TO THE 00167000 * TERMINAL. RETURN CODE 8 EXIT IS TAKEN. 00168000 * 00169000 * ERROR MESSAGES: 00170000 * 00171000 * DMMWRT200S ERROR 'NNN' WRITING FILE 'FILENAME FILETYPE FM' 00172000 * 00173000 *************************************************************** 00174000 EJECT 00175000 DMMWRT CSECT @VA04250 00176000 USING DMMWRT,R15 TEMPORARY ADDRESSABILITY @VA04250 00177000 B START GO AROUND EYECATCHER @VA04250 00178000 DS 0D @VA04250 00179000 DC C'DMMWRT ' EYECATCHER @VA04250 00180000 RELLEV DC C'REL4LEV0' RELEASE AND LEVEL @V4075A1 00181000 START STM R14,R12,12(R13) SAVE CALLER'S REGS @VA04250 00182000 LR R12,R15 LOAD OUR BASE REG @VA04250 00183000 DROP R15 @VA04250 00184000 USING DMMWRT,R12 ESTABLISH OUR ADDRESSABILITY @VA04250 00185000 ST R13,SAVEBACK SAVE CALLER'S POINTER @VA04250 00186000 LA R13,SAVEAREA POINT TO OUR SAVEAREA @VA04250 00187000 USING INTSECT,R10 INTERNAL DATA @VA04250 00188000 USING SYMSECT,R9 SYMPTOM SUMMARY CONTROL RECORD @VA04250 00189000 USING PARMS,R8 PARMS PASSED BY CALLER @VA04250 00190000 USING NUCON,R0 CMS LOW CORE @VA04250 00191000 MAINLINE LR R8,R1 SAVE PARMS POINTER @VA04250 00192000 L R10,INTDATA POINT TO INTERNAL DATA @VA04250 00193000 *************************************************************** 00194000 * MOVE INTDATA TO FIRST 2 OUTPUT RECORDS 00195000 *************************************************************** 00196000 INTOUT MVC R1PROB,INTPNUM MOVE PROBLEM NUMBER TO OUTPUT @VA04250 00197000 MVC PROBNUM,INTPNUM SAVE IT IN FILE NAME OF REPORT @VA04250 00198000 MVC R1DATE,CURRDATE REPORT CREATION DATE TO OUTPUT @VA04250 00199000 MVC R1TIME,CURRTIME CURRENT TIME TO OUTPUT @VA04250 00200000 CLI INTBYPS,YES BYPASS REQUESTED BY USER? @VA04250 00201000 BNE INTOUT1 NO @VA04250 00202000 MVC R1BYPASS,BYPASS INDICATE IN REPORT @VA04250 00203000 INTOUT1 CLC INTED,BLANKS DID THE USER SUPPLY A FAIL DATE @VA04250 00204000 BNE MVCUDATE YES, USE HIS @VA04250 00205000 MVC R2DATE,CURRDATE MOVE CURRENT DATE TO OUTPUT @VA04250 00206000 B INTCONT1 CONTINUE @VA04250 00207000 MVCUDATE MVC R2DATE,INTED MOVE USER SUPPLIED DATE TO OUTPUT@VA04250 00208000 INTCONT1 MVC R2CPUT,INTCPUT MOVE CPU TYPE TO OUTPUT @VA04250 00209000 MVC R2CPUS,INTSER MOVE CPU SERIAL TO OUTPUT @VA04250 00210000 MVC R2TIME,INTET ERROR TIME TO OUTPUT @VA04250 00211000 MVC R2SEVIN,INTSEV MOVE SEVERITY TO OUTPUT @VA04250 00212000 *************************************************************** 00213000 * PUT EACH KYWD AND ASSOCIATED DATA ON A SEPERATE OUTPUT CARD 00214000 *************************************************************** 00215000 KEYOUT LA R7,OUTCONT POINT TO NEXT OUTPUT RECORD @VA04250 00216000 L R6,KYDATA GET POINTER TO KEY DATA @VA04250 00217000 LH R5,0(R6) GET LENGTH OF KEY DATA @VA04250 00218000 AR R5,R6 POINT TO END OF DATA @VA04250 00219000 ST R5,ENDKEY SAVE ADDRESS FOR LATER @VA04250 00220000 LA R6,LNFLDLN(R6) POINT TO FIRST KEY LENGTH FIELD @VA04250 00221000 KEYLOOP C R6,ENDKEY PROCESSED ALL DATA? @VA04250 00222000 BNL KEYDONE YES @VA04250 00223000 LH R4,0(R6) GET THIS LOGICAL RECORD LENGTH @VA04250 00224000 LA R5,LNFLDLN(R6) POINT PAST LENGTH FIELDS TO DATA @VA04250 00225000 AR R6,R4 POINT TO NEXT RECORD FOR LATER @VA04250 00226000 SH R4,=H'5' SUBTRACT LENGTH OF LENGTH FIELD @VA04250 00227000 * PLUS 1 (FOR EXECUTE INSTRUCTION) 00228000 EX R4,KYMVC MOVE KEY PLUS DATA TO OUTPUT @VA04250 00229000 LA R7,RSIZE(R7) POINT TO NEXT OUTPUT RECORD @VA04250 00230000 B KEYLOOP OUTPUT ALL KEYWORDED DATA @VA04250 00231000 KYMVC MVC 0(0,R7),0(R5) MOVE KEY PLUS DATA TO OUTPUT RCD @VA04250 00232000 KEYDONE MVC 0(RSIZE,R7),KYMARK1 '- END OF KEY WORDED DATA-' @VA04250 00233000 LA R7,RSIZE(R7) POINT TO NEXT OUTPUT RECORD @VA04250 00234000 LA R2,OUTPUT POINT TO START OF OUTPUT AREA @VA04250 00235000 LR R5,R7 GET END OF OUTPUT SO FAR @VA04250 00236000 SR R5,R2 GET AMOUNT OF OUTPUT SO FAR @VA04250 00237000 LR R3,R5 SAVE LENGTH FOR FSWRITE @VA04250 00238000 SR R4,R4 SET FOR DIVIDE @VA04250 00239000 D R4,=F'80' GET NUMBER OF RECORDS SO FAR @VA04250 00240000 LA R4,REPORTFN POINT TO REPORT FN FT FM @VA04250 00241000 BAL R6,FSWRITE OUTPUT THIS MUCH @VA04250 00242000 *************************************************************** 00243000 * WRITE SUPPORTING DATA TO OUTPUT 00244000 *************************************************************** 00245000 SUPPOUT L R4,SUPPDATA GET POINTER TO SUPPLEMENTARY DATA@VA04250 00246000 LH R3,0(R4) GET LENGTH OF DATA @VA04250 00247000 LTR R3,R3 ANY SUPPLEMENTARY DATA? @VA04250 00248000 BZ TEXTOUT NO, GO DO TEXT OUTPUT @VA04250 00249000 LA R5,ONE PUT OUT START-OF-SUPP-DATA CARD @VA04250 00250000 LA R4,REPORTFN POINT TO FN FT FM @VA04250 00251000 LA R3,RSIZE LENGTH @VA04250 00252000 LA R2,SUPMARK1 POINT TO ACTUAL DATA @VA04250 00253000 BAL R6,FSWRITE GO ADD THIS CARD @VA04250 00254000 L R4,SUPPDATA POINT TO SUPPLEMENTARY DATA @VA04250 00255000 LH R3,0(R4) GET LENGTH OF DATA @VA04250 00256000 LA R2,TWO(R4) POINT PAST LENGTH FIELD @VA04250 00257000 SR R4,R4 SET FOR DIVIDE @VA04250 00258000 LR R5,R3 GET LENGTH @VA04250 00259000 D R4,=F'80' GET NUMBER OF 80 BYTE RECORDS @VA04250 00260000 LA R4,REPORTFN POINT TO FN FT FM OF OUTPUT FILE @VA04250 00261000 BAL R6,FSWRITE ADD ON THIS MUCH @VA04250 00262000 LA R5,ONE 1 CARD TO MARK END OF SUPP DATA @VA04250 00263000 LA R3,RSIZE LENGTH OF 1 CARD OF DATA @VA04250 00264000 LA R2,SUPMARK2 END-OF-SUPPLEMENTARY-DATA @VA04250 00265000 BAL R6,FSWRITE GO PUT THE END CARD OUT @VA04250 00266000 *************************************************************** 00267000 * WRITE OUT TEXT PORTION OF REPORT 00268000 *************************************************************** 00269000 TEXTOUT L R4,TXTDATA POINT TO TEXT DATA (COUNT) @VA04250 00270000 LH R3,0(R4) GET LENGTH OF TEXT DATA @VA04250 00271000 LTR R3,R3 ANY TEXT DATA? @VA04250 00272000 BZ CNTRLOUT NO, GO ADD TO SYMPTOM SUMMARY @VA04250 00273000 LA R5,ONE 1 CARD INDICATING START-OF-TEXT @VA04250 00274000 LA R4,REPORTFN POINT TO FN FT FM OF FILE @VA04250 00275000 LA R3,RSIZE LENGTH OF DATA, 80 BYTES @VA04250 00276000 LA R2,TXTMARK1 START-OF-TEXT-DATA @VA04250 00277000 BAL R6,FSWRITE GO MARK START OF TEXT IN FILE @VA04250 00278000 L R4,TXTDATA POINT TO TEXT AREA (COUNT FIELD) @VA04250 00279000 LH R3,0(R4) GET LENGTH OF DATA AGAIN @VA04250 00280000 LA R2,TWO(R4) POINT PAST COUNT TO ACTUAL DATA @VA04250 00281000 LR R5,R3 DATA COUNT TO R5 @VA04250 00282000 SR R4,R4 SET FOR DIVIDE @VA04250 00283000 D R4,=F'80' NUMBER OF 80 BYTE RECORDS @VA04250 00284000 LA R4,REPORTFN POINT TO FN FT FM @VA04250 00285000 BAL R6,FSWRITE ADD TEXT TO PROBLEM REPORT @VA04250 00286000 LA R5,ONE WRITE 1 RECORD (END-OF-TEXT) @VA04250 00287000 LA R3,RSIZE BUFFER SIZE @VA04250 00288000 LA R2,TXTMARK2 POINT TO END-OF-TEXT-DATA @VA04250 00289000 BAL R6,FSWRITE GO WRITE THE END MARKER RECORD @VA04250 00290000 EJECT 00291000 *************************************************************** 00292000 * THE PROBLEM REPORT IS NOW COMPLETE. NEXT WE WILL ADD THIS 00293000 * PROBLEM TO THE SYMPTOM SUMMARY FILE. 00294000 *************************************************************** 00295000 CNTRLOUT LA R9,OUTCONT POINT TO BUFFER AREA @VA04250 00296000 MVI 0(R9),BLANK BLANK FIRST BYTE @VA04250 00297000 MVC ONE(RSIZE-ONE,R9),0(R9) CLEAR ONE 80 BYTE RECORD@VA04250 00298000 MVC SYMPNUM,INTPNUM PROBLEM NUMBER TO CONTROL RCD @VA04250 00299000 MVC SYMCREAT,CURRDATE TODAY'S DATE TO CREATION FLD @VA04250 00300000 MVC SYMLACT,CURRDATE TODAY'S DATE IN LAST ACTIVITY @VA04250 00301000 MVC SYMLFCT,=C'CREATE ' POST CREATE AS LAST ACT @VA04250 00302000 MVC SYMSTAT,=C'OPENUSER' POST STATUS AS OPENUSER @VA04250 00303000 MVC SYMSEV,INTSEV MOVE SEVERITY TO CONTROL RECORD @VA04250 00304000 MVC SYMPLC,INTPLC MOVE PLC LEVEL TO COLTROL RECORD @VA04250 00305000 MVC SYMFAIL,INTX1 MAJOR FAILURE DESCRIPTION @VA04250 00306000 MVC SYMENVIR,INTX2 GENERAL ENVIRON AT TIME OF FAIL @VA04250 00307000 L R4,KYDATA POINT TO KYWD DATA AREA (COUNT) @VA04250 00308000 LH R5,0(R4) GET LENGTH OF DATA @VA04250 00309000 LA R5,RSIZE-ONE(R5) SET TO ROUND TO NEXT HIGHEST @VA04250 00310000 SR R4,R4 SET FOR DIVIDE @VA04250 00311000 D R4,=F'80' NUMBER OF 80 BYTE RCDS OF KEYWDS @VA04250 00312000 STC R5,SYMCCNT SAVE COUNT IN CONTROL RECORD @VA04250 00313000 LA R5,ONE CONTROL RECORD ONLY FIRST @VA04250 00314000 LA R4,SYMFNAME POINT TO 'SYMPTOM SUMMARY A1' @VA04250 00315000 LA R3,RSIZE 1 80 BYTE RECORD @VA04250 00316000 LA R2,OUTCONT POINT TO OUTPUT @VA04250 00317000 BAL R6,FSWRITE GO ADD CNTRL RECORD @VA04250 00318000 SR R5,R5 SET FOR IC @VA04250 00319000 IC R5,SYMCCNT GET CARD COUNT OF DATA @VA04250 00320000 LA R2,RSIZE SET FOR MULTIPLY @VA04250 00321000 MR R2,R5 GET LENGTH OF DATA IN R3 @VA04250 00322000 L R2,KYDATA POINT TO KEY DATA AREA (COUNT) @VA04250 00323000 LH R6,0(R2) GET LENGTH OF VALID DATA @VA04250 00324000 LR R1,R3 GET LENGTH OF TOTAL DATA @VA04250 00325000 SR R1,R6 GET DIFFERENCE @VA04250 00326000 LTR R1,R1 ANY DIFFERENCE? @VA04250 00327000 BNP KYWRTOUT NO @VA04250 00328000 AR R6,R2 POINT TO FIRST TRASH BYTE @VA04250 00329000 KYTRASH MVI 0(R6),BLANK BLANK OUT ANY RESIDUAL TRASH @VA04250 00330000 LA R6,ONE(R6) POINT TO NEXT BYTE @VA04250 00331000 BCT R1,KYTRASH CLEAR TO END OF 80 BYTE BOUNDRY @VA04250 00332000 KYWRTOUT BAL R6,FSWRITE GO ADD KEY DATA TO SYMTOM SUMMARY@VA04250 00333000 B NORMEXIT WE'RE ALL DONE, RETURN TO CALLER @VA04250 00334000 EJECT 00335000 *************************************************************** 00336000 * ROUTINE TO WRITE TO A DISK FILE 00337000 * 00338000 * ENTRY CONDITIONS: 00339000 * 00340000 * R6 RETURN REGISTER 00341000 * R5 NUMBER OF 80 CHAR RECORDS TO WRITE 00342000 * R4 POINTER TO FILENAME FILETYPE FILEMODE 00343000 * R3 BUFFER SIZE 00344000 * R2 BUFFER POINTER 00345000 * 00346000 * RETURN CONDITIONS: 00347000 * 00348000 * NORMAL RETURN ON R6. R2 IS ONLY ALTERED REGISTER 00349000 * 00350000 * ERROR EXIT TO RETCOD8 AFTER ISSUING MSG DMMWRT200S 00351000 * 00352000 *************************************************************** 00353000 FSWRITE FSWRITE (R4),BSIZE=(R3),NOREC=(R5),BUFFER=(R2) @VA04250 00354000 LR R2,R15 SAVE RETURN CODE @VA04250 00355000 FSCLOSE (R4) DO THIS EVEN IF WE HAD ERROR @VA04250 00356000 LTR R2,R2 CHECK FSWRITE RETURN CODE @VA04250 00357000 BZ 0(R6) RETURN TO CALLER IF GOOD RET CODE@VA04250 00358000 CVD R2,WKDWD HEX RETURN CODE TO PACKED @VA04250 00359000 UNPK MSGNNN,WKDWD+SIX(RCCNT) UNPACK TO MESSAGE @VA04250 00360000 OI MSGNNN+2,NUMERIC MAKE IT READABLE @VA04250 00361000 MVC MSGFILE,0(R4) MOVE FN FT FM TO MESSAGE @VA04250 00362000 MVC MSGFTYPE,FTDISP(R4) MOVE FILE TYPE TO MESSAGE @VA04250 00363000 MVC MSGFMODE,FMDISP(R4) MOVE FILE TYPE TO MESSAGE @VA04250 00364000 LA R3,MSG200 POINT TO MESSAGE @VA04250 00365000 LA R4,MSG200L GET TOTAL LENGTH @VA04250 00366000 WRTERM (R3),(R4) PUT MESSAGE ON TERMINAL @VA04250 00367000 B RETCOD8 TAKE ERROR EXIT @VA04250 00368000 * DMMWRT200S ERROR 'NNN' WRITING 'FILENAME FILETYPE FILEMODE' 00369000 MSG200 DC C'DMMWRT200S ERROR ''' @VA04250 00370000 MSGNNN DS CL3 ERROR RETURN CODE @VA04250 00371000 DC C''' WRITING FILE ''' @VA04250 00372000 MSGFILE DS CL8 FN FT FM @VA04250 00373000 DC C' ' FILLER @VA04250 00374000 MSGFTYPE DS CL8 FILE TYPE @VA04250 00375000 DC C' ' FILLER @VA04250 00376000 MSGFMODE DS CL2 FILE MODE @VA04250 00377000 DC C'''' @VA04250 00378000 MSG200L EQU *-MSG200 LENGTH OF MESSAGE @VA04250 00379000 EJECT 00380000 *************************************************************** 00381000 * EXIT ROUTINES 00382000 * RETURN CODES IN R15 OF 0 NORMAL 00383000 * 8 ERROR ENCOUNTERED 00384000 *************************************************************** 00385000 NORMEXIT L R13,SAVEBACK GET CALLER'S SAVE AREA POINTER @VA04250 00386000 LM R14,R12,12(R13) RESTORE HIS REGISTERS @VA04250 00387000 SR R15,R15 RETURN CODE 0 @VA04250 00388000 BR R14 RETURN TO CALLER @VA04250 00389000 RETCOD8 L R13,SAVEBACK GET CALLER'S SAVE AREA POINTER @VA04250 00390000 LM R14,R12,12(R13) RESTORE HIS REGISTERS @VA04250 00391000 LA R15,8 RETURN CODE OF 8 @VA04250 00392000 BR R14 RETURN TO CALLER @VA04250 00393000 EJECT 00394000 *************************************************************** 00395000 * SAVEAREAS CONSTANTS AND EQUATES 00396000 *************************************************************** 00397000 DS 0F @VA04250 00398000 SAVEAREA EQU * OUR REGISTER SAVE AREA @VA04250 00399000 SAVEUSR DS F USER WORD @VA04250 00400000 SAVEFWD DS F FORWARD POINTER @VA04250 00401000 SAVEBACK DS F BACK CHAIN POINTER @VA04250 00402000 SAVER14 DS F CALLER'S R14 @VA04250 00403000 SAVER15 DS F CALLER'S R15 @VA04250 00404000 SAVER0 DS F CALLER'S R0 @VA04250 00405000 SAVER1 DS F CALLER'S R1 @VA04250 00406000 SAVER2 DS F CALLER'S R2 @VA04250 00407000 SAVER3 DS F CALLER'S R3 @VA04250 00408000 SAVER4 DS F CALLER'S R4 @VA04250 00409000 SAVER5 DS F CALLER'S R5 @VA04250 00410000 SAVER6 DS F CALLER'S R6 @VA04250 00411000 SAVER7 DS F CALLER'S R7 @VA04250 00412000 SAVER8 DS F CALLER'S R8 @VA04250 00413000 SAVER9 DS F CALLER'S R9 @VA04250 00414000 SAVER10 DS F CALLER'S R10 @VA04250 00415000 SAVER11 DS F CALLER'S R11 @VA04250 00416000 SAVER12 DS F CALLER'S R12 @VA04250 00417000 WKDWD DS D DOUBLE WORD WORK AREA @VA04250 00418000 ENDKEY DS F AREA FOR PTR TO END OF KEY DATA @VA04250 00419000 BLANKS DC C' ' BLANKS TO USE @VA04250 00420000 FNAME DS 0CL8 FILENAME OF REPORT @VA04250 00421000 REPORTFN EQU * FILENAME OF REPORT @VA04250 00422000 DC C'PRB' @VA04250 00423000 PROBNUM DS CL5 PROBLEM NUMBER @VA04250 00424000 FTYPE DC C'REPORT ' FILETYPE OF REPORT @VA04250 00425000 FMODE DC C'A1' FILE MODE OF OUTPUT REPORT @VA04250 00426000 SYMFNAME DC C'SYMPTOM SUMMARY A1' @VA04250 00427000 KYMARK1 DC CL80'--- END-OF-KEYWORDED-DATA ---' @VA04250 00428000 SUPMARK1 DC CL80'--- START-OF-SUPPLEMENTARY-DATA-FILE-DESCRIPTIONS ---' 00429000 SUPMARK2 DC CL80'--- END-OF-SUPPLEMENTARY-DATA-FILE-DESCRIPTIONS ---' 00430000 TXTMARK1 DC CL80'--- START-OF-TEXT-DESCRIPTION ---' @VA04250 00431000 TXTMARK2 DC CL80'--- END-OF-TEXT-DESCRIPTION ---' @VA04250 00432000 BYPASS DC C'**** BYPASS REQUESTED' @VA04250 00433000 PATCH DC 50F'0' PATCH AREA @VA04250 00434000 YES EQU C'Y' USED TO CHECK FOR 'YES' @VA04250 00435000 BLANK EQU C' ' BLANK @VA04250 00436000 NUMERIC EQU X'F0' MASK FOR UNPACKED NUMERICS @VA04250 00437000 ONE EQU 1 FOR LA DISPLACEMENTS ETC. @VA04250 00438000 TWO EQU 2 SIZE OF HALFBYTE COUNT FIELD @VA04250 00439000 RCCNT EQU 2 SIZE OF USABLE RETURN CODE @VA04250 00440000 LNFLDLN EQU 4 LENGTH FIELD LENGTH @VA04250 00441000 SIX EQU 6 DISP TO RETURN CODE IN WORK AREA @VA04250 00442000 FTDISP EQU L'MSGFILE USED TO MOVE FILETYPE TO MSG @VA04250 00443000 FMDISP EQU L'MSGFILE+L'MSGFTYPE WHERE FILE MODE GOES @VA04250 00444000 RSIZE EQU 80 SIZE OF RECORDS @VA04250 00445000 LTORG @VA04250 00446000 OUTPUT EQU * PROBLEM REPORT OUTPUT AREA @VA04250 00447000 *************************************************************** 00448000 RECORD1 DS 0CL80 FIRST OUTPUT RECORD @VA04250 00449000 R1LIT1 DC C'PROBLEM ' @VA04250 00450000 R1PROB DS CL5 PROBLEM NUMBER @VA04250 00451000 DC 16C' ' FILLER @VA04250 00452000 R1LIT2 DC C'CREATED ' @VA04250 00453000 R1DATE DS CL8 REPORT CREATION DATE MM/DD/YY @VA04250 00454000 DC 3C' ' FILLER @VA04250 00455000 R1TIME DS CL5 TIME OF REPORT @VA04250 00456000 DC 5C' ' FILL TO 80 CHARACTERS @VA04250 00457000 R1BYPASS DC C' ' BYPASS REQD GOES HERE @VA04250 00458000 *************************************************************** 00459000 RECORD2 DS 0CL80 SECOND OUTPUT RECORD @VA04250 00460000 R2LIT1 DC C'FAILURE DATE ' @VA04250 00461000 R2DATE DS CL8 DATE OF FAILURE MM/DD/YY @VA04250 00462000 DC C' ' FILLER @VA04250 00463000 R2TIME DC CL5' ' ERROR TIME @VA04250 00464000 DC CL2' ' FILLER @VA04250 00465000 R2LIT2 DC C'CPU TYPE ' @VA04250 00466000 R2CPUT DS CL3 CPU TYPE @VA04250 00467000 DC 8C' ' FILLER @VA04250 00468000 R2LIT3 DC C'CPU SERIAL ' @VA04250 00469000 R2CPUS DS CL6 CPU SERIAL @VA04250 00470000 DC 4C' ' FILLER @VA04250 00471000 R2SEV DC C'SEV ' @VA04250 00472000 R2SEVIN DC C' ' THIS PROBLEM'S SEVERITY @VA04250 00473000 DC 5C' ' FILLER @VA04250 00474000 *************************************************************** 00475000 RECORD3 DS 0CL80 THIRD OUTPUT RECORD @VA04250 00476000 DC C'--- KEYWORDED SYMPTOMS ---' @VA04250 00477000 DC 54C' ' BLANK FILLER @VA04250 00478000 *************************************************************** 00479000 OUTCONT DC 3200C' ' THE REST OF THE OUTPUT AREA @VA04250 00480000 *************************************************************** 00481000 * DSECTS AND REGISTER EQUATES 00482000 *************************************************************** 00483000 * DSECTS 00484000 SPACE 1 00485000 COPY INTSECT @VA04250 00486000 SPACE 1 00487000 COPY SYMSECT @VA04250 00488000 SPACE 1 00489000 PARMS DSECT @VA04250 00490000 INTDATA DS F POINTER TO INTERNAL DATA AREA @VA04250 00491000 KYDATA DS F POINTER TO KEY WORDED DATA @VA04250 00492000 TXTDATA DS F POINTER TO TEXT DESCRIPTION DATA @VA04250 00493000 SUPPDATA DS F PTR TO SUPPLEMENTARY FILE DATA @VA04250 00494000 NUCON @VA04250 00495000 SPACE 1 00496000 REGEQU @VA04250 00497000 END 00498000