*DECK,TURNOFF 
      SUBROUTINE TURN OFF 
C 
C  THIS SUBROUTINE PASSES THROUGH AN OPTIONS LIST AND TURNS OFF ALL 
C  LEGAL OPTIONS THAT IF FINDS.  IT ALSO SETS UP THE ERROR FIELD IN THE 
C  FIRST WORD OF THE ASSOCIATED B-CELL, IF NECESSARY. 
C  ENTRY: DFOPL = THE ADDRESS OF THE BEGINNING OF THE OPTIONS LIST TO BE
C                 PASSED THROUGH. 
C         NEXT = THE ADDRESS OF THE -TO- BOUND IN THE ASSOCIATED B-CELL 
C         P ADD = 0 IF IN INTERSPERSED MODE 
C               = 1 IF IN PACKET MODE 
C         SSYMTAB = THE BEGINNING ADDRESS OF THE SYMBOL TABLE 
C         SAASI   = THE BEGINNING ADDRESS OF THE AREA LIST
C         AASI    = THE CURRENT WORD IN AASI
C         ESYMTAB  = THE ENDING ADDRESS OF THE SYMBOL TABLE 
C  INTERMEDIATE: OH = THE CURRENT OH FIELD IN THE OPTIONS LIST
C 
C 
*CALL LDBGCOM 
C 
C  HERE TO CHECK IF THE -TO- BOUND OCCURS AFTER A -FROM- BOUND
C 
      IF ((PADD .EQ. 0) .OR. (DEBUG(SAREA+NEXT-1) .LT. 0)) GO TO 100
      DEBUG(SAREA+NEXT-2) = (DEBUG(SAREA+NEXT-2).AND.SHIFT(MASK(57),20))
     ,    .OR. SHIFT(3, 20) 
      DEBUG(SAREA+NEXT) = DEBUG(SAREA+NEXT) .OR. MASK(1)
      RETURN
C 
C  HERE TO DETERMINE WHICH OPTION TO TURN OFF 
C 
  100 MULT = 5
   10 CALL GET OUT
      IF (OH .EQ. 0) RETURN 
      IF ( OH .EQ. MINZERO) GO TO 30
      GO TO (1000,2000,3000,4000,5000,6000,7000,8001) OH
C 
C  HERE IF THE ARRAYS OPTION IS TO BE TURNED OFF FOR INDIVIDUALS
C 
 1000 IF (LTFLAG) GO TO 1011
      CALL GETOUT 
      IF ( (OH .EQ. 0) .OR. (OH .EQ. MINZERO) ) GO TO 1010
      ASHIFT = -1 
 1040 SYMTAB B = SSYMTAB-OH-1 
      IF (BITOFF(DEBUG(SYMTAB B),NOTBIT(1)) .OR.
     ,        BITON(DEBUG(SYMTAB B),IFBIT(1)) .OR.
     ,        BITOFF(DEBUG(SYMTAB B),ACBIT(1)) ) GO TO 1020 
      CALL SETARR, RETURNS(1020)
      DEBUG(SAASI+AASI) = DEBUG(SAASI+AASI) - 1 
      IF ((DEBUG(SAASI+AASI).AND.777B).NE.0) GO TO 1020 
      DEBUG(SYMTAB B) = DEBUG(SYMTAB B) .AND. SHIFT(MASK(59), 33+1) 
      IF (BITOFF(DEBUG(SYMTAB B),SFBIT(1)) .AND.
     ,    (ADDRESS(SHIFT(DEBUG(SAASI+AASI),18)).EQ.0).AND.
     ,    (ADDRESS(SHIFT(DEBUG(SAASI+AASI),-12)).EQ.0)) 
     ,DEBUG(SYMTAB B) = DEBUG(SYMTAB B) .AND. NOTDBG(1) 
 1020 CALL GET OUT
      IF (OH.EQ.0) GO TO 10 
      IF (OH .EQ. MINZERO) 30, 1040 
C  HERE IF ALL ARRAYS ARE TO BE TURNED OFF
 1010 ALLARR = ALLARR - 1 
      IF (OH .EQ. 0) 10, 30 
