*DECK,HPA3
      OVCAP.
      SUBROUTINE HPA3 
* 
**          DEFINITION
*           ------------
*            HPA3 - CONTROL PROGRAM TO CALL OVERLAYS FOR
*                    UNIT ANALYSIS ROUTINES.
* 
*           CALLED BY 
*           ------------
*            CONTROL  , IN MAIN ( 0,0 ) 
* 
*          *****************************************************
  
  
* 
**        DESCRIPTION 
*         ----------- 
*         BY RECORD TYPE OF ERROR INPUT RECORD IN SEF FILE. 
*         ROUTINE TO GENERATE DETAIL LIST REPORT, IF ANY, IS CALLED.
* 
* 
* 
*         CALLS 
*         ----- 
*          SECONDARY OVERLAYS AS REQUIRED TO PROCESS RECORD TYPE. 
* 
*CALL,HPACOM1 
*CALL HPACOM2 
  
      DIMENSION RGROUP (20,14)
* 
*         -- RGROUP -- DEFINE RECORD TYPES IN GROUPS TO BE
*                      PROCESSED BY ANALYZER ROUTINE. 
* 
*         SYSTEM  MESSAGES
  
      DATA (RGROUP(1,K),K=1,4) / O"1",O"4",O"5",0 / 
  
*         STATUS CONTROL REG. MESSAGES
  
      DATA(RGROUP(2,K),K=1,12)/2,3,6,7,O"12",O"14",O"15",O"16",O"17",O"2
     +5",O"26",0/ 
  
*         DIAGNOSTIC  MESSAGES
  
      DATA (RGROUP(3,K),K=1,2) / O"10", 0 / 
  
*         UNIT  RECORD
  
      DATA (RGROUP(4,K),K=1,5) / O"20", O"21", O"23", O"24", 0 /
  
*         MAGNETIC TAPE - FSC, 66X, AND ISMT
  
      DATA (RGROUP(5,K),K=1,5) / O"30", O"33", O"34", O"35", 0 /
  
*         DISK
  
      DATA (RGROUP(6,K),K=1,14,1) /O"40", O"41", O"42", O"43", O"44", 
     .                             O"45", O"46", O"50", O"51", O"52", 
     .                             O"53", O"54", O"64", 0/
  
*         TERMINAL
  
      DATA (RGROUP(7,K),K=1,4) / O"56", O"57", O"60", 0 / 
  
*         MULTIPLEXOR 
  
      DATA (RGROUP(8,K),K=1,3) / O"61", O"62", 0 /
  
*     ECS/ESM 
  
      DATA (RGROUP(9,K),K=1,5) / O"70", O"71", O"72", O"73", 0 /
  
*         MAGNETIC/CARTRIDGE TAPE  - 67X, CMTS, ACS, AND CTS
      DATA (RGROUP(10,K),K=1,5) / O"36", O"37", O"47", O"55", 0 / 
  
*      MSFS AND MASSTOR CCC/7990
  
      DATA (RGROUP(11,K),K=1,4) /O"65",O"66",O"67",0/ 
  
*         PROCESSORS - 810/815/825/830/835 (P1/P1CR/P2) 
  
      DATA (RGROUP(12,K),K=1,2) / O"22", 0 /
  
*        LCN
  
      DATA (RGROUP(13,K),K=1,4)/ O"74", O"75", O"76", 0 / 
  
*         THETA (990) PROCESSOR 
  
      DATA (RGROUP(14,K),K=1,2) / O"103", 0 / 
  
*         THETA (990) MEMORY AND MISC. MAINFRAME ERRORS/MESSAGES
*         DFT/SCI, NEGATIVE SIT CONDITION AND EPM 
  
      DATA (RGROUP(15,K),K=1,4) / O"11", O"104", O"105", 0 /
  
*         PROCESSORS - 840/845/850/855/860 (P3/P3CR)
  
      DATA (RGROUP(16,K),K=1,2) / O"102", 0 / 
  
*         MEMORY - 810/815/825/830/835/840/845/850/855/860
  
      DATA (RGROUP(17,K),K=1,2) / O"13", 0 /
  
*         IOU - I1, I2 AND I4 
  
      DATA (RGROUP(18,K),K=1,3) / O"27", O"107", 0 /
  
*         CYBERPLUS 
  
      DATA (RGROUP(19,K),K=1,2) / O"63", 0 /
  
      DATA (RGROUP(20,K),K=1,2) / 0, 0 /
  
      DATA RGMAX / 20 / 
*            ***********************************************************
  
*        TIME PRINTOUT CONTROLLED BY (X=T) PARAMETER                    000980
      IF (FROG(6) .NE. L"T") GO TO 3
      CP = SECOND ()
      PRINT 2,CP                                                        001010
    2 FORMAT (' ENTER HPA3 , SECOND = ',F10.3)
    3 CONTINUE                                                          001030
*             INITIALIZE DATA AREAS FOR THIS OVERLAY MODULE.
      SEBUF(1) = 10HFIRSTENTRY
  
      CALL LOVCAP ('GNR3')
      CALL LOVCAP ('SETEM3')
      CALL LOVCAP ('SETFLDS') 
      CALL LOVCAP ('INISET3') 
      CALL LOVCAP ('STOJN3')
      CALL LOVCAP ('DREPT3')
      CALL LOVCAP ('FLIP3') 
  
      CALL RMREWND (SEF)
      CALL RMREWND (NEW)
  
      CALL GNR3 
  
      IEXIT3F = 0 
*         CHECK FOR ERROR CODE REPORT 
* 
      IF (FROG(4) .EQ. 2HON) THEN 
         CALL XOVCAP ('HPA31',0,0)
         CALL UOVCAP ('HPA31')
      ENDIF 
  
*           BYPASS ANALYSIS ROUTINES IN NO REPORTS REQUESTED. 
      IF (FROP(1,1,1) .NE. 3HOFF) GO TO 10
      IF (FROP(1,1,2) .NE. 3HOFF) GO TO 10
*          STATISTICS DETAIL REPORT FLAG
      IF (FROP(1,1,5) .NE. 3HOFF) GO TO 10
  
      IEXIT3F = 1 
  
*         SKIP CALLING SUB-OVERLAYS IF NO D,A,ST OR SUMMARY REPORTS 
      IF (FROG(1) .EQ. 3HOFF) GO TO 2200
* 
   10 CONTINUE
* 
*         FIND THE APPROPRIATE OVERLAY BY RECORD TYPE.
      DO 40 PR = 1,RGMAX
         DO 20 I = 1,RGMAX
         IF(IFLD(FRTY).EQ.RGROUP(PR,I)) GO TO 50
         IF(RGROUP(PR,I).EQ.0) GO TO 40 
  20     CONTINUE 
  40  CONTINUE
  
*         RECORD TYPE NOT FOUND 
  
   41 PRINT 42,RTY
   42 FORMAT (' UNRECOGNIZED RECORD TYPE .. ',O3,' .. FOUND IN HPA3') 
  
*         GET  NEXT RECORD
      CALL GNR3 
      GO TO 2010
  
   50 GO TO (100, 200, 100, 400, 500, 600, 700, 100, 200, 500,
     .      800, 900,1000,1100, 300, 920, 910, 930,1200,  41) PR
  
*         SYSTEM  MESSAGES
  
  100 OVCALL = PR 
      CALL XOVCAP ('INTEM32',0,0) 
      CALL SETEM3 (0) 
      IF (IEXIT3F .EQ. 0) THEN
         CALL XOVCAP ('HPA32',0,0)
         CALL UOVCAP ('HPA32')
      ENDIF 
      CALL UOVCAP ('INTEM32') 
       GO TO 2000 
  
*         SCR  MESSAGES 
  
 200  OVCALL = PR 
      CALL XOVCAP ('INTEM36',0,0) 
      CALL SETEM3 (0) 
      IF (IEXIT3F .EQ. 0) THEN
         CALL XOVCAP ('HPA36',0,0)
         CALL UOVCAP ('HPA36')
      ENDIF 
      CALL UOVCAP ('INTEM36') 
      GO TO 2000
* 
*         THETA (990) MEMORY
* 
  300 CALL XOVCAP ('INTEM14',0,0) 
      CALL SETEM3 (0) 
      IF (IEXIT3F .EQ. 0) THEN
         CALL XOVCAP ('HPA314',0,0) 
         CALL UOVCAP ('HPA314') 
      ENDIF 
      CALL UOVCAP ('INTEM14') 
      GO TO 2000
  
  400 OVCALL = PR 
      CALL XOVCAP ('INTEM32',0,0) 
      CALL SETEM3 (0) 
      IF (IEXIT3F .EQ. 0) THEN
         CALL XOVCAP ('HPA32',0,0)
         CALL UOVCAP ('HPA32')
      ENDIF 
      CALL UOVCAP ('INTEM32') 
      GO TO 2000
  
*         TAPE UNIT ENTRIES 
  500 OVCALL = PR 
      CALL XOVCAP ('INTEM33',0,0) 
      CALL SETEM3 (0) 
      IF (IEXIT3F .EQ. 0) THEN
         CALL XOVCAP ('HPA33',0,0)
         CALL UOVCAP ('HPA33')
      ENDIF 
      CALL UOVCAP ('INTEM33') 
      GO TO 2000
* 
*            DISK MASS STORAGE
  600 OVCALL = PR 
      CALL XOVCAP ('INTEM34',0,0) 
      CALL SETEM3 (0) 
      IF (IEXIT3F .EQ. 0) THEN
         CALL XOVCAP ('HPA34',0,0)
         CALL UOVCAP ('HPA34')
      ENDIF 
      CALL UOVCAP ('INTEM34') 
      GO TO 2000
* 
*            REMOTE TERMINAL - NAM, INTERCOMM MESSAGES
  700 CALL XOVCAP ('INTEM35',0,0) 
      CALL SETEM3 (0) 
      IF (IEXIT3F .EQ. 0) THEN
         CALL XOVCAP ('HPA35',0,0)
         CALL UOVCAP ('HPA35')
      ENDIF 
      CALL UOVCAP ('INTEM35') 
      GO TO 2000
  
*        MSFS - MASS STORAGE FACILITY SUBSYSTEM 
*      MASSTOR CCC/7990 
  800 OVCALL = PR 
      CALL XOVCAP ('INTEM37',0,0) 
      CALL SETEM3 (0) 
      IF (IEXIT3F .EQ. 0) THEN
         CALL XOVCAP ('HPA37',0,0)
         CALL UOVCAP ('HPA37')
      ENDIF 
      CALL UOVCAP ('INTEM37') 
      GO TO 2000
* 
*            PROCESSOR ERRORS - 810/825/825/830/835 (RTY = 22B) 
  900 CALL XOVCAP ('INTEM10',0,0) 
      CALL SETEM3 (0) 
      IF (IEXIT3F .EQ. 0) THEN
         CALL XOVCAP ('HPA310',0,0) 
         CALL UOVCAP ('HPA310') 
      ENDIF 
      CALL UOVCAP ('INTEM10') 
      GO TO 2000
  
* 
*         MEMORY/SECDED ERRORS - 810/815/825/830/835/840/845/850/855/860
*                                                   (RTY = 13B) 
  910 CALL XOVCAP ('INTEM38',0,0) 
      CALL SETEM3 (0) 
      IF (IEXIT3F .EQ. 0) THEN
         CALL XOVCAP ('HPA38',0,0)
         CALL UOVCAP ('HPA38')
      ENDIF 
      CALL UOVCAP ('INTEM38') 
      GO TO 2000
* 
*         PROCESSOR ERRORS - 840/845/850/855/860    (RTY = 102B)
  920 CALL XOVCAP ('INTEM11',0,0) 
      CALL SETEM3 (0) 
      IF (IEXIT3F.EQ.0) THEN
        CALL XOVCAP ('HPA311',0,0)
        CALL UOVCAP ('HPA311')
      ENDIF 
      CALL UOVCAP ('INTEM11') 
      GO TO 2000
* 
*         IOU ERRORS - I1/I2/I4                     (RTY = 27B) 
  930 CALL XOVCAP ('INTEM12',0,0) 
      CALL SETEM3 (0) 
      IF (IEXIT3F .EQ. 0) THEN
         CALL XOVCAP ('HPA312',0,0) 
         CALL UOVCAP ('HPA312') 
      ENDIF 
      CALL UOVCAP ('INTEM12') 
      GO TO 2000
  
  
*        LCN
 1000 CALL XOVCAP ('INTEM39',0,0) 
      CALL SETEM3 (0) 
      IF (IEXIT3F .EQ. 0) THEN
         CALL XOVCAP ('HPA39',0,0)
         CALL UOVCAP ('HPA39')
      ENDIF 
      CALL UOVCAP ('INTEM39') 
      GO TO 2000
  
* 
*         THETA (990) PROCESSOR 
* 
 1100 CALL XOVCAP('INTEM13',0,0)
      CALL SETEM3(0)
      IF (IEXIT3F .EQ. 0) THEN
      CALL XOVCAP('HPA313',0,0) 
      CALL UOVCAP('HPA313') 
      ENDIF 
      CALL UOVCAP('INTEM13')
      GO TO 2000
* 
*         CYBERPLUS                                 (RTY = 63B) 
 1200 CALL XOVCAP ('INTEM15',0,0) 
      CALL SETEM3 (0) 
      IF (IEXIT3F .EQ. 0) THEN
         CALL XOVCAP ('HPA315',0,0) 
         CALL UOVCAP ('HPA315') 
      ENDIF 
      CALL UOVCAP ('INTEM15') 
      GO TO 2000
  
* 
 2000 IF (IEXIT3F .NE. 0) CALL GNR3 
  
 2010 CONTINUE
      IF(FEOF(SEF).EQ.2HNO)GO TO 10 
  
      IF (IEXIT3F .NE. 0) THEN
         CALL SETEM3 (0)
         GO TO 2200 
      ENDIF 
* 
*      PRINT LAST REPEAT COUNT, IF ANY
      CALL DREPT3 
* 
  
  
 2200 CALL RMFILEM (NEW)
      CALL RMREWND (NEW)
  
      CALL UOVCAP ('GNR3')
      CALL UOVCAP ('SETEM3')
      CALL UOVCAP ('SETFLDS') 
      CALL UOVCAP ('INISET3') 
      CALL UOVCAP ('STOJN3')
      CALL UOVCAP ('DREPT3')
      CALL UOVCAP ('FLIP3') 
  
       END
      OVCAP.
      SUBROUTINE ACCUM3  (WD,N) 
* 
*      DESCRIPTON 
*      -----------
*      ACCUM3 - ACCUMULATE ANALYSIS SUMMARY DATA FOR
*               PRINTING AS PART OF ANALYSIS REPORT.
* 
*      DATA AREAS 
*      ---------- 
*       WD = DATA WORD TO BE STORED IN ARRAY (SUM)
*       N =  POINTER TO COLUMN IN ARRAY ( SUM ), = 1,2,3, OR 4
*            WHERE DATA WORD TO BE STORED.
* 
*CALL HPACOM1 
*CALL,HPACOM3 
      DIMENSION SUM (217,5,2) 
      EQUIVALENCE (SUM(1,1,1),STOR(1,1))
  
      DATA MAXRAY /217/ 
  
      NCNT = 1
  
*        TEST FOR CORRECTED READ/WRITE OR LATE DATA TAPE ERRORS 
      IF ((MTY .GE. O"2450") .AND. (MTY .LE. O"2452")) THEN 
        NCNT = IFLD(24) 
        IF (RTY .EQ. O"47") NCNT = IFLD(21) 
      ENDIF 
  
*        TEST FOR HYDRA ERRORS
      IF (RTY .EQ. O"53") THEN
         NCNT = N 
         IF (NCNT .EQ. 0) NCNT = 1
         N = 1
      ENDIF 
*       TEST FOR DATA WORD IN ARRAY SUM, IN NOT PRESENT - 
*        STORE IN NEXT AVAILABLE LOCATION,  IF PRESENT -
*        ADD NCNT TO QUANTITY.
      DO 100 K = 1, MAXRAY
      KK = K
         IF (SUM (K,N,1) .EQ. 0)  GO TO 200 
         IF (SUM (K,N,1) .EQ. WD)  GO TO 220
  100 CONTINUE
  
