*DECK,MTPLOT
      PROGRAM MTPLOT(OUTPUT,INPUT=65,TAPE10,OLDPDT,NEWPDT,TAPE3=OLDPDT, 
     1TAPE4=NEWPDT,TAPE5) 
      DIMENSION IN(13),ITYPE(512),MOUNTS(512),IREAD(512),IC(512),INA(8) 
      DIMENSION IRR(512),IUR(512),IRW(512),IUW(512),GRADE(512)
      DIMENSION IRRR(512),IRRW(512),NTRR(512),NTRW(512),NTUR(512),
     .          NTUW(512) 
      DIMENSION NAME(3),IPLOT(10),IWROTE(512),NOERRS(512),ISITE(3)
      DIMENSION NTE(512),IN3(22),IN5(5),INEW(22)
      DIMENSION IDATES(8),NTAPES(8),NTNOERR(8),PTNOERR(8),NTEENB(8),
     1PTEENB(8),NTENENB(8),PTENENB(8),NTRRE(8),PTRRE(8),NTRWE(8), 
     2PTRWE(8),NTURE(8),PTURE(8),NTUWE(8),PTUWE(8),NTENEFB(8),
     3PTENEFB(8),NTEEFB(8),PTEEFB(8),NTETME(8),PTETME(8),IMOUNTS(8),
     4PMOUNTS(8),HGRADE(8),SGRADE(8)
      DIMENSION IBLOCKS(8),PBNE(8),PBRR(8),PBRW(8),PBUR(8),PBUW(8)
      DIMENSION IUNIT(8,512),PMOUNT(8,512),PRDWR(8,512),GRADES(8,512) 
      CHARACTER AST*41
      DATA AST/'*****************************************'/ 
