*DECK,BUGCON
      SUBROUTINE BUGCON 
C  THIS ROUTINE TAKES DEBUG STATEMENT ELIST AND CONVERTS IT INTO A DEBUG
C  LIST REPRESENTATION.  AREA AND OPTIONS LISTS ARE SENT TO DISK VIA A
C  RJ BUGPRO WHEN NECESSARY.
C              DFPACK =  1 IF STATEMENT IS IN EXTERNAL PACKET 
C                     = -1 IF INTERNAL PACKET 
C                     =  0 IF INTERSPERSED
C              DFNOGO.LT.0 IF NOT ENUF ROOM FOR DEBUG TABLES
C                     =  0 ELSE 
C              DFTYPE =  TYPE OF DEBUG STATEMENT
C              DFNESTW=  CURRENT WORD FOR LIST
C              DFNEST =  CURRENT POSITION IN DFNESTW
C              REFMAP = THE BEGINNING ADDRESS OF REFMAP 
C              ELAST  = THE LAST ADDRESS OF ELIST 
C              SDVL   = THE BEGINNING ADDRESS OF DVL
*CALL LDBGCOM 
      DATA MISFLAG  /0/ 
      DATA MINZERO /7777B/
      DATA RECORD /4/ 
      DATA OPENFL /0/ 
      DATA POW /1/
      DATA COW /0/
      DATA DBGOUT /2/ 
      DATA RTAB    /2, 1, 5, 6, 3, 4, 7, 0, 8/
      DATA RANGE   /20012201160705555555B/
      DATA INDEF   /20011116040506555555B/
      DATA OUTDBG  /77777777400001777777B/
      DATA DBGPIC  / 8HPAARRAYS, 7HPACALLS, 7HPAFUNCS, 7HPAGOTOS, 
     ,              6HPANOGO, 8HPASTORES, 10H          , 7HPATRACE, 
     ,              5HPAOFF/
      DATA LTFLAG  /.FALSE./
      DATA LFLAG   /.FALSE./
      DATA TRACEL  /-1/ 
      DATA DUNIT  /5LDEBUG/ 
      DATA NEXT /0/ 
      DATA TO LIST /0/
      DATA FM LIST /0/
      DATA FIDIT /0/
      DATA EFIDIT /0/ 
      DATA OH /-1/
      DATA RBLANKS /00000000005555555555B/
      DATA CUR OP BD /0/
      DATA NO LIN /0/ 
      DATA AASIADD /0/
      DATA NAASI /0/
      DATA STAR1 /0/
      DATA STAR2 /0/
      DATA SAMLINE /0/
      DATA FSTLINE /00000000010000000000B/
      DATA LSTLINE /00000000007777777777B/
      DATA STAR /22B/ 
      DATA COMMA /03B/
      DATA RPAREN  /02B/
      DATA EOS/4B/
      DATA LPAREN  /06B/
      DATA SLASH  /23B/ 
      DATA POINT /57B/
      DATA SYMBL/01B/ 
      DATA CONST /0/
      DATA TRCADD /0/ 
      DATA BLNG /0/ 
      DATA OPREC  /5/ 
      DATA LNG IND /100/
      DATA OVRFLOW /0/
      DATA CFPACK  /0/
      DATA OPWORD /0/ 
      DATA TRACE ON /0/ 
      DATA TOT LNG /0/
      DATA REL FLG /0/
      DATA STOSWAP /0/
      DATA VALUE /10HVALUE.    /
      DATA  OPDRL /0/ 
      ELIST = ELIST - 1 
      IF (DFTYPE-40) 1010, 1010, 2010 
* 
*  HERE IF DEBUG CARD 
*  INITIALIZE ALLROU AND -A- FLAG OF DRL, BRANCH ON FIRST CHARACTER 
   10 AREA FLG = 0
      ALL ROU = 0 
      TRACE ON = 0
      NDRL = 0
      MISFLAG = 0 
      IF ( (DFNOGO .LT. 0) .OR. (DFPACK .EQ. 0) ) GO TO 190 
      DRL = SDRL
  200 IF (DRL.EQ.EDRL) GO TO 190
      DEBUG(DRL+1) = DEBUG(DRL+1) .AND. .NOT. MASK(1) 
      DRL = DRL + 2 
      GO TO 200 
  190 IF (EFORM(DEBUG(ELIST)).EQ.EOS) GO TO (90, 100, 80),(DFPACK+2)
      IF (EFORM(DEBUG(ELIST)).EQ.LPAREN) GO TO 30 
* 
*  HERE IF MISSING DELIMETER
* 
  110 M = 1 
      CALL DEBUG ER 
      RETURN
* 
*  HERE IF TURNING ON ALLROU AND -A- FLAGS OF ALL ROUTINES (MAYBE)
* 
   80 IF (DFNOGO .LT. 0) RETURN 
      ALLROU = 1
      DRL = SDRL-2
      SPIDIS = 1
   70 DRL = DRL+2 
      IF (DRL.EQ.EDRL) GO TO 50 
      IF (SPIDIS.EQ.0) GO TO 60 
      IF ((DRLELT(DEBUG(DRL)) .EQ. SPIDER) .AND.
     ,   ((DEBUG(DRL+1) .AND. SHIFT(MASK(39), 60-1)) .EQ. 0)) 
     ,     SPIDIS = 0 
   60 DEBUG(DRL+1) = DEBUG(DRL+1) .OR. MASK(1)
      GO TO 70
   50 IF (SPIDIS.EQ.0) RETURN 
      IF (DRL .NE. REFMAP) GO TO 10100
      DLFLG = 1 
      ENTRY DMVCON
10030 IF (ELAST - 10 .GE. AREAEND) GO TO 10010
      WRITE (DBGOUT, 10020) 
10020 FORMAT(14X, *DEBUG: MORE CORE IS NEEDED.  FURTHER PACKET DEBUG STA
     ,TEMENTS WILL BE CHECKED FOR SYNTAX BUT NOT PROCESSED. *)
      DFNOGO = -1 
      IF (DLFLG.NE.5) GO TO 10011 
      DLFLG = 0 
      RETURN
10011 POW = 0 
      CALL BUGCLO 
      GO TO ( 100, 150, 1185, 2020, 100), DLFLG 
10010 CALL DMVWDS (DRL - ELAST, DEBUG(ELAST), DEBUG(ELAST - 10))
      ELAST = ELAST - 10
      SSYMTAB = SSYMTAB - 10
      ESYMTAB = ESYMTAB - 10
      SDRL = SDRL - 10
      EDRL = EDRL - 10
      SDVL = SDVL - 10
      EDVL = EDVL - 10
      ELIST = ELIST - 10
      D LNG DRL = D LNG DRL + 10
      CALL FIXPNTR
      DRL = DRL - 10
      GO TO ( 10100, 10200, 10300, 10400, 94), DLFLG
10100 DEBUG(DRL) = SPIDER 
      DEBUG(DRL+1) = MASK(1)
      EDRL = EDRL+2 
  100 RETURN
* 
*  HERE IF EOS AND DFPACK=-1
* 
   90 IF (DFNOGO.LT.0) RETURN 
      ALL ROU = 0 
      DRL = SDRL - 2
      TEMP = DRLELT(DEBUG(DBGPROG)) 
   93 DRL = DRL + 2 
      IF (DRL .EQ. EDRL) GO TO 91 
      IF ( (DRLELT(DEBUG(DRL)) .EQ. TEMP) .AND. 
     ,   ((DEBUG(DRL+1) .AND. SHIFT(MASK(39),60-1)) .EQ. 0)) 92, 93 
   91 IF (DRL .NE. REFMAP) GO TO 94 
      DLFLG = 5 
      GO TO 10030 
   94 DEBUG(DRL) = TEMP 
      EDRL = EDRL + 2 
      DEBUG(DRL+1) = 0
   92 DEBUG(DRL+1) = DEBUG(DRL+1) .OR. MASK(1)
      RETURN