C 
C  HERE IF ARRAYS IS TO BE TURNED OFF DUE TO AN OFF STATEMENT 
C 
 1011 ALLARR = 0
      SYMTAB B = SSYMTAB - 1
 1014 SYMTAB B = SYMTAB B - 2 
      IF (SYMTAB B .LE. ESYMTAB) GO TO 1020 
      IF ( SHIFT(DEBUG(SYMTAB B + 1),59-13) .GE. 0)  GO TO 1014 
      IF (BITOFF (DEBUG(SYMTAB B), NOTBIT(1))  .OR. 
     ,    BITOFF (DEBUG(SYMTAB B),  ACBIT(1))  .OR. 
     ,    BITON  (DEBUG(SYMTAB B),  IFBIT(1))) GO TO 1014 
      IF (BITOFF (DEBUG(SYMTAB B),  SFBIT(1)))
     ,      DEBUG(SYMTAB B) = DEBUG(SYMTAB B) .AND. NOTDBG(1) 
      DEBUG(SYMTAB B) = DEBUG(SYMTAB B) .AND. .NOT. PLACE(ACBIT(1)) 
      GO TO 1014
C  HERE IF THE CALLS OPTION IS TO BE TURNED OFF FOR INDIVIDUALS 
 2000 IF (LTFLAG) GO TO 2011
      CALL GETOUT 
      IF ( (OH .EQ. 0) .OR. (OH .EQ. MINZERO) ) GO TO 2010
 2040 SYMTAB B = SSYMTAB-OH-1 
 2041 IF (BITOFF (DEBUG(SYMTAB B), NOTBIT(1) )  .OR.
     ,    BITOFF(DEBUG(SYMTAB B),ACBIT(1)) .OR. 
     ,    BITOFF (DEBUG(SYMTAB B),  IFBIT(1) )  )  GO TO 2021 
      DEBUG(SYMTAB B) = DEBUG(SYMTAB B) - INC FCNT (1)
      IF (FCNT FLD(DEBUG(SYMTAB B)) .EQ. 0) 
     ,     DEBUG(SYMTAB B) = DEBUG(SYMTAB B) .AND. NOT DBG(1) 
 2021 IF (LTFLAG) GO TO 2012
 2020 CALL GET OUT
      IF (OH.EQ.0) GO TO 10 
      IF (OH .EQ. MINZERO) 30, 2040 
C 
C  HERE IF ALL CALLS ARE TO BE TURNED OFF 
C 
 2010 ALLCALL = ALLCALL - 1 
      IF (OH .EQ. 0) 10, 30 
C 
C  HERE IF CALLS IS TO BE TURNED OFF DUE TO AN OFF STATEMENT
C 
 2011 ALLCALL = 0 
      SYMTAB B = SSYMTAB - 1
 2012 SYMTAB B = SYMTAB B - 2 
      IF (SYMTAB B - ESYMTAB) 2020, 2020, 2041
C 
C 
C  HERE IF FUNCS OPTIONS ARE TO BE TURNED OFF INDIVIDUALLY
 3000 IF (LTFLAG)  GO TO 3011 
      CALL GETOUT 
      IF ( (OH .EQ. 0) .OR. (OH .EQ. MINZERO) ) GO TO 3010
 3040 SYMTAB B = SSYMTAB-OH-1 
 3041 IF (BITOFF (DEBUG(SYMTAB B), NOTBIT(1) )  .OR.
     ,    BITOFF(DEBUG(SYMTAB B),SFBIT(1)) .OR. 
     ,    BITOFF (DEBUG(SYMTAB B),  IFBIT(1) )  )  GO TO 3021 
      DEBUG(SYMTAB B) = DEBUG(SYMTAB B) - INC FCNT(1) 
      IF (FCNT FLD(DEBUG(SYMTAB B)) .EQ. 0) 
     ,     DEBUG(SYMTAB B) = DEBUG(SYMTAB B) .AND. NOTDBG(1)
 3021 IF (LTFLAG) GO TO 3012
 3020 CALL GET OUT
      IF (OH.EQ.0) GO TO 10 
      IF (OH .EQ. MINZERO) 30, 3040 
C 
C  HERE IF ALL FUNCS OPTIONS ARE TO BE TURNED OFF 
C 
 3010 ALLFUNC = ALLFUNC - 1 
      IF (OH .EQ. 0) 10, 30 