* 
* 
*** 
* 
* 1.0 AUTHOR
*     ------
* 
*     J.E. SIPPER              02/02/84 
*     SR. TECHNICAL CONSULTANT
*     ENGINEERING SERVICES
*     EASTERN REGION
* 
* 
* 2.0 OVERVIEW
*     --------
* 
*     MTPLOT IS A FORTRAN V (FTN5) APPLICATION PROGRAM WITH THE DESIGNED
*     PURPOSE OF ASSISTING THE 6000/CYBER SYSTEMS HARDWARE PERFORMANCE
*     ANALYZER (HPA) IN PROVIDING FACTUAL, USABLE INFORMATION RELATIVE
*     TO TAPE SUBSYSTEM PERFORMANCE.  IT IS DESIGNED AS AN EXPERIMENTAL 
*     FIELD TOOL TO GAIN AN UNDERSTANDING OF THE REAL REQUIREMENTS IN 
*     A REMOTE TECHNICAL ASSISTANCE, SERVICE CENTER ENVIRONMENT.
* 
*     ONE OF THE MAJOR PROBLEMS IN USING HPA TODAY ON TAPE SUBSYSTEMS 
*     IS THAT IT IS EXTREMELY DIFFICULT TO DETERMINE IF READ AND WRITE
*     ERRORS ARE OCCURRING AS A RESULT OF A BAD UNIT OR BAD TAPE.  IT 
*     IS ALSO EXTREMELY DIFFICULT TO DETERMINE THE TREND OF PERFORMANCE 
*     FOR A SPECIFIC UNIT OR THE ENTIRE SUBSYSTEM.  MTPLOT IS DESIGNED
*     TO PROVIDE THIS VISABILITY.  ITS FIVE REPORTS ARE DESIGNED TO BE
*     USED BY AN EIC OR SERVICE CENTER MANAGER TO DETERMINE THE OVER- 
*     ALL HEALTH OF 639/66X/67X/698/FSC SUBSYSTEMS AT AN INSTALLATION,
*     TO IDENTIFY SPECIFIC TAPE UNITS THAT ARE NOT MEETING THE EXPECTED 
*     PERFORMANCE GOAL AND PROVIDE A LIST OF TAPES WITH EXCESSIVE OR
*     UNRECOVERED ERRORS THAT SHOULD BE ANALYZED.  MTPLOT IS NOT A
*     REPLACEMENT FOR HPA REPORTS, IN FACT IT PRODUCES ITS REPORTS BY 
*     ANALYZING THE DETAIL TAPE REPORT FROM HPA (TAPE10) AND ITS
*     OWN HISTORY FILE.  HOWEVER, MTPLOT SHOULD BE AN EFFECTIVE TOOL
*     IN IDENTIFYING OVERALL PERFORMANCE AS WELL AS SPECIFIC UNITS THAT 
*     THE CUSTOMER ENGINEER NEEDS TO LOOK AT CLOSER TO TRY AND IMPROVE
*     PERFORMANCE.
* 
*     MTPLOT PRODUCES FIVE REPORTS DESIGNED TO ACCOMPLISH THE FOLLOWING 
*     GOALS;
* 
*     1. A SUMMARY OF DATA COLLECTED FOR THE REPORT PERIOD (NORMALLY
*        ONE WEEK).  THIS REPORT PROVIDES ONE LINE OF INFORMATION FOR 
*        EACH TAPE UNIT IN THE SYSTEM AND IDENTIFIES THE NUMBER OF TAPE 
*        MOUNTS, BLOCKS READ AND WRITTEN, RECOVERED READ AND WRITE
*        ERRORS, UNRECOVERED READ AND WRITE ERRORS AND NUMBER OF TAPES
*        WITH READ AND WRITE ERRORS.  AS DESCRIBED LATER, SOME TAPE 
*        MOUNTS ARE EXCLUDED AND NOT COUNTED IN THE DATA PRESENTED IN 
*        THIS REPORT AND NOT ALL RAW ERRORS ARE COUNTED (ERRORS ARE 
*        SMOOTHED TO PREVENT ONE BAD TAPE MAKING A UNIT LOOK VERY BAD). 
*        ONLY THE SMOOTHED ERROR COUNTS WILL BE USED IN GRADING A UNITS 
*        PERFORMANCE. 
* 
*        THE PURPOSE OF THIS REPORT IS TO PROVIDE THE USER WITH ALL THE 
*        FACTS THAT ARE USED TO PRODUCE THE FINAL PERFORMANCE GRADE FOR 
*        EACH TAPE UNIT.  IF THE GRADE IS BAD, THIS REPORT CAN BE USED
*        TO DETERMINE THE FACTORS THAT CAUSED IT TO BE BAD AND MAY
*        ASSIST IN IDENTIFYING THE AREA THAT NEEDS TO BE WORKED (FOR
*        EXAMPLE, THE PROBLEM MAY BE MANY ERRORS ON WRITE OPERATIONS
*        WITH VERY FEW READ ERRORS).
* 
*     2. THE SECOND REPORT IS A PLOT OF THE PERFORMANCE OF EACH TAPE
*        UNIT FOR THE PAST 8 REPORT PERIODS (NORMALLY THE PAST 8 WEEKS).
*        THE FIRST GRADE REPORTED FOR EACH UNIT IS CREATED FROM THE 
*        DATA PRESENTED IN THE ABOVE REPORT (SUMMARY OF DATA COLLECTED).
*        THE REMAINING 7 GRADES ARE OBTAINED FROM A HISTORY FILE THAT 
*        IS MAINTAINED BY MTPLOT.  IN ADDITION TO THE PERFORMANCE 
*        GRADE, THIS REPORT IDENTIFIES THE AMOUNT OF WORK PERFORMED BY
*        EACH UNIT FOR EACH REPORT PERIOD.  THIS INCLUDES THE PERCENT 
*        OF TAPES THAT WERE MOUNTED ON THE UNIT AND THE PERCENT OF
*        BLOCKS THAT WERE PROCESSED BY THE UNIT COMPARED TO THE TOTAL 
*        MOUNTS AND BLOCKS PROCESSED. 
* 
*        THE PURPOSE OF THIS REPORT IS TO IDENTIFY THE PERFORMANCE
*        TREND OF EACH TAPE UNIT IN THE SYSTEM AND TO IDENTIFY UNITS
*        THAT SHOULD BE LOOKED AT MORE CLOSELY TO DETERMINE HOW TO
*        IMPROVE PERFORMANCE.  A UNIT IS CONSIDERED NOT MEETING THE 
*        PERFORMANCE GOAL IF IT HAS A GRADE HIGHER THAN 10 ON THE PLOT).
*        IF MORE THAN ONE UNIT IS NOT MEETING THE GOAL, THE UNIT THAT 
*        IS DOING THE MOST WORK (MOST MOUNTS, BLOCKS PROCESSED) SHOULD
*        BE LOOKED AT FIRST SINCE IT IS CREATING A BIGGER IMPACT ON 
*        THE TOTAL SUBSYSTEM PERFORMANCE. 
* 
*     3. THE THIRD REPORT IS A SUMMARY OF TAPE SUBSYSTEM STATISTICS 
*        FOR ALL TAPE UNITS IN THE SYSTEM.  STATISTICS FOR UP TO EIGHT
*        REPORT PERIODS (NORMALLY 8 WEEKS) ARE PRESENTED IN THREE 
*        CATAGORIES.  THE FIRST CATAGORY IDENTIFIES THE TOTAL TAPE
*        MOUNTS FOR EACH PERIOD AND INDICATES THE NUMBER AND PERCENT
*        OF TAPES EXCLUDED AND NOT COUNTED IN THE STATISTICS (DESCRIBED 
*        LATER).  THE SECOND CATAGORY IDENTIFIES THE NUMBER AND PERCENT 
*        OF TAPES THAT WERE NOT EXCLUDED, AND INDICATES PERFORMANCE 
*        OF HARDWARE AND MEDIA BY SPECIFYING TAPES WITH NO ERRORS,
*        TAPES WITH READ/WRITE RECOVERED ERRORS AND UNRECOVERED READ/ 
*        WRITE ERRORS.  THE THIRD CATAGORY PROVIDES STATISTICS ON DATA
*        ACCURACY BY IDENTIFYING TOTAL BLOCKS PROCESSED, PERCENT OF 
*        BLOCKS WITH NO ERRORS, NUMBER OF RECOVERED READ ERRORS PER 
*        100,000 BLOCKS PROCESSED, NUMBER OF RECOVERED WRITE ERRORS 
*        PER 10,000 BLOCKS PROCESSED, AND NUMBER OF UNRECOVERED READ
*        AND WRITE ERRORS PER MILLION BLOCKS PROCESSED (RAW ERRORS ARE
*        USED FOR THESE STATISTICS, NOT SMOOTHED ERRORS).  ALSO INCLUDED
*        IS A HARDWARE GRADE AND A SITE GRADE.  THE HARDWARE GRADE IS AN
*        AVERAGE OF ALL UNIT GRADES IN THE SYSTEM AND PROVIDES A SINGLE 
*        NUMBER FOR COMPARING ONE SITE-S HARDWARE WITH ANOTHER.  THE
*        SITE GRADE INCLUDES HARDWARE AND MEDIA PERFORMANCE DERIVED FROM
*        PERCENT OF TAPES WITH ERRORS AND PERCENT OF BLOCKS PROCESSED 
*        WITH ERRORS. 
* 
*        THIS REPORT PROVIDES A TREND ANALYSIS OF THE HARDWARE AND
*        MEDIA FOR THE TOTAL SYSTEM.  IT SHOULD PROVE TO BE VERY USEFUL 
*        IN ESTABLISHING WHAT IS "NORMAL" AT THE SITE AND THEN CAN BE 
*        USED TO MEASURE THE IMPACT OF IMPROVEMENT PROGRAMS, SUCH AS
*        BUYING NEW TAPES, CLEANING TAPES, CLEANING HEADS AT REGULAR
*        INTERVALS OR NEW MAINTENANCE TECHNIQUES.  THIS REPORT, IF
*        SAVED IN HARDCOPY FORM EVERY 8 REPORT PERIODS, PROVIDES A
*        VERY GOOD TRACK RECORD IN CASE TECH SUPPORT IS CALLED IN TO
*        HELP PREVENT A CRISIS OR TO GET OUT OF ONE.  VERY OFTEN IT IS
*        EXTREMELY DIFFICULT TO DETERMINE WHEN A SITE IS BACK TO NORMAL 
*        IF YOU CANNOT IDENTIFY "NORMAL". 
* 
*     4. THE FOURTH REPORT IS AN OPTIONAL DETAIL MEDIA REPORT FOR THE 
*        CURRENT REPORT PERIOD (PRINTED IF SENSE SWITCH 1 IS ON).  THE
*        DATA IN THIS REPORT IS ALSO WRITTEN TO TAPE5 WHICH CAN BE SAVED
*        AND PRINTED LATER IF NECESSARY.  THIS REPORT IDENTIFIES THE
*        TAPES THAT HAD UNRECOVERED READ OR WRITE ERRORS, TAPES WITH
*        EXCESSIVE ERRORS (MORE THAN 2 PERCENT), TAPES WITH LESS THAN 10
*        BLOCKS PROCESSED WITH ERRORS AND TAPES WITH UNRECOVERED ERRORS 
*        ON MULTIPLE MOUNTS.  A CODE IS PROVIDED IN THE REPORT TO 
*        INDICATE THE REASON THE TAPE VSN IS IN THE REPORT. 
* 
*        THIS REPORT MAY BE QUITE LONG AT SOME SITES AND NORMALLY NEED
*        NOT BE PRINTED SINCE IT IS PRIMARILY USED AS INPUT TO THE FIFTH
*        REPORT THAT IDENTIFIES MEDIA THAT SHOULD BE INSPECTED. 
* 
*     5. THE FIFTH REPORT IS THE MEDIA REPORT WHICH IDENTIFIES TAPE VSNS
*        THAT SHOULD BE INSPECTED.  THIS REPORT IDENTIFIES THE TAPE VSN 
*        AND THE NUMBER OF MOUNTS IN WHICH THIS VSN HAD UNRECOVERED 
*        WRITE AND READ ERRORS AS WELL AS TOO MANY ERRORS (MORE THAN A
*        2 PERCENT ERROR RATE).  TO MAKE IT TO THIS REPORT, A VSN MUST
*        HAVE HAD TWO OR MORE MOUNTS THAT RESULTED IN UNRECOVERED WRITE 
*        ERRORS, OR A TOTAL OF THREE OR MORE MOUNTS THAT RESULTED IN
*        UNRECOVERED WRITE/READ/EXCESSIVE ERRORS WITHIN THE CURRENT 
*        REPORT PERIOD.  A VSN CAN ALSO MAKE IT TO THIS REPORT IF IT HAD
*        ANY NUMBER OF UNRECOVERED OR EXCESSIVE ERRORS IN THE CURRENT 
*        REPORT PERIOD AND THE PREVIOUS REPORT PERIOD.  THE NUMBER OF 
*        MOUNTS IN ERROR ARE IDENTIFIED FOR THE CURRENT AND PREVIOUS 6
*        REPORT PERIODS.  THIS DATA IS MAINTAINED ON THE NEWPDT/OLDPDT
*        HISTORY FILE MAINTAINED BY MTPLOT.  ALL VSNS WITH UNRECOVERED
*        AND EXCESSIVE ERRORS ARE MAINTAINED ON THE HISTORY FILE AND
*        ARE DROPPED ONLY AFTER THEY DO NOT APPEAR AGAIN FOR 7 REPORT 
*        PERIODS. 
* 
*        THE PURPOSE OF THIS REPORT IS TO IDENTIFY TAPE VSNS THAT SHOULD
*        BE INSPECTED BY THE CUSTOMER TO RID THE TAPE LIBRARY OF SUSPECT
*        MEDIA. 
* 
* 
* 3.0 GRADING TECHNIQUES
* 
*     THE STANDARD DEVIATION TECHNIQUES USED BY HPA WILL NOT BE USED
*     IN THIS PERFORMANCE MONITORING PROGRAM.  THE HPA APPROACH APPEARS 
*     TO USE THE AVERAGE PERFORMANCE OF THE SITE BEING ANALYZED AS
*     THE STANDARD.  THIS MEANS THAT IF ALL UNITS ARE BAD, THEY ALL 
*     LOOK GOOD.  ANOTHER PROBLEM WITH THIS APPROACH IS THAT THERE IS 
*     NO WAY TO COMPARE ONE SITE'S PERFORMANCE WITH ANOTHER.
* 
*     THE APPROACH TO BE USED IS TO SET A STANDARD THAT WILL BE APPLIED 
*     AT ALL SITES SO THAT ONE SITE'S OVERALL PERFORMANCE OF HARDWARE 
*     AND MEDIA CAN BE COMPARED WITH ANOTHER.  TO DO THIS, MUCH DATA
*     COLLECTION AND PRELIMINARY GRADING TECHNIQUES MUST BE PERFORMED.
* 
*     THE BIGGEST PROBLEM WITH ANY TAPE TRANSPORT PERFORMANCE ANALYSIS
*     PROGRAM USING CUSTOMER STATISTICS IS DETERMINING WHETHER A PROBLEM
*     IS CREATED BY THE TAPE UNIT OR TAPE MEDIA.  THE BEST THAT CAN BE
*     DONE IS TO SMOOTH THE DATA TO TRY AND MINIMIZE THE IMPACT THAT
*     POOR MEDIA HAS ON THE FINAL UNIT RANKINGS.  THE FOLLOWING ARE 
*     CONSIDERATIONS TAKEN INTO ACCOUNT BY THIS PROGRAM.
* 
* 
*     ELIMINATING SUSPECTED BAD TAPES AND USER ERRORS 
*     ----------------------------------------------- 
* 
*     1. TAPES WITH FEWER THAN 10 RECORDS PROCESSED ARE NOT COUNTED.
* 
*        . IF NO ERRORS AND NO BLOCKS PROCESSED, TAPE MIGHT NOT HAVE
*          BEEN REFERENCED BY THE USER, OR NO USAGE DATA WAS REPORTED 
*          FOR A TAPE THAT HAD NO ERRORS.  UNFAIR ADVANTAGE FOR THE 
*          UNIT.
* 
*        . IF 1 TO 9 BLOCKS PROCESSED WITH NO ERRORS, VERY LITTLE WORK
*          PERFORMED BY THE UNIT.  COUNTING THIS TAPE AS A GOOD TAPE
*          MOUNT WOULD BE AN UNFAIR ADVANTAGE FOR THE UNIT. 
* 
*        . IF 1 TO 9 BLOCK PROCESSED WITH READ/WRITE ERRORS, COULD BE 
*          A DAMAGED TAPE AT LOAD POINT OR USER ERROR.  TO COUNT THE
*          ERRORS ON THESE TAPES WOULD BE UNFAIR TO THE UNIT.  HOWEVER, 
*          SINCE HARDWARE MAY BE THE TRUE CAUSE, THE NUMBER OF TAPES IN 
*          THIS CATAGORY ARE COUNTED AND DO IMPACT THE UNITS GRADE. 
* 
*        . IF NO BLOCKS PROCESSED BUT READ/WRITE ERRORS OCCURRED, NO
*          USAGE DATA WAS LOGGED.  COUNTING ERRORS WITH NO VOLUME OF
*          DATA AVAILABLE WOULD BE UNFAIR TO THE UNIT.
* 
*     2. ERRORS ON TAPES THAT HAVE A FAILURE RATE GREATER THAN 2 PERCENT
*        (MORE THAN 1 ERROR PER 50 BLOCKS PROCESSED) ARE NOT COUNTED
*        AGAINST THE UNIT.  THIS PREVENTS ONE TAPE FROM MAKING A UNIT 
*        LOOK SICK.  HOWEVER, THESE TAPES ARE COUNTED AND DO IMPACT THE 
*        UNITS GRADE. 
* 
*     3. TAPES WITH MORE THAN ONE UNRECOVERED READ ERROR PER MOUNT ARE
*        NOT COUNTED.  THIS TYPICALLY IMPLIES THAT THE USER IS USING
*        OWNCODE ROUTINES TO READ KNOWN BAD TAPES WHICH SHOULD NOT BE 
*        COUNTED AGAINST THE UNIT.
* 
*     4. TAPES WITH MORE THAN ONE UNRECOVERED WRITE ERROR PER MOUNT ARE 
*        NOT COUNTED.  THIS TYPICALLY IMPLIES THAT THE USER IS USING
*        OWNCODE ROUTINES TO WRITE KNOWN BAD TAPES WHICH SHOULD NOT BE
*        COUNTED AGAINST THE UNIT.
* 
*     5. TAPES WITH UNRECOVERED ERRORS ON MULTIPLE MOUNTS ARE NOT 
*        COUNTED.  THIS TYPICALLY INDICATES A BAD TAPE IS BEING MOVED 
*        FROM UNIT TO UNIT OR A JOB RE-RUN IN AN ATTEMPT TO FORCE A BAD 
*        TAPE THROUGH THE SYSTEM.  COUNTING SUCH TAPES WOULD NOT BE FAIR
*        TO THE UNIT. 
* 
* 
*     SMOOTHING ERRORS TO COMPENSATE FOR HIGH MEDIA FAILURES
*     ------------------------------------------------------
* 
*     1. TO COMPENSATE FOR EXPECTED MEDIA FAILURES, ONE RECOVERED WRITE 
*        ERROR IS ALLOWED PER 3000 BLOCKS WRITTEN WITHOUT COUNTING IT 
*        AGAINST THE UNIT GRADE.  ONE RECOVERED READ ERROR IS ALSO
*        ALLOWED PER 3000 BLOCKS READ AND IS NOT COUNTED AGAINST THE
*        UNIT.
* 
*     2. ONCE ONE ERROR PER 3000 BLOCKS READ HAS BEEN ALLOWED, ONLY ONE 
*        RECOVERED READ ERROR PER 500 BLOCKS PROCESSED WILL BE COUNTED
*        AGAINST A UNIT.  THIS TENDS TO SMOOTH ERRORS SUCH THAT ONE BAD 
*        TAPE WILL NOT MAKE THE UNIT LOOK SICK. 
* 
*     3. ONCE ONE ERROR PER 3000 BLOCKS WRITTEN HAS BEEN ALLOWED, ONLY
*        ONE RECOVERED WRITE ERROR PER 500 BLOCKS PROCESSED WILL BE 
*        COUNTED AGAINST A UNIT.  THIS TENDS TO SMOOTH ERRORS SUCH THAT 
*        ONE BAD TAPE WILL NOT MAKE THE UNIT LOOK SICK. 
* 
* 
*     WEIGHT ASSIGNMENTS TO ERRORS
*     ----------------------------- 
* 
*     A POINT SYSTEM IS USED TO GRADE EACH UNIT WITH A FIXED STANDARD 
*     FOR ALL UNITS.  A UNIT SHOULD HAVE NO MORE THAN 10 POINTS AGAINST 
*     IT IN ORDER TO STAY WITHIN THE PERFORMANCE GOAL.  POINTS AGAINST
*     A UNIT ARE COUNTED IN FIVE DIFFERENT CATAGORIES AS FOLLOWS: 
* 
*     1. RECOVERED READ ERRORS
* 
*        FACTORS THAT IMPACT THIS CATAGORY ARE THE PERCENT OF TAPE
*        MOUNTS THAT HAVE RECOVERED READ ERRORS AND THE PERCENT OF
*        BLOCKS PROCESSED THAT CREATE RECOVERED READ ERRORS (SMOOTHED 
*        ERROR COUNTS ARE USED, NOT RAW ERRORS).  THE FORMULA USED IS:  
* 
*         ((MOUNTS WITH RECOVERED READ ERRORS/MOUNTS*400)**2/25) *
*         ((BLOCKS WITH RECOVERED READ ERRORS/BLOCKS*400000)**2/25)/64
* 
*        SINCE THIS PROCESS IS COMPLEX, THE FOLLOWING EXAMPLE SHOWS HOW 
*        SPECIFIC FAILURE RATES IMPACT THE UNIT GRADE.
* 
*                              BLOCKS IN ERROR
* 
*        TAPES IN        1/40000   2/40000   3/40000   4/40000
*         ERROR          -------   -------   -------   -------
*         ----- 
* 
*          1/40              .25       1.0      2.25       4.0
*          2/40             1.0        4.0      9.0       16.0
*          3/40             2.25       9.0     20.25      36.0
*          4/40             4.0       16.0     36.0       64.0
*          5/40             6.25      25.0     56.25     100.0
* 
*        THE ABOVE GRADES ARE THE VALUES THAT WOULD RESULT FROM THE 
*        FORMULA.  HOWEVER, A MAXIMUM GRADE OF 50.0 IS ALLOWED IN THIS
*        CATAGORY AND A MAXIMUM OF 1.5 POINTS PER MOUNT ARE ALLOWED IN
*        ORDER TO MAKE THE GRADING SYSTEM MORE FUNCTIONAL AT SITES THAT 
*        HAVE LOW NUMBER OF MOUNTS. 
* 
*     2. RECOVERED WRITE ERRORS 
* 
*        FACTORS THAT IMPACT THIS CATAGORY ARE THE PERCENT OF TAPE
*        MOUNTS THAT HAVE RECOVERED WRITE ERRORS AND THE PERCENT OF 
*        BLOCKS PROCESSED THAT CREATE RECOVERED WRITE ERRORS (SMOOTHED
*        ERROR COUNTS ARE USED, NOT RAW ERRORS).  THE FORMULA USED IS:  
* 
*         ((MOUNTS WITH RECOVERED WRITE ERRORS/MOUNTS*200)**2/25) * 
*         ((BLOCKS WITH RECOVERED WRITE ERRORS/BLOCKS*400000)**2/25)/64 
* 
*        SINCE THIS PROCESS IS COMPLEX, THE FOLLOWING EXAMPLE SHOWS HOW 
*        SPECIFIC FAILURE RATES IMPACT THE UNIT GRADE.
* 
*                              BLOCKS IN ERROR
* 
*        TAPES IN        1/40000   2/40000   3/40000   4/40000
*         ERROR          -------   -------   -------   -------
*         ----- 
* 
*          1/20              .25       1.0      2.25       4.0
*          2/20             1.0        4.0      9.0       16.0
*          3/20             2.25       9.0     20.25      36.0
*          4/20             4.0       16.0     36.0       64.0
*          5/20             6.25      25.0     56.25     100.0
* 
*        THE ABOVE GRADES ARE THE VALUES THAT WOULD RESULT FROM THE 
*        FORMULA.  HOWEVER, A MAXIMUM GRADE OF 50.0 IS ALLOWED IN THIS
*        CATAGORY AND A MAXIMUM OF 1.5 POINTS PER MOUNT ARE ALLOWED IN
*        ORDER TO MAKE THE GRADING SYSTEM MORE FUNCTIONAL AT SITES THAT 
*        HAVE LOW NUMBER OF MOUNTS. 
* 
*     3. UNRECOVERED READ ERRORS
* 
*        THE ONLY FACTOR CONSIDERED IN THIS CATAGORY IS THE PERCENT OF
*        MOUNTS THAT RESULT IN UNRECOVERED READ ERRORS.  THE FORMULA
*        USED IS AS FOLLOWS:  
* 
*         (MOUNTS WITH UNRECOVERED READ ERRORS/MOUNTS*1000)**2/25 
* 
*          TAPES IN ERROR       UNIT GRADE
*          --------------       ----------
* 
*              1/200                1.0 
*              2/200                4.0 
*              3/200                9.0 
*              4/200               16.0 
*              5/200               25.0 
* 
*        THE ABOVE GRADES ARE THE VALUES THAT WOULD RESULT FROM THE 
*        FORMULA.  HOWEVER, A MAXIMUM GRADE OF 50.0 IS ALLOWED IN THIS
*        CATAGORY AND A MAXIMUM OF 5.0 POINTS PER MOUNT ARE ALLOWED IN
*        ORDER TO MAKE THE GRADING SYSTEM MORE FUNCTIONAL AT SITES THAT 
*        HAVE LOW NUMBER OF MOUNTS. 
* 
*     4. UNRECOVERED WRITE ERRORS 
* 
*        THE ONLY FACTOR CONSIDERED IN THIS CATAGORY IS THE PERCENT OF
*        MOUNTS THAT RESULT IN UNRECOVERED WRITE ERRORS.  THE FORMULA USED
*        IS AS FOLLOWS: 
* 
*         (MOUNTS WITH UNRECOVERED WRITE ERRORS/MOUNTS*1000)**2/25
* 
*          TAPES IN ERROR       UNIT GRADE
*          --------------       ----------
* 
*              1/200                1.0 
*              2/200                4.0 
*              3/200                9.0 
*              4/200               16.0 
*              5/200               25.0 
* 
*        THE ABOVE GRADES ARE THE VALUES THAT WOULD RESULT FROM THE 
*        FORMULA.  HOWEVER, A MAXIMUM GRADE OF 50.0 IS ALLOWED IN THIS
*        CATAGORY AND A MAXIMUM OF 7.0 POINTS PER MOUNT ARE ALLOWED IN
*        ORDER TO MAKE THE GRADING SYSTEM MORE FUNCTIONAL AT SITES THAT 
*        HAVE LOW NUMBER OF MOUNTS. 
* 
* 
*     5. TAPES EXCLUDED 
* 
*        ALTHOUGH ERRORS ON TAPES EXCLUEDED DO NOT IMPACT THE GRADE OF
*        A UNIT, THE NUMBER OF TAPES EXCLUDED FOR CERTAIN REASONS ARE 
*        COUNTED.  THIS IS NECESSARY SINCE A VERY BAD UNIT MAY OTHER- 
*        WISE GO UNDETECTED SINCE MANY OF THE TAPES IN ERROR COULD BE 
*        EXCLUDED.  TAPES THAT ARE COUNTED ARE THOSE THAT HAVE ERRORS 
*        WITH LESS THAN 10 BLOCKS PROCESSED AND TAPES WITH A 2 PERCENT
*        OR HIGHER ERROR RATE.  THE FORMULA USED IS AS FOLLOWS: 
* 
*         (TAPES EXCLUDED/MOUNTS*1000)**2/800 
* 
*          TAPES EXCLUDED       UNIT GRADE
*          --------------       ----------
* 
*              1/50                  .5 
*              2/50                 2.0 
*              3/50                 4.5 
*              4/50                 8.0 
*              5/50                12.5 
* 
*        THE ABOVE GRADES ARE THE VALUES THAT WOULD RESULT FROM THE 
*        FORMULA.  HOWEVER, A MAXIMUM GRADE OF 50.0 IS ALLOWED IN THIS
*        CATAGORY AND A MAXIMUM OF 5.0 POINTS PER MOUNT ARE ALLOWED IN
*        ORDER TO MAKE THE GRADING SYSTEM MORE FUNCTIONAL AT SITES THAT 
*        HAVE LOW NUMBER OF MOUNTS. 
* 
* 
*     USING THE ABOVE FORMULAS, A MAXIMUM OF 200 POINTS COULD BE COUNTED
*     AGAINST A UNIT.  A "TYPICAL" UNIT SHOULD HAVE LESS THAN 10 POINTS 
*     TO STAY WITHIN THE PERFORMANCE GOAL.  THE FOLLOWING POINTS BREAK- 
*     DOWN INDICATES THE STANDARD THAT IS BEING APPLIED TO ALL SITES. 
* 
*        1. 1 TAPE IN 20 HAS RECOVERED READ ERRORS WITH 
*           1 ERROR PER 25000 BLOCKS AVERAGE              - 2.56 POINTS 
* 
*        2. 1 TAPE IN 10 HAS RECOVERED WRITE ERRORS WITH
*           1 ERROR PER 25000 BLOCKS AVERAGE              - 2.56 POINTS 
* 
*        3. 1 TAPE IN 200 WITH UNRECOVERED READ ERRORS    - 1.0  POINTS 
* 
*        4. 1 TAPE IN 200 WITH UNRECOVERED WRITE ERRORS   - 1.0  POINTS 
* 
*        5. 1 TAPE IN 50 EXCLUDED                         -  .5  POINT
*                                                          -----
*                                              UNIT GRADE   7.62
* 
* 
*     ANY SIGNIFICANT CHANGE IN ANY ONE OF THE GRADING FACTORS CAN DRIVE
*     DRIVE THE UNIT-S GRADE ABOVE THE 10 POINT RATING.  FOR EXAMPLE, 
*     IF THE ERRORS IN THE ABOVE EXAMPLE WERE DOUBLED, THE UNIT GRADE 
*     WOULD GO FROM 7.62 TO 91.92.
* 
* 
* 4.0 MTPLOT FILES
*     ------------
* 
*     MTPLOT REQUIRES FOUR FILES TO PERFORM ITS TASK, IN ADDITION TO
*     THE NORMAL INPUT AND OUTPUT FILES.
* 
*     1. TAPE10 - THIS IS THE FILE FROM AN HPA RUN THAT CONTAINS
*        MT AND NT STATISTICS FOR THE REPORT PERIOD (TYPICALLY ONE
*        WEEK).  THESE STATISTICS WILL BE USED TO DETERMINE THE GRADE 
*        FOR EACH UNIT FOR THIS REPORT PERIOD AND TO DEVELOP SUBSYSTEM
*        STATISTICS FOR THE PERIOD. 
* 
*     2. OLDPDT - THIS FILE (OLD PERFORMANCE DATA FOR TAPES) IS THE 
*        MTPLOT HISTORY FILE WRITTEN ON THE PREVIOUS RUN OF MTPLOT AS 
*        NEWPDT (NEW PERFORMANCE DATA FOR TAPES).  FOR THE INITIAL RUN
*        OF MTPLOT, THIS FILE NEED NOT BE PRESENT.  FOR SUBSEQUENT RUNS,
*        IT CONTAINS UNIT GRADES AND SUBSYSTEM STATISTICS FOR UP TO THE 
*        PAST 8 REPORT PERIODS (TYPICALLY THE PAST 8 WEEKS).
* 
*     3. NEWPDT - THIS FILE (NEW PERFORMANCE DATA FOR TAPES) IS CREATED 
*        BY MTPLOT EACH TIME IT IS EXECUTED.  IT CONTAINS UNIT GRADES 
*        AND SUBSYSTEM STATISTICS FOR THE CURRENT REPORT PERIOD, PLUS UP
*        TO 8 REPORT PERIODS FROM THE OLDPDT FILE.  THIS FILE MUST BE 
*        SAVED AND USED AS OLDPDT FOR THE NEXT RUN OF MTPLOT.  ALTHOUGH 
*        MTPLOT CAN BE EXECUTED AT ANY INTERVAL, IT IS RECOMMENDED THAT 
*        NEWPDT NOT BE SAVED AND USED AS OLDPDT EXCEPT ONCE A WEEK SO 
*        THAT THE REPORT PERIODS REFLECT WEEKLY STATISTICS AND GRADES.
* 
*     4. TAPE5 - THIS FILE CONTAINS A LIST OF TAPE VSNS THAT HAVE BEEN
*        EXCLUDED DUE TO TOO MANY ERRORS DURING THE REPORT PERIOD AND 
*        TAPES THAT HAD UNRECOVERED READ OR WRITE ERRORS.  THIS TAPE
*        IS REWOUND AND PRINTED AS THE FOURTH REPORT IF SENSE SWITCH 1
*        IS ON.  IT IS ALSO USED TO PRODUCE REPORT 5, THE MEDIA REPORT
*        OF TAPES THAT SHOULD BE INSPECTED. 
* 
* 
* 5.0 INSTALLATION AND INTERDEPENDANCIES
*     ----------------------------------
* 
*     MTPLOT NEED NOT BE INSTALLED INTO THE CUSTOMER DEADSTART TAPE - 
*     IT IS NORMALLY EXECUTED FROM A USER FILE.  THE SOURCE CODE MUST 
*     BE EXTRACTED FROM THE PROGRAM LIBRARY IT RESIDES ON (CML) USING 
*     UPDATE, COMPILED INTO BINARY BY FORTRAN V (FTN5) AND SAVED FOR
*     LATER EXECUTION AS A DIRECT OR INDIRECT PERMANENT FILE. 
*     THIS PROCESS IS COMPLETED USING STANDARD CML INSTALLATION 
*     PROCEEDURES DELIVERED ON THE CML TAPE.  THESE PROCEEDURES ARE 
*     DOCUMENTED IN SECTION 1 OF THE CML MANUAL.
* 
*     IN ORDER FOR MTPLOT TO FUNCTION PROPERLY, HPA USED AT THE SITE
*     MUST BE FROM CML LEVEL 161 OR LATER SINCE MTPLOT PROCESSES
*     DATA ON TAPE10 CREATED BY THESE VERSIONS OF HPA.
* 
*     IF THE HUID FEATURE OF HPA IS USED, OTHER DEPENDANCIES EXIST. 
*     MTPLOT NORMALLY REPORTS ERRORS AGAINST THE DEVICE TYPE (NT OR MT) 
*     AND THE SYSTEM EST (NT040, NT050, ETC).  IF THE HUID FEATURE
*     OF HPA IS UTILIZED, THE HUID MUST FIT THE FOLLOWING FORMAT FOR
*     MTPLOT TO FUNCTION PROPERLY WITHOUT MODIFICATIONS:  
* 
*       HUID = XYZZ             X = 0, 1, 2 OR 3
*                               Y = 0 - 9 (CONTROLLER NUMBER) 
*                              ZZ = 01-77 (UNIT NUMBER) 
* 
*     THE VALUE OF X WILL NOT BE USED IN THE MTPLOT OUTPUT.  ONLY THE 
*     Y AND ZZ VALUES WILL BE USED TO IDENTIFY A UNIT (EVERY UNIT MUST
*     HAVE A UNIQUE ZZ VALUE REGARDLESS OF THE CONTROLLER NUMBER THEY 
*     ARE ASSIGNED).  BY USING A CONTROLLER NUMBER, ALL UNITS THAT ARE
*     ATTACHED TO THE SAME CONTROLLER WILL APPEAR TOGETHER IN THE 
*     MTPLOT OUTPUT, ALLOWING THE USER TO SPOT CONTROLLER PROBLEMS
*     EASIER. 
* 
* 
* 6.0 EXECUTION 
*     --------- 
* 
*     AS PREVIOUSLY INDICATED, MTPLOT SHOULD BE EXECUTED ON THE SAME
*     DAY EACH WEEK IN ORDER TO INSURE THAT CONTINUOUS STATISTICS 
*     RELATIVE TO TAPE PERFORMANCE ARE COLLECTED.  IF IT IS EXECUTED
*     MORE FREQUENTLY THAN ONCE A WEEK, THE SAMPLE JOB DECKS THAT ARE 
*     PROVIDED BELOW MUST BE MODIFIED AS INDICATED TO PREVENT MESSING 
*     UP THE HISTORY FILE (NEWPDT). 
* 
*     THE NORMAL IMPLEMENTATION OF MTPLOT IS TO SET UP A JOB THAT IS
*     SUBMITTED FOR EXECUTION BY THE AUTOMATIC JOB SCHEDULER, SKEDULR.
*     TYPICALLY, A LOCAL COPY OF THE OUTPUT OF MTPLOT IS PRINTED AND
*     A PERMENANT FILE COPY IS MAINTAINED FOR REMOTE ACCESS IF REQUIRED.
*     THIS IS ASSUMED TO BE THE SITUATION AND THE JOB DECKS THAT FOLLOW 
*     TAKE THIS FACT INTO CONSIDERATION.  THE FOLLOWING JOB REPRESENTS
*     A TYPICAL EXECUTION UNDER NOS.
* 
*       /JOB
*       JOB AND ACCOUNT CARDS AS REQUIRED. .
*       ATTACH CARD FOR HPA OLD HISTORY FILE AS FILE NAME HF. 
*       COPYBR,HF,OLDHF,8.
*       RETURN,HF.
*       REWIND,OLDHF. 
*       HPA,H,HR=MT,HR=NT,T=D.
*       RETURN,OLDHF. 
*       GET,MTPLOT. 
*       GET,OLDPDT/NA.
*       MTPLOT. 
*       REPLACE,NEWPDT=OLDPDT.   (REMOVE IF NOT WEEKLY RUN) 
*       REPLACE,OUTPUT=OMTPLOT.  (REMOVE IF NOT WEEKLY RUN) 
*       /EOR
*       EASTERN CYBERNET CENTER - K4                   (SITE NAME)
*       /EOF
* 
* 
*     THE FOLLOWING JOB REPRESENTS A TYPICAL EXECUTION UNDER NOSBE. 
* 
*       /JOB
*       JOB AND ACCOUNT CARDS AS REQUIRED.
*       ATTACH CARD FOR HPA OLD HISTORY FILE AS FILE NAME HF. 
*       COPYBR,HF,OLDHF,8.
*       RETURN,HF.
*       HPA,H,HR=MT,HR=NT,T=D.
*       RETURN,OLDHF. 
*       ATTACH,MTPLOT,ID=YOURID.
*       ATTACH,OLDPDT,ID=YOURID.    (REMOVE IF FIRST RUN OF MTPLOT) 
*       REQUEST,NEWPDT,*PF. 
*       MTPLOT. 
*       CATALOG(NEWPDT,OLDPDT,ID=YOURID,RP=999) 
*       PURGE,OLDPTD.               (REMOVE IF FIRST RUN OF MTPLOT) 
*       REWIND,OUTPUT.
*       PURGE,OMTPLOT,ID=YOURID.    (REMOVE IF FIRST RUN OF MTPLOT) 
*       RETURN,OMTPLOT. 
*       REQUEST,OMTPLOT,*PF.
*       COPY,OUTPUT,OMTPLOT.
*       CATALOG,OMTPLOT,ID=YOURID,RP=999. 
*       /EOR
*       EASTERN CYBERNET CENTER - A                    (SITE NAME)
*       /EOF
* 
*     IF MTPLOT IS TO BE EXECUTED ON NOSBE OTHER THAN THE WEEKLY RUN, 
*     THE FOLLOWING JOB SHOULD BE EXECUTED TO PREVENT UPDATING THE
*     PERMANENT FILES (OLDPDT AND OMTPLOT). 
* 
*       /JOB
*       JOB AND ACCOUNT CARDS AS REQUIRED.
*       ATTACH CARD FOR HPA OLD HISTORY FILE AS FILE NAME HF. 
*       COPYBR,HF,OLDHF,X.  (X = NUMBER OF DAYS+2 TO BE ANALYZED).
*       RETURN,HF.
*       REWIND,OLDHF. 
*       HPA,H,HR=MT,HR=NT,T=D.
*       RETURN,OLDHF. 
*       ATTACH,MTPLOT,ID=YOURID.
*       ATTACH,OLDPDT,ID=YOURID.     (REMOVE IF FIRST RUN OF MTPLOT)
*       MTPLOT. 
*       /EOR
*       EASTERN CYBERNET CENTER - A                    (SITE NAME)
*       /EOF
* 
* 
*     WHEN MTPLOT IS EXECUTED, THE FIRST OUTPUT IDENTIFIES THE VERSION
*     NUMBER OF MTPLOT AND THE DATE IT WAS WRITTEN.  NEXT, THE USER IS
*     REQUESTED TO PROVIDE THE NAME OF THE SITE, IN 30 CHARACTERS OR
*     LESS, THAT IS TO BE PRINTED IN THE HEADER INFORMATION FOR EACH OF 
*     THE REPORTS CREATED.  MTPLOT THEN PROCESSES INPUT DATA AND PRINTS 
*     REPORTS.
* 
* 
* 7.0 DESCRIPTION 
*     ----------- 
* 
*     THE FOLLOWING STEPS ARE PERFORMED BY MTPLOT TO ACCOMPLISH ITS 
*     DESIGNED TASKS. 
* 
*** 
*     STEP 1  - CLEAR/SET VARIABLES TO BE USED BY THE PROGRAM.
* 
      MASK = O"77777777777777777" 
      MDATE = MASK
      IHDR = 0
      IBNE = IBRR = IBRW = IBUR = IBUW = 0
      DO 100 I=1,8
      IDATES(I) = 10H 
      NTAPES(I) = NTNOERR(I) = NTEENB(I) = NTENENB(I) = 0 
      IMOUNTS(I) = NTRRE(I) = NTRWE(I) = NTURE(I) = NTUWE(I) = 0
      PTNOERR(I) = PTEENB(I) = PTENENB(I) = PTRRE(I) = 0.0
      PMOUNTS(I) = PTRWE(I) = PTURE(I) = PTUWE(I) = 0.0 
      NTENEFB(I) = NTEEFB(I) = NTETME(I) = 0
      PTENEFB(I) = PTEEFB(I) = PTETME(I) = 0.0
      HGRADE(I) = SGRADE(I) = 0.0 
      IBLOCKS(I) = 0
      PBNE(I) = PBRR(I) = PBRW(I) = PBUR(I) = PBUW(I) = 0.0 
      DO 100 K=1,512
      IUNIT(I,K) = 0
      PMOUNT(I,K) = PRDWR(I,K) = GRADES(I,K) = 0.0
  100 CONTINUE
      DO 105 I=1,512
      ITYPE(I)=MOUNTS(I)=IREAD(I)=IWROTE(I)=0 
      IRR(I)=IUR(I)=IRW(I)=IUW(I)=0 
      IRRR(I)=IRRW(I)=NOERRS(I)=0 
      NTE(I)=NTRR(I)=NTRW(I)=NTUR(I)=NTUW(I)=0
      GRADE(I) = 0.0
      IC(I) = 0 
  105 CONTINUE
      IDATES(1) = 0 
      IPLOT(1) = 10H* 
      IPLOT(2) = 10H**
      IPLOT(3) = 10H*** 
      IPLOT(4) = 10H****
      IPLOT(5) = 10H***** 
      IPLOT(6) = 10H******
      IPLOT(7) = 10H******* 
      IPLOT(8) = 10H********
      IPLOT(9) = 10H********* 
      IPLOT(10)= 10H**********
*** 
*     STEP 2 - PRINT NAME, VERSION AND DATE OF MTPLOT.  REQUEST USER
*              TO SUPPLY SITE NAME AND READ IT FROM INPUT.
* 
      PRINT 200 
  200 FORMAT(1HQ,/,10X,'MTPLOT VERSION 1.0 - FEBRUARY 2, 1984',/,/, 
     .1X,'ENTER SITE NAME IN 30 CHARACTERS OR LESS')
      READ 205,ISITE
  205 FORMAT(3A10)
*** 
*     STEP 3 - REWIND OLDPDT (TAPE 3) AND READ SUBSYSTEM STATISTICS 
*              FOR THE PREVIOUS 7 REPORT PERIODS INTO BUFFERS.  GO TO 
*              STEP 5 IF END-OF-FILE IS READ. 
* 
      REWIND 3
      IEOF3 = 0 
      REWIND 5
      DO 305 I=2,8
      READ (3,300,END=500) IDATES(I),NTAPES(I),NTENENB(I),PTENENB(I), 
     1NTENEFB(I),PTENEFB(I),NTEEFB(I),PTEEFB(I),NTEENB(I),PTEENB(I),
     2NTETME(I),PTETME(I),IMOUNTS(I),PMOUNTS(I),NTNOERR(I),PTNOERR(I),
     3NTRRE(I),PTRRE(I),NTRWE(I),PTRWE(I),NTURE(I),PTURE(I),NTUWE(I), 
     4PTUWE(I),IBLOCKS(I),PBNE(I),PBRR(I),PBRW(I),PBUR(I),PBUW(I),
     5HGRADE(I),SGRADE(I) 
  300 FORMAT (1X,A10,1X,I5,5(1X,I5,1X,F5.1),/,6(1X,I5,1X,F5.1), 
     ,/,1X,I9,1X,F9.5,4(1X,F8.3),2(1X,F5.1))
  305 CONTINUE
