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