*DECK,HPA34 
      OVCAP.
      SUBROUTINE HPA34
*            CONTROL PROGRAM FOR SECONDARY OVERALY ( 3,4) 
*CALL HPACOM1 
  
      IF (FROG(6) .NE. L"T") GO TO 10 
      CALL SECOND (CP)
      PRINT 9,CP
    9 FORMAT ( ' ENTER HPA34, SECOND = ',F10.3) 
   10 CONTINUE
* 
      IF (RTY .EQ. O"43") GO TO 600 
      IF (RTY .EQ. O"50") GO TO 610 
      IF ((RTY .EQ. O"44") .OR. (RTY .EQ. O"51")) GO TO 620 
      IF  (RTY .EQ. O"52") GO TO 620
      IF  (RTY .EQ. O"53") GO TO 630
      IF  (RTY .EQ. O"54") GO TO 640
      IF  (RTY .EQ. O"64") GO TO 650
  
*               ----- IGNORE OBSOLETE DISKS WITH SAME RECORD TYPES -----
      IF (IFLD(FDT) .EQ. R"DD") GO TO 500 
      IF (IFLD(FDT) .EQ. R"DG") GO TO 500 
      IF (IFLD(FDT) .EQ. R"DC") GO TO 620 
  
      CALL GNR3 
      CALL SETEM3(1)
      GO TO 1000
  
*     PROCESS ISD DISK ERRORS AND DIAGNOSTICS 
*     IDT = DD OR DG (834 OR 836) 
*     IRT = 40B, 41B, 42B AND 45B 
  500 CONTINUE
      CALL AN4DD3 
      GO TO 1000
  
*     PROCESS 841 DISK ERRORS 
*     IDT = MD - NOS
*     IRT = 43B 
  600 CONTINUE
      CALL AN4AM3 
      GO TO 1000
  
*     PROCESS 819 HCD DISK ERRORS 
*     IDT = DV OR DW
*     IRT = 50B 
  610 CALL AN4AH3 
      GO TO 1000
  
*     PROCESS 844, 885/FMD, CDSS2     FSC           DEMA     895
*     IDT =   DI,DJ,DK,DL,DM,DQ,DR    DX,DY,DZ,DA   DB       DC 
*     IRT =   44B                     51B           52B      46B
  620 CALL AN4AY3 
      GO TO 1000
  
*     PROCESS HYDRA ERRORS
*     IDT = DF OR DH
*     IRT = 53B 
  630 CALL AN4IHD 
      GO TO 1000
  
*     PROCESS 9853 AND DAS ERRORS 
*     IDT = DN, EA, EB, EC, ED, EE, EF
*     IRT = 54B 
  640 CALL AN4XMD3
      GO TO 1000
  
*     PROCESS OPTICAL DISK ERRORS 
*     IDT = OD
*     IRT = 64B 
  650 CALL AN4OD3 
  
 1000 CONTINUE
      END 
      SUBROUTINE AN4AH3 
* 
*** 
*         DESCRIPTION 
*         ----------- 
*         SUBROUTINE AN4AH3 PROCESSES 819 DISK ERROR MESSAGES AND 
*         GENERATES 819 HCD UNIT ANALYSIS REPORT. 
*         ALSO CALLS ROUTINE DL4AH3 TO GENERATE 819 HCD DETAIL
*         REPORT. 
* 
*         ENTRY CONDITION 
*         --------------- 
*         INPUT SEF ERROR FILE IS POSITIONED AT THE FIRST INPUT 
*         RECORD FOR 819 HCD DEVICE.
* 
*         EXIT CONDITION
*         --------------
*         819 HCD ERROR MESSAGE ENTRIES HAVE BEEN EXHAUSTED IN SEF
*         INPUT FILE, AND UNIT ANALYSIS AND DETAIL REPORT HAVE BEEN 
*         PRINTED.
* 
*         CALLED BY 
*         --------- 
*           PROGRAM HPA34 
* 
*         CALLS 
*         ----- 
*         DL4AH3 - GENERATE 819 HCD DETAIL REPORT.
* 
* 
*         ****  819 HCD FIELDS  ****
*         FD1  = FLAGS GROUP 1
*         FD2  = READ WRITE/PHYSICAL UNIT NO. 
*         FD3  = NO. OF SECTORS TRANSFERED
*         FD4  = CYLINDER AND STARTING HEAD/SECTOR
*         FD5  = FLAGS GROUP 2
*         FD6  = SUBSYSTEM STATUS 
*         FD7  = CONTROLLER STATUS
*         FD8  = RETRY COUNT
*         FD9  = EXPECTED HEAD/SECTOR 
*         FD10 = CYLINDER STATUS IF BAD,
*                HEAD STATUS IF BAD,
*                CYLINDER ADDRESS RECORDED ON SECTOR IF BAD,
*                UNIT FAULT STATUS IF NOT READY,
*                ERROR CODE 1.
*         FD11 = HEAD/SECTOR RECORDED ON SECTOR IF BAD, 
*                INTERLOCK STATUS IF NOT READY, 
*                ERROR CODE 2.
*         FD12 = ERROR CODE 3.
*         FD13 = ERROR CODE 1.
*         FD14 = ERROR CODE 2.
*         FD15 = ERROR CODE 3.
*         FD16 = ERROR CODE 1.
*         FD17 = ERROR CODE 2.
*         FD18 = ERROR CODE 3.
*         FD19 = ERROR CODE 1.
*         FD20 = ERROR CODE 2.
*         FD21 = ERROR CODE 3.
*         FD22 = PREVIOUS REQUEST - FUNCTION/CYLINDER/HEAD/SECTOR 
*         FD23 = ACTIVITY COUNT.
* 
*CALL,HPACOM1 
*CALL,HPACOM2 
*CALL,HPACOM3 
* 
      DIMENSION     PBF(400,5), PSBDWN(5), TQTY(4)
      EQUIVALENCE  (PBF(1,1),  STOR(1,1)),
     .             (PSBDWN(1), STOR(29,30)),
     .             (TQTY(1),   STOR(34,30)) 
* 
   50 UNIT = IFLD(FUN)
      OVFLOW = 0
      TQTY(1) = TQTY(2) = TQTY(3) = TQTY(4) = 0 
      IHDR = 9
      CALL INISET3
  
*        SET DETAIL SUBHEADERS
      MPR(1,1) = O"31"
      MPR(1,2) = 3
      MPR(2,1) = O"32"
      MPR(2,2) = 33 
      MPR(3,1) = O"34"
      MPR(3,2) = 34 
      MPR(4,1) = O"51"
      MPR(4,2) = 3
      MPR(5,1) = O"52"
      MPR(5,2) = 34 
      MPR(6,1) = O"100" 
      MPR(6,2) = 3
      MPR(7,1) = O"101" 
      MPR(7,2) = 4
      MPR(8,1) = O"153" 
      MPR(8,2) = 5
      MPR(9,1) = O"154" 
      MPR(9,2) = 6
  
* 
      TYPID = 10H819 DISK 
* 
  100 DO 110 K = 1,23 
  110 FDS(K) = IFLD(20 + K) 
  
      IF (RCFA .EQ. 3HOFF) GO TO 300
*     ERROR STATISTICS BY JOB NAME AND TIME.
      CALL STOJN3 
* 
* 
*     TABULATE 819 FAILING POSITION 
*     CHECK IF RMS ADDRESS ERROR. 
      IF(IFLD(FMTY).NE.O"100")     GOTO 300 
      IF(AND(FDS(5),O"16").EQ.0)  GOTO 300
* 
*     BREAK-DOWN THE EXPECTED ADDRESS 
      PSBDWN(2)=AND(SHIFT(FDS(4),-12),O"1777")
      PSBDWN(3)=AND(SHIFT(FDS(9),-6),O"77") 
      PSBDWN(4)=AND(FDS(9),O"77") 
* 
*     BUILD STATISTICS TABLE OF THE FAILING POSITION. 
      IF(OVFLOW.EQ.1)  GOTO 300 
      DO 230 K=1,3,1
      KK=SHIFT(PSBDWN(K+1),30)
      TQTY(K)=TQTY(K)+1 
      DO 210 J=1,400,1
      IF(PBF(J,K).EQ.0)  GOTO 220 
      IF(AND(PBF(J,K),MASK(30)).EQ.KK)  GOTO 230
  210 CONTINUE
*     NO MATCH AND THE TABLE IS FULL
      GOTO 290
* 
*     MAKE ENTRY TO THE TABLE 
  220 PBF(J,K)=KK 
  230 PBF(J,K)=PBF(J,K)+1 
* 
*     CHECK IF THIS IS THE UN-RECOVERED RMS ERROR.
      IF (IFLD(FEST+1) .EQ. 0) GO TO 300
      KK=SHIFT(OR(SHIFT(OR(SHIFT(PSBDWN(2),15), 
     .PSBDWN(3)),15),PSBDWN(4)),15) 
      KK=OR(KK,IFLD(FMTY))
* 
      DO 240 J=1,400,1
      IF(PBF(J,4).EQ.0)  GOTO 250 
      IF(PBF(J,4).EQ.KK) GOTO 255 
  240 CONTINUE
*     NO MATCH AND THE TABLE IS FULL. 
      GOTO 290
* 
  250 PBF(J,4)=KK 
      TQTY(4)=TQTY(4)+1 
  255 PBF(J,5)=PBF(J,5)+1 
      GOTO 300
* 
* 
*     SET CONDITION OF NO MATCH AND TABLE IS FULL.
  290 PRINT 291 
  291 FORMAT(/,' .... POSITION TABLE IS FULL .. AN4AH3',/)
      OVFLOW=1
* 
* 
* 
*     CALL TO PROCESS 819 DETAIL REPORT.
  300 IF (RCFD .EQ. 2HON ) CALL DL4AH3
* 
*     GET NEXT RECORD.
      CALL GNR3 
      CALL SETEM3(1)
      IF(TWIC.LT.3)  GOTO 500 
      IF(UNIT.NE.IFLD(FUN))  GOTO 500 
      GOTO 100
* 
*     819 ERROR ENTRIES HAVE EXHAUSTED. 
*     1) CHECK IF REPEATED MESSAGE NEEDS TO BE PRINTED, 
*     2) UPDATE HISTORY DATA AND GENERATE UNIT ANALYSIS REPORT. 
  500 IF (RCFA .EQ. 3HOFF) GO TO 900
* 
* 
*     GENERATE UNIT ANALYSIS REPORT.
      HDATA(2) = 1H 
      UNIT = IFLD(FUN)
      CALL XOVCAP ('ERDIST3',0,0) 
      CALL UOVCAP ('ERDIST3') 
  
* 
*     GENERATE POSITION ANALYSIS REPORT.
      CALL G4POSA3(TQTY,PREC(FRTY)) 
* 
* 
*     IF RECORD TYPE THE SAME 
  900 IF (TWIC .GE. 2) GO TO 50 
  
      RETURN
      END 
      SUBROUTINE AN4AM3 
* 
**        DESCRIPTION 
*         ----------- 
*         SUBROUTINE *AN4AM3* CALLS VARIOUS SUBROUTINES TO PROCESS
*         SEF RECORDS FOR 841(RTY=43B) DISK ERROR MESSAGES, GENERATING
*         DETAIL AND ANALYSIS REPORTS.
* 
*         ENTRY CONDITIONS
*         ----------------
*         ENTERED WHEN THE SEF ERROR FILE IS POSITIONED AT THE
*         FIRST INPUT RECORD FOR RMS DEVICES. 
* 
*         EXIT CONDITIONS 
*         --------------- 
*         EXIT WHEN THE SEF ERROR INPUT RECORD FOR RMS DEVICES
*         IS EXHAUSTED. 
* 
*         DATA AREAS AND FILES
*         --------------------
*         PBF    - (200,5)/COMMON BLOCK SHARED WITH ARRAY STOR/ 
*                  AREA OF TABLES TO ACCUMULAHE THE BROKEN-DOWN 
*                  POSITION OF RMS DEVICE.
*                  PBF(N,1)   TABLE OF 1ST ELEMENT OF POSITION
*                  PBF(N,2)   TABLE OF 2ND ELEMENT OF POSITION
*                  PBF(N,3)   TABLE OF 3RD ELEMENT OF POSITION
*                  PBF(N,4)   TABLE OF UNRECOVEDED RMS ERRORS 
*                  PBF(N,5)   TABLE OF ERROR CODES FOR THE CORR-
*                             ESPONDING ENTRIES IN PBF(N,4).
*         TQTY   - (4)/LOCAL TO SUBROUTINE/ARRAY TO HOLD THE NUMBER 
*                  OF ENTRIES MADE TO EACH TABLE IN PBF(200,5). 
*         IFLD   - (64)/COMMON BLOCK/AREA TO HOLD THE UNPACKED
*                  DATA OF THE CURRENT SEF INPUT RECORD.
*         PSBDWN - (5)/LOCAL TO SUBROUTINE/WORKING STORAGE AREA 
*                  FOR POSITION BREAK-DOWN AND THE FILE MANIP-
*                  LATIONS OF TAPE9.
*         PREC   - (64)/COMMON BLOCK/AREA TO HOLD THE UNPACKED
*                  DATA FIELDS OF THE PRECEDING SEF INPUT RECORD. 
*         RCFD   - (1)/COMMON BLOCK/REPORT CONTROL FLAG FOR THE 
*                  DETAIL LICT REPORT.
*         TWIC   - (1)/COMMON BLOCK/FLAG TO IDENTIFY THE
*                  DUPLICATE FIELDS CONDITION OF SEF INPUT
*                  RECORD.
*                   STOR(2930) TO STOR(68,32).
*                   THRSTAT(1,J) - PACK SERIAL NUMBER,
*                   THRSTAT(2,J) - HOW OFTEN STATUS BIT SET.
* 
*         CALLED BY 
*         --------- 
*         PROGRAM HPA3
* 
*         CALLS 
*         ----- 
*         HEADER  - INITIALIZE EACH PAGE OF VARIOUS REPORTS.
*         INISET3  - DO INITIAL PREPARATIONS FOR THE UNIT 
*                   ANALYSIS REPORT.
*         STOJN3 - SAVE JOB NAME AND TIME VALUES FOR THE
*                   UNIT ANALYSIS REPORT. 
*         DL4AM3 - COLLECTS ALL DATA FOR DETAIL LIST REPORT 
*                   FOR RMS DEVICES AND SAVE THEM IN TAPE8. 
*         PRINT   - PRINT A LINE OF DATA ON VARIOUS REPORT. 
*         ERDIST3   - REPORT UNIT ERROR ERDIST3IBUTION BY JOB NAME, 
*                   TIME AND ERROR TYPES. 
*         G4POSB3  - ROUTINE TO BREAK DOWN THE POSITION OF
*                   THE RMS DEVICES.
* 
*CALL,HPACOM1 
*CALL,HPACOM3 
*CALL,HPACOM2 
      DIMENSION PBF(400,5), PSBDWN(5), TQTY(4)
      EQUIVALENCE (PBF(1,1), STOR(1,1)) 
      EQUIVALENCE (PSBDWN(1), STOR(29,30))
      EQUIVALENCE (TQTY(1),   STOR(34,30))
* 
   50 UNIT = IFLD(FUN)
      OVFLOW = 0
      CALL INISET3
  
      IHDR = 9
      MPR(1,1) = O"777" 
      MPR(1,2) = 22 
      TYPID=10H   DISK
      TQTY(1)=TQTY(2)=TQTY(3)=TQTY(4)=0 
  100 CALL G4POSB3 (IFLD(FRTY),IFLD(29))
* 
      IF (RCFD.EQ.2HON) CALL DL4AM3 
      IF (RCFA .EQ. 3HOFF) GO TO 300
  
      CALL STOJN3 
  
  
*         BREAK-DOWN THE POSITION OF THE CURRENT RECORD.
  
      PSBDWN(2) = IFLD(29)
      PSBDWN(3) = IFLD(30)
      PSBDWN(4) = IFLD(31)
  
*         BUILD THE STATISTICS OF THE POSITION IN THE TABLE.
  
      IF(OVFLOW.EQ.1) GO TO 300 
      DO 215 K = 1,3,1
      KK=SHIFT(PSBDWN(K+1),30)
      TQTY(K)=TQTY(K)+1 
      DO 200 J = 1,400
      IF(PBF(J,K).EQ.0)  GO TO 210
      IF(AND(PBF(J,K),MASK(30)).EQ.KK) GO TO 215
 200  CONTINUE
*         NO MATCH AND THE TABLE IS FULL. 
      GO TO 250 
  
*         MAKE ENTRY TO THE TABLE.
  
 210  PBF(J,K)=KK 
 215  PBF(J,K)=PBF(J,K)+1 
  
*         CHECK IF THIS IS THE UN-RECOVERED RMS ERROR.
  
      IF (IFLD(FEST+1) .EQ. 0) GO TO 300
      KK=SHIFT(OR(SHIFT(OR(SHIFT(PSBDWN(2),15), 
     .PSBDWN(3)),15),PSBDWN(4)),15) 
      KK=OR(KK, IFLD(FMTY)) 
  
      DO 230 J = 1,400
      IF(PBF(J,4).EQ.0) GO TO 240 
      IF(PBF(J,4).EQ.KK)  GO TO 245 
 230  CONTINUE
*         NO MATCH AND THE TABLE IS FULL. 
      GO TO 250 
  
 240  PBF(J,4)=KK 
      TQTY(4) = TQTY(4) + 1 
 245  PBF(J,5)=PBF(J,5)+1 
      GO TO 300 
  
  250 PRINT 255 
  255 FORMAT (/,' .... POSITION TABLE FULL .. AN4AM3',/)
      OVFLOW = 1
  
  300 CALL GNR3 
      CALL SETEM3(1)
  
*         IF EQUIP CHANGE 
  
      IF(TWIC.LT.3) GO TO 800 
      IF(UNIT .NE. IFLD(FUN)) GO TO 800 
      GO TO 100 
  
*    *************************************************
  
  800 IF (RCFA .EQ. 3HOFF) GO TO 900
  
      HDATA(2) = 1H 
      UNIT = IFLD(FUN)
      CALL XOVCAP ('ERDIST3',0,0) 
      CALL UOVCAP ('ERDIST3') 
  
      CALL G4POSA3 (TQTY,PREC(FRTY))
  
  
  900 IF (TWIC .GE. 2) GO TO 50 
  
      RETURN
      END 
      SUBROUTINE AN4AY3 
* 
*        DESCRIPTION
*        -----------
* 
*        SUBROUTINE AN4AY3 CALLS VARIOUS SUBROUTINES TO PROCESS 
*        SEF RECORDS FOR 844(RTY=44B), 885/FMD(RTY=44B), FSC(RTY=51B),
*        SEF RECORDS FOR 844(RTY=44B), 885/FMD(RTY=44B), FSC(RTY=51B),
*        DEMA(RTY=52B),895(RTY=46B) AND CDSS2(RTY=44B) ERROR MESSAGES,
*        GENERATING DETAIL AND ANALYSIS REPORTS FOR EACH DEVICE.
* 
*        ENTRY CONDITIONS 
*        ----- ---------- 
*        ENTERED WHEN THE SEF ERROR FILE IS POSITIONED AT THE 
*        FIRST INPUT RECORD FOR 844, 885/FMD, FSC, DEMA, 895 OR 
*        CDSS2 DEVICES. 
* 
*        DATA AREAS SHARED- 
*        IFLD(64), NFLD(64) 
* 
*        EXIT CONDITIONS
*        ---- ----------
*        EXIT WHEN 844, 885/FMD, FSC, DEMA, 895, OR CDSS2 RECORDS 
*        ARE EXHAUSTED. 
* 
*        CALLED BY
*        ------ --
*        PROGRAM HPA3 
* 
*CALL,HPACOM1 
*CALL,HPACOM2 
*CALL,HPACOM3 
      DIMENSION PBF(400,5), PSBDWN(5),  TQTY(4) 
      DIMENSION   THRSTAT(2,88) 
      EQUIVALENCE (PBF(1,1), STOR(1,1)) 
      EQUIVALENCE (STOR(29,30), THRSTAT(1,1)) 
                                                                         R2DFMD 
*     LOCAL ARRAY USED TO STORE STD DISTRIBUTION DATA                    R2DFMD 
      DIMENSION STDDIST(100,2)                                           HPA401J
                                                                         R2DFMD 
*      ***********************************************
* 
   50 CONTINUE
      CALL INISET3
      IDSFLG(1)=IDSFLG(2)=0 
  
      UNIT = IFLD(FUN)
      OVFLOW = 0
      TQTY(1)=TQTY(2)=TQTY(3)=TQTY(4)=0 
* 
      IHDR = 9
      IAGE=1                                                             HPA401J
      SQSUM=0                                                            HPA401J
      MARRAY=100                                                         HPA401J
      TOTARRY = TOTQTY = 0                                               R2DFMD 
      ICORUNS = IDORUNS = ISEEKS = 0
                                                                         R2DFMD 
*     SET UP SUBHEADERS; ACCOMODATE ERRORS CONTAINING FUNCTION CODE AND 
*     NO DETAIL STATUS: 50B - FUNCTION TIMEOUT; 51B - CONTROLLER STOP;
*                       63B - RAM PARITY ERROR. 
*     RMS RAM ERRORS/MSGS: 32B - MEDIA DEFECT/ADDRESS FLAWED; 
*                          33B - DATA VERIFICATION ERROR; 
*                          34B - EQUIP DOWNED BY SYSTEM;
*                          52B - EQUIP TURNED OFF BY SYSTEM.
  
      MPR(1,1) = O"31"
      MPR(1,2) = 23 
      IF (FROG(18) .EQ. 3HYES) MPR(1,2) = 24
      IF (RTY .EQ. O"51") MPR(1,2) = MPR(1,2) + 2 
      IF (RTY .EQ. O"52") MPR(1,2) = MPR(1,2) + 4 
      IF (RTY .EQ. O"46") MPR(1,2) = MPR(1,2) + 6 
      MPR(2,1) = O"32"
      MPR(2,2) = 31 
      MPR(3,1) = O"34"
      MPR(3,2) = 32 
      MPR(4,1) = O"47"
      MPR(4,2) = MPR(1,2) 
      MPR(5,1) = O"51"
      MPR(5,2) = 13 
      IF  (RTY .EQ. O"46") MPR(5,2) = 14
      IF ((RTY .EQ. O"46") .AND. (FROG(18) .EQ. 3HYES)) MPR(5,2) = 15 
      MPR(6,1) = O"52"
      MPR(6,2) = 32 
      MPR(7,1) = O"62"
      MPR(7,2) = MPR(1,2) 
      MPR(8,1) = O"63"
      MPR(8,2) = MPR(5,2) 
      MPR(9,1) = O"77"
      MPR(9,2) = MPR(1,2) 
      MPR(10,1) = O"100"
      MPR(10,2) = 35
      MPR(11,1) = O"101"
      MPR(11,2) = MPR(1,2)
  
      TYPID = 10H  844/FMD
      IF (RTY .EQ. O"51") TYPID = 10H  FSC DISK 
      IF (RTY.EQ.O"52")  TYPID = 10H  DEMA
      IF (TYPDT .EQ. R"DR") TYPID = 10H   CDSS2 
  
      ICON = AND (IFLD(34),O"2000") 
      HDATA(4)=5H7X54 
      IF((ICON.EQ.O"2000").OR.(TYPDT.EQ.R"AJ").OR.(TYPDT.EQ.R"DM").OR.
     .    (TYPDT.EQ.R"DQ").OR.(TYPDT.EQ.R"DR")) HDATA(4) = 5H7155 
      IF (TYPDT .EQ. R"DX") HDATA(4) = 5H33301
      IF (TYPDT .EQ. R"DY") HDATA(4) = 5H33302
      IF (TYPDT .EQ. R"DZ") HDATA(4) = 5H3350 
      IF (TYPDT .EQ. R"DA") HDATA(4) = 5H33502
      IF (TYPDT .EQ. R"DB") ENCODE (10,102,HDATA(4)) NFLD(37) 
      IF (TYPDT .EQ. R"DC") HDATA(4) = 5H - - 
  102 FORMAT(O4,6X) 
  
  100 IF (MTY.EQ.O"47" .OR. MTY.EQ.O"115" .OR. MTY.EQ.O"151") GO TO 400 
  
*     SUPPRESS 895 FORMAT 6 (OVERRUN) MESSAGES FROM DETAIL REPORT 
*     ACCUMULATE OVERRUN DATA FOR SUMMARIZTION AT END OF REPORT 
      IFMT6 = 3HOFF 
      IF (RTY .NE. O"46") GO TO 104 
      IF ((SHIFT(IFLD(38),-4) .AND. O"17") .NE. 6) GO TO 104
      ICORUNS = ICORUNS + NFLD(35)
      IDORUNS = IDORUNS + NFLD(36)
      IADDSK= (SHIFT(NFLD(32),8) .AND. O"17 7400") .OR. NFLD(33)
      ISEEKS = ISEEKS + IADDSK
      IFMT6 = 2HON
      GO TO 105 
  
  104 CONTINUE
      IF (RCFD .EQ. 2HON) CALL DL4AY3 
  
  105 CONTINUE
      IF (RCFA .EQ. 3HOFF) GO TO 400
  
      CALL STOJN3 
  
*     ELIMINATE 895 FORMAT 6 STATISTICS FROM POSITION ANALYSIS SUMMARY
      IF (IFMT6 .EQ. 2HON) GO TO 400
*     ELIMINATE FSC AND FUNCTION ERRORS FROM POSITION ANALYSIS SUMMARY
      IF  (RTY .EQ. O"51") GO TO 400
      IF ((MTY .EQ. O"50") .OR. (MTY .EQ. O"51") .OR. (MTY .EQ. O"63")) 
     .     GO TO 400
*     ELIMINATE RMS/RAM ERRORS/MESSAGES 
      IF (((MTY .GE. O"32") .AND. (MTY .LE. O"34")) .OR.
     .     (MTY .EQ. O"52")) GO TO 400
  
*     ******************************************************************
  
      IF(TOTARRY.EQ.0)GO TO 140                                          HPA401J
      DO 110 I=1,TOTARRY                                                 HPA401J
      IF(AND(XOR(STDDIST(I,2),SHIFT(IFLD(29),30)),MASK(30)).NE.0)GOTO110
      IF(AND(XOR(STDDIST(I,1),SHIFT(IFLD(27),18)),MASK(42)).EQ.0)GOTO150
  110 CONTINUE                                                           HPA401J
      IF(TOTARRY.LT.MARRAY)GO TO 140                                     HPA401J
      CALL DPSRT34(STDDIST,TOTARRY,(.NOT.MASK(42)),0,MARRAY)
      J=.8*FLOAT(MARRAY)                                                 HPA401J
      MIN=(.NOT.MASK(30)) 
      DO 120 I=1,J                                                       HPA401J
      IF(AND(STDDIST(I,2),(.NOT.MASK(45))).LT.MIN)
     .      MIN=AND(STDDIST(I,2),(.NOT.MASK(45))) 
  120 CONTINUE                                                           HPA401J
      TOTARRY=0                                                          HPA401J
      DO 130 I=1,MARRAY                                                  HPA401J
      IF(AND(STDDIST(I,2),(.NOT.MASK(45))).GT.MIN)GO TO 135 
      SQSUM=SQSUM+(AND(STDDIST(I,2),(.NOT.MASK(45))))**2
      GO TO 130                                                          HPA401J
  135 CONTINUE                                                           HPA401J
      TOTARRY=TOTARRY+1                                                  HPA401J
      STDDIST(TOTARRY,1)=STDDIST(I,1)                                    HPA401J
      STDDIST(TOTARRY,2)=STDDIST(I,2)                                    HPA401J
  130 CONTINUE                                                           HPA401J
  140 TOTARRY=TOTARRY+1                                                  HPA401J
      I=TOTARRY                                                          HPA401J
      STDDIST(I,1) = SHIFT (IFLD(27),18)
      STDDIST(I,2) = OR (AND (SHIFT (IFLD(29),30), MASK(30)), 
     .            SHIFT (AND (SHIFT (MASK(6),48),IFLD(27)),42)) 
  150 STDDIST(I,1)=AND(STDDIST(I,1),MASK(42)).OR.IAGE                    HPA401J
      STDDIST(I,2)=STDDIST(I,2)+1                                        HPA401J
      TOTQTY=TOTQTY+1                                                    HPA401J
      IAGE=IAGE+1                                                        HPA401J
                                                                         R2DFMD 
*     IF THE ADDRESS AND PACK/ID MATCH JUST ADD 1 TO QUANTITY            R2DFMD 
                                                                         R2DFMD 
                                                                         R2DFMD 
*     SAVE THE ADDRESS IN THE LEFT HALF OF STDDIST(J,1) AND THE NUMBER   R2DFMD 
*     OF ERRORS FOR THAT ADDRESS IN THE RIGHT HALF.                      R2DFMD 
*     THEN SAVE THE PACK/ID IN STDDIST(J,2).                             R2DFMD 
*     SAVE THE QUANTITY OF DIFFERENT ADDRESSES IN TOTARRY                R2DFMD 
*     AND THE TOTAL NUMBER OF ERRORS IN TOTQTY.                          R2DFMD 
*         BREAK-DOWN THE POSITION OF THE CURRENT RECORD 
      PSBDWN(2) = IFLD(29)
      CALL G4POSB3 (IFLD(FRTY),PSBDWN(2)) 
*         BUILD THE STATISTICS OF THE POSITION IN THE TABLE 
      IF(OVFLOW.EQ.1) GO TO 300 
      IF (RTY .NE. O"46") GO TO 180 
      IF (IFLD(FEST + 1) .NE. 0) GO TO 225
  
*        PROCESS 7165/895 RECOVERED ERRORS SEPARATELY 
      KK = SHIFT(OR(SHIFT(OR(SHIFT(PSBDWN(2),15), 
     .PSBDWN(3)),15),PSBDWN(4)),15) 
      KK = OR(KK,IFLD(FMTY))
      DO 160 J = 1,400
      IF (PBF(J,1) .EQ. 0) GO TO 170
      IF (PBF(J,1) .EQ. KK) GO TO 175 
  160 CONTINUE
*         NO MATCH AND THE TABLE IS FULL. 
      GO TO 250 
  170 PBF(J,1) = KK 
      TQTY(1) = TQTY(1) + 1 
  175 PBF(J,2) = PBF(J,2) + 1 
      GO TO 300 
  
  180 CONTINUE
      DO 215 K=1,3,1
      KK=SHIFT(PSBDWN(K+1),30)
      TQTY(K) = TQTY(K)+1 
      DO 200 J = 1,400
      IF(PBF(J,K).EQ.0) GO TO 210 
      IF(AND(PBF(J,K),MASK(30)).EQ.KK) GO TO 215
  200 CONTINUE
*         NO MATCH AND THE TABLE IS FULL
      GO TO 250 
* 
*         MAKE ENTRY TO TABLE 
  210 PBF(J,K) = KK 
  215 PBF(J,K) = PBF(J,K)+1 
  
*         CHECK IF THIS IS AN UNRECOVERED RMS ERROR.
  225 CONTINUE
      IF (IFLD(FEST+1) .EQ. 0) GO TO 300
      KK=SHIFT(OR(SHIFT(OR(SHIFT(PSBDWN(2),15), 
     .PSBDWN(3)),15),PSBDWN(4)),15) 
      KK=OR(KK,IFLD(FMTY))
      DO 230 J=1,400
      IF(PBF(J,4).EQ.0) GO TO 240 
      IF(PBF(J,4).EQ.KK) GO TO 245
  230 CONTINUE
*         NO MATCH AND THE TABLE IS FULL. 
      GO TO 250 
  240 PBF(J,4) = KK 
      TQTY(4) = TQTY(4)+1 
  245 PBF(J,5) =PBF(J,5)+1
      GO TO 300 
  
  250 PRINT 255 
  255 FORMAT (/,' .... POSITION TABLE FULL .. AN4AY3',/)
      OVFLOW = 1
* 
* 
*         CHECK 844 READ THRESHOLD STATUS BIT 
  300 IF (AND (IFLD(33),O"2") .EQ. 0) GO TO 400 
      DO 320 J=1,88,1 
      IF(THRSTAT(1,J).EQ.0) GO TO 310 
      IF (THRSTAT(1,J) .NE. IFLD(27)) GO TO 320 
  310 THRSTAT(1,J) = IFLD(27) 
      THRSTAT(2,J) = THRSTAT(2,J)+1 
      GO TO 400 
  320 CONTINUE
* 
*     ******************************************************************
  
  400 CALL GNR3 
      CALL SETEM3(1)
* 
*         IF EQUIPMENT CHANGE EXIT
* 
      IF(TWIC.LT.3) GO TO 450 
*     BYPASS UNIT CHECK FOR ADDRESS ERRORS WHICH CONTAIN NO CH/UN/D.S.
      IF (MTY .EQ. O"100") GO TO 100
      IF ((MTY .EQ. O"50") .OR. (MTY .EQ. O"51") .OR. 
     .    (MTY .EQ. O"63") .OR. (MTY .EQ. O"100")) GO TO 100
      IF(UNIT.NE.IFLD(FUN)) GO TO 450 
      GO TO 100 
  
*     ******************************************************************
  
*      TEST IF WARNING MESSAGE NEEDS TO PRINTED IF DETAIL STATUS
*      AND UNIT NO.,CYLINDER,TRACK,OR SECTOR DO NOT AGREE.
  450  IF(IDSFLG(2).NE.0) CALL PRINT34(200,0) 
       IDSFLG(1)=IDSFLG(2)=0
* 
*     PROVIDE THE 895 DETAIL RPT SUMMARY OF OVERRUN DATA - FORMAT 6 
      IF ((PREC(FRTY) .NE. O"46") .OR. (RCFD .EQ. 3HOFF)) GO TO 460 
      IF ((ICORUNS.EQ.0).AND.(IDORUNS.EQ.0).AND.(ISEEKS.EQ.0)) GO TO 460
*     CALL OUT PAGE HEADER IF NO OTHER DETAIL REPORT FOR THIS EST 
      IF (FLAGS(12) .EQ. 7HNEW-EST) THEN
         CALL HEADER
         HCF(2) = 0 
         CALL PHEAD34 (1) 
      ENDIF 
      PRINT 454 
  454 FORMAT (//,10X,'***** SUMMARY OF 895 FORMAT 6 - STATISTICS/', 
     .'OVERRUN DATA *****',/) 
      IF (ISEEKS .NE. 0) PRINT 455,ISEEKS 
  455 FORMAT(16X,'NUMBER OF SEEKS =',I8)
      IF (ICORUNS .NE. 0) PRINT 456,ICORUNS 
  456 FORMAT(16X,'NUMBER OF COMMAND OVERRUNS =',I6) 
      IF (IDORUNS .NE. 0) PRINT 457,IDORUNS 
  457 FORMAT(16X,'NUMBER OF DATA OVERRUNS =',I6)
      IF (IDORUNS .NE. 0) PRINT 458 
  458 FORMAT(///,1X,'* * * * * * * * * * * * * * * * * * * * * * * * * '
     .             ,'* * * * * * * * * * * * * *',/,
     .           1X,'*                                                 '
     .             ,'                          *',/,
     .           1X,'*  DATA OVERRUN ERROR MESSAGES ON DISK UNITS LOGGE'
     .             ,'D IN HPA ARE BASICALLY    *',/,
     .           1X,'*  INFORMATIVE.  THE ERROR MESSAGES BY THEMSELVES '
     .             ,'ARE NOT SOMETHING TO      *',/,
     .           1X,'*  BE ALARMED ABOUT FROM A HARDWARE MAINTENANCE ST'
     .             ,'ANDPOINT.  THE            *',/,
     .           1X,'*  INFORMATION MAY BE USEFUL FOR PERFORMANCE ANALY'
     .             ,'SIS.                      *',/,
     .           1X,'*                                                 '
     .             ,'                          *',/,
     .           1X,'* * * * * * * * * * * * * * * * * * * * * * * * * '
     .             ,'* * * * * * * * * * * * * *')
  
  460 CONTINUE
      IF (RCFA .EQ.3HOFF) GO TO 900 
      UNIT = IFLD(FUN)
      CALL XOVCAP ('ERDIST3',0,0) 
      CALL UOVCAP ('ERDIST3') 
* 
* 
*         GENERATE A REPORT OF 844 ERROR THRESHOLD STATUS STATISTICS
      IF (TOTARRY .EQ. 0) GO TO 900 
      IF(THRSTAT(1,1).EQ.0) GO TO 840 
      CALL PLSEC(2) 
      HCF(5) = 9
      CALL PHEAD34 (5)
* 
      DO 820 J=1,88,1 
      IF(THRSTAT(1,J).EQ.0) GO TO 830 
      IF(THRSTAT(1,J).EQ.R"        ")  THRSTAT(1,J)=R" - N/A -" 
      ENCODE(60,810,PL(1)) THRSTAT(2,J), THRSTAT(1,J) 
  810 FORMAT(9X,'OCCURRED',I5,' TIMES,  PACK S/N WAS ', 
     .R8,8X)
      CALL XOVCAP ('PRINT3',10,8) 
      CALL UOVCAP ('PRINT3')
  820 CONTINUE
  830 CONTINUE
      CALL PLSEC(4) 
      CALL PLSEC(2) 
  840 CONTINUE
      CALL G4POSA3 (TQTY,PREC(FRTY))
      IXMAX = TOTARRY                                                    R2DFMD 
      AXMAX = TOTQTY                                                     R2DFMD 
*     CHECK TO SEE THAT THERE ARE AT LEAST 50 ADDRESSES                  R2DFMD 
      IF (IXMAX.LT.50) GO TO 900                                         R2DFMD 
                                                                         R2DFMD 
      CALL DPSRT34(STDDIST,TOTARRY,MASK(42),MASK(30),MARRAY)             HPA401J
      ASUM = 0                                                           R2DFMD 
                                                                         R2DFMD 
*     COMPUTE STANDARD DISTRIBUTION                                      R2DFMD 
                                                                         R2DFMD 
      DO 860 J = 1,IXMAX                                                 R2DFMD 
      QTY=AND(STDDIST(J,2),(.NOT.MASK(45))) 
  860 ASUM = ASUM + (QTY)**2                                             R2DFMD 
      ASUM=ASUM+SQSUM                                                    HPA401J
      ASD = SQRT(ASUM/AXMAX)                                             R2DFMD 
      IF (ASD .EQ. 0) GO TO 900                                          R2DFMD 
                                                                         R2DFMD 
*     COMPUTE NUMBER OF ERRORS WHICH EQUALS 2 S.D.                       R2DFMD 
                                                                         R2DFMD 
      AERR = 2*ASD                                                       R2DFMD 
      IERR = AERR                                                        R2DFMD 
      AREMAIN = AERR - IERR                                              R2DFMD 
      IF (AREMAIN .GT. 0.5) IERR = IERR + 1                              R2DFMD 
      HDATA(4) = IERR                                                    R2DFMD 
      HCF(1) = 19                                                        R2DFMD 
      PNTFL = 0                                                          R2DFMD 
                                                                         R2DFMD 
*     COMPUTE SCORE FOR EACH DEVICE                                      R2DFMD 
                                                                         R2DFMD 
      DO 870 J = 1,IXMAX                                                 R2DFMD 
      QTY=AND(STDDIST(J,2),(.NOT.MASK(45))) 
      ASCORE = (QTY)/ASD                                                 R2DFMD 
      IF (ASCORE.LT.2.00) GO TO 870                                      R2DFMD 
                                                                         R2DFMD 
*     CHECK TO SEE IF HEADER HAS BEEN PRINTED                            R2DFMD 
                                                                         R2DFMD 
      IF (PNTFL .EQ. 1) GO TO 863                                        R2DFMD 
      PNTFL = 1                                                          R2DFMD 
      CALL PLSEC(1)                                                      R2DFMD 
      CALL PHEAD34(1)                                                    R2DFMD 
  863 CONTINUE                                                           R2DFMD 
      PL(4)=SHIFT(AND(STDDIST(J,2),MASK(30)),30)                         HPA401J
      CALL G4POSB3(PREC(FRTY),PL(4))                                     R2DFMD 
      PL(7)=OR(SHIFT(AND(STDDIST(J,1),MASK(42)),42),                     HPA0276
     .SHIFT(AND(STDDIST(J,2),SHIFT(MASK(6),30)),18))                     HPA0276
      PL(8) = QTY                                                        R2DFMD 
                                                                         R2DFMD 
*     IF LESS THAN 50 ADDRESSES, DON'T CALL OUT BAD SPOTS.               R2DFMD 
                                                                         R2DFMD 
      IF (QTY .LT. 25) GO TO 865                                         R2DFMD 
      IF (ASCORE .LT. 5.00) GO TO 865                                    R2DFMD 
      PL(1) = 10H **** SUSP                                              R2DFMD 
      PL(2) = 10HECTED BAD                                               R2DFMD 
      PL(3) = 10HSPOT ****                                               R2DFMD 
  865 CALL PRINT34(46,8)                                                 R2DFMD 
  870 CONTINUE                                                           R2DFMD 
  
  900 IF (TWIC .GE. 2) GO TO 50 
  
      RETURN
      END 
      SUBROUTINE AN4DD3 
* 
*     DESCRIPTION 
*     ----------- 
* 
*     SUBROUTINE *AN4DD3* CALLS VARIOUS SUBROUTINES TO PROCESS
*     SEF RECORDS FOR ISD ERRORS AND DIAGNOSTICS, GENERATING
*     DETAIL AND ANALYSIS REPORTS FOR EACH CATAGORY.
* 
*     DEVICE TYPE DD: ISD ADAPTER ERROR         - RTY 40B 
*                     ISD CONTROL MODULE ERRORS -     41B 
*                     ISD DRIVE ERRORS          -     42B 
*                     ISD DIAGNOSTICS           -     45B 
* 
*     ENTRY CONDITIONS
*     ----------------
*     ENTERED WHEN THE SEF ERROR FILE IS POSITIONED AT THE FIRST
*     INPUT RECORD FOR ISD ERRORS/DIAGNOSTICS.
* 
*     EXIT CONDITIONS 
*     --------------- 
*     EXIT WHEN ISD RECORDS ARE DEPLETED. 
* 
*     CALLED BY 
*     --------- 
*     PROGRAM HPA34 
* 
*CALL HPACOM1 
*CALL HPACOM2 
*CALL HPACOM3 
      DIMENSION     PBF(400,5), PSBDWN(5), TQTY(4)
      EQUIVALENCE  (PBF(1,1),  STOR(1,1)),
     .             (PSBDWN(1), STOR(29,30)),
     .             (TQTY(1),   STOR(34,30)) 
  
   40 IDIAGOK = IDIAGER = IDSFLG(1) = IDSFLG(2) = 0 
      OVFLOW = 0
      TQTY(1) = TQTY(2) = TQTY(3) = TQTY(4) = 0 
  
   50 CALL INISET3
      IHDR = 9
  
  100 IF (RCFA .EQ. 2HON) CALL STOJN3 
  
*     SET UP SUBHEADERS; ACCOMODATE ERRORS CONTAINING FUNCTION CODE AND 
*     NO DETAIL STATUS: 50B - FUNCTION TIMEOUT; 51B - CONTROLLER STOP;
*     4003B - ADAPTER RAM PARITY; 4004B - CONTROL MODULE RAM PARITY.
      MPR(1,1) = O"31"
      MPR(1,2) = 10 
      IF (FROG(18) .EQ. 3HYES) MPR(1,2) = 11
      MPR(2,1) = O"32"
      MPR(2,2) = 31 
      MPR(3,1) = O"34"
      MPR(3,2) = 32 
      MPR(4,1) = O"47"
      MPR(4,2) = MPR(1,2) 
      MPR(5,1) = O"51"
      MPR(5,2) = 12 
      MPR(6,1) = O"52"
      MPR(6,2) = 32 
      MPR(7,1) = O"62"
      MPR(7,2) = MPR(1,2) 
      MPR(8,1) = O"63"
      MPR(8,2) = 12 
      MPR(9,1) = O"77"
      MPR(9,2) = MPR(1,2) 
      MPR(10,1) = O"100"
      MPR(10,2) = 16
      MPR(11,1) = O"4002" 
      MPR(11,2) = MPR(1,2)
      MPR(12,1) = O"4004" 
      MPR(12,2) = 12
      MPR(13,1) = O"4005" 
      MPR(13,2) = MPR(1,2)
  
      HDATA(1) = R"MA462-"
      HDATA(2) = R"MH422-"
      IF ((SHIFT(NFLD(35),-8) .AND. O"17") .EQ. 4) HDATA(2) = R"MH424-" 
  
      IF (RTY .EQ. O"40") TYPID = 10HISD ADPTER 
      IF (RTY .EQ. O"41") TYPID = 10HISD CTLMOD 
      IF (RTY .EQ. O"42") TYPID = 10HISD DRIVE
      IF (RTY .EQ. O"45") TYPID = 10HISD DIAG 
  
      IF (MTY .EQ. O"3400") IDIAGOK = IDIAGOK + 1 
      IF (MTY .EQ. O"3401") IDIAGER = IDIAGER + 1 
* 
*     ANALYZE THE FAILING POSITION
* 
      IF (MTY .EQ. O"100") GO TO 202
      IF ((IFLD(29) .EQ. 0) .AND. (IFLD(30) .EQ. 0)) GO TO 204
  202 PSBDWN(2) = (SHIFT(IFLD(29),-12)) .AND. O"1777" 
      PSBDWN(3) = IFLD(29) .AND. O"377" 
      PSBDWN(4) = IFLD(30)
      GO TO 206 
  204 PSBDWN(2) = IFLD(42)
      PSBDWN(3) = SHIFT(NFLD(31),-4) .AND. O"377" 
      PSBDWN(4) = SHIFT(NFLD(31),3) .AND. O"170"
      PSBDWN(4) = (SHIFT(NFLD(32),-9) .AND. O"7") .OR. PSBDWN(4)
  
  206 IF (RCFA .EQ. 3HOFF) GO TO 300
      IF(((MTY.EQ.O"50").OR.(MTY.EQ.O"51")).OR.(MTY.EQ.O"63"))GO TO 300 
      IF ((MTY .EQ. O"4003") .OR. (MTY .EQ. O"4004")) GO TO 300 
      IF (((MTY .GE. O"32") .AND. (MTY .LE. O"34")) .OR.
     .     (MTY .EQ. O"52")) GO TO 300
* 
*     BUILD STATISTICS TABLE OF THE FAILING POSITION. 
* 
      IF (OVFLOW .EQ. 1)  GO TO 300 
      DO 230 K = 1,3,1
      KK = SHIFT(PSBDWN(K + 1),30)
      TQTY(K) = TQTY(K) + 1 
      DO 210 J = 1,400,1
      IF (PBF(J,K) .EQ. 0)  GO TO 220 
      IF (AND(PBF(J,K),MASK(30)) .EQ. KK)  GO TO 230
  210 CONTINUE
*     NO MATCH AND THE TABLE IS FULL
      GO TO 290 
* 
*     MAKE ENTRY TO THE TABLE 
* 
  220 PBF(J,K) = KK 
  230 PBF(J,K) = PBF(J,K) + 1 
* 
*     CHECK IF THIS IS THE UN-RECOVERED RMS ERROR.
* 
      IF (IFLD(FEST + 1)  .EQ.  0) GO TO 300
      KK = SHIFT(OR(SHIFT(OR(SHIFT(PSBDWN(2),15), 
     .PSBDWN(3)),15),PSBDWN(4)),15) 
      KK = OR(KK,IFLD(FMTY))
* 
      DO 240 J = 1,400,1
      IF (PBF(J,4) .EQ. 0)  GO TO 250 
      IF (PBF(J,4) .EQ. KK) GO TO 255 
  240 CONTINUE
*     NO MATCH AND THE TABLE IS FULL. 
      GO TO 290 
* 
  250 PBF(J,4) = KK 
      TQTY(4) = TQTY(4) + 1 
  255 PBF(J,5) = PBF(J,5) + 1 
      GO TO 300 
* 
*     SET CONDITION OF NO MATCH AND TABLE IS FULL.
* 
  290 PRINT 291 
  291 FORMAT(/,' .... POSITION TABLE IS FULL .. AN4DD3',/)
      OVFLOW = 1
* 
*     GENERATE DETAIL REPORT FOR THIS ISD RECORD
* 
  300 CONTINUE
      IF (RCFD .EQ. 2HON) CALL DL4DD3 
* 
*     READ THE NEXT RECORD
* 
      CALL GNR3 
      CALL SETEM3(1)
* 
*     CONCLUDE ISD DETAIL IF RECORD READ NOT DD OR SAME EST 
* 
      IF ((TWIC .LT. 1) .OR. (IFLD(FEST) .NE. PREC(FEST))) GO TO 450
      IF ((IFLD(FDT) .NE. R"DD") .AND. (IFLD(FDT) .NE. R"DG")) GO TO 450
*     BYPASS UNIT CHECK FOR ADDRESS ERRORS, WHICH CONTAIN NO CH/UN/D.S. 
      IF (MTY .EQ. O"100") GO TO 100
      IF (IFLD(FUN) .NE. PREC(FUN)) GO TO 450 
      GO TO 100 
* 
*     GENERATE ANALYSIS REPORT FOR ALL ISD RECORDS WITH SAME EST
* 
  450 IF (RCFA .EQ. 3HOFF) GO TO 900
      CALL XOVCAP ('ERDIST3',0,0) 
      CALL UOVCAP ('ERDIST3') 
  
* 
*     PRINT THE ISD DIAGNOSTICS SUMMARY 
* 
      PRINT 500,IDIAGOK,IDIAGER 
  500 FORMAT (//' ISD DIAGNOSTICS SUMMARY',/,1X,2(10H----------),3H---, 
     .//,' NUMBER OF CM DIAGNOSTICS PERFORMED ERROR FREE =',I3, 
     .//,' NUMBER OF CM DIAGNOSTIC-DETECTED ERRORS       =',I3) 
  
* 
*     GENERATE POSITION ANALYSIS REPORT.
* 
      CALL G4POSA3(TQTY,PREC(FRTY)) 
* 
  900 IF ((TWIC .GE. 1) .AND. (IFLD(FDT) .EQ. R"DD")) GO TO 40
      IF ((TWIC .GE. 1) .AND. (IFLD(FDT) .EQ. R"DG")) GO TO 40
  
      RETURN
      END 
      SUBROUTINE AN4IHD 
* 
*     DESCRIPTION 
*     ----------- 
* 
*     SUBROUTINE *AN4IHD* CALLS VARIOUS SUBROUTINES TO PROCESS
*     SEF RECORDS FOR HYDRA ERRORS, GENERATING DETAIL AND 
*     ANALYSIS REPORTS FOR EACH CATAGORY. 
* 
*     DEVICE TYPE DF (4K SECTOR SIZE) OR DH (16K SECTOR SIZE) 
*     RECORD TYPE 53B 
* 
*     ERROR CODE 4005B - HYDRA DRIVER-DETECTED ERRORS OR MESSAGES 
*                4006B - HYDRA ERROR REGISTER IMAGE 
*                4007B - HYDRA ERROR LOG
*                4010B - HYDRA ON-LINE DIAGNOSTIC STATUS
* 
*     BML SYMPTOM CODES:  15B - CHANNEL DOWNED                   (4005) 
*                         30B - EQUIPMENT TURNED OFF             (4005) 
*                        100B - DRIVER DETECTED ERROR            (4005) 
*                        103B - ERROR REGISTER IMAGE             (4006) 
*                        104B - ERROR LOG                        (4007) 
*                        105B - ERROR RECOVERY SUMMARY           (4005) 
*                        106B - READ CONFIDENCE TEST RESULTS     (4010) 
*                        107B - WRITE CONFIDENCE TEST RESULTS    (4010) 
*                        107B - HW INITIALIZATION/ATTRIBUTES     (4005) 
*                        110B - DIAGNOSTIC STATUS MSG - LEVEL I  (4010) 
*                        111B - DIAGNOSTIC STATUS MSG - LEVEL II (4010) 
* 
*     ENTRY CONDITIONS
*     ----------------
*     ENTERED WHEN THE SEF ERROR FILE IS POSITIONED AT THE FIRST
*     INPUT RECORD FOR HYDRA ERRORS.
* 
*     EXIT CONDITIONS 
*     --------------- 
*     EXIT WHEN HYDRA RECORDS ARE DEPLETED. 
* 
*     CALLED BY 
*     --------- 
*     PROGRAM HPA34 
* 
*CALL HPACOM1 
*CALL HPACOM2 
*CALL HPACOM3 
  
      COMMON / IHD / JFLD(25), SYMPTOM, IDIAG(4, 2) 
  
      DIMENSION SUM (217,5,2) 
      EQUIVALENCE (SUM(1,1,1),STOR(1,1))
      INTEGER CNT 
  
      CALL LOVCAP ('ACCUM3')
  
   50 CALL INISET3
      IDIAG(1,1) = IDIAG(2,1) = IDIAG(3,1) = IDIAG(4,1) = 0 
      IDIAG(1,2) = IDIAG(2,2) = IDIAG(3,2) = IDIAG(4,2) = 0 
  
*     SET UP SUBHEADERS 
      IHDR = 35 
      MPR(1,1) = O"31"
      MPR(1,2) = 3
      MPR(2,1) = O"32"
      MPR(2,2) = 31 
      MPR(3,1) = O"34"
      MPR(3,2) = 32 
      MPR(4,1) = O"51"
      MPR(4,2) = 3
      MPR(5,1) = O"52"
      MPR(5,2) = 32 
      MPR(6,1) = O"63"
      MPR(6,2) = 3
      MPR(7,1) = O"4005"
      MPR(7,2) = 36 
      MPR(8,1) = O"4007"
      MPR(8,2) = 37 
      MPR(9,1) = O"4010"
      MPR(9,2) = 40 
  
  100 SYMPTOM = IFLD(19)
      IFLD(FCHAN) = IFLD(FC16)
  
*     BYPASS ANALYSIS REPORT FOR HW INITIALIZATION MESSAGES 
      IF ((MTY .EQ. O"4005") .AND. (SYMPTOM .EQ. O"107")) GO TO 102 
  
*     BYPASS ANALYSIS REPORT FOR ERROR REGISTER IMAGES AND ERROR LOGS 
      IF ((MTY .EQ. O"4006") .OR. (MTY .EQ. O"4007")) GO TO 102 
  
*     BYPASS IHD DRIVER ERROR RETRIES 
      IF ((MTY .EQ. O"4005") .AND. (SYMPTOM .EQ. O"100")) GO TO 102 
  
      CALL STOJN3 
  102 CONTINUE
  
*     PROCESS THE CHANNEL DOWNED/EQUIPMENT OFFED MESSAGES 
      IF ((SYMPTOM .EQ. O"15") .OR. (SYMPTOM .EQ. O"30")) GO TO 200 
  
*     PROCESS THE DIAGNOSTIC STATUS MESSAGES
      IF (((SYMPTOM .EQ. O"106") .OR. (SYMPTOM .EQ. O"107")  .OR. 
     .     (SYMPTOM .EQ. O"110")) .AND. 
     .     (MTY .EQ. O"4010")) GO TO 200
  
*     PROCESS THE IHD DRIVER ERRORS 
      IF (SYMPTOM .EQ. O"100") THEN 
         DO 104 I = 21, 25
  104    NFLD(I) = IFLD(I)
         CALL GNR3
         CALL SETEM3(1) 
         GO TO 200
      ENDIF 
  
*     PROCESS THE ERROR REGISTER IMAGES 
      IF (SYMPTOM .EQ. O"103") THEN 
         DO 106 I = 21, 25
  106    NFLD(I) = IFLD(I)
         CALL GNR3
         CALL SETEM3(1) 
         DO 108 I = 21, 25
  108    JFLD(I) = IFLD(I)
         CALL GNR3
         CALL SETEM3(1) 
         GO TO 200
      ENDIF 
  
*     PROCESS THE ERROR LOG ENTRIES 
      IF ((SYMPTOM .EQ. O"1104") .OR. (SYMPTOM .EQ. O"2104") .OR. 
     .    (SYMPTOM .EQ. O"3104")) THEN
         LFLAG = SYMPTOM .AND. O"7000"
  
*     PROCESS ERROR LOGS 0 - 3
         LOG =  SHIFT (IFLD(21),-12) .AND. Z"3FF FFFF FFFF" 
         IF (LOG .EQ. 0) GO TO 300
         CNT = (SHIFT (IFLD(21),4) .AND. Z"FFF0") .OR.
     .         (SHIFT (IFLD(22),4) .AND. Z"000F") 
         CALL ACCUM3 (LOG,CNT)
  
         LOG =  SHIFT(IFLD(22),-8) .AND. Z"3FF FFFF FFFF" 
         IF (LOG .EQ. 0) GO TO 300
         CNT = (SHIFT (IFLD(22),8) .AND. Z"FF00") .OR.
     .         (SHIFT (IFLD(23),8) .AND. Z"00FF") 
         CALL ACCUM3 (LOG,CNT)
  
         LOG =  SHIFT(IFLD(23),-4) .AND. Z"3FF FFFF FFFF" 
         IF (LOG .EQ. 0) GO TO 300
         CNT = (SHIFT (IFLD(23),12) .AND. Z"F000") .OR. 
     .         (SHIFT (IFLD(24),12) .AND. Z"0FFF")
         CALL ACCUM3 (LOG,CNT)
  
         LOG = IFLD(24) .AND. Z"3FF FFFF FFFF"
         IF (LOG .EQ. 0) GO TO 300
         CNT = SHIFT (IFLD(25),16) .AND. Z"FFFF"
         CALL ACCUM3 (LOG,CNT)
  
         LOG = SHIFT(IFLD(25),4) .AND. Z"3FF FFFF FFF0" 
         IF (LFLAG .EQ. O"1000") GO TO 300
  
*     PROCESS ERROR LOGS 4 - 8
         CALL GNR3
         CALL SETEM3(1) 
         LOG = LOG .OR. (SHIFT (IFLD(21),4) .AND. Z"F") 
         IF (LOG .EQ. 0) GO TO 300
         CNT =  SHIFT (IFLD(21),20) .AND. Z"FFFF" 
         CALL ACCUM3 (LOG,CNT)
  
         LOG = (SHIFT (IFLD(21),8) .AND. Z"3FF FFFF FF00") .OR. 
     .         (SHIFT (IFLD(22),8) .AND. Z"000 0000 00FF")
         IF (LOG .EQ. 0) GO TO 300
         CNT =  SHIFT (IFLD(22),24) .AND. Z"FFFF" 
         CALL ACCUM3 (LOG,CNT)
  
         LOG = (SHIFT (IFLD(22),12) .AND. Z"3FF FFFF F000") .OR.
     .         (SHIFT (IFLD(23),12) .AND. Z"000 0000 0FFF") 
         IF (LOG .EQ. 0) GO TO 300
         CNT =  SHIFT (IFLD(23),28) .AND. Z"FFFF" 
         CALL ACCUM3 (LOG,CNT)
  
         LOG = (SHIFT (IFLD(23),16) .AND. Z"3FF FFFF 0000") .OR.
     .         (SHIFT (IFLD(24),16) .AND. Z"000 0000 FFFF") 
         IF (LOG .EQ. 0) GO TO 300
         CNT =  SHIFT (IFLD(24),32) .AND. Z"FFFF" 
         CALL ACCUM3 (LOG,CNT)
  
         LOG = (SHIFT (IFLD(24),20) .AND. Z"3FF FFF0 0000") .OR.
     .         (SHIFT (IFLD(25),20) .AND. Z"000 000F FFFF") 
         IF (LOG .EQ. 0) GO TO 300
         CNT =  SHIFT (IFLD(25),36) .AND. Z"FFFF" 
         CALL ACCUM3 (LOG,CNT)
  
         LOG = SHIFT (IFLD(25),24) .AND. Z"3FF FF00 0000" 
         IF (LFLAG .EQ. O"2000") GO TO 300
  
*     PROCESS ERROR LOGS 9 - 11 
         CALL GNR3
         CALL SETEM3(1) 
         LOG = LOG .OR. (SHIFT (IFLD(21),24) .AND. Z"000 00FF FFFF")
         IF (LOG .EQ. 0) GO TO 300
         CNT =  SHIFT (IFLD(21),40) .AND. Z"FFFF" 
         CALL ACCUM3 (LOG,CNT)
  
         LOG = (SHIFT (IFLD(21),28) .AND. Z"3FF F000 0000") .OR.
     .         (SHIFT (IFLD(22),28) .AND. Z"000 0FFF FFFF") 
         IF (LOG .EQ. 0) GO TO 300
         CNT =  SHIFT (IFLD(22),44) .AND. Z"FFFF" 
         CALL ACCUM3 (LOG,CNT)
  
         LOG = (SHIFT (IFLD(22),32) .AND. Z"3FF 0000 0000") .OR.
     .         (SHIFT (IFLD(23),32) .AND. Z"000 FFFF FFFF") 
         IF (LOG .EQ. 0) GO TO 300
         CNT =  SHIFT (IFLD(23),48) .AND. Z"FFFF" 
         CALL ACCUM3 (LOG,CNT)
         GO TO 300
      ENDIF 
  
*     PROCESS THE IHD ERROR SUMMARY STATUS
      IF (SYMPTOM .EQ. O"111") GO TO 200
  
*     PROCESS THE IHD INITIALIZATION MESSAGES 
      IF ((SYMPTOM .EQ. O"107") .AND. (MTY .EQ. O"4005")) THEN
         SN = SHIFT (SEFREC(4),32) .AND. Z"FFFF FFFF" 
         ICHAR = SHIFT (SEFREC(4),-12) .AND. Z"FFFF"
         IBUFSZ = (SHIFT (SEFREC(4),20) .AND. Z"FFF0 0000") .OR.
     .            (SHIFT (SEFREC(5),20) .AND. Z"000F FFFF") 
         TR = SHIFT (SEFREC(5),-24) .AND. Z"FFFF" 
         RL = (SHIFT (SEFREC(5),8) .AND. Z"FFFF FF00") .OR. 
     .        (SHIFT (SEFREC(6),8) .AND. Z"0000 00FF")
         IF ((SN .EQ. HX(1)) .AND. (ICHAR .EQ. HX(5)) .AND. 
     .       (IBUFSZ .EQ. HX(2)) .AND. (TR .EQ. HX(4)) .AND.
     .       (RL .EQ. HX(3))) GO TO 300 
         HX(1) = SN 
         HX(2) = IBUFSZ 
         HX(3) = RL 
         HX(4) = TR 
         HX(5) = ICHAR
         FLAGS(12) = 7HNEW-EST
         GO TO 300
      ENDIF 
  
  200 IF ((RCFD .EQ. 2HON) .OR. (MTY .EQ. O"4010")) CALL DL4IHD 
  
  300 CALL GNR3 
      CALL SETEM3(1)
      IF (TWIC .GE. 5) GO TO 100
  
      IF (RCFA .EQ. 3HOFF) GO TO 900
      CALL XOVCAP ('ERDIST3',0,0) 
      CALL UOVCAP ('ERDIST3') 
      IF (TBLERR(1) .EQ. 0) GO TO 800 
  
      PRINT 500,IDIAG(1,1),IDIAG(1,2),IDIAG(2,1),IDIAG(2,2),
     .          IDIAG(3,1),IDIAG(3,2),IDIAG(4,1),IDIAG(4,2) 
  500 FORMAT (//,6X,' *** DIAGNOSTICS ***       PASS      FAIL',
     ./,         6X,' -------------------       ----      ----',
     .//,        6X,' READ CONFIDENCE           ',I4,6X,I4, 
     .//,        6X,' WRITE CONFIDENCE          ',I4,6X,I4, 
     .//,        6X,' LEVEL I                   ',I4,6X,I4, 
     .//,        6X,' LEVEL II                  ',I4,6X,I4) 
      LINE = LINE + 12
  
*     PRINT THE ERROR LOG SUMMARY 
  800 IF (SUM(1,1,2) .EQ. 0) GO TO 900
      HCF(5) = 38 
      CALL PHEAD34 (5)
      CALL XOVCAP ('PRSUM3',1,9)
      CALL UOVCAP ('PRSUM3')
  
  900 DO 910 I = 1, 5 
  910 HX(I) = 0 
      FLAGS(12) = 7HNEW-EST 
      IF (TWIC .GE. 2) GO TO 50 
  
      CALL UOVCAP ('ACCUM3')
      RETURN
      END 
      SUBROUTINE AN4OD3 
* 
**        DESCRIPTION 
*         ----------- 
*         SUBROUTINE AN4OD3 CALLS VARIOUS SUBROUTINES TO PROCESS
*         SEF INPUT RECORDS FOR OPTICAL DISK DEVICES AND DEVELOP
*         UNIT ANALYSIS REPORT AND DETAIL LIST REPORT.
* 
*     DEVICE TYPE OD
*     RECORD TYPE 64B 
* 
*     ENTRY CONDITIONS
*     ----------------
*     ENTERED WHEN THE SEF ERROR FILE IS POSITIONED AT THE
*     FIRST INPUT RECORD FOR OPTICAL DISK DEVICES.
* 
*     EXIT CONDITIONS 
*     --------------- 
*     EXIT WHEN THE SEF INPUT RECORD FOR OPTICAL DISK DEVICE
*     IS EXHAUSTED. 
* 
*     CALLED BY 
*     --------- 
*         PROGRAM HPA34 
* 
*     CALLS 
*     ----- 
*     INISET3  - DO INITIAL PREPARATIONS FOR UNIT ANALYSIS
*                 REPORTS.
*     STOJN3   - SAVE JOB NAME AND TIME VALUES FOR UNIT 
*                 ANALYSIS REPORTS. 
*     DL4OD3   - COLLECTS ALL DATA FOR DETAIL LIST REPORT FOR 
*                 OPTICAL DISK DEVICES AND SAVES THEM 
*                 IN TAPE8. 
*     PRINT    - PRINT A LINE OF DATA ON VARIOUS REPORTS. 
*     ERDIST3  - REPORT UNIT ERROR DISTRIBUTION BY JOB NAME,
*                 TIME AND ERROR TYPES. 
* 
*CALL HPACOM1 
*CALL HPACOM2 
*CALL HPACOM3 
  
      DIMENSION QDENS(1), TYPC(1), TDENS(3) 
      DATA (TYPC(I),I=1,1) /6H 5680 / 
      DATA TFL /0/
  
   50 CONTINUE
      CALL INISET3
      TMOUNT = 0
  
      IHDR = 44 
*     SET UP DETAIL HEADERS 
      MPR (1,1) = O"57" 
      MPR(1,2) = 5
      MPR(2,1) = O"60"
      MPR(2,2) = 12 
      MPR(3,1) = O"6300"
      MPR(3,2) = 47 
  
*         INITIALIZE AND PRINT UNIT ID. 
      TYPID = 10HOPT DISK 
  
*         STORE JOB NAME, TIME
  100 IF (RCFA .EQ. 2HON) CALL STOJN3 
  
*        GENERATE AN OPTICAL DISK DETAIL REPORT 
  200 IF (RCFD .EQ. 2HON) CALL DL4OD3 (TDENS) 
  
*        GET THE NEXT SEF RECORD
  210 CALL GNR3 
      CALL SETEM3(1)
  
*         IF EQUIP CHANGE 
       IF(TWIC.LT.3) GO TO 800
       GO TO 100
  
*   **************************************************
  
  800 IF (RCFA .EQ. 3HOFF) GO TO 820
  
*        GENERATE AN OPTICAL DISK ANALYSIS REPORT 
  
      CALL XOVCAP ('ERDIST3',0,0) 
      CALL UOVCAP ('ERDIST3') 
  
  820 IF (FEOF(SEF) .EQ. 3HYES) GO TO 900 
      IF(TWIC.GT.1)GO TO 50 
  
  900 CONTINUE
  
      RETURN
      END 
      SUBROUTINE AN4XMD3
* 
*     DESCRIPTION 
*     ----------- 
* 
*     SUBROUTINE *AN4XMD3* CALLS VARIOUS SUBROUTINES TO PROCESS 
*     SEF RECORDS FOR 9853 AND DAS ERRORS, GENERATING DETAIL AND
*     ANALYSIS REPORTS FOR EACH CATAGORY. 
* 
*     DEVICE TYPES DN/EA/EB/EC/ED/EE/EF/EG/EH/EI/EJ/EK/EL/EM/EN/EO/EP/
*     RECORD TYPE 54B 
* 
*     ERROR CODE 4015B - XMD3 DRIVER-DETECTED ERRORS OR MESSAGES
*     ERROR CODE 6601B THRU 
*                6703B -  DRIVER-DETECTED ERRORS OR MESSAGES
* 
*     BML SYMPTOM CODES:  15B - CHANNEL DOWNED                   (4015) 
*                         30B - EQUIPMENT TURNED OFF             (4015) 
*                        100B - DRIVER DETECTED ERROR            (4015) 
*                        111B - ERROR RECOVERY SUMMARY           (4015) 
* 
*     ENTRY CONDITIONS
*     ----------------
*     ENTERED WHEN THE SEF ERROR FILE IS POSITIONED AT THE FIRST
*     INPUT RECORD FOR 9853 AND DAS ERRORS. 
* 
*     EXIT CONDITIONS 
*     --------------- 
*     EXIT WHEN 9853 AND DAS RECORDS ARE DEPLETED.
* 
*     CALLED BY 
*     --------- 
*     PROGRAM HPA34 
* 
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
*CALL,HPACOM1 
*CALL,HPACOM2 
*CALL,HPACOM3 
      COMMON / XMD3 / SYMPTOM, SKIPGNR
  
      DIMENSION PBF(400,5), PSBDWN(5), TQTY(4)
      EQUIVALENCE (PBF(1,1), STOR(1,1)) 
      EQUIVALENCE (PSBDWN(1), STOR(29,30))
      EQUIVALENCE (TQTY(1),   STOR(34,30))
  
      OVFLOW = 0
      TQTY(1) = TQTY(2) = TQTY(3) = TQTY(4) = 0 
  
   50 CALL INISET3
  
*     SET UP SUBHEADERS 
      IHDR = 43 
      MPR(1,1) = O"31"
      MPR(1,2) = 3
      MPR(2,1) = O"32"
      MPR(2,2) = 31 
      MPR(3,1) = O"34"
      MPR(3,2) = 32 
      MPR(4,1) = O"51"
      MPR(4,2) = 3
      MPR(5,1) = O"52"
      MPR(5,2) = 32 
      MPR(6,1) = O"63"
      MPR(6,2) = 3
      MPR(7,1) = O"4015"
      MPR(7,2) = 36 
  
  100 SYMPTOM = IFLD(19)
*   THE SYMPTOM CODE IS USED FROM WORD 5 OF THE FIRST SEF RECORD IF MMF 
*   PARAMETER IS SELECTED.  IN OTHER CASES IT CONTINUES TO BE USED FROM 
*   IFLD(19) AS WAS DONE PREVIOUSLY.
      IF (FLAGS(25) .NE. 0) SYMPTOM = SHIFT(IFLD(22),12) .AND. O"7777"
      IFLD(FCHAN) = IFLD(FC16)
  
*     BYPASS 9853 OR DAS DRIVER ERROR RETRIES 
      IF (((MTY .EQ. O"4015") .AND. (SYMPTOM .EQ. O"100")) .OR. 
     .    ((MTY .GE. O"6601") .AND. (SYMPTOM .EQ. O"100"))) GO TO 102 
  
      CALL STOJN3 
  102 CONTINUE
  
*     PROCESS THE CHANNEL DOWNED/EQUIPMENT OFFED MESSAGES 
      IF ((SYMPTOM .EQ. O"15") .OR. (SYMPTOM .EQ. O"30")) GO TO 200 
  
*     PROCESS THE 9853 AND DAS DRIVER ERRORS
      IF ((SYMPTOM .EQ. O"100") .OR. (IFLD(FC13) .NE. 0)) THEN
         DO 104 I = 21, 25
  104    NFLD(I) = IFLD(I)
         CALL GNR3
         CALL SETEM3 (1)
         IF (IFLD(18) .NE. R" CONTINU") GO TO 150 
      ENDIF 
      IF (SYMPTOM .EQ. O"100") HX(1) = IFLD(21) 
  
      SKIPGNR = 0 
      GO TO 200 
  
  150 SKIPGNR = 1 
      DO 160 I = 1, 25
  160 NFLD(I+30) = IFLD(I)
      DO 170 I = 1, 25
  170 IFLD(I) = PREC(I) 
  
  200 IF (RCFD .EQ. 2HON) CALL DL4XMD3
  
      IF (SKIPGNR .EQ. 1) THEN
         SKIPGNR = 0
         GO TO 275
      ENDIF 
  250 CONTINUE
      CALL GNR3 
      CALL SETEM3 (1) 
  275 IF (IFLD(18).EQ.R" CONTINU") GO TO 250
  300 IF (TWIC .GE. 5) GO TO 100
  
      IF (RCFA .EQ. 3HOFF) GO TO 900
      CALL XOVCAP ('ERDIST3',0,0) 
      CALL UOVCAP ('ERDIST3') 
  
  900 HX(1) = 0 
      FLAGS(12) = 7HNEW-EST 
      CALL G4POSA3(TQTY,PREC(FRTY)) 
      IF (TWIC .GE. 2) GO TO 50 
  
      RETURN
      END 
      SUBROUTINE CONBIT (IWRD)
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
* 
*                       CONBIT
* 
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
* 
* *      SUBROUTINE CONBIT CONVERTS RT JUSTIFIED 8 BINARY BITS TO DISPLA
*        CODED INTERPRETATION OF A HEX VALUE. 
* 
*        ENTRY
*        -----
*        ARGUMENT HAS BINARY BITS TO CONVERT
* 
*        EXIT 
*        ---- 
*        ARGUMENT HAS CONVERTED WORD
* 
* 
      ITEST = IWRD
      IWRD = 0
      ISHN = 0
      DO 10 J = 1,8 
      IBIT = (ITEST .AND. 1) + O"33"
      IWRD = IWRD .OR. SHIFT (IBIT, ISHN) 
      ISHN = ISHN + 6 
   10 ITEST = SHIFT (ITEST, -1) 
  
      RETURN
      END 
          IDENT  DPSRT34                                                 HPA401J
          ENTRY  DPSRT34                                                 HPA401J
*                                                                        HPA401J
*         REGISTER DEFINITIONS FOR SORT LOOP                             HPA401J
*                                                                        HPA401J
*         A2/X2  ADDRESS/VALUE OF FIRST ENTRY, FIRST WORD                HPA401J
*         A3/X3  ADDRESS/VALUE OF FIRST ENTRY, SECOND WORD               HPA401J
*         A4/X4  ADDRESS/VALUE OF SECOND ENTRY, FIRST WORD               HPA401J
*         A5/X5  ADDRESS/VALUE OF SECOND ENTRY, SECOND WORD              HPA401J
*         X6/X7  SCRATCH REGISTERS                                       HPA401J
*         X0     FIRST WORD MASK                                         HPA401J
*         X1     SECOND WORD MASK                                        HPA401J
*                                                                        HPA401J
*         B1     CONSTANT 1                                              HPA401J
*         B2     BASE ADDRESS FOR SORT PASS                              HPA401J
*         B3     LAST WORD ADDRESS OF FIRST HALF OF TABLE                HPA401J
*         B4     CURRENT SHELL SIZE                                      HPA401J
*         B5     SCRATCH                                                 HPA401J
*         B6     LENGTH OF TABLE                                         HPA401J
*         B7     FIRST WORD ADDRESS OF TABLE                             HPA401J
*                                                                        HPA401J
*         CALLING FORMAT                                                 HPA401J
*                                                                        HPA401J
*         CALL DPSORT (FWA,LENGTH,MASK1,MASK2)                           HPA401J
*                                                                        HPA401J
*                FWA         FIRST WORD ADDRESS OF TABLE                 HPA401J
*                LENGTH      NUMBER OF NUMBER OF WORDS IN FIRST HALF OF  HPA401J
*                MASK1       MASK TO USE ON FIRST WORD OF ENTRY          HPA401J
*                MASK2       MASK TO USE ON SECOND WORD OF ENTRY         HPA401J
          EJECT                                                          HPA401J
SST1      BX6    X2          T(J+K) = S                                  HPA401J
          BX7    X3                                                      HPA401J
          SA6    B5-B4                                                   HPA401J
          SB2    B2+1                                                    HPA401J
          SA7    A6+B6                                                   HPA401J
          NO                                                             HPA401J
          EQ     B2,B3,SST4  END OF TABLE                                HPA401J
                                                                         HPA401J
SST2      SA2    B2+0        S = T(I)                                    HPA401J
          SB5    B2+B4       J = I-K                                     HPA401J
          SA3    B2+B6                                                   HPA401J
                                                                         HPA401J
SST3      SA4    B5          T(J)                                        HPA401J
          SA5    A4+B6                                                   HPA401J
          BX6    X4*X0       MASK FIRST ENTRY, FIRST WORD                HPA401J
          BX7    X2*X0       MASK SECOND ENTRY, FIRST WORD               HPA401J
          IX6    X6-X7       COMPARE S AND T(J)                          HPA401J
          NO                                                             HPA401J
          MI     X6,SST1     ELEMENTS IN ORDER                           HPA401J
          NZ     X6,SST3A    ELEMENTS NOT IN ORDER                       HPA401J
          BX6    X5*X1       MASK FIRST ENTRY, SECOND WORD               HPA401J
          BX7    X3*X1       MASK SECOND ENTRY, SECOND WORD              HPA401J
          IX6    X7-X6                                                   HPA401J
          NO                                                             HPA401J
          PL     X6,SST1     ELEMENTS IN ORDER                           HPA401J
                                                                         HPA401J
SST3A     BX6    X4          T(J+K) = T(J)                               HPA401J
          BX7    X5                                                      HPA401J
          SA6    A4-B4                                                   HPA401J
          SB5    B5+B4       J = J-K                                     HPA401J
          SA7    A6+B6                                                   HPA401J
          GE     B5,B7,SST3                                              HPA401J
          EQ     SST1        SWAP ENTRIES                                HPA401J
                                                                         HPA401J
SST4      SX4    B4                                                      HPA401J
          AX4    1           K = K/2                                     HPA401J
          SB4    X4          B4 = -K                                     HPA401J
          SB2    B7-B4       I = FIRST+K                                 HPA401J
          NZ     X4,SST2     K " 0                                       HPA401J
          EJECT                                                          HPA401J
DPSRT34   PS                 ENTRY/EXIT                                  HPA401J
          SB7    X1          PUT FWA IN B7                               HPA401J
          SA2    A1+1        GET ADDRESS OF NUMBER OF WORDS              HPA401J
          SA3    A1+2        GET ADDRESS OF FIRST MASK                   HPA401J
          SA1    A1+3        GET ADDRESS OF SECOND MASK                  HPA401J
          SA4    A1+1        GET ADDRESS OF LENGTH OF TABLE              HPA401J
          SA2    X2          GET NUMBER OF WORDS                         HPA401J
          SA3    X3          GET FIRST MASK                              HPA401J
          SA4    X4          GET LENGTH OF TABLE                         HPA401J
          SA1    X1          GET SECOND MASK                             HPA401J
          BX0    X3          PUT FIRST MASK IN X0                        HPA401J
          SB6    X4          PUT WORD COUNT IN B6                        HPA401J
          SB3    B7+X2       FORM LAST WORD ADDRESS OF SORT              HPA401J
          MX4    12          FORM INITIAL K VALUE                        HPA401J
          NX6    X2,B2                                                   HPA401J
          AX4    X4,B2                                                   HPA401J
          SB1    1           SET CONSTANT 1                              HPA401J
          SB4    X4          PUT INITIAL K VALUE IN B4                   HPA401J
          EQ     SST4                                                    HPA401J
          END                                                            HPA401J
      SUBROUTINE DL4AH3 
* 
*** 
* 
*         DESCRIPTION 
*         ----------- 
*         SUBROUTINE DL4AH3 GENERATES 819 HCD DETAIL REPORT FROM
*         819 DISK ERROR MESSAGES.
* 
*         ENTRY CONDITION 
*         --------------- 
*         CURRENT SEF ENTRY IN SEFREC(8), 
* 
*         EXIT CONDITION
*         --------------
*         ONE DETAIL REPORT OF THE SEF MESSAGE IN SEFREC(8) HAS BEEN
*         PRINTED.
* 
* 
*         CALLED BY 
*         --------- 
*          AN4AH3 
* 
*CALL,HPACOM1 
*CALL,HPACOM2 
*CALL,HPACOM3 
* 
* 
* 
      DIMENSION    IERCD(12)
      EQUIVALENCE (IERCD(01), STOR(38,30))
* 
      CALL UCHEK34
      IF (FLAGS(4) .EQ. 3HOFF) GO TO 900
  
*     CHECK FOR RMS/RAM ERRORS/MESSAGES 
      IF (((MTY .GE. O"32") .AND. (MTY .LE. O"34")) .OR.
     .     (MTY .EQ. O"52")) GO TO 700
* 
*     PROCESS ONE LINE OF DETAIL REPORT.
      PL(1) = IFLD(20)
      PL(2) = IFLD(FJOB)
* 
      IF(MTY.EQ.O"153")  GOTO 400 
      ENCODE(50,111,PL(3)) FDS(1),FDS(5),FDS(8),IFLD(FCHAN),FDS(3), 
     .FDS(23),FDS(6),FDS(7) 
  111 FORMAT(2(O4,1X),I9,5X,O2,2I5,2(1X,O4))
      I=R" RCV" 
      IF (IFLD(FEST+1) .NE. 0) I = R"URCV"
      PL(4) = OR(AND(PL(4),O"7777 7777 7777"),SHIFT(I,36) ) 
      I=R" RD"
      IF(AND(SHIFT(FDS(2),-6),O"77").NE.0)  I=R" WR"
      PL(5)=OR(AND(PL(5),O"77777777777777"),SHIFT(I,42))
* 
      IF(MTY.EQ.O"101")  GOTO 300 
      IF(MTY.EQ.O"154")  GOTO 500 
* 
*     COMPLETE DATA FOR ADDRESS ERROR.
      UNEXP = AND(FDS(2),O"3")
      UNACT=AND(SHIFT(FDS(7),-9),O"3")
      IPCYL=AND(SHIFT(FDS(22),-12),O"1777") 
      IPHG =AND(SHIFT(FDS(22),-06),O"77") 
      IPSEC=AND(FDS(22),O"77")
* 
      ISCYL=AND(SHIFT(FDS(4),-12),O"1777")
      ISHG =AND(SHIFT(FDS(4),-06),O"77")
      ISSEC=AND(FDS(4),O"77") 
* 
      IECYL=ISCYL 
      IEHG =AND(SHIFT(FDS(9),-06),O"77")
      IESEC=AND(FDS(9),O"77") 
* 
      IACYL=IECYL 
      IAHG =IEHG
      IASEC=IESEC 
      IF(AND(FDS(5),O"10").NE.0)  IACYL=AND(FDS(10),O"1777")
      IF(AND(FDS(5),O"04").NE.0)  IAHG =AND(FDS(10),O"17")
      IF(AND(FDS(5),O"20").EQ.0)  GOTO 210
      IACYL=AND(FDS(10),O"1777")
      IAHG =AND(SHIFT(FDS(11),-6),O"77")
      IASEC=AND(FDS(11),O"77")
* 
  210 ENCODE(130,212,PL(8)) UNACT,IPCYL,IPHG, 
     .IPSEC,ISCYL,ISHG,ISSEC,IECYL,IEHG,IESEC,IACYL,IAHG,IASEC
  212 FORMAT (O2,4(1X,O4,2(1H/,O2)))
      ENCODE(10,214,I) UNEXP
  214 FORMAT(7X,O2,1H/) 
      PL(7)=OR(AND(PL(7),O"77777777777777000000"),AND(I,O"777777")) 
      IF (FDS(7).EQ.0) ENCODE(10,216,PL(8)) IPCYL,IPHG
  216 FORMAT (3X,O4,1H/,O2) 
      GOTO 600
* 
* 
*     COMPLETE DATA FOR CHECKWORD ERROR.
  300 IECYL=AND(SHIFT(FDS(4),-12),O"1777")
      IEHG =AND(SHIFT(FDS(9),-06),O"77")
      IESEC=AND(FDS(9),O"77") 
* 
      I=10
      J=1 
      KK=SHIFT(FDS(7),57) 
      DO 304 K=1,4,1
      IERCD(J)=IERCD(J+1)=IERCD(J+2)=0
      IF(AND(KK,1).EQ.0)  GOTO 303
      IERCD(J)  =FDS(I) 
      IERCD(J+1)=FDS(I+1) 
      IERCD(J+2)=FDS(I+2) 
      I=I+3 
  303 J=J+3 
      KK=SHIFT(KK,1)
  304 CONTINUE
* 
      ENCODE(60,306,PL(8)) IEHG,IESEC,(IERCD(I),I=1,12,1) 
  306 FORMAT(2(1H/,O2),1X,4(1X,O2,2(1H/,O4))) 
      ENCODE(10,312,I) IECYL
  312 FORMAT (6X,O4)
      PL(7) = OR(AND(PL(7),O"77777777777700000000"),AND(I,O"77777777")) 
* 
*     DECODE OFFSET AND STROBE FROM RETRY COUNT.
      IS=R"N" 
      IF(FDS(8).GE.186)  IS=R"E"
      IF(FDS(8).GE.372)  IS=R"L"
      I=FDS(8)-(FDS(8)/186)*186 
      ID=R"+" 
      IO=0
      IF(I.LE.2)  GOTO 350
      IO=(I+3)/6
      IF(((I+3)-(IO*6)).GT.2)  ID=R"-"
  350 ENCODE(10,352,PL(14))  ID, IO, IS 
  352 FORMAT(R1,O2,R1,6X) 
      CALL PRINT34 (30,14)
      GO TO 900 
* 
*     COMPLETE DATA FOR ACTIVITY STATUS ... 
  400 IACTCNT=AND(FDS(22),O"7777")
      IACTCNT=IACTCNT*512 
      ENCODE(20,402,PL(3)) IFLD(FCHAN),IACTCNT
  402 FORMAT(2X,O2,5X,I7) 
      GOTO 600
* 
* 
*     COMPLETE DATA FOR ABNORMAL ERROR ...
  500 I=AND(FDS(10),O"7") 
      ENCODE(10,502,PL(8)) I,FDS(11)
  502 FORMAT(O1,1X,O4)
      ENCODE(10,504,I)  FDS(10) 
  504 FORMAT(6X,O4) 
      PL(7)=OR(AND(PL(7),MASK(42)),AND(SHIFT(I,-6),O"777777"))
  600 CALL PRINT34 (31,14)
      GO TO 900 
  
*     GENERATE DETAIL REPORT FOR RMS/RAM ERRORS/MESSAGES
  700 IPSN = SHIFT(IFLD(25),36) .OR. SHIFT(IFLD(26),24) .OR.
     .       SHIFT(IFLD(27),12) .OR. IFLD(28) 
  
      IF (MTY .EQ. O"32") THEN
         CALL LOAPR (1,IFLD(20),IFLD(FJOB),IPSN,IFLD(FPPU), 
     .                 IFLD(FCHAN),IFLD(FUN),IFLD(21),IFLD(22)) 
         PL (9) = IFLD(23)
         PL(10) = MFID
         CALL PRINT34 (25,10) 
         GO TO 900
      ENDIF 
  
      CALL LOAPR (1,IFLD(20),IFLD(FJOB),IPSN,IFLD(FPPU),
     .              IFLD(FCHAN),IFLD(FUN),MFID,SP)
      CALL PRINT34 (26,7) 
  
* 
* 
*     EXIT FROM ROUTINE 
  900 RETURN
      END 
      SUBROUTINE DL4AM3 
* 
**        DESCRIPTION 
*         ----------- 
*         SUBROUTINE *DL4AM3* GENERATES A DETAIL REPORT FOR 841(RTY=43B)
*         DISK ERROR MESSAGES.
* 
*         ENTRY CONDITIONS
*         ----------------
*         DATA AREAS SHARED - 
*         IFLD(64), SEFREC(8) 
* 
* 
*         DATA AREAS AND FILES
*         --------------------
*         DATA AREAS
*         IFLD   - (64)/COMMON BLOCK/AREA TO HLOD THE UNPACKED
*                  DATA OF THE CURRENT SEF INPUT RECORD IN SEFREC.
* 
*         CALLED BY 
*         --------- 
*         AN4AM3
* 
*CALL,HPACOM1 
*    *************
  
      CALL UCHEK34
      IF (FLAGS(4) .EQ. 3HOFF) GO TO 900
  
*              LOAD  PRINT  DATA
  
      RW = 3H R 
      IF (IFLD(26) .EQ. 1) RW = 3H W
      RVD = 5H YES
      IF (IFLD(FEST +1) .EQ. 1) RVD = 5H NO 
      CALL LOAPR (1,IFLD(20),IFLD(FJOB),RVD,IFLD(21),RW,IFLD(FPPU), 
     .              IFLD(FCHAN),IFLD(FUN))
      CALL LOAPR(9,IFLD(23),IFLD(22),IFLD(24),SP,SP,MFID,SP,SP) 
* 
*        ENCODE EXPECTED POSITION FOR 841 DISK
* 
      ENCODE(20,1002,PL(12)) IFLD(29),IFLD(30),IFLD(31) 
 1002 FORMAT('C=',O4,' H=',O2,' S=',O2) 
      CALL PRINT34(32,14) 
  
*         EXIT FROM THIS SUBROUTINE 
  
  900 CONTINUE
      RETURN
      END 
      SUBROUTINE  DL4AY3
* 
**        DESCRIPTION 
*         ----------- 
*         SUBROUTINE *DL4AY3* GENERATES DETAIL REPORTS FOR 844(RTY=44B),
*         885/FMD(RTY=44B), FSC(RTY=51B), DEMA(RTY=52B), 895(RTY=46B),
*         & CDSS2(RTY=44B) DISK ERROR MESSAGES. 
  
*        DATA LIST
*        ---------
* 
* PL(01)  TIME                CONTROLLER TYPE     TIME
* PL(02)  JOB NAME            DETAIL STATUS 1     JOB NAME
* PL(03)  PACK ID                .     .    2     PACK ID 
* PL(04)  RCV/URCV               .     .    3     RCV/URCV
* PL(05)  RETRY CNT              .     .    4     RETRY CNT 
* PL(06)  READ/WRITE             .     .    5     READ/WRITE
* PL(07)  CHANNEL                .     .    6     CHANNEL 
* PL(08)  FUNCTION               .     .    7     FUNCTION
* PL(09)  EQUIP NO.              .     .    8     EQUIP NO. 
* PL(10)  UNIT NO.               .     .    9     UNIT NO.
* PL(11)  POSITION-CYL           .     .   10     POSITION-CYL
* PL(12)  POSITION-TRK                            POSITION-TRK
* PL(13)  POSITION-SEC                            POSITION-SEC
* PL(14)  CONTROLWARE REVISION NO.                EST 
* PL(15)  MFID                                    MFID
* PL(16)  GEN STATUS                              GEN STATUS
* 
* 
*CALL,HPACOM1 
*CALL,HPACOM2 
*CALL,HPACOM3 
*     ******************************************************************
  
      DIMENSION FMTTXT (3,9)
      DATA (FMTTXT(I,1),I=1,3,1)/ 
     .10HPROGRAM OR,10H SYSTEM CH,10HECKS      /
      DATA (FMTTXT(I,2),I=1,3,1)/ 
     .10HDEVICE EQU,10HIPMENT CHE,10HCKS       /
      DATA (FMTTXT(I,3),I=1,3,1)/ 
     .10HSTORAGE DI,10HRECTOR EQU,10HIPMENT CKS/
      DATA (FMTTXT(I,4),I=1,3,1)/ 
     .10HSTORAGE DI,10HRECTOR CON,10HTROL CKS  /
      DATA (FMTTXT(I,5),I=1,3,1)/ 
     .10HDATA CHECK,10HS - W/O DI,10HSPLACEMENT/
      DATA (FMTTXT(I,6),I=1,3,1)/ 
     .10HDATA CHECK,10HS -WITH DI,10HSPLACEMENT/
      DATA (FMTTXT(I,7),I=1,3,1)/ 
     .10HUSAGE STAT,10HS/OVERRUN ,10HERRORS    /
      DATA (FMTTXT(I,8),I=1,3,1)/ 
     .10HSTORAGE DI,10HR-TO-CNTLR,10H PATH/CHKS/
      DATA (FMTTXT(I,9),I=1,3,1)/ 
     .10HCONTROLLER,10H EQUIPMENT,10H CHECKS   /
  
      CALL UCHEK34
      IF (FLAGS(4) .EQ. 3HOFF) GO TO 500
* 
      IFLGDS = 2H 
  
*     CHECK FOR RMS/RAM ERRORS/MESSAGES 
      IF (((MTY .GE. O"32") .AND. (MTY .LE. O"34")) .OR.
     .     (MTY .EQ. O"52")) GO TO 250
  
      IRW = 3H R
      IF ((IFLD(26) .AND. 1) .NE. 0) IRW = 3H W 
      IF (IFLD(28) .EQ. 0) IFLD(28) = SHIFT(IFLD(34),-6) .AND. O"17"
      IRECV = 3H Y
      IF (IFLD(FC13) .EQ. 1) IRECV = 3H N 
  
*     CHECK FOR ADDRESS ERRORS: NO CH/UN/D.S. 
      IF (MTY .EQ. O"100") THEN 
         CALL LOAPR (1,IFLD(20),IFLD(FJOB),IRECV,IFLD(21),IRW,
     .                 IFLD(FPPU),IFLD(29),SP)
         CALL LOAPR (9,SP,MFID,IFLD(22),IFLD(23),SP,SP,SP,SP) 
         CALL G4POSB3 (RTY,PL(7)) 
         CALL PRINT34 ( 18, 12 )
         GO TO 500
      ENDIF 
  
*     ROUTE 7165/895 MESSAGE
      IF (RTY .EQ. O"46") GO TO 300 
* 
*     CHECK FOR ERRORS CONTAINING A FUNCTION TO BE REPORTED 
      IF (((MTY.NE.O"50").AND.(MTY.NE.O"51")).AND.(MTY.NE.O"63")) GO TO 
     +100 
      CALL LOAPR(1,IFLD(20),IFLD(FJOB),IRECV,IFLD(21),IRW,IFLD(FPPU), 
     .             IFLD(FCHAN),SP)
      ENCODE (10,55,PL(8)) IFLD(23) 
   55 FORMAT (O4,6X)
      PL( 9) = MFID 
      PL(10) = IFLD(22) 
      CALL PRINT34 ( 24, 10 ) 
      GO TO 500 
  
  100 CONTINUE
* 
*       LOAD PRINT LINE WITH CURRENT DATA 
      CALL LOAPR(1,IFLD(20),IFLD(FJOB),IFLD(27),IRECV,IFLD(21),IRW, 
     .             IFLD(FPPU),IFLD(FCHAN))
      CALL LOAPR(9,IFLD(FUN),IFLD(29),SP,SP,IFLD(28),MFID,IFLD(22), 
     .             SP)
                                                                         R2DFMD 
*          DECODE THE POSITION
      CALL G4POSB3(IFLD(FRTY),PL(10)) 
      IF (RTY .EQ. O"51") GO TO 300 
  
*      TEST IF THE DETAILED STATUS AND UNIT,CYLINDER,TRACK, 
*      AND SECTOR INFORMATION AGREE.
       IF (IFLD(34) .EQ. 0) GO TO 200 
       IF (IFLD(FUN) .NE. (IFLD(34).AND.O"77")) IDSFLG(1) = 1 
       IF (IDSFLG(1).EQ.1) GO TO 200
       IF ((IFLD(35) .OR. IFLD(36)) .EQ. 0) GO TO 200 
  
*        TEST IF UNIT IS AN 844, FMD OR CDSS2 
         IF ((IFLD(FUN) .AND. O"40") .EQ. 0) GO TO 110
         IF ((IFLD(34) .AND. O"6000") .EQ. O"6000") GO TO 140 
* 
*      TEST DETAILED STATUS FOR AN 844
  110  ICYLST = SHIFT (IFLD(35),-3) .OR.
     .    (AND (SHIFT (IFLD(36),9),O"1000"))
       IF ((PL(10) .AND. O"7777") .NE. ICYLST) IDSFLG(1) = 1
*      GET TRACK FOR DETAILED STATUS
       TRKDS = (AND (SHIFT (IFLD(35),2), O"34")) .OR. 
     .           (AND (SHIFT (IFLD(36),-10), 3))
       IF ((PL(11) .AND. O"777") .NE. TRKDS)   IDSFLG(1) = 1
*      GET SECTOR COUNT FROM THE DETAILED STATUS
       IF ((PL(12) .AND. O"777") .NE. (AND (SHIFT(IFLD(36),-5), O"37")))
     .     IDSFLG(1) = 1
       GO TO 200
* 
*       TEST DETAILED STATUS FOR AN FMD OR CDSS2
  140   ICYLST = (AND (SHIFT (IFLD(35),4), O"1760") .OR.
     .             (AND (SHIFT (IFLD(36),-8), O"17")))
        IF ((PL(10) .AND. O"7777") .NE. ICYLST)  IDSFLG(1) = 1
        IF ((PL(11) .AND. O"377")  .NE. (IFLD(36) .AND. O"377"))
     .      IDSFLG(1) = 1 
        IF ((PL(12) .AND. O"377")  .NE. (AND (SHIFT(IFLD(37),-4), 
     .      O"377"))) IDSFLG(1) = 1 
  200   CONTINUE
        IF (IDSFLG(1) .NE. 0) IFLGDS = 2H** 
* 
*     PRINT DETAIL/DX REPORTS FOR 844, 885/FMD, CDSS, AND DEMA
* 
*     TEST FOR 80 COLUMNS 
      IF(FROG(18).EQ.3HYES) GO TO 220 
      CALL LOAPR(16,IFLGDS,IFLD(23),HDATA(4),IFLD(31),IFLD(32),IFLD(33),
     .              IFLD(34),IFLD(35))
      CALL LOAPR(24,IFLD(36),IFLD(37),IFLD(38),IFLD(39),IFLD(40),SP,SP, 
     .              SP) 
      CALL PRINT34 ( 101, 28 )
      GO TO 230 
  
  220 PL(16) = IFLGDS 
      PL(17) = IFLD(23) 
      CALL PRINT34 ( 35, 17 ) 
      CALL LOAPR(1,HDATA(4),IFLD(31),IFLD(32),IFLD(33),IFLD(34),
     .             IFLD(35),IFLD(36),IFLD(37))
      CALL LOAPR(9,IFLD(38),IFLD(39),IFLD(40),SP,SP,SP,SP,SP) 
      CALL PRINT34(36,11) 
  
  230 CONTINUE
      IF(IDSFLG(1).NE.0) IDSFLG(2)=1
      IDSFLG(1) = 0 
  
*      IF EXTENDED DETAILS SET, PRINT LAST 10 BYTES DET STATUS. 
      IF (FLAGS(11) .EQ. 3HOFF) GO TO 500 
      CALL LOAPR(2,IFLD(41),IFLD(42),NFLD(31),NFLD(32),NFLD(33),
     .             NFLD(34),NFLD(35),NFLD(36))
      PL(10) = NFLD(37) 
      PL(11) = NFLD(38) 
      IF (FROG(18) .NE. 3HYES) CALL PRINT34(37,11)
      IF (FROG(18) .EQ. 3HYES) CALL PRINT34(36,11)
      GO TO 500 
  
*     GENERATE DETAIL REPORT FOR RMS/RAM ERRORS/MESSAGES
  250 IF (MTY .EQ. O"32") THEN
         CALL LOAPR (1,IFLD(20),IFLD(FJOB),IFLD(27),IFLD(FPPU), 
     .                 IFLD(FCHAN),IFLD(FUN),IFLD(21),IFLD(22)) 
         PL (9) = IFLD(23)
         PL(10) = MFID
         IF (IFLD(33) .EQ. 1) PL(11) = R"   CIO"
      CALL PRINT34 ( 25, 11 ) 
         GO TO 500
      ENDIF 
  
      CALL LOAPR (1,IFLD(20),IFLD(FJOB),IFLD(27),IFLD(FPPU),
     .              IFLD(FCHAN),IFLD(FUN),MFID,SP)
         IF (IFLD(33) .EQ. 1) PL(8) = R"   CIO" 
      CALL PRINT34 ( 26, 8 )
      GO TO 500 
  
* 
*     PRINT DETAIL/DX REPORTS FOR FSC DISKS - RTY 51B 
* 
*          RE-UNPACK LAST WORD OF 2ND FSC RECORD
  300 NFLD(41) = SHIFT(SEFREC(8),6) .AND. O"17" 
      NFLD(42) = SHIFT(SEFREC(8),12) .AND. O"77"
      NFLD(43) = SHIFT(SEFREC(8),24) .AND. O"7777"
      NFLD(44) = SHIFT(SEFREC(8),36) .AND. O"7777"
      NFLD(45) = SHIFT(SEFREC(8),48) .AND. O"1777"
  
*          SHUFFLE SENSE BYTE DATA INTO CONSECUTIVE IFLD LOCATIONS
      DO 302 I = 1,6
      II = I + 1
  302 IFLD(39+I) = IFLD(39+II)
      DO 304 I = 1,9
  304 IFLD(45+I) = NFLD(30+I) 
      IF (RTY .EQ. O"46") GO TO 400 
  
*          LOAD FSC DATA FOR PRINTING DETAIL REPORTS
      PL(13) = TYPEST 
      CALL LOAPR(16,HDATA(4),NFLD(41),NFLD(45),NFLD(43),NFLD(44), 
     .              IFLD(31),IFLD(32),IFLD(33)) 
      CALL LOAPR(24,IFLD(34),IFLD(35),IFLD(36),IFLD(37),IFLD(38), 
     .              IFLD(39),IFLD(40),IFLD(41)) 
      CALL LOAPR(32,IFLD(42),IFLD(43),IFLD(44),IFLD(45),IFLD(46), 
     .              IFLD(47),IFLD(48),IFLD(49)) 
      CALL LOAPR(40,IFLD(50),IFLD(51),IFLD(52),IFLD(53),IFLD(54), 
     .                SP,SP,SP) 
      IF (FROG(18) .EQ. 3HYES) GO TO 310
  
*         PRINT FSC DETAIL - 132 COLUMNS - D/DX PARAMETER 
      CALL PRINT34 ( 102, 44 )
      IF (FLAGS(11) .NE. 3HOFF) GO TO 320 
      GO TO 500 
  
*          PRINT FSC DETAIL - 80 COLUMNS - D/DX AND R PARAMETERS
  310 CALL PRINT34 ( 103, 44 )
      IF (FLAGS(11) .NE. 3HOFF) GO TO 330 
      GO TO 500 
  
*          PRINT FSC DETAIL EXTENDED - 132 COLUMNS - DX PARAMETER 
  320 PTR = 22
      DO 325 II = 1,3 
       PTR = PTR + 8
         DO 324 I = 1,8 
         SHFTCNT = 7 - I + 1
         K = I * 8 - 8
            DO 324 J = 1,8
  324       PL(J+K) = SHIFT(IFLD(PTR+J),-SHFTCNT) .AND. 1 
  325 CALL PRINT34(200+II,64) 
      GO TO 500 
  
*         PRINT FSC DETAIL EXTENDED - 80 COLUMNS - DX AND R PARAMETERS
  330 PTR = 24
      DO 335 II = 1,4 
      PTR = PTR + 6 
         DO 334 I = 1,8 
         SHFTCNT = 7 - I + 1
         K = I * 6 - 6
            DO 334 J = 1,6
  334       PL(J+K) = SHIFT(IFLD(PTR+J),-SHFTCNT) .AND. 1 
  335 CALL PRINT34(203+II,48) 
      GO TO 500 
  
*     * * * * * * * * * * * 7165/895 * * * * * * * * * * * *
  400 IRECV = 4H YES
      IF (IFLD(FC13) .EQ. 1) IRECV = 4H NO
      SD = SHIFT(IFLD(FUN),-5) .AND. 1
      HSC = SHIFT(IFLD(FUN),-4) .AND. 1 
      UNIT = IFLD(FUN) .AND. O"17"
*     CHECK FOR SINGLE CIO PP DATA - OBTAIN UPPER 4 BITS OF ADAPTER FCN 
      IF (IFLD(25) .NE. 0) IFLD(23) = IFLD(23) .OR. 
     .                     (SHIFT(NFLD(27),30) .AND. O"17 0000")
  
  
*     CHECK FOR ERRORS CONTAINING A FUNCTION TO BE REPORTED 
      IF(((MTY.NE.O"50").AND.(MTY.NE.O"51")).AND.(MTY.NE.O"63"))GOTO404 
  
      CALL LOAPR (1,IFLD(20),IFLD(FJOB),IFLD(27),IRECV,IFLD(21),IRW,
     .              IFLD(FPPU),IFLD(3)) 
      CALL LOAPR (9,IFLD(FCHAN),NFLD(45),SD,HSC,UNIT,IFLD(23),IFLD(22), 
     .              MFID) 
      CALL LOAPR (17,NFLD(43),NFLD(44),NFLD(41),SP,SP,SP,SP,SP) 
      IF (FROG(18) .NE. 3HYES) THEN 
         CALL PRINT34 ( 107, 19 ) 
         GO TO 406
      ENDIF 
      CALL PRINT34 ( 108, 16 )
      PRINT 960,NFLD(43),NFLD(44),NFLD(41)
  960 FORMAT (20X,'CYBER DI STATUS = ',O4,'   895 DI STATUS = ',O4, 
     .            '   CW REV = ',I2)
      LINE = LINE + 1 
      GO TO 406 
  
  404 CALL LOAPR (1,IFLD(20),IFLD(FJOB),IFLD(27),IRECV,IFLD(21),IRW,
     .              IFLD(FPPU),IFLD(3)) 
      CALL LOAPR (9,IFLD(FCHAN),NFLD(45),SD,HSC,UNIT,IFLD(29),SP,SP)
      CALL LOAPR (17,MFID,IFLD(22),NFLD(43),NFLD(44),NFLD(41),IFLD(23), 
     .               SP,SP) 
      CALL G4POSB3 (IFLD(FRTY),PL(14))
      IF (FROG(18) .NE. 3HYES) THEN 
         CALL PRINT34 ( 105, 22 ) 
         GO TO 406
      ENDIF 
      CALL PRINT34 ( 106, 17 )
      PRINT 980,IFLD(22),NFLD(43),NFLD(44),NFLD(41),IFLD(23)
  980 FORMAT (5X,'GEN.STAT = ',O4,' CYBER/895 DI STATUS = ',O4,'/', 
     .        O4,'  CW REV = ',I2,' FUNC = ',O6.4)
      LINE = LINE + 1 
  
*     CHECK FOR SINGLE CIO PP DATA - REPORT THREE ERROR REGISTERS 
  406 IF (IFLD(25) .NE. 0) THEN 
         OSR  = SHIFT(NFLD(27),36) .AND. O"77 7777" 
         IACR = SHIFT(NFLD(27),54) .AND. O"77 7777" 
         IESR = (SHIFT(NFLD(27),12) .AND. O"77 0000") .OR. NFLD(28) 
         PRINT 985,OSR,IACR,IESR
  985    FORMAT (12X,'CIO REGISTERS:   OPERATIONAL = ',Z4,
     .               '   CONTROL = ',Z4,'   ERROR = ',Z4,/) 
         LINE = LINE + 2
      ENDIF 
  
  
*     PROVIDE SENSE BYTE STATUS IF VALIDATED BY GENERAL STATUS = XX2XB
*          OR GENERAL STATUS = 4400B AND 895 DI STATUS = XXX2(NOT 2112B)
      IF ((IFLD(22) .EQ. O"4400") .AND. ((NFLD(44).AND.2) .NE. 0) .AND. 
     .    (NFLD(44) .NE. O"2112")) GO TO 408
      IF ((IFLD(22) .AND. O"20") .NE. 0) GO TO 408
      IF (FROG(18) .EQ. 3HYES) GO TO 450
      GO TO 500 
  
  408 CONTINUE
      PL(1) = 10H      SENS 
      PL(2) = 10HE BYTES =
      CALL LOAPR (3,IFLD(31),IFLD(32),IFLD(33),IFLD(34),
     .              IFLD(35),IFLD(36),IFLD(37),IFLD(38))
      CALL LOAPR(11,IFLD(39),IFLD(40),IFLD(41),IFLD(42),
     .              IFLD(43),IFLD(44),IFLD(45),IFLD(46))
      CALL LOAPR(19,IFLD(47),IFLD(48),IFLD(49),IFLD(50),
     .              IFLD(51),IFLD(52),IFLD(53),IFLD(54))
      IF (FROG(18) .NE. 3HYES) CALL PRINT34 (38, 26)
      IF (FROG(18) .EQ. 3HYES) CALL PRINT34 (39, 26)
  
      FSC = SHIFT(IFLD(53),8) .OR. IFLD(54) 
      FMT = SHIFT(IFLD(38),-4) .AND. O"17"
      FMTX = FMT + 1
      SUBCODE = IFLD(38) .AND. O"17"
      PRINT 990,FSC,FMT,(FMTTXT(I,FMTX),I=1,3,1),SUBCODE
  990 FORMAT ('     >>> FAULT SYMPTOM CODE ',Z4,/,'     >>> FORMAT ', 
     .Z1,' - ',3A10,15X,' SUBCODE - ',Z1,/) 
      LINE = LINE + 4 
      IF (FLAGS(11) .EQ. 3HOFF) GO TO 450 
  
*             PRINT 7165/895 DETAIL EXTENDED - 132 COLUMNS
      IF (FROG(18) .EQ. 3HYES) GO TO 420
      DO 414 I = 1,3
      II = I * 8 - 8
         DO 412 J = 1,8 
         IBYTNO = II + J - 1
         IBYTVAL = IBYTNO + 31
         PLVAL = J * 2 - 1
         PL(PLVAL) = IBYTNO 
         PL(PLVAL + 1) = IFLD(IBYTVAL)
         ICONVAL = IFLD(IBYTVAL)
         CALL CONBIT (ICONVAL)
  412    PL(J + 16) = ICONVAL 
  414 CALL PRINT34 (40, 24) 
      GO TO 450 
  
*             PRINT 7165/895 DETAIL EXTENDED - 80 COLUMNS 
  420 DO 424 I = 1,5
      II = I * 5 - 5
         DO 422 J = 1,5 
         IBYTNO = II + J - 1
         IBYTVAL = IBYTNO + 31
         PLVAL = J * 2 - 1
         PL(PLVAL) = IBYTNO 
         PL(PLVAL + 1) = IFLD(IBYTVAL)
         ICONVAL = IFLD(IBYTVAL)
         CALL CONBIT (ICONVAL)
  422    PL(J + 10) = ICONVAL 
      IF (I .NE. 5) CALL PRINT34 (41, 15) 
  424 CONTINUE
      DO 426 I = 9,12 
  426 PL(I) = PL(I+2) 
      CALL PRINT34 (42, 12) 
  
  450 CALL PLSEC(4) 
  
* 
*         EXIT FROM SUBROUTINE
  500 RETURN
      END 
      SUBROUTINE DL4DD3 
* 
*     DESCRIPTION 
*     ----------- 
*     SUBROUTINE *DL4DD3* GENERATES DETAIL REPORTS FOR ISD ERRORS AND 
*     DIAGNOSTICS.
* 
*     CALLED BY 
*     --------- 
*     SUBROUTINE AN4DD3 
* 
*CALL HPACOM1 
*CALL HPACOM2 
*CALL HPACOM3 
      DIMENSION PSBDWN(5) 
      EQUIVALENCE  (PSBDWN(1), STOR(29,30)) 
* 
*     ADJUST PACKID (FROM 12 TO 6 CHAR), ADPT CW AND COS CW 
* 
      IF ((IFLD(27).AND.O"7777").EQ.R". ")IFLD(27) = SHIFT(IFLD(27),-12)
      IF (IFLD(28) .EQ. 0) IFLD(28) = SHIFT(IFLD(34),-6) .AND. O"17"
      IF (NFLD(28) .EQ. 0) NFLD(28) = NFLD(36) .AND. O"37"
  
      CALL UCHEK34
      IF (FLAGS(4) .EQ. 3HOFF) GO TO 500
  
*     CHECK FOR RMS/RAM ERRORS/MESSAGES 
      IF (((MTY .GE. O"32") .AND. (MTY .LE. O"34")) .OR.
     .     (MTY .EQ. O"52")) GO TO 400
  
  
      IRECV = 3H NO 
      IF (IFLD(FC13) .EQ. 0) IRECV = 3HYES
      IRW = 3H R
      IF ((IFLD(26) .AND. 1) .NE. 0) IRW = 3H W 
  
*     CHECK FOR ERRORS CONTAINING A FUNCTION TO BE REPORTED 
      IF ((MTY .EQ. O"4003") .OR. (MTY .EQ. O"4004")) GO TO 50
      IF ((MTY.NE.O"50").AND.(MTY.NE.O"51").AND.(MTY.NE.O"63"))GO TO 100
  
   50 CALL LOAPR (1,IFLD(20),IFLD(FJOB),IRECV,IFLD(21),IRW,IFLD(FPPU),
     .              IFLD(FCHAN),SP) 
      ENCODE (10,55,PL(8)) IFLD(23) 
   55 FORMAT (O4,6X)
      PL( 9) = MFID 
      PL(10) = IFLD(22) 
      CALL PRINT34 ( 23, 10 ) 
      GO TO 500 
  
  100 ICYL = PSBDWN(2)
      ITRK = PSBDWN(3)
      ISEC = PSBDWN(4)
      SIC = MIC = IDC = L1DC = L2DC = 1H
  
*     CHECK FOR ADDRESS ERRORS: NO CH/UN/D.S. 
      IF (MTY .EQ. O"100") THEN 
          CALL LOAPR (1,IFLD(20),IFLD(FJOB),IRECV,IFLD(21),IRW, 
     .                  IFLD(FPPU),ICYL,ITRK) 
          CALL LOAPR (9,ISEC,MFID,IFLD(22),IFLD(23),SP,SP,SP,SP)
          CALL PRINT34 ( 19, 12 ) 
          GO TO 500 
      ENDIF 
  
      CALL LOAPR (1,IFLD(20),IFLD(FJOB),IRECV,IFLD(21),IRW,IFLD(FCHAN), 
     .              IFLD(FUN),ICYL) 
      CALL LOAPR (9,ITRK,ISEC,MFID,IFLD(22),IFLD(23),IFLD(31),IFLD(32), 
     .              IFLD(33)) 
      IF (FROG(18) .EQ. 3HYES) GO TO 200
  
*     PREPARE 132 COLUMN DETAIL REPORT
      CALL LOAPR (17,IFLD(34),IFLD(35),IFLD(36),IFLD(37),IFLD(38),
     .               IFLD(39),IFLD(40),SP)
      CALL PRINT34 ( 104, 23 )
      IF (FLAGS(11) .EQ. 3HOFF) GO TO 300 
  
*     PREPARE 132 COLUMN DETAIL EXTENDED REPORT 
      CALL LOAPR (1,IFLD(41),IFLD(42),NFLD(31),NFLD(32),NFLD(33), 
     .              NFLD(34),NFLD(35),NFLD(36)) 
      PL(9) = NFLD(37)
      PL(10) = NFLD(38) 
      CALL PRINT34 (20,10)
      GO TO 300 
  
*     PREPARE 80 COLUMN DETAIL REPORT 
  200 CALL PRINT34 ( 21, 13 ) 
      CALL LOAPR (1,IFLD(31),IFLD(32),IFLD(33),IFLD(34),IFLD(35), 
     .              IFLD(36),IFLD(37),IFLD(38)) 
      PL(9) = IFLD(39)
      PL(10) = IFLD(40) 
      CALL PRINT34 (22,10)
      IF (FLAGS(11) .EQ. 3HOFF) GO TO 300 
  
*     PREPARE 80 COLUMN DETAIL EXTENDED REPORT
      CALL LOAPR (1,IFLD(41),IFLD(42),NFLD(31),NFLD(32),NFLD(33), 
     .              NFLD(34),NFLD(35),NFLD(36)) 
      PL(9) = NFLD(37)
      PL(10) = NFLD(38) 
      CALL PRINT34 (22,10)
  
*     CALL OUT SELECTED HEXADECIMAL FIELDS
  300 DO 302 I = 31,42
      IF (IFLD(I) .NE. 0) GO TO 306 
      IF (I .GE. 34) GO TO 302
      IF (NFLD(I) .NE. 0) GO TO 306 
  302 CONTINUE
      PRINT 304 
  304 FORMAT (3X,'DETAILED STATUS UNAVAILABLE FOR EXTRACTION OF ',
     .           'HEXADECIMAL VALUES',/)
      LINE = LINE + 2 
      GO TO 500 
  
  306 IF ((IFLD(33) .AND. 1) .EQ. 1) THEN 
         PRINT 308
  308    FORMAT (3X,'ADAPTER SELECTED WRONG CM OR MORE THAN ONE CM',/,
     .           3X,'SYSTEM/MANUAL INTERVENTION CODES, DELAY CODE AND ',
     .              'DIAGNOSTIC CODES INVALID',/) 
         LINE = LINE + 3
         GO TO 500
      ENDIF 
  
      IF ((IFLD(37) .AND. O"100") .NE. 0) 
     .     SIC = SHIFT (IFLD(39),-4) .AND. O"377" 
      IF (SIC .EQ. Z"A6") L1DC = IFLD(38) .AND. O"377"
      IF ((IFLD(37) .AND. O"40") .NE. 0)
     .     MIC = IFLD(40) .AND. O"377"
      IF (MIC .EQ. Z"6A") THEN
         L2DCA = SHIFT (IFLD(39), 4) .AND. O"360" 
         L2DCB = SHIFT (IFLD(40),-8) .AND. O"017" 
         L2DC  = L2DCA .OR. L2DCB 
      ENDIF 
      IF ((IFLD(37) .AND. O"20") .NE. 0)
     .     IDC = SHIFT(IFLD(41),-4) .AND. O"377"
  
      ENCODE (10,310,PSIC) SIC
      ENCODE (10,310,PMIC) MIC
      ENCODE (10,310,PIDC) IDC
  310 FORMAT (4X,Z2,4X) 
      IF (SIC .EQ. 1H ) PSIC = 10H    NV
      IF (MIC .EQ. 1H ) PMIC = 10H    NV
      IF (IDC .EQ. 1H ) PIDC = 10H    NV
      PRINT 312,PSIC,PMIC,PIDC
  312 FORMAT (3X,'HEXADECIMAL VALUES EXTRACTED FROM DETAILED STATUS', 
     .           '  (NV = VALUE NOT VALID):',/, 
     .        3X,'SYSTEM/MANUAL INTERVENTION AND DELAY CODES:',3(A10))
      LINE = LINE + 3 
  
      IF ((MTY .EQ. O"3400") .OR. (MTY .EQ. O"3401")) GO TO 314 
      IF ((L1DC .EQ. 1H ) .AND. (L2DC .EQ. 1H )) GO TO 318
  314 ENCODE (10,310,PL1DC) L1DC
      ENCODE (10,310,PL2DC) L2DC
      IF (L1DC .EQ. 1H ) PL1DC = 10H    NV
      IF (L2DC .EQ. 1H ) PL2DC = 10H    NV
      PRINT 316,PL1DC,PL2DC 
  316 FORMAT (3X,'LEVEL I/II DIAGNOSTIC CODES:',2(A10)) 
      LINE = LINE + 1 
  
  318 PRINT 320 
  320 FORMAT (/)
  
      GO TO 500 
  
*     GENERATE DETAIL REPORT FOR RMS/RAM ERRORS/MESSAGES
  400 IF (MTY .EQ. O"32") THEN
         CALL LOAPR (1,IFLD(20),IFLD(FJOB),IFLD(27),IFLD(FPPU), 
     .                 IFLD(FCHAN),IFLD(FUN),IFLD(21),IFLD(22)) 
         PL (9) = IFLD(23)
         PL(10) = MFID
         CALL PRINT34 (25,10) 
         GO TO 500
      ENDIF 
  
      CALL LOAPR (1,IFLD(20),IFLD(FJOB),IFLD(27),IFLD(FPPU),
     .              IFLD(FCHAN),IFLD(FUN),MFID,SP)
      CALL PRINT34 (26,7) 
  
  500 CONTINUE
      RETURN
      END 
      SUBROUTINE DL4IHD 
* 
*     DESCRIPTION 
*     ----------- 
*     SUBROUTINE *DL4IHD* GENERATES DETAIL REPORTS FOR HYDRA ERRORS.
* 
*     CALLED BY 
*     --------- 
*     SUBROUTINE AN4IHD 
* 
*CALL HPACOM1 
*CALL HPACOM2 
  
      COMMON / IHD / JFLD(25), SYMPTOM, IDIAG(4, 2) 
  
      DIMENSION SICODE (4, 11), MICODE (4, 32), IDSCODE (4, 13),
     .         ICHCODE (4, 14)
      DIMENSION MSG (3, 4), FAULT (4, 40) 
  
      DATA (MSG(I,1),I=1,3,1) / 
     .10HCHANNEL DO,10HWNED BY SY,10HSTEM      /
      DATA (MSG(I,2),I=1,3,1) / 
     .10HEQUIPMENT ,10HTURNED OFF,10H BY SYSTEM/
      DATA (MSG(I,3),I=1,3,1) / 
     .10HERROR SUMM,10HARY STATUS,10H:         /
      DATA (MSG(I,4),I=1,3,1) / 
     .10HIHD DRIVER,10H ERRORS   ,10H          /
      DATA (FAULT(I,1),I=1,4,1) / 
     .O"01",10HCHANNEL PA,10HRITY ERROR,10H          /
      DATA (FAULT(I,2),I=1,4,1) / 
     .O"02",10HUNDEFINED ,10H          ,10H          /
      DATA (FAULT(I,3),I=1,4,1) / 
     .O"03",10HUNDEFINED ,10H          ,10H          /
      DATA (FAULT(I,4),I=1,4,1) / 
     .O"04",10HCHANNEL DE,10HTECTED ERR,10HOR        /
      DATA (FAULT(I,5),I=1,4,1) / 
     .O"05",10HCHANNEL DE,10HTECTED CM ,10HERROR     /
      DATA (FAULT(I,6),I=1,4,1) / 
     .O"06",10HISI CHANNE,10HL ERROR   ,10H          /
      DATA (FAULT(I,7),I=1,4,1) / 
     .O"07",10HCHANNEL HU,10HNG FULL   ,10H          /
      DATA (FAULT(I,8),I=1,4,1) / 
     .O"10",10HATTENTION ,10HTIMEOUT   ,10H          /
      DATA (FAULT(I,9),I=1,4,1) / 
     .O"11",10HCHANNEL FU,10HNCTION TIM,10HEOUT      /
      DATA (FAULT(I,10),I=1,4,1) /
     .O"12",10HUNDEFINED ,10H          ,10H          /
      DATA (FAULT(I,11),I=1,4,1) /
     .O"13",10HUNDEFINED ,10H          ,10H          /
      DATA (FAULT(I,12),I=1,4,1) /
     .O"14",10HDATA PARIT,10HY ERROR   ,10H          /
      DATA (FAULT(I,13),I=1,4,1) /
     .O"15",10HUNDEFINED ,10H          ,10H          /
      DATA (FAULT(I,14),I=1,4,1) /
     .O"16",10HUNDEFINED ,10H          ,10H          /
      DATA (FAULT(I,15),I=1,4,1) /
     .O"17",10HUNDEFINED ,10H          ,10H          /
      DATA (FAULT(I,16),I=1,4,1) /
     .O"20",10HDEVICE NOT,10H READY    ,10H          /
      DATA (FAULT(I,17),I=1,4,1) /
     .O"21",10HOVERTEMP  ,10H          ,10H          /
      DATA (FAULT(I,18),I=1,4,1) /
     .O"22",10HUNDEFINED ,10H          ,10H          /
      DATA (FAULT(I,19),I=1,4,1) /
     .O"23",10HUNDEFINED ,10H          ,10H          /
      DATA (FAULT(I,20),I=1,4,1) /
     .O"24",10HINCOMPLETE,10H DATA TRAN,10HSFER      /
      DATA (FAULT(I,21),I=1,4,1) /
     .O"25",10HUNDEFINED ,10H          ,10H          /
      DATA (FAULT(I,22),I=1,4,1) /
     .O"26",10HUNDEFINED ,10H          ,10H          /
      DATA (FAULT(I,23),I=1,4,1) /
     .O"27",10HUNDEFINED ,10H          ,10H          /
      DATA (FAULT(I,24),I=1,4,1) /
     .O"30",10HIHD FAILUR,10HE         ,10H          /
      DATA (FAULT(I,25),I=1,4,1) /
     .O"31",10HINVALID CO,10HMMAND BLOC,10HK NUMBER  /
      DATA (FAULT(I,26),I=1,4,1) /
     .O"32",10HINCORRECT ,10HUNIT SELEC,10HTED       /
      DATA (FAULT(I,27),I=1,4,1) /
     .O"33",10HSELECT TIM,10HEOUT      ,10H          /
      DATA (FAULT(I,28),I=1,4,1) /
     .O"34",10HPOWER UP F,10HAILURE    ,10H          /
      DATA (FAULT(I,29),I=1,4,1) /
     .O"35",10HPOWER DOWN,10H FAILURE  ,10H          /
      DATA (FAULT(I,30),I=1,4,1) /
     .O"36",10HTRANSFER C,10HOMPLETE TI,10HMEOUT     /
      DATA (FAULT(I,31),I=1,4,1) /
     .O"37",10HUNEXPECTED,10H EXECUTION,10H STATUS   /
      DATA (FAULT(I,32),I=1,4,1) /
     .O"40",10HCOMMAND BL,10HOCK TIMEOU,10HT         /
      DATA (FAULT(I,33),I=1,4,1) /
     .O"41",10HUNEXPECTED,10H DELAY STA,10HTUS       /
      DATA (FAULT(I,34),I=1,4,1) /
     .O"42",10HLOAD OPER.,10H MODE PARA,10HMS FAILURE/
      DATA (FAULT(I,35),I=1,4,1) /
     .O"43",10HSELECT ACT,10HIVE DROP  ,10H          /
      DATA (FAULT(I,36),I=1,4,1) /
     .O"44",10HT-REGISTER,10H EMPTY TIM,10HEOUT      /
      DATA (FAULT(I,37),I=1,4,1) /
     .O"45",10HI/O INITIA,10HTION ERROR,10H          /
      DATA (FAULT(I,38),I=1,4,1) /
     .O"46",10HI/O COMPLE,10HTE FAILURE,10H          /
      DATA (FAULT(I,39),I=1,4,1) /
     .O"47",10HUNDEFINED ,10H          ,10H          /
      DATA (FAULT(I,40),I=1,4,1) /
     .O"50",10HDIAGNOSTIC,10H FAULT    ,10H          /
  
      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"68",10HTRANSFER C,10HOUNT ERROR,10H          /
      DATA (SICODE(I,9),I=1,4,1) /
     .Z"82",10HDISK NOT F,10HORMATTED  ,10H          /
      DATA (SICODE(I,10),I=1,4,1) / 
     .Z"A6",10HDIAGNOSTIC,10H FAULT DET,10HECTED     /
      DATA (SICODE(I,11),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 (ICHCODE(I,1),I=1,4,1) / 
     .R"50",10HUNCORRECTE,10HD CM ERROR,10H          /
      DATA (ICHCODE(I,2),I=1,4,1) / 
     .R"51",10HCM REJECT ,10H          ,10H          /
      DATA (ICHCODE(I,3),I=1,4,1) / 
     .R"52",10HINVALID CM,10H RESPONSE ,10H          /
      DATA (ICHCODE(I,4),I=1,4,1) / 
     .R"53",10HRESPONSE C,10HODE PARITY,10H ERROR    /
      DATA (ICHCODE(I,5),I=1,4,1) / 
     .R"54",10HCMI READ D,10HATA PARITY,10H ERROR    /
      DATA (ICHCODE(I,6),I=1,4,1) / 
     .R"55",10HTEST MODE ,10HCOMPARE ER,10HROR       /
      DATA (ICHCODE(I,7),I=1,4,1) / 
     .R"56",10HOVERFLOW E,10HRROR      ,10H          /
      DATA (ICHCODE(I,8),I=1,4,1) / 
     .R"57",10HISI INPUT ,10HERROR     ,10H          /
      DATA (ICHCODE(I,9),I=1,4,1) / 
     .R"58",10HISI TIMEOU,10HT         ,10H          /
      DATA (ICHCODE(I,10),I=1,4,1) /
     .R"59",10HJY DATA ER,10HROR       ,10H          /
      DATA (ICHCODE(I,11),I=1,4,1) /
     .R"60",10HBAS PARITY,10H ERROR    ,10H          /
      DATA (ICHCODE(I,12),I=1,4,1) /
     .R"61",10HJZ ERROR  ,10H          ,10H          /
      DATA (ICHCODE(I,13),I=1,4,1) /
     .R"62",10HJY ERROR  ,10H          ,10H          /
      DATA (ICHCODE(I,14),I=1,4,1) /
     .R"63",10HJX ERROR  ,10H          ,10H          /
  
      IF (RCFD .EQ. 2HON) CALL UCHEK34
  
      IF (IFLD(FACHAN) .EQ. 0) PORT = R"A"
      IF (IFLD(FACHAN) .NE. 0) PORT = R"B"
  
*     CHECK FOR RMS/RAM ERRORS/MESSAGES 
      IF (((MTY .GE. O"32") .AND. (MTY .LE. O"34")) .OR.
     .     (MTY .EQ. O"52")) GO TO 250
  
  
      IF ((SYMPTOM .EQ.  O"15") .OR. (SYMPTOM .EQ. O"30")) GO TO 100
      IF  (SYMPTOM .EQ. O"100") GO TO 200 
      IF  (SYMPTOM .EQ. O"103") GO TO 400 
      IF  (SYMPTOM .EQ. O"111") GO TO 300 
      IF ((SYMPTOM .EQ. O"106") .OR. (SYMPTOM .EQ. O"107")) GO TO 500 
      IF ((SYMPTOM .EQ. O"110")) GO TO 500
      GO TO 900 
  
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
*     PROCESS THE CHANNEL DOWNED/EQUIPMENT OFFED MESSAGES 
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
  
  100 IF (SYMPTOM .EQ. O"15") NUM = 1 
      IF (SYMPTOM .EQ. O"30") NUM = 2 
      CALL LOAPR (1,IFLD(20),MSG(1,NUM),MSG(2,NUM),MSG(3,NUM),
     .              IFLD(FPPU),IFLD(FC16),PORT,SP)
      CALL PRINT34 (9, 7) 
      CALL PRINT34 (13, 0)
      GO TO 900 
  
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
*     PROCESS THE IHD DRIVER ERRORS 
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
  
  200 CONTINUE
*     TIME
      PL(1) = IFLD(20)
*     READ/WRITE
      PL(7) = 4HREAD
      IF ((NFLD(25) .AND. 2) .NE. 0) PL(7) = 5HWRITE
*     OCCURRENCES 
      PL( 8) = 10H  RETRYS= 
      PL( 9) = SHIFT(NFLD(25),-12) .AND. O"77"
*     CPP/CCH/PORT
      PL(10) = 10HCCP/CCH = 
      PL(11) = IFLD(FPPU) 
      PL(12) = IFLD(FC16) 
      PL(13) = PORT 
  
*     FINAL FAULT 
      FF = NFLD(21) .AND. Z"FFF"
      FFTYPE = R"OS"
      PL(2) = FFTYPE
      PL(3) = FF
      DO 110 I = 1,40 
         IF (FF .NE. FAULT(1,I)) GO TO 110
         PL(4) = FAULT(2,I) 
         PL(5) = FAULT(3,I) 
         PL(6) = FAULT(4,I) 
         GO TO 112
  110 CONTINUE
  112 IF ((LINE + 10) .GT. PLF) THEN
         CALL HEADER
         CALL PHEAD34 (1) 
      ENDIF 
      CALL PRINT34 (14, 13) 
  
*     CHECK IF THE FAULT CODE CAN BE FURTHER DEFINED
*     - - - - - IF IHD FAILURE, IDENTIFY THE SI/MI/DELAY CODE 
      IF ((NFLD(21) .AND. O"7777 0000 0000") .EQ. 0) THEN 
         IF ((SHIFT(IFLD(22),06) .AND. 1) .NE. 0) THEN
            FFTYPE = R"SI"
            FF = SHIFT(IFLD(22),32) .AND. Z"FF" 
            DO 114 I = 1, 11
            IF (FF .NE. SICODE(1,I)) GO TO 114
            PL(2) = SICODE(2,I) 
            PL(3) = SICODE(3,I) 
            PL(4) = SICODE(4,I) 
            GO TO 130 
  114       CONTINUE
            GO TO 130 
         ELSE IF ((SHIFT(IFLD(22),07) .AND. 1) .NE. 0) THEN 
            FFTYPE = R"MI"
            FF = SHIFT(IFLD(22),48) .AND. Z"FF" 
            DO 116 I = 1, 32
            IF (FF .NE. MICODE(1,I)) GO TO 116
            PL(2) = MICODE(2,I) 
            PL(3) = MICODE(3,I) 
            PL(4) = MICODE(4,I) 
            GO TO 130 
  116       CONTINUE
            GO TO 130 
         ELSE IF ((SHIFT(IFLD(22),08) .AND. 1) .NE. 0) THEN 
            FFTYPE = R"DS"
            FF = (SHIFT(IFLD(22),04) .AND. Z"F0") .OR.
     .           (SHIFT(IFLD(23),04) .AND. Z"0F") 
            DO 118 I = 1, 13
            IF (FF .NE. IDSCODE(1,I)) GO TO 118 
            PL(2) = IDSCODE(2,I)
            PL(3) = IDSCODE(3,I)
            PL(4) = IDSCODE(4,I)
            GO TO 130 
  118       CONTINUE
            GO TO 130 
         ENDIF
      ENDIF 
      GO TO 140 
  130 ENCODE (10,132,PL(1)) FFTYPE,FF 
  132 FORMAT (6X,R2,Z2) 
      CALL PRINT34 (17, 4)
  
*     - - - - - IF CHANNEL FAILURE, IDENTIFY THE ERROR REGISTER BIT 
  140    IERRST = SHIFT(NFLD(24),22)
         DO 145 I = 1, 14 
         IF ((SHIFT(IERRST,I) .AND. 1) .EQ. 0) GO TO 145
         PL(1) = R"CHAN"
         PL(2) = ICHCODE(2,I) 
         PL(3) = ICHCODE(3,I) 
         PL(4) = ICHCODE(4,I) 
         CALL PRINT34 (17, 4) 
         GO TO 150
  145    CONTINUE 
  
  150 CALL PLSEC(5) 
  
*     FAILING ADDRESS - CYL/TRK/SEC IN OCTAL AND HEX
*     CHECK FOR IHD AND DEVICE STATUS (CONTAINS FAILING ADDRESS)
      IF ((NFLD(21) .AND. O"7777 0000 0000") .NE. 0) GO TO 160
      PL(1) = PL(4) = SHIFT(IFLD(24),24) .AND. Z"FFFF"
      PL(2) = PL(5) = SHIFT(IFLD(24),32) .AND. Z"FF"
      PL(3) = PL(6) = SHIFT(IFLD(24),40) .AND. Z"FF"
      HCF(5) = 42 
      CALL PHEAD34(5) 
      PL(1) = PL(2) = PL(3) = PL(4) = PL(5) = PL(6) = 10H 
      HCF(5) = 0
  
*     INITIAL SEEK ADDRESS - CYL/TRK/SEC IN OCTAL AND HEX 
  160 PL(1) = PL(4) = SHIFT(NFLD(22),-12) .AND. O"7777" 
      PL(2) = PL(5) = SHIFT(NFLD(22),- 6) .AND. O"77" 
      PL(3) = PL(6) = NFLD(22) .AND. O"77"
*     SECTOR TRANSFER COUNT (STC) 
      PL(7) = SHIFT(NFLD(22),-24) .AND. O"7777" 
*     ERROR REGISTER
      PL(8) = SHIFT(NFLD(24),36) .AND. Z"FFFF"
*     LAST ISI ADAPTER FUNCTION (LCF) 
      PL(9) = SHIFT(NFLD(24),20) .AND. Z"FFFF"
*     OPERATIONAL REGISTER
      PL(10) = NFLD(24) .AND. Z"FFFF" 
*     LAST IHD COMMAND (LSC)
      PL(11) = (SHIFT(NFLD(23),4) .AND. Z"FFF0") .OR. 
     .         (SHIFT(NFLD(24),4) .AND. Z"000F")
*     CONTROL REGISTER
      PL(12) = SHIFT(NFLD(25),24) .AND. Z"FFFF" 
*     IDLE STATUS 
      PL(13) = SHIFT(NFLD(23),32) .AND. Z"FFFF" 
*     T REGISTER
      PL(14) = 0
      IF ((NFLD(21) .AND. O"7777 0000 0000 0000") .EQ. 0) 
     .     PL(14) = IFLD(21) .AND. Z"FFFF FFFF FFFF"
*     RESIDUAL BYTE COUNT 
      PL(15) = SHIFT(NFLD(22),24) .AND. O"7777" 
*     ISI CHANNEL FLAG
      PL(16) = SHIFT(NFLD(25),8) .AND. Z"F" 
*     BIT SIGNIFICANT RESPONSE
      PL(17) = SHIFT(NFLD(23),-12) .AND. Z"FFFF"
      IF ((NFLD(21) .AND.Z"FFF") .NE. O"32") PL(17) = 10H 
  
*     PRINT THE STATUS
      HCF(5) = 39 
      IF ((NFLD(21) .AND.Z"FFF") .NE. O"32") HCF(5) = 41
      CALL PHEAD34 (5)
      DO 218 I = 1, 17
  218 PL(I) = 10H 
      HCF(5) = 0
  
*     CHECK FOR IHD AND DEVICE STATUS 
      IF ((NFLD(21) .AND. O"7777 0000 0000") .NE. 0) GO TO 900
      PL(1) = 10H         I 
      PL(2) = 10HHD STATUS: 
      PL(3) = SHIFT (IFLD(22),16) .AND. Z"FFFF" 
      PL(4) = SHIFT (IFLD(22),32) .AND. Z"FFFF" 
      PL(5) = SHIFT (IFLD(22),48) .AND. Z"FFFF" 
      PL(6) = (SHIFT (IFLD(22),04) .AND. Z"FFF0") .OR.
     .        (SHIFT (IFLD(23),04) .AND. Z"000F") 
      PL(7) = SHIFT (IFLD(23),20) .AND. Z"FFFF" 
      PL(8) = SHIFT (IFLD(23),36) .AND. Z"FFFF" 
      PL(9) = SHIFT (IFLD(23),52) .AND. Z"FFFF" 
      PL(10) = 10H      DEVI
      PL(11) = 10HCE STATUS:  
      PL(12) = (SHIFT (IFLD(23),08) .AND. Z"FF00") .OR. 
     .         (SHIFT (IFLD(24),08) .AND. Z"00FF")
      PL(13) = SHIFT (IFLD(24),24) .AND. Z"FFFF"
      PL(14) = SHIFT (IFLD(24),40) .AND. Z"FFFF"
      PL(15) = SHIFT (IFLD(24),56) .AND. Z"FFFF"
      PL(16) = (SHIFT (IFLD(24),12) .AND. Z"F000") .OR. 
     .         (SHIFT (IFLD(25),12) .AND. Z"0FFF")
      PL(17) = SHIFT (IFLD(25),28) .AND. Z"FFFF"
      PL(18) = SHIFT (IFLD(25),44) .AND. Z"FFFF"
      PL(19) = IFLD(25) .AND. Z"FFFF" 
      CALL PRINT34 (15, 19) 
      GO TO 900 
  
*     GENERATE DETAIL REPORT FOR RMS/RAM ERRORS/MESSAGES
  250 CONTINUE
      IFLD(27) = SHIFT(IFLD(22),-12) .AND. Z"FFFF FFFF FFFF"
      IFLD(23) = SHIFT(IFLD(21),36) .AND. Z"FFF"
      IFLD(22) = SHIFT(IFLD(21),24) .AND. Z"FFF"
      IFLD(21) = SHIFT(IFLD(21),12) .AND. Z"FFF"
      IF (MTY .EQ. O"32") THEN
         CALL LOAPR (1,IFLD(20),IFLD(FJOB),IFLD(27),IFLD(FPPU), 
     .                 IFLD(FCHAN),IFLD(FUN),IFLD(21),IFLD(22)) 
         PL (9) = IFLD(23)
         PL(10) = MFID
         IF (IFLD(33) .EQ. 1) PL(11) = R"   CIO"
      CALL PRINT34 ( 25, 11 ) 
         GO TO 900
      ENDIF 
  
      CALL LOAPR (1,IFLD(20),IFLD(FJOB),IFLD(27),IFLD(FPPU),
     .              IFLD(FCHAN),IFLD(FUN),MFID,SP)
         IF (IFLD(33) .EQ. 1) PL(8) = R"   CIO" 
      CALL PRINT34 ( 26, 8 )
      GO TO 900 
  
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
*     PROCESS THE ERROR RECOVERY STATUS 
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
  
  300 NUM = 3 
      STATUS1 = 10H  RECOVERE 
      STATUS2 = 10HD
      IF (IFLD(FC13) .NE. 0) STATUS1 = 10HUNRECOVERE
      CALL LOAPR (1,IFLD(20),MSG(1,NUM),MSG(2,NUM),MSG(3,NUM),
     .              STATUS1,STATUS2,IFLD(FPPU),IFLD(FC16))
      PL(9) = PORT
      CALL PRINT34 (12, 9)
      CALL PRINT34 (13, 0)
      GO TO 900 
  
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
*     PROCESS THE ERROR REGISTER IMAGES 
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
  
  400 CALL LOAPR (1,IFLD(20),IFLD(FPPU),IFLD(FC16),PORT,
     .              SP,SP,SP,SP)
      CALL PRINT34 (10,4) 
      PL( 1) = 0
      PL( 2) = 7
      PL( 3) = SHIFT (NFLD(21),16) .AND. Z"FFFF"
      PL( 4) = SHIFT (NFLD(21),32) .AND. Z"FFFF"
      PL( 5) = SHIFT (NFLD(21),48) .AND. Z"FFFF"
      PL( 6) = (SHIFT (NFLD(21),04) .AND. Z"FFF0") .OR. 
     .         (SHIFT (NFLD(22),04) .AND. Z"000F")
      PL( 7) = SHIFT (NFLD(22),20) .AND. Z"FFFF"
      PL( 8) = SHIFT (NFLD(22),36) .AND. Z"FFFF"
      PL( 9) = SHIFT (NFLD(22),52) .AND. Z"FFFF"
      PL(10) = (SHIFT (NFLD(22),08) .AND. Z"FF00") .OR. 
     .         (SHIFT (NFLD(23),08) .AND. Z"00FF")
      PL(11) = 8
      PL(12) = 15 
      PL(13) = SHIFT (NFLD(23),24) .AND. Z"FFFF"
      PL(14) = SHIFT (NFLD(23),40) .AND. Z"FFFF"
      PL(15) = SHIFT (NFLD(23),56) .AND. Z"FFFF"
      PL(16) = (SHIFT (NFLD(23),12) .AND. Z"F000") .OR. 
     .         (SHIFT (NFLD(24),12) .AND. Z"0FFF")
      PL(17) = SHIFT (NFLD(24),28) .AND. Z"FFFF"
      PL(18) = SHIFT (NFLD(24),44) .AND. Z"FFFF"
      PL(19) = NFLD(24) .AND. Z"FFFF" 
      PL(20) = SHIFT (NFLD(25),16) .AND. Z"FFFF"
      PL(21) = 16 
      PL(22) = 23 
      PL(23) = SHIFT (NFLD(25),32) .AND. Z"FFFF"
      PL(24) = SHIFT (NFLD(25),48) .AND. Z"FFFF"
      PL(25) = (SHIFT (NFLD(25),04) .AND. Z"FFF0") .OR. 
     .         (SHIFT (JFLD(21),04) .AND. Z"000F")
      PL(26) = SHIFT (JFLD(21),20) .AND. Z"FFFF"
      PL(27) = SHIFT (JFLD(21),36) .AND. Z"FFFF"
      PL(28) = SHIFT (JFLD(21),52) .AND. Z"FFFF"
      PL(29) = (SHIFT (JFLD(21),08) .AND. Z"FF00") .OR. 
     .         (SHIFT (JFLD(22),08) .AND. Z"00FF")
      PL(30) = SHIFT (JFLD(22),24) .AND. Z"FFFF"
      PL(31) = 24 
      PL(32) = 31 
      PL(33) = SHIFT (JFLD(22),40) .AND. Z"FFFF"
      PL(34) = SHIFT (JFLD(22),56) .AND. Z"FFFF"
      PL(35) = (SHIFT (JFLD(22),12) .AND. Z"F000") .OR. 
     .         (SHIFT (JFLD(23),12) .AND. Z"0FFF")
      PL(36) = SHIFT (JFLD(23),28) .AND. Z"FFFF"
      PL(37) = SHIFT (JFLD(23),44) .AND. Z"FFFF"
      PL(38) = JFLD(23) .AND. Z"FFFF" 
      PL(39) = SHIFT (JFLD(24),16) .AND. Z"FFFF"
      PL(40) = SHIFT (JFLD(24),32) .AND. Z"FFFF"
      PL(41) = 32 
      PL(42) = 39 
      PL(43) = SHIFT (JFLD(24),48) .AND. Z"FFFF"
      PL(44) = (SHIFT (JFLD(24),04) .AND. Z"FFF0") .OR. 
     .         (SHIFT (JFLD(25),04) .AND. Z"000F")
      PL(45) = SHIFT (JFLD(25),20) .AND. Z"FFFF"
      PL(46) = SHIFT (JFLD(25),36) .AND. Z"FFFF"
      PL(47) = SHIFT (JFLD(25),52) .AND. Z"FFFF"
      PL(48) = (SHIFT (JFLD(25),08) .AND. Z"FF00") .OR. 
     .         (SHIFT (IFLD(21),08) .AND. Z"00FF")
      PL(49) = SHIFT (IFLD(21),24) .AND. Z"FFFF"
      PL(50) = SHIFT (IFLD(21),40) .AND. Z"FFFF"
      PL(51) = 40 
      PL(52) = 47 
      PL(53) = SHIFT (IFLD(21),56) .AND. Z"FFFF"
      PL(54) = (SHIFT (IFLD(21),12) .AND. Z"F000") .OR. 
     .         (SHIFT (IFLD(22),12) .AND. Z"0FFF")
      PL(55) = SHIFT (IFLD(22),28) .AND. Z"FFFF"
      PL(56) = SHIFT (IFLD(22),44) .AND. Z"FFFF"
      PL(57) = IFLD(22) .AND. Z"FFFF" 
  
      PL(58) = SHIFT (IFLD(23),16) .AND. Z"FFFF"
      PL(59) = SHIFT (IFLD(23),32) .AND. Z"FFFF"
      PL(60) = SHIFT (IFLD(23),48) .AND. Z"FFFF"
  
      CALL PRINT34 (11, 60) 
      GO TO 900 
  
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
*     PROCESS THE DIAGNOSTIC STATUS MESSAGES
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
  
  500 CALL LOAPR (1,IFLD(20),TYPDT,TYPEST,IFLD(FPPU),IFLD(FC16),
     .              PORT,IFLD(FUN),MFID)
      IF (SYMPTOM .EQ. O"106") TYPE = R"READ    " 
      IF (SYMPTOM .EQ. O"107") TYPE = R"WRITE   " 
      IF (SYMPTOM .EQ. O"110") TYPE = R"LEVEL I " 
      PL(9) = TYPE
      IPNT = SYMPTOM - O"111" 
      IDIAG(IPNT,1) = IDIAG(IPNT,1) + 1 
      PL(10) = R"PASS"
  
*     DETERMINE THE OUTCOME 
      IF (((SHIFT(IFLD(21),5) .AND. 7) .EQ. 7) .AND.
     .    ((SHIFT(IFLD(21),1) .AND. 1) .EQ. 0) .AND.
     .    ((SHIFT(IFLD(21),2) .AND. 1) .EQ. 1)) THEN
         IF ((SHIFT(IFLD(21),6) .AND. 1) .EQ. 1) THEN 
            ICODE = SHIFT(IFLD(21),32) .AND. Z"FF"
            IF (ICODE .NE. Z"A6") GO TO 900 
            IDIAG(IPNT,1) = IDIAG(IPNT,1) - 1 
            IDIAG(IPNT,2) = IDIAG(IPNT,2) + 1 
            PL(10) = R"FAIL"
            FRU1 = SHIFT(IFLD(21),20) .AND. Z"F"
            FRU2 = SHIFT(IFLD(21),24) .AND. Z"F"
            FRU3 = SHIFT(IFLD(21),36) .AND. Z"F"
            FRU4 = SHIFT(IFLD(21),40) .AND. Z"F"
            ENCODE (10,510,PL(11)) FRU1,FRU2,FRU3,FRU4
  510       FORMAT (Z1,', ',Z1,', ',Z1,', ',Z1) 
         ELSE IF ((SHIFT(IFLD(21),7) .AND. 1) .EQ. 1) THEN
            ICODE = SHIFT(IFLD(21),48) .AND. Z"FF"
            IF (ICODE .NE. Z"6A") GO TO 900 
            IDIAG(IPNT,1) = IDIAG(IPNT,1) - 1 
            IDIAG(IPNT,2) = IDIAG(IPNT,2) + 1 
            PL(10) = R"FAIL"
            FRU1 = SHIFT(IFLD(21),36) .AND. Z"F"
            FRU2 = SHIFT(IFLD(21),40) .AND. Z"F"
            FRU3 = SHIFT(IFLD(21),20) .AND. Z"F"
            FRU4 = SHIFT(IFLD(21),24) .AND. Z"F"
            ENCODE (10,510,PL(11)) FRU1,FRU2,FRU3,FRU4
         ENDIF
      ENDIF 
  
      IF (RCFD .NE. 2HON) THEN
         DO 520 I = 1, 11 
  520    PL(I) = 10H
         GO TO 900
      ENDIF 
  
      CALL PRINT34 (16, 11) 
      GO TO 900 
  900 CONTINUE
  
      RETURN
      END 
      SUBROUTINE DL4OD3 
* 
**        DESCRIPTION 
*         ----------- 
*         SUBROUTINE *DL4OD3* GENERATES DETAIL REPORTS FOR OPTICAL DISK 
* 
*         ENTRY CONDITIONS
*         ----------------
*         DATA AREAS SHARED - 
*         IFLD(64), SEFREC(8) 
* 
*         DEFINITIONS:          OPTICAL DISK
*                      -------------------------- 
*          IFLD(21) =     SEF RECORD WD 4 
*          IFLD(22) =     SEF RECORD WD 5 
*          IFLD(23) =     SEF RECORD WD 6 
*          IFLD(24) =     SEF RECORD WD 7 
*          IFLD(25) =     SEF RECORD WD 8 
* 
*         DATA AREAS AND FILES
*         --------------------
*         DATA AREAS
*         IFLD  -  (64)/COMMON BLOCK/AREA TO HOLD THE UNPACKED DATA 
*                  OF THE CURRENT SEF INPUT RECORD IN SEFREC. 
*         PL - (57)/COMMON BLOCK/AREA TO HOLD ONE LOGICAL RECORD
*                  OF DATA TO BE WRITTEN TO OUTPUT. 
*         IYEAR  - (1)/COMMON BLOCK/TEMPORARY USAGE.
* 
*         CALLED BY 
*         --------- 
*          AN4OD3 
* 
*CALL HPACOM1 
*CALL HPACOM2 
*CALL HPACOM3 
  
      DIMENSION PTBL(400,5), PSBDWN(5), TQTY(4) 
      EQUIVALENCE (PTBL(1,1), STOR(1,1))
      EQUIVALENCE (PSBDWN(1), STOR(29,30))
      EQUIVALENCE (TQTY(1),   STOR(34,30))
  
   10 CONTINUE
      IERCDBD = 1H
  
      IFLD(13) = IFLD(FUN) .AND. O"17"
      CALL UCHEK34
  
      IF (FLAGS(4) .EQ. 3HOFF) GO TO 900
  
*          SET READ / WRITE FIELD 
  
      IRW = 4H W
      IF ((IFLD(22) .AND. O"1") .NE. 1) IRW = 4H R
  
      VSNA = IFLD(21) .AND. O"7777 7777"
      VSNB = SHIFT(IFLD(22),48) .AND. O"7777 7777 7777 7777"
  
*        SET RECOVERY 
      RECVR = 4H YES
      IF (IFLD(FC13) .EQ. 1) RECVR = 4H  NO 
  
*          DEVICE TYPE IS OPTICAL DISK OR JUKE BOX
*          LOAD DATA FOR PRINTING DETAIL REPORTS
  
      PL(1) = IFLD(20)
      PL(2) = IFLD(FJOB)
      PL(3) = VSNA
      PL(4) = VSNB
      PL(5) = SHIFT(IFLD(21),12) .AND. O"7777"
      PL(6) = RECVR 
      PL(7) = IRW 
      PL(8) = IFLD(FCHAN) 
      PL(9) = IFLD(FCON)
      PL(10) = IFLD(13) 
  
*     LOAD FIRST HALF OF SECTOR ADDRESS TO PL(11) 
  
      PL(11) = SHIFT(IFLD(25),4) .AND. Z"FFFF 0000" 
  
*     LOAD PL(12)=CONTROLWARE LATER BECAUSE IT COMES FROM F8
  
      PL(13) = MFID 
      PL(14) = SHIFT(IFLD(21),24) .AND. O"7777" 
  
*     LOAD SENSE BYTES C0 THRU D1  (NO C7)
  
      PL(15) = SHIFT(IFLD(23),16) .AND. Z"FFFF" 
      PL(16) = SHIFT(IFLD(23),32) .AND. Z"FFFF" 
      PL(17) = SHIFT(IFLD(23),48) .AND. Z"FFFF" 
      PL(18) = SHIFT(IFLD(24),16) .AND. Z"FFFF" 
      PL(19) = SHIFT(IFLD(24),32) .AND. Z"FFFF" 
      PL(20) = SHIFT(IFLD(24),48) .AND. Z"FFFF" 
      PL(21) = SHIFT(IFLD(25),16) .AND. Z"FFFF" 
      PL(22) = SHIFT(IFLD(25),32) .AND. Z"FFFF" 
      PL(23) = SHIFT(IFLD(25),48) .AND. Z"FFFF" 
  
*        GET THE NEXT SEF RECORD
  
      CALL GNR3 
      CALL SETEM3(1)
      IF (FEOF(SEF) .EQ. 3HYES) GO TO 550 
      IF (IFLD(18) .NE. R" CONTINU") THEN 
  
*       SET SKIPGNR SO AN4OD3 DOES NOT DO A GNR3 CALL 
  
        SKIPGNR = 1 
        GO TO 500 
      ENDIF 
  
*     LOAD LAST HALF OF SECTOR ADDRESS TO PL(11)
  
      PL(11) = PL(11) .OR. (SHIFT(IFLD(21),16) .AND. Z"FFFF") 
  
*     LOAD SENSE BYTES D2 THRU F8 
  
      PL(24) = SHIFT(IFLD(21),16) .AND. Z"FFFF" 
      PL(25) = SHIFT(IFLD(21),32) .AND. Z"FFFF" 
      PL(26) = SHIFT(IFLD(21),48) .AND. Z"FFFF" 
      PL(27) = SHIFT(IFLD(22),16) .AND. Z"FFFF" 
      PL(28) = SHIFT(IFLD(22),32) .AND. Z"FFFF" 
      PL(29) = SHIFT(IFLD(22),48) .AND. Z"FFFF" 
      PL(30) = SHIFT(IFLD(23),16) .AND. Z"FFFF" 
      PL(31) = SHIFT(IFLD(23),32) .AND. Z"FFFF" 
      PL(32) = SHIFT(IFLD(23),48) .AND. Z"FFFF" 
      PL(33) = SHIFT(IFLD(24),16) .AND. Z"FFFF" 
      PL(34) = SHIFT(IFLD(24),32) .AND. Z"FFFF" 
      PL(35) = SHIFT(IFLD(24),48) .AND. Z"FFFF" 
      PL(36) = SHIFT(IFLD(25),16) .AND. Z"FFFF" 
      PL(37) = SHIFT(IFLD(25),32) .AND. Z"FFFF" 
      PL(38) = SHIFT(IFLD(25),48) .AND. Z"FFFF" 
  
*     LOAD CONTROLWARE LEVEL PL(12)  FROM F8 = (PL(38)) 
  
      PL(12) = PL(38) 
  
  500 CONTINUE
  540 CONTINUE
      GO TO 700 
  
  550 CONTINUE
  
*         PRINT OPTICAL DISK DETAIL - 80 COLUMN FORMAT ONLY 
  
  700 CONTINUE
      CALL PRINT34(51,14) 
      DO 720 I=1,24 
  720 PL(I) = PL(I + 14)
      CALL PRINT34(52,15) 
      DO 730 I=1,9
  730 PL(I) = PL(I + 15)
      CALL PRINT34(53,9)
  
      DO 750 I=1,38 
  750 PL(I) = 10H 
      GO TO 900 
  
*          EXIT FROM THIS SUBROUTINE
  
  900 CONTINUE
      RETURN
      END 
      SUBROUTINE DL4XMD3
* 
*     DESCRIPTION 
*     ----------- 
*     SUBROUTINE *DL4XMD3* GENERATES DETAIL REPORTS FOR 9853 AND
*     DAS ERRORS. 
* 
*     CALLED BY 
*     --------- 
*     SUBROUTINE AN4XMD3
* 
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
*CALL,HPACOM1 
*CALL,HPACOM2 
*CALL,HPACOM3 
      COMMON / XMD3 / SYMPTOM, SKIPGNR
  
      DIMENSION ICHCODE (4,15)
*   IF FAULT SIZE IS CHANGED, CHANGE LINE NUMBER 109 TO MATCH IT
      DIMENSION MSG (3,4), FAULT (4,67) 
      DIMENSION SIZE(8), ID(8), LSIDER(8), SIZEPL(8)
      DIMENSION PLDELTA(6), PLDELDS(6), IDATADR(6)
      DIMENSION PBF(400,5), PSBDWN(5), TQTY(4)
  
      EQUIVALENCE (PBF(1,1), STOR(1,1)) 
      EQUIVALENCE (PSBDWN(1), STOR(29,30))
      EQUIVALENCE (TQTY(1),   STOR(34,30))
  
      DATA (IDATADR(I),I=1,6,1) /Z"29",Z"31",Z"32",Z"33",Z"34",Z"3A"/ 
      DATA (PLDELTA(I),I=1,6,1) /  3,    3,    3,    5,    5,    2  / 
      DATA (PLDELDS(I),I=1,6,1) /  4,    3,    3,    5,    5,    2  / 
  
      DATA (MSG(I,1),I=1,3,1) / 
     .10HCHANNEL DO,10HWNED BY SY,10HSTEM      /
      DATA (MSG(I,2),I=1,3,1) / 
     .10HEQUIPMENT ,10HTURNED OFF,10H BY SYSTEM/
      DATA (MSG(I,3),I=1,3,1) / 
     .10HERROR SUMM,10HARY STATUS,10H:         /
      DATA (MSG(I,4),I=1,3,1) / 
     .10HIHD DRIVER,10H ERRORS   ,10H          /
  
      DATA (FAULT(I,1),I=1,4,1) / 
     .O"01",10HCHANNEL PA,10HRITY ERROR,10H          /
      DATA (FAULT(I,2),I=1,4,1) / 
     .O"02",10HIPI CHANNE,10HL ERROR   ,10H          /
      DATA (FAULT(I,3),I=1,4,1) / 
     .O"03",10HUNDEFINED ,10HERROR     ,10H          /
      DATA (FAULT(I,4),I=1,4,1) / 
     .O"04",10HCHANNEL DE,10HTECTED ERR,10HOR        /
      DATA (FAULT(I,5),I=1,4,1) / 
     .O"05",10HCHANNEL DE,10HTECTED CM ,10HERROR     /
      DATA (FAULT(I,6),I=1,4,1) / 
     .O"06",10HUNDEFINED ,10HERROR     ,10H          /
      DATA (FAULT(I,7),I=1,4,1) / 
     .O"07",10HCHANNEL HU,10HNG FULL   ,10H          /
      DATA (FAULT(I,8),I=1,4,1) / 
     .O"10",10HINTERRUPT ,10HTIMEOUT   ,10H          /
      DATA (FAULT(I,9),I=1,4,1) / 
     .O"11",10HCHANNEL FU,10HNCTION TIM,10HEOUT      /
      DATA (FAULT(I,10),I=1,4,1) /
     .O"12",10HUNDEFINED ,10HERROR     ,10H          /
      DATA (FAULT(I,11),I=1,4,1) /
     .O"13",10HUNDEFINED ,10HERROR     ,10H          /
      DATA (FAULT(I,12),I=1,4,1) /
     .O"14",10HDATA PARIT,10HY ERROR   ,10H          /
      DATA (FAULT(I,13),I=1,4,1) /
     .O"15",10HUNDEFINED ,10HERROR     ,10H          /
      DATA (FAULT(I,14),I=1,4,1) /
     .O"16",10HUNDEFINED ,10HERROR     ,10H          /
      DATA (FAULT(I,15),I=1,4,1) /
     .O"17",10HUNDEFINED ,10HERROR     ,10H          /
      DATA (FAULT(I,16),I=1,4,1) /
     .O"20",10HDEVICE NOT,10H READY    ,10H          /
      DATA (FAULT(I,17),I=1,4,1) /
     .O"21",10HUNDEFINED ,10HERROR     ,10H          /
      DATA (FAULT(I,18),I=1,4,1) /
     .O"22",10HUNDEFINED ,10HERROR     ,10H          /
      DATA (FAULT(I,19),I=1,4,1) /
     .O"23",10HUNDEFINED ,10HERROR     ,10H          /
      DATA (FAULT(I,20),I=1,4,1) /
     .O"24",10HINCOMPLETE,10H DATA TRAN,10HSFER      /
      DATA (FAULT(I,21),I=1,4,1) /
     .O"25",10HUNDEFINED ,10HERROR     ,10H          /
      DATA (FAULT(I,22),I=1,4,1) /
     .O"26",10HUNDEFINED ,10HERROR     ,10H          /
      DATA (FAULT(I,23),I=1,4,1) /
     .O"27",10HUNDEFINED ,10HERROR     ,10H          /
      DATA (FAULT(I,24),I=1,4,1) /
     .O"30",10HRESERVED S,10HUBSTATUS  ,10H          /
      DATA (FAULT(I,25),I=1,4,1) /
     .O"31",10HDEFECT MAN,10HAGEMENT ER,10HROR       /
      DATA (FAULT(I,26),I=1,4,1) /
     .O"32",10HMESSAGE/MI,10HCROCODE EX,10HCEPTION   /
      DATA (FAULT(I,27),I=1,4,1) /
     .O"33",10HSELECT TIM,10HEOUT      ,10H          /
      DATA (FAULT(I,28),I=1,4,1) /
     .O"34",10HSPIN-UP FA,10HILURE     ,10H          /
      DATA (FAULT(I,29),I=1,4,1) /
     .O"35",10HSPIN-DOWN ,10HFAILURE   ,10H          /
      DATA (FAULT(I,30),I=1,4,1) /
     .O"36",10HTRANSFER C,10HOMPLETE TI,10HMEOUT     /
      DATA (FAULT(I,31),I=1,4,1) /
     .O"37",10HINTERVENTI,10HON REQUIRE,10HD         /
      DATA (FAULT(I,32),I=1,4,1) /
     .O"40",10HALTERNATE ,10HPORT EXCEP,10HTION      /
      DATA (FAULT(I,33),I=1,4,1) /
     .O"41",10HMACHINE EX,10HCEPTION ER,10HROR       /
      DATA (FAULT(I,34),I=1,4,1) /
     .O"42",10HCOMMAND EX,10HCEPTION ER,10HROR       /
      DATA (FAULT(I,35),I=1,4,1) /
     .O"43",10HFORMAT DRI,10HVE FAILURE,10H          /
      DATA (FAULT(I,36),I=1,4,1) /
     .O"44",10HI/O INITIA,10HTION ERROR,10H          /
      DATA (FAULT(I,37),I=1,4,1) /
     .O"45",10HREGISTER P,10HARITY ERRO,10HR         /
      DATA (FAULT(I,38),I=1,4,1) /
     .O"46",10HREPORT DRI,10HVE STATUS ,10HERROR     /
      DATA (FAULT(I,39),I=1,4,1) /
     .O"47",10HRESTORE OF,10HF LINE DRI,10HVE ERROR  /
      DATA (FAULT(I,40),I=1,4,1) /
     .O"50",10HCOMMAND AB,10HORTED ERRO,10HR         /
      DATA (FAULT(I,41),I=1,4,1) /
     .O"51",10HCONDITIONA,10HL SUCCESS ,10H          /
      DATA (FAULT(I,42),I=1,4,1) /
     .O"52",10HCOMMAND IN,10HCOMPLETE  ,10H          /
      DATA (FAULT(I,43),I=1,4,1) /
     .O"53",10HTRANSFER U,10HNSUCCESSFU,10HL         /
      DATA (FAULT(I,44),I=1,4,1) /
     .O"54",10HDIAGNOSTIC,10H FAULT    ,10H          /
      DATA (FAULT(I,45),I=1,4,1) /
     .O"55",10HDRIVE RESE,10HT FAILURE ,10H          /
      DATA (FAULT(I,46),I=1,4,1) /
     .O"56",10HUNDEFINED ,10HERROR     ,10H          /
      DATA (FAULT(I,47),I=1,4,1) /
     .O"57",10HUNDEFINED ,10HERROR     ,10H          /
      DATA (FAULT(I,48),I=1,4,1) /
     .O"60",10HSLAVE IN D,10HID NOT DRO,10HP         /
      DATA (FAULT(I,49),I=1,4,1) /
     .O"61",10HLOAD CNTRL,10HR ATTRIBUT,10HES FAILURE/
      DATA (FAULT(I,50),I=1,4,1) /
     .O"62",10HSELECTIVE ,10HRESET ERRO,10HR         /
      DATA (FAULT(I,51),I=1,4,1) /
     .O"63",10HREPORT DEV,10H ATTRIBUTE,10HS FAILURE /
      DATA (FAULT(I,52),I=1,4,1) /
     .O"64",10HBUS ACKNOW,10HLEDGE ERRO,10HR         /
      DATA (FAULT(I,53),I=1,4,1) /
     .O"65",10HCONTROLLER,10H OVER TEMP,10HERATURE   /
      DATA (FAULT(I,54),I=1,4,1) /
     .O"66",10HUNDEFINED ,10HERROR     ,10H          /
      DATA (FAULT(I,55),I=1,4,1) /
     .O"67",10HUNDEFINED ,10HERROR     ,10H          /
      DATA (FAULT(I,56),I=1,4,1) /
     .O"70",10HDRIVE RESE,10HRVE ERROR ,10H          /
      DATA (FAULT(I,57),I=1,4,1) /
     .O"71",10HUNDEFINED ,10HERROR     ,10H          /
      DATA (FAULT(I,58),I=1,4,1) /
     .O"72",10HUNDEFINED ,10HERROR     ,10H          /
      DATA (FAULT(I,59),I=1,4,1) /
     .O"73",10HUNDEFINED ,10HERROR     ,10H          /
      DATA (FAULT(I,60),I=1,4,1) /
     .O"74",10HCONTROLLER,10H RESET ERR,10HOR        /
      DATA (FAULT(I,61),I=1,4,1) /
     .O"75",10HCONTROL MO,10HDULE HUNG ,10H          /
      DATA (FAULT(I,62),I=1,4,1) /
     .O"76",10HUNDEFINED ,10HERROR     ,10H          /
      DATA (FAULT(I,63),I=1,4,1) /
     .O"77",10HUNDEFINED ,10HERROR     ,10H          /
      DATA (FAULT(I,64),I=1,4,1) /
     .O"100",10HWRONG DRIV,10HE TYPE    ,10H          / 
      DATA (FAULT(I,65),I=1,4,1) /
     .O"101",10HPARALLEL N,10HOT SUPPORT,10HED        / 
      DATA (FAULT(I,66),I=1,4,1) /
     .O"102",10HPARITY DRV,10H PROTECTIO,10HN DISABLED/ 
      DATA (FAULT(I,67),I=1,4,1) /
     .O"103",10HPARITY DRV,10H PROTECTIO,10HN ENABLED / 
  
      DATA (ICHCODE(I,1),I=1,4,1) / 
     .R"00",10HILLEGAL FU,10HNCTION OR ,10HSEQUENCE  /
      DATA (ICHCODE(I,2),I=1,4,1) / 
     .R"00",10HUNCORRECTE,10HD CM ERROR,10H          /
      DATA (ICHCODE(I,3),I=1,4,1) / 
     .R"00",10HCM REJECT ,10H          ,10H          /
      DATA (ICHCODE(I,4),I=1,4,1) / 
     .R"00",10HINVALID RE,10HSPONSE COD,10HE         /
      DATA (ICHCODE(I,5),I=1,4,1) / 
     .R"00",10HCM RESPONS,10HE CODE PAR,10HITY ERROR /
      DATA (ICHCODE(I,6),I=1,4,1) / 
     .R"00",10HCMI READ D,10HATA PARITY,10H ERROR    /
      DATA (ICHCODE(I,7),I=1,4,1) / 
     .R"00",10HIPI ERROR ,10H          ,10H          /
      DATA (ICHCODE(I,8),I=1,4,1) / 
     .R"00",10HDMA REGIST,10HER PARITY ,10HERROR     /
      DATA (ICHCODE(I,9),I=1,4,1) / 
     .R"00",10HMAC STATUS,10H PARITY ER,10HROR       /
      DATA (ICHCODE(I,10),I=1,4,1) /
     .R"00",10HTIMEOUT   ,10H          ,10H          /
      DATA (ICHCODE(I,11),I=1,4,1) /
     .R"00",10HJY DATA ER,10HROR       ,10H          /
      DATA (ICHCODE(I,12),I=1,4,1) /
     .R"00",10HBAS REGIST,10HER PARITY ,10HERROR     /
      DATA (ICHCODE(I,13),I=1,4,1) /
     .R"00",10HLZ ERROR  ,10H          ,10H          /
      DATA (ICHCODE(I,14),I=1,4,1) /
     .R"00",10HJY ERROR  ,10H          ,10H          /
      DATA (ICHCODE(I,15),I=1,4,1) /
     .R"00",10HLX ERROR  ,10H          ,10H          /
  
      LEFT = 10HLEFT
      RIGHT = 10HRIGHT
  
      CALL UCHEK34
  
      IF (IFLD(FACHAN) .EQ. 0) PORT = R"A"
      IF (IFLD(FACHAN) .NE. 0) PORT = R"B"
  
*     CHECK FOR RMS/RAM ERRORS/MESSAGES 
      IF (((MTY .GE. O"32") .AND. (MTY .LE. O"34")) .OR.
     .     (MTY .EQ. O"52")) GO TO 190
  
      IF ((SYMPTOM .EQ.  O"15") .OR. (SYMPTOM .EQ. O"30")) GO TO 100
      IF  (SYMPTOM .EQ. O"100") GO TO 200 
      IF (SYMPTOM .EQ. O"111") THEN 
         IF (IFLD(FC13) .NE. 0) GO TO 200 
         GO TO 300
      ENDIF 
      GO TO 900 
  
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
*     PROCESS THE CHANNEL DOWNED/EQUIPMENT OFFED MESSAGES 
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
  
  100 IF (SYMPTOM .EQ. O"15") NUM = 1 
      IF (SYMPTOM .EQ. O"30") NUM = 2 
      CALL LOAPR (1,IFLD(20),MSG(1,NUM),MSG(2,NUM),MSG(3,NUM),
     .              IFLD(FPPU),IFLD(FC16),PORT,SP)
      CALL PRINT34 (9, 7) 
      CALL PRINT34 (13, 0)
      GO TO 900 
  
*     GENERATE DETAIL REPORT FOR RMS/RAM ERRORS/MESSAGES
  190 CONTINUE
      IFLD(27) = SHIFT(IFLD(22),-12) .AND. Z"FFFF FFFF FFFF"
      IFLD(23) = SHIFT(IFLD(21),36) .AND. Z"FFF"
      IFLD(22) = SHIFT(IFLD(21),24) .AND. Z"FFF"
      IFLD(21) = SHIFT(IFLD(21),12) .AND. Z"FFF"
      IF (MTY .EQ. O"32") THEN
         CALL LOAPR (1,IFLD(20),IFLD(FJOB),IFLD(27),IFLD(FPPU), 
     .                 IFLD(FCHAN),IFLD(FUN),IFLD(21),IFLD(22)) 
         PL (9) = IFLD(23)
         PL(10) = MFID
         IF (IFLD(33) .EQ. 1) PL(11) = R"   CIO"
      CALL PRINT34 ( 25, 11 ) 
         GO TO 900
      ENDIF 
  
      CALL LOAPR (1,IFLD(20),IFLD(FJOB),IFLD(27),IFLD(FPPU),
     .              IFLD(FCHAN),IFLD(FUN),MFID,SP)
         IF (IFLD(33) .EQ. 1) PL(8) = R"   CIO" 
      CALL PRINT34 ( 26, 8 )
      GO TO 900 
  
  
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
*     PROCESS THE 1XD AND 1DA DRIVER ERRORS 
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
  
  200 CONTINUE
*     TIME
      PL(1) = IFLD(20)
*     READ/WRITE
      PL(7) = 4HREAD
      IF ((NFLD(25) .AND. 2) .NE. 0) PL(7) = 5HWRITE
*     OCCURRENCES 
      PL( 8) = 10H RETRYS=
      PL( 9) = SHIFT(NFLD(25),-12) .AND. O"77"
*     CPP/CCH/PORT
      PL(10) = 10HCCP/CCH = 
      PL(11) = IFLD(FPPU) 
      PL(12) = IFLD(FC16) 
      PL(13) = PORT 
  
*     INITIAL FAULT 
      FF = SHIFT(NFLD(21),-48) .AND. O"7777"
  
*     FINAL FAULT 
      IFF = NFLD(21) .AND. O"7777"
      FFTYPE = R"OS"
      PL(2) = FFTYPE
      PL(3) = FF
  109 DO 110 I = 1, 67
         IF (FF .NE. FAULT(1,I)) GO TO 110
         PL(4) = FAULT(2,I) 
         PL(5) = FAULT(3,I) 
         PL(6) = FAULT(4,I) 
         GO TO 112
  110 CONTINUE
  112 IF ((FLAGS(4) .EQ. 2HON) .AND. ((LINE + 10) .GT. PLF)) THEN 
         CALL HEADER
         CALL PHEAD34 (1) 
      ENDIF 
      CALL PRINT34 (14, 13) 
  
*     - - - - - IF CHANNEL FAILURE, IDENTIFY THE ERROR REGISTER BIT 
  140    IERRST = SHIFT(NFLD(24),21)
         DO 145 I = 1, 15 
         IF ((SHIFT(IERRST,I) .AND. 1) .EQ. 0) GO TO 145
         PL(1) = R"CHAN"
         PL(2) = ICHCODE(2,I) 
         PL(3) = ICHCODE(3,I) 
         PL(4) = ICHCODE(4,I) 
         CALL PRINT34 (17, 4) 
         GO TO 150
  145    CONTINUE 
  
  150 IF (FLAGS(4) .EQ. 2HON) CALL PLSEC (5)
  
*     SAVE T REGISTER 
      TREGSTR = IFLD(22) .AND. Z"FFFF FFFF FFFF"
      IF (IFLD(18) .NE. R" CONTINU") TREGSTR = 0
  
*     CHECK FOR RESPONSE PACKET STATUS
      PAKSIZE = 0 
      IF (IFLD(18) .EQ. R" CONTINU") THEN 
        PAKSIZE = (SHIFT(IFLD(23), 16) .AND. Z"FFFF") 
      ENDIF 
      DO 501 I = 1,71,1 
501      PL(I) = 0
      PAKSIZE = SHIFT(IFLD(23),16) .AND. Z"FFFF"
      IF (PAKSIZE .EQ. 0) GO TO 560 
      ODDSIZE = PAKSIZE .AND. 1 
      PL(3) = SHIFT(IFLD(23),16).AND.Z"FFFF"
      PL(4) = SHIFT(IFLD(23),32).AND.Z"FFFF"
      PL(5) = SHIFT(IFLD(23),48).AND.Z"FFFF"
      PL(6) = SHIFT(IFLD(23),4).AND.Z"FFF0" 
      PL(6) = PL(6) .OR. (SHIFT(IFLD(24),4).AND.Z"F") 
      PL(7) = SHIFT(IFLD(24),20).AND.Z"FFFF"
      PL(8) = SHIFT(IFLD(24),36).AND.Z"FFFF"
      PL(9) = SHIFT(IFLD(24),52).AND.Z"FFFF"
      PL(10) = SHIFT(IFLD(24),8).AND.Z"FF00"
      PL(10) = PL(10) .OR. SHIFT(IFLD(25),8).AND.Z"FF"
      PL(11) = SHIFT(IFLD(25),24).AND.Z"FFFF" 
      PL(12) = SHIFT(IFLD(25),40).AND.Z"FFFF" 
      PL(13) = SHIFT(IFLD(25),56).AND.Z"FFFF" 
      PL(14) = SHIFT(IFLD(25),12).AND.Z"F000" 
      IF (PAKSIZE .LT. Z"15") GO TO 502 
      CALL GNR3 
      CALL SETEM3 (1) 
      IF (FEOF(SEF) .EQ. 3HYES) GO TO 560 
      IF (IFLD(18) .NE. R" CONTINU") THEN 
*       SET SKIPGNR SO AN4XMD3 DOES NOT DO A GNR3 CALL
        SKIPGNR = 1 
        GO TO 560 
      ENDIF 
      PL(14) = PL(14) .OR. (SHIFT(IFLD(21),12).AND.Z"FFF")
      PL(15) = SHIFT(IFLD(21),28).AND.Z"FFFF" 
      PL(16) = SHIFT(IFLD(21),44).AND.Z"FFFF" 
      PL(17) = IFLD(21).AND.Z"FFFF" 
      PL(18) = SHIFT(IFLD(22),16).AND.Z"FFFF" 
      PL(19) = SHIFT(IFLD(22),32).AND.Z"FFFF" 
      PL(20) = SHIFT(IFLD(22),48).AND.Z"FFFF" 
      PL(21) = SHIFT(IFLD(22),4).AND.Z"FFF0"
      PL(21) = PL(21) .OR. (SHIFT(IFLD(23),4).AND.Z"F") 
      PL(22) = SHIFT(IFLD(23),20).AND.Z"FFFF" 
      PL(23) = SHIFT(IFLD(23),36).AND.Z"FFFF" 
      PL(24) = SHIFT(IFLD(23),52).AND.Z"FFFF" 
      PL(25) = SHIFT(IFLD(23),8).AND.Z"FF00"
      PL(25) = PL(25) .OR. (SHIFT(IFLD(24),8).AND.Z"FF")
      PL(26) = SHIFT(IFLD(24),24).AND.Z"FFFF" 
      PL(27) = SHIFT(IFLD(24),40).AND.Z"FFFF" 
      PL(28) = SHIFT(IFLD(24),56).AND.Z"FFFF" 
      PL(29) = SHIFT(IFLD(24),12).AND.Z"F000" 
      PL(29) = PL(29) .OR. (SHIFT(IFLD(25),12).AND.Z"FFF")
      PL(30) = SHIFT(IFLD(25),28).AND.Z"FFFF" 
      PL(31) = SHIFT(IFLD(25),44).AND.Z"FFFF" 
      PL(32) = IFLD(25).AND.Z"FFFF" 
      IF (PAKSIZE .LT. Z"3B") GO TO 502 
      CALL GNR3 
      CALL SETEM3 (1) 
      IF (FEOF(SEF) .EQ. 3HYES) GO TO 560 
      IF (IFLD(18) .NE. R" CONTINU") THEN 
*       SET SKIPGNR SO AN4XMD3 DOES NOT DO A GNR3 CALL
        SKIPGNR = 1 
        GO TO 560 
      ENDIF 
      PL(33) = SHIFT(IFLD(21),16).AND.Z"FFFF" 
      PL(34) = SHIFT(IFLD(21),32).AND.Z"FFFF" 
      PL(35) = SHIFT(IFLD(21),48).AND.Z"FFFF" 
      PL(36) = SHIFT(IFLD(21),4).AND.Z"FFF0"
      PL(36) = PL(36) .OR. (SHIFT(IFLD(22),4).AND.Z"F") 
      PL(37) = SHIFT(IFLD(22),20).AND.Z"FFFF" 
      PL(38) = SHIFT(IFLD(22),36).AND.Z"FFFF" 
      PL(39) = SHIFT(IFLD(22),52).AND.Z"FFFF" 
      PL(40) = SHIFT(IFLD(22),8).AND.Z"FF00"
      PL(40) = PL(40) .OR. (SHIFT(IFLD(23),8).AND.Z"FF")
      PL(41) = SHIFT(IFLD(23),24).AND.Z"FFFF" 
      PL(42) = SHIFT(IFLD(23),40).AND.Z"FFFF" 
      PL(43) = SHIFT(IFLD(23),56).AND.Z"FFFF" 
      PL(44) = SHIFT(IFLD(23),12).AND.Z"F000" 
      PL(44) = PL(44) .OR. (SHIFT(IFLD(24),12).AND.Z"FFF")
      PL(45) = SHIFT(IFLD(24),28).AND.Z"FFFF" 
      PL(46) = SHIFT(IFLD(24),44).AND.Z"FFFF" 
      PL(47) = IFLD(24).AND.Z"FFFF" 
      PL(48) = SHIFT(IFLD(25),16).AND.Z"FFFF" 
      PL(49) = SHIFT(IFLD(25),32).AND.Z"FFFF" 
      PL(50) = SHIFT(IFLD(25),48).AND.Z"FFFF" 
      PL(51) = SHIFT(IFLD(25),4).AND.Z"FFF0"
      IF (PAKSIZE .LT. Z"60") GO TO 502 
      CALL GNR3 
      CALL SETEM3 (1) 
      IF (FEOF(SEF) .EQ. 3HYES) GO TO 560 
      IF (IFLD(18) .NE. R" CONTINU") THEN 
*       SET SKIPGNR SO AN4XMD3 DOES NOT DO A GNR3 CALL
        SKIPGNR = 1 
        GO TO 560 
      ENDIF 
      PL(51) = PL(51) .OR. (SHIFT(IFLD(21),4).AND.Z"F") 
      PL(52) = SHIFT(IFLD(21),20).AND.Z"FFFF" 
      PL(53) = SHIFT(IFLD(21),36).AND.Z"FFFF" 
      PL(54) = SHIFT(IFLD(21),52).AND.Z"FFFF" 
      PL(55) = SHIFT(IFLD(21),8).AND.Z"FF00"
      PL(55) = PL(55) .OR. SHIFT(IFLD(22),8).AND.Z"FF"
      PL(56) = SHIFT(IFLD(22),24).AND.Z"FFFF" 
      PL(57) = SHIFT(IFLD(22),40).AND.Z"FFFF" 
      PL(58) = SHIFT(IFLD(22),56).AND.Z"FFFF" 
      PL(59) = SHIFT(IFLD(22),12).AND.Z"F000" 
      PL(59) = PL(59) .OR. (SHIFT(IFLD(23),12).AND.Z"FFF")
      PL(60) = SHIFT(IFLD(23),28).AND.Z"FFFF" 
      PL(61) = SHIFT(IFLD(23),44).AND.Z"FFFF" 
      PL(62) = IFLD(23).AND.Z"FFFF" 
      PL(63) = SHIFT(IFLD(24),16).AND.Z"FFFF" 
      PL(64) = SHIFT(IFLD(24),32).AND.Z"FFFF" 
      PL(65) = SHIFT(IFLD(24),48).AND.Z"FFFF" 
  
      IF (PAKSIZE .LE. 8) GO TO 560 
  
*     SAVE SIZE AND ID OF EACH RESPONSE PACKET PARAMETERS SUBSET
*     (ALSO SAVE PL NUMBER AND LEFT/RIGHT-POSITION OF EACH SIZE)
  
502   PLNUMBR = 8 
      SIZE(1) = SHIFT(PL(8),-8).AND.Z"FF" 
      ID(1) = PL(8).AND.Z"FF" 
      LSIDER(1) = 10HLEFT 
      SIZEPL(1) = 8 
  
      DO 520 I = 2,8,1
        IF ((LSIDER(I-1)).EQ.(LEFT)) THEN 
          IF ((SIZE(I-1).AND.1).EQ.1) THEN
            SIZE(I) = SHIFT(PL(PLNUMBR + SIZE(I-1)/2 + 1),-8).AND.Z"FF" 
            ID(I) = PL(PLNUMBR + SIZE(I-1)/2 + 1).AND.Z"FF" 
            LSIDER(I) = 10HLEFT 
            PLNUMBR = PLNUMBR + SIZE(I-1)/2 + 1 
            SIZEPL(I) = PLNUMBR 
          ELSE
            SIZE(I) = PL(PLNUMBR + SIZE(I-1)/2).AND.Z"FF" 
            ID(I) = SHIFT(PL(PLNUMBR + SIZE(I-1)/2 + 1),-8).AND.Z"FF" 
            LSIDER(I) = 10HRIGHT
            PLNUMBR = PLNUMBR + SIZE(I-1)/2 
            SIZEPL(I) = PLNUMBR 
          ENDIF 
        ELSE
          IF ((SIZE(I-1).AND.1).EQ.1) THEN
            SIZE(I) = PL(PLNUMBR + SIZE(I-1)/2 + 1).AND.Z"FF" 
            ID(I) = SHIFT(PL(PLNUMBR + SIZE(I-1)/2 + 2),-8).AND.Z"FF" 
            LSIDER(I) = 10HRIGHT
            PLNUMBR = PLNUMBR + SIZE(I-1)/2 + 1 
            SIZEPL(I) = PLNUMBR 
          ELSE
            SIZE(I) = SHIFT(PL(PLNUMBR + SIZE(I-1)/2 + 1),-8).AND.Z"FF" 
            ID(I) = PL(PLNUMBR + SIZE(I-1)/2 + 1).AND.Z"FF" 
            LSIDER(I) = 10HLEFT 
            PLNUMBR = PLNUMBR + SIZE(I-1)/2 
            SIZEPL(I) = PLNUMBR 
          ENDIF 
        ENDIF 
  
        SIZTOTL = 0 
        DO 510 J = 1,8,1
          SIZTOTL = SIZTOTL + SIZE(J) + 1 
510     CONTINUE
        IF (SIZTOTL .GE. (PAKSIZE + 8)) GO TO 530 
  
        IF (PLNUMBR .GE. 66) GO TO 530
520   CONTINUE
  
*     SEARCH SAVED PARAMETER ID'S FOR MATCH WITH A PARAMETER ID 
*     THAT CONTAINS A (FAILING) DATA ADDRESS
  
530   DO 540 I=1,8,1
        DO 540 J=1,6,1
          IF ( ID(I) .EQ. IDATADR(J) ) THEN 
            IF (TYPDT .EQ. R"DN") THEN
              IF ( LSIDER(I) .EQ. LEFT ) THEN 
                PL(66)=PL(69) = PL(SIZEPL(I) + PLDELTA(J)) .AND. Z"FFFF"
                PL(67)=PL(70) = SHIFT(PL(SIZEPL(I) + PLDELTA(J) + 1),-8)
     .                          .AND. Z"FF" 
                PL(68)=PL(71) = PL(SIZEPL(I)+PLDELTA(J)+1) .AND. Z"FF"
              ELSE
                PL(66)=PL(69) = (SHIFT((PL(SIZEPL(I) + PLDELTA(J))),8)
     .                          .AND. Z"FF00") .OR. (Z"FF" .AND.
     .                          SHIFT((PL(SIZEPL(I)+PLDELTA(J)+1)),-8)) 
                PL(67)=PL(70) = PL(SIZEPL(I)+PLDELTA(J)+1) .AND. Z"FF"
                PL(68)=PL(71) = SHIFT(PL(SIZEPL(I) + PLDELTA(J) + 1),-8)
     .                          .AND. Z"FF" 
              ENDIF 
            ELSE
              IF ( LSIDER(I) .EQ. LEFT ) THEN 
                PL(66)=PL(69) = PL(SIZEPL(I) + PLDELDS(J)) .AND. Z"FFFF"
                PL(67)=PL(70) = SHIFT(PL(SIZEPL(I) + PLDELDS(J) + 1),-8)
     .                          .AND. Z"FF" 
                PL(68)=PL(71) = PL(SIZEPL(I)+PLDELDS(J)+1) .AND. Z"FF"
              ELSE
                PL(66)=PL(69) = (SHIFT((PL(SIZEPL(I) + PLDELDS(J))),8)
     .                          .AND. Z"FF00") .OR. (Z"FF" .AND.
     .                          SHIFT((PL(SIZEPL(I)+PLDELDS(J)+1)),-8)) 
                PL(67)=PL(70) = PL(SIZEPL(I)+PLDELDS(J)+1) .AND. Z"FF"
                PL(68)=PL(71) = SHIFT(PL(SIZEPL(I) + PLDELDS(J) + 1),-8)
     .                          .AND. Z"FF" 
              ENDIF 
            ENDIF 
*         BREAK-DOWN THE POSITION OF THE CURRENT RECORD.
  
            IF(OVFLOW.EQ.1) GO TO 540 
            PSBDWN(2) = PL(66)
            PSBDWN(3) = PL(67)
            PSBDWN(4) = PL(68)
            KK=SHIFT(OR(SHIFT(OR(SHIFT(PSBDWN(2),15), 
     .            PSBDWN(3)),15),PSBDWN(4)),15) 
            KK=OR(KK, IFLD(FMTY)) 
  
*     BUILD STATISTICS TABLE OF THE FAILING POSITION. 
  
            DO 531 JJ = 1,400 
              IF(PBF(JJ,1).EQ.0)  GO TO 532 
              IF(PBF(JJ,1).EQ.KK) GO TO 533 
  531       CONTINUE
*     NO MATCH AND THE TABLE IS FULL
            GO TO 538 
* 
*     MAKE ENTRY TO THE TABLE 
* 
  532       PBF(JJ,1) = KK
            TQTY(1) = TQTY(1) + 1 
  533       PBF(JJ,2) = PBF(JJ,2) + 1 
* 
*     CHECK IF THIS IS THE UN-RECOVERED RMS ERROR.
* 
            IF (IFLD(FEST + 1)  .EQ.  0) GO TO 550
            KK = SHIFT(OR(SHIFT(OR(SHIFT(PSBDWN(2),15), 
     .        PSBDWN(3)),15),PSBDWN(4)),15) 
            KK = OR(KK,IFLD(FMTY))
* 
            DO 535 JJ = 1,400,1 
              IF (PBF(JJ,4) .EQ. 0)  GO TO 536
              IF (PBF(JJ,4) .EQ. KK) GO TO 537
  535       CONTINUE
*     NO MATCH AND THE TABLE IS FULL. 
            GO TO 538 
* 
  536       PBF(JJ,4) = KK
            TQTY(4) = TQTY(4) + 1 
  537       PBF(JJ,5) = PBF(JJ,5) + 1 
            GO TO 550 
* 
*     SET CONDITION OF NO MATCH AND TABLE IS FULL.
* 
  538       PRINT 539 
  539       FORMAT(/,' .... POSITION TABLE IS FULL .. AN4XMD3',/) 
            OVFLOW = 1
  
          ENDIF 
540   CONTINUE
      GO TO 560 
  
*     PRINT FAILING ADDRESS 
550   HCF(5) = 45 
      CALL PHEAD34(5) 
      HCF(5) = 0
  
*     INITIAL SEEK ADDRESS - CYL/TRK/SEC IN OCTAL AND HEX 
560   PL(72) = PL(75) = SHIFT(NFLD(22),-12) .AND. O"7777" 
      PL(73) = PL(76) = SHIFT(NFLD(22),- 6) .AND. O"77" 
      PL(74) = PL(77) = NFLD(22) .AND. O"77"
  
*     SECTOR TRANSFER COUNT (STC) 
      PL(78) = SHIFT(NFLD(22),-24) .AND. O"7777"
*     DMA CONTROL REGISTER STATUS 
      PL(79) = SHIFT(NFLD(25),16) .AND. Z"FF" 
*     RESIDUAL BYTE COUNT 
      PL(80) = SHIFT(NFLD(22),24) .AND. O"7777" 
*     DMA OPERATIONAL STATUS
      PL(81) = NFLD(24) .AND. Z"FF" 
*     CONTROLLER ENDING STATUS
      PL(82) = SHIFT(NFLD(23),16) .AND. Z"FFFF" 
*     DMA ERROR STATUS
      PL(83) = SHIFT(NFLD(24),36) .AND. Z"FFFF" 
*     LAST IPI ADAPTER FUNCTION (LCF) 
      PL(84) = SHIFT(NFLD(24),20) .AND. Z"FFFF" 
*     IPI ERROR STATUS
      PL(85) = SHIFT(NFLD(24),-8) .AND. Z"FFFF" 
*     LAST 9853 OR DAS COMMAND (LSC)
      PL(86) = (SHIFT(NFLD(23),4) .AND. Z"FFF0") .OR. 
     .         (SHIFT(NFLD(24),4) .AND. Z"000F")
*     IPI STATUS REGISTER 
      PL(87) = SHIFT(NFLD(25),24) .AND. Z"FF" 
*     T REGISTER
      PL(88) = TREGSTR
*     IPI CHANNEL FLAG
      PL(89) = SHIFT(NFLD(25),8) .AND. Z"F" 
  
*     PRINT THE STATUS
      HCF(5) = 43 
      CALL PHEAD34 (5)
      HCF(5) = 0
  
      IF (FLAGS(4) .EQ. 2HON) CALL PLSEC (5)
  
*     CHECK FOR RESPONSE PACKET STATUS
      IF (PAKSIZE .EQ. 0) GO TO 800 
  
*     PRINT RESPONSE PACKET HEADER
      HCF(5) = 44 
      CALL PHEAD34 (5)
      HCF(5) = 0
  
*     PRINT RESPONSE PACKET LINES OF DATA 
  
      PL(1) = 1 
      IF (PAKSIZE .LT. Z"10") THEN
         PL(2) = (PAKSIZE + ODDSIZE)/2 + 1
      ELSE
         PL(2) = 9
      ENDIF 
      CALL PRINT34 (43,11)
  
      IF (PAKSIZE .GT. Z"10") THEN
         DO 503 I = 3,11,1
503         PL(I) = PL(I+9) 
         PL(1) = 10 
         IF (PAKSIZE .LT. Z"22") THEN 
            PL(2) = (PAKSIZE + ODDSIZE)/2 + 1 
         ELSE 
            PL(2) = 18
         ENDIF
         CALL PRINT34 (43,11) 
      ENDIF 
  
      IF (PAKSIZE .GT. Z"22") THEN
         DO 504 I = 3,11,1
504         PL(I) = PL(I+18)
         PL(1) = 19 
         IF (PAKSIZE .LT. Z"34") THEN 
            PL(2) = (PAKSIZE + ODDSIZE)/2 + 1 
         ELSE 
            PL(2) = 27
         ENDIF
         CALL PRINT34 (43,11) 
      ENDIF 
  
      IF (PAKSIZE .GT. Z"34") THEN
         DO 505 I = 3,11,1
505         PL(I) = PL(I+27)
         PL(1) = 28 
         IF (PAKSIZE .LT. Z"46") THEN 
            PL(2) = (PAKSIZE + ODDSIZE)/2 + 1 
         ELSE 
            PL(2) = 36
         ENDIF
         CALL PRINT34 (43,11) 
      ENDIF 
  
      IF (PAKSIZE .GT. Z"46") THEN
         DO 506 I = 3,11,1
506         PL(I) = PL(I+36)
         PL(1) = 37 
         IF (PAKSIZE .LT. Z"58") THEN 
            PL(2) = (PAKSIZE + ODDSIZE)/2 + 1 
         ELSE 
            PL(2) = 45
         ENDIF
         CALL PRINT34 (43,11) 
      ENDIF 
  
      IF (PAKSIZE .GT. Z"58") THEN
         DO 507 I = 3,11,1
507         PL(I) = PL(I+45)
         PL(1) = 46 
         IF (PAKSIZE .LT. Z"6A") THEN 
            PL(2) = (PAKSIZE + ODDSIZE)/2 + 1 
         ELSE 
            PL(2) = 54
         ENDIF
         CALL PRINT34 (43,11) 
      ENDIF 
  
      IF (PAKSIZE .GT. Z"6A") THEN
         DO 508 I = 3,11,1
508         PL(I) = PL(I+54)
         PL(1) = 55 
         IF (PAKSIZE .LT. Z"7C") THEN 
            PL(2) = (PAKSIZE + ODDSIZE)/2 + 1 
         ELSE 
            PL(2) = 63
         ENDIF
         CALL PRINT34 (43,11) 
      ENDIF 
  
      DO 509 I = 1,65,1 
509      PL(I) = 10H
  
      IF (FLAGS(4) .EQ. 2HON) CALL PLSEC (5)
  
  
*     THIS CORRECTS AN INCORRECT INCREMENT OF THE COUNTER 
*     TO ENSURE THE LAST FINAL STATUS MESSAGE IS PRINTED. 
* 
      FLAGS(3) = FLAGS(3) - 1 
  
  800 IF (SYMPTOM .NE. O"111") GO TO 900
  
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
*     PROCESS THE ERROR RECOVERY STATUS 
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
  
  300 NUM = 3 
      STATUS1 = 10H  RECOVERE 
      STATUS2 = 10HD
      IF (IFLD(FC13) .NE. 0) STATUS1 = 10HUNRECOVERE
      CALL LOAPR (1,IFLD(20),FAULT(2,IFF),FAULT(3,IFF),FAULT(4,IFF),
     .              STATUS1,STATUS2,IFLD(FPPU),IFLD(FC16))
      PL(9) = PORT
      CALL PRINT34 (12, 9)
      CALL PRINT34 (13, 0)
  
      IF ((IFLD(18) .NE. R" CONTINU") .AND. (IFLD(FC13) .NE. 0)) THEN 
         DO 810 I = 1, 25 
  810 IFLD(I) = NFLD(I+30)
      ENDIF 
  
  900 CONTINUE
  
      RETURN
      END 
      SUBROUTINE G4POSA3(TQY,RT)
**        DESCRIPTION 
*         ----------- 
*         SUBROUTINE G4POSA3 GENERATES TWO REPORTS OF 
*         OVERALL POSITION ANALYSIS AND UNRECOVERED RMS ERRORS
*         FOR EACH RMS DEVICE BY EDITING DATA WHICH HAS BEEN
*         ACCUMULATED IN TABLES BY DISK ANALYSIS SUBROUTINES. 
* 
*         ENTRY CONDITIONS
*         ----------------
*         RT     - RECORD TYPE, 
*         TQY    - 1ST WORD OF ARRAY THAT HOLDS NO. OF ENTRIES
*                  MADE TO EACH TABLE.
* 
*         DATA AREAS SHARED - 
*          PTBL(400,5), TQY(5)
* 
* 
*         DATA AREAS AND FILES
*         --------------------
*         DATA AREAS
*          PTBL   - (400,5)/COMMON BLOCK SHARED WITH ARRAY STOR/
*                  AREA OF TABLES THAT HOLD ACCUMULATED DATA FOR
*                  POSITION ANALYSIS REPORT.
*                   PTBL(K,1)    CYLINDER ADDRESS OF FAILING POSITION 
*                   PTBL(K,2)    TRACK ADDRESS OF FAILING POSITION
*                   PTBL(K,3)    SECTOR ADDRESS OF FAILING POSITION 
*                   PTBL(K,4)    UNRECOVERED ERROR FLAG 
*                   PTBL(K,5)    ERR CODES CORRESPONDING TO PTBL(K,4) 
*         PSBDWN - (5)/LOCAL TO SUBROUTINE/WORKING STORAGE AREA.
*         TQY    - (4)/LOCAL TO SUBROUTINE/HOLDS ENTRY COUNT
*                  MADE TO EACH TABLE IN PTBL.
* 
*CALL,HPACOM1 
*CALL,HPACOM3 
  
      DIMENSION PTBL(400,5), TQY(5) 
      EQUIVALENCE (PTBL(1,1), STOR(1,1))
  
      TRATE  = 0
      HCF(1) = 17 
      IF (RT .EQ. O"46") HCF(1) = 20
      IF (RT .EQ. O"54") HCF(1) = 46
      IF (RT .EQ. O"64") HCF(1) = 47
      HCF(2) = 0
      HDATA(1) = 10HCYLINDER
      HDATA(2) = 10HHEAD/GP 
      HDATA(3) = 10HSECTOR
      IF (RT .EQ. O"46") HDATA(2) = 10HHEAD/TRK 
      IF (RT .EQ. O"54") HDATA(2) = 10H  HEAD 
      IF (RT .EQ. O"46") HDATA(3) = 10HRECORD 
      IF ((RT .LE. O"45") .AND. (RT .NE. O"43"))HDATA(2) = 10H  TRACK 
      IF  (RT .EQ. O"52") HDATA(2) = 10H  TRACK 
  
      IF (TQY(1) .EQ. 0) GO TO 200
  
      PFDET = 50
      PRINT 5                                                            HPA404R
    5 FORMAT (1H )                                                       HPA404R
      LINE = LINE + 1                                                    HPA404R
  
      CALL PHEAD34 (1)
  
*     * * * * * * * * * * * * * * * * * * * * * * * * * * 
  
      IF (RT .EQ. O"46") GO TO 100
      IF (RT .EQ. O"54") GO TO 150
      IF (RT .EQ. O"64") GO TO 900
                                                                         R2DFMD 
*     SORT THE ARRAY THAT STORES THE POSITIONS ( LOW TO HIGH )           R2DFMD 
                                                                         R2DFMD 
      DO 30 I=1,3                                                        R2DFMD 
   10    LEND = 0                                                        R2DFMD 
            DO 20 K = 1,399                                              R2DFMD 
            IF (PTBL(K,I).EQ.0) GO TO 25                                 R2DFMD 
            IF (PTBL(K+1,I).EQ.0) GO TO 25                               R2DFMD 
            TEST1 = SHIFT(PTBL(K,I),30) .AND. O"7777" 
            TEST2 = SHIFT(PTBL(K+1,I),30) .AND. O"7777" 
             IF(TEST1 .LE. TEST2) GO TO 20
            LEND = 1                                                     R2DFMD 
            SAVE = PTBL(K,I)                                             R2DFMD 
            PTBL(K,I) = PTBL(K+1,I)                                      R2DFMD 
            PTBL(K+1,I) = SAVE                                           R2DFMD 
   20       CONTINUE                                                     R2DFMD 
   25    IF (LEND .EQ. 1) GO TO 10                                       R2DFMD 
   30 CONTINUE                                                           R2DFMD 
  
*     * * * * * * * * * * * * * * * * * * * * * * * * * * 
  
      DO 70 J=1,400 
  
      IF (PTBL(J,3) .NE. 0) GO TO 40
      IF (PTBL(J,2) .NE. 0) GO TO 40
      IF (PTBL(J,1) .EQ. 0) GO TO 200 
  
   40 CONTINUE
  
      DO 60 K = 1,3 
      IF(PTBL(J,K).EQ.0) GO TO 60 
      I = (K-1)*4+1 
  
*         CYL - TRACK ,ETC. POSITION
  
      POS = SHIFT(PTBL(J,K),30) 
      POS = POS.AND.O"7777" 
  
      ENCODE(10,800,PL(I)) POS
  
*         QUANTITY AT  POSITION 
      QTY = PTBL(J,K).AND.O"777777" 
      ENCODE(10,801,PL(I+1)) QTY
  
                                                                         R2DFMD 
*        THE CODE BELOW IS TO DELETE THE RATE FROM THE POSITION          R2DFMD 
*        ANALYSIS WITHOUT REMOVING THE CODE THAT MAKES THE               R2DFMD 
*        CALCULATION.  THEREFORE IT CAN EASILY BE PUT BACK IN            R2DFMD 
*        AT ANY TIME BY DELETING THIS CODE.                              R2DFMD 
*                                                                        R2DFMD 
      PL(I+2) = 10H                                                      R2DFMD 
      PL(I+3) = R"  " 
      GO TO 60                                                           R2DFMD 
                                                                         R2DFMD 
*         PER CENT OF FAILURE AT POSITION 
*     RATE = (QTY*100)/TQY(K) 
*     ENCODE(10,801,PL(I+2)) RATE 
*     TRATE = TRATE + RATE
*     PL(I+3) = R"  " 
 60   CONTINUE
  
*         PRINT ONE LINE OF POSITION REPORT.
  
      CALL PRINT34 (50,12)
   70 TRATE = 0 
      GO TO 200 
  
*     * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
  
*     REPORT POSITION OF 7165/895 RECOVERED ERRORS
  
*     SORT THE ARRAY THAT STORES THE POSITIONS ( LOW TO HIGH )
  
  100 LEND = 0
        DO 106 K = 1,399
          IF (PTBL(K,1).EQ.0) GO TO 106 
          IF (PTBL(K+1,1).EQ.0) GO TO 106 
            IF (PTBL(K,1) .LE. PTBL(K+1,1)) GO TO 104 
          LEND = 1
  
*     SWAP ADDRESS (K,1) AND (K+1,1) AND ALSO NUMBER OF ERRORS (K,2)
*     AND (K+1,2) OF PTBL SINCE THE ADDRESSES ARE IN INCORRECT ORDER. 
  
          SAVE = PTBL(K,1)
          PTBL(K,1) = PTBL(K+1,1) 
          PTBL(K+1,1) = SAVE
          SAVE = PTBL(K,2)
          PTBL(K,2) = PTBL(K+1,2) 
          PTBL(K+1,2) = SAVE
  104     CONTINUE
  106   IF (LEND .EQ. 1) GO TO 100
  
        DO 110 J = 1,400
      IF (PTBL(J,2) .EQ. 0)  GO TO 200
      PL(1) = SHIFT(AND(PTBL(J,1),MASK(15)),15) 
      PL(2) = SHIFT(AND(PTBL(J,1),O"777770000000000"),30) 
      PL(3) = SHIFT(AND(PTBL(J,1),O"7777700000"),45)
      PL(4) = AND(PTBL(J,2),O"77777") 
      P = PTBL(J,1) .AND. O"7777" 
      PL(5) = NEC(1,P)
      PL(6) = NEC(2,P)
      PL(7) = NEC(3,P)
      CALL PRINT34 (47,7) 
 110  CONTINUE
      GO TO 200 
  
*     REPORT POSITION OF 9853/538X RECOVERED ERRORS 
  
*     SORT THE ARRAY THAT STORES THE POSITIONS ( LOW TO HIGH )
  
  150 LEND = 0
        DO 160 K = 1,399
          IF (PTBL(K,1).EQ.0) GO TO 165 
          IF (PTBL(K+1,1).EQ.0) GO TO 165 
            IF (PTBL(K,1) .LE. PTBL(K+1,1)) GO TO 160 
          LEND = 1
  
*     SWAP ADDRESS (K,1) AND (K+1,1) AND ALSO NUMBER OF ERRORS (K,2)
*     AND (K+1,2) OF PTBL SINCE THE ADDRESSES ARE IN INCORRECT ORDER. 
  
          SAVE = PTBL(K,1)
          PTBL(K,1) = PTBL(K+1,1) 
          PTBL(K+1,1) = SAVE
          SAVE = PTBL(K,2)
          PTBL(K,2) = PTBL(K+1,2) 
          PTBL(K+1,2) = SAVE
  160     CONTINUE
  165   IF (LEND .EQ. 1) GO TO 150
  
      DO 190 J = 1,400
      IF (PTBL(J,2) .EQ. 0) GO TO 200 
  
*         CYL - TRACK ,ETC. POSITION
  
      PL(1) = SHIFT(PTBL(J,1),15) .AND. O"77777"
      PL(2) = SHIFT(PTBL(J,1),30) .AND. O"77777"
      PL(3) = SHIFT(PTBL(J,1),45) .AND. O"77777"
      PL(4) = PTBL(J,2).AND.O"777777" 
  
      P = PTBL(J,1) .AND. O"7777" 
      PL(5) = NEC(1,P)
      PL(6) = NEC(2,P)
      PL(7) = NEC(3,P)
  
*         PRINT ONE LINE OF POSITION REPORT.
  
      CALL PRINT34 (47,7) 
  
*     * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
 190  CONTINUE
  
  
*     * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
  
  
  
*         IF NO UNRECOVERED RMS - EXIT
  200 IF(PTBL(1,5).EQ.0) GO TO 900
  
  
  
*         PRINT THE POSITION OF UN-RECOVERED RMS ERRORS.
  
*         PRINT FORMAT FLAG 
  
      PFDET = 47
                                                                         R2DFMD 
*        THE IF STATEMENTS TO MODIFY PFDET HAVE BEEN DELETED             R2DFMD 
*        BECAUSE A NEW HEADER LINE HAS BEEN ADDED TO SAY WHAT            R2DFMD 
*        THE COLUMNS ARE.  THEREFORE ALL THE REPORTS THAT CALL
*        THIS SUBROUTINE, USE THE SAME FORMAT FOR THE PRINT LINE.        R2DFMD 
                                                                         R2DFMD 
  
      HCF(1) = 18 
      IF (RT .EQ. O"46") HCF(1) = 21
      CALL PLSEC(1) 
  
*         CHECK LINE SPACE FOR UN-RECOVERED RMS ERROR REPORT
  
      CALL PHEAD34 (1)
  
      DO 510 J = 1,400
      IF(PTBL(J,5).EQ.0)  GO TO 900 
      PL(1)=SHIFT(AND(PTBL(J,4),MASK(15)),15) 
      PL(2)=SHIFT(AND(PTBL(J,4),O"777770000000000"),30) 
      PL(3)=SHIFT(AND(PTBL(J,4),O"7777700000"),45)
      PL(4)=AND(PTBL(J,5),O"77777") 
      P = PTBL(J,4).AND.O"7777" 
      PL(5) = NEC(1,P)
      PL(6) = NEC(2,P)
      PL(7) = NEC(3,P)
      CALL PRINT34 (PFDET,7)
 510  CONTINUE
  
  800 FORMAT (O10)
  801 FORMAT (I10)
  900 RETURN
      END 
      SUBROUTINE G4POSB3 (RECTYPE,PSBDWN) 
* 
**        DESCRIPTION 
*         ----------- 
*         SUBROUTINE G4POSB3  BREAKS DOWN THE POSITION OF THE 
*         GIVEN RMS DEVICE ACCORDING TO ITS DEVICE TYPE.
* 
*         RECORD/DEVICE TYPE    BITS/POSITION ELEMENT 
*         RT=43, DT=MD 841      2/0, 10/POS., 6/HD., 6/SEC. 
*         RT=44, DT=DI 844      3/0, 9/CYL., 6/TK., 6/SEC.
*         RT=44, DT=DJ 844/HI-DENSITY  2/0,10/CYL.,6/TK.,6/SEC. 
*         RT=44, DT=DM 885/FMD  2/0, 10/CYL., 6/TK., 6/SEC. 
*         RT=44, DT=DQ 885/FMD  2/0, 10/CYL., 6/TK., 6/SEC. 
*         RT=44, DT=DR CDSS2    2/0, 12/CYL., 6/TK., 6/SEC. 
*         RT=46, DT=DC 7165/895 2/0, 10/CYL., 6/HD., 6/SEC. 
*         RT=52, DT=DB DEMA     2/0, 10/CYL., 6/TK., 6/SEC. 
* 
*         ENTRY CONDITIONS
*         ----------------
*         RECTYPE - RECORD TYPE OF THE GIVEN RMS DEVICE,
*         PSBDWN  - RMS POSITION TO BE BROKEN-DOWN. 
* 
*         EXIT CONDITIONS 
*         --------------- 
*         PSBDWN(1) - 1ST ELEMENT OF BROKEN-DOWN POSITION,
*         PSBDWN(2) - 2ND ELEMENT OF BROKEN-DOWN POSITION,
*         PSBDWN(3) - 3RD ELEMENT OF BROKEN-DOWN POSITION.
* 
*         DATA AREAS AND FILES
*         --------------------
*         DATA AREAS
*         PSBDWN - (5)/LOCAL TO SUBROUTINE/WORKING STORAGE AREA 
*                  TO RECEIVE AND RETURN PARAMETERS.
* 
* 
      IMPLICIT INTEGER (F-Z)
  
*         RESERVE THE LOCATIONS TO RECEIVE THE INPUT DATA AND 
*         TO RETURN THE BROKEN-DOWN RMS HEAD POSITION.
  
      DIMENSION PSBDWN(5) 
  
      PSBDWN(3)=AND(PSBDWN(1),O"77")
      PSBDWN(2)=AND(SHIFT(PSBDWN(1),-6),O"77")
      PSBDWN(1) = AND (SHIFT(PSBDWN(1), -12), O"1777")
      IF (TYPDT.EQ.R"DR") PSBDWN(1) = AND(SHIFT(PSBDWN(1),-12),O"7777") 
  
      RETURN
      END 
      SUBROUTINE PHEAD34 (ST) 
* 
**        PHEAD34 - PRINT SUBHEADERS FOR OVERLAY (3,4)
* 
*         DATA AREAS
*         ------------- 
*         (ST)  = PARAMETER TO INDICATE STARTING POINT OF 
*                 VALUES IN ARRAY (HCF).
*         (HCF) = ARRAY TO CONTAIN POINTERS TO SUBHEADERS 
*                 TO BE PRINTED UPON ENTRY. 
* 
*            PROCEDURE
*            -------------
*            ROUTINE EXTRACTS POINTER FROM (HCF) , STARTING 
*            AT LOCATION (ST). HEADING IS PRINTED.
*            STEP TO NEXT LOCATION IN (HCF), IF = (ZERO),EXIT.
*            OTHERWISE PRINT NEXT HEADER AND CONTINUE UNTIL 
*            ARRAY (HCF) IS EXHAUSTED.  APPROPRIATE LINE COUNTS 
*            INCLUDING SPACES ARE MAINTAINED BY JUMPS TO
*            INCREMENT STATEMENTS.  PROGRAMMER ENTERING HEADER
*            FORMAT IS RESPONSIBLE FOR PROPER INCREMENT OF LINE 
*            COUNT BY CONTROLING DESTINATION OF JUMPS.
* 
*CALL,HPACOM1 
*CALL,HPACOM2 
                                                                        000210
*       TEST IF PRINT FLAG IS OFF                                       000220
      IF (FLAGS(4) .EQ. 3HOFF) GO TO 900                                000230
      P = ST
*       TEST FOR DETAIL REPORT DATE CHANGE - AVOID NEW PAGE 
      IF (HCF(P) .EQ. 7) GO TO 6
*       TEST FOR DETAIL REPORT MESSAGE CHANGE - AVOID NEW PAGE
      IF (HCF(P) .EQ. 2) GO TO 6
*       TEST FOR IHD DETAIL AND SKIP LINE COUNT CHECK 
      IF (HCF(P) .EQ. 39) GO TO 5 
      IF (HCF(P) .EQ. 41) GO TO 5 
*     TEST FOR 9853 OR DAS DETAIL AND SKIP LINE COUNT CHECK 
      IF (HCF(P) .EQ. 43) GO TO 5 
*       TEST IF NEW PAGE NEEDED FOR NEXT REPORT SECTION 
      IF (((RTY .NE. O"53") .AND. (RTY .NE. O"54")) 
     .   .AND. ((LINE+12) .GT. PLF)) CALL HEADER
      GO TO 5 
    2 LINE = LINE + 1 
    5 LINE = LINE + 1 
                                                                        000250
      IF (P .GT. 5) GO TO 900                                           000260
    6 PTR = HCF(P)
      IF ((PTR .LE. 0) .OR. (PTR .GT. 47)) GO TO 900
  
      P = P + 1 
* 
      GO TO ( 10, 20, 30, 40, 50, 60, 70, 80, 90,100, 
     .       110,120,130,140,150,160,170,180,190,200, 
     .       210,220,230,240,250,260,270,280,290,300, 
     .       310,320,330,340,350,360,370,380,390,400, 
     .       410,420,430,440,450,460,470) PTR 
* 
   10 CONTINUE
      IF ((TYPDT .EQ. R"DF") .OR. (TYPDT .EQ. R"DH")) GO TO 5 
      IF ((TYPDT .EQ. R"DN") .OR. (TYPDT .EQ. R"EA")) GO TO 15
      IF ((TYPDT .EQ. R"EB") .OR. (TYPDT .EQ. R"EC")) GO TO 15
      IF ((TYPDT .EQ. R"ED") .OR. (TYPDT .EQ. R"EE")) GO TO 15
      IF ((TYPDT .EQ. R"EF") .OR. (TYPDT .EQ. R"EG")) GO TO 15
      IF (TYPDT .EQ. R"EH") GO TO 15
      IF ((TYPDT .EQ. R"EI") .OR. (TYPDT .EQ. R"EJ")) GO TO 15
      IF ((TYPDT .EQ. R"EK") .OR. (TYPDT .EQ. R"EL")) GO TO 15
      IF ((TYPDT .EQ. R"EM") .OR. (TYPDT .EQ. R"EN")) GO TO 15
      IF ((TYPDT .EQ. R"EO") .OR. (TYPDT .EQ. R"EP")) GO TO 15
      IF ((TYPDT .EQ. R"ES") .OR. (TYPDT .EQ. R"EU")) GO TO 15
      IF ((TYPDT .EQ. R"EV") .OR. (TYPDT .EQ. R"EW")) GO TO 15
    9 CONTINUE
      PRINT 11, TYPORD, TYPDT, ORD, TYPID 
   11 FORMAT (4H DT ,A4,6H - ** ,R2,1X,A4,3H **,
     .4X,3H.. ,A10,'  DATA  ..')
      GO TO 6 
*     PUT OUT STANDARD HEADER FOR RAM/RMS ERRORS
   15 IF (TYPDT .EQ. R"DN") TYPID = 4H9853
      IF (TYPDT .EQ. R"EA") TYPID = 6H5832-1
      IF (TYPDT .EQ. R"EB") TYPID = 6H5832-2
      IF (TYPDT .EQ. R"EC") TYPID = 6H5833-1
      IF (TYPDT .EQ. R"ED") TYPID = 8H5833-1XP
      IF (TYPDT .EQ. R"EE") TYPID = 6H5833-2
      IF (TYPDT .EQ. R"EF") TYPID = 8H5833-2XP
      IF (TYPDT .EQ. R"EG") TYPID = 6H5838-1
      IF (TYPDT .EQ. R"EH") TYPID = 8H5838-1XP
      IF (TYPDT .EQ. R"EI") TYPID = 6H5838-2
      IF (TYPDT .EQ. R"EJ") TYPID = 8H5838-2XP
      IF (TYPDT .EQ. R"EK") TYPID = 8H5838-3XP
      IF (TYPDT .EQ. R"EL") TYPID = 6H5838-4
      IF (TYPDT .EQ. R"EM") TYPID = 8H5833-3XP
      IF (TYPDT .EQ. R"EN") TYPID = 6H5833-4
      IF (TYPDT .EQ. R"EO") TYPID = 7H47444-1 
      IF (TYPDT .EQ. R"EP") TYPID = 9H47444-1XP 
      IF (TYPDT .EQ. R"ES") TYPID = 7H47444-2 
      IF (TYPDT .EQ. R"EU") TYPID = 9H47444-2XP 
      IF (TYPDT .EQ. R"EV") TYPID = 9H47444-3XP 
      IF (TYPDT .EQ. R"EW") TYPID = 7H47444-4 
      IF (((MTY .GE. O"32") .AND. (MTY .LE. O"34")) .OR.
     .     (MTY .EQ. O"52")) GO TO 9
      GO TO 6 
  
  
*     MESSAGE TYPE HEADER FOR 50B RTY DETAIL REPORT 
   20 IF (TYPDT .EQ. R"DD") GO TO 23
      IF (TYPDT .EQ. R"DG") GO TO 23
      IF (((MTY .GE. O"32") .AND. (MTY .LE. O"34")) .OR.
     .     (MTY .EQ. O"52")) GO TO 25 
      IF ((TYPDT .EQ. R"DN") .OR. (TYPDT .EQ. R"EA")) GO TO 22
      IF ((TYPDT .EQ. R"EB") .OR. (TYPDT .EQ. R"EC")) GO TO 22
      IF ((TYPDT .EQ. R"ED") .OR. (TYPDT .EQ. R"EE")) GO TO 22
      IF ((TYPDT .EQ. R"EF") .OR. (TYPDT .EQ. R"EG")) GO TO 22
      IF (TYPDT .EQ. R"EH") GO TO 22
      IF ((TYPDT .EQ. R"EI") .OR. (TYPDT .EQ. R"EJ")) GO TO 22
      IF ((TYPDT .EQ. R"EK") .OR. (TYPDT .EQ. R"EL")) GO TO 22
      IF ((TYPDT .EQ. R"EM") .OR. (TYPDT .EQ. R"EN")) GO TO 22
      IF ((TYPDT .EQ. R"EO") .OR. (TYPDT .EQ. R"EP")) GO TO 22
      IF ((TYPDT .EQ. R"ES") .OR. (TYPDT .EQ. R"EU")) GO TO 22
      IF ((TYPDT .EQ. R"EV") .OR. (TYPDT .EQ. R"EW")) GO TO 22
      IF ((TYPDT .EQ. R"DF") .OR. (TYPDT .EQ. R"DH")) THEN
         IF (MTY .NE. O"4010") GO TO 27 
         GO TO 2
      ENDIF 
      IF (IFLD(FRTY) .NE. O"50") GO TO 25 
      PRINT 21,IFLD(FCHAN),IFLD(FUN),SEBUF(27),SEBUF(28),SEBUF(29)
   21 FORMAT (//,18X,8H  CHAN- ,O2,8H  UNIT- ,O3,15X, 
     .        20HMESSAGE-TYPE  >>>>> ,2A10,A8,5H<<<<<,/)
      LINE = LINE + 2 
      GO TO 2 
  
*     MESSAGE TYPE HEADER FOR ISD (RTY 40B,41B,42B,45B) DETAIL REPORT 
   23 IF (((MTY .GE. O"32") .AND. (MTY .LE. O"34")) .OR.
     .     (MTY .EQ. O"52")) GO TO 25 
      PRINT 24, SEBUF(27), SEBUF(28), SEBUF(29), IFLD(27),
     .          HDATA(1), IFLD(28), HDATA(2), NFLD(28)
   24 FORMAT (/,' PACKID   ADPT CW   COS CW       MSG TYPE >>> ',2A10,
     .       A8,3H<<<,/,1X,R6,3X,R6,I2.0,2X,R6,I2.0/) 
      LINE = LINE + 3 
      GO TO 2 
  
*     MESSAGE TYPE HEADER FOR NON-50B RTY DETAIL REPORT 
   25 PRINT 26,SEBUF(27),SEBUF(28),SEBUF(29)
   26 FORMAT(/,21X,14H MSG TYPE >>> ,2A10,A8,3H<<<,/) 
      LINE = LINE + 2 
      GO TO 2                                                            R2DFMD 
  
*     HEADER FOR IHD ERRORS (RTY = 53B) 
   27 PRINT 28, TYPDT, HX(3), HX(2), TYPEST, HX(5), HX(4), IFLD(FUN), 
     .          MFID
   28 FORMAT (' DEVICE TYPE = ',R2,5X,'IHD REVISION LEVEL  = ',Z4,7X, 
     .         'DATA BUFFER SIZE = ',I5,/,
     .        ' EST ORDINAL = ',O3,4X,'IHD CHARACTERISTICS = ',Z4,7X, 
     .         '   TRANSFER RATE = ',I2,/,
     .        '        UNIT = ',O2,38X, 
     .         '            MFID = ',R1,/)
      GO TO 5 
  
*     HEADER FOR 1XD ERRORS (RTY = 54B) 
   22 IF (HX(1) .EQ. 0) HX(1) = R"        " 
      IF (FLAGS(25) .EQ. 0 ) PRINT 29, TYPDT, IFLD(FCON), TYPEST, HX(1),
     . IFLD(FUN), MFID
      IF (FLAGS(25) .NE. 0 ) PRINT 1029, TYPDT, IFLD(FCON), IFLD(FHUID),
     . HX(1), IFLD(FUN), MFID 
   29 FORMAT (6X,' DEVICE TYPE = ',R2,22X,'CONTROLLER NUMBER = ',O1,/,
     .        6X,' EST ORDINAL = ',O3,20X,'PACK SERIAL NUMBER = ',R8,/, 
     .        6X,'        UNIT = ',O2,23X,'            MFID = ',R1) 
 1029 FORMAT (6X,' DEVICE TYPE = ',R2,22X,'CONTROLLER NUMBER = ',O1,/,
     .        6X,'        HUID = ',I4.4,19X,'PACK SERIAL NUMBER = ',R8,/, 
     .        6X,'        UNIT = ',O2,23X,'            MFID = ',R1) 
      GO TO 5 
  
* 
*     HEADER FOR ADDRESS ERROR. 
   30 PRINT 31
   31 FORMAT(19X,9HFLAG FLAG,7X,'RTY     PP  ERR  BLK SBSY CONT  UNIT', 
     .1X,8(2H .),' CYL/HG/SEC',8(2H .),/,1X,
     .'  TIME',6X,'JOB',4X,'G1   G2',8X,'CNT FCN CH  MSG  ACC  ST   ST' 
     .,'  EX/AC    PREV',7X,'START',7X,'EXP',8X,'ACT')
      GO TO 800 
* 
*     HEADER FOR CHECKWORD ERROR. 
   40 PRINT 41
   41 FORMAT (19X,9HFLAG FLAG,6X,'RTY     PP  ERR  BLK SBSY CONT',12X,
     .8(2H. ),' ERROR CODE  1/2/3 ',8(2H .),' OFF/',/,1X, 
     .'TIME',5X,'JOB',6X,'G1   G2',8X,'CNT FCN CH  MSG  ACC  ST  ST'
     .,'  CYL/HG/SEC     CH 3',9X,'CH 2',9X,'CH 1',9X,'CH 0',5X,'STRB') 
      GO TO 800 
* 
*     HEADER FOR 819 ACTIVITY STATUS. 
   50 PRINT 51
   51 FORMAT('   TIME',6X,'JOB',6X,'PP/CH ACTIVITY CNT')
      GO TO 5 
* 
*     HEADER FOR ABNORMAL ERROR.
   60 PRINT 61
   61 FORMAT(19X,9HFLAG FLAG,7X,'RTY     PP  ERR  BLK SBSY CONT', 
     .' UNIT INTL',/,1X,
     .'  TIME',6X,'JOB',4X,'G1   G2',8X,'CNT FCN CH  MSG  ACC  ST   ST' 
     .,'   ST   ST')
      GO TO 800 
  
* 
   70 PRINT 71,SEBUF(23)
   71 FORMAT (1X,A8)
      GO TO 5 
* 
   80 PRINT 81,HDATA(1),HDATA(2)
   81 FORMAT (4X,2A10)
      GO TO 5 
  
*     SUB-HEADER FOR 844 READ ERROR THRESHOLD STATUS SUMMARY. 
   90 PRINT 91
      GO TO 5 
   91 FORMAT (6X,' ... DISK ERROR  THRESHOLD EXCEEDED ... WARNING') 
* 
*     SUBHEADER FOR ISD ERRORS/DIAGNOSTICS DETAIL REPORT - 132 COLUMNS
  100 PRINT 101 
  101 FORMAT(' DATE',20X,'RTY R',20X,'MF GEN',27X,'DETAIL STATUS',/,
     .'   TIME       JOB    RCV CNT W CH UN  CYL TRK SEC ID STAT ', 
     .'FUNC    1    2    3    4    5    6    7    8    9   10',/, 
     .1X,11(10H----------),4H----)
      GO TO 2 
* 
*     SUBHEADER FOR ISD ERRORS/DIAGNOSTICS DETAIL REPORT - 80 COLUMNS 
  110 PRINT 111 
  111 FORMAT (' DATE                    RTY R',20X,'MF GEN',/,
     .'    TIME      JOB    RCV CNT W CH UN  CYL TRK SEC ID STAT',
     .'   FUNC')
      GO TO 805 
* 
*     SUBHEADER FOR ISD ERRORS WITH FUNCTION CODE - 80 COLUMN ONLY
  120 PRINT 121 
  121 FORMAT(' DATE                    RTY R',12X,'MF GEN',/, 
     .'   TIME      JOB     RCV CNT W PP CH FCN  ID STAT')
      GO TO 805 
* 
*     SUBHEADER FOR 844/885/FSC/DEMA/CDSS2 ERRORS WITH FUNCTION-80C ONLY
  130 PRINT 131 
  131 FORMAT (' DATE                    RTY R            MF GEN',/, 
     .        '   TIME        JOB   RCV CNT W PP CH FCN  ID STAT')
      GO TO 805 
* 
*     SUBHEADER FOR 7165/895 FUNCTION ERRORS DETAIL REPORT - 132 COLUMN 
  140 PRINT 141 
  141 FORMAT (1X,'DATE',22X,'RCV RT R',33X,'GEN   MF   CY DI  895 DI',
     .'  CW',/, 
     .'  TIME       JOB   PACK-ID Y/N CT W  PP CH CHR CCC SD HSC UN', 
     .'   FUNC STAT  ID   STAT   STAT    REV',/,
     .1X,10(10H----------),6H------)
      GO TO 2 
* 
*     SUBHEADER FOR 7165/895 FUNCTION ERRORS DETAIL REPORT - 80 COLUMNS 
  150 PRINT 151 
  151 FORMAT (1X,'DATE',22X,'RCV RT R',33X,'GEN   MF',/,
     .'    TIME    JOB   PACK-ID  Y/N CT W  PP CH CHR CCC SD HSC UN', 
     .'   FUNC STAT  ID') 
      GO TO 805 
* 
*     SUBHEADER FOR ISD ADDRESS ERRORS (NO CH/UN/DETAIL STATUS) 80 COL
  160 PRINT 161 
  161 FORMAT (' DATE                    RTY R',17X,'MF GEN',/,
     .'    TIME      JOB    RCV CNT W PP  CYL TRK SEC ID STAT FUNC')
      GO TO 805 
* 
*       SUB-HEADER FOR POSITION ANALYSIS
  170 PRINT 171, HDATA(1), HDATA(2), HDATA(3) 
      GO TO 5 
  171 FORMAT (16X,'... POSITION ANALYSIS SUMMARY ...',//, 
     .1X,A10,"QTY",12X,A10,' QTY',12X,A9,'QTY') 
                                                                         R2DFMD 
*       (THE ABOVE HEADER HAS BEEN MODIFIED TO TAKE OUT THE "RATE".      R2DFMD 
*       "RATE" WAS RIGHT JUSTIFIED IN THE FIRST 6X,7X,AND LAST 6X)       R2DFMD 
                                                                         R2DFMD 
  
*     SUBHEADER FOR UN-RECOVERED RMS ERROR
  180 PRINT 181, HDATA(1), HDATA(2), HDATA(3) 
      LINE = LINE + 3                                                    R2DFMD 
      GO TO 5 
  181 FORMAT(16X,'... UN-RECOVERED RMS ERRORS ... ',/,
     ./,9X,'POSITION',17X,'QUANTITY   ERROR MESSAGE',//,
     .1X,3(A10))
  
  190 PRINT 191,HDATA(4)                                                 R2DFMD 
      LINE = LINE + 4                                                    R2DFMD 
      GO TO 5                                                            R2DFMD 
  191 FORMAT (/,12X,'THE FOLLOWING POSITIONS HAVE AT LEAST  ',I3, 
     .' ERRORS',/,6X,'(WHICH IS GREATER THAN OR EQUAL TO TWO ', 
     .'STANDARD DEVIATIONS)',//,35X,'CYL  TRK SEC     PACK/ID    ', 
     .'QUANTITY',/) 
  
*     SUBHEADER FOR 7165/895 POSITION ANALYSIS - RECOVERED ERRORS 
  200 PRINT 201, HDATA(1), HDATA(2), HDATA(3) 
  201 FORMAT (16X,'... POSITION ANALYSIS SUMMARY ...',/,
     .19X,'... RECOVERED 895 ERRORS ...',/, 
     .9X,'POSITION',17X,'QUANTITY   ERROR MESSAGE',/, 
     .1X,3(A10))
      LINE = LINE + 5 
      GO TO 5 
  
*     SUBHEADER FOR 7165/895 POSITION ANALYSIS - UNRECOVERED ERRORS 
  210 PRINT 211, HDATA(1), HDATA(2), HDATA(3) 
  211 FORMAT (16X,'... POSITION ANALYSIS SUMMARY ...',/,
     .17X,'... UNRECOVERED 895 ERRORS ...',/, 
     .9X,'POSITION',17X,'QUANTITY   ERROR MESSAGE',/, 
     .1X,3(A10))
      LINE = LINE + 5 
      GO TO 5 
  
*         SUB-HEADER FOR 841 DETAIL REPORT - 80 COLUMNS ONLY
  220 PRINT 222 
      GO TO 805 
  222 FORMAT (3X,'DATE',19X,'RTY R',14X,'EQUIP STAT',21X,'MF',/,
     .6X,'TIME   JOBNAME  RCV CNT W PP CH UN FCN  STAT  II   ', 
     .'EXP. POSITION',6X,'ID')
  
*     SUB-HEADER FOR 844, 885/FMD & CDSS2 DETAIL REPORT - 132 COLUMNS 
  230 PRINT 231 
  231 FORMAT(1X,'DATE',26X,'RT R',23X,'CW  MF GEN',33X,'DETAIL STATUS', 
     ./,2X,'TIME       JOB    PACK-ID  R CT W PP CH UN CYL  TRK SEC ',
     .'REV ID STAT  FUNC CONTLR   1    2    3    4    5    6    7', 
     .'    8    9   10')
      GO TO 800 
  
*     SUB-HEADER FOR 844, 885/FMD & CDSS2 DETAIL REPORT - 80 COLUMNS
  240 PRINT 241 
  241 FORMAT (1X,'DATE',8X,'JOB',18X,'RT R',23X,'CW  MF GEN',/, 
     .4X, 'TIME       CONTLR PACK-ID  R  CT W PP CH UN  CYL TRK SEC ',
     .'REV ID STAT   FUNC') 
      GO TO 805 
  
*     SUB-HEADER FOR FSC DETAIL REPORT - 132 COLUMNS
  250 PRINT 251 
  251 FORMAT(3X,'DATE',26X,'RT R',27X,'MF GEN',10X,'CW   ADAP',6X,
     .'--STATUS AND 24 SENSE BYTES--',/,6X,'TIME     JOB    PACK-ID  ', 
     .'R CT W PP CH UN  CYL TRK SEC EST ID STAT CONTLR  REV  NUM',
     .'         C170-DI  FSC-DI') 
      GO TO 800 
  
*     SUB-HEADER FOR FSC DETAIL REPORT - 80 COLUMNS 
  260 PRINT 261 
  261 FORMAT (3X,'DATE',6X,'JOB',17X,'RT R',27X,'MF GEN',/,6X,'TIME   ',
     .'  CONTLR PACK-ID  R CT W PP CH UN  CYL TRK SEC EST ID STAT') 
      GO TO 805 
  
*     SUB-HEADER FOR DEMA DETAIL REPORTS - 132 COLUMNS
  270 PRINT 271 
  271 FORMAT(1X,'DATE',26X,'RT R',23X,'CW  MF GEN       ESM LSP',17X, 
     .'DETAIL STATUS',/,2X,'TIME       JOB    PACK-ID  R CT W PP CH', 
     .' UN  CYL TRK SEC REV ID STAT  FUNC STATUS   1    2    3',
     .'    4    5    6    7    8    9   10')
      GO TO 800 
  
*     SUB-HEADER FOR DEMA DETAIL REPORTS - 80 COLUMNS 
  280 PRINT 281 
  281 FORMAT(1X,'DATE',7X,'JOB',19X,'RT R',23X,'CW  MF GEN',/,
     .4X,'TIME',6X,'LSP STAT PACK-ID R  CT W PP CH UN  CYL TRK SEC ', 
     .'REV ID STAT   FUNC') 
      GO TO 805 
  
*     SUB-HEADER FOR 7165/895 DETAIL REPORTS - 132 COLUMNS
  290 PRINT 291 
  291 FORMAT (1X,'DATE',22X,'RCV RT R',29X,'(TRK)     MF',
     .'   GEN    CY DI  895 DI  CW',
     ./,5X,'TIME    JOB   PACK-ID Y/N CT W  PP CH CHR CCC SD HSC',
     .' UN CYL-HEAD-REC ID   STAT   STAT   STAT    REV     FUNC',/, 
     .1X,11(10H----------),2H--)
      LINE = LINE + 1 
      GO TO 2 
  
*     SUB-HEADER FOR 7165/895 DETAIL REPORTS - 80 COLUMNS 
  300 PRINT 301 
  301 FORMAT (1X,'DATE',22X,'RCV RT R',30X,'(TRK)    MF', 
     ./,5X,'TIME    JOB   PACK-ID Y/N CT W  PP CH CHR CCC SD HSC',
     .' UN CYL-HEAD-REC ID')
      LINE = LINE + 1 
      GO TO 805 
  
*     SUB-HEADER FOR RMS RAM - FLAWED ADD(MTY=32B)- NON-895 DISKS - 80C 
  310 PRINT 311 
  311 FORMAT (1X,'DATE ',/, 
     .3X,'TIME        JOB     PACK-ID   PP  CH  UN    CYL    TRK   SEC',
     .'   MFID')
      GO TO 805 
  
*     SUB-HEADER FOR RMS RAM - (MTY=33/34/52B)- NON-895 DISKS - 80C 
  320 PRINT 321 
  321 FORMAT (1X,'DATE ',/, 
     .3X,'TIME        JOB     PACK-ID   PP  CH  UN  MFID')
      GO TO 805 
  
*     SUB-HEADER FOR RMS RAM MSG - FLAWED ADD(MTY=32B)- 819 DISK - 80C
  330 PRINT 331 
  331 FORMAT (3X,'TIME        JOB     PACK-ID   PP  CH  UN    CYL    ', 
     .'TRK   SEC  MFID')
      GO TO 805 
  
*     SUB-HEADER FOR RMS RAM ERRORS/MSGS(MTY=33/34/52B)- ALL DISKS - 80C
  340 PRINT 341 
  341 FORMAT (3X,'TIME        JOB     PACK-ID   PP  CH  UN  MFID')
      GO TO 805 
  
*     SUBHEADER FOR 6DI ADDRESS ERRORS (NO CH/UN/DETAIL STATUS) 80 COL
  350 PRINT 351 
  351 FORMAT (' DATE                    RTY R',17X,'MF GEN',/,
     .'   TIME       JOB    RCV CNT W PP  CYL TRK SEC ID STAT FUNC')
      GO TO 805 
  
  360 GO TO 805 
  
  370 PRINT 371 
  371 FORMAT (' IHD ERROR REGISTER IMAGES') 
      GO TO 805 
  
  380 PRINT 381 
  381 FORMAT (//,6X,' *** SUMMARY OF IHD ERROR LOG ENTRIES ***')
      GO TO 5 
  
*     HYDRA DETAIL RPT - IHD DRIVER ERRORS (W/ BIT SIGNIFICANT RESPONSE)
  390 PRINT 391,(PL(II),II=1,17,1)
  391 FORMAT (18X,'INITIAL SEEK: C',O5,' H',O2,' S',O2,'(8) /', 
     .                         ' C',Z4,' H',Z2,' S',Z2,'(16)',/ 
     .9X,'SECTOR TRANSFER COUNT: ',I4,15X,'ERROR REGISTER: ',Z4,/,
     .5X,'LAST ISI ADAPTER FUNCTION: ',Z4,9X,'OPERATIONAL REGISTER: ',
     .                                                       Z4,/,
     .14X,'LAST IHD COMMAND:   ',Z2,13X,'CONTROL REGISTER: ',Z4,/,
     .19X,'IDLE STATUS: ',Z4,19X,'T REGISTER: ',Z12,/,
     .11X,'RESIDUAL BYTE COUNT: ',I4,12X,'ISI CHANNEL FLAGS: ',Z1,/,
     .6X,'BIT SIGNIFICANT RESPONSE: ',Z4,/) 
      LINE = LINE + 6 
      GO TO 5 
  
  400 PRINT 401 
  401 FORMAT (23X,'>>> IHD DIAGNOSTIC STATUS MESSAGES <<<',//,
     .' DATE       DEVICE',/, 
     .'   TIME      TYPE  EST   CPP  CCH   UN   MFID   DIAGNOSTIC', 
     .'   RESULT  FRU LIST')
      GO TO 805 
  
*     HYDRA DETAIL RPT - IHD DRIVER ERRORS (W/O BIT SIGNIFICANT RESPON.)
  410 PRINT 411,(PL(II),II=1,16,1)
  411 FORMAT (18X,'INITIAL SEEK: C',O5,' H',O2,' S',O2,'(8) /', 
     .                         ' C',Z4,' H',Z2,' S',Z2,'(16)',/ 
     .9X,'SECTOR TRANSFER COUNT: ',I4,15X,'ERROR REGISTER: ',Z4,/,
     .5X,'LAST ISI ADAPTER FUNCTION: ',Z4,9X,'OPERATIONAL REGISTER: ',
     .                                                       Z4,/,
     .14X,'LAST IHD COMMAND:   ',Z2,13X,'CONTROL REGISTER: ',Z4,/,
     .19X,'IDLE STATUS: ',Z4,19X,'T REGISTER: ',Z12,/,
     .11X,'RESIDUAL BYTE COUNT: ',I4,12X,'ISI CHANNEL FLAGS: ',Z1,/)
      LINE = LINE + 5 
      GO TO 5 
  
*     HYDRA DETAIL REPORT - IHD DRIVER FAILING ADDRESS
  420 PRINT 421,(PL(II),II=1,6,1) 
  421 FORMAT (15X,'FAILING ADDRESS: C',O5,' H',O2,' S',O2,'(8) /',
     .                            ' C',Z4,' H',Z2,' S',Z2,'(16)') 
      GO TO 900 
  
*     9853 AND DAS DETAIL RPT - 1XD AND 1DA DRIVER ERRORS 
  430 PRINT 431,(PL(II),II=72,89,1) 
  431 FORMAT (14X,'INITIAL SEEK: C',O5,' H',O2,' S',O2,' (8)  /', 
     .                         '  C',Z4,' H',Z2,' S',Z2,' (16)',/,
     .5X,'SECTOR TRANSFER COUNT: ',I4,13X,
     .'DMA CONTROL REGISTER STATUS: ',Z2,/, 
     .7X,'RESIDUAL BYTE COUNT: ',I4,18X,'DMA OPERATIONAL STATUS: ',Z2,/,
     .2X,'CONTROLLER ENDING STATUS: ',Z4,24X,'DMA ERROR STATUS: ',Z4,/, 
     .1X,'LAST IPI ADAPTER FUNCTION: ',Z4,24X,'IPI ERROR STATUS: ',Z4,/,
     .4X,'LAST 9853/DAS  COMMAND: ',Z4,21X,'IPI STATUS REGISTER: ',Z2,/,
     .16X,'T REGISTER: ',Z12,15X,'IPI CHANNEL FLAGS: ',Z1,/)
      LINE = LINE + 6 
      GO TO 5 
  
*     9853 AND DAS DETAIL REPORT - RESPONSE PACKET HEADER 
440   PRINT 441 
441   FORMAT('      WORD NUMBER',20X,'RESPONSE PACKET:')
      GO TO 5 
  
*     9853 AND DAS DETAIL RPT - 1XD AND 1DA DRIVER ERRS - FAIL ADDR 
  450 PRINT 451,(PL(II),II=66,71,1) 
  451 FORMAT (11X,'FAILING ADDRESS: C',O5,' H',O2,' S',O2,' (8)  /',
     .                         '  C',Z4,' H',Z2,' S',Z2,' (16)')
      GO TO 5 
  
  460 PRINT 461, TYPID, HDATA(1), HDATA(2), HDATA(3)
  461 FORMAT (16X,'... POSITION ANALYSIS SUMMARY ...',/,
     .16X,'... RECOVERED ', A8, ' ERRORS  ...',/, 
     .9X,'POSITION',17X,'QUANTITY   ERROR MESSAGE',/, 
     .1X,3(A10))
      LINE = LINE + 5 
      GO TO 5 
  
  470 PRINT 471 
  471 FORMAT (1X,'DATE',38X,'R',12X,'SECTOR   CW  MF GEN ',/, 
     .3X,'TIME',8X,'JOB     PACK-ID/VSN RTY RCV W  CH EQ UN  ADDRESS',
     .'  REV ID STAT',/,1X,7(10H----------),8H--------) 
      LINE = LINE + 3 
      GO TO 5 
  
* 
  800 PRINT 801 
  801 FORMAT (1X,13(10H---------- ))
      GO TO 2 
  805 PRINT 806                                                          R2DFMD 
  806 FORMAT (1X,7(10H----------),8H--------)                            R2DFMD 
      GO TO 2                                                            R2DFMD 
  900 RETURN
      END 
      SUBROUTINE PRINT34 (LT,NW)
* 
**        DESCRIPTION 
*         ----------- 
*         SUBROUTINE PRINT34 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. 
* 
* 
*         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(90) - /COMMON BLOCK/ AREA TO HOLD A LIST OF PRINT
* 
*                  DATA LOADED BY THE CALLING ROUTINE.
* 
*         CALLED BY 
*         --------- 
*          ROUTINES OF OVERLAY ( 3,4 )
* 
*         CALLS 
*         ----- 
*         HEADER - INITIALIZE EACH PAGE OF VARIOUS REPORTS. 
*         PRHEAD - PRINT SUB-HEADER IN VARIOUS REPORT.
* 
*CALL,HPACOM1 
*CALL,HPACOM3 
*          * * * * * * * * * * * * * * * * * * * * * *
      DIMENSION IFORM (8, 53), FORM2 (12, 9), FMT (12)
      DIMENSION FSC (8,24,4)
      DIMENSION FORMAT (3,8)
* 
      DATA (FORMAT(I,1), I=1,3,1) / 
     .10H0 - PROGRA,10HM/SYSTEM C,10HHECK      /
      DATA (FORMAT(I,2), I=1,3,1) / 
     .10H1 - DEVICE,10H EQUIPMENT,10H CHECK    /
      DATA (FORMAT(I,3), I=1,3,1) / 
     .10H2 - CONTRO,10HL UNIT EQU,10HIP CHECK  /
      DATA (FORMAT(I,4), I=1,3,1) / 
     .10H3 - CONTRO,10HL UNIT CON,10HTROL CHECK/
      DATA (FORMAT(I,5), I=1,3,1) / 
     .10H4 - UNCORR,10HECTABLE DA,10HTA CHECK  /
      DATA (FORMAT(I,6), I=1,3,1) / 
     .10H5 - CORREC,10HTABLE DATA,10H CHECK    /
      DATA (FORMAT(I,7), I=1,3,1) / 
     .10H6 - USAGE/,10HERROR STAT,10HISTICS    /
      DATA (FORMAT(I,8), I=1,3,1) / 
     .10HUNSPECIFIE,10HD         ,10H          /
* 
*        FORMAT FOR IHD CHANNEL DOWNED/EQUIPMENT OFFED
      DATA (IFORM(I,9),I=1,5,1) / 
     .10H(1X,A8,1X,,10H3A10,23X,1,10H0HCPP/CCH ,10H= ,O2,1H/,,
     .10HO2,R1,/)  /
* 
*        FORMAT FOR IHD ERROR REGISTER IMAGES - 1ST LINE
      DATA (IFORM(I,10),I=1,4,1) /
     .10H(1X,A8,54X,10H,10HCPP/CC,10HH = ,O2,1H,10H/,O2,R1)  /
* 
*        FORMAT FOR IHD ERROR REGISTER IMAGES - 2ND THRU 7TH LINES
      DATA (IFORM(I,11),I=1,6,1) /
     .10H(4X,10H RE,10HGISTERS,6(,10HI3,2H -,I3,10H,2H: ,8(Z4,
     .10H,3H / ),/,,10H14X))     /
* 
*        FORMAT FOR ERROR STATUS SUMMARY
      DATA (IFORM(I,12),I=1,6,1) /
     .10H(1X,A8,1X,,10H2A10,A2,A1,10H0,A1,20X,1,10H0HCPP/CCH ,
     .10H= ,O2,1H/,,10HO2,R1)    /
* 
*        FORMAT FOR ERROR STATUS SUMMARY - DIVIDER LINE 
      DATA (IFORM(I,13),I=1,4,1) /
     .10H(1X,7(10H=,10H=========),10H,8H=======,10H=)         / 
* 
*        FORMAT FOR IHD, 9853 AND DAS DRIVER ERRORS - 1ST LINE
      DATA (IFORM(I,14),I=1,6,1) /
     .10H(1X,A8,1X,,10HR2,O3,1X,3,10HA10,1X,A5,,10HA8,I2,1X,A,
     .10H10,O2,1H/,,10HO2,R1)    /
* 
*        FORMAT FOR IHD DRIVER ERRORS - IHD AND DEVICE STATUS 
      DATA (IFORM(I,15),I=1,8,1) /
     .10H(2X,2A10,9,10HH (80-86) ,10H,7(1X,Z4,1,10HH/),/,2X,2,
     .10HA10,9H (90,10H-97) ,8(1X,10H,Z4,1H/),/,10H)         /
* 
*        FORMAT FOR IHD DIAGNOSTIC STATUS MESSAGES
      DATA (IFORM(I,16),I=1,7,1) /
     .10H(3X,A8,3X,,10HR2,3X,O3,2,10H(3X,O2),R1,10H,3X,O2,4X,,
     .10HR1,5X,R8,5,10HX,R4,4X,A1,10H0)         / 
* 
*        FORMAT FOR IHD DRIVER ERRORS - MI/SI/DS OR CHANNEL CODE/TEXT 
      DATA (IFORM(I,17),I=1,2,1) /
     .10H(10X,R4,2X,10H,3A10)     / 
* 
*        FORMAT FOR 6DI ADDRESS ERRORS - 80 COLUMNS ONLY
      DATA (IFORM(I,18),I=1,7,1) /
     .10H(3X,A8,1X,,10HR8,1X,A3,1,10HX,I3,A3,O2,10H,1X,O4,2(1,
     .10HX,O3),2X,R,10H1,1X,O4,1X,10H,O4)      /
  
*        FORMAT FOR ISD ADDRESS ERRORS - 80 COLUMNS ONLY
      DATA (IFORM(I,19),I=1,7,1) /
     .10H(3X,A8,1X,,10HR8,1X,A3,1,10HX,I3,A3,O2,10H,1X,O4,2(1,
     .10HX,O3),2X,R,10H1,1X,O4,1X,10H,O4)      /
  
*        FORMAT FOR ISD DETAIL EXTENDED - 132 COLUMNS 
      DATA (IFORM(I,20),I=1,3,1) /
     .10H(66X,O4.0,,10H9(1H/,O4.0,10H))        /
  
*        FORMAT FOR ISD DETAIL - 1ST LINE/80 COLUMNS
      DATA (IFORM(I,21),I=1,7,1) /
     .10H(3X,A8,1X,,10HR8,1X,A3,1,10HX,I3,A3,O2,10H,1X,O2,1X,,
     .10HO4,2(1X,O3,10H),2X,R1,1X,10H,O4,3X,O4)/
  
*        FORMAT FOR ISD DETAIL - 2ND LINE/80 COLUMNS
*        FORMAT FOR ISD DX     - 3RD LINE/80 COLUMNS
      DATA (IFORM(I,22),I=1,3,1) /
     .10H(34X,O4.0,,10H9(1H/,O4.0,10H))        /
  
*        FORMAT FOR ISD FUNCTION ERRORS - 80 COLUMN ONLY
      DATA (IFORM(I,23),I=1,6,1) /
     .10H(3X,A8,1X,,10HR8,1X,A3,1,10HX,I3,A3,2(,10HO2,1X),A4,,
     .10H2X,R1,1X,O,10H4)        /
  
*        FORMAT FOR 844/885/FSE/DEMA/CDSS2 FUNCTION ERRORS - 80 COL ONLY
      DATA (IFORM(I,24),I=1,6,1) /
     .10H(3X,A8,1X,,10HR8,1X,A3,1,10HX,I3,A3,2(,10HO2,1X),A4,,
     .10H2X,R1,1X,O,10H4)        /
  
  
*        FORMAT FOR RMS/RAM MESSAGE - WITH FLAWED ADDRESS (MTY=32B) 
      DATA (IFORM(I,25),I=1,6,1) /
     .10H(3X,A8,2(2,10HX,R8),2X,O,10H2,2X,O2,2X,10H,O2,4X,O4,,
     .10H2(3X,O3),4,10HX,R1,R6)   / 
  
*        FORMAT FOR RMS/RAM ERROR/MESSAGE (MTY=33B,34B,52B) 
      DATA (IFORM(I,26),I=1,5,1) /
     .10H(3X,A8,2(2,10HX,R8),2X,O,10H2,2X,O2,2X,10H,O2,4X,R1,,
     .10HR6)       /
  
*     ****  FORMAT FOR 819 DETAIL REPORT
      DATA (IFORM(I,30),I=1,3,1) /
     .10H(1X,A8,1X,,10HR8,11A10,A,10H4)        /
  
      DATA (IFORM(I,31),I=1,3,1) /
     .10H(1X,A8,1X,,10HR8,1X,11A1,10H0,A4)     /
  
*         FORMAT FOR 841 DETAIL REPORT
      DATA (IFORM(I,32),I=1,6,1) /
     .10H(4X,A8,1X,,10HR8,A5,I3,A,10H3,3(O2,1X),10H,3(O4,1X),,10H2A10,1X
     .,R1,10H)         /
                                                                         R2DFMD 
*        FORMAT FOR 844,885/FMD,DEMA,CDSS2 DETAIL - 1ST LINE/80 COLUMNS 
      DATA (IFORM(I,35),I=1,8,1) /
     .10H(4X,A8,2(1,10HX,R8),A3,1,10HX,I2,A3,3(,10HO2,1X),O4,,
     .10H2(1X,O3),1,10HX,I2,2X,R1,10H,2X,O4,A2,,10H1X,O4)    /
  
                                                                         R2DFMD 
*        FORMAT FOR 844,885/FMD,DEMA,CDSS2 DETAIL - 2ND LINE/80 COLUMNS 
*        FORMAT FOR 844,885/FMD,DEMA,CDSS2 DX     - 3RD LINE/80 COLUMNS 
      DATA (IFORM(I,36),I=1,3,1) /
     .10H(17X,A5,8X,10H,O4.0,9(1H,10H/,O4.0))  /
  
*        FORMAT FOR 844,885/FMD,DEMA,CDSS2 DX     - 2ND LINE/132 COLUMNS
      DATA (IFORM(I,37),I=1,5,1) /
     .10H(77X,A5,O4,10H.0,9(1H/,O,10H4.0))     ,10H          ,10H 
     .   /
  
*     FORMAT FOR 7165/895 SENSE BYTES - 132 COLUMNS 
      DATA (IFORM(I,38),I=1,4,1) /
     .10H(51X,2A10,,10H12(Z2,1H/),10H,/,71X,12(,10HZ2,1H/))  /
  
*     FORMAT FOR 7165/895 SENSE BYTES - 80 COLUMNS
      DATA (IFORM(I,39),I=1,4,1) /
     .10H(23X,2A10,,10H12(Z2,1H/),10H,/,43X,12(,10HZ2,1H/))      /
  
*     FORMAT FOR 7165/895 DETAIL EXTENDED SENSE BYTES - 132 COLUMNS 
      DATA (IFORM(I,40),I = 1,5,1) /
     .10H(5X,8(4HBY,10HTE,I4,2X,Z,10H2,4X),/,5X,10H,8(R8,8X),,
     .10H/)                                                      /
  
*     FORMATS FOR 7165/895 DETAIL EXTENDED SENSE BYTES - 80 COLUMNS 
      DATA (IFORM(I,41),I = 1,5,1) /
     .10H(3X,5(4HBY,10HTE,I4,2X,Z,10H2,4X),/,3X,10H,5(R8,8X),,
     .10H/)                                                      /
      DATA (IFORM(I,42),I = 1,5,1) /
     .10H(3X,4(4HBY,10HTE,I4,2X,Z,10H2,4X),/,3X,10H,4(R8,8X),,
     .10H/)                                                      /
  
*        FORMAT FOR 9853 AND DAS DRIVER ERRORS - RESPONSE PACKET
      DATA (IFORM(I,43),I=1,8,1) /
     .10H(8X,I2,' -,10H ',I2,':',,10H3X,Z4,2X,Z,10H4,2X,Z4,2X,
     .10H,Z4,2X,Z4,,10H2X,Z4,2X,Z,10H4,2X,Z4,2X,10H,Z4)      /
  
*        FORMAT FOR 844, 885/FMD AND CDSS2 SUSPECTED BAD SPOT MESSAGE 
      DATA (IFORM(I,46),I=1,4,1) /
     .10H(3(A10),5X,10H,O4,1X,O3,,10H1X,O3,5X,R,10H8,4X,I5)  /
  
*         FORMAT FOR 844 UN-RECOVERED RMS ERROR REPORT. 
      DATA (IFORM(I,47),I=1,4,1) /
     .10H(2X,O4,7X,,10HO3,6X,O3,1,10H0X,I5,5X,2,10HA10,A8)   /
  
*         RMS DEVICE POSITION ANALYSIS SUMMARY REPORT.
      DATA (IFORM(I,50),I=1,5,1) /
     .10H(4X,R4,R5,,10HR6,R2,9X,R,10H3,R7,R7,R2,10H,6X,R3,R6,,10HR6,R2) 
     .   /
  
*         FORMAT FOR OPTICAL DISK DETAIL - 1ST LINE 
      DATA (IFORM(I,51),I=1,7,1) /
     .10H(4X,A8,1X,,10HR8,1X,R4,R,10H8,2X,O2,A4,10H,A3,1X,3(O,
     .10H2,1X),1X,Z,10H8,1X,Z4,1X,10H,R1,1X,O4)/
*         FORMAT FOR OPTICAL DISK DETAIL - 2ND/3RD LINES
      DATA (IFORM(I,52),I=1,8,1) /
     .10H(12X,'C0-C,10H6 / DS 00-,10H06',4X,Z4,,10H6(1H/,Z4),,
     .10H/12X,'D0-D,10H7 / DS 07-,10H14',4X,Z4,,10H7(1H/,Z4))/
*         FORMAT FOR OPTICAL DISK DETAIL - 4TH LINE 
      DATA (IFORM(I,53),I=1,4,1) /
     .10H(12X,'F0-F,10H8 / DS 15-,10H23',4X,Z4,,10H8(1H/,Z4))/
  
  
  
  
* 
*       **********************************************
* 
*         ...START OF (FORM2) ARRAY FOR LARGE FORMATS ... 
* 
*        ... THESE ARE CALLED WITH FORMAT PARAMETER BIASED
*            BY +100, IN PRINT CALL . 
* 
*        ************************************************ 
  
*         FORMAT FOR 844,885/FMD,DEMA,CDSS2 DETAIL REPORT - 132 COLUMNS 
      DATA (FORM2(I,1),I=1,10,1) /
     .10H(2X,A8,2(1,10HX,R8),A3,I,10H2,A3,3(O2,,10H1X),O4,2(1,
     .10HX,O3),1X,I,10H2,2X,R1,2X,10H,O4,A2,O4,,10H1X,A5,1X,O,
     .10H4.0,9(1H/,,10HO4.0))    /
  
*         FORMAT FOR FSC DETAIL - 132 COLUMNS - D/DX PARAMETER
      DATA (FORM2(I,2),I=1,11,1) /
     .10H(4X,A8,2(1,10HX,R8),A3,1,10HX,I2,A3,3(,10HO2,1X),O4,,
     .10H3(1X,O3),2,10HX,R1,1X,O4,10H,2X,A5,2X,,10HI2,3X,O4,6,
     .10HX,2(4X,O4),10H,2(/93X,12,10H(1H/,Z2)))/
  
*         FORMAT FOR FSC DETAIL - 80 COLUMNS - D/DX AND R PARAMETERS
      DATA (FORM2(I,3),I=1,11,1) /
     .10H(4X,A8,2(1,10HX,R8),A3,1,10HX,I2,A3,3(,10HO2,1X),O4,,
     .10H3(1X,O3),2,10HX,R1,1X,O4,10H,/,17X,A5,,10H27X,I2,3(4,
     .10HX,O4),2(/,,10H39X,12(1H/,10H,Z2)))    /
  
*        FORMAT FOR ISD DETAIL - 132 COLUMNS
      DATA (FORM2(I,4),I=1,9,1)/
     .10H(3X,A8,1X,,10HR8,1X,A3,1,10HX,I3,A3,O2,10H,1X,O2,1X,,
     .10HO4,2(1X,O3,10H),2X,R1,1X,10H,O4,1X,O4,,10H1X,O4.0,9(,
     .10H1H/,O4.0))/
  
*        FORMAT FOR 7165/895 DETAIL - 132 COLUMNS 
      DATA (FORM2(I,5),I=1,12,1) /
     .10H(2X,A8,1X,,10HR8,1X,R6,A,10H4,I3,A3,2(,10H1X,O2),1X,,
     .10HO2,1X,O4,2,10H(2X,O1),2X,10H,O2,1X,O4,,10H1X,O2,2X,O,
     .10H2,3X,R1,3(,10H3X,O4),4X,,10HI2,4X,O6.4,10H)         /
  
*        FORMAT FOR 7165/895 DETAIL - 80 COLUMNS
      DATA (FORM2(I,6),I=1,9,1) / 
     .10H(2X,A8,1X,,10HR8,1X,R6,A,10H4,I3,A3,2(,10H1X,O2),1X,,
     .10HO2,1X,O4,2,10H(2X,O1),2X,10H,O2,1X,O4,,10H1X,O2,2X,O,
     .10H2,3X,R1)  /
  
*        FORMAT FOR 7165/895 FUNCTION ERRORS DETAIL REPORT - 132 COLUMN 
      DATA (FORM2(I,7),I=1,10,1) /
     .10H(2X,A8,1X,,10HR8,1X,R6,A,10H4,I3,A2,1X,10H,3(1X,O2),,
     .10H1X,O4,2(2X,10H,O1),2X,O2,10H,1X,O6.4,1,10HX,O4,3X,R1,
     .10H,3X,O4,3X,,10HO4,4X,I2) /
  
*        FORMAT FOR 7165/895 FUNCTION ERRORS DETAIL REPORT - 80 COLUMNS 
      DATA (FORM2(I,8),I=1,9,1) / 
     .10H(2X,A8,1X,,10HR8,1X,R6,A,10H4,I3,A2,1X,10H,3(1X,O2),,
     .10H1X,O4,2(2X,10H,O1),2X,O2,10H,1X,O6.4,1,10HX,O4,3X,R1,
     .10H)         /
  
*     ******************************************************************
  
*         FSC SENSE BYTE DATA 
      DATA (FSC(I,1,1),I=1,8,1)/
     .                      10HCOMMAND RJ,10HINTERVN RQ,10HBUS OUT CK,10
     .HEQIPMNT CK,                      10HDATA CK   ,10HOVERRUN   ,10H 
     .         ,10H          /
      DATA (FSC(I,2,1),I=1,8,1)/
     .                      10HPERM ERROR,10HINV TK FMT,10HEND OF CYL,10
     .H          ,                      10HNO REC FND,10HFILE PRTCT,10HW
     .RT INHIBT,10HOP INCMPLT/
      DATA (FSC(I,3,1),I=1,8,1)/
     .                      10H          ,10HCORRECTBLE,10HALT CNTLR ,10
     .HENVRN DATA,                      10H          ,10H          ,10H 
     .         ,10H          /
      DATA (FSC(I,4,1),I=1,8,1)/
     .                      10HRESTART   ,10HCOMMAND   ,10H          ,10
     .H          ,                      10H          ,10H          ,10H 
     .         ,10H          /
      DATA (FSC(I,5,1),I=1,8,1)/
     .                      10HDRIVE 0   ,10HDRIVE 1   ,10HDRIVE 2   ,10
     .HDRIVE 3   ,                      10HDRIVE 4   ,10HDRIVE 5   ,10HD
     .RIVE 6   ,10HDRIVE 7   /
      DATA (FSC(I,6,1),I=1,8,1)/
     .                      10HCYL 128   ,10HCYL  64   ,10HCYL  32   ,10
     .HCYL  16   ,                      10HCYL   8   ,10HCYL   4   ,10HC
     .YL   2   ,10HCYL   1   /
      DATA (FSC(I,7,1),I=1,8,1)/
     .                      10HDIAG CYL  ,10HCYL256/512,10HDIF/CYL256,10
     .HHEAD 16   ,                      10HHEAD  8   ,10HHEAD  4   ,10HH
     .EAD  2   ,10HHEAD  1   /
      DATA (FSC(I,8,1),I=1,8,1)/
     .                      10HFORMAT 8  ,10HFORMAT 4  ,10HFORMAT 2  ,10
     .HFORMAT 1  ,                      10HMESSAGE 8 ,10HMESSAGE 4 ,10HM
     .ESSAGE 2 ,10HMESSAGE 1 /
      DATA (FSC(I,9,1),I=1,8,1)/
     .                      10H          ,10H          ,10H          ,10
     .H          ,                      10H          ,10H          ,10H 
     .         ,10H          /
      DATA(FSC(I,10,1),I=1,8,1)/
     .                      10H          ,10H          ,10H          ,10
     .H          ,                      10H          ,10H          ,10H 
     .         ,10H          /
      DATA(FSC(I,11,1),I=1,8,1)/
     .                      10H          ,10H          ,10H          ,10
     .H          ,                      10H          ,10H          ,10H 
     .         ,10H          /
      DATA(FSC(I,12,1),I=1,8,1)/
     .                      10H          ,10H          ,10H          ,10
     .H          ,                      10H          ,10H          ,10H 
     .         ,10H          /
      DATA(FSC(I,13,1),I=1,8,1)/
     .                      10H          ,10H          ,10H          ,10
     .H          ,                      10H          ,10H          ,10H 
     .         ,10H          /
      DATA(FSC(I,14,1),I=1,8,1)/
     .                      10H          ,10H          ,10H          ,10
     .H          ,                      10H          ,10H          ,10H 
     .         ,10H          /
      DATA(FSC(I,15,1),I=1,8,1)/
     .                      10H          ,10H          ,10H          ,10
     .H          ,                      10H          ,10H          ,10H 
     .         ,10H          /
      DATA(FSC(I,16,1),I=1,8,1)/
     .                      10H          ,10H          ,10H          ,10
     .H          ,                      10H          ,10H          ,10H 
     .         ,10H          /
      DATA(FSC(I,17,1),I=1,8,1)/
     .                      10H          ,10H          ,10H          ,10
     .H          ,                      10H          ,10H          ,10H 
     .         ,10H          /
      DATA(FSC(I,18,1),I=1,8,1)/
     .                      10H          ,10H          ,10H          ,10
     .H          ,                      10H          ,10H          ,10H 
     .         ,10H          /
      DATA(FSC(I,19,1),I=1,8,1)/
     .                      10H          ,10H          ,10H          ,10
     .H          ,                      10H          ,10H          ,10H 
     .         ,10H          /
      DATA(FSC(I,20,1),I=1,8,1)/
     .                      10H          ,10H          ,10H          ,10
     .H          ,                      10H          ,10H          ,10H 
     .         ,10H          /
      DATA(FSC(I,21,1),I=1,8,1)/
     .                      10H          ,10H          ,10H          ,10
     .H          ,                      10H          ,10H          ,10H 
     .         ,10H          /
      DATA(FSC(I,22,1),I=1,8,1)/
     .                      10H          ,10H          ,10H          ,10
     .H          ,                      10H          ,10H          ,10H 
     .         ,10H          /
      DATA(FSC(I,23,1),I=1,8,1)/
     .                      10H          ,10H          ,10H          ,10
     .H          ,                      10H          ,10H          ,10H 
     .         ,10H          /
      DATA(FSC(I,24,1),I=1,8,1)/
     .                      10H          ,10H          ,10H          ,10
     .H          ,                      10H          ,10H          ,10H 
     .         ,10H          /
      DATA (FSC(I,7,2),I=1,8,1)/
     .                      10HDIAG CYL  ,10HCYL256/512,10HDIF/CYL256,10
     .HHEAD 16   ,                      10HHEAD  8   ,10HHEAD  4   ,10HH
     .EAD  2   ,10HHEAD  1   /
      DATA (FSC(I,8,2),I=1,8,1)/
     .                      10HFORMAT 8  ,10HFORMAT 4  ,10HFORMAT 2  ,10
     .HFORMAT 1  ,                      10HMESSAGE 8 ,10HMESSAGE 4 ,10HM
     .ESSAGE 2 ,10HMESSAGE 1 /
      DATA (FSC(I,9,2),I=1,8,1)/
     .                      10HHIGH ORDER,10HCYL BYTE  ,10HOF LAST   ,10
     .HCOUNT     ,                      10HFIELD     ,10HREAD      ,10H 
     .         ,10H          /
      DATA(FSC(I,10,2),I=1,8,1)/
     .                      10HLOW ORDER ,10HCYL BYTE  ,10HOF LAST   ,10
     .HCOUNT     ,                      10HFIELD     ,10HREAD      ,10H 
     .         ,10H          /
      DATA(FSC(I,11,2),I=1,8,1)/
     .                      10HHIGH ORDER,10HHEAD BYTE ,10HOF LAST   ,10
     .HCOUNT     ,                      10HFIELD     ,10HREAD      ,10H 
     .         ,10H          /
      DATA(FSC(I,12,2),I=1,8,1)/
     .                      10HLOW ORDER ,10HHEAD BYTE ,10HOF LAST   ,10
     .HCOUNT     ,                      10HFIELD     ,10HREAD      ,10H 
     .         ,10H          /
      DATA(FSC(I,13,2),I=1,8,1)/
     .                      10HNUMBER OF ,10HRECORDS   ,10HIN LAST   ,10
     .HCOUNT     ,                      10HFIELD     ,10HREAD      ,10H 
     .         ,10H          /
      DATA(FSC(I,14,2),I=1,8,1)/
     .                      10HSECTOR    ,10HNUMBER    ,10HOF RECORD ,10
     .HIN ERROR  ,                      10H          ,10H          ,10H 
     .         ,10H          /
      DATA(FSC(I,15,2),I=1,8,1)/
     .                      10HAMOUNT OF ,10HOFFSET    ,10HUSED TO   ,10
     .HRECOVER   ,                      10HFOR       ,10HCLASS A   ,10HD
     .EVICES   ,10H          /
      DATA(FSC(I,16,2),I=1,8,1)/
     .                      10HNUMBER OF ,10HRETRIES TO,10HRECOVER   ,10
     .HFOR       ,                      10HCLASS A   ,10HDEVICES   ,10H 
     .         ,10H          /
      DATA(FSC(I,17,2),I=1,8,1)/
     .                      10HID OF     ,10HPHY DEVICE,10HTHAT WROTE,10
     .HRECORD FOR,                      10HCLASS A   ,10HDEVICES   ,10H 
     .         ,10H          /
      DATA(FSC(I,18,2),I=1,8,1)/
     .                      10H          ,10H          ,10H          ,10
     .H          ,                      10H          ,10H          ,10H 
     .         ,10H          /
      DATA(FSC(I,19,2),I=1,8,1)/
     .                      10H          ,10H          ,10H          ,10
     .H          ,                      10H          ,10H          ,10H 
     .         ,10H          /
      DATA(FSC(I,20,2),I=1,8,1)/
     .                      10H          ,10H          ,10H          ,10
     .H          ,                      10H          ,10H          ,10H 
     .         ,10H          /
      DATA(FSC(I,21,2),I=1,8,1)/
     .                      10H          ,10H          ,10H          ,10
     .H          ,                      10H          ,10H          ,10H 
     .         ,10H          /
      DATA(FSC(I,22,2),I=1,8,1)/
     .                      10H          ,10H          ,10H          ,10
     .H          ,                      10H          ,10H          ,10H 
     .         ,10H          /
      DATA(FSC(I,23,2),I=1,8,1)/
     .                      10HFAULT     ,10HSYMPTOM   ,10HCODE      ,10
     .H          ,                      10H          ,10H          ,10H 
     .         ,10H          /
      DATA(FSC(I,24,2),I=1,8,1)/
     .                      10HFAULT     ,10HSYMPTOM   ,10HCODE      ,10
     .H          ,                      10H          ,10H          ,10H 
     .         ,10H          /
      DATA (FSC(I,7,3),I=1,8,1)/
     .                      10HDIAG CYL  ,10HCYL256/512,10HDIF/CYL256,10
     .HHEAD 16   ,                      10HHEAD  8   ,10HHEAD  4   ,10HH
     .EAD  2   ,10HHEAD  1   /
      DATA (FSC(I,8,3),I=1,8,1)/
     .                      10HFORMAT 8  ,10HFORMAT 4  ,10HFORMAT 2  ,10
     .HFORMAT 1  ,                      10HMESSAGE 8 ,10HMESSAGE 4 ,10HM
     .ESSAGE 2 ,10HMESSAGE 1 /
      DATA (FSC(I,9,3),I=1,8,1)/
     .                      10HHIGH ORDER,10HCYL BYTE  ,10HOF LAST   ,10
     .HCOUNT     ,                      10HFIELD     ,10HREAD      ,10H 
     .         ,10H          /
      DATA(FSC(I,10,3),I=1,8,1)/
     .                      10HLOW ORDER ,10HCYL BYTE  ,10HOF LAST   ,10
     .HCOUNT     ,                      10HFIELD     ,10HREAD      ,10H 
     .         ,10H          /
      DATA(FSC(I,11,3),I=1,8,1)/
     .                      10HHIGH ORDER,10HHEAD BYTE ,10HOF LAST   ,10
     .HCOUNT     ,                      10HFIELD     ,10HREAD      ,10H 
     .         ,10H          /
      DATA(FSC(I,12,3),I=1,8,1)/
     .                      10HLOW ORDER ,10HHEAD BYTE ,10HOF LAST   ,10
     .HCOUNT     ,                      10HFIELD     ,10HREAD      ,10H 
     .         ,10H          /
      DATA(FSC(I,13,3),I=1,8,1)/
     .                      10HNUMBER OF ,10HRECORDS   ,10HIN LAST   ,10
     .HCOUNT     ,                      10HFIELD     ,10HREAD      ,10H 
     .         ,10H          /
      DATA(FSC(I,14,3),I=1,8,1)/
     .                      10HSECTOR    ,10HNUMBER    ,10HOF RECORD ,10
     .HIN ERROR  ,                      10H          ,10H          ,10H 
     .         ,10H          /
      DATA(FSC(I,15,3),I=1,8,1)/
     .                      10HAMOUNT OF ,10HOFFSET    ,10HUSED TO   ,10
     .HRECOVER   ,                      10HFOR       ,10HCLASS A   ,10HD
     .EVICES   ,10H          /
      DATA(FSC(I,16,3),I=1,8,1)/
     .                      10HNUMBER OF ,10HBYTES     ,10HPROCESSED ,10
     .HBY CONTROL,                      10HUNIT      ,10H          ,10H 
     .         ,10H          /
      DATA(FSC(I,17,3),I=1,8,1)/
     .                      10HNUMBER OF ,10HBYTES     ,10HPROCESSED ,10
     .HBY CONTROL,                      10HUNIT      ,10H          ,10H 
     .         ,10H          /
      DATA(FSC(I,18,3),I=1,8,1)/
     .                      10HNUMBER OF ,10HBYTES     ,10HPROCESSED ,10
     .HBY CONTROL,                      10HUNIT      ,10H          ,10H 
     .         ,10H          /
      DATA(FSC(I,19,3),I=1,8,1)/
     .                      10HERROR DIS-,10HPLACEMENT ,10HLOCATION  ,10
     .HOF FIRST  ,                      10HBYTE IN   ,10HERROR     ,10H 
     .         ,10H          /
      DATA(FSC(I,20,3),I=1,8,1)/
     .                      10HERROR DIS-,10HPLACEMENT ,10HLOCATION  ,10
     .HOF FIRST  ,                      10HBYTE IN   ,10HERROR     ,10H 
     .         ,10H          /
      DATA(FSC(I,21,3),I=1,8,1)/
     .                      10HERROR     ,10HPATTERN   ,10HUSED FOR  ,10
     .HERROR     ,                      10HCORRECTION,10HFUNCTION  ,10H 
     .         ,10H          /
      DATA(FSC(I,22,3),I=1,8,1)/
     .                      10HERROR     ,10HPATTERN   ,10HUSED FOR  ,10
     .HERROR     ,                      10HCORRECTION,10HFUNCTION  ,10H 
     .         ,10H          /
      DATA(FSC(I,23,3),I=1,8,1)/
     .                      10HERROR     ,10HPATTERN   ,10HUSED FOR  ,10
     .HERROR     ,                      10HCORRECTION,10HFUNCTION  ,10H 
     .         ,10H          /
      DATA(FSC(I,24,3),I=1,8,1)/
     .                      10H          ,10H          ,10H          ,10
     .H          ,                      10H          ,10H          ,10H 
     .         ,10HCHL TRUNC /
      DATA (FSC(I,7,4),I=1,8,1)/
     .                      10HDIAG CYL  ,10HCYL256/512,10HDIF/CYL256,10
     .HHEAD 16   ,                      10HHEAD  8   ,10HHEAD  4   ,10HH
     .EAD  2   ,10HHEAD  1   /
      DATA (FSC(I,8,4),I=1,8,1)/
     .                      10HFORMAT 8  ,10HFORMAT 4  ,10HFORMAT 2  ,10
     .HFORMAT 1  ,                      10HMESSAGE 8 ,10HMESSAGE 4 ,10HM
     .ESSAGE 2 ,10HMESSAGE 1 /
      DATA (FSC(I,9,4),I=1,8,1)/
     .                      10HCOUNT OF  ,10HNUMBER OF ,10H8BIT BYTES,10
     .HPROCESSED ,                      10HBY CONTROL,10HUNIT      ,10H 
     .         ,10H          /
      DATA(FSC(I,10,4),I=1,8,1)/
     .                      10HCOUNT OF  ,10HNUMBER OF ,10H8BIT BYTES,10
     .HPROCESSED ,                      10HBY CONTROL,10HUNIT      ,10H 
     .         ,10H          /
      DATA(FSC(I,11,4),I=1,8,1)/
     .                      10HCOUNT OF  ,10HNUMBER OF ,10H8BIT BYTES,10
     .HPROCESSED ,                      10HBY CONTROL,10HUNIT      ,10H 
     .         ,10H          /
      DATA(FSC(I,12,4),I=1,8,1)/
     .                      10HCOUNT OF  ,10HNUMBER OF ,10H8BIT BYTES,10
     .HPROCESSED ,                      10HBY CONTROL,10HUNIT      ,10H 
     .         ,10H          /
      DATA(FSC(I,13,4),I=1,8,1)/
     .                      10HCOUNT OF  ,10HNUMBER OF ,10HCORRCTABLE,10
     .HDATA      ,                      10HERRORS    ,10HPROCESSED ,10HB
     .Y CONTROL,10HUNIT      /
      DATA(FSC(I,14,4),I=1,8,1)/
     .                      10HCOUNT OF  ,10HNUMBER OF ,10HCORRCTABLE,10
     .HDATA      ,                      10HERRORS    ,10HPROCESSED ,10HB
     .Y CONTROL,10HUNIT      /
      DATA(FSC(I,15,4),I=1,8,1)/
     .                      10HCOUNT OF  ,10HNUMBER OF ,10HINITIALLY ,10
     .HUNCORRECT-,                      10HABLE DATA ,10HERRORS    ,10HP
     .ROCESSED ,10H          /
      DATA(FSC(I,16,4),I=1,8,1)/
     .                      10HCOUNT OF  ,10HNUMBER OF ,10HINITIALLY ,10
     .HUNCORRECT-,                      10HABLE DATA ,10HERRORS    ,10HP
     .ROCESSED ,10H          /
      DATA(FSC(I,17,4),I=1,8,1)/
     .                      10HCOUNT OF  ,10HNUMBER OF ,10HSEEK      ,10
     .HCOMMANDS  ,                      10H          ,10H          ,10H 
     .         ,10H          /
      DATA(FSC(I,18,4),I=1,8,1)/
     .                      10HCOUNT OF  ,10HNUMBER OF ,10HSEEK      ,10
     .HCOMMANDS  ,                      10H          ,10H          ,10H 
     .         ,10H          /
      DATA(FSC(I,19,4),I=1,8,1)/
     .                      10H          ,10H          ,10H          ,10
     .H          ,                      10H          ,10H          ,10H 
     .         ,10HCU CHL INT/
      DATA(FSC(I,20,4),I=1,8,1)/
     .                      10HCOUNT OF  ,10HNUMBER OF ,10HSEEK      ,10
     .HERRORS    ,                      10HRETRIEVED ,10H          ,10H 
     .         ,10H          /
      DATA(FSC(I,21,4),I=1,8,1)/
     .                      10HCOUNT OF  ,10HNUMBER OF ,10HCOMMAND   ,10
     .HOVERRUNS  ,                      10HFOR CHL   ,10HINTERFACE ,10HA
     . OR C    ,10H          /
      DATA(FSC(I,22,4),I=1,8,1)/
     .                      10HCOUNT OF  ,10HNUMBER OF ,10HDATA      ,10
     .HOVERRUNS  ,                      10HFOR CHL   ,10HINTERFACE ,10HA
     . OR C    ,10H          /
      DATA(FSC(I,23,4),I=1,8,1)/
     .                      10HCOUNT OF  ,10HNUMBER OF ,10HCOMMAND   ,10
     .HOVERRUNS  ,                      10HFOR CHL   ,10HINTERFACE ,10HB
     . OR D    ,10H          /
      DATA(FSC(I,24,4),I=1,8,1)/
     .                      10HCOUNT OF  ,10HNUMBER OF ,10HDATA      ,10
     .HOVERRUNS  ,                      10HFOR CHL   ,10HINTERFACE ,10HB
     . OR D    ,10H          /
  
*        FORMATS FOR 132 COLUMN FSC SENSE BYTE DATA 
   22 FORMAT(' SENSE BYTE DATA >>> FORMAT ',3A10,//,' BYTE  ',
     .I1,4X,Z2,1X,7(' BYTE ',I2.0,4X,Z2,1X)/8(' ------------- ')) 
  
   24 FORMAT(8(1X,A10,2X,O1,1X))
  
   26 FORMAT(/8(' BYTE ',I2.0,4X,Z2,1X)/8(' ------------- ')) 
  
*        FORMATS FOR 80 COLUMN FSC SENSE BYTE DATA
   32 FORMAT(' SENSE BYTE DATA >>> FORMAT ',3A10,/,' BYTE  ', 
     .I1,3X,Z2,5(' BYTE ',I2.0,3X,Z2))
  
   34 FORMAT(6(1X,A10,1X,O1,))
  
   36 FORMAT(/6(' BYTE ',I2.0,3X,Z2)) 
  
*       ************************************************* 
  
*          FORMAT FOR WARNING MESSAGE IF DETAIL STATUS AND
*          UNIT,CYLINDER,TRACK, OR SECTOR INFO DONT AGREE.
  500 FORMAT(1X,/, ' ** CAUTION--IN THE INDICATED ERROR MESSAGES THE DET
     .AIL STATUS DOES NOT COMPARE',/'             WITH ONE OR MORE OF TH
     .E FOLLOWING *UNIT,CYLINDER,TRACK OR SECTOR* ',/)
  
*     *********************************************************** 
  
*      IF CURRENT DETAILS - NOT TO BE PRINTED - RETURN. 
      IF (FLAGS(4) .EQ. 3HOFF) GO TO 100
  
*        CHECK FOR WARNING MESSAGE
      IF (LT .NE. 200) GO TO 3
*         IF DETAIL STATUS DOES NOT AGREE WITH UNIT,CYL,TRACK,SECTOR
*         PRINT ERROR MESSAGE.  IF NW EQUALS ZERO  PRINT AND  EXIT. 
          IF(IDSFLG(2).EQ.0) GO TO 4
    2     PRINT 500 
          LINE = LINE+4 
          IDSFLG(2) = 0 
          IF(NW.EQ.0) RETURN
          GO TO 4 
  
*        AVOID PAGE HEADERS FOR FSC DX SENSE BYTE FORMATS 
    3 IF (LT.GT.200) GO TO 20 
  
*        AVOID PAGE HEADERS FOR DETAIL CONTINUATION LINES 
      IF ((LT .EQ. 20) .OR. (LT .EQ. 22)) GO TO 5 
      IF ((LT .GE. 36) .AND. (LT .LE. 42)) GO TO 5
      IF ((LT .EQ. 11) .OR. (LT .EQ. 13)) GO TO 5 
      IF ((LT .EQ. 52) .OR. (LT .EQ. 53)) GO TO 5 
  
*        PRINT NEW PAGE HEADERS FOR EACH FSC DX MESSAGE 
*        (IF LINE=11, HEADERS ALREADY PRINTED BY UCHEK34 - NEW EST/MTY) 
      IF  ((RTY .NE. O"51") .OR. (FLAGS(11) .EQ. 3HOFF)) GO TO 30 
      IF (((MTY .GE. O"32") .AND. (MTY .LE. O"34")) .OR.
     .     (MTY .EQ. O"52")) GO TO 30 
      IF (MTY .EQ. O"100") GO TO 30 
      IF ((LINE .GT. 11) .AND. (IHDR .EQ. 9)) GO TO 4 
   30 CONTINUE
  
*        PRINT NEW PAGE HEADERS IF PAGE LINE LIMIT EXCEEDED 
      IF (LINE .LE. PLF) GO TO 5
      IF (IDSFLG(2) .NE. 0) GO TO 2 
  
    4 CALL HEADER 
      IF (IFLD(FRTY) .NE. O"50") HCF(4) = 7 
      CALL PHEAD34(1)                                                    R2DFMD 
                                                                         R2DFMD 
    5 CONTINUE                                                           R2DFMD 
      LINE=LINE+1 
      IF (LT .EQ. 102) LINE = LINE + 2
      IF (LT .EQ. 103) LINE = LINE + 3
      IF ((LT. GE. 40) .AND. (LT. LE. 42)) LINE = LINE + 2
      IF ((LT .EQ. 9) .OR. (LT .EQ. 10)) LINE = LINE + 1
      IF (LT .EQ. 52) LINE = LINE + 1 
      IF (LT .EQ. 11) LINE = LINE + 5 
  
      IF (LT .GE. 100) GO TO 10 
      DO 8 J=1,8
       FMT(J)=IFORM(J,LT) 
  8   CONTINUE
      PRINT FMT, (PL(J),J=1,NW) 
      GO TO 100 
* 
*      PRINT WITH FORMAT OF 100 OR MORE 
   10 LFM = LT - 100
      DO 12 J=1,12
       FMT(J)=FORM2(J,LFM)
 12   CONTINUE
      PRINT FMT, (PL(J),J=1,NW) 
      GO TO 100 
  
*     PRINT WITH FORMATS OF MORE THAN 200 - FSC SENSE BYTE DATA 
   20 LFM = LT - 200
      FMTNO = SHIFT(IFLD(38),-4) + 1
      IF (FMTNO .GT. 7) FMTNO = 8 
      K = 1 
      FSC(1,23,1) = FSC(2,23,1) = FSC(3,23,1) = 10H 
      FSC(1,24,1) = FSC(2,24,1) = FSC(3,24,1) = 10H 
  
*     HEX BYTE DEFINITION FOR BYTES 0-7 SAME FOR ALL FORMATS
      IF ((LFM .EQ. 1) .OR. (LFM .EQ. 4)) GO TO 200 
  
*     SELECT HEX BYTE DEFINITION FOR DESIGNATED FORMAT
      IF (FMTNO .EQ. 5) K = 2 
      IF (FMTNO .EQ. 6) K = 3 
      IF (FMTNO .EQ. 7) K = 4 
  
      IF (FMTNO .NE. 2) GO TO 200 
      FSC(1,23,1) = FSC(1,24,1) = 10HFAULT
      FSC(2,23,1) = FSC(2,24,1) = 10HSYMPTOM
      FSC(3,23,1) = FSC(3,24,1) = 10HCODE 
  200 GO TO (21,25,27,31,35,37,39) LFM
  
   21 PRINT 22, (FORMAT(I,FMTNO),I=1,3), (J-31,IFLD(J),J=31,38) 
      PRINT 24, ((FSC(I,J,K),PL(I*8+J-8),J=1,8),I=1,8)
      GO TO 100 
  
   25 PRINT 26, (J-31,IFLD(J),J=39,46)
      PRINT 24, ((FSC(I,J,K),PL(I*8+J-16),J=9,16),I=1,8)
      GO TO 100 
  
   27 PRINT 26, (J-31,IFLD(J),J=47,54)
      PRINT 24, ((FSC(I,J,K),PL(I*8+J-24),J=17,24),I=1,8) 
      GO TO 100 
  
   31 PRINT 32, (FORMAT(I,FMTNO),I=1,3), (J-31,IFLD(J),J=31,36) 
      PRINT 34, ((FSC(I,J,K),PL(I*6+J-6),J=1,6),I=1,8)
      GO TO 100 
  
   35 PRINT 36, (J-31,IFLD(J),J=37,42)
      PRINT 34, ((FSC(I,J,K),PL(I*6+J-12),J=7,12),I=1,8)
      GO TO 100 
  
   37 PRINT 36, (J-31,IFLD(J),J=43,48)
      PRINT 34, ((FSC(I,J,K),PL(I*6+J-18),J=13,18),I=1,8) 
      GO TO 100 
  
   39 PRINT 36, (J-31,IFLD(J),J=49,54)
      PRINT 34, ((FSC(I,J,K),PL(I*6+J-24),J=19,24),I=1,8) 
      GO TO 100 
  
  
  100 DO 110 K = 1,NW 
  110 PL(K) = 1H
* 
  
      RETURN
      END 
      SUBROUTINE UCHEK34
**
*        UCHEK34  - BASIC ROUTINE USED BY DETAIL PROCESSORS, TO 
*                   TEST FOR CHANGES IN MESSAGE THAT WILL AFFECT
*                   SUBHEADER PRINT.  WHEN CHANGE OCCURS, MODIFY
*                   POINTERS AND CALL PHEAD34 FOR NEW HEADING 
*                   OF DEVICE AND MESSAGE TYPE. 
* 
*        ENTRY CONDITIONS 
*       ------------------- 
*       CURRENT MESSAGE IN PROCESS IS IN (IFLD) 
*     - FOR START OF REPORT, (SVEST) FLAG HAS BEEN PRESET,
*       BY ANALYZER ROUTINES, TO ( -1) TO INDICATE
*       ORIGINAL ENTRY. 
* 
*       EXIT CONDITIONS 
*       ----------------
*       CURRENT APPLICABLE SUB-HEADERS ARE PRINTED , AND FLAGS
*       FOR TEST CHANGES IN NEXT MESSAGE ARE SAVED. 
* 
*       DATA AREAS
*        -----------
*        SVMTY - SAVE MESSAGE TYPE IN PROCESS 
* 
*CALL HPACOM1 
*CALL,HPACOM2 
*CALL,HPACOM3 
      IF (RTY .NE. O"53") CALL DREPT3 
  
      IF (FLAGS(4) .EQ. 3HOFF) GO TO 600
*       JUMP IF NOT INITIAL ENTRY FOR THIS UNIT 
      IF (FLAGS(12) .NE. 7HNEW-EST) GO TO 200 
      IF ((TYPDT .NE. R"DD") .AND. (TYPDT .NE. R"DG")) GO TO 10 
      SVRTY = RTY 
      PSN1 = IFLD(27) 
      REV1 = IFLD(28) 
      REV2 = NFLD(28) 
   10 CONTINUE
      FLAGS(12) = 1H
      SVMTY = IFLD(FMTY)
      PDATE = SEBUF(21) 
      IF(IDSFLG(2).NE.0) CALL PRINT34(200,0)
      CALL HEADER 
      CALL FLIP3
      HCF(4) = 7
      CALL PHEAD34 (1)
      GO TO 600                                                          R2DFMD 
  
*         TEST CHANGE IN MESSAGE TYPE 
  200 IF (SVMTY .NE. MTY) GO TO 300 
*       TEST CHANGE OF DATE 
*         TEST CHANGE IN PSN OR FIRMWARE REVISION NUMBERS FOR ISD 
      IF ((TYPDT .NE. R"DD") .AND. (TYPDT .NE. R"DG")) GO TO 210
      IF (PSN1 .NE. IFLD(27)) GO TO 300 
      IF (REV1 .NE. IFLD(28)) GO TO 300 
      IF (REV2 .NE. NFLD(28)) GO TO 300 
  210 CONTINUE
      IF (PDATE .EQ. SEBUF(23)) GO TO 500 
*         AVOID PRINTING DATE CHANGE FOR FSC DX (NEW HEADER PER MESSAGE)
      IF  ((RTY .NE. O"51") .OR. (FLAGS(11) .EQ. 3HOFF)) GO TO 211
      IF (((MTY .GE. O"32") .AND. (MTY .LE. O"34")) .OR.
     .     (MTY .EQ. O"52") .OR. (MTY .EQ. O"100")) GO TO 211 
      GO TO 500 
  211 CONTINUE
*         INSERT DATE CHANGE FOR SAME MESSAGE 
      IF(IDSFLG(2).NE.0) CALL PRINT34(200,0)
      PDATE = SEBUF(23)                                                  R2DFMD 
      HCF(4) = 7
      IF ((LINE+1) .GT. PLF) GO TO 400
      IF (RTY .NE. O"46") GO TO 212 
      IF (((MTY .GE. O"32") .AND. (MTY .LE. O"34")) .OR.
     .     (MTY .EQ. O"52") .OR. (MTY .EQ. O"100")) GO TO 212 
      IF ((FLAGS(11) .EQ. 3HOFF) .AND. ((LINE+13) .GT. PLF)) GO TO 400
      IF ((FLAGS(11) .NE. 3HOFF) .AND. ((LINE+25) .GT. PLF)) GO TO 400
  212 CONTINUE
      IF (((RTY .EQ. O"53") .OR. (RTY .EQ. O"54"))
     .   .AND. (IFLD(19) .EQ. O"100") .AND. 
     .    ((LINE+10) .GT. PLF)) GO TO 400 
      CALL PHEAD34(4) 
      GO TO 600                                                          R2DFMD 
  
*         PRINT NEW HEADER FOR NEW MESAGE 
  300 IF(IDSFLG(2).NE.0) CALL PRINT34(200,0)
      IF (((MTY .GE. O"32") .AND. (MTY .LE. O"34")) .OR.
     .     (MTY .EQ. O"52") .OR. (MTY .EQ. O"100")) GO TO 305 
      IF (RTY .EQ. O"53") GO TO 400 
      IF (RTY .EQ. O"54") GO TO 400 
  305  CONTINUE 
      IF ((TYPDT .NE. R"DD") .AND. (TYPDT .NE. R"DG")) GO TO 310
      PSN1 = IFLD(27) 
      REV1 = IFLD(28) 
      REV2 = NFLD(28) 
  310 CONTINUE
      PDATE = SEBUF(23) 
      SVMTY = MTY 
*         PRINT NEW PAGE HEADERS FOR EACH FSC DX MESSAGE
      IF  ((RTY .NE. O"51") .OR. (FLAGS(11) .EQ. 3HOFF)) GO TO 311
      IF (((MTY .GE. O"32") .AND. (MTY .LE. O"34")) .OR.
     .     (MTY .EQ. O"52") .OR. (MTY .EQ. O"100")) GO TO 311 
      GO TO 400 
  311 CONTINUE
      IF ((LINE+7) .GT. PLF) GO TO 400
      IF (RTY .NE. O"46") GO TO 312 
      IF (((MTY .GE. O"32") .AND. (MTY .LE. O"34")) .OR.
     .     (MTY .EQ. O"52") .OR. (MTY .EQ. O"100")) GO TO 312 
      IF ((FLAGS(11) .EQ. 3HOFF) .AND. ((LINE+13) .GT. PLF)) GO TO 400
      IF ((FLAGS(11) .NE. 3HOFF) .AND. ((LINE+20) .GT. PLF)) GO TO 400
  312 CONTINUE
      CALL FLIP3
      HCF(4) = 7
      IF ((TYPDT .NE. R"DD") .AND. (TYPDT .NE. R"DG")) GO TO 316
      IF (SVRTY .EQ. RTY) GO TO 316 
      SVRTY = RTY 
      PRINT 314 
  314 FORMAT (/)
      LINE = LINE + 1 
      CALL PHEAD34 (1)
      GO TO 600 
  316 CONTINUE
      CALL PHEAD34 (2)
      GO TO 600                                                          R2DFMD 
                                                                        000790
*         PRINT NEW PAGE HEADER AND SUBHEADERS
  400 CONTINUE
      PDATE = SEBUF(23) 
      SVMTY = MTY 
      CALL HEADER                                                       000810
      CALL FLIP3                                                        000820
      HCF(4) = 7
      CALL PHEAD34 (1)                                                  000830
  500 CONTINUE
  600 RETURN                                                             R2DFMD 
      END 
          IDENT  INTEM34
          LCC OVCAP.
          ENTRY  INTEM34
OVLNO     SET    4
          USE    /LINK/ 
LINKET    BSS    1
LINKEM    BSS    1
          USE    *
  
INTEM34   BSS    1
          SX6    ET 
          SA6    LINKET 
          SX6    EC 
          SA6    LINKEM 
          JP     INTEM34
          EJECT 
*CALL COMHPAERT 
          END 