*** 
*     STEP 4 - READ UNIT STATISITICS FOR THE PREVIOUS 7 REPORT PERIODS
*              FROM OLDPDT INTO BUFFERS.  GO TO STEP 5 IF END-OF-FILE.
* 
*     ALLOW FOR CONVERTING OLDPDT WITH 2 DIGIT EST ORDINAL
      OLDFLG = 3HOFF
  400 READ (3,405,END=500) NTYPE,K,I,A,B,C
  405 FORMAT (1X,A2,I3,1X,I1,1X,3(F5.1,1X)) 
      IF(I.EQ.0) OLDFLG = 2HON
      IF (OLDFLG.EQ.2HON) THEN
         K = K + 1
         I = I + 1
      ENDIF 
      IF(I.GT.7) GOTO 400 
      IF(NTYPE.EQ.2HXX) GOTO 510
      I = I + 1 
      IUNIT(I,K) = NTYPE
      PMOUNT(I,K) = A 
      PRDWR(I,K) = B
      GRADES(I,K) = C 
      GOTO 400
*** 
*     STEP 5 - OBTAIN THE CURRENT DATE FROM THE SYSTEM AND REWIND 
*              TAPE10 (HPA DETAIL TAPE DATA). 
* 
  500 IEOF3 = 1 
  510 CALL DATE(IDATE)
      REWIND 10 
      IVSNLBT = 6H
      IFLAG = 0 