C 
C  HERE IF FUNCS IS TO BE TURNED OFF DUE TO AN OFF STATEMENT
C 
 3011 ALLFUNC = 0 
      SYMTAB B = SSYMTAB - 1
 3012 SYMTAB B = SYMTAB B - 2 
      IF (SYMTAB B - ESYMTAB) 3020, 3020, 3041
C 
C  HERE IF THE GOTOS OPTION IS TO BE TURNED OFF 
C 
 4000 CALL GET OUT
      GO TOS FL = GO TOS FL - 1 
      IF (LTFLAG)  GO TOS FL = 0
      IF (OH .EQ. 0) 10, 30 
C 
C  HERE IF THE NOGO OPTION IS TO BE SKIPPED OVER
C 
 5000 CALL GET OUT
      IF (OH.EQ.0) 10, 30 
C 
C  HERE IF THE STORES OPTION IS TO BE TURNED OFF
 6000 IF (LTFLAG) GO TO 6070
      ASHIFT = -1 
 6010 CALL GET OUT
      IF (OH.EQ.0) GO TO 10 
      IF (OH .EQ. MINZERO) GO TO 30 
      SYMTAB B = SSYMTAB-OH-1 
      IF (BITOFF(DEBUG(SYMTAB B),NOTBIT(1)) .OR.
     ,    BITOFF(DEBUG(SYMTAB B),SFBIT(1))  .OR.
     ,    BITON(DEBUG(SYMTAB B),IFBIT(1)) ) GO TO 6010
      CALL SETARR, RETURNS(6010)
      IF ((DEBUG(SAASI+AASI).AND.SHIFT(777B, 30)).EQ.0) GO TO 6010
      DEBUG(SAASI+AASI) = DEBUG(SAASI+AASI) - SHIFT(1,30) 
      IF ((DEBUG(SAASI+AASI).AND.SHIFT(777B, 30)).NE.0) GO TO 6010
      DEBUG(SYMTAB B) = DEBUG(SYMTAB B) .AND. SHIFT(MASK(59),30)
      IF (BITOFF(DEBUG(SYMTAB B),ACBIT(1))   .AND.
     ,    (ADDRESS(SHIFT(DEBUG(SAASI+AASI),18)).EQ.0).AND.
     ,    (ADDRESS(SHIFT(DEBUG(SAASI+AASI),-12)).EQ.0)) 
     ,     DEBUG(SYMTAB B) = DEBUG(SYMTAB B) .AND. NOTDBG(1)
      GO TO 6010