* 
C  HERE IF EXPECTING SYMBOL 
   30 ELIST = ELIST - 1 
      IF (EFORM(DEBUG(ELIST)).NE.SYMBL) GO TO 115 
      NDRL = NDRL + 1 
      TEMP = DRLELT(SHIFT(DEBUG(ELIST), 12) ) 
      IF ((DFPACK .LT. 0) .AND. (TEMP .NE. DRLELT(DEBUG(DBGPROG)))) 
     ,    GO TO 131 
      IF (DFNOGO .LT. 0) GO TO 150
      DRL = SDRL
  140 IF (DRL.EQ.EDRL) GO TO 120
      IF ( (DRLELT(DEBUG(DRL)) .EQ. TEMP) 
     ,    .AND. ((DEBUG(DRL+1) .AND. SHIFT(MASK(39),60-1)) .EQ. 0)) 
     ,    GO TO 130 
      DRL = DRL+2 
      GO TO 140 
  120 IF (DRL .NE. REFMAP) GO TO 10200
      DLFLG = 2 
      GO TO 10030 
10200 DEBUG(DRL) = DRLELT(SHIFT(DEBUG(ELIST), 12))
      DEBUG(DRL+1) = MASK(1)
      EDRL = EDRL+2 
      GO TO 150 
  130 DEBUG(DRL+1) = DEBUG(DRL+1) .OR. MASK(1)
* 
C  HERE IF EXPECTING DELIMETER
* 
  150 ELIST = ELIST-1 
      IF (EFORM(DEBUG(ELIST)).EQ.COMMA) GO TO 30
      IF (EFORM(DEBUG(ELIST)).NE.RPAREN) GO TO 110
      IF (EFORM(DEBUG(ELIST-1)) .EQ. EOS) RETURN
  152 M = 2 
      CALL DEBUG ER 
      RETURN
  131 M = 16
      CALL DEBUG ER 
      GO TO 150 
* 
*  HERE IF MISSING SYMBOL 
* 
  115 M = 3 
      CALL DEBUG ER 
      RETURN
* 
* 
*  HERE IF A DEBUG OR AREA CARD 
* 
 1010 IF(DFOPFLG.EQ.0) GO TO 1020 
* 
*  HERE IF HAVE OPTIONS TO WRITE OUT
* 
      IF (DFNEST .NE.4) GO TO 1017
      IF ( ( DFNESTW - AREAEND - 1) .EQ. 0) GO TO 1018
      DFNEST = -1 
      DFNESTW = DFNESTW - 1 
 1017 DFNEST = DFNEST + 1 
 1018 OH = MINZERO
      CALL PUT IN 
      IF (DFNEST .EQ. 4) DFNESTW = DFNESTW - 1
      DFOPFLG = 0 
      DEBUG(OPDRL+1)  =  (DEBUG(OPDRL+1) .AND. SHIFT(MASK(42), 24)) 
     ,     .OR. SHIFT(DFNESTW - AREAEND, 24)
      IF (OPENFL .EQ. 0) CALL WRTMS1
11111 CALL WRTMS2 (DEBUG(AREAEND + 1), DFNESTW - AREAEND, OPREC)
      CALL WRTMS3 
      DEBUG(SDBGIND+OPREC)  =  (DEBUG(SDBGIND+OPREC) .AND.
     ,     SHIFT(MASK(42), 24)) .OR. SHIFT(DFNESTW-AREAEND, 24) 
      DFNESTW = AREAEND + 1 
      DFNEST = 4
      STOSWAP = 0 
      TRACEON = 0 
      OPWORD = 0
      MISFLAG = 0 
      DRL = SDRL - 2
10201 DRL = DRL + 2 
      IF (DRL .EQ. EDRL) GO TO 1020 
      TEMP = ADDRESS(DEBUG(DRL))
      IF (SHIFT(TEMP, 42) .GT. 0) 
     ,   DEBUG(DRL) = DRLELT(DEBUG(DRL)) .OR.(SHIFT(MASK(18),18) - TEMP)
      GO TO 10201 
* 
*  HERE IF NO OPTIONS TO WRITE OUT
* 
 1020 IF (DFTYPE.EQ.39) GO TO 10
      IF (MISFLAG .EQ. -1) MISFLAG = 0
      IF (EFORM(DEBUG(ELIST)) .NE. SLASH) GO TO (1162,1415,1130), 
     ,                                                DFPACK+ 2 
      GO TO 1050
* 
*  HERE IF EXPECTED /, (, ,, OR ), IS MISSING 
* 
 1130 M = 1 
 1135 CALL DEBUG ER 
* 
*  HERE TO SET UP RETURN CONDITIONS 
* 
 1430 IF (MISFLAG.EQ.0) MISFLAG = -1
      CUR OP BD =0
      CUR ROUT = 0
      IF (BLNG .EQ. 0) RETURN 
      DEBUG(BOUND WD) = SHIFT(BLNG, 24) 
      BLNG = 0
      RETURN
* 
*  HERE IF LOOKING FOR LEGAL ROUTINE NAME 
* 
 1050 ELIST = ELIST - 1 
      IF (EFORM(DEBUG(ELIST)).EQ.SYMBL) GO TO 1160
 1245 M = 3 
      GO TO 1135
* 
*  HERE IF LOOKING FOR LEGAL ROUTINE IN DRL 
 1160 IF (DFPACK.NE.0) GO TO 1165 
      ELIST = ELIST - 1 
      IF (EFORM(DEBUG(ELIST)).EQ.SLASH) 1410, 1130
 1165 IF (DFNOGO .LT. 0) GO TO 1185 
      DRL = SDRL
      MATCH = DRLELT(SHIFT(DEBUG(ELIST),12))
 1190 IF (DRL.EQ.EDRL) GO TO 1200 
      IF ((DRLELT(DEBUG(DRL)).EQ.MATCH).AND.
     ,   ((DEBUG(DRL+1) .AND. SHIFT(MASK(39),60-1)) .EQ. 0) .AND. 
     ,    (DEBUG(DRL+1).LT.0)) GO TO 1180 
      DRL = DRL + 2 
      GO TO 1190
 1200 IF (ALLROU.NE.0) GO TO 1220 
      M = 4 
      GO TO 1135
 1220 IF (DRL .NE. REFMAP) GO TO 10300
      DLFLG = 3 
      GO TO 10030 
10300 DEBUG(DRL) = DRLELT(SHIFT(DEBUG(ELIST), 12))
      DEBUG(DRL + 1) = MASK(1)
      EDRL = EDRL + 2 
* 
*  HERE IF ROUTINE ACTIVE IN DEBUG ROUTINE LIST 
* 
 1180 CUR ROUT = DRLELT(DEBUG(DRL)) 
 1185 ELIST = ELIST - 1 
      IF (EFORM(DEBUG(ELIST)).EQ.SLASH) 1230, 1130
C 
C  HERE IF INTERNAL PACKET AND NO ROUTINE LIST
C 
 1162 ELIST = ELIST + 1 
      IF (DFNOGO .LT. 0) GO TO 1410 
      DRL = SDRL - 2
      TEMP = DRLELT(DEBUG(DBGPROG)) 
11622 DRL = DRL + 2 
      IF (DRLELT(DEBUG(DRL)) .NE. TEMP) GO TO 11622 
      CUR ROUT = TEMP 
      GO TO 1230
* 
*  HERE TO SET UP COW, POW, AND DISPOW
* 
 1230 IF((COW.NE.0).OR.(DFNOGO.LT.0)) GO TO 1410
      COW = POW + 1 
      POW = COW 
      I = 0 
 1110 IF ((DISPOW.AND.77B) .NE. 1R9) GO TO 1100 
      DISPOW = SHIFT(DISPOW,-6) 
      I = I+1 
      GO TO 1110
 1100 IF (I.NE.6) GO TO 1120
      WRITE (DBGOUT, 1101)
 1101 FORMAT(15X, *DEBUG: NO MORE OPTIONS LIST NUMBERS*)
      DFNOGO = -1 
      CUR ROUT = 0
      GO TO 1410
 1120 DISPOW = DISPOW + 1 
 1150 IF (I.EQ.0) GO TO 1410
      DISPOW = SHIFT(DISPOW,6) .OR. 1R0 
      I = I - 1 
      GO TO 1150
