*DECK,BUGSOUT 
      SUBROUTINE BUGSOUT
C  THIS SUBROUTINE LOOKS FOR ERRONEOUS B-CELLS IN FIDIT.  IT IS CALLED
C  BY PS1CTL$ JUST BEFORE IT TERMINATES PHASE 2, AND PRINTS OUT THE BAD 
C  BOUNDS ALONG WITH A PERTINENT DIAGNOSTIC MESSAGE.
C  ENTRY: FIDIT = THE BEGINNING ADDRESS OF THE AREA LIST
C         EFIDIT = THE ENDING ADDRESS OF THE AREA LIST
*CALL LDBGCOM 
      DATA ((ERRMSG(I,J),I=1,5),J=1,5) /250H BOTH BOUNDS OUT OF RANGE OF
     , ROUTINE               -TO- BOUND OUT OF RANGE OF ROUTINE 
     ,      THIS IS AN IMPOSSIBLE SITUATION                    -TO- BOUN
     ,D OCCURS IN ROUTINE BEFORE -FROM- BOUND  -FROM- BOUND OUT OF RANGE
     , OF ROUTINE             / 
      DFPACK = -1 
      IF((DEBUG(FIDIT) .AND. MASK(6)) .EQ. SHIFT(POINT,54)) 
     ,    FIDIT = FIDIT + 1 
      IF (FIDIT .GE. EFIDIT) RETURN 
  210 ERR NUM = (SHIFT(DEBUG(FIDIT), -20) .AND. 7B) + 1 
      IF (ERR NUM .EQ. 6) GO TO 200 
      DTYPE = SHIFT(DEBUG(FIDIT),10) .AND. 77B
      DLINE = SHIFT(DEBUG(FIDIT), -25) .AND. MINZERO
      NUM ERR = NUM ERR + 1 
      GO TO (10,20,30,45,50,60,70,45,90,100,110,45),
     ,    (SHIFT(DEBUG(FIDIT),4).AND.17B)+1 
C  HERE FOR ( LINE NUMBER, LINE NUMBER) 
   10 DEBUG(FIDIT+2) = SHIFT(DEBUG(FIDIT+3), 30) .AND.
     ,    SHIFT(MASK(30),30)
      DEBUG(FIDIT+3) = DEBUG(FIDIT+3) .AND. SHIFT(MASK(30),30)
      IF(DEBUG(FIDIT+3). NE. LSTLINE) GO TO 15
      IF (ERR NUM .EQ.2) GO TO 204
      DEBUG(FIDIT+3) = 2H * 
      ERR NUM = 5 
   15 IF(NUMERR .EQ. 1) WRITE(DBGOUT,1) 
      IF(DEBUG(FIDIT+3) .EQ. 2H *) GO TO 18 
      WRITE (DBGOUT, 11) DLINE, DTYPE, DEBUG(FIDIT + 2), DEBUG(FIDIT+3),
     ,    (ERR MSG(I,ERR NUM),I=1,5)
   11 FORMAT(14H AT DEBUG LINE,I5,R1,3H- (,9X,1HL,I5,1H,,9X,1HL,I5,1H), 
     ,    5A10) 
      GO TO 200 
   18 WRITE(DBGOUT, 12) DLINE, DTYPE, DEBUG(FIDIT+2), DEBUG(FIDIT+3), 
     ,   (ERR MSG(I,ERR NUM),I=1,5) 
   12 FORMAT(14H AT DEBUG LINE,I5,R1,3H- (,9X,1HL,I5,1H,,9X,A6,1H), 
     ,    5A10) 
      GO TO 200 
C  HERE FOR ( LINE NUMBER, STATEMENT NUMBER)
   20 DEBUG(FIDIT+2) = SHIFT(DEBUG(FIDIT+3), 30) .AND.
     ,    SHIFT(MASK(30),30)
      IF (NUM ERR .EQ. 1) WRITE ( DBGOUT, 1)
      WRITE (DBGOUT, 21) DLINE, DTYPE, DEBUG(FIDIT +2), DEBUG(FIDIT+3), 
     ,    (ERR MSG(I,ERR NUM),I=1,5)
   21 FORMAT(14H AT DEBUG LINE,I5,R1,3H- (,9X,1HL,I5,1H,,10X,R5,1H),
     ,    5A10) 
      GO TO 200 
C  HERE FOR ( LINE NUMBER, UPDATE IDENTIFIER) 
   30 DEBUG(FIDIT+2) = SHIFT(DEBUG(FIDIT+3), 30) .AND.
     ,    SHIFT(MASK(30),30)
      IF (NUM ERR .EQ. 1) WRITE ( DBGOUT, 1)
      WRITE (DBGOUT, 31) DLINE, DTYPE, DEBUG(FIDIT +2), 
     ,    DEBUG(FIDIT + 3), DEBUG(FIDIT + 4), 
     ,    (ERR MSG(I,ERR NUM),I=1,5)
   31 FORMAT(14H AT DEBUG LINE,I5,R1,3H- (,9X,1HL,I5,2H, ,R5, A9, 1H),
     ,    5A10) 
      GO TO 200 