C  HERE IF THE STORES OPTION WITH RELATIONAL OPERATORS IS TO BE TURNED
C                                OFF
 7000 LSHIFT = 18 
      IF (P ADD .EQ. 0) LSHIFT = -12
      ASHIFT = -1 
 7010 MULT = 0
      CALL GET OUT
      IF (OH.EQ.0) GO TO 10 
      IF (OH .EQ. MINZERO) GO TO 30 
      SYMTAB B = SSYMTAB-OH-1 
      IF (BITOFF(DEBUG(SYMTAB B),NOTBIT(1)) .OR.
     ,    BITON(DEBUG(SYMTAB B),IFBIT(1)) ) GO TO 7010
      IF (P ADD .EQ. 0) GO TO 7080
      IF ((SHIFT(DEBUG(DFOPL),-18).AND.777B).EQ.0) GO TO 7010 
      DEBUG(DFOPL) = DEBUG(DFOPL) - SHIFT(1,18) 
      IF ((SHIFT(DEBUG(DFOPL),-18).AND.777B).NE.0) GO TO 7010 
      CALL SETARR, RETURNS(7010)
      NXT STR = ADDRESS(SHIFT(DEBUG(SAASI+AASI),18))
      IF (NXT STR .EQ. DFOPL) 7050, 7070
 7060 NXT STR = NXT STR1
 7070 NXT STR1 = ADDRESS(DEBUG(NXT STR))
      IF (NXT STR1 .NE. DFOPL) GO TO 7060 
      DEBUG(NXTSTR) = (DEBUG(NXTSTR) .AND. SHIFT(MASK(42), -18)) .OR. 
     ,    ADDRESS(DEBUG(NXT STR1))
      GO TO 7010
 7050 TEMP = ADDRESS(DEBUG(NXT STR))
      DEBUG(SAASI+AASI) = DEBUG(SAASI+AASI)+SHIFT(TEMP,60-LSHIFT) 
      IF (TEMP.NE.0) GO TO 7010 
 7130 IF(((SHIFT(DEBUG(SAASI+AASI),30).AND.777B).EQ.0).AND. 
     ,    (ADDRESS(SHIFT(DEBUG(SAASI+AASI),LSHIFT)).EQ.0).AND.
     ,    BITOFF(DEBUG(SYMTAB B),ACBIT(1)) )
     ,     DEBUG(SYMTAB B) = DEBUG(SYMTAB B) .AND. NOT DBG(1) 
      GO TO 7010
 7080 CALL SETARR, RETURNS(7010)
      TEMP = DEBUG(DFOPL) .AND. MASK(33)
      SASI = ADDRESS(SHIFT(DEBUG(SAASI+AASI),-12))
      IF (SASI.EQ.0) GO TO 7130 
      IF (TEMP .EQ. (DEBUG(SAASI+SASI) .AND. MASK(33)) ) GO TO 7100 
 7120 NXT STR = SASI
      SASI = ADDRESS(DEBUG(SAASI+SASI)) 
      IF (SASI.EQ.0) GO TO 7010 
      IF (TEMP .NE. (DEBUG(SAASI+SASI) .AND. MASK(33)) ) GO TO 7120 
      IF ((SHIFT(DEBUG(SAASI+SASI), -18).AND.777B).EQ.0) GO TO 7010 
      DEBUG(SAASI+SASI) = DEBUG(SAASI+SASI) - SHIFT(1,18) 
      IF ((SHIFT(DEBUG(SAASI+SASI), -18).AND.777B).EQ.0)
     ,DEBUG(SAASI+NXTSTR) = (DEBUG(SAASI+NXTSTR) .AND. MASK(42))
     ,    .OR.ADDRESS(DEBUG(SAASI+SASI))
          GO TO 7010
 7100 DEBUG(SAASI+SASI) = DEBUG(SAASI+SASI) - SHIFT(1,18) 
      IF ((SHIFT(DEBUG(SAASI+AASI), -18).AND.777B).NE.0) GO TO 7010 
      DEBUG(SAASI+AASI) = (DEBUG(SAASI+AASI) .AND. SHIFT(MASK(42), 12)) 
     ,   .OR. SHIFT(ADDRESS(DEBUG(SAASI+SASI)), 12) 
      IF (ADDRESS(DEBUG(SAASI+SASI)).EQ.0) 7130, 7010 
C 
C  HERE IF STORES IS TO BE TURNED OFF DUE TO AN OFF STATEMENT 
C          (WITH OR WITHOUT RELATIONALS CANNOT BE SPECIFIED)
 6070 SYMTAB B = SSYMTAB - 1
 6071 SYMTAB B = SYMTAB B - 2 
      IF (SYMTAB B .LE. ESYMTAB) GO TO 6010 
      IF ( (TYPE(DEBUG(SYMTAB B)) .GE. CONTYPE(1)) .AND.
     ,     (TYPE(DEBUG(SYMTAB B)) .NE. DBGTYPE(1)) ) GO TO 6071 
      IF (BITOFF (DEBUG(SYMTAB B), NOTBIT(1))  .OR. 
     ,    BITOFF (DEBUG(SYMTAB B),  SFBIT(1))  .OR. 
     ,    BITON  (DEBUG(SYMTAB B),  IFBIT(1))) GO TO 6071 
      IF (BITOFF (DEBUG(SYMTAB B),  ACBIT(1)))
     ,      DEBUG(SYMTAB B) = DEBUG(SYMTAB B) .AND. NOTDBG(1) 
      DEBUG(SYMTAB B) = DEBUG(SYMTAB B) .AND. .NOT. PLACE(SFBIT(1)) 
      GO TO 6071