* 
*  HERE IF LOOKING FOR LEGAL BOUNDS FORM ( F, T)
* 
11410 ELIST = ELIST + 1 
 1410 IF (AREA FLG .LT. 0) GO TO 1321 
      IF (DFTYPE .NE. 40) GO TO 10401 
      AREA FLG = 1
      ELIST = ELIST - 1 
 1415 IF (EFORM(DEBUG(ELIST)).NE.LPAREN) GO TO 1130 
      ELIST = ELIST - 1 
      ELIST1 = ELIST
      IF (EFORM(DEBUG(ELIST)) - 1) 1240, 1250, 1241 
 1241 IF (EFORM(DEBUG(ELIST)).NE. STAR) GO TO 1245
      STAR1 = -1
      FM BOUND = 0
      GO TO 1260
 1240 FM BOUND = 1
      GO TO 1260
 1250 FM BOUND = 0
      ELIST = ELIST - 1 
      IF (EFORM(DEBUG(ELIST)).NE.CONST) GO TO 1270
      FM BOUND = 2
 1260 ELIST = ELIST - 1 
 1270 IF((SHIFT(DEBUG(ELIST+1),18).AND.77B).EQ.1RL) GO TO 1272
      IF((FMBOUND.NE.0) .OR. (STAR1.NE.0)) GO TO 1272 
 1293 M = 5 
      GO TO 1135
 1272 IF(EFORM(DEBUG(ELIST)) .EQ. COMMA) GO TO 1271 
      IF (EFORM(DEBUG(ELIST)) .NE. RPAREN) GO TO 1130 
      IF (STAR1 .NE. 0) GO TO 1131
      SAMLINE = -1
      TO BOUND = FM BOUND 
      GO TO 1291
 1271 ELIST = ELIST - 1 
      IF (EFORM(DEBUG(ELIST)) - SYMBL) 1285, 1280, 1281 
 1281 IF (EFORM(DEBUG(ELIST)) .NE. STAR) GO TO 1245 
      STAR2 = -1
      TO BOUND = 0
      GO TO 1295
 1285 TO BOUND = 1
      GO TO 1295
 1280 TO BOUND = 0
      ELIST = ELIST - 1 
      IF (EFORM(DEBUG(ELIST)) .NE. CONST) GO TO 1290
      TO BOUND = 2
 1295 ELIST = ELIST - 1 
 1290 IF((SHIFT(DEBUG(ELIST+1),18).AND.77B).EQ.1RL) GO TO 1292
      IF((TOBOUND.NE.0) .OR. (STAR2.NE.0)) GO TO 1292 
      GO TO 1293
 1292 IF (EFORM(DEBUG(ELIST)) .NE. RPAREN) GO TO 1130 
 1291 IF ((CUR ROUT .EQ.0) .OR. (DFNOGO .LT. 0)) GO TO 1300 
* 
*  HERE IF CORRECT FORM FOR BOUNDS - SET UP HEADER OR OPTIONS WORD OR 
*  BOTH IF NECESSARY
      IF (DFPACK . EQ. 0) RETURN
* 
 1321 IF ( SHIFT(ADDRESS(DEBUG(DRL)), 42) .GT. 0) GO TO 1310
      AREAEND = AREAEND + 1 
      IF (AREAEND .GE. ELAST) CALL BUGCLO, RETURNS(1302)
      BLNG = 1
      DEBUG(AREAEND) = SHIFT(DISPOW, 18) .OR. OPWORD
      OPWORD = AREAEND
      IF (ADDRESS(DEBUG(DRL)).EQ.0) GO TO 1320
      DEBUG(SHIFT(MASK(18), 18) - ADDRESS(DEBUG(DRL))) =
     ,    DEBUG(SHIFT(MASK(18),18) - ADDRESS (DEBUG(DRL))) .OR. 
     ,         (SHIFT(MASK(18),18) - AREAEND) 
      GO TO 1315
 1320 DEBUG(DRL) = DEBUG(DRL) .OR. (SHIFT(MASK(18),18) - AREAEND) 
      DEBUG(DRL+1) = DEBUG(DRL+1) .OR. AREAEND
 1315 AREAEND = AREAEND + 1 
      IF (AREAEND .GE. ELAST) CALL BUGCLO, RETURNS(1302)
      GO TO 1325
 1310 IF (CUR OP BD .NE. 0) GO TO 1330
      AREAEND = AREAEND + 1 
      IF (AREAEND .GE. ELAST) CALL BUGCLO, RETURNS(1302)
      DEBUG(ADDRESS(DEBUG(DRL))) = DEBUG(ADDRESS(DEBUG(DRL))).OR.AREAEND
      BLNG = 0
 1325 BLNG = BLNG + 1 
      CUR OP BD = -1
      DEBUG(DRL) = DRLELT(DEBUG(DRL)).OR.AREAEND
      DEBUG(DRL+1) =DEBUG(DRL+1) .OR. MASK(1) 
      BOUND WD = AREAEND
* 
*  HERE TO CONVERT ELIST OF BOUNDS INTO B-CELL
* 
 1330 NO = 0
      IF (FM BOUND.EQ.2) NO = 1 
      NO = NO + 1 
      IF (TO BOUND .EQ. 2) NO = NO + 1
      AREAEND = AREAEND + 3 + NO
      IF (AREAEND .GE. ELAST) CALL BUGCLO, RETURNS (1302) 
      BLNG = BLNG + 3 + NO
      DEBUG(AREAEND-2-NO) = SHIFT(FM BOUND, 58) .OR. SHIFT(TO BOUND, 56)
     ,    .OR. SHIFT(CFPACK, 50) .OR. SHIFT(DUKE1, 25) .OR. SHIFT(NO,23)
      NO = NO - 1 
      DEBUG(AREAEND-2-NO) = 0 
      DEBUG(AREAEND-1-NO) = 0 
      GO TO (1340, 1350, 1360) FM BOUND + 1 
 1340 IF (STAR1 .EQ. 0) GO TO 1341
      STAR1 = 0 
      DEBUG(AREAEND - NO) = FSTLINE 
      GO TO 1370
 1341 LINE NO = 0 
      LINE DIS = SHIFT(DEBUG(ELIST1), 18) .AND. MASK(42)
 1342 LINE DIS = SHIFT(LINE DIS, 6) 
      IN LINE = LINE DIS .AND. 77B
      IF (IN LINE .EQ. 1R ) GO TO 1344
      IF ((IN LINE .LE. 1RZ) .OR. (IN LINE .GE. 1R+)) GO TO 1139
      LINE NO = LINE NO * 10 + (IN LINE - 1R0)
      GO TO 1342
 1344 IF ((LINE NO.AND.MASK(30)) .NE. 0)                    GO TO 1139
      DEBUG(AREAEND - NO) = SHIFT(LINE NO, 30)
      GO TO 1370
 1350 LINE DIS = DEBUG(DFSCON1 + (ADDRESS(DEBUG(ELIST1)) - CONSTOR))
      DO 1352 IJ = 1,10 
      IN LINE = SHIFT(LINEDIS,6) .AND. 77B
      IF ((IN LINE .LE. 1RZ) .OR. (IN LINE .GE. 1R+)) GO TO 1139
      IF (IN LINE .NE. 1R0) GO TO 1354
      LINE DIS = (SHIFT(LINE DIS,6) .AND. MASK(54)) .OR. 1R 
 1352 CONTINUE
      GO TO 1139
 1354 IF ((LINE DIS .AND. SHIFT(MASK(30),30)) .NE. 5R     ) GO TO 1139
      DO 1356 IJ = 1,5
      LINE DIS = SHIFT(LINE DIS, 6) 
      IN LINE = LINEDIS .AND. 77B 
      IF (IN LINE .EQ. 1R ) GO TO 1356
      IF ((IN LINE .LE. 1RZ) .OR. (IN LINE .GE. 1R+)) GO TO 1139
 1356 CONTINUE
      DEBUG(AREAEND - NO) = SHIFT(LINEDIS,30) .AND. MASK(30)
      GO TO 1370
 1360 KJ = 0
 1361 LINE DIS = DEBUG(DFSCON1 +(ADDRESS(DEBUG(ELIST1-1)) - CONSTOR)) 
      IN LINE = SHIFT(LINEDIS,6) .AND. 77B
      IF (IN LINE .NE. 1R.) GO TO 1139
      LINE DIS = (SHIFT(LINE DIS,6) .AND. MASK(54)) .OR. 1R 
      UP DIS = IN LINE
      DO 1362 IJ = 1,9
      IN LINE = SHIFT(LINEDIS,6) .AND. 77B
      IF ((IN LINE .LE. 1RZ) .OR. (IN LINE .GE. 1R+)) GO TO 1139
      IF (IN LINE .NE. 1R0) GO TO 1364
      LINE DIS = (SHIFT(LINE DIS,6) .AND. MASK(54)) .OR. 1R 
 1362 CONTINUE
      GO TO 1139
 1364 IF ((LINE DIS .AND. SHIFT(MASK(30),30)) .NE. 5R     ) GO TO 1139
      UP NO = 0 
      DO 1366 JK = 1,6
      IN LINE = SHIFT(LINEDIS,6) .AND. 77B
      IF (IN LINE .EQ. 1R ) GO TO 1368
      IF ((IN LINE .LE. 1RZ) .OR. (IN LINE .GE. 1R+)) GO TO 1139
      UP NO = SHIFT(UP NO, 6) .OR. IN LINE
      LINE DIS = SHIFT(LINE DIS, 6) 
 1366 CONTINUE
 1368 IF (JK .EQ. 6) GO TO 1369 
      JKJ = 6-JK
      DO 1367 IJ = 1,JKJ
      UPDIS = SHIFT (UPDIS,6) .OR. 1R 
 1367 CONTINUE
 1369 UP DIS = SHIFT(UP DIS, 6*(JK-1)) .OR. UP NO 
      IF (KJ .EQ.1) GO TO  1402 
      UP DIS = SHIFT(UP DIS, 36)
      DEBUG(AREAEND-NO) = (SHIFT(DEBUG(ELIST1), 12) .AND..NOT. MINZERO) 
     ,    .OR. (UP DIS .AND. MINZERO) 
      ELIST1 = ELIST1 - 1 
      NO = NO - 1 
      DEBUG(AREAEND - NO) = UP DIS .AND. MASK(30) 
 1370 IF(SAMLINE.EQ.0) GO TO 1371 
      SAMLINE = 0 
      IF (FM BOUND .EQ. 2) ELIST1 = ELIST1 + 1
      GO TO 1372
 1371 ELIST1 = ELIST1 - 2 
 1372 GO TO (1380, 1390, 1400) TO BOUND + 1 
 1380 IF (STAR2 .EQ. 0) GO TO 1381
      STAR2 = 0 
      DEBUG(AREAEND) = DEBUG(AREAEND) .OR. LSTLINE
      GO TO 1300
 1381 LINE NO = 0 
      LINE DIS = SHIFT(DEBUG(ELIST1),18) .AND. MASK(42) 
 1382 LINE DIS = SHIFT(LINE DIS, 6) 
      IN LINE = LINE DIS .AND. 77B
      IF (IN LINE .EQ. 1R ) GO TO 1384
      IF ((IN LINE .LE. 1RZ) .OR. (IN LINE .GE. 1R+)) GO TO 1139
      LINE NO = LINE NO * 10 + (IN LINE - 1R0)
      GO TO 1382
 1384 IF ((LINE NO .AND. MASK(30)) .GT. 0)                  GO TO 1139
      DEBUG(AREAEND) = DEBUG(AREAEND) .OR. LINE NO
      GO TO 1300
 1390 LINE DIS = DEBUG(DFSCON1 + (ADDRESS(DEBUG(ELIST1)) - CONSTOR))
      DO 1392 IJ = 1,10 
      IN LINE = SHIFT(LINEDIS,6) .AND. 77B
      IF ((IN LINE .LE. 1RZ) .OR. (IN LINE .GE. 1R+)) GO TO 1139
      IF (IN LINE .NE. 1R0) GO TO 1394
      LINE DIS = (SHIFT(LINE DIS,6) .AND. MASK(54)) .OR. 1R 
 1392 CONTINUE
      GO TO 1139
 1394 IF ((LINE DIS .AND. SHIFT(MASK(30),30))  .NE. 5R     )GO TO 1139
      DO 1396 IJ = 1,5
      LINE DIS = SHIFT(LINE DIS, 6) 
      IN LINE = LINE DIS .AND. 77B
      IF (IN LINE .EQ. 1R ) GO TO 1396
      IF ((IN LINE .LE. 1RZ) .OR. (IN LINE .GE. 1R+))GO TO 1139 
 1396 CONTINUE
      DEBUG(AREAEND) = DEBUG(AREAEND) .OR.
     ,    (LINE DIS .AND. SHIFT(MASK(30),30)) 
      GO TO 1300
 1400 KJ = 1
      GO TO 1361
 1402 DEBUG(ELIST1) = SHIFT(DEBUG(ELIST1),42) 
      DEBUG(AREAEND - 1) = DEBUG(AREAEND - 1) .OR.
     ,    (DEBUG(ELIST1) .AND. SHIFT(MASK(30),30))
      DEBUG(AREAEND) = DEBUG(ELIST1) .AND. MASK(18)  .OR. 
     ,   (SHIFT(UP DIS,6) .AND. SHIFT(MASK(42),  42)) 
      GO TO 1300
 1303 WRITE (DBGOUT, 71)
      DFNOGO = -13
      GO TO 1300
 1302 POW = -1
      CALL BUGCLO, RETURNS (1303) 
      DFNOGO = -13
 1131 STAR1 = 0 
      M= 13 
      CALL DEBUG ER 
* 
*  HERE IF DONE PROCESSING A BOUNDS SPECIFICATION 
* 
 1300 IF (AREA FLG .LT. 0) GO TO (20123, 20111) - AREA FLG
      ELIST = ELIST - 1 
      MISFLAG = 1 
      IF (EFORM(DEBUG(ELIST)).EQ. COMMA) GO TO 1410 
      IF (EFORM (DEBUG(ELIST)).EQ.LPAREN) GO TO 11410 
      CUR ROUT = 0
      CUR OP BD = 0 
      IF (BLNG .EQ. 0) GO TO 11138
      DEBUG(BOUND WD) = SHIFT(BLNG, 24) 
      BLNG = 0