*        ELIMINATE 1ST LOWEST VSN RECOVERED ERROR IF ARRAY FULL 
      IF (N .NE. 2) GO TO 110 
      NADIR = 1 
  101 DO 102 K = 1, MAXRAY
      KK = K
      IF (SUM(K,N,2) .EQ. NADIR) GO TO 103
  102 CONTINUE
      NADIR = NADIR + 1 
      GO TO 101 
  
  103 IF (KK .EQ. MAXRAY) GO TO 106 
      MAXRAYY = MAXRAY - 1
      DO 105 J = KK, MAXRAYY
      SUM(J,N,1) = SUM(J+1,N,1) 
  105 SUM(J,N,2) = SUM(J+1,N,2) 
      KK = MAXRAY 
  106 SUM(KK,N,1) = SUM(KK,N,2) = 0 
      GO TO 200 
  
  110 CONTINUE
      IF (FULLFLG .EQ. 2HON) RETURN 
       PRINT 111, N 
  111  FORMAT (' TABLE FULL ... ACCUM3',I2,//)
       FULLFLG = 2HON 
       RETURN 
  
  200 SUM(KK,N,1) = WD
      IF (KK .EQ. 1) FULLFLG = 3HOFF
  220 SUM(KK,N,2) = SUM(KK,N,2) + NCNT
  
      RETURN
      END 
      OVCAP.
      SUBROUTINE DREPT3 
* 
*          DESCRIPTION
*          -----------
*          DREPT3 - CALL COMPARE ROUTINE FOR REPEAT ENTRY TEST, 
*                    SET REPEAT FLAG, AND PRINT REPEAT COUNT, IF ANY. 
* 
*          CALLED BY
*          ---------- 
*          CALLED BY - UCHECK3,UCHECK43,UCHECK53,AN6SRA3,AN6SRB3
* 
*           DATA AREAS
*           ------------
*         FLAGS(3) - CONTAINS REPEAT COUNT,IF ANY. IF (0), NO REPEAT. 
*          FLAGS(4) - TO SHUT OFF PRINT OF REPEATED DETAILS,
*                     IF QTY OF REPEATS IS GREATER THAN VALUE 
*                     OF FROG(12).
*CALL,HPACOM1 
*CALL HPACOM2 
  
*        REPORT CONTROL FOR REPEATED MESSAGE - DR PARAMETER              R2FTAPE
      IF (FROG(12) .EQ. L"ALL") GO TO 200 
  
*        TEST CHANGE OF DATE OR MESSAGE                                  R2FTAPE
      IF ((PREC(7) .EQ. IFLD(7)) .AND. (TWIC .GE. 6)) GO TO 100 
  
*        FLUSH THE DR REPEATED MESSAGE QUANTITY                          R2FTAPE
      FLAGS(4) = 2HON 
      IF(FLAGS(3) .LT. FROG(12)) GO TO 50                                R2FTAPE
      PL(1) = FLAGS(3) - FROG(12) + 1                                    R2FTAPE
      IF((LINE+1) .GE. PLF) LINE = PLF - 2                               R2FTAPE
      CALL XOVCAP ('PRINT3',103,1)
      CALL UOVCAP ('PRINT3')
      LINE = LINE + 1                                                    R2FTAPE
   50 CONTINUE                                                           R2FTAPE
      FLAGS(3) = 0                                                       R2FTAPE
       GO TO 200
  
*     FOR DAS, STOP PRINTING AFTER 6 COMPLETE MESSAGES IF 
*     THE LIMIT (DR PARAMETER) HAS BEEN SET = 45. 
*     NOTE: MANY OF THE DAS ERROR MESSAGES CONSIST OF TWO PARTS,
*       THE FIRST PART MESSAGE BODY, SYMPTOM 100,  INCLUDES STATUS
*       AND OTHER FAILURE UNIQUE DATA,  THE SECOND PART IDENTIFY
*       THE FINAL FAILURE AND TYPE OF RECOVERY, SYMPTOM 111.
  
  100 FLAGS(3) = FLAGS(3) + 1 
*       IF DAS
      IF (RTY .EQ. O"54") THEN
  
*          IF DR = 45 PRINT ONLY 6 MESSAGES, OTHERWISE PRINT
*          ALL MESSAGES UP TO THE PRINT LIMIT (DR). 
  
*          TEST THE DAS LIMIT, IF LIMIT, PROCEED, IF NOT, JUMP. 
*          IF FROG(12) = 45 AND FLAGS(3) = 6 FORCE
*          FLAGS(3) TO 45 TO TRIGGER COUNTING AND NOT MESSAGE 
*          PRINTING.  THIS ALLOWS THE FLAGS(3) TO BE USED 
*          FOR COUNTING THE EXCESS MESSAGES.
        IF ((FROG(12) .EQ. 45) .AND. (FLAGS(3) .EQ. 6)) 
     .     FLAGS(3) = FROG(12)
        IF (FLAGS(3) .LT. FROG(12)) GO TO 200 
      ENDIF 
      IF (FLAGS(3) .LT. FROG(12)) GO TO 200                              R2FTAPE
      FLAGS(4) = 3HOFF
      VSNCNT = 1                                                         R2FTAPE
      GO TO 400                                                          R2FTAPE
                                                                         R2FTAPE
*        REPORT CONTROL FOR REPEATED VSN - VR PARAMETER                  R2FTAPE
  200 CONTINUE                                                           R2FTAPE
      IF (FROG(17) .EQ. L"ALL") GO TO 400 
                                                                         HPA404R
*         TEST FOR TAPE RTY OR STORED VSN COUNT FOR PREVIOUS TAPE RTY    HPA404R
      IF (((RTY.LT.O"30").OR.(RTY.GT.O"37")) .AND. (VSNCNT.EQ.1)) GO TO 
     +400 
                                                                         R2FTAPE
*        TEST CHANGE OF VSN IN MESSAGE                                   R2FTAPE
      IF ((PREC(25).EQ.IFLD(25)) .AND. (PREC(FJOB).EQ.IFLD(FJOB)) .AND. 
     .(TWIC .GE. 6)) GO TO 300                                           R2FTAPE
                                                                         R2FTAPE
*        FLUSH THE VR REPEATED VSN MESSAGE QUANTITY                      R2FTAPE
      FLAGS(4) = 2HON                                                    R2FTAPE
      PL(1) = VSNCNT - FROG(17)                                          R2FTAPE
      PL(2) = PREC(25)
      IF (VSNCNT .LE. FROG(17)) GO TO 250                                R2FTAPE
      IF((LINE+1) .GE. PLF) LINE = PLF - 2                               R2FTAPE
      CALL XOVCAP ('PRINT3',102,2)
      CALL UOVCAP ('PRINT3')
  250 CONTINUE                                                           R2FTAPE
      VSNCNT = 1                                                         R2FTAPE
      GO TO 400                                                          R2FTAPE
                                                                         R2FTAPE
*        STEP VR - VSN MESSAGE COUNTER                                   R2FTAPE
  300 VSNCNT = VSNCNT + 1                                                R2FTAPE
      IF (VSNCNT .LE. FROG(17)) GO TO 400                                R2FTAPE
      FLAGS(4) = 3HOFF                                                   R2FTAPE
      FLAGS(3) = FLAGS(3) - 1                                            R2FTAPE
                                                                         R2FTAPE
  400 RETURN                                                             R2FTAPE
      END 
      OVCAP.
      SUBROUTINE ERDIST3
* 
*          ERDIST3 - REPORT ERROR DISTRIBUTION BY JOB NAME, 
*         TIME, AND ERROR TYPE FROM DATA WHICH HAS BEEN STORED IN 
*         ARRAY BY SUBROUTINE STORJNT.
* 
*         DATA AREAS
*         ----------
*         TIME   - (6,70)/COMMON BLOCK/ARRAY TO HOLD COUNT OF 
*                  ERROR(K) AT FOUR HOUR INTERVAL(J). TIME(J,K) 
*         TBLERR - (70)/COMMON BLOCK/ARRAY TO HOLD ERROR CODES
*                  THAT RELATE TO THE COUNTS HELD IN ARRAY TIME.
*                  TIME(J,K) - HOLDS COUNTS OF ERROR(K) FOR TIME(J) 
*                  TBLERR(K) - HOLDS ERROR CODE FOR ERROR(K)
*         TOT    - (7)/LOCAL TO SUBROUTINE/ARRAY TO ACCUMULATE
*                  TOTAL ERROR COUNTS 
*         TBLMF  - (70)/COMMON BLOCK TO HOLD MFID.
*         NEC    - (4,400B)/COMMON BLOCK/AREA FOR TABLE OF ERROR
*                  CODES AND THEIR ERROR MESSAGES.
*         PL - (32)/COMMON BLOCK/AREA TO FORM DATA LIST OF
*                  PRINT OUT DATA.
*         HDATA(1)   - (1)/COMMON BLOCK/HOLDS MESSAGE T APPEAR IN SUB-
*                  HEADER OF THE REPORT.
*         KET    - (1)/LOCAL TO SUBROUTINE/TEMPORARY USAGE. 
*         PRUK(1)- (3)/COMMON BLOCK/ARRAY TO SUM USAGE FOR THIS 
*                  EQUIPMENT
*                  PRUK(1) - BLOCKS/CARDS INPUT 
*                  PRUK(2) - BLOCKS/CARDS/LINES OUTPUT
*                  PRUK(3) - MFID 
* 
*         CALLED BY 
*         --------- 
*            ANALYSIS ROUTINES IN SECONDARY OVERLAYS. 
* 
*         CALLS 
*         ----- 
*         PLSEC  - PRINT A LINE OF SECTION DIVIDER IN VARIOUS REPORT. 
*         PRHEAD - PRINT SUB-HEADER IN VARIOUS REPORTS. 
*         PRINT  - PRINT A LINE OF DATA IN VARIOUS REPORTS. 
  
* 
*CALL,HPACOM1 
*CALL,HPACOM2 
*CALL,HPACOM3 
      DIMENSION TOT(7)
* 
*  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  * 
* 
  
      STOT = 0                                                          000270
      DO 5 K = 1,7                                                      000280
      PL(K+2)=1H
    5 TOT(K) = 0                                                        000290
      CALL DREPT3 
      PL(1) = PL(2) = 1H
  
      CALL LOVCAP ('PRHEAD3') 
      CALL LOVCAP ('PRINT3')
  
      IHDR = 6
      IF (PREC(FDT) .EQ. R"CH") IHDR = 17 
      IF (PREC(FDT) .EQ. R"NC") IHDR = 11 
      IF ((PREC(FMTY) .GE. O"612") .AND. (PREC(FMTY) .LE. O"614"))
     .     IHDR = 37
      CALL HEADER 
      IF ((PREC(FDT) .EQ. R"MR") .AND.
     .   (PREC(FRTY) .NE. O"16") .AND. (PREC(FRTY) .NE. O"17") .AND.
     .   (PREC(FRTY) .NE. O"25") .AND. (PREC(FRTY) .NE. O"26")) GO TO 7 
      HDATA(1) = TYPORD 
      HDATA(2) = 8HCH-EQ-UN 
      IF (PREC(FRTY) .EQ. O"53") HDATA(2) = 8H    UNIT
      IF (PREC(FRTY) .EQ. O"54") HDATA(2) = 8H    UNIT
      IF (SEFREC(1).LT.0) GO TO 6 
      IF ((PREC(FRTY).NE.O"57").AND.(PREC(FRTY).NE.O"60")) GO TO 6
      HDATA(1) = 4HNODE 
      HDATA(2) = 8H 
    6 CONTINUE
      IF ((PREC(FRTY) .EQ. O"66") .OR. (PREC(FRTY) .EQ. O"67")) 
     .     HDATA(2) = 8HCH
      IF ((PREC(FRTY) .EQ. O"70") .OR. (PREC(FRTY) .EQ. O"71") .OR. 
     .    (PREC(FRTY) .EQ. O"72")) HDATA(2) = 8HCH
      IF (PREC(FDT) .EQ. R"CH") HDATA(2) = 8H 
      IF (PREC(FDT) .EQ. R"NC") HDATA(2) = 8H 
      IF ((PREC(FMTY) .GE. O"612") .AND. (PREC(FMTY) .LE. O"614"))
     .     HDATA(1) = HDATA(2) = 10H
      IF ((PREC(FRTY) .GE. O"30") .AND. (PREC(FRTY) .LE. O"37"))
     .     HDATA(2) = 8H   EQ-UN
      IF (PREC(FRTY) .EQ. O"55") HDATA(2) = 8H   EQ-UN
      IF (PREC(FRTY) .EQ. O"47") HDATA(2) = 8H   EQ-UN
      IF ((PREC(FRTY) .GE. O"40") .AND. (PREC(FRTY) .LE. O"51"))
     .     HDATA(2) = 8H      UN
      IF (PREC(FDT) .EQ. R"RP") HDATA(2) = 8HCH 
      IF ((PREC(FRTY) .EQ. O"16") .OR. (PREC(FRTY) .EQ. O"17") .OR. 
     .    (PREC(FRTY) .EQ. O"25") .OR. (PREC(FRTY) .EQ. O"26")) 
     .    HDATA(1) = HDATA(2) = 1H
      HCF(5) = 6
      GO TO 8 
    7 HCF(5) = 5
    8 CONTINUE
      HCF(1) = 0                                                        000250
      CALL PRHEAD3 (5)
* 
      IF (FROG(18).NE.3HYES) CALL PLSEC (3) 
*       PRINT EQUIP IDENT - EST 
  
      PL(1) = PREC(FDT) 
      IF (PREC(FDT) .EQ. R"MR") GO TO 10
      IF ((PREC(FMTY) .GE. O"612") .AND. (PREC(FMTY) .LE. O"614"))
     .     GO TO 10 
      IF (FLAGS(25).EQ.0) ENCODE(10,1000,PL(2))PREC(FEST) 
      IF (FLAGS(25).NE.0) ENCODE(10,1005,PL(2))PREC(FHUID)
      IF (PREC(FDT) .EQ. R"NC") ENCODE(10,1006,PL(2))PREC(FEST) 
      IF ((PREC(FDT) .EQ. R"NP") .OR. (PREC(FDT) .EQ. R"NM") .OR. 
     .    (PREC(FDT) .EQ. R"ND")) ENCODE (10,1005,PL(2)) PREC(FEST) 
* 
*        LEAVE CH-EQ-UN BLANK FOR  SELECTED RECORD/DEVICE TYPES 
      IF (((PREC(FRTY).EQ.O"57").AND.(SEFREC(1).GT.0)).OR.
     .  (PREC(FRTY).EQ.3).OR.(PREC(FRTY).EQ.7)) GO TO 10
      IF (PREC(FRTY).EQ.O"60") GO TO 10 
      IF ((PREC(FRTY).GE.O"12").AND.(PREC(FRTY).LE.O"15")) GO TO 10 
      IF ((PREC(FRTY) .GE. O"40") .AND. (PREC(FRTY) .LE. O"51")) GO TO 9
      IF (PREC(FDT) .EQ. R"CH") GO TO 10
      IF (PREC(FDT) .EQ. R"NC") GO TO 10
      ENCODE(10,1010,PL(3))PREC(FCHAN)
      IF ((PREC(FRTY).EQ.O"66").OR.(PREC(FRTY).EQ.O"67")) GO TO 10
      IF (PREC(FDT) .EQ. R"RP") GO TO 10
      IF ((PREC(FRTY) .EQ. O"70") .OR. (PREC(FRTY) .EQ. O"71") .OR. 
     .    (PREC(FRTY) .EQ. O"72")) GO TO 10 
      ENCODE(10,1010,PL(4))PREC(FCON) 
    9 CONTINUE
      IFUN = PREC(FUN)
      IF (((PREC(FRTY) .GE. O"30") .AND. (PREC(FRTY) .LE. O"37")) .OR.
     .     (PREC(FRTY) .EQ. O"47") .OR. (PREC(FRTY) .EQ. O"55")) THEN 
          PL(3) = 10H 
          IFUN = IFUN .AND. O"17" 
      ENDIF 
      ENCODE(10,1010,PL(5))IFUN 
      IF (PREC(FRTY) .EQ. O"53") PL(3) = PL(4) = 10H
      IF (PREC(FRTY) .EQ. O"54") PL(3) = PL(4) = 10H
  
*        INSERT DATE
   10 CONTINUE
      PL(6) = FLAGS(18) 
  
*       CONSECUTIVE DAYS, IF ANY
  
      IF (FLAGS(18).EQ.FLAGS(19)) GO TO 15
      PL(7) = 8H ..TO.. 
      PL(8) = FLAGS(19) 
   15 CONTINUE
      IF ((PREC(FDT) .EQ. R"MR") .AND.
     .   (PREC(FRTY) .NE. O"16") .AND. (PREC(FRTY) .NE. O"17") .AND.
     .   (PREC(FRTY) .NE. O"25") .AND. (PREC(FRTY) .NE. O"26")) GO TO 17
* 
*        PRINT DT-EST, CH-EQ-UN AND DATE(S) 
      CALL PRINT3 (21, 8) 
      GO TO 20
* 
*        PRINT DT, ELEMENT-MODEL AND DATE(S)
   17 PL(2) = 10H 
      PL(3) = PL(63)
      PL(4) = PL(64)
      PL(5) = 10H 
      IF (PREC(FRTY) .NE. O"11") CALL PRINT3 (20,8) 
      IF (PREC(FRTY) .EQ. O"11") CALL PRINT3 (19,8) 
  
*         REPORT HEADER 
  
   20 HCF(1) = 7
      HCF(2) = 0
      IF (FROG(18).NE.3HYES) CALL PLSEC (3) 
  
*        IF NO ERROR ENTRIES, SKIP TIME DISTRIBUTION.                    HPA402R
                                                                         HPA402R
      IF (TBLERR(1) .EQ. 0) GO TO 700                                    HPA402R
      CALL PRHEAD3 (1)
  
*         FIND TIME ENTRY 
*         START LOOF THROUGH ERROR CODE TABLE-TBLERR
  
      DO 200 I=1,70 
  
*         EXIT IF ERROR CODE IS ZERO
         IF(TBLERR(I).EQ.0) GO TO 250 
         KET = TBLERR(I).AND.O"7777"
  
*         LOAD ERROR DESCRIPTION
  
      PL(1) = NEC(1,KET)
      PL(2) = NEC(2,KET)
      PL(3) = NEC(3,KET)
  
*         ACCUMULATE SUBTOTALS FOR THIS ERROR CODE
  
         DO 140 J=1,6 
 140     STOT = STOT + ITIME(J,I) 
  
*         PRINT TIME DISTRIBUTION FOR THIS ERROR CODE 
  
         CALL LOAPR (4,ITIME(1,I),ITIME(2,I),ITIME(3,I),ITIME(4,I), 
     .                 ITIME(5,I),ITIME(6,I),STOT,TBLMF(I)) 
         CALL PRINT3(16,11) 
  
*         SUM OVERALL TOTALS AND CLEAR SUBTOTAL 
  
         DO 150 KK=1,6
 150     TOT(KK) = TOT(KK) + ITIME(KK,I)
         TOT(7) = TOT(7) + STOT 
         STOT = 0 
 200  CONTINUE
  
*        PRINT TOTALS 
 250  CONTINUE
      HCF(1) = 9
      CALL PRHEAD3(1) 
      PL(2) = 10H    TOTALS 
      CALL LOAPR(4,TOT(1),TOT(2),TOT(3),TOT(4), 
     .           TOT(5),TOT(6),TOT(7),SP) 
      CALL PRINT3(16,10)
*                                                                        R2FECS 
*         STORE TOTAL FOR ECS ANALYSIS REPORT                            R2FECS 
*                                                                        R2FECS 
      IF ((PREC(FRTY) .EQ. O"70") .OR. (PREC(FRTY) .EQ. O"71")) 
     .    STOR(68,32) = TOT(7)
      GO TO 800                                                          HPA402R
  
*         NO ERROR ENTRIES
  
  700 CONTINUE
      HCF(1) = 10 
      CALL PRHEAD3(1) 
  
*         PRINT USAGE DATA - IF ANY 
  
  800 CONTINUE
      HDATA(2) = 10H                                                     HPA404R
      IF ((PRUK(1,1)+PRUK(2,1)) .EQ. 0) GO TO 900 
      CALL PLSEC(4) 
  
      HCF(1) = 11 
      CALL PRHEAD3(1) 
  
*         BLOCKS INPUT
  
      I = 1 
  830 CONTINUE
      N = 0 
      IF (PRUK(1,I) .EQ. 0) GO TO 850 
      ENCODE(10,1015,PL(1)) PRUK(1,I) 
         PL(2) = 10H  BLOCKS
         PL(3) = 10HREAD
         IF(PREC(FRTY).EQ.O"20") PL(2) = 10H  CARDS 
      IF (PREC(FRTY).EQ.O"66") PL(2) = 10H  STRIPES 
      N = N + 3 
  850 CONTINUE
  
*         BLOCKS OUTPUT 
  
      IF (PRUK(2,I) .EQ. 0) GO TO 895 
      ENCODE(10,1015,PL(N+1)) PRUK(2,I) 
         IF(PREC(FRTY).LT.O"30") GO TO 860
*           TAPES 
      PL(N+2) = 10H  BLOCKS 
      PL(N+3) = 10HWRITTEN
      IF (PREC(FRTY).EQ.O"66") PL(N+2) = 10H  STRIPES 
            GO TO 890 
  860    CONTINUE 
*           UNIT RECORD EQUIP 
            IF(PREC(FRTY).NE.O"21") GO TO 870 
               PL(2) = 10H  CARDS 
               PL(3) = 10HPUNCHED 
               GO TO 890
  870       CONTINUE
               PL(2) = 10H  LINES 
               PL(3) = 10HPRINTED 
  890    CONTINUE 
      N = N + 3 
  895 CONTINUE
      IF (PRUK(3,I) .NE. 0) ENCODE(10,1020,PL(N+1)) PRUK(3,I) 
      CALL PRINT3(7,7)
      I = I + 1 
      IF (I .GT. 10) GO TO 900
      IF (PRUK(3,I) .NE. 0) GO TO 830 
  
  900 CALL UOVCAP ('PRHEAD3') 
      CALL UOVCAP ('PRINT3')
  
*         EXIT
      RETURN
 1000 FORMAT(O3,7X) 
1005  FORMAT(I4,6X) 
 1006 FORMAT(1X,Z2,7X)
 1010 FORMAT(O2,8X) 
 1015 FORMAT(I9,1X) 
 1020 FORMAT(3X,'MFID-',R1,1X)
      END 
      OVCAP.
      SUBROUTINE FLIP3
* 
*        FLIP3 -  PRESET POINTERS IN (HCF)  .. (HEADER CONTROL FLAGS) 
*                 BY TEST OF MESSAGE TYPE CODE AGAINST DATA CONTAINED 
*                 IN (MPR)
* 
*        CALLED BY -- INISET3, UCHECK3
* 
*         ENTRY CONDITION -- MESSAGE CODES AND (HCF) POINTERS STORED
*                IN ARRAY (MPR) BY ANALYSIS ROUTINES - PRIOR TO 
*                CALL OF DETAIL ROUTINE.
* 
*         EXIT CONDITION - POINTER FOR PRHEAD3 STORED IN HCF(3) 
*                        TO BE USED FOR CURRENT MESSSAGE TYPE.
* 
*      DATA AREAS - (MPR) ARRAY TO CONTAIN A SET OF ERROR CODES 
*                   AND A MATCHING SET OF (HCF) POINTERS FOR PRHEAD3, 
*                   MPR(1,X) IS HIGHEST VALUE OF CODE TO USE CERTAIN HDR
*                   HEADER, AND MPR(X,2) CONTAINS VALUE TO PLACED IN
*                   HCF(3) AS A DETAIL HEADER POINTER.
*CALL,HPACOM1 
*CALL,HPACOM2 
  
  
      DO 100 K = 1,16 
*          TEST FOR END OF POINTERS 
      IF (MPR(K,1) .EQ. 0) GO TO 300
      IF (MPR(K,1) .GE. MTY) GO TO 200
  100 CONTINUE
  
  200 HCF(3) = MPR(K,2) 
      GO TO 900 
  
  300 HCF(3) = MPR(K-1,2) 
      HCF(4) = 0
  900 RETURN
      END 
      OVCAP.
      SUBROUTINE GNR3 
* 
**        DESCRIPTION 
*         ----------- 
*         SUBROUTINE *GNR3* READS RECORDS FROM THE SEF ERROR FILE,
*         SAVES THE PREVIOUS RECORD, TESTS FOR DUPLICATE FIELDS 
*         WITH THE PREVIOUS RECORD AND SETS FLAGS TO
*         IDENTIFY THE DUPLICATE CONDITIONS.
* 
*         ENTRY CONDITIONS
*         ----------------
*         DATA AREAS SHARED - 
*         IFLD(64)
* 
*         EXIT CONDITIONS 
*         --------------- 
*         DATA AREAS SHARED - 
*         PREC(64), TWIC
* 
*         DATA AREAS
*         ----------
*         PREC   - (64)/COMMON BLOCK/ARRAY TO HOLD THE PREVIOUS SEF 
*                  ERROR RECORD IN UNPACKED FORM. 
*         IFLD   - (64)/COMMON BLOCK/ARRAY TO HOLD THE UNPACKED DATA
*                  FIELDS OF CURRENT SEF ERROR RECORD.
*         TWIC   - (1)/COMMON BLOCK/FLAG TO IDENTIFY THE DUPLICATE
*                  CONDITION OF SEF INPUT ERROR RECORDS.
* 
*         CALLS 
*         ----- 
*         RDATE3 - CONVERT JULIAN DATE TO CALENDAR DATE 
*         SEFED3 - OBTAIN/EDIT NEXT SEF RECORD TO BE PROCESSED
* 
*CALL,HPACOM1 
*CALL,HPACOM2 
  
      DIMENSION IMON(12)
      DATA (IMON(I),I=1,12) /31,28,31,30,31,30,31,31,30,31,30,31/ 
  
*         PECKING ORDER FOR TEST WITH PREVIOUS RECORD.
*         - DUPLICATE FIELD FLAGGING SEQUENCE FOR ( TWIC )
*         0 ( EOF )                           000180
*         1  NONE  ( RECORD TYPE CHANGE ) 
*         2  RECORD TYPE - SAME 
*         3  EST           (SAME) 
*         4  DEVICE TYPE - SAME 
*         5  UNIT NUMBER - SAME 
*         6  ERROR CODE  - SAME 
*         7  JOB NAME    - SAME 
  
*         SAVE PREVIOUS RECORD
  
      DO 10 K =1,40 
   10 PREC(K)=IFLD(K) 
*     HOLD THE  TWIC  SETTING 
      TWICHLD = TWIC
  
*       GET NEXT RECORD AND PERFORM ANY EDITING OPERATIONS. 
      CALL SEFED3 
  
      IF (FEOF(SEF) .EQ. 3HYES) GO TO 100 
* 
   50 IF (IFLD(FMTY) .EQ. 0) IFLD(FMTY) = O"76" 
C                       ERROR CODE
      MTY = IFLD(FMTY)
  
*         TEST DUPL FIELDS
  
      TWIC=1
      IF(PREC(FRTY).NE.IFLD(FRTY))GO TO 110 
      TWIC=2
      IF (FLAGS(25) .NE. 0) GO TO 70
      IF(PREC(FEST).NE.IFLD(FEST)) GO TO 110
      GO TO 75
   70 IF (PREC(FHUID) .NE. IFLD(FHUID)) GO TO 110 
   75 CONTINUE
      TWIC=3
      IF (PREC(FDT) .NE. IFLD(FDT) ) GO TO 110
      IF (FLAGS(25) .NE. 0 ) GO TO 90 
      TWIC=4
      IF (PREC(FUN) .NE. IFLD(FUN) ) GO TO 110
   90 TWIC = 5
      IF (PREC(FMTY) .NE. IFLD(FMTY) ) GO TO 110
      TWIC = 6
  
      GO TO 110 
  
  100 TWIC=0
      GO TO 150 
  
* 
**       RDATE3 GETS DATE FROM CURRENT MESSAGE RECORD AND 
*                 CONVERTS JULIAN DATE INTO CALENDER DATE.
* 
*         IMON   - TABLE OF DAYS OF EACH MONTH IN THE YEAR. 
*         KM     - COUNTER TO SET THE MONTH OF THE YEAR.
* 
*        CALENDER DAY ENCODED IN COMMON WORD ( IYEAR ), 
*        AND SAVED IN BUFFER ARRAY (SEBUF (23) )
* 
*       *********************************************************** 
  
*          SKIP CONVERSION IF SAME AS PREVIOUS DAY. 
* 
  110 IF (PREC(7) .NE. IFLD(7)) GO TO 115 
      IF (PREC(6) .EQ. IFLD(6)) GO TO 140 
* 
*        CURRENT YEAR AND CURRENT JULIAN DAY
  115 IMON(2) = 28
      IT = IFLD(6) - 2
      JDAY = IFLD(7)
*        TEST FOR LEAP YEAR 
  120 IT = IT - 4 
      IF (IT .EQ. 0) IMON(2) = 29 
      IF (IT .GT. 0) GO TO 120
* 
      DO 125 KM = 1,12
      IF (JDAY .LE. IMON(KM)) GO TO 130 
  125 JDAY = JDAY - IMON(KM)
  130 JYEAR = IFLD(6) + 70
      IF (JYEAR .GT. 99) JYEAR = JYEAR - 100
      ENCODE (8,135,IYEAR) JYEAR,KM,JDAY
  135 FORMAT (I2.2,2('/',I2.2)) 
*           CURRENT MONTH    *******
      FLAGS(6) = KM 
  
*          FORMAT THE TIME FOR PRINTING 
  140 ENCODE (8,145,IFLD(20)) IFLD(FTIME),IFLD(FTIME+1),IFLD(FTIME+2) 
  145 FORMAT (I2.2,2(1H.,I2.2) )
      IF (IFLD(FTIME) .EQ. O"77") THEN
         IFLD(FTIME) = 0
         MYTIME = R"DS" 
         ENCODE (8,146,IFLD(20)) MYTIME,IFLD(FTIME+1),IFLD(FTIME+2) 
  146    FORMAT (R2,2(1H.,I2.2))
       ENDIF
  150 CONTINUE
  
*     SET TWIC TO HOLD VALUE IF: DAS AND SECOND RECORD OF MESSAGE 
  
      IF ((IFLD(18) .EQ. R" CONTINU") .AND. (IFLD(FRTY) .EQ. O"54"))
     .TWIC = TWICHLD
  
* 
      RETURN
      END 
      SUBROUTINE SEFED3 
* 
**       SEFED3 -- READ NEXT SEF RECORD, OR COPY SAVED RECORD,
*               EDIT SEF RECORD TO INCLUDE CONTINUED INFO,IF ANY, 
*               COMPRESS DATA, WHEN POSSIBLE, TO REDUCE SIZE OF HISTORY 
* 
*        CALLED BY -- GNR3
* 
*        DATA AREAS --  NFLD(64) TO SAVE NEXT SEF RECORD, OR HOLD 
*                       FOLLOWING RECORD FOR EDIT OF (IFLD) DATA. 
*        FLAGS(13) -- FLAG TO SIGNAL PRESENCE OF VALID DATA IN NFLD 
*                     THAT IS TO BE PROCESSED AS SEPARATE RECORD. 
* 
*CALL HPACOM1 
*CALL HPACOM3 
  
      DIMENSION ISAVFLD(64) 
      DIMENSION SAVREC1 (8), SAVREC2 (8)
  
*     READ NEXT SEF RECORD, IF NOT PREVIOUSLY SAVED IN (NFLD).
      IF (FLAGS(13) .EQ. 3HYES) GO TO 100 
  
*      IF LAST RECORD OF SEF (FEOFSAV=1) RESET EOF
       IF (FEOFSAV .NE. 1) GO TO 50 
       FEOFSAV = 0
       FEOF(SEF) = 3HYES
       GO TO 900
* 
   50 CALL RMREAD (SEF,SEFREC,LENGTH) 
      IF (FEOF(SEF) .EQ. 3HYES) GO TO 900 
  
*  DISCARD THE CARTRIDGE TAPE TYPE 61 ENTRIES 
  
      IF ((SEFREC(1) .AND. O"0007 7700 0000 0000 7777") .EQ.
     .  O"0000 4700 0000 0000 0061") GO TO 50 
  
*       CHECK FOR "UNDEFINED" HPA ERR CODES NEEDING SUBSTITUTION
      HPAERR = SEFREC(1).AND.O"7777"
      IF ((HPAERR.EQ.O"5020").OR. 
     .   (HPAERR.EQ.O"5070").OR.(HPAERR.EQ.O"6017")) CALL CHEKOV
      CALL SETFLDS ('IFLD') 
      GO TO 200 
* 
*       TRANSFER PREVIOUS SAVED RECORD
  100 DO 110 K = 1,64 
  110 IFLD(K) = ISAVFLD(K)
      DO 112 I = 1, 8 
  112 SEFREC(I) = SAVREC2(I)
      FLAGS(13) = 2HNO
      RTY = IFLD(FRTY)
      MFID = IFLD(FSYS) .AND. O"77" 
      IF (MFID .EQ. 0) MFID = R" "
      IF (FEOFSAV .EQ. 1) GO TO 900 
  
*        CHECK RTY, DT AND DATE VALIDITY
  200 IF ((RTY .EQ. 0) .OR. (RTY .GT. RTYMAX)) GO TO 300
      FDT1 = IFLD(FDT) .AND. O"3700"
      IF ((FDT1 .EQ. 0) .OR. (FDT1 .GT. O"3200")) GO TO 300 
      FDT2 = IFLD(FDT) .AND. O"77"
      IF ((FDT2 .EQ. 0) .OR. (FDT2 .GT. O"32")) GO TO 300 
      IF (IFLD(6) .GT. IDATIM(4)) GO TO 300 
      IF (IFLD(7) .GT. 366) GO TO 300 
  
*     CHECK FOR MULTIPLE ENTRIES
*     ---FOR CHANNEL, ISMT/FSC TAPES, DISKS, SOME LCN,MSFS,MR,ETC.
      IF (RTY .EQ. 5) GO TO 400 
      IF ((RTY .EQ. O"30") .OR. (RTY .EQ. O"33")) GO TO 400 
      IF ((RTY .GE. O"40") .AND. (RTY .LE. O"52")) GO TO 400
      IF (RTY .EQ. O"55") GO TO 400 
      IF (RTY .EQ. O"47") GO TO 400 
      IF ((RTY .EQ. O"65") .AND. (IFLD(FMTY) .NE. O"60")) GO TO 400 
      IF ((RTY .EQ. O"66").AND.(IFLD(FMTY).EQ.O"60")) GO TO 400 
      IF (RTY .EQ. O"74") GO TO 400 
      IF ((RTY .EQ. O"76") .AND. (IFLD(FMTY) .EQ. O"1200")) GO TO 400 
      IF (IFLD(FMTY) .EQ. O"4304") GO TO 400
      IF ((IFLD(FMTY) .EQ. O"4312") .OR. (IFLD(FMTY) .EQ. O"4313")) 
     .     GO TO 400
      IF (((IFLD(FMTY) .EQ. O"321") .OR. (IFLD(FMTY) .EQ. O"335")) .AND.
     .     (IFLD(FJOB) .EQ. R" CONTINU")) GO TO 400 
      IF (IFLD(FMTY) .EQ. O"4320") GOTO 400 
      IF (IFLD(FMTY) .EQ. O"322") GO TO 400 
  
*         ZERO FILL THE UNIT AND EQUIP, (INCIDENT) FOR ECS ERROR
      IF (RTY .EQ. O"70") IFLD(FUN) = IFLD(FCON) = 0
      IF (RTY .EQ. O"71") IFLD(FUN) = IFLD(FCON) = 0
*         SET MASSTOR CCC AND 7990 EQ TO ZERO 
      IF ((RTY .EQ. O"66") .AND. (IFLD(FMTY) .NE. O"60")) IFLD(4) = 0 
      GO TO 900 
  
*        PRINT/DISCARD THE RECORD WITH INVALID RTY, DT OR DATE
  300 PRINT 310, (SEFREC(I), I=1,8) 
  310 FORMAT(' - - - INVALID RTY, DT OR DATE FOUND IN SEFED3 AFTER ', 
     .'SORT OF SEF - - -',/,4(1X,O20))
      GO TO 50
  
*     GET CONTINUATION MESSAGE
*     ---FOR CHANNEL, ISMT/FSC TAPES, DISKS, SOME LCN,MSFS,MR,ETC.
*     (SAVE THE SEFREC ARRAY FROM THE 1ST READ IN CASE NO CONTINUATION) 
  400 DO 410 I = 1, 8 
  410 SAVREC1(I) = SEFREC(I)
  
      CALL RMREAD (SEF,SEFREC,LENGTH) 
      IF (FEOF(SEF) .EQ. 3HYES) GO TO 450 
*       CHECK FOR "UNDEFINED" HPA ERR CODES NEEDING SUBSTITUTION
      HPAERR = SEFREC(1).AND.O"7777"
      IF ((HPAERR.EQ.O"5020").OR. 
     .   (HPAERR.EQ.O"5070").OR.(HPAERR.EQ.O"6017")) CALL CHEKOV
      CALL SETFLDS ('NFLD') 
      IF ((SEFREC(3) .AND. MASK(48)) .EQ. L" CONTINU") GO TO 900
      GO TO 800 
  
*        GET ANALYSIS AND DETAIL REPORTS ON LAST RECORD.
  450 FEOF(SEF) = 2HNO
      FEOFSAV = 1 
      GO TO 900 
  
*        SET SAVED MESSAGE FLAG 
  800 FLAGS(13) = 3HYES 
      RTY = IFLD(FRTY)
      DO 810 K = 1, 64
  810 ISAVFLD(K) = NFLD(K)
*     (SAVE THE SEFREC ARRAY FROM THE 2ND READ IF NO CONTINUATION AND 
*      RESTORE THE SEFREC ARRAY FROM THE 1ST READ.) 
      DO 812 I = 1, 8 
      SAVREC2(I) = SEFREC(I)
  812 SEFREC(I) = SAVREC1(I)
  
  900 RETURN
      END 
      SUBROUTINE CHEKOV 
* 
*        CHEKOV - COMPARE THE MICROCODE-SUPPLIED ERROR CODE AND 
*               SUBCODE FROM THE SEF WITH THE CODES AND SUBCODES
*               IN TABLE OVCODES.  IF THE CODE AND SUBCODE MATCH
*               A PAIR IN THE TABLE, THEN THE CORRESPONDING HPA 
*               ERROR CODE FROM THE TABLE IS SUBSTITUTED IN THE 
*               SEF FOR THE ORIGINAL "UNDEFINED" HPA ERROR CODE.
*        CALLED BY - SEFED3 (IF THE CURRENT SEF CONTAINS UNDEFINED
*                    HPA ERROR CODE O"5020", O"5070", OR O"6017") 
*CALL HPACOM1 
      DIMENSION OVCODES(17,2) 
*                                     ER-  ERROR   HPA
*                                     ROR  SUB-    ERROR
*                                     CODE CODE    CODE 
      DATA (OVCODES(01,I),I=1,2,1) /Z"6104 0272",O"6141"/ 
      DATA (OVCODES(02,I),I=1,2,1) /Z"6104 0292",O"6142"/ 
      DATA (OVCODES(03,I),I=1,2,1) /Z"6104 0275",O"6143"/ 
      DATA (OVCODES(04,I),I=1,2,1) /Z"E140 0273",O"6144"/ 
      DATA (OVCODES(05,I),I=1,2,1) /Z"E140 0274",O"5017"/ 
      DATA (OVCODES(06,I),I=1,2,1) /Z"E303 0085",O"6161"/ 
      DATA (OVCODES(07,I),I=1,2,1) /Z"5890 0015",O"6014"/ 
      DATA (OVCODES(08,I),I=1,2,1) /Z"D088 02E1",O"6201"/ 
      DATA (OVCODES(09,I),I=1,2,1) /Z"D890 0040",O"6202"/ 
      DATA (OVCODES(10,I),I=1,2,1) /Z"D890 004E",O"6203"/ 
      DATA (OVCODES(11,I),I=1,2,1) /Z"D890 004F",O"6204"/ 
      DATA (OVCODES(12,I),I=1,2,1) /Z"D890 0081",O"5205"/ 
      DATA (OVCODES(13,I),I=1,2,1) /Z"D890 008E",O"6206"/ 
      DATA (OVCODES(14,I),I=1,2,1) /Z"D890 008F",O"6207"/ 
      DATA (OVCODES(15,I),I=1,2,1) /Z"D892 00A8",O"5210"/ 
      DATA (OVCODES(16,I),I=1,2,1) /Z"D892 00A9",O"6211"/ 
      DATA (OVCODES(17,I),I=1,2,1) /Z"D892 0178",O"6212"/ 
  
*     NOTE THAT SOME OF THE ABOVE ERROR CODES/SUBCODES CONTAIN
*     A -DON'T CARE- DIGIT AS SHOWN BY THE -X- DIGIT IN THE 
*     FOLLOWING COMMENT TABLE.  THE CODE BELOW MASKS OUT THE
*     ERROR SUBCODE UPPER DIGIT IF THE ERROR CODE IS Z"D890". 
  
*     DATA (OVCODES(09,I),I=1,2,1) /Z"D890 X040",O"6202"/ 
*     DATA (OVCODES(10,I),I=1,2,1) /Z"D890 X04E",O"6203"/ 
*     DATA (OVCODES(11,I),I=1,2,1) /Z"D890 X04F",O"6204"/ 
*     DATA (OVCODES(12,I),I=1,2,1) /Z"D890 X081",O"5205"/ 
*     DATA (OVCODES(13,I),I=1,2,1) /Z"D890 X08E",O"6206"/ 
*     DATA (OVCODES(14,I),I=1,2,1) /Z"D890 X08F",O"6207"/ 
* 
      SEFJOB = SHIFT(SEFREC(3),-12).AND.Z"FFFFFFFFFFFF" 
      IF (SEFJOB.NE.R" CONTINU") THEN 
         OVINDX = 0 
         SEFEC = (SHIFT((SEFREC(4).AND.Z"FFF"),4)).OR.
     .           (SHIFT(SEFREC(5),4).AND.Z"F")
         SEFESC = SHIFT(SEFREC(5),20).AND.Z"FFFF" 
*        MASK OUT -DON'T CARE- DIGIT
         IF (SEFEC .EQ. Z"D890") THEN 
            SEFESC = SEFESC .AND. Z"FFF"
         ENDIF
         DO 33 OVINDX = 1,17
            OVEC = SHIFT(OVCODES(OVINDX,1),-16).AND.Z"FFFF" 
            OVESC = OVCODES(OVINDX,1).AND.Z"FFFF" 
            IF ((SEFEC.EQ.OVEC).AND.(SEFESC.EQ.OVESC)) THEN 
               SEFREC(1) = (OVCODES(OVINDX,2).OR. 
     .                     (SEFREC(1).AND.Z"FFFFFFFFFFFF000"))
               GO TO 55 
            ENDIF 
33       CONTINUE 
      OVINDX = 0
55    ENDIF 
      IF ((SEFJOB.EQ.R" CONTINU").AND.(OVINDX.NE.0)) THEN 
         SEFREC(1) = (OVCODES(OVINDX,2).OR. 
     .               (SEFREC(1).AND.Z"FFFFFFFFFFFF000"))
      ENDIF 
      RETURN
      END 
      OVCAP.
      SUBROUTINE INISET3
* 
**        DESCRIPTION 
*         ----------- 
*         SUBROUTINE INISET3 DOES INITIAL PREPARATION FOR UNIT
*         ANALYSIS REPORTS BY CLEARING SUMMARY ARRAYS, SETTING
* 
*         ENTRY CONDITIONS
*         ----------------
*              TO INITIALIZE DATA FOR OVERLAY (3,X) 
* 
* 
*CALL,HPACOM1 
*CALL,HPACOM2 
*CALL,HPACOM3 
  
*                    DATA-SAVE ARRAY
  
      DO 5 K = 1,5
    5 HCF(K) = 0
*                                  TIME OF OCCURENCE ARRAY
      DO 12 K=1,70
      TBLERR(K) = 0 
      TBLMF(K) = 0
      DO 12 K1=1,6
      ITIME(K1,K) = 0 
 12   CONTINUE
*                                  PRU COUNTS 
      DO 14 K=1,3 
      DO 14 K1=1,10 
   14 PRUK(K,K1) = 0
  
*     PRINT PREVIOUS REPEAT COUNT, IF ANY - RESET FLAGS 
      CALL DREPT3 
  
*             FIRST AND LAST DATE TRACKING FOR ANALYSIS REPORT          000890
      FLAGS(18) = IYEAR                                                 000900
      FLAGS(19) = IYEAR                                                 000910
      DO 16 K = 1,64
   16 PL(K) = 1H
      FLAGS(12) = 7HNEW-EST 
      TYPEST = IFLD(FEST) 
      IF (FLAGS(25).EQ.0) ENCODE(10,1000,ORD)IFLD(FEST) 
      IF (FLAGS(25).NE.0) ENCODE(10,1005,ORD)IFLD(FHUID)
      MTY = IFLD(FMTY)
      TYPDT = IFLD(FDT) 
      HDATA(3) = SEBUF(21)
      HCF(1) = 1
      HCF(2) = 2
  
      FLAGS(15) = 3HOFF                                                 001160
*          CLEAR MESSAGE HEADING POINTERS 
      DO 55 K = 1,16
   55 MPR(K,1) = 0
*        CLEAR STOR ARRAY 
      DO 60 K1 = 1,68 
      DO 60 K2 = 1,32 
   60 STOR (K1,K2) = 0
  
      FLAGS(3) = 0
      FLAGS(4) = 2HON 
* 
      DO 70 I = 1,25
   70 NTERM(I) = 0
* 
*                FLAG FOR DETAIL REPORT 
      CALL SETREF (1,RCFD)
  
*                FLAG FOR UNIT ANALYSIS REPORT
      CALL SETREF (2,RCFA)
  
*        FLAG FOR (EXTENDED DETAIL) REPORT
      CALL SETREF (3,FLAGS(11) )
      IF (FLAGS(11).EQ.2HON) RCFD = 2HON                                 R2DFMD 
  
  
*        FLAG FOR (STATISTICS DETAIL) REPORTS 
      CALL SETREF (5,FROG(8) )
  
      RETURN
  
 1000 FORMAT(O3,7X) 
1005  FORMAT(I4,6X) 
      END 
      OVCAP.
      SUBROUTINE PRHEAD3 (ST) 
* 
**     PRHEAD3 PRINTS HEADINGS FOR REPORTS DEVELOPED
*      BY OV-3 ROUTINES.
* 
*      ENTRY CONDITIONS 
*      -----------------
*      HCF(5) - ARRAY PRESET WITH POINTERS TO A SET OF HEADINGS 
*               THAT MAY BE PRINTED.  A NON-ZERO VALUE IN HCF(1)
*                  TO HCF(5) IS A POINTER TO A HEADING, AS USED IN
*                  COMPUTED GO-TO. HCF(1) TO (5) ARE SCANNED
*               SEQUENTIALLY AND SEVERAL SUBHEADERS MAY BE PRINTED. 
*          ST = CONTAINS POINTER TO WHERE ROUTINE WILL
*               START SCANN OF (HCF) FLAG.
* 
*       EXIT CONDITIONS 
*       ----------------
*          SUB-HEADER PRINT COMPLETED.
*              ENCOUNTER (HCF) FLAG CONTAINING ( 0 ). 
* 
*       DATA AREAS
*       --------------------
*        HCF(5) - FLAGS TO CONTROL SUB-HEADER PRINT 
*        HDATA(5) = 5 WORDS OF (A) FORMAT DATA USED IN PRINT. 
*        HDATA(3) = CURRENT DATE FOR PRINT
*        TYPEST = CURRENT EST 
*        TYPEDT = CURRENT DEVICE TYPE 
*        TYPEID = CURRENT DEVICE NOMENCLATURE (DISK,TAPE,ETC.)
* 
*         CALLED BY 
*         --------- 
*         PRINT3 - AUTOMATICALLY, WHEN NEW PAGE IS INITIATED. 
*         OV-3  ROUTINES THAT NEED TO CALL SUBHEADER. 
* 
*CALL HPACOM1 
*CALL,HPACOM2 
  
      P = ST
      GO TO 5 
    2 LINE = LINE + 1 
    5 LINE = LINE + 1 
  
      IF (P .GT. 5) GO TO 1000                                          000170
      PTR = HCF(P)
      IF (PTR .EQ. 0) GO TO 1000
      P = P + 1 
  
  
*        JUMP TO PRINT AS CALLED BY POINTER 
      GO TO (1000,1000,1000,1000,50,60,70,1000,90,100,
     .        110,1000, 130,1000, 150, 160, 170, 180, 190) PTR
* 
*          SUBHEADER FOR MAINFRAME ANALYSIS REPORT
   50 IF (PREC(FRTY) .NE. O"11") PRINT 51 
      IF (PREC(FRTY) .EQ. O"11") PRINT 52 
   51 FORMAT(1X,'DT',8X,'ELEMENT-MODEL',6X,'DATE')
   52 FORMAT(1X,'DT',27X,'DATE')
      GO TO 5 
  
*        SUBHEADER FOR ANALYSIS REPORTS 
   60 PRINT 61,HDATA(1),HDATA(2)
      GO TO 5 
   61 FORMAT(1X,'DT-',A4,3X,A8,6X,'DATE') 
* 
   70 PRINT 71
   71 FORMAT(/,32X,'>>>>> MESSAGE DISTRIBUTION <<<<<')
      PRINT 72
   72 FORMAT(T2,'MESSAGE',T43,'TIME - HOURS',T76,'MF',/T2,'-------',
     .T30,'00----04----08----12----16----20----24 TOTALS ID') 
      GO TO 2 
  
   90 PRINT 91
   91 FORMAT(T32,6('----- '),' ------') 
      GO TO 5 
* 
  
*         SUB-HEADER FOR NO ERROR ENTRIES - UNIT ANALYSIS REPORT
  
  100 PRINT 101 
  101 FORMAT(T10,'NO ERRORS LOGGED')
      GO TO 5 
  
*         SUB-HEADER FOR USAGE - UNIT ANALYSIS REPORT 
  
  110 PRINT 111 
  111 FORMAT (6X,' .........  EQUIPMENT USAGE  .........',/)
      GO TO 2 
  
  130 PRINT 131,HDATA(1),HDATA(2) 
  131 FORMAT (/,11X,'QTY .. AT .. ',2A10) 
      GO TO 2 
* 
  150 PRINT 151,HDATA(1)
      GO TO 2 
  151 FORMAT (/,11X,'QTY .. AT .. ',2A10) 
  
*      SUBHEADER FOR SUMMARY OF HYDRA ERROR LOG ENTRIES 
  160 PRINT 161 
  161 FORMAT (/,1X,'STATUS             STATUS            ', 
     .  '         FAILING       REPETITION',/,
     .          1X,' CODE           DESCRIPTION          ', 
     .  '         ADDRESS         COUNT',/, 
     .          1X,7(10H----------),/)
      LINE = LINE + 2 
      GO TO 2 
  
*     SUB-HEADERS FOR ANALYSIS REPORT CORRECTED TAPE ERRORS 
  170 PRINT 171,HDATA(1),HDATA(2) 
  171 FORMAT(/,5H *** ,I3,11H VSNS WITH ,I6,18H GCR SINGLE-TRACK ,
     .       21HCORRECTED READ ERRORS,4H ***) 
      GO TO 2 
  180 PRINT 181,HDATA(1),HDATA(2) 
  181 FORMAT(/,5H *** ,I3,11H VSNS WITH ,I6,18H GCR SINGLE-TRACK ,
     .       22HCORRECTED WRITE ERRORS,4H ***)
      GO TO 2 
  190 PRINT 191,HDATA(1),HDATA(2) 
  191 FORMAT(/,5H *** ,I3,11H VSNS WITH ,I6,15H LATE DATA MSGS, 
     .       4H ***)
      GO TO 2 
* 
* 
 1000 RETURN
      END 
      OVCAP.
      SUBROUTINE PRINT3 (LT,NW) 
* 
**        DESCRIPTION 
*         ----------- 
*         SUBROUTINE PRINT3 PRINTS A LINE OF DATA IN VARIOUS REPORTS
*         BY TRACKING LINE COUNTS AND STARTS NEW PAGE IF NEEDED.
* 
*         ENTRY CONDITIONS
*         ----------------
*         LT   - DEFINES THE FORMAT STATEMENT TO BE USED, 
*         NW   - DEFINES THE NUMBER OF WORDS TO BE PRINTED. 
* 
*         DATA AREAS SHARED - 
*         LINE, RCF, PL(32) 
* 
*         EXIT CONDITIONS 
*         --------------- 
*         DATA AREAS SHARED - 
*         LINE
* 
*         DATA AREAS
*         ----------
*         LINE   - (1)/COMMON BLOCK/NUMBER OF LINES PRINTED SO FAR
*                  IN A PAGE. 
*         IFORM  - (12,60)/COMMON BLOCK/AREA TO HOLD THE EXECUTION
*                  TIME FORMAT STATEMENTS FOR VARIOUS REPORTS.
*                  COLUMN NUMBER SELECTS A SET OF FORMAT STATEMENT
*                  AND THE MAXIMUN LENGTH OF ONE STATEMENT IS 12
*                  WORDS LONG.
*         PL - (32)/COMMON BLOCK/AREA TO HOLD A LIST OF PRINT 
*                  DATA LOADED BY THE CALLING ROUTINE.
*         CALLS 
*         ----- 
*         HEADER - INITIALIZE EACH PAGE OF VARIOUS REPORTS. 
*         PRHEAD - PRINT SUB-HEADER IN VARIOUS REPORT.
* 
*CALL,HPACOM1 
  
      DIMENSION IFORM (4,22), FORM2 (6,3), FMT (6)
  
*         FORMAT FOR R/U TAPE ERRORS BY VSN - UNIT ANALYSIS REPORT
      DATA(IFORM(I,6), I=1,3,1)/10H(8X,I6,11X,10H,R6)      ,10H 
     + /
  
*         FORMAT FOR USAGE - UNIT ANALYSIS REPORT 
  
      DATA(IFORM(I,7),I=1,2,1) / 10H(5X,A10,2(,10H1X,3A10)) / 
  
      DATA(IFORM(I,10),I=1,3,1)/10H(2X,7A10,A,10H6)        ,10H 
     + /
      DATA(IFORM(I,15),I=1,3,1)/10H(8X,I6,11X,10H,Z2,5X,Z2,,
     .                          10H6X,Z2)                   / 
  
*         FORMAT FOR ERROR DISTRIBUTION - UNIT ANALYSIS REPORT
      DATA (IFORM(I,16),I=1,4,1) /
     .10H(1X,2A10,A,10H8,2H /,6(I,10H5.0,1H/),I,10H7.0,2X,R1)/
  
*         FORMAT FOR MAINFRAME ERROR DISTRIBUTION - ANALYSIS REPORT 
      DATA (IFORM(I,19),I=1,4,1) /
     .10H(1X,R2,9X,,10HA1,A2,6X,A,10H2,6X,A1,3A,10H8)        /
  
      DATA (IFORM(I,20),I=1,4,1) /
     .10H(1X,R2,9X,,10HA1,Z2,6X,Z,10H2,6X,A1,3A,10H8)        /
  
*         FORMAT FOR (DEVICE - ID) HEADER IN UNIT ANALYSIS REP. 
      DATA (IFORM(I,21),I=1,4,1) /
     .10H(1X,R2,1X,,10HA4,2X,3(1X,10H,A2),4X,3A,10H8)        /
  
*        FORMAT FOR WARNING/FATAL MASSTOR 7990 ERRORS BY CSN IN 
*        UNIT ANALYSIS REPORT 
      DATA(IFORM(I,22),I=1,2,1)/10H(8X,I6,9X,,10HA10)      /
  
  
* 
*       **********************************************
* 
*         ...START OF (FORM2) ARRAY FOR LARGE FORMATS ... 
* 
*        ... THESE ARE CALLED WITH FORMAT PARAMETER BIASED
*            BY +100, IN PRINT CALL . 
* 
*        ************************************************ 
* 
*         FORMAT FOR SUMMARY OF HYDRA ERROR LOG ENTRIES 
      DATA (FORM2(I,1),I=1,6,1) / 
     .10H(2X,R2,Z2,,10H5X,3A10,2X,10H,1HC,Z4,2H,10H H,Z2,2H S,
     .10H,Z2,4H(16),10H,1X,I6)   /
  
                                                                         R2FTAPE
*        FORMAT FOR REPEATED VSN MESSAGE - VR PARAMETER                  R2FTAPE
      DATA (FORM2(I,2),I=1,4,1)   / 
     .10H(1X,I5,' M,10HORE ERRORS,10H ON VSN='R,10H6)        /
  
*         FORMAT FOR REPEATED ENTRY MESSAGE 
      DATA (FORM2(I,3),I=1,6,1) / 
     .10H(/,31H **A,10HBOVE MESSA,10HGE TYPE RE,10HPEATED(,I5,10H,15H ) 
     .MOR,10HE TIMES**)/
* 
*       **************************************************
  
*      IF CURRENT DETAILS - NOT TO BE PRINTED - RETURN. 
      IF( FLAGS(4) .EQ. 3HOFF) GO TO 50 
  
      IF (LINE .LE. PLF) GO TO 5
      CALL HEADER 
      IF ((LT.EQ.7).OR.(LT.EQ.16).OR.(LT.EQ.21)) THEN 
         CALL PRHEAD3(1)
      ELSE
         CALL XOVCAP ('PRHEAD3',1,0)
         CALL UOVCAP ('PRHEAD3')
      ENDIF 
    5 LINE = LINE + 1 
  
      IF (LT .GE. 100) GO TO 10 
      DO 8 J=1, 4 
       FMT(J)=IFORM(J,LT) 
  8   CONTINUE
      PRINT FMT, (PL(J),J=1,NW) 
      GO TO 50
* 
*      PRINT WITH FORMAT OF 100 OR MORE 
   10 LFM = LT - 100
      DO 12 J = 1,6 
       FMT(J)=FORM2(J,LFM)
 12   CONTINUE
      PRINT FMT, (PL(J),J=1,NW) 
  
   50 DO 60 K=1,NW
   60 PL(K) = 1H
* 
      RETURN
      END 
      OVCAP.
      SUBROUTINE PRSUM3 (N,F) 
* 
*       DESCRIPTION 
*       ------------- 
*      PRSUM3 - PRINT UNIT ANALYSIS SUMMARY DATA , AS CONTAINED 
*                IN ARRAY (SUM).  CONTENTS OF (SUM) STORED BY -ACCUM3-
*                CALLED BY PROCESS ROUTINES  ( PROC...) . 
* 
*          DATA AREAS 
*          -------------
*          SUM (217,5,2) =  SUMMARY DATA ACCUMULATOR, WHERE 
*                S1,S2,S3 =  S1... ROW OF DATA
*                            S2... COLUMN OF DATA 
*                            S3(1) = DATA WORD
*                            S3(2) = TOTAL QUANTITY OF THIS DATA
*          N = POINTER TO COLUMN IN ARRAY (SUM) THAT IS TO BE 
*              PRINTED ON THIS CALL.
*           F = FORMAT TO BE USED FOR PRINT CALL
* 
*          CALLED BY
*          ---------- 
*           UNIT ANALYSIS ROUTINES ( PROC... )
*CALL,HPACOM1 
*CALL,HPACOM3 
      DIMENSION SUM (217,5,2) 
       EQUIVALENCE (SUM(1,1,1),STOR(1,1)) 
  
      DIMENSION SICODE (4, 10), MICODE (4, 32), IDSCODE (4, 13) 
  
      DATA (SICODE(I,1),I=1,4,1) /
     .Z"00",10HNO SYSTEM ,10HINTERVENTI,10HON STATUS /
      DATA (SICODE(I,2),I=1,4,1) /
     .Z"21",10HSEEK ERROR,10H          ,10H          /
      DATA (SICODE(I,3),I=1,4,1) /
     .Z"41",10HUNABLE TO ,10HREAD HEADE,10HR         /
      DATA (SICODE(I,4),I=1,4,1) /
     .Z"42",10HHEADER MIS,10HCOMPARE   ,10H          /
      DATA (SICODE(I,5),I=1,4,1) /
     .Z"43",10HUNABLE TO ,10HREAD DATA ,10H          /
      DATA (SICODE(I,6),I=1,4,1) /
     .Z"64",10HNO SPARE S,10HECTORS AVA,10HILABLE    /
      DATA (SICODE(I,7),I=1,4,1) /
     .Z"67",10HUNABLE TO ,10HWRITE HEAD,10HER        /
      DATA (SICODE(I,8),I=1,4,1) /
     .Z"82",10HDISK NOT F,10HORMATTED  ,10H          /
      DATA (SICODE(I,9),I=1,4,1) /
     .Z"A6",10HDIAGNOSTIC,10H FAULT DET,10HECTED     /
      DATA (SICODE(I,10),I=1,4,1) / 
     .Z"C1",10HCOMMAND BL,10HOCK NEGATE,10HD         /
  
      DATA (MICODE(I,1),I=1,4,1) /
     .Z"00",10HNO MANUAL ,10HINTERVENTI,10HON STATUS /
      DATA (MICODE(I,2),I=1,4,1) /
     .Z"21",10HCOMMAND BL,10HOCK OVERWR,10HITE       /
      DATA (MICODE(I,3),I=1,4,1) /
     .Z"22",10HILLEGAL CO,10HMMAND CODE,10H          /
      DATA (MICODE(I,4),I=1,4,1) /
     .Z"23",10HILLEGAL SE,10HCONDARY SE,10HEK ADDRESS/
      DATA (MICODE(I,5),I=1,4,1) /
     .Z"24",10HILLEGAL PR,10HIMARY SEEK,10H ADDRESS  /
      DATA (MICODE(I,6),I=1,4,1) /
     .Z"25",10HILLEGAL CO,10HMMAND PARA,10HMETER     /
      DATA (MICODE(I,7),I=1,4,1) /
     .Z"27",10HI/O ILLEGA,10HL WRITE ER,10HROR       /
      DATA (MICODE(I,8),I=1,4,1) /
     .Z"28",10HEND OF DIS,10HK REACHED ,10H          /
      DATA (MICODE(I,9),I=1,4,1) /
     .Z"29",10HILLEGAL DE,10HVICE NUMBE,10HR         /
      DATA (MICODE(I,10),I=1,4,1) / 
     .Z"2A",10HILLEGAL CO,10HNTROL FIEL,10HD         /
      DATA (MICODE(I,11),I=1,4,1) / 
     .Z"2B",10HILLEGAL TE,10HRMINATION ,10H(FORMAT)  /
      DATA (MICODE(I,12),I=1,4,1) / 
     .Z"41",10HI/O ILLEGA,10HL DISCONNE,10HCT ERROR  /
      DATA (MICODE(I,13),I=1,4,1) / 
     .Z"63",10HISI I/O PA,10HRITY ERROR,10H          /
      DATA (MICODE(I,14),I=1,4,1) / 
     .Z"64",10HR/W SEQUEN,10HCER RAM PA,10HRITY ERROR/
      DATA (MICODE(I,15),I=1,4,1) / 
     .Z"65",10HMPU PARITY,10H ERROR    ,10H          /
      DATA (MICODE(I,16),I=1,4,1) / 
     .Z"66",10HECC FAULT ,10H          ,10H          /
      DATA (MICODE(I,17),I=1,4,1) / 
     .Z"67",10HVOLTAGE FA,10HULT       ,10H          /
      DATA (MICODE(I,18),I=1,4,1) / 
     .Z"68",10HTRANSFER C,10HOUNT ERROR,10H          /
      DATA (MICODE(I,19),I=1,4,1) / 
     .Z"6A",10HDIAGNOSTIC,10H FAULT DET,10HECTED     /
      DATA (MICODE(I,20),I=1,4,1) / 
     .Z"6B",10HOVER-TEMPE,10HRATURE FAU,10HLT        /
      DATA (MICODE(I,21),I=1,4,1) / 
     .Z"6C",10HNO READ/WR,10HITE SEQUEN,10HCER RESPON/
      DATA (MICODE(I,22),I=1,4,1) / 
     .Z"6D",10HINVALID R/,10HW SEQUENCE,10HR RESPONSE/
      DATA (MICODE(I,23),I=1,4,1) / 
     .Z"6E",10HR/W SEQUEN,10HCER STATUS,10H OVERWRITE/
      DATA (MICODE(I,24),I=1,4,1) / 
     .Z"6F",10HIHD HARDWA,10HRE FAULT (,10HCHK 2 ERR)/
      DATA (MICODE(I,25),I=1,4,1) / 
     .Z"70",10HREAD/WRITE,10H SEQUENCER,10H FAULT    /
      DATA (MICODE(I,26),I=1,4,1) / 
     .Z"81",10HDISK FAULT,10H          ,10H          /
      DATA (MICODE(I,27),I=1,4,1) / 
     .Z"90",10HNO SECTOR ,10HPULSE     ,10H          /
      DATA (MICODE(I,28),I=1,4,1) / 
     .Z"91",10HNO INDEX P,10HULSE      ,10H          /
      DATA (MICODE(I,29),I=1,4,1) / 
     .Z"92",10HCYL/HEAD/S,10HEC ADDRESS,10H WRAP ERR /
      DATA (MICODE(I,30),I=1,4,1) / 
     .Z"C1",10HILLEGAL SE,10HQUENCE (NO,10HT READY)  /
      DATA (MICODE(I,31),I=1,4,1) / 
     .Z"C2",10HFORMAT PRO,10HTECT ERROR,10H          /
      DATA (MICODE(I,32),I=1,4,1) / 
     .Z"C3",10HNO DISK RE,10HSPONSE    ,10H          /
  
      DATA (IDSCODE(I,1),I=1,4,1) / 
     .Z"00",10HNO DELAY  ,10HSTATUS    ,10H          /
      DATA (IDSCODE(I,2),I=1,4,1) / 
     .Z"21",10HDATA CORRE,10HCTION APPL,10HIED       /
      DATA (IDSCODE(I,3),I=1,4,1) / 
     .Z"22",10HSEEK RETRY,10H APPLIED  ,10H          /
      DATA (IDSCODE(I,4),I=1,4,1) / 
     .Z"23",10H          ,10H          ,10H          /
      DATA (IDSCODE(I,5),I=1,4,1) / 
     .Z"24",10HDATA RETRY,10H APPLIED  ,10H          /
      DATA (IDSCODE(I,6),I=1,4,1) / 
     .Z"25",10H          ,10H          ,10H          /
      DATA (IDSCODE(I,7),I=1,4,1) / 
     .Z"26",10H          ,10H          ,10H          /
      DATA (IDSCODE(I,8),I=1,4,1) / 
     .Z"27",10H          ,10H          ,10H          /
      DATA (IDSCODE(I,9),I=1,4,1) / 
     .Z"42",10HHEADER RET,10HRY APPLIED,10H          /
      DATA (IDSCODE(I,10),I=1,4,1) /
     .Z"81",10HPOWER-UP I,10HNIT. COMPL,10HETE       /
      DATA (IDSCODE(I,11),I=1,4,1) /
     .Z"83",10HHOST-GENER,10HATED RESET,10H COMPLETE /
      DATA (IDSCODE(I,12),I=1,4,1) /
     .Z"84",10HPRIORITY O,10HVERRIDE CO,10HMPLETE    /
      DATA (IDSCODE(I,13),I=1,4,1) /
     .Z"85",10HBUS SLAVE ,10HON LINE   ,10H          /
  
      DATA MAXRAY /217/ 
  
*        TEST FOR CORRECTED READ/WRITE OR LATE DATA MESSAGES
      IF ((F .LT. 17) .OR. (F .GT. 19)) GO TO 30
      HDATA(1) = HDATA(2) = 0 
      DO 12 K = 1, MAXRAY 
          IF (SUM(K,N,2) .EQ. 0) GO TO 14 
          HDATA(1) = HDATA(1) + 1 
          HDATA(2) = HDATA(2) + SUM(K,N,2)
   12 CONTINUE
   14 IF (HDATA(2) .EQ. 0) GO TO 900
      HCF(5) = F
      CALL XOVCAP ('PRHEAD3',5,0) 
      CALL UOVCAP ('PRHEAD3') 
*         PRINT MESSAGE FOR LATE DATA MESSAGES ONLY 
      IF (F .EQ. 19) PRINT 18 
   18 FORMAT(///,1X,'* * * * * * * * * * * * * * * * * * * * * * * * * '
     .             ,'* * * * * * * * * * * * * *',/,
     .           1X,'*                                                 '
     .             ,'                          *',/,
     .           1X,'*  LATE DATA MESSAGES ON TAPE UNITS LOGGED IN HPA '
     .             ,'ARE BASICALLY INFORMATIVE.*',/,
     .           1X,'*  THE MESSAGES BY THEMSELVES ARE NOT SOMETHING TO'
     .             ,' BE ALARMED ABOUT FROM A  *',/,
     .           1X,'*  HARDWARE MAINTENANCE STANDPOINT.  THE INFORMATI'
     .             ,'ON MAY BE USEFUL FOR      *',/,
     .           1X,'*  PERFORMANCE ANALYSIS.                          '
     .             ,'                          *',/,
     .           1X,'*                                                 '
     .             ,'                          *',/,
     .           1X,'* * * * * * * * * * * * * * * * * * * * * * * * * '
     .             ,'* * * * * * * * * * * * * *')
      GO TO 900 
  
*           TEST FOR DATA BEFORE PRINTING SECTION HEADER
   30 CONTINUE
      IF (SUM(1,N,2) .EQ. 0) GO TO 800
      HCF(5) = 15 
      IF (F .EQ. 15) HCF(5) = 13
      IF (F .EQ. 9) HCF(5) = 16 
      CALL XOVCAP ('PRHEAD3',5,0) 
      CALL UOVCAP ('PRHEAD3') 
      HCF(1) = HCF(5) 
  
*           TEST FOR VSN RECOVERED ERRORS SUMMARY 
      IF (F .EQ. 9) GO TO 200 
      IF (N.NE.2) GO TO 90
      IF ((F.NE.6).AND.(F.NE.22)) GO TO 90
  
*         SCREEN VSN MOST RECOVERED ERRORS FOR TAPE ANALYSIS REPORTS
      PEAK = 0
      NADIR=2 
   40 NADIR = NADIR + 1 
      ICNT = 0
      DO 50 K = 1, MAXRAY 
      IF (SUM(K,2,2) .EQ. 0) GO TO 55 
      IF (SUM(K,2,2) .LT. NADIR) GO TO 50 
      ICNT = ICNT + 1 
      IF (SUM(K,2,2) .GT. PEAK) PEAK = SUM(K,2,2) 
      IF((ICNT) .EQ. K) GO TO 50
      SUM(ICNT,2,1) = SUM(K,2,1)
      SUM(ICNT,2,2) = SUM(K,2,2)
      SUM(K,2,1) = SUM(K,2,2) = 0 
   50 CONTINUE
   55 IF (NADIR .EQ. 3) HDATA(2) = K - 1
      IF ((ICNT .GT. 20) .OR. (NADIR .LE. 2)) GO TO 40
      IF (ICNT .EQ. 0) GO TO 900
  
*         RANK AND PRINT VSNS WITH MOST RECOVERED ERRORS (N=2, F=6) 
      ICNTP = 0 
   60 NEXTPK = 0
      DO 70 K = 1,ICNT
      IF(SUM(K,2,2) .NE. PEAK) GO TO 65 
      PL(1) = SUM(K,2,2)
      PL(2) = SUM(K,2,1)
      CALL XOVCAP ('PRINT3',F,2)
      CALL UOVCAP ('PRINT3')
      SUM(K,2,1) = SUM(K,2,2) = 0 
      ICNTP = ICNTP + 1 
      IF (ICNTP .EQ. ICNT) GO TO 900
      GO TO 70
   65 IF(SUM(K,2,2) .GT. NEXTPK) NEXTPK = SUM(K,2,2)
   70 CONTINUE
      PEAK = NEXTPK 
      GO TO 60
  
*         PRINT SUMMARY OTHER THAN RECOVERED VSN ERRORS 
   90 DO 100 K = 1, MAXRAY
         IF (SUM(K,N,2) .EQ. 0) GO TO 900 
         PL(1) = SUM(K,N,2) 
      IF (F .NE. 15) GO TO 94 
      PL(2) = (SHIFT(SUM(K,N,1),-24)) .AND. O"7777" 
      PL(3) = (SHIFT(SUM(K,N,1),-12)) .AND. O"7777" 
      PL(4) = SUM(K,N,1) .AND. O"7777"
      IF (PL(4) .EQ. R"  ") THEN
         CALL XOVCAP ('PRINT3',F,3) 
         CALL UOVCAP ('PRINT3') 
      ENDIF 
      IF (PL(4) .NE. R"  ") THEN
         CALL XOVCAP ('PRINT3',F,4) 
         CALL UOVCAP ('PRINT3') 
      ENDIF 
      GO TO 100 
   94 CONTINUE
         PL(2) = SUM(K,N,1) 
      CALL XOVCAP ('PRINT3',F,2)
      CALL UOVCAP ('PRINT3')
  100 CONTINUE
      GO TO 900 
  
*     PRINT SUMMARY OF HYDRA ERROR LOG ENTRIES
  200 CALL LOVCAP ('PRINT3')
      IDSFLAG = 0 
      THRFLG = 3HOFF
      DO 260 J = 1, 3 
      DO 250 K = 1, MAXRAY
      IF (SUM(K,N,2) .EQ. 0) GO TO 260
      SCT = SHIFT (SUM(K,N,1),-40) .AND. 3
      STCODE = SHIFT (SUM(K,N,1),-32) .AND. Z"FF" 
      IF ((J .EQ. 1) .AND. (SCT .NE. 0)) GO TO 250
      IF ((J .EQ. 2) .AND. (SCT .NE. 1)) GO TO 250
      IF ((J .EQ. 3) .AND. (SCT .NE. 2)) GO TO 250
  
      IF (SCT .EQ. 0) THEN
         PL(1) = R"SI"
         DO 210 I = 1, 10 
            IF (STCODE .NE. SICODE(1,I)) GO TO 210
            PL(3) = SICODE(2,I) 
            PL(4) = SICODE(3,I) 
            PL(5) = SICODE(4,I) 
            GO TO 240 
  210    CONTINUE 
      ENDIF 
  
      IF (SCT .EQ. 1) THEN
         PL(1) = R"MI"
         DO 220 I = 1, 32 
            IF (STCODE .NE. MICODE(1,I)) GO TO 220
            PL(3) = MICODE(2,I) 
            PL(4) = MICODE(3,I) 
            PL(5) = MICODE(4,I) 
            GO TO 240 
  220    CONTINUE 
      ENDIF 
  
      IDSFLAG = 0 
  222 IF (SCT .EQ. 2) THEN
*     CHECK IF THRESHOLD FOR DS ERRORS SHOULD BE ACTIVATED
         IF ((SUM(K,N,2) .LT. 10) .AND. (FROG(8) .EQ. 3HOFF)) GO TO 245 
         PL(1) = R"DS"
            IF ((STCODE .EQ. Z"23") .OR. (STCODE .EQ. Z"25") .OR. 
     .          (STCODE .EQ. Z"26") .OR. (STCODE .EQ. Z"27")) THEN
               IDSFLAG = STCODE 
               STCODE = Z"21" 
               IF (IDSFLAG .EQ. Z"26") STCODE = Z"22" 
            ENDIF 
         DO 230 I = 1, 13 
            IF (STCODE .NE. IDSCODE(1,I)) GO TO 230 
            PL(3) = IDSCODE(2,I)
            PL(4) = IDSCODE(3,I)
            PL(5) = IDSCODE(4,I)
            GO TO 240 
  230    CONTINUE 
      ENDIF 
  
  240 PL(2) = STCODE
      PL(6) = SHIFT(SUM(K,N,1),-16) .AND. Z"FFFF" 
      PL(7) = SHIFT(SUM(K,N,1),- 8) .AND. Z"FF" 
      PL(8) = SUM(K,N,1) .AND. Z"FF"
      PL(9) = SUM(K,N,2)
      CALL PRINT3 (101, 9)
      IF (IDSFLAG .NE. 0) THEN
         IF (IDSFLAG .EQ. 3) THEN 
            STCODE = Z"24"
            IDSFLAG = 0 
            GO TO 222 
         ENDIF
         STCODE = Z"22" 
         IF ((IDSFLAG .EQ. Z"25").OR.(IDSFLAG .EQ. Z"26"))STCODE = Z"24"
         IF (IDSFLAG .EQ. Z"27") THEN 
            IDSFLAG = 3 
         ELSE 
            IDSFLAG = 0 
         ENDIF
         GO TO 222
      ENDIF 
      GO TO 250 
*     SET FLAG DENOTING THRESHOLD FOR DS ERRORS ENFORCED
  245 THRFLG = 2HON 
  250 CONTINUE
  260 CALL PLSEC (5)
      IF (THRFLG .EQ. 2HON) PRINT 262 
  262 FORMAT (' DELAY STATUS CODES BELOW THE THRESHOLD ARE NOT LISTED.',
     .      /,'   USE "ST" PARAMETER TO HAVE ALL DS CODES REPORTED.') 
  290 CALL UOVCAP ('PRINT3')
      GO TO 900 
  
*         PRINT MESSAGE "NO ERRORS LOGGED"
  800 HCF(5) = 10 
      CALL XOVCAP ('PRHEAD3',5,0) 
      CALL UOVCAP ('PRHEAD3') 
  
  900 RETURN
      END 
      OVCAP.
      SUBROUTINE SETEM3(F)
**
*     SET ERROR MESSAGE INFOR SEF RECORD, UPDATE OTHER THINGS 
* 
*CALL HPACOM1 
*CALL HPACOM2 
  
      IF ((FEOF(SEF) .EQ. 3HYES) .AND. (IEXIT3F .EQ. 1)) GO TO 150
  
*         COUNT CHANNEL ERRORS/MSGS WHEN RT CHANGES 
      IF ((IFLD(FDT) .EQ. R"CH") .AND. (PREC(FDT) .EQ. R"CH")) GO TO 100
*         COUNT ISD ERRORS/MSGS WHEN RT CHANGES 
      IF ((IFLD(FDT) .EQ. R"DD") .AND. (PREC(FDT) .EQ. R"DD")) GO TO 100
      IF ((IFLD(FDT) .EQ. R"DG") .AND. (PREC(FDT) .EQ. R"DG")) GO TO 100
      IF ((IFLD(FDT) .EQ. R"DG") .AND. (PREC(FDT) .EQ. R"DD")) GO TO 100
*         COUNT LCN ERRORS/MSGS WHEN RT CHANGES 
      IF ((IFLD(FDT) .EQ. R"NC") .AND. (PREC(FDT) .EQ. R"NC")) GO TO 100
*         COUNT THETA MEMORY ERRORS WHEN RECORD TYPE CHANGES
      IF ((IFLD(FRTY).EQ.O"105") .AND. (PREC(FRTY).EQ.O"104")) GO TO 100
  
      IF(TWIC.EQ.1.AND.F.EQ.1)GO TO 200 
      IF (TWIC.NE.1 .AND. F.EQ.0 .AND. IEXIT3F.EQ.0) GO TO 200
      IF((IFLD(FJOB) .EQ. R" CONTINU").AND.(FEOF(SEF) .NE. 3HYES))
     . GO TO 200
* 
  100 CONTINUE
      FLAGS(8)=NEC(3,MTY).AND.O"77" 
  150 CONTINUE
      CALL SEBUF3 
  200 RETURN
      END 
      SUBROUTINE SEBUF3 
* 
**       ROUTINE TO PROCESS THE COMPRESSED SEF DATA FOR 
*          THE SCRATCH FILE--(NEW, USED TEMPORARILY AS A SCRATCH
*          FILE ) FOR USE OF THE SUMMARY MODULES. 
* 
*        CALLED BY - SETEM3 
* 
*        ENTRY CONDITIONS 
*         1. NEWSEF RECORD READ AND PROCESSED INTO (IFLD),
*            OR EOF REACHED.
*        2. (TWIC) FLAG SET BY GNR3 TO INDICATE STATUS
*            OF COMPARISON WITH PREVIOUS RECORD.
* 
*         EXIT CONDITIONS 
*        ------------------ 
*         1. (SEBUF) BUFFER UPDATED TO REFLECT LATEST SEF RECORD. 
*         2. (SEBUF) DUMPED TO SCRATCH--NEW UPON CHANGE 
*            IN : MESSAGE TYPE, EST, UNIT, OR RECORD TYPE.
* 
*          DATA AREAS 
*          ********************** 
*          SEFUF(64)
*          * FOR EACH ERROR TYPE , THE FOLLOWING RECORD IS PRODUCED:  
*                 WORDS 1-20 = COPY OF IFLD (1-20)
*                         21 = INITIAL DATE (ENCODED) 
*                         22 = INITIAL TIME (ENCODED) 
*                         23 = LAST DATE (ENCODED)
*                         24 = LAST TIME (ENCODED)
*                         25 = ERROR TOTAL ( THIS ERROR TYPE )
*                         26 = USAGE TOTAL
*                    27 - 29 = ERROR MESSAGE TEXT 
*                         30 = MESSAGE TOTAL ( THIS ERROR TYPE )
* 
*CALL HPACOM1 
*CALL HPACOM2 
  
      IF (FEOF(SEF) .EQ. 3HYES) GO TO 8 
  
*        GET JULIAN DATE AND YEAR OF INPUT RECORD 
      JDI = IFLD(FJDAY) .OR. (SHIFT(IFLD(FC7),9)) 
      IF (TWIC .LT. 5) MINDATE = MAXDATE = JDI
  
*        SET EARLIEST AND LATEST DATES FOR MESSAGE DIST REPORT
      IF (JDI .LT. MINDATE) GO TO 52
      IF (JDI .GT. MAXDATE) GO TO 54
      GO TO 55
  
   52 MINDATE = JDI 
      FLAGS(18) = IYEAR 
      GO TO 55
  
   54 MAXDATE = JDI 
      FLAGS(19) = IYEAR 
  
*        STORE USE DATA IN COMMON AREA FOR USE OF DETAIL ROUTINE
   55 FLAGS(20) = FLAGS(21) = 0 
      IF (FLAGS(8) .NE. O"40") GO TO 70 
  
      IF ((RTY .GE. O"30") .AND. (RTY .LE. O"37")) GO TO 60 
      IF  ((RTY .EQ. O"47") .OR. (RTY .EQ. O"55")) GO TO 60 
      IF  (RTY .EQ. O"65") GO TO 62 
      IF  (RTY .EQ. O"66") GO TO 64 
  
*        STORE USAGE FOR UNIT RECORD
      IF (((RTY .EQ. O"20") .OR. (RTY .EQ. O"21")) .OR. 
     .    ((RTY .EQ. O"23") .OR. (RTY .EQ. O"24"))) FLAGS(20)=SEFREC(4) 
      GO TO 70
  
*        PROCESS MAG TAPE TYPE MESSAGE
*        BLOCKS READ
   60 FLAGS(20) = OR (IFLD(40),SHIFT(AND(IFLD(39),O"17"),12)) 
      IF ((RTY.EQ.O"30") .OR. (RTY.EQ.O"33") .OR. (RTY.EQ.O"55")) 
     .   FLAGS(20) = ((SHIFT(IFLD(42),12) .AND. O"17 0000") .OR.
     .                (SHIFT(IFLD(43), 4) .AND. O"00 7760") .OR.
     .                (SHIFT(IFLD(44),-4) .AND. O"00 0017"))
      IF (RTY.EQ.O"47") 
     .   FLAGS(20) = ((SHIFT(IFLD(25),12) .AND. O"00 7777") .OR.
     .                (SHIFT(IFLD(24),12) .AND. O"17 0000"))
*        BLOCKS WRITTEN 
      FLAGS(21) = OR (AND(SHIFT(IFLD(39),-4),O"377"), 
     .      SHIFT (AND(IFLD(38),O"377"),8)) 
      IF ((RTY.EQ.O"30") .OR. (RTY.EQ.O"33") .OR. (RTY.EQ.O"55")) 
     .   FLAGS(21) = ((SHIFT(IFLD(41), 8) .AND. O"17 7400") .OR.
     .                (SHIFT(IFLD(42),-4) .AND. O"00 0377"))
      IF (RTY.EQ.O"47") 
     .   FLAGS(21) = SHIFT(IFLD(24),-4) .AND. O"17 7777"
  
      GO TO 70
  
*        PROCESS USAGE FOR MSFS EQUIPMENT 
   62 IF (MTY .NE. O"60") GO TO 70
*        BLOCKS READ
      FLAGS(20) = IFLD(28)
*        BLOCKS WRITTEN 
      FLAGS(21) = IFLD(29)
      GO TO 70
  
*        PROCESS USAGE FOR MASSTOR 7990 
*        STRIPES READ 
   64 T2 = SHIFT(IFLD(29),8) .OR. IFLD(30)
      FLAGS(20) = SHIFT(IFLD(28),16) + T2 
*        STRIPES WRITTEN
      FLAGS(21) = SHIFT(IFLD(26),16) + IFLD(27) 
  
   70 IF (SEBUF(1) .EQ. 10HFIRSTENTRY ) GO TO 10
*        IF SAME ERROR CODE 
      IF ((PREC(FJDAY) .NE. IFLD(FJDAY)) .OR. (TWIC .NE. 6)) GO TO 8
      GO TO 100 
  
*        DUMP CURRENT SEBUF 
*     SCREEN OUT HYDRA INITIALIZATION RECORDS 
    8 IF ((SEBUF(2) .EQ. O"53") .AND. (SEBUF(8) .EQ. O"4005") .AND. 
     .    (SEBUF(25) .EQ. 0)) GO TO 80
  
*     SCREEN OUT HYDRA ERROR REGISTER IMAGES AND ERROR LOGS 
      IF ((SEBUF(2) .EQ. O"53") .AND. ((SEBUF(8) .EQ. O"4006") .OR. 
     .    (SEBUF(8) .EQ. O"4007"))) GO TO 80
  
      CALL RMWRITE (NEW, SEBUF, 64) 
   80 CONTINUE
  
      IF (FEOF(SEF) .EQ. 3HYES) GO TO 900 
  
*        PICK UP CURRENT SEF DATA 
   10 DO 20 K = 1,19
   20 SEBUF(K) = IFLD(K)
      SEBUF(20) = 0 
      SEBUF(25) = 0 
      SEBUF(30) = 0 
  
*        START TIME 
      SEBUF(22) = IFLD(20)
      LOC = MTY 
      SEBUF(27) = NEC(1,LOC)
      SEBUF(28) = NEC(2,LOC)
      SEBUF(29) = NEC(3,LOC)
  
      SEBUF(21) = IYEAR 
  
  100 SEBUF(23) = IYEAR 
      SEBUF(24) = IFLD(20)
  
*     SCREEN OUT 887, 9853, AND DAS RECOVERED 111 SYMPTOMS
*   THE SYMPTOM CODE FOR HYDRA,XMD3 AND DAS IS INCLUDED IN WORD 5 OF THE FIRST
*   SEF RECORD SINCE THE LOWER BITS OF WORD 3 (IFLD(19)) ARE OVERWRITTEN WHEN 
*   MMF PARAMETER IS SPECIFIED. 
      SYMPT = IFLD(19)
      IF (FLAGS(25) .NE. 0) SYMPT = SHIFT(IFLD(22),12) .AND. O"7777"
      IF (((IFLD(2) .EQ. O"53") .OR. (IFLD(2) .EQ. O"54")) .AND.
     .   (SYMPT .EQ. O"111") .AND. (IFLD(16) .EQ. 0)) GO TO 920 
*     SCREEN OUT HYDRA INITIALIZATION RECORDS 
      IF ((RTY .EQ. O"53") .AND. (MTY .EQ. O"4005") .AND. 
     .   (SYMPT .EQ. O"107")) GO TO 920 
  
*     DISCARD CARTRIDGE TAPE TYPE 61 ENTRIES
  
      IF ((RTY .EQ. O"47") .AND. (MTY .EQ. O"0061")) GO TO 920
  
      MSGCNT = 1
*     COUNT CORRECTED READ/WRITE OR LATE DATA MESSAGES IN EACH SEF
      IF ((MTY .GE. O"2450") .AND. (MTY .LE. O"2452")) THEN 
        MSGCNT = IFLD(24) 
        IF (RTY .EQ. O"47") MSGCNT = IFLD(21) 
      ENDIF 
*     COUNT EACH UNIQUE ESM/STORNET ERROR (UP TO 6 PER SEF) 
      IF ((MTY .EQ. O"345") .OR. (MTY .EQ. O"357")) GO TO 116 
      IF ((MTY .EQ. O"347") .OR. (MTY .EQ. O"361")) GO TO 118 
*        COUNT CORRECTED PROCESSOR HOURLY ERRORS
      IF (MTY .EQ. O"316") GO TO 111
*        COUNT EACH INDIVIDUAL SECDED UNIQUE ERROR ( UP TO 5 PER SEF) 
      IF (((MTY .EQ. O"314") .AND. (RTY .EQ. O"13")) .OR. 
     .   (RTY .EQ. O"105")) THEN
         MSGCNT = 0 
      DO 108 I = 21, 30, 3
         ICNT = IFLD(I) 
         IF (ICNT .EQ. 0) GO TO 120 
  108    MSGCNT = MSGCNT + ICNT 
         GO TO 120
      ENDIF 
      IF ((MTY .NE. O"306") .AND. (MTY.NE.O"307") 
     .         .AND. (MTY.NE.O"314")) GO TO 120 
      MSGCNT = 0
      DO 110 I=22,30,2
      IF (IFLD(I) .EQ. 0) GO TO 120 
  110 MSGCNT = MSGCNT + IFLD(I) 
      GO TO 120 
* 
*     COUNT PRE-DFT PROCESSOR HOURLY ERROR COUNTS 
  111 ICNT0 = SHIFT(IFLD(22),-4) .AND. O"7777"
      ICNT1A = SHIFT(IFLD(22),8) .AND. O"7400"
      ICNT1B = SHIFT(IFLD(23),-8) .AND. O"377"
      ICNT1 = ICNT1A .OR. ICNT1B
      MSGCNT = ICNT0 + ICNT1
      GO TO 120 
* 
  116 MSGCNT = 0
      DO 117 I=21,35,2
      IF ((SHIFT(IFLD(I),-11) .AND. 1) .EQ. 0) GO TO 120
  117 MSGCNT = MSGCNT + 1 
      GO TO 120 
* 
  118 MSGCNT = 0
      DO 119 I=36,41
      IF (IFLD(I) .EQ. 0) GO TO 120 
  119 MSGCNT = MSGCNT + IFLD(I) 
* 
  120 SEBUF(30) = SEBUF(30) + MSGCNT
      SEBUF(25) = SEBUF(25) + MSGCNT
* 
*     TOTAL COUNT FOR EACH CHANNEL
* 
      IF  (FLAGS(8) .EQ. O"40") GO TO 920 
      IF ((IFLD(FDT) .EQ. R"NC") .OR. (IFLD(FDT) .EQ. R"ES")) GO TO 920 
      IF((IFLD(FDT).EQ.R"NM").OR.(IFLD(FDT).EQ.R"NP").OR. 
     .   (IFLD(FDT).EQ.R"ND"))       GO TO 920
      IF ((FLAGS(8) .EQ. O"20") .OR. (FLAGS(8) .EQ. O"22")) GO TO 920 
      IF ((MTY .EQ. O"310") .OR.  (MTY .EQ. O"314")) GO TO 920
      IF (IFLD(FDT) .EQ. R"MR") GO TO 920 
      IF  (MTY .EQ. O"334") GO TO 920 
* 
      MFCH=SHIFT((SHIFT((MFID.AND.O"77"),6).OR.(IFLD(FCHAN).AND.O"77")),
     .48) 
      IF ((RTY .EQ. O"53") .OR. (RTY .EQ. O"54")) 
     .MFCH=SHIFT((SHIFT((MFID.AND.O"77"),6).OR.(IFLD(FC16).AND.O"77")), 
     .48) 
      DO 820 K = 1,63 
         IF (ITCHAN(K) .EQ. 0) GO TO 860
         IF ((ITCHAN(K) .AND. MASK(12)) .LT. MFCH) GO TO 820
         IF ((ITCHAN(K) .AND. MASK(12)) .EQ. MFCH) GO TO 870
         GO TO 830
  820 CONTINUE
  830 IF (LCH .LT. 63) GO TO 840
*        CHANNEL TABLE FULL 
      IF (TBFL(1) .GT. 4) GO TO 920 
      TBFL(1) = TBFL(1) + 1 
      PRINT 835 
  835 FORMAT (1X,' .. CHANTABLE (ITCHAN) FULL .. SEBUF3') 
      GO TO 920 
  
*        MAKE ROOM FOR NEW ENTRY
  840 DO 850 K1 = K,LCH 
  850 ITCHAN(LCH+K-K1 + 1) = ITCHAN(LCH+K-K1) 
      ITCHAN(K) = 0 
  860 LCH = LCH + 1 
  870 ICOUNT = (ITCHAN(K) .AND. .NOT. MASK(12)) + 1 
*     COUNT CORRECTED READ/WRITE OR LATE DATA MESSAGES IN EACH SEF
      IF ((MTY .GE. O"2450") .AND. (MTY .LE. O"2452")) THEN 
        IF (RTY .NE. O"47") ICOUNT = ICOUNT + IFLD(24) - 1
        IF (RTY .EQ. O"47") ICOUNT = ICOUNT + IFLD(21) - 1
      ENDIF 
      ITCHAN(K) = (MFCH.AND.MASK(12)).OR.(ICOUNT.AND..NOT.MASK(12)) 
      GO TO 920 
  900 SEBUF(1) = 9HCHANTABLE
      DO 910  K = 1,63
  910 SEBUF(K+1) = ITCHAN(K)
      CALL RMWRITE (NEW,SEBUF,64) 
  920 RETURN
      END 
      OVCAP.
      SUBROUTINE STOJN3 
* 
**        DESCRIPTION 
*         ----------- 
*         SUBROUTINE STOJN3 KEEPS ERROR STATISTICS BY JOB NAME AND
*         TIME VALUS FOR USE BY UNIT ANALYSIS REPORT ROUTINES.
* 
*         ENTRY CONDITIONS
*         ----------------
*         DATA ARES SHARED -
*         TIME(N,N), IFLD(64), FDS(50)                                   HPA402R
* 
*         EXIT CONDITIONS 
*         --------------- 
*         DATA AREAS SHARED - 
* 
*         DATA AREAS
*         ----------
*         FU5    - (1)/COMMON BLOCK SHARED WITH LOCATION FDS(5)/
*                  HOLDS MULTIPLE ERROR COUNT 
*         FT5    - (1)/COMMON BLOCK SHARED WITH LOCATION FDS(5)/
*                  HOLDS UNPACKED DATA FIELD OF REEL ID, RIGHT JUSTI- 
*                  FIED.
*         IFLD   - (64)/COMMON BLOCK/AREA TO HOLD THE UNPACKED DATA 
*                  FIELD OF CURRENT SEF INPUT ERROR RECORD. 
*         TIME   - (6,70)/COMMON BLOCK/ ARRAY TO HOLD COUNT OF
*                  ERROR(K) AT FOUR HOUR INTERVAL(J). TIME(J,K) 
*         TBLERR - (70)/COMMON BLOCK/ARRAY TO HOLD ERROR CODES
*                  THAT RELATE TO THE COUNTS HELD IN ARRAY TIME.
*                  TIME(J,K) - HOLDS COUNTS OF ERROR(K) FOR TIME(J) 
*                  TBLERR(J) - HOLDS ERROR CODE FOR ERROR(K)
*         TBLMF  - (70)/COMMON BLOCK/ARRAY TO HOLD MFID.
*         KET    - (1)/LOCAL TO SUBROUTINE/TEMPORARY USAGE. 
*         TP     - (1)/LOCAL TO SUBROUTINE/TEMPORARY USAGE. 
* 
*         MESSAGES
*         --------
*         UNKNOWN ERROR TYPE --- XXX  YYZZ
* 
*CALL,HPACOM1 
*CALL,HPACOM2 
*CALL,HPACOM3 
  
*          IGNORE UNQUALIFIED  ( SYSTEM ) MESSAGES
  
      IF (FLAGS(8) .EQ. O"40") RETURN 
      ERCNT=1 
*     IF PRINT ERROR
      IF((IFLD(FMTY) .EQ. O"306") .OR. (IFLD(FMTY) .EQ. O"307"))ERCNT=PL
     +(4) 
      IF (IFLD(FMTY).EQ.O"314") ERCNT = PL(4) 
*     COUNT PRE-DFT PROCESSOR HOURLY ERROR COUNTS 
      IF (MTY .EQ. O"316") THEN 
         ICNT0 = SHIFT(IFLD(22),-4) .AND. O"7777" 
         ICNT1A = SHIFT(IFLD(22),8) .AND. O"7400" 
         ICNT1B = SHIFT(IFLD(23),-8) .AND. O"377" 
         ICNT1 = ICNT1A .OR. ICNT1B 
         ERCNT = ICNT0 + ICNT1
      ENDIF 
*     COUNT CORRECTED READ/WRITE OR LATE DATA MESSAGES IN EACH SEF
      IF ((MTY .GE. O"2450") .AND. (MTY .LE. O"2452")) THEN 
        ERCNT = IFLD(24)
        IF (RTY .EQ. O"47") ERCNT = IFLD(21)
      ENDIF 
      IF ((MTY .EQ. O"347") .OR. (MTY .EQ. O"361")) ERCNT = PL(5) 
      IF (RTY .EQ. O"105") ERCNT = PL(2)
  
  100 KET = MTY                                                          HPA402R
  
*     DETERMINE IF IHD DRIVER ERROR IS RECOVERED/UNRECOVERED
      IF ((MTY .EQ. O"4005") .AND. (IFLD(19) .EQ. O"111")) THEN 
         IF (IFLD(FC13) .EQ. 0) KET = O"4011" 
         IF (IFLD(FC13) .NE. 0) KET = O"4012" 
      ENDIF 
      IF (RTY .EQ. O"63") KET = SHIFT(IFLD(21),24) .AND. O"7777"
      IF (KET .LE. 0) GO TO 300 
  
*         GET TIME OF ERROR - 1 OF 6 FOUR HOUR BLOCKS 
* 
  
      TP = IFLD(FTIME) / 4
  
*         BIAS +1 TO ELIMINATE ZERO 
  
      TP=TP+1 
  
  
*         FIND EMPTY SLOT OR SAME ERROR CODE
  
      DO 200 K=1,70 
         IF(TBLERR(K).EQ.0) GO TO 220 
      IF(TBLMF(K).NE.MFID) GO TO 200
         IF(TBLERR(K).EQ.KET) GO TO 230 
  200 CONTINUE
  
*         TABLES FULL 
  
      IF (TBFL(2) .GT. 4) RETURN
      TBFL(2) = TBFL(2) + 1 
      PRINT 121 
  121 FORMAT (1X,' .. MESSAGE TABLE FULL .. STOJN3 --') 
      RETURN
 220  CONTINUE
  
*         SET ERROR CODE
  
      TBLERR(K) = KET 
      TBLMF(K) = MFID 
 230  CONTINUE
  
*         INCREMENT ERROR COUNT 
      ITIME(TP,K) = ITIME(TP,K) + ERCNT 
      RETURN
  300 PRINT 301,KET,IFLD(FDT),IFLD(FEST)
  301 FORMAT(2X,'UNKNOWN ERROR TYPE --- ',O3,2X,R2,O2)
      RETURN
      END 