C  HERE FOR ( STATEMENT NUMBER, LINE NUMBER)
   50 DEBUG(FIDIT+2) = DEBUG(FIDIT+3) .AND. SHIFT(MASK(30),30)
      IF(DEBUG(FIDIT+2). NE. LSTLINE) GO TO 55
      IF (ERR NUM .EQ.2) GO TO 204
      DEBUG(FIDIT+2) = 2H * 
      ERR NUM = 5 
   55 IF(NUMERR .EQ. 1) WRITE(DBGOUT,1) 
      IF(DEBUG(FIDIT+2) .EQ. 2H *) GO TO 58 
      WRITE (DBGOUT, 51) DLINE, DTYPE, DEBUG(FIDIT + 3), DEBUG(FIDIT+2),
     ,    (ERR MSG(I,ERR NUM),I=1,5)
   51 FORMAT(14H AT DEBUG LINE,I5,R1,3H- (,10X,A5,1H,,9X,1HL,I5,1H),
     ,    5A10) 
      GO TO 200 
   58 WRITE(DBGOUT, 52) DLINE, DTYPE, DEBUG(FIDIT+3), DEBUG(FIDIT+2), 
     ,   (ERR MSG(I,ERR NUM),I=1,5) 
   52 FORMAT(14H AT DEBUG LINE,I5,R1,3H- (,10X,A5,1H,,9X,A6,1H),
     ,    5A10) 
      GO TO 200 
C  HERE FOR ( STATEMENT NUMBER, STATEMENT NUMBER) 
   60 IF (NUM ERR .EQ. 1) WRITE( DBGOUT, 1) 
      WRITE (DBGOUT, 61) DLINE, DTYPE, DEBUG(FIDIT+3), DEBUG(FIDIT+3),
     ,    (ERR MSG(I,ERR NUM),I=1,5)
   61 FORMAT(14H AT DEBUG LINE,I5,R1,3H- (, 10X, A5, 1H,, 10X, R5, 1H), 
     ,    5A10) 
      GO TO 200 
C  HERE FOR ( STATEMENT NUMBER, UPDATE IDENTIFIER)
   70 IF (NUM ERR .EQ. 1) WRITE ( DBGOUT, 1)
      WRITE (DBGOUT, 71) DLINE, DTYPE, DEBUG(FIDIT+3),
     ,    DEBUG(FIDIT + 3), DEBUG(FIDIT + 4), 
     ,    (ERR MSG(I,ERR NUM),I=1,5)
   71 FORMAT(14H AT DEBUG LINE,I5,R1,3H- (, 10X, A5, 2H, , R5, A9, 1H), 
     ,    5A10) 
      GO TO 200 
C  HERE FOR ( UPDATE IDENTIFIER, LINE NUMBER) 
   90 DEBUG(FIDIT+2) = DEBUG(FIDIT+4) .AND. SHIFT(MASK(30),30)
      IF (DEBUG(FIDIT + 2) .NE. LSTLINE) GO TO 206
      IF(NUMERR .EQ. 2) GO TO 204 
      DEBUG(FIDIT+2) = 2H * 
      ERR NUM = 5 
      GO TO 206 
  204 NUM ERR = NUM ERR - 1 
      GO TO 200 
  206 IF (NUM ERR .EQ. 1) WRITE ( DBGOUT, 1)
      IF(DEBUG(FIDIT+2) .EQ. 2H *) GO TO 98 
      WRITE (DBGOUT, 91) DLINE, DTYPE, DEBUG(FIDIT + 3),
     ,    DEBUG(FIDIT + 4), DEBUG(FIDIT + 2), 
     ,    (ERR MSG(I,ERR NUM),I=1,5)
   91 FORMAT(14H AT DEBUG LINE,I5,R1,4H- ( ,A10,A4,1H,,9X, 1HL,I5, 1H), 
     ,    5A10) 
      GO TO 200 
   98 WRITE(DBGOUT, 92) DLINE, DTYPE, DEBUG(FIDIT+3), 
     ,   DEBUG(FIDIT+4), DEBUG(FIDIT+2),
     ,   (ERR MSG(I,ERR NUM),I=1,5) 
   92 FORMAT(14H AT DEBUG LINE,I5,R1,4H- ( ,A10, A4,1H,,9X,A6,1H),
     ,    5A10) 
      GO TO 200 
C  HERE FOR ( UPDATE IDENTIFIER, STATEMENT NUMBER)
  100 IF (NUM ERR .EQ. 1) WRITE (DBGOUT, 1) 
      WRITE (DBGOUT, 101) DLINE, DTYPE, DEBUG(FIDIT+3), DEBUG(FIDIT+4), 
     ,    DEBUG(FIDIT+4), (ERR MSG(I,ERRNUM),I=1,5) 
  101 FORMAT(14H AT DEBUG LINE,I5,R1,4H- ( , A10, A4, 1H,, 10X, R5, 1H),
     ,    5A10) 
      GO TO 200 
C  HERE FOR ( UPDATE IDENTIFIER, UPDATE IDENTIFIER) 
  110 IF (NUM ERR .EQ. 1) WRITE (DBGOUT, 1) 
    1 FORMAT (4X, 23HDEBUG- AREA LIST ERRORS) 
      WRITE(DBGOUT, 111) DLINE, DTYPE, DEBUG(FIDIT+3), DEBUG(FIDIT+4),
     ,    DEBUG(FIDIT+4), DEBUG(FIDIT+5), (ERR MSG(I,ERR NUM),I=1,5)
  111 FORMAT(14H AT DEBUG LINE,I5,R1,4H- ( , A10, A4, 2H, , R5, A9, 1H),
     ,    5A10) 
      GO TO 200 
   45 WRITE (DBGOUT, 46)
46    FORMAT(* DEBUG: WOULD YOU BELIEVE THAT SOMEBODY GOOFED  *)
  200 FIDIT = FIDIT + (SHIFT(DEBUG(FIDIT),-23).AND.3) +3
  220 IF (FIDIT .GE. EFIDIT) RETURN 
      IF ((DEBUG(FIDIT) .AND. MASK(6)).NE.SHIFT(POINT,54))  GO TO 210 
      FIDIT = FIDIT + 1 
      GO TO 220 
      END 