11138 IF (EFORM(DEBUG(ELIST)) .EQ. SLASH) GO TO 1050
      IF(EFORM(DEBUG(ELIST)).NE. EOS) GO TO 1130
      IF((CUR ROUT .EQ. 0).OR.(DFNOGO.LT.0)) GO TO 1430 
      RETURN
 1139 M = 5 
      CALL DEBUG ER 
      AREAEND = AREAEND -4-NO 
      BLNG = BLNG - 4 - NO
      IF (BLNG - 2) 1191, 1192, 1430
 1191 TEMP = ADDRESS(DEBUG(DRL+1)) + 1
 1196 IF (SHIFT(TEMP, 42)) 1193, 1193, 1194 
 1193 TEMP = (SHIFT(MASK(18),18) - TEMP) + 1
 1194 ITEMP = ADDRESS(DEBUG(TEMP))
      IF (ITEMP .EQ. AREAEND) GO TO 1195
      TEMP = ITEMP
      GO TO 1196
 1195 DEBUG(TEMP) = DRLELT(DEBUG(TEMP)) 
      DEBUG(DRL) = DRLELT(DEBUG(DRL)) .OR. TEMP 
      AREAEND = AREAEND - 1 
      BLNG = 0
      GO TO 1430
 1192 AREAEND = AREAEND - 1 
      ITEMP = ADDRESS(DEBUG(DRL+1)) 
      TEMP = 0
 1197 IF (ITEMP .EQ. AREAEND) GO TO 1199
      TEMP = ITEMP + 1
 1198 TEMP = ADDRESS(DEBUG(TEMP)) 
      IF (SHIFT(TEMP, 42) .GE. 0) GO TO 1198
      ITEMP = (SHIFT(MASK(18),18)) - TEMP 
      GO TO 1197
 1199 DEBUG(DRL) = DRLELT(DEBUG(DRL)) .OR. TEMP 
      DEBUG(DRL+1) = DEBUG(DRL+1) .AND. SHIFT(MASK(59), 60-1) 
      IF (TEMP .EQ. 0) DEBUG(DRL+1) = DRLELT(DEBUG(DRL+1))
      AREAEND = AREAEND - 1 
      DEBUG(SAREA+NEXT) = DEBUG(SAREA+NEXT) .OR. MASK(1)
      GO TO 1430
* 
*  HERE IF OPTIONS STATEMENT
* 
 2010 IF (DFPACK.EQ.0) GO TO 2020 
      IF (DFNOGO .LT. 0) GO TO 2020 
      IF (DFOPFLG .EQ. -1) GO TO 2020 
      IF ( (MISFLAG .LT. 0) .AND. (OPWORD .EQ. 0) ) GO TO 2020
      IF (AREA FLG .EQ. 1) GO TO 2011 
      FM BOUND = 0
      TO BOUND = 0
      DRL = SDRL - 2
      AREA FLG = -1 
      IF (ALL ROU .NE. 0) 20122, 20131
20123 DEBUG(BOUND WD) = SHIFT( BLNG, 24)
20131 DRL = DRL + 2 
      IF (DRL .EQ. EDRL) GO TO 2011 
      IF ((DEBUG(DRL) .LT. 0) .OR. (DEBUG(DRL+1) .GE. 0)) GO TO 20131 
      STAR1 = -1
      STAR2 = -1
      GO TO 1230
20122 STAR1 = -1
      STAR2 = -1
      AREA FLG = -2 
      IF (DFPACK .EQ. 1) GO TO 2012 
      TEMP = DRLELT(DEBUG(DBGPROG)) 
      DRL = SDRL - 2
20125 DRL = DRL + 2 
      IF ((DRLELT(DEBUG(DRL)) .EQ. TEMP) .AND.
     ,   ((DEBUG(DRL+1) .AND. SHIFT(MASK(39),60-1)) .EQ. 0))1230, 20125 
 2012 DRL = DRL + 2 
      IF ((DRLELT(DEBUG(DRL)) .EQ. SPIDER) .AND.
     ,   ((DEBUG(DRL+1) .AND. SHIFT(MASK(39),60-1)) .EQ. 0))1230, 2012
20111 DEBUG(BOUND WD) = SHIFT(BLNG, 24) 
 2011 COW = 0 
      CUR OP BD = 0 
      CUR ROUT = DRLELT(DEBUG(DRL)) 
      RECORD = RECORD + 1 
      DRL = EDRL
      IF (RECORD .LT. LNGIND) GO TO 2032
      IF (ELAST - AREAEND .GT. 50) GO TO 2034 
      POW = -1
      CALL BUGCLO, RETURNS (2036) 
 2036 DFNOGO = -13
 2034 CALL DMVWDS ((AREAEND - SAREA) + 1, DEBUG(SAREA), DEBUG(SAREA+50))
      SAREA = SAREA + 50
      AREAEND = AREAEND + 50
      LNG IND = LNG IND + 50
      OP WORD = OP WORD + 50
      TEMP = OPWORD 
20321 TEMP1 = ADDRESS(DEBUG(TEMP))
      IF (TEMP1 .EQ. 0) GO TO 2032
      DEBUG(TEMP) = DEBUG(TEMP) + 50
      TEMP = TEMP1
      GO TO 20321 
 2032 IF (DRL .NE. REFMAP) GO TO 10400
      DLFLG = 4 
      GO TO 10030 
10400 DEBUG(DRL+1) = RECORD 
20323 TEMP = ADDRESS(DEBUG(OPWORD)) 
      DEBUG(OPWORD) = DRLELT(DEBUG(OPWORD)) .OR. RECORD 
      IF (TEMP .EQ. 0) GO TO 20322
      OPWORD = TEMP 
      GO TO 20323 
20322 OPWORD = 0
10401 DEBUG(DRL) = SHIFT(DISPOW,18) 
      OPDRL = DRL 
      OPREC = RECORD
      DFNESTW = AREAEND +1
      IF (DFNESTW .EQ. ELAST) CALL BUGCLO, RETURNS (2222) 
      DFNEST = 4
      EDRL = EDRL + 2 
      DFOPFLG = -1
      AREA FLG = 0
      GO TO 2020
 2223 WRITE (DBGOUT, 71)
   71 FORMAT( 14X, *DEBUG: MORE CORE IS NEEDED FOR DEBUG PROCESSING. *) 
      DFNOGO = -13
      GO TO 2020
 2222 POW = -1
      CALL BUGCLO, RETURNS (2223) 
      DFNOGO = -13
 2020 LTFLAG = .FALSE.
      LFLAG = .FALSE. 
      GO TO (2100, 2100, 2100, 2400, 2500, 2600, 2800, 2900)
     ,    DFTYPE - 40 
* 
*  HERE IF ARRAYS, CALLS, OR FUNCS
* 
 2100 IF (EFORM(DEBUG(ELIST)) .EQ. LPAREN)  GO TO 2110
      IF (EFORM(DEBUG(ELIST)) .NE. EOS) GO TO 2200
      CUR OP BD = 0 
      IF ((DFNOGO .LT. 0) .OR. (MISFLAG .EQ. -1)) RETURN
      OH = DFTYPE - 40
      CALL PUT IN 
      OH = 0
      CALL PUT IN 
 2122 IF ((DFPACK .NE. 0) .OR. (DFNOGO .LT. 0) .OR. (OH .NE. 0)) RETURN 
      IF (MISFLAG .EQ. -1) RETURN 
      IF (DFNEST .NE. 4) GO TO 2124 
      IF ( (DFNESTW - AREAEND - 1) .EQ. 0) GO TO 2127 
      DFNEST = -1 
      DFNESTW = DFNESTW - 1 
 2124 DFNEST = DFNEST + 1 
 2127 OH = MINZERO
      CALL PUT IN 
      RETURN
* 
*  HERE IF LOOKING FOR LEGAL SYMBOL 
* 
 2110 ELIST = ELIST - 1 
      IF (EFORM(DEBUG(ELIST)) .EQ. SYMBL)  GO TO 2145 
 1247 IF (CUR OP BD .EQ. 0) GO TO 1246
      CUR OP BD = 0 
      IF ((DFNOGO .LT. 0) .OR. (MISFLAG .EQ. -1)) GO TO 1246
      OH= 0 
      CALL PUT IN 
 1246 M = 3 
      CALL DEBUG ER 
      GO TO 2122
* 
*  HERE TO CHECK FOR SYMBOL IN DVL OR ELSE PUT IT IN
* 
 2145 IF (DFPACK .NE. 0) GO TO 2260 
      CALL DSYMTAB(DEBUG(ELIST),NO) 
      GO TO 2130
 2260 IF ((DFNOGO .LT. 0) .OR. (MISFLAG .EQ. -1)) GO TO 2250
      DVL = SDVL
      NO = 0
 2155 IF (DVL.GE.EDVL) GO TO 2140 
      IF (DEBUG(DVL).EQ.DEBUG(ELIST)) GO TO 2130
      DVL = DVL + 1 
      NO = NO + 1 
      GO TO 2155
 2140 DVL = DVL + 1 
      IF (DVL .NE. SDRL) GO TO 2142 
      DLFLG = 1 
