*DECK,PUT 
      SUBROUTINE PUT
C 
C  THIS SUBROUTINE SEARCHES A LIST FOR THE CURRENT LINE OR STATEMENT
C  NUMBER.  THE NUMBER IS ENTERED IN THE LIST IF SO DESIGNATED. 
C  ENTRY: NEXT = THE BEGINNING ADDRESS OF THE LIST TO BE SEARCHED 
C         ITEM = THE LINE OR STATEMENT NUMBER, RIGHT JUSTIFIED
C         TO FM = 0 IF TO LIST
C               = 1 IF FROM LIST
C         BD ADD = THE ADDRESS OF THE BOUND TO BE ADDED 
C                = 0 IF NO ENTRY TO BE MADE 
C         SAREA = THE BEGINNING ADDRESS OF THE AREA LIST
C  EXIT:  NEXT = THE ADDRESS OF THE LINE OR STATEMENT NUMBER, IF FOUND
C              = 0 ELSE 
C 
*CALL FDBGCOM 
   60 NEXT1 = NEXT
      N FIELD = 2 
      IF (TO FM .EQ. 1) GO TO 10
      N FIELD = SHIFT(DEBUG(SAREA+NEXT-2),-23).AND.3
   10 IF ((SHIFT(DEBUG(SAREA+NEXT+N FIELD) , TOFM* 30) .AND.
     ,    SHIFT(MASK(30),30)) 
     ,    - ITEM) 20, 50, 40
   20 NEXT = ADDRESS(DEBUG(SAREA+NEXT)) 
      IF (NEXT.NE.0) GO TO 60 
      DEBUG(SAREA+NEXT1) = DEBUG(SAREA+NEXT1) .OR. BD ADD 
      RETURN
   40 NEXT = ADDRESS(SHIFT(DEBUG(SAREA+NEXT),20)) 
      IF (NEXT.NE.0) GO TO 60 
      DEBUG(SAREA+NEXT1) = DEBUG(SAREA+NEXT1) .OR. SHIFT(BD ADD, 40)
      RETURN
   50 IF (BDADD.EQ.0) RETURN
      IF (BDADD.EQ.NEXT1) RETURN
   80 NEXT1 = NEXT
      NEXT = ADDRESS(SHIFT(DEBUG(SAREA+NEXT),-20))
      IF (NEXT.NE.0) GO TO 80 
      DEBUG(SAREA+NEXT1) = DEBUG(SAREA+NEXT1).OR.SHIFT(BD ADD, 20)
      RETURN
      END 