*** 
*     STEP 6 - READ A LINE FROM TAPE 10.  IF END-OF-FILE, GO TO STEP 14.
*              (READ-AHEAD TO LOOK FOR A COMMON VSN FOR UNRECOVERED 
*              ERRORS MAY ALREADY HAVE DATA IN BUFFER IN.  IF THIS
*              IS THE CASE, THE READ FROM TAPE 10 IS SKIPPED. 
* 
  600 IF(IFLAG.EQ.2) GOTO 1400
      IF(IFLAG.EQ.0) GOTO 605 
      IFLAG = 0 
      GOTO 700
  
  605 READ (10,END=1400) IN 
*** 
*     STEP 7 - EXTRACT REQUIRED DATA FROM THE IN BUFFER AND GO TO 
*              STEP 8.
* 
  700 NAME(1) = IN(2) 
      NAME(2) = SHIFT(IN(3),54) 
      NAME(3) = IN(12)
      JREAD = IN(6) 
      JWROTE = IN(7)
      JRR = IN(8) 
      JUR = IN(9) 
      JRW = IN(10)
      JUW = IN(11)
*     TEST FOR EST (FMT = 4X,R2,1X,O3)   OR   HUID (FMT = 4X,R2,I4) 
*                   55555555DDTT55EESSTT          55555555DDTTHHUUIIDD
*                    (7TH CHAR BLANK)              (7TH CHAR UNBLANK) 
      IF ((SHIFT(IN(13),-18).AND.O"77") .NE. R" ") THEN 
         IHUID = 2HON 
         DECODE (10,705,IN(13)) JTYPE,ICON,I
  705    FORMAT (4X,A2,1X,I1,I2)
      ELSE
         IHUID = 3HOFF
         DECODE (10,710,IN(13)) JTYPE,I 
  710    FORMAT (4X,A2,1X,I3) 
      ENDIF 
*** 
*     STEP 8 - GO TO STEP 6 IF THE EST ORDINAL OF THE TAPE UNIT IS
*              GREATER THAN 512 OR IF GCR SINGLE TRACK ERRORS LINE. 
* 
      I = I + 1 
      ISTAR = 1H
      IF(I.GT.512) GOTO 600 
      JRDWR = JREAD + JWROTE
      IF(JRDWR.NE.0) GOTO 900 
      IF(NAME(3).EQ.R"  MAG X.") GOTO 600 
*** 
*     STEP 9 - BUMP NUMBER OF TOTAL TAPE MOUNTS.  DETERMINE IF THE DATE 
*              OF THE ENTRY IS A MINIMUM OR MAXIMUM PROCESSED THUS FAR
*              AND UPDATE MINIMUM/MAXIMUM DATES AS REQUIRED.
* 
  900 NTAPES(1) = NTAPES(1) + 1 
      N1 = IDATES(1).AND.MASK 
      N2 = NAME(2).AND.MASK 
      IF(N1.LT.N2) IDATES(1) = NAME(2)
      N1 = MDATE.AND.MASK 
      IF(N2.LT.N1) MDATE = NAME(2)
*** 
*     STEP 10- GO TO STEP 11 IF MORE THAN 10 BLOCKS WERE PROCESSED ON 
*              THIS TAPE.  OTHERWISE, BUMP COUNTERS TO INDICATE THE 
*              REASON THIS TAPE IS BEING EXCLUDED.  IF THE TAPE IS
*              EXCLUDED BECAUSE 1 TO 9 BLOCKS WERE PROCESSED AND ERRORS 
*              OCCURRED, GO TO STEP 12.  OTHERWISE, GO TO STEP 6. 
* 
      JRDWR = JREAD + JWROTE
      IERRS = JRR + JUR + JRW + JUW 
      IWE = JRW + JUW 
      IRE = JRR + JUR 
      IF(JRDWR.GE.10) GOTO 1100 
      IF(JRDWR.EQ.0.AND.IERRS.NE.0) NTEENB(1) = NTEENB(1) + 1 
      IF(JRDWR.EQ.0.AND.IERRS.EQ.0) NTENENB(1) = NTENENB(1) + 1 
      IF(JRDWR.NE.0.AND.IERRS.EQ.0) NTENEFB(1) = NTENEFB(1) + 1 
      IF(JRDWR.NE.0.AND.IERRS.NE.0) NTEEFB(1) = NTEEFB(1) + 1 
      IF(JRDWR.NE.0.AND.IERRS.NE.0) NTE(I) = NTE(I) + 1 
      ISTAR = 1H1 
      ICAUSE = 0
      IF(JRDWR.NE.0.AND.IERRS.NE.0) GOTO 1205 
      JUBLK = JUR + JUW 
      ISTAR = 1H5 
      ICAUSE = 1
      IF(JRDWR.EQ.0.AND.JUBLK.NE.0) GOTO 1205 
      GOTO 600
*** 
*     STEP 11- GO TO STEP 13 IF THIS TAPE IS NOT TO BE EXCLUDED DUE 
*              TO MULTIPLE UNRECOVERED READ/WRITE ERRORS OR MORE THAN 
*              1 ERROR PER 50 BLOCKS PROCESSED. 
* 
 1100 KREAD = JREAD/50
      KWROTE = JWROTE/50
      KRDWR = KREAD + KWROTE
      ISTAR = 1H2 
      ICAUSE = 1
      IF(JUR.GT.1) GOTO 1200
      IF(JUW.GT.1) GOTO 1200
      ICAUSE = 0
      IF(IERRS.LE.KRDWR) GOTO 1300
      IF((JUR+JUW).GE.1) GOTO 1110
 1105 NTE(I) = NTE(I) + 1 
      ISTAR = 1H3 
      GOTO 1200 
 1110 ICAUSE = 1
      IF(NAME(1).NE.IVSNLBT) GOTO 1105
      ISTAR = 1H4 
*** 
*     STEP 12- WRITE THE STATISTICS FOR THIS TAPE TO TAPE 5 TO RECORD 
*              TAPES WITH TOO MANY ERRORS AND TAPES WITH UNRECOVERED
*              READ/WRITE ERRORS.  GO TO STEP 6.
* 
 1200 NTETME(1) = NTETME(1) + 1 
 1205 II = I - 1
      IF (IHUID.EQ.2HON) THEN 
         WRITE (5,1210) ISTAR,NAME,JTYPE,ICON,II,JREAD,JWROTE,JRR,JUR,
     .                  JRW,JUW 
      ELSE
         WRITE (5,1211) ISTAR,NAME,JTYPE,II,JREAD,JWROTE,JRR,JUR,JRW,JUW
 1210 FORMAT (1X,A1,1X,R6,A10,R8,2X,A2,I1.1,I2.2,1X,I6,2X,I6,4(1X,I6))
      IF(ICAUSE.EQ.1) IVSNLBT = NAME(1) 
 1211 FORMAT (1X,A1,1X,R6,A10,R8,2X,A2,I3.3,1X,I6,2X,I6,4(1X,I6)) 
      ENDIF 
      GOTO 600
*** 
*     STEP 13- UP TO THIS POINT, THE TAPE IS VALID AND NOT TO BE
*              EXCLUDED.  HOWEVER, IF IT HAS UNRECOVERED ERRORS, LOOK-
*              AHEAD TO THE NEXT VSN ENTRY ON TAPE 10 TO DETERMINE IF 
*              IT IS THE SAME VSN WITH UNRECOVERED ERRORS.  IF SO, THIS 
*              TAPE IS EXCLUDED BY GOING TO STEP 12.  OTHERWISE, BUMP 
*              ALL STATISTICS FOR THE EST THE TAPE WAS MOUNTED ON (RAW
*              AND SMOOTHED) AND GO TO STEP 6 TO PROCESS THE NEXT ENTRY.
* 
 1300 IF(NAME(1).EQ.R"      ") GOTO 1325
      IUE = JUW + JUR 
      IF(IUE.EQ.0) GOTO 1325
      ISTAR = 1H4 
      IF(NAME(1).EQ.IVSNLBT) GOTO 1200
      IVSNLBT = NAME(1) 
 1305 READ (10,END=1320) IN 
      IF((IN(6)+IN(7)).NE.0) GOTO 1310
      IF(IN(2).EQ.R"  MAG X.") GOTO 1305
 1310 IFLAG = 1 
      IF(IN(2).NE.IVSNLBT) GOTO 1325
      IUE = IN(9) + IN(11)
      IF(IUE.NE.0) GOTO 1200
      GOTO 1325 
  
 1320 IFLAG = 2 
 1325 IBLOCKS(1) = IBLOCKS(1) + JRDWR 
      IMOUNTS(1) = IMOUNTS(1) + 1 
      MOUNTS(I) = MOUNTS(I) + 1 
      ITYPE(I) = JTYPE
      IC(I) = ICON
      IUNIT(1,I) = JTYPE
      IRRR(I) = IRRR(I) + JRR 
      IRRW(I) = IRRW(I) + JRW 
      KERRS = JRR + JRW + JUR + JUW 
      IF(KERRS.EQ.0) NOERRS(I) = NOERRS(I) + 1
      IF(JUR.NE.0) NTUR(I) = NTUR(I) + 1
      IF(JUW.NE.0) NTUW(I) = NTUW(I) + 1
      IF(KERRS.EQ.0) NTNOERR(1) = NTNOERR(1) + 1
      IF(JRR.NE.0) NTRRE(1) = NTRRE(1) + 1
      IF(JRW.NE.0) NTRWE(1) = NTRWE(1) + 1
      IF(JUR.NE.0) NTURE(1) = NTURE(1) + 1
      IF(JUW.NE.0) NTUWE(1) = NTUWE(1) + 1
      IWROTE(I) = IWROTE(I)+JWROTE
      IF(IWE.EQ.0) GOTO 1330
      KWROTE = JWROTE 
      IF(JWROTE.EQ.0) KWROTE = JREAD
      LWROTE = (KWROTE+750)/3000
      KWROTE = (KWROTE+125)/500 
      KUW = JUW 
      KRW = JRW - LWROTE
      IF(KRW.LT.0) KRW = 0
      IF(KRW.GT.KWROTE) KRW = KWROTE
      IRW(I) = IRW(I) + KRW 
      IUW(I) = IUW(I) + KUW 
      IBRW = IBRW + JRW 
      IBUW = IBUW + JUW 
      IF(KRW.NE.0) NTRW(I) = NTRW(I) + 1
 1330 IREAD(I) = IREAD(I) + JREAD 
      IF(IRE.EQ.0) GOTO 1335
      KREAD = JREAD 
      IF(JREAD.EQ.0) KREAD = JWROTE 
      LREAD = (KREAD+750)/3000
      KREAD = (KREAD+125)/500 
      KUR = JUR 
      KRR = JRR - LREAD 
      IF(KRR.LT.0) KRR = 0
      IF(KRR.GT.KREAD) KRR = KREAD
      IRR(I) = IRR(I) + KRR 
      IUR(I) = IUR(I) + KUR 
      IBRR = IBRR + JRR 
      IBUR = IBUR + JUR 
      IF(KRR.NE.0) NTRR(I) = NTRR(I) + 1
 1335 ICAUSE = 0
      ISTAR = 1H
      IF(JUR+JUW.NE.0) GOTO 1205
      GOTO 600
*** 
*     STEP 14- ALL DATA FROM TAPE 10 HAS BEEN PROCESSED.  GO TO STEP 15 
*              IF NO TAPE DATA WAS PROCESSED FROM TAPE 10 (NO MOUNTS).
*              OTHERWISE, PRINT DATA COLLECTED FOR THE PERIOD AND GRADE 
*              ALL UNITS BASED ON THE DATA COLLECTED. 
* 
 1400 IF(IMOUNTS(1).EQ.0) GOTO 1500 
      PRINT 1405,ISITE,IDATE,MDATE,IDATES(1)
 1405 FORMAT(1H1,//,14X,'TAPE DATA COLLECTED FROM ',3A10,1X,A10,/,
     120X,'FOR PERIOD ',A10,'THRU',A10, 
     2/,5X,'FROM TAPES NOT EXCLUDED.  BKS=BLOCKS, TPS=TAPES, GR=GRADE', 
     3//56X,'UNRCVD   UNRCVD',
     4/,'       TAPE  BLOCKS BLOCKS   RCVD READS   RCVD WRITES   READS
     5  WRITES EXCLUDED', 
     6/,' UNIT MOUNTS  READ WRITTEN  BKS TPS  GR   BKS TPS  GR  TPS  GR 
     7 TPS  GR  TPS  GR', 
     8/,' ----- --- ------- ------- ------------- ------------- ------- 
     9 -------- -------',/) 
      TGRADE = 0.0
      UNITS = 0.0 
      DO 1425 N=1,10
      J = N-1 
      DO 1420 I=1,512 
      IF(IC(I).NE.J) GOTO 1420
      IF(ITYPE(I).EQ.0) GOTO 1420 
      UNITS = UNITS + 1.0 
      BP = IREAD(I) + IWROTE(I) 
      IF(BP.EQ.0.0) GOTO 1410 
      TAPES = MOUNTS(I) 
      G1A = NTRW(I)/TAPES*200.0 
      G1A = G1A*G1A/25.0
      G1B = IRW(I)/BP*400000.0
      G1B = G1B*G1B/25.0
      G1 = G1A*G1B/64.0 
      G = NTRW(I)*1.5 
      IF(G1.GT.G) G1 = G
      IF(G1.GT.50.0) G1 = 50.0
      G2A = NTRR(I)/TAPES*400.0 
      G2A = G2A*G2A/25.0
      G2B = IRR(I)/BP*400000.0
      G2B = G2B*G2B/25.0
      G2 = G2A*G2B/64.0 
      G = NTRR(I)*1.5 
      IF(G2.GT.G) G2 = G
      IF(G2.GT.50.0) G2 = 50.0
      G3 = NTUW(I)/TAPES*1000 
      G3 = G3*G3/25.0 
      G = NTUW(I)*7.0 
      IF(G3.GT.G) G3 = G
      IF(G3.GT.50.0) G3 = 50.0
      G4 = NTUR(I)/TAPES*1000.0 
      G4 = G4*G4/25.0 
      G = NTUR(I)*5.0 
      IF(G4.GT.G) G4 = G
      IF(G4.GT.50.0) G4 = 50.0
      G5 = NTE(I)/TAPES*1000.0
      G5 = G5*G5/800.0
      G = NTE(I)*5.0
      IF(G5.GT.G) G5 = G
      IF(G5.GT.50.0) G5 = 50.0
      GRADE(I) = G1+G2+G3+G4+G5 
      TGRADE = TGRADE + GRADE(I)
 1410 II = I - 1
      IF (IHUID.EQ.2HON) THEN 
       PRINT 1415,ITYPE(I),IC(I),II,MOUNTS(I),IREAD(I),IWROTE(I),IRR(I),
     .      NTRR(I),G2,IRW(I),NTRW(I),G1,NTUR(I),G4,NTUW(I),G3,NTE(I),G5
      ELSE
       PRINT 1416,ITYPE(I),II,MOUNTS(I),IREAD(I),IWROTE(I),IRR(I),
     .      NTRR(I),G2,IRW(I),NTRW(I),G1,NTUR(I),G4,NTUW(I),G3,NTE(I),G5
 1415 FORMAT(1X,A2,I1.1,I2.2,1X,I3,1X,I7,1X,I7,1X,I4,1X,I3,1X,F4.1, 
     11X,I4,3(1X,I3,1X,F4.1),I3,1X,F4.1)
 1416 FORMAT(1X,A2,I3.3,1X,I3,1X,I7,1X,I7,1X,I4,1X,I3,1X,F4.1,
     11X,I4,3(1X,I3,1X,F4.1),I3,1X,F4.1)
      ENDIF 
 1420 CONTINUE
 1425 CONTINUE
      IF(UNITS.EQ.0.0) GOTO 1500
      HGRADE(1) = TGRADE/UNITS
*** 
*     STEP 15- PRINT THE PERFORMANCE GRADES FOR ALL UNITS FOR THE 
*     CURRENT AND LAST 7 REPORT PERIODS IF AVAILABLE. 
* 
 1500 PRINT 1505,ISITE,IDATE
 1505 FORMAT (1H1,/,/,11X,'UNIT PERFORMANCE DATA FOR ',3A10,1X,A10) 
      PRINT 1510
 1510 FORMAT (/,33X,'(PERFORMANCE GRADE FOR EACH PERIOD)',
     ./,8X,'TAPE  BLOCKS',10X,'0         1         2         3         4
     1',
     ./,' UNIT  MOUNTS RD/WR   DATES   ',4('0123456789'),'0', 
     1/,40X,'.',/,40X,'.')
      DO 1555 N=1,10
      J = N-1 
      DO 1550 I=1,512 
      II = I - 1
      IF(IC(I).NE.J) GOTO 1550
      GRADES(1,I) = GRADE(I) + 1.55 
      IF(IMOUNTS(1).NE.0) PMOUNT(1,I) = MOUNTS(I)*100.0/IMOUNTS(1)
      JJ = IBLOCKS(1) 
      IF(JJ.NE.0)PRDWR(1,I)=(IWROTE(I)+IREAD(I))*100.0/JJ 
      M = 0 
      DO 1540 K=1,8 
      IF(IUNIT(K,I).EQ.0) GOTO 1540 
      M = 1 
      L = GRADES(K,I) 
      IF(L.GE.41) GOTO 1530 
      IF(L.GT.10) GOTO 1520 
  
      IF (IHUID.EQ.2HON) THEN 
      PRINT 1515,IUNIT(K,I),IC(I),II,PMOUNT(K,I),PRDWR(K,I),IDATES(K),
     1IPLOT(L)
      ELSE
      PRINT 1516,IUNIT(K,I),II,PMOUNT(K,I),PRDWR(K,I),IDATES(K),IPLOT(L)
 1515 FORMAT (1X,A2,I1.1,I2.2,2(1X,F5.1,'%'),2A10,'.')
 1516 FORMAT (1X,A2,I3.3,2(1X,F5.1,'%'),2A10,'.') 
      ENDIF 
      GOTO 1540 
  
 1520 IF (IHUID.EQ.2HON) THEN 
      PRINT 1525,IUNIT(K,I),IC(I),II,PMOUNT(K,I),PRDWR(K,I),IDATES(K),
     1AST(1:L)
      ELSE
      PRINT 1526,IUNIT(K,I),II,PMOUNT(K,I),PRDWR(K,I),IDATES(K),AST(1:L)
 1525 FORMAT(1X,A2,I1.1,I2.2,2(1X,F5.1,'%'),A10,A)
 1526 FORMAT(1X,A2,I3.3,2(1X,F5.1,'%'),A10,A) 
      ENDIF 
      GOTO 1540 
  
 1530 LL = 41 
      IF (IHUID.EQ.2HON) THEN 
      PRINT 1535,IUNIT(K,I),IC(I),II,PMOUNT(K,I),PRDWR(K,I),IDATES(K),
     1AST(1:LL),L 
      ELSE
      PRINT 1536,IUNIT(K,I),II,PMOUNT(K,I),PRDWR(K,I),IDATES(K),
     1AST(1:LL),L 
 1535 FORMAT(1X,A2,I1.1,I2.2,2(1X,F5.1,'%'),A10,A,' (',I5,')')
 1536 FORMAT(1X,A2,I3.3,2(1X,F5.1,'%'),A10,A,' (',I5,')') 
      ENDIF 
  
 1540 CONTINUE
      IF(M.EQ.0) GOTO 1550
      PRINT 1545
 1545 FORMAT (40X,'.')
 1550 CONTINUE
 1555 CONTINUE
      PRINT 1545
      PRINT 1560
 1560 FORMAT (31X,'PERFORMANCE GOAL') 
*** 
*     STEP 16- PRINT THE SUBSYSTEM STATISTICS FOR THE CURRENT AND PAST
*              SEVEN REPORT PERIODS IF AVAILABLE. 
* 
      PRINT 1600,ISITE,IDATE
 1600 FORMAT(1H1,//,8X,'TAPE SUBSYSTEM STATISTICS FOR ',3A10,1X,A10,///,
     113X,'TOTAL',5('   EXCLUDED-'),
     2/,2X,'MONITOR    TAPE    NO BLOCKS   FEW BLOCKS  FEW BLOCKS  NO BL
     3OCKS   TOO MANY', 
     4/,3X,'DATES     MOUNTS  NO ERRORS   NO ERRORS  RDWR ERRORS RDWR ER
     5RORS   ERRORS', 
     6/,' ----------  -----',5('   ---------'),/) 
      IF(NTAPES(1).EQ.0) GOTO 1605
      PTEENB(1) = NTEENB(1)*100.0/NTAPES(1) 
      PTENENB(1) = NTENENB(1)*100.0/NTAPES(1) 
      PTENEFB(1) = NTENEFB(1)*100.0/NTAPES(1) 
      PTEEFB(1) = NTEEFB(1)*100.0/NTAPES(1) 
      PTETME(1) = NTETME(1)*100.0/NTAPES(1) 
      PMOUNTS(1) = IMOUNTS(1)*100.0/NTAPES(1) 
      IF(IMOUNTS(1).EQ.0) GOTO 1605 
      PTNOERR(1) = NTNOERR(1)*100.0/IMOUNTS(1)
      PTRRE(1) = NTRRE(1)*100.0/IMOUNTS(1)
      PTRWE(1) = NTRWE(1)*100.0/IMOUNTS(1)
      PTURE(1) = NTURE(1)*100.0/IMOUNTS(1)
      PTUWE(1) = NTUWE(1)*100.0/IMOUNTS(1)
      IF(IBLOCKS(1).EQ.0) GOTO 1605 
      IBNE = IBLOCKS(1) - IBRR - IBRW - IBUR - IBUW 
      IF(IBNE.GT.IBLOCKS(1)) IBNE = IBLOCKS(1)
      PBNE(1) = IBNE * 100.0/IBLOCKS(1) 
      PBRR(1) = IBRR * 100.0/IBLOCKS(1)*1000.0
      PBRW(1) = IBRW * 100.0/IBLOCKS(1)*100.0 
      PBUR(1) = IBUR * 100.0/IBLOCKS(1)*10000.0 
      PBUW(1) = IBUW * 100.0/IBLOCKS(1)*10000.0 
      IF(PBRR(1).GE.10000.0) PBRR(1) = 9999.99
      IF(PBRW(1).GE.10000.0) PBRW(1) = 9999.99
      IF(PBUR(1).GE.10000.0) PBUR(1) = 9999.99
      IF(PBUW(1).GE.10000.0) PBUW(1) = 9999.99
      SGRADE(1) = (PTRRE(1)*10.0) + (PTRWE(1)*10.0) + (PTURE(1)*20.0) + 
     1(PTUWE(1)*20.0) + (PBRR(1)*5.0) + (PBRW(1)*5.0) + (PBUR(1)*20.0) +
     2(PBUW(1)*20.0)
 1605 DO 1615 I=1,8 
      MAX5 = 99999
      MAX9 = 999999999
      FMAX5 = 999.9 
      FMAX8 = 9999.999
      FMAX9 = 999.99999 
      IF(NTAPES(I).EQ.0) GOTO 1615
      IF(NTAPES(I).GT.MAX5) NTAPES(I) = MAX5
      IF(NTENENB(I).GT.MAX5) NTENENB(I) = MAX5
      IF(PTENENB(I).GT.FMAX5) PTENENB(I) = FMAX5
      IF(NTENEFB(I).GT.MAX5) NTENEFB(I) = MAX5
      IF(PTENEFB(I).GT.FMAX5) PTENEFB(I) = FMAX5
      IF(NTEEFB(I).GT.MAX5) NTEEFB(I) = MAX5
      IF(PTEEFB(I).GT.FMAX5) PTEEFB(I) = FMAX5
      IF(NTEENB(I).GT.MAX5) NTEENB(I) = MAX5
      IF(PTEENB(I).GT.FMAX5) PTEENB(I) = FMAX5
      IF(NTETME(I).GT.MAX5) NTETME(I) = MAX5
      IF(PTETME(I).GT.FMAX5) PTETME(I) = FMAX5
      IF(IMOUNTS(I).GT.MAX5) IMOUNTS(I) = MAX5
      IF(PMOUNTS(I).GT.FMAX5) PMOUNTS(I) = FMAX5
      IF(NTNOERR(I).GT.MAX5) NTNOERR(I) = MAX5
      IF(PTNOERR(I).GT.FMAX5) PTNOERR(I) = FMAX5
      IF(NTRRE(I).GT.MAX5) NTRRE(I) = MAX5
      IF(PTRRE(I).GT.FMAX5) PTRRE(I) = FMAX5
      IF(NTRWE(I).GT.MAX5) NTRWE(I) = MAX5
      IF(PTRWE(I).GT.FMAX5) PTRWE(I) = FMAX5
      IF(NTURE(I).GT.MAX5) NTURE(I) = MAX5
      IF(PTURE(I).GT.FMAX5) PTURE(I) = FMAX5
      IF(NTUWE(I).GT.MAX5) NTUWE(I) = MAX5
      IF(PTUWE(I).GT.FMAX5) PTUWE(I) = FMAX5
      IF(IBLOCKS(I).GT.MAX9) IBLOCKS(I) = MAX9
      IF(PBNE(I).GT.FMAX9) PBNE(I) = FMAX9
      IF(PBRR(I).GT.FMAX8) PBRR(I) = FMAX8
      IF(PBRW(I).GT.FMAX8) PBRW(I) = FMAX8
      IF(PBUR(I).GT.FMAX8) PBUR(I) = FMAX8
      IF(PBUW(I).GT.FMAX8) PBUW(I) = FMAX8
      IF(HGRADE(I).GT.FMAX5) HGRADE(I) = FMAX5
      IF(SGRADE(I).GT.FMAX5) SGRADE(I) = FMAX5
      PRINT 1610,IDATES(I),NTAPES(I),NTENENB(I),PTENENB(I),NTENEFB(I),
     1PTENEFB(I),NTEEFB(I),PTEEFB(I),NTEENB(I),PTEENB(I),NTETME(I), 
     2PTETME(I) 
 1610 FORMAT(1X,A10,2X,I5,5(1X,I4,'=',F5.1,'%'))
 1615 CONTINUE
      PRINT 1620
 1620 FORMAT(///,12X,'    TAPE         TAPES    ',3('  TAPES   '),
     1'   TAPES', 
     1/,'   MONITOR     MOUNTS        WITH     RECOVERED RECOVERED   UNR
     2CVD    UNRCVD', 
     3/,'    DATES   NOT EXCLUDED   NO ERRORS    READS    WRITES     REA
     4DS     WRITES', 
     5/,' ----------',2(' ------------'),4(' ---------'),/) 
      DO 1630 I = 1,8 
      IF(NTAPES(I).EQ.0) GOTO 1630
      PRINT 1625,IDATES(I),IMOUNTS(I),PMOUNTS(I),NTNOERR(I),PTNOERR(I), 
     1NTRRE(I),PTRRE(I),NTRWE(I),PTRWE(I),NTURE(I),PTURE(I),NTUWE(I), 
     2PTUWE(I)
 1625 FORMAT(1X,A10,2(1X,I5,'=',F5.1,'%'),4(1X,I3,'=',F4.1,'%'))
 1630 CONTINUE
      PRINT 1635
 1635 FORMAT (///,12X,'TOTAL    BLOCKS   RECOVERED  RECOVERED  UNRCVD 
     1UNRCVD  HARD-', 
     2/,' MONITOR   BLOCKS     WITH    READS PER  WRITES PER RD PER   WR
     3 PER  WARE  SITE',
     4/,'  DATES   PROCESSED NO ERRORS  100,000    10,000   MILLION  MIL
     5LION GRADE GRADE',
     6/,' -------  --------- --------- ---------  --------  -------  ---
     7---- ----- -----',/)
      DO 1645 I=1,8 
      IF(NTAPES(I).EQ.0) GOTO 1645
      PRINT 1640,IDATES(I),IBLOCKS(I),PBNE(I),PBRR(I),PBRW(I),PBUR(I),
     1PBUW(I),HGRADE(I),SGRADE(I) 
 1640 FORMAT(1X,A10,I9,2X,F7.3,'%',1X,F8.3,2X,3(F8.3,1X),F5.1,1X,F5.1)
 1645 CONTINUE
      PRINT 1650
 1650 FORMAT (//) 
*** 
*     STEP 17- WRITE SUBSYSTEM STATISTICS AND UNIT STATISTICS TO NEWPDT 
*              FOR FUTURE USE AS HISTORY INPUT FOR THE NEXT RUN OF
*              MTPLOT.
* 
      IF (IDATES(1) .EQ. 0) CALL DATE (IDATES(1)) 
      DO 1700 I=1,7 
      WRITE (4,300) IDATES(I),NTAPES(I),NTENENB(I),PTENENB(I),
     1NTENEFB(I),PTENEFB(I),NTEEFB(I),PTEEFB(I),NTEENB(I),PTEENB(I),
     2NTETME(I),PTETME(I),IMOUNTS(I),PMOUNTS(I),NTNOERR(I),PTNOERR(I),
     3NTRRE(I),PTRRE(I),NTRWE(I),PTRWE(I),NTURE(I),PTURE(I),NTUWE(I), 
     4PTUWE(I),IBLOCKS(I),PBNE(I),PBRR(I),PBRW(I),PBUR(I),PBUW(I),
     5HGRADE(I),SGRADE(I) 
 1700 CONTINUE
      DO 1705 J=1,512 
      DO 1705 I=1,7 
      IF(IUNIT(I,J).EQ.0) GOTO 1705 
      WRITE (4,405) IUNIT(I,J),J,I,PMOUNT(I,J),PRDWR(I,J),GRADES(I,J) 
 1705 CONTINUE
      J = 512 
      I = 4 
      IUNIT(I,J) = 2HXX 
      WRITE (4,405) IUNIT(I,J),J,I,PMOUNT(I,J),PRDWR(I,J),GRADES(I,J) 
*** 
*     STEP 18- IF SENSE SWITCH 1 IS OFF, GO TO STEP 19.  OTHERWISE, 
*              REWIND, READ AND PRINT TAPE 5 (TAPES EXCLUDED DUE TO 
*              EXCESSIVE ERRORS AND TAPES WITH UNRECOVERED READ/WRITE 
*              ERRORS.
* 
      CALL SSWTCH(1,J)
      IF(J.NE.1) GOTO 1900
      REWIND 5
      IHDR = 0
 1800 READ (5,1805,END=1825) INA
 1805 FORMAT (8A10) 
 1810 IF(IHDR.NE.0) GOTO 1820 
      PRINT 1815,ISITE,IDATE,MDATE,IDATES(1)
 1815 FORMAT (1H1,/,10X,'DETAIL MEDIA REPORT FOR ',3A10,1X,A10,/, 
     120X,'FOR PERIOD ',A10,'THRU',A10,/, 
     210X,'C = BLANK - UNRECOVERED ERROR ON TAPE NOT EXCLUDED',/, 
     310X,'C = 1     - TAPE EXCLUDED, RD/WR ERRORS, FEW BLOCKS',/,
     410X,'C = 2     - TAPE EXCLUDED, MULTIPLE UNRECOVERED ERRORS',/, 
     510X,'C = 3     - TAPE EXCLUDED, GREATER THAN 2% FAILURE RATE',/,
     610X,'C = 4     - TAPE EXCLUDED, UNRCVD ON MULTIPLE MOUNTS',/, 
     610X,'C = 5     - TAPE EXCLUDED, UNRCVD WITH NO USAGE DATA',/,/, 
     721X,'JOB           BLOCKS  BLOCKS   RCVD  UNRCVD  RCVD  UNRCVD',/,
     8' C  VSN     DATE     NAME    UNIT   READ  WRITTEN   READS READS
     9WRITES WRITES',/, 
     9' - ------ -------- --------  ----  ------  ------   ----   ----
     9 ----   ----',/)
      IHDR = 1
 1820 PRINT 1805,INA
      GOTO 1800 
 1825 PRINT 1650
*** 
*     STEP 19 - USE DATA FROM TAPE5 (DETAIL MEDIA REPORT FOR THIS 
*               REPORT PERIOD) AND VSN DATA FROM OLDPDT TO PRODUCE THE
*               MEDIA REPORT OF VSN-S THAT SHOULD BE INSPECTED DUE TO 
*               HIGH UNRECOVERED READ/WRITE ERRORS OR EXCESSIVE ERRORS. 
* 
  
*     19A. REWIND THE DETAIL MEDIA REPORT, CLEAR FLAGS AND INEW BUFFER. 
* 
 1900 REWIND 5
      IEOF5 = IFULL3 = IFULL5 = IHDR = 0
      DO 1902 I=1,22
      IN3(I) = INEW(I) = 0
 1902 CONTINUE
* 
*     19B. IF ALL DATA HAS BEEN PROCESSED FROM THE DETAIL MEDIA REPORT
*          (IEOF5 NONZERO), GOT0 19J. 
* 
 1904 IF(IEOF5.NE.0) GOTO 1922
* 
*     19C. IF THE DETAIL MEDIA BUFFER IS ALREADY FULL, GOTO 19D.
*          OTHERWISE, FILL THE BUFFER FROM TAPE5.  IF ALL DATA HAS BEEN 
*          PROCESSED FROM TAPE5, SET IEOF5 FLAG NONZERO TO PREVENT ANY
*          MORE PROCESSING FOR THIS FILE, CLEAR IFULL5 FLAG TO INDICATE 
*          THE BUFFER IS EMPTY AND GO TO 19J. 
* 
      IF(IFULL5.NE.0) GOTO 1910 
      READ (5,1906,END=1908) IN5
 1906 FORMAT (3X,A6,40X,4(1X,I6)) 
      GOTO 1910 
  
 1908 IEOF5 = 1 
      IFULL5 = 0
      GOTO 1922 
* 
*     19D. SET IFULL5 FLAG NONZERO TO INDICATE THE DETAIL MEDIA BUFFER
*          IS FULL.  IF THE INEW BUFFER IS EMPTY (NO VSN IN CURRENT 
*          PROCESS FROM THE DETAIL MEDIA REPORT), GOTO 19I. 
* 
 1910 IFULL5 = 1
      IF(INEW(1).EQ.0) GOTO 1920
* 
*     19E. IF THE VSN CURRENTLY BEING PROCESSED IN THE INEW BUFFER IS 
*          NOT THE SAME VSN IN THE DETAIL MEDIA BUFFER, GOTO 19J (INEW
*          BUFFER NOW CONTAINS THE ACCUMULATED ERRORS FOR THE VSN BEING 
*          PROCESSED FROM THE DETAIL MEDIA REPORT). 
* 
      IF(INEW(1).NE.IN5(1)) GOTO 1922 
* 
*     19F. IF THE VSN IN THE DETAIL MEDIA BUFFER HAD UNRECOVERED WRITE
*          OR READ ERRORS, GOTO 19G.  OTHERWISE, BUMP THE HIGH ERRORS 
*          COUNTER IN THE INEW BUFFER FOR THIS VSN AND GOTO 19H.
* 
 1912 IF(IN5(3)+IN5(5).NE.0) GOTO 1914
      INEW(4) = INEW(4) + 1 
      GOTO 1918 
* 
*     19G. IF THE VSN IN THE DETAIL MEDIA BUFFER HAD UNRECOVERED WRITE
*          ERRORS, BUMP THE WRITE ERROR COUNTER IN THE INEW BUFFER FOR
*          THIS VSN AND GOTO 19H.  OTHERWISE, BUMP THE READ ERROR 
*          COUNTER IN THE INEW BUFFER AND GOTO 19H. 
* 
 1914 IF(IN5(5).EQ.0) GOTO 1916 
      INEW(3) = INEW(3) + 1 
      GOTO 1918 
 1916 INEW(2) = INEW(2) + 1 
* 
*     19H. ZERO THE IFULL5 FLAG TO INDICATE THE VSN ENTRY IN THE DETAIL 
*          MEDIA BUFFER HAS BEEN PROCESSED (ERRORS ACCUMULATED IN THE 
*          INEW BUFFER) AND GOTO 19B. 
* 
 1918 IFULL5 = 0
      GOTO 1904 
* 
*     19I. MOVE THE VSN IN THE DETAIL MEDIA BUFFER TO THE INEW BUFFER 
*          AND GOTO 19F TO BUMP PROPER COUNTERS.
* 
 1920 INEW(1) = IN5(1)
      GOTO 1912 
* 
*     19J. WE GET TO THIS STEP IF THERE IS NO MORE DATA TO PROCESS FROM 
*          THE DETAIL MEDIA REPORT OR IF THE INEW BUFFER CONTAINS ALL 
*          THE CONSOLIDATED DATA FOR THE NEXT LOWEST VSN FROM THE 
*          DETAIL MEDIA REPORT.  THE REMAINING STEPS MUST ENSURE THAT 
*          VSN-S WRITTEN TO THE NEW HISTORY FILE REMAIN IN ORDER AND
*          DETERMINE IF A VSN SHOULD BE PRINTED AS NEEDING ATTENTION. 
*          IF ALL DATA HAS NOT BEEN PROCESSED FROM THE OLD HISTORY FILE 
*          (IEOF3 ZERO) GOTO 19L. 
* 
 1922 IF(IEOF3.EQ.0) GOTO 1924
* 
*     19K. IF THE INEW BUFFER IS EMPTY, GOTO 19V TO TERMINATE STEP 19 
*          (EOF ON OLD HISTORY FILE AND NO MORE DATA FROM THE DETAIL
*          MEDIA REPORT).  OTHERWISE, GOTO 19O. 
* 
      IF(INEW(1).NE.0) GOTO 1936
      GOTO 1960 
* 
*     19L. IF THE HISTORY FILE BUFFER IS FULL, GOTO 19M.  OTHERWISE,
*          FILL THE BUFFER FROM OLDPDT.  IF ALL DATA HAS BEEN PROCESSED 
*          FROM OLDPDT, SET THE IEOF3 FLAG NONZERO TO PREVENT ANY MORE
*          PROCESSING FROM THE FILE, CLEAR IFULL3 FLAG TO INDICATE THE
*          BUFFER IS EMPTY AND GOTO 19B TO CONTINUE PROCESSING DATA 
*          FROM THE DETAIL MEDIA REPORT.  IF NOT EOF, SHIFT VALUES FOR
*          THIS VSN IN THE HISTORY FILE BUFFER END-OFF ONE PERIOD TO
*          MAKE ROOM FOR THIS PERIOD-S DATA AND SET IFULL3 FLAG NONZERO 
*          TO INDICATE THE HISTORY FILE BUFFER IS FULL. 
* 
 1924 IF(IFULL3.NE.0) GOTO 1934 
      READ (3,1926,END=1928) IN3
 1926 FORMAT (1X,A6,1X,7(1X,3(I2,1X)))
      GOTO 1930 
  
 1928 IEOF3 = 1 
      IFULL3 = 0
      GOTO 1904 
  
 1930 I = 17
 1932 IN3(I+3) = IN3(I) 
      IN3(I+4) = IN3(I+1) 
      IN3(I+5) = IN3(I+2) 
      I = I - 3 
      IF(I.GT.0) GOTO 1932
      IN3(2) = IN3(3) = IN3(4) = 0
      IFULL3 = 1
* 
*     19M. IF THE INEW BUFFER IS EMPTY, GOTO 19S TO PROCESS THE VSN IN
*          THE HISTORY FILE BUFFER. 
* 
 1934 IF(INEW(1).EQ.0) GOTO 1946
* 
*     19N. IF THE HISTORY FILE BUFFER IS EMPTY, GOTO 19O TO PROCESS THE 
*          VSN IN THE INEW BUFFER.  OTHERWISE, DETERMINE WHICH VSN IS 
*          TO BE PROCESSED NEXT (BOTH INEW AND HISTORY FILE BUFFERS ARE 
*          FULL).  GOTO 19O TO PROCESS THE INEW BUFFER IF ITS VSN IS
*          THE SMALLEST.  GOTO 19R TO CONSOLIDATE THE TWO BUFFERS IF
*          THE VSN-S ARE THE SAME IN BOTH BUFFERS.  OTHERWISE, GOTO 19S 
*          TO PROCESS THE HISTORY FILE BUFFER.
* 
      IF(IFULL3.EQ.0) GOTO 1936 
      IF(INEW(1)-IN3(1)) 1936,1944,1946 
* 
*     19O. WRITE THE DATA IN THE INEW BUFFER TO THE NEW HISTORY FILE. 
*          IF THIS VSN HAD MORE THAN 1 MOUNT WITH UNRECOVERED WRITE 
*          ERRORS OR IF IT HAD THREE OR MORE MOUNTS WITH ANY COMBINAT-
*          ION OF ERRORS, GOTO 19P.  OTHERWISE, GOTO 19Q. 
* 
 1936 WRITE (4,1926) INEW 
      IF(INEW(3).GT.1) GOTO 1938
      I = INEW(2) + INEW(3) + INEW(4) 
      IF(I.LT.3) GOTO 1942
* 
*     19P. IF THE MEDIA REPORT HEADER HAS NOT BEEN PRINTED YET, DO SO 
*          AND SET THE IHDR FLAG NONZERO TO INDICATE IT HAS BEEN DONE.
*          THEN PRINT THE DATA IN THE INEW BUFFER TO INDICATE THIS VSN
*          NEEDS TO BE INSPECTED. 
* 
 1938 IF(IHDR.NE.0) GOTO 1940 
      PRINT 1954,ISITE,IDATE,(IDATES(I),I=1,7)
      IHDR = 1
 1940 PRINT 1958,INEW 
* 
*     19Q. CLEAR THE INEW BUFFER TO INDICATE IT HAS BEEN PROCESSED AND
*          GOTO 19B.
* 
 1942 INEW(1) = INEW(2) = INEW(3) = INEW(4) = 0 
      GOTO 1904 
* 
*     19R. CONSOLIDATE THE INEW BUFFER DATA INTO THE HISTORY FILE BUFFER
*          AND CLEAR THE INEW BUFFER TO INDICATE IT HAS BEEN PROCESSED. 
* 
 1944 IN3(2) = INEW(2)
      IN3(3) = INEW(3)
      IN3(4) = INEW(4)
      INEW(1) = INEW(2) = INEW(3) = INEW(4) = 0 
* 
*     19S. GOTO 19T IF THE VSN CONTAINED IN THE HISTORY FILE BUFFER HAS 
*          NOT HAD ANY ERRORS IN THE PAST SEVEN REPORT PERIODS (THIS
*          DROPS IT FROM THE NEW HISTORY FILE).  OTHERWISE, WRITE THE 
*          DATA FOR THIS VSN TO THE NEW HISTORY FILE. 
* 
 1946 J = 0 
      DO 1948 I=2,22
      J = J + IN3(I)
 1948 CONTINUE
      IF(J.EQ.0) GOTO 1950
      WRITE (4,1926) IN3
* 
*     19T. CLEAR IFULL3 FLAG TO INDICATE THE HISTORY FILE BUFFER HAS
*          BEEN PROCESSED.  IF THE VSN HAD MORE THAN ONE MOUNT WITH 
*          UNRECOVERED WRITE ERRORS, OR THREE OR MORE MOUNTS WITH ANY 
*          COMBINATIONS OF ERRORS OR ANY NUMBER OF ERRORS THIS REPORT 
*          PERIOD AS WELL AS LAST, GOTO 19U.  OTHERWISE, GOTO 19B TO
*          PROCESS THE NEXT VSN.
* 
 1950 IFULL3 = 0
      IF(IN3(3).GT.1) GOTO 1952 
      I = IN3(2) + IN3(3) + IN3(4)
      IF(I.GT.2) GOTO 1952
      IF(I.EQ.0) GOTO 1904
      I = IN3(5) + IN3(6) + IN3(7)
      IF(I.EQ.0) GOTO 1904
* 
*     19U. IF THE MEDIA REPORT HEADER HAS NOT BEEN PRINTED YET, DO SO 
*          AND SET THE IHDR FLAG NONZERO TO INDICATE IT HAS BEEN DONE.
*          THEN PRINT THE DATA IN THE HISTORY FILE BUFFER TO INDICATE 
*          THE VSN NEEDS TO BE INSPECTED.  THEN GOTO 19B TO PROCESS 
*          THE NEXT VSN.
* 
 1952 IF(IHDR.NE.0) GOTO 1956 
      PRINT 1954,ISITE,IDATE,(IDATES(I),I=1,7)
 1954 FORMAT (1H1,/,20X,'MEDIA REPORT FOR ',3A10,1X,A10,/,
     110X,'THE FOLLOWING TAPES SHOULD BE INSPECTED DUE TO EXCESSIVE',/, 
     210X,'MOUNTS WITH UNRECOVERED RD/WR ERRORS OR HIGH ERROR RATES',/, 
     313X,'(UP TO 7 REPORT PERIODS PROVIDED, MOST RECENT FIRST)',/, 
     4/,9X,7A10,/,
     5'   VSN  ',7('  RD WR HI'),/, 
     6'   ---  ',7('  --------'),/) 
      IHDR = 1
 1956 PRINT 1958,IN3
 1958 FORMAT (2X,A6,1X,7(1X,3(I2.0,1X)))
      GOTO 1904 
* 
*     19V. IF THE IHDR FLAG IS ZERO, INDICATING THAT NO MEDIA REPORT
*          WAS PRINTED, PRINT A MESSAGE INDICATING NO BAD TAPES WERE
*          DISCOVERED.  THEN TERMINATE THIS STEP. 
* 
 1960 IF(IHDR.EQ.0) PRINT 1962
 1962 FORMAT (///,' NO BAD TAPES EXIST FOR A MEDIA REPORT') 
      PRINT 1964
 1964 FORMAT (///)
*** 
*     STEP 20 - TERMINATE.
* 
 2000 CONTINUE
      END 