10500 IF (ELAST - 25 .GE. DFNESTW) GO TO 10510
      WRITE (DBGOUT, 10020) 
      POW = 0 
      CALL BUGCLO 
      DFNOGO = -1 
      GO TO (2250, 2640), DLFLG 
10510 CALL DMVWDS (DVL - ELAST, DEBUG(ELAST), DEBUG(ELAST - 25))
      ELAST = ELAST - 25
      SSYMTAB = SSYMTAB - 25
      ESYMTAB = ESYMTAB - 25
      SDVL = SDVL - 25
      EDVL = EDVL - 25
      ELIST = ELIST - 25
      DVL = DVL - 25
      CALL FIXPNTR
      D LNG DVL = D LNG DVL + 25
      GO TO (2142, 2662) DLFLG
 2142 EDVL = EDVL + 1 
      DEBUG(DVL) = DEBUG(ELIST) 
      NO = NO +1
* 
*  HERE PUT ORDINAL OF SYMBOL WITH OPTIONS SYMBOL IN OPTIONS LIST 
* 
 2130 IF (CUR OP BD .NE. 0) GO TO 2150
      CUR OP BD = -1
      OH = DFTYPE - 40
      CALL PUT IN 
 2150 OH = NO 
      OH = NO 
      CALL PUT IN 
* 
*  HERE WHEN EXPECTING DELIMETER
* 
 2250 ELIST = ELIST - 1 
      IF (EFORM(DEBUG(ELIST)) .EQ. COMMA)  GO TO 2110 
 2740 IF (EFORM(DEBUG(ELIST)) .EQ. RPAREN) GO TO 2165 
      CUR OP BD = 0 
      IF ((DFNOGO .LT. 0) .OR. (MISFLAG .EQ. -1)) GO TO 2200
      OH = 0
      CALL PUT IN 
 2200 M = 1 
      CALL DEBUG ER 
      GO TO 2122
 2165 ELIST = ELIST - 1 
      IF (EFORM(DEBUG(ELIST)) .EQ. EOS) GO TO 2170
      M = 2 
      CALL DEBUG ER 
 2170 CUR OP BD = 0 
      IF ((DFNOGO .LT. 0) .OR. (MISFLAG .EQ. -1)) RETURN
      OH= 0 
      CALL PUT IN 
      GO TO 2122
 2400 IF (EFORM(DEBUG(ELIST)) .NE. EOS) GO TO 2202
* 
*  HERE IF PLAIN OLE GOTOS
* 
      IF (LFLAG) GO TO 2980 
      IF ((DFNOGO .LT. 0) .OR. (MISFLAG .EQ. -1)) RETURN
      OH = 4
      CALL PUT IN 
      OH= 0 
      CALL PUT IN 
      GO TO 2122
 2202 M = 10
      CALL DEBUG ER 
      GO TO 2122
* 
*  HERE IF NOGO STATEMENT 
* 
 2500 IF (EFORM(DEBUG(ELIST)) .NE. EOS)  GO TO 2510 
      IF ( (DFNOGO .LT. 0) .OR. (MISFLAG .EQ. -1) ) RETURN
      OH= 5 
      CALL PUT IN 
      OH= 0 
      CALL PUT IN 
      IF (DFPACK .LT. 0) NOGOFLG = -1 
      GO TO 2122
 2510 M = 7 
      CALL DEBUG ER 
      RETURN
* 
*  HERE IF STORES STATEMENT 
* 
 2600 IF (EFORM(DEBUG(ELIST)) .NE. LPAREN)  GO TO 2200
* 
*  HERE TO FIND OR PUT SYMBOL IN DVL
* 
 2730 ELIST = ELIST - 1 
      IF (EFORM(DEBUG(ELIST)) .NE. SYMBL) GO TO 1247
      DVL = SDVL
      NO = 0
      IF (DFPACK .NE. 0) GO TO 2650 
      IF ((DFNOGO .LT. 0) .OR. (MISFLAG .EQ. -1)) GO TO 2640
      CALL DSYMTAB(DEBUG(ELIST),NO) 
      GO TO 2640
 2650 IF((DFNOGO .LT. 0) .OR. (MISFLAG .EQ. -1)) GO TO 2640 
      IF (DVL.GE.EDVL) GO TO 2660 
      IF (DEBUG(DVL).EQ.DEBUG(ELIST)) GO TO 2640
      DVL = DVL + 1 
      NO = NO + 1 
      GO TO 2650
 2660 DVL = DVL + 1 
      IF (DVL.NE.SDRL) GO TO 2662 
      DLFLG = 2 
      GO TO 10500 
 2662 DEBUG(DVL) = DEBUG(ELIST) 
      EDVL = DVL
      NO = NO + 1 
* 
*  HERE TO LOOK FOR , OR .REL OP. 
* 
 2640 ELIST = ELIST - 1 
      IF((EFORM(DEBUG(ELIST)) .EQ. COMMA) .OR.
     ,   (EFORM(DEBUG(ELIST)) .EQ. RPAREN) ) GO TO 2610 
      IF ((DEBUG(ELIST) .AND. 77B) .EQ. 5)  GO TO 2620
      M = 12
 2672 CALL DEBUG ER 
 2673 IF (CUR OP BD .EQ. 0) RETURN
      IF((DFNOGO .LT. 0) .OR. (MISFLAG .EQ. -1)) RETURN 
      OH = 0
      IF (DFPACK .EQ. 0) OH = MINZERO 
      CALL PUT IN 
      CUR OP BD = 0 
      RETURN
 2620 REL OP = RTAB(EFORM(DEBUG(ELIST)) - 9)
      IF ((REL OP .NE. 0) .AND. (REL OP .LT. 7)) GO TO 2622 
      IF (REL OP .NE. 8) GO TO 2624 
      REL OP = 0
      REL FLG = -1
 2624 NO CONST = 0
      ELIST = ELIST - 1 
      GO TO 2700
 2622 ELIST = ELIST - 1 
      NO CONST = DCONV(ELIST) 
      IF (NO CONST) 2694, 2695, 2700
 2694 IF (EFORM(DEBUG(ELIST)) .EQ. SYMBL)  GO TO 2641 
      M = 14
      GO TO 2672
 2695 IF(OVRFLOW .LT. 0) GO TO 2673 
      OVRFLOW = -1
      M = 15
      GO TO 2672
 2641 DVL = SDVL
      NOCONST = 0 
      IF (DFPACK .NE. 0) GO TO 2642 
      IF  ((DFNOGO.LT.0).OR.(MISFLAG.EQ.-1))GO TO 2725
      CALL DSYMTAB(DEBUG(ELIST),NOCONST)
      NOCONST = SHIFT(NOCONST, -1)
 2645 ELIST = ELIST-1 
      NO CONST = NO CONST .OR. SHIFT(PLACE(VARBIT(1)), -30) 
      GO TO 2700
 2642 IF (( DFNOGO.LT.0).OR.(MISFLAG.EQ.-1))GO TO 2725
      IF (DVL.GE.EDVL) GO TO 2643 
      IF(DEBUG(DVL).EQ.DEBUG(ELIST))GO TO 2645
      DVL = DVL+1 
      NOCONST = NOCONST + 1 
      GO TO 2642
 2643 DVL = DVL+1 
      IF(DVL.NE.SDRL)GO TO 2644 
      DLFLG = 2 
      GO TO 10500 
 2644 DEBUG(DVL) = DEBUG(ELIST) 
      EDVL = DVL
      NOCONST = NOCONST + 1 
      GO TO 2645