C 
C  HERE IF THE TRACE OPTION IS TO BE TURNED OFF 
C 
 8000 MULT = 0
      CALL GETOUT 
      IF (OH.EQ. 0) 10, 30
 8001 IF (LTFLAG) GO TO 8011
      MULT = 0
      CALL GET OUT
      IF ( (OH .EQ. 0) .AND. (SHIFT(DEBUG(DFOPL), 30) .GE. 0)) GO TO 10 
      IF (OH .EQ. MINZERO) GO TO 30 
      LEVSHFT = 30
      TAASI = 0 
      IF (P ADD .NE.0) GO TO 8300 
      LEVSHFT = 0 
      TAASI = SAASI 
 8300 TEMP = SHIFT(OH,-6) 
      SASI = ADDRESS(SHIFT(TRCADD,LEVSHFT)) 
      IF (SASI.EQ.0) GO TO 8000 
      TRACED = TRACEL 
      IF (TEMP .GE. TRACED) TRACED = -1 
 8120 NXT STR = SASI
      IF (TEMP.EQ.(SHIFT(DEBUG(TAASI+SASI),6).AND.77B)) GO TO 8100
      IF ((SHIFT(DEBUG(TAASI+SASI),6).AND.77B).GT.TRACED) 
     ,    TRACED = SHIFT(DEBUG(TAASI+SASI),6).AND.77B 
      SASI = ADDRESS(DEBUG(TAASI+SASI)) 
      IF (SASI.EQ.0) GO TO 8000 
      IF (TEMP.NE.(SHIFT(DEBUG(TAASI+SASI),6).AND.77B)) GO TO 8120
      IF ((DEBUG(TAASI+SASI).AND.SHIFT(777B,18)).EQ.0) GO TO 8000 
      DEBUG(TAASI+SASI) = DEBUG(TAASI+SASI) - SHIFT(1,18) 
      IF ((DEBUG(TAASI+SASI).AND.SHIFT(777B,18)).NE.0) GO TO 8000 
      DEBUG(TAASI + NXT STR) = (DEBUG(TAASI + NXT STR).AND. MASK(42)) 
     ,    .OR. ADDRESS(DEBUG(TAASI + SASI)) 
 8230 IF (TEMP.LT.TRACEL) GO TO 8000
      TRACEL = TRACED 
 8210 SASI = ADDRESS(DEBUG(TAASI+SASI)) 
      IF (SASI.EQ.0) GO TO 8200 
      IF ((SHIFT(DEBUG(TAASI+SASI),6).AND.77B).GT.TRACEL) 
     ,    TRACEL = SHIFT(DEBUG(TAASI+SASI),6).AND.77B 
      GO TO 8210
 8200 SASI = ADDRESS(SHIFT(TRCADD,LEVSHFT-30))
 8220 IF (SASI.EQ.0) GO TO 8000 
      IF ((SHIFT(DEBUG(TAASI+SASI),6).AND.77B).GT.TRACEL) 
     ,    TRACEL = SHIFT(DEBUG(TAASI+SASI),6).AND.77B 
      SASI = ADDRESS(DEBUG(TAASI+SASI)) 
      GO TO 8220
 8100 IF ((DEBUG(TAASI+SASI).AND.SHIFT(777B,18)).EQ.0) GO TO 8000 
      DEBUG(TAASI+SASI) = DEBUG(TAASI+SASI) - SHIFT(1,18) 
      IF ((DEBUG(TAASI+SASI).AND.SHIFT(777B,18)).NE.0) GO TO 8000 
      TRCADD = SHIFT(ADDRESS(SHIFT(TRCADD,LEVSHFT-30)),LEVSHFT+30).OR.
     ,    SHIFT(ADDRESS(DEBUG(TAASI+SASI)),LEVSHFT) 
      GO TO 8230
C 
C  HERE IF TRACE IS TO BE TURNED OFF DUE TO AN OFF STATEMENT
C 
 8011 TRACEL = -1 
      GO TO 6010
C 
C  HERE IF TURN OFF OPTION IS ENCOUNTERED 
C 
 9000 CALL GET OUT
      IF (OH.EQ.0) GO TO 10 
      IF (OH .NE. MINZERO) GO TO 9000 
C 
C  HERE IF DONE TURNING OFF OPTIONS.  SET ERROR TO BOUND O.K. 
C 
   30 IF (P ADD .EQ. 0) RETURN
      DEBUG(SAREA+NEXT-2) = DEBUG(SAREA+NEXT-2) .OR. SHIFT(1, 22) 
      DEBUG(SAREA+NEXT) = DEBUG(SAREA+NEXT).OR.MASK(1)
      RETURN
      END 