* 
*  HERE TO PUT STORES WITH .REL OP. IN OPTIONS LIST 
* 
 2702 REL OP = 7
      REL FLG = 0 
 2700 IF ((CUR OP BD .NE. 0).AND.(STOSWAP.EQ.1)) GO TO 2710 
      IF ( (CUR OP BD .NE. -1) .OR. (STOSWAP .NE. -1) ) GO TO 2701
      IF ((MISFLAG.LT.0) .OR. (DFNOGO.LT.0)) GO TO 2701 
      OH = 0
      CALL PUT IN 
 2701 STOSWAP = 1 
      CUR OP BD = -1
      IF ((MISFLAG.LT.0) .OR. (DFNOGO.LT.0)) GO TO 2725 
      OH= 7 
      CALL PUT IN 
 2710 IF ((MISFLAG.LT.0) .OR. (DFNOGO.LT.0)) GO TO 2725 
      IF (DFNEST.EQ.4) GO TO 2720 
      DFNEST = 4
      DFNESTW = DFNESTW + 1 
      IF (DFNESTW.EQ.ELAST) CALL BUGCLO, RETURNS (2841) 
 2720 DEBUG(DFNESTW) = SHIFT(NO, 48) .OR. SHIFT(NOCONST, 30) .OR. 
     ,    SHIFT(REL OP, 27) 
      DFNESTW = DFNESTW + 1 
      IF (DFNESTW .EQ. ELAST) CALL BUGCLO, RETURNS (2849) 
 2725 IF (REL FLG .NE. 0) GO TO 2702
      IF (EFORM(DEBUG(ELIST)) .EQ. COMMA) 2730, 2740
* 
*  HERE TO PUT SYMBOL ORDINAL FOR STORES WITHOUT IN OPTIONS LIST
*  EXITS FOR NEW SYMBOL IF COMMA LAST IN ELIST
* 
 2610 IF ((CUR OP BD .NE. 0).AND.(STOSWAP.EQ.-1)) GO TO 2750
      IF ( (CUR OP BD .NE. -1) .OR. (STOSWAP .NE. 1) ) GO TO 2611 
      IF ((MISFLAG.LT.0) .OR. (DFNOGO.LT.0)) GO TO 2611 
      OH = 0
      CALL PUT IN 
 2611 STOSWAP = -1
      CUR OP BD = -1
      IF ((MISFLAG.LT.0) .OR. (DFNOGO.LT.0)) GO TO 2755 
      OH= 6 
      CALL PUT IN 
 2750 IF ((MISFLAG.LT.0) .OR. (DFNOGO.LT.0)) GO TO 2755 
      OH = NO 
      CALL PUT IN 
 2755 IF (EFORM(DEBUG(ELIST)) .EQ. COMMA) 2730, 2740
* 
*  HERE IF TRACE STATEMENT
* 
 2800 IF (EFORM(DEBUG(ELIST)) .EQ. LPAREN)  GO TO 2810
      IF (EFORM(DEBUG(ELIST)) .NE. EOS) GO TO 2204
      IF (TRACEL .GE. 0) RETURN 
      LEVEL = 0 
      GO TO 2830
 2810 ELIST = ELIST - 1 
      IF (EFORM(DEBUG(ELIST)) .EQ. CONST) GO TO 2820
      IF (EFORM(DEBUG(ELIST)) .EQ. PLUS(X)) GO  TO 2819 
 2811 M = 6 
      CALL DEBUG ER 
      RETURN
 2819 ELIST = ELIST - 1 
      IF (EFORM(DEBUG(ELIST)) .NE. CONST) GO TO 2811
 2820 LEVEL = 0 
      LVL DIS = DEBUG(ADDRESS(DEBUG(ELIST)) - LDEBUG) 
 2824 LVL DIS = SHIFT(LVL DIS, 6) 
      IN LVL = LVL DIS .AND. 77B
      IF(IN LVL .EQ.1R ) GO TO 2822 
      IF ((IN LVL .LE. 1RZ) .OR. (IN LVL .GE. 1R+)) GO TO 2822
      LEVEL = LEVEL * 10 + (IN LVL -1R0)
      GO TO 2824
 2822 IF (LEVEL .LE. 50) GO TO 2830 
      M = 7 
      CALL DEBUG ER 
      RETURN
 2830 IF ((MISFLAG.EQ.-1) .OR. (DFNOGO.LT.0)) GO TO 2850
      OH= 8 
      CALL PUT IN 
      IF (DFNEST.EQ.4) GO TO 2840 
      DFNEST = 4
      DFNESTW = DFNESTW + 1 
      IF (DFNESTW .EQ. ELAST) CALL BUGCLO, RETURNS (2841) 
 2840 DEBUG(DFNESTW) = SHIFT(LEVEL, 54) 
      IF (LEVEL .EQ. 0) DEBUG(DFNESTW) =
     ,          DEBUG(DFNESTW) .OR. SHIFT(MASK(1),30) 
      DFNESTW = DFNESTW + 1 
      IF (DFNESTW .EQ. ELAST) CALL BUGCLO, RETURNS (2849) 
 2850 IF (EFORM(DEBUG(ELIST)) .EQ. EOS) GO TO 2860
      ELIST = ELIST - 1 
      GO TO 2740
 2860 IF ((MISFLAG .EQ. -1) .OR. (DFNOGO .LT. 0)) RETURN
      OH = 0
      CALL PUT IN 
      GO TO 2122
 2841 DFNESTW = DFNESTW - 1 
 2847 DFNEST = DFNEST + 1 
      OH = MINZERO
      CALL PUT IN 
      POW = 0 
      CALL BUGCLO 
      IF (DFTYPE .EQ. 48) 2850, 2725
 2849 DFNESTW = DFNESTW - 2 
      GO TO 2847
 2204 M = 11
      CALL DEBUG ER 
      RETURN
 2900 IF (EFORM(DEBUG(ELIST)) .EQ. EOS) GO TO 2910
      LTFLAG = .TRUE. 
      IF (DFPACK .NE. 0) LFLAG = .TRUE. 
      IF (EFORM(DEBUG(ELIST)) .NE. LPAREN) GO TO 110
C 
C  HERE IF LOOKING FOR A DEBUG OPTION 
C 
      ELIST = ELIST - 1 
      DFNESTW = DOLAST + 1
      DFOPL = DFNESTW 
      DFNEST = 4
 2960 DO 2930 I = 1, 9
      IF (DEBUG(ELIST) .EQ. DBGPIC(I)) GO TO 2970 
 2930 CONTINUE
      M = 8 
      CALL DEBUG ER 
      RETURN
 2970 ELIST = ELIST - 1 
      IF (LFLAG .OR. (I.EQ.5)) GO TO 2980 
      IF (I .EQ. 9) GO TO 3000
      OH = I
      CALL PUTIN
      OH = 0
      CALL PUTIN
 2980 IF (EFORM(DEBUG(ELIST)) .NE. COMMA) GO TO 2990
      ELIST = ELIST - 1 
      IF (EFORM(DEBUG(ELIST)) .EQ. SYMBL) GO TO 2960
      M = 3 
      CALL DEBUG ER 
      RETURN
 2990 IF (EFORM(DEBUG(ELIST)) .NE. RPAREN) GO TO 110
      IF (EFORM(DEBUG(ELIST-1)) .NE. EOS) GO TO 152 
      IF (LFLAG) RETURN 
      OH = MINZERO
      CALL PUTIN
      CALL TURN OFF 
      GO TO 3010
 3000 M = 9 
      CALL DEBUG ER 
      RETURN
C 
C  IF JUST OFF AND IN INTERSPERSED MODE, TURN OFF ALL DEBUG BITS IN THE 
C  SYMBOL TABLE 
C 
 2910 IF (DFPACK .NE. 0) RETURN 
      SYMTAB = SSYMTAB - 2
 3030 IF (SYMTAB.EQ.ESYMTAB) GO TO 3020 
      IF (  (  (TYPE(DEBUG(SYMTAB - 1)) .LE. CONTYPE(1)) .OR. 
     ,         (TYPE(DEBUG(SYMTAB - 1)) .EQ. DBGTYPE(1))  ) .AND. 
     ,      (  (SHIFT(DEBUG(SYMTAB), 44) .GE. 0) .OR. 
     ,         (SHIFT(DEBUG(SYMTAB - 1), 5 ) .LT. 0) .OR. 
     ,         (SHIFT(DEBUG(SYMTAB - 1), 15) .LT. 0)  )  )
     ,    DEBUG(SYMTAB - 1) = DEBUG(SYMTAB - 1) .AND. OUTDBG
      SYMTAB = SYMTAB - 2 
      GO TO 3030
 3020 NAASI = 0 
      AASIADD = 0 
      ALL CALL = 0
      ALL ARR  = 0
      ALL FUNC = 0
      GO TOS FL = 0 
      TRCADD = 0
      TRACEL = -1 
C 
C  TURN ON ANY OPTIONS THAT SHOULD NOT HAVE BEEN AFFECTED BY THE -OFF-
C 
 3010 IF (PHSFLAG .NE. 0) RETURN
      P ADD = 0 
      IF (TO LIST .EQ. 0) GO TO 3040
      IF (ADDRESS(SHIFT(TO LIST, 20)).EQ.0) GO TO 3050
      TO SHIFT = 20 
C 
C  TURN ON OPTIONS ASSOCIATED WITH EITHER LINE OR STATEMENT NUMBER -TO- 
C  BOUNDS 
C 
C 
C  THE FOLLOWING VARIABLES ARE USED WHILE SEARCHING A TREE: 
C 
C         DFSAVE = THE CURRENT NODE (EXCLUDING EQUALS)
C         NEXT1  = THE ADDRESS OF DFSAVE
C         DFSAVE1 = THE PREVIOUS NODE (EXCLUDING EQUALS)
C         LASTADD = THE ADDRESS OF DFSAVE1
C 
 4010 DFSAVE1 = 0 
      LASTADD = 0 
      NEXT = ADDRESS(SHIFT(TO LIST, TO SHIFT))
      FSTADD = NEXT 
 3080 DFSAVE = DEBUG(NEXT + SAREA)
      NEXT1 = NEXT
 3060 IF ( DEBUG(SAREA + NEXT) .LT. 0) GO TO 3061 
      DFOPL = ADDRESS(DEBUG(SAREA+NEXT-2))
      CALL TURN ON
 3061 NEXT = ADDRESS(SHIFT(DEBUG(NEXT + SAREA), -20)) 
      IF (NEXT.NE.0) GO TO 3060 
      NEXT = ADDRESS(DFSAVE)
      IF (NEXT.EQ.0) GO TO 3070 
      DFSAVE1 = (DFSAVE.AND.MASK(42)) .OR. LASTADD
      LASTADD = NEXT1 
      GO TO 3080
 3070 NEXT = ADDRESS(SHIFT(DFSAVE, 20)) 
      IF (NEXT.EQ.0) GO TO 3090 
      DFSAVE1 = (DFSAVE .AND. SHIFT(MASK(40), 40)) .OR. 
     ,          SHIFT(LASTADD, 40) .OR. MASK(1) 
      LASTADD = NEXT1 
      GO TO 3080
 3090 IF (NEXT1 .EQ. FSTADD) GO TO (3050, 3040), (TO SHIFT / 20)
      IF (DFSAVE1.LT.0) GO TO 4000
      NEXT = ADDRESS(DFSAVE1) 
      DFSAVE = (DFSAVE1.AND.MASK(42)) .OR. NEXT1
      DFSAVE1 = DEBUG(NEXT + SAREA) 
      NEXT1 = LASTADD 
      LASTADD = NEXT
      GO TO 3070
 4000 NEXT = ADDRESS(SHIFT(DFSAVE1, 20))
      DFSAVE = (DFSAVE1 .AND. SHIFT(MASK(40), 40)) .OR. SHIFT(NEXT1,40) 
      DFSAVE1 = DEBUG(NEXT + SAREA) 
      NEXT1 = LASTADD 
      LASTADD = NEXT
      GO TO 3090
C 
C  CHECK TO SEE IF THERE IS A STATEMENT NUMBER -TO- BOUNDS LIST 
C 
 3050 IF (ADDRESS(SHIFT(TO LIST, -20)).EQ.0) GO TO 3040 
       TO SHIFT = 40
      GO TO 4010
C 
C  IF THERE IS AN UPDATE IDENTIFIER -FROM- BOUNDS LIST, FIND ALL OF THE 
C  ACTIVE -TO- BOUNDS AND TURN ON THE ASSOCIATED OPTIONS
C 
 3040 NEXT = SHIFT(ADDRESS(FM LIST),42) 
      FSTADD = SHIFT(NEXT, 18)
      LASTADD = 0 
      DFSAVE1 = 0 
      IF (NEXT) 4020, 4030, 4040
 4030 RETURN
 4020 NEXT1 = SHIFT(NEXT, 18) 
      NEXT = SHIFT(MASK(18),18) - NEXT1 
      DFSAVE = DEBUG(NEXT + SAREA)
 4090 IF (DEBUG(SAREA+NEXT) .LT. 0) GO TO 4050
       DFOPL = ADDRESS(DEBUG(NEXT+SAREA-2) )
      CALL TURN ON
 4050 NEXT = SHIFT(ADDRESS(SHIFT(DEBUG(SAREA+NEXT), -20)), 42)
      IF (NEXT) 4060, 4070, 4055
 4060 NEXT = SHIFT(MASK(18),18) - SHIFT(NEXT,18)
      GO TO 4090
 4055 NEXT = SHIFT(NEXT, 18)
      GO TO 4050
 4070 NEXT = SHIFT(ADDRESS(DFSAVE),42)
      IF (NEXT) 5000, 5010, 5020
 5000 DFSAVE1 = (DFSAVE.AND.MASK(42)) .OR. LASTADD
      LASTADD = NEXT1 
      GO TO 4020
 5020 DFSAVE1 = (DFSAVE.AND.MASK(42)) .OR. LASTADD
      LASTADD = NEXT1 
 4040 NEXT1 = SHIFT(NEXT, 18) 
      DFSAVE = DEBUG(NEXT1+ SAREA)
      NEXT = SHIFT(ADDRESS(SHIFT(DFSAVE,20)),42)
      IF (NEXT) 4060, 4070, 4055
 5010 NEXT = SHIFT((DFSAVE.AND.SHIFT(MASK(18), 60-2)), 2) 
      IF (NEXT) 5040, 5050, 5060
 5040 DFSAVE1 = (DFSAVE .AND. SHIFT(MASK(40), 40)) .OR. 
     ,          SHIFT(LASTADD, 40) .OR. MASK(1) 
      LASTADD = NEXT1 
      GO TO 4020
 5060 DFSAVE1 = (DFSAVE .AND. SHIFT(MASK(40), 40)) .OR. 
     ,          SHIFT(LASTADD, 40) .OR. MASK(1) 
      LASTADD = NEXT1 
      GO TO 4040
 5050 IF (NEXT1.EQ.FSTADD) RETURN 
       IF (DFSAVE1.LT.0) GO TO 5070 
      NEXT = ADDRESS(DFSAVE1) 
      DFSAVE = (DFSAVE1 .AND. MASK(42)) .OR. NEXT1
      NEXT1 = LASTADD 
      LASTADD = NEXT
      IF (SHIFT(NEXT,42).LT.0) NEXT = SHIFT(MASK(18),18) - NEXT 
      DFSAVE1 = DEBUG(NEXT + SAREA) 
      GO TO 5010
 5070 NEXT = ADDRESS(SHIFT(DFSAVE1,20)) 
      DFSAVE = (DFSAVE1 .AND. SHIFT(MASK(40), 40)) .OR. SHIFT(NEXT1,40) 
      NEXT1 = LASTADD 
      LASTADD = NEXT
      IF (SHIFT(NEXT,42).LT.0) NEXT = SHIFT(MASK(18),18) - NEXT 
      DFSAVE1 = DEBUG(NEXT + SAREA) 
      GO TO 5050
      END 
