*DECK,PUTUPDT 
      SUBROUTINE PUT UPDT 
C 
C  THIS SUBROUTINE SEARCHES THE UPDATE -FROM- LIST FOR AN UPDATE
C  IDENTIFIER. THE IDENTIFIER IS ENTERED IN THE LIST IF SO DESIGNATED.
C 
C  ENTRY: NEXT = THE BEGINNING ADDRESS OF THE UPDATE -FROM- LIST LEFT 
C  JUSTIFIED IN BITS 59-41
C         CUR UP DT (1) = THE CURRENT UPDATE NAME, LEFT JUSTIFIED 
C         CUR UP DT (2) = THE CURRENT UPDATE NUMBER, LEFT JUSTIFIED 
C         NXT ITEM = -1, IF  -TO-  BOUND TO BE ADDED
C                  =  0, IF   NO   BOUND TO BE ADDED
C                  =  1, IF -FROM- BOUND TO BE ADDED
C         BD ADD = THE ADDRESS OF THE BOUND TO BE ADDED 
C  EXIT:  NEXT = THE ADDRESS OF THE UPDATE IDENTIFIER, IF FOUND 
C              = 0 ELSE 
C         N FIELD   =  0 IF FROM BOUND
C                 .NE. 0 IF  TO  BOUND
*CALL LDBGCOM 
      IF (SCNUPDT .EQ. 0) GO TO 18
      NXT ITEM = 0
      NEXT = SHIFT(ADDRESS(FM LIST), 42)
   18 IF (DFPACK .EQ. 0) GO TO 16 
      LINE DIS = SHIFT(CUR UP DT(2), 6) 
      IJK = 0 
      IK = 0
      DO 12 IJ = 1,5
      LINE DIS = SHIFT(LINE DIS, 6) 
      IN LINE = LINEDIS .AND. 77B 
      IF( IN LINE .EQ. 1R ) GO TO 14
      IF ((IN LINE .LE. 1RZ) .OR. (IN LINE .GE. 1R+)) GO TO 13
      IJK = 1 
      GO TO 12
   14 IF (IJK .EQ. 1) GO TO 13
      LINE DIS = (LINE DIS .AND. MASK(54)) .OR. 1R0 
      IK = IK +1
   12 CONTINUE
      IF (IK .EQ. 5) GO TO 13 
      CUR UP DT(2) = SHIFT(LINE DIS, 24)
   16 IF (NEXT) 10, 20, 30
   10 NEXT = SHIFT(NEXT, 18)
      NEXT = SHIFT(MASK(18),18) - NEXT
      NEXT1 = NEXT
      N FIELD = SHIFT(DEBUG(SAREA+NEXT-2), -23).AND.3 
      IF ((SHIFT(CUR UP DT(1),30) .AND. (SHIFT(MASK(30), 30)) ) 
     ,   - (DEBUG(SAREA+NEXT+NFIELD-1) .AND. (SHIFT(MASK(30), 30)) )) 
     ,                                                     40, 50, 60 
   40 NEXT = SHIFT(DEBUG(SAREA+NEXT),2).AND. MASK(18) 
      IF (NEXT) 10, 70, 30
   60 NEXT = SHIFT(ADDRESS(DEBUG(SAREA+NEXT)),42) 
      IF (NEXT) 10, 80, 30
   50 IF (((SHIFT(CUR UP DT(1), 30) .AND. MASK(18)) .OR.
     ,     (SHIFT(CUR UP DT(2),-18) .AND. SHIFT(MASK(42), 42))) - 
     ,    DEBUG(SAREA + NEXT + NFIELD)) 40, 90, 60
   70 IF (NXT ITEM) 100, 110, 120 
  100 BD ADD = SHIFT(MASK(18),18) - BD ADD
  120 DEBUG(SAREA+NEXT1) = DEBUG(SAREA+NEXT1) .OR. SHIFT(BD ADD, 40)
  110 RETURN
   80 IF (NXT ITEM) 130, 140, 150 
  130 BD ADD = SHIFT(MASK(18),18) - BD ADD
  150 DEBUG(SAREA+NEXT1) = DEBUG(SAREA+NEXT1) .OR. BD ADD 
  140 RETURN
  
  
  
   90 IF (SCNUPDT .EQ. 0) GO TO 91
      IF (COUNTUP .EQ. 20) GO TO 94 
      COUNTUP = COUNTUP + 1 
      UPDTTBL(COUNTUP) = CUR UP DT(1) 
      COUNTUP = COUNTUP + 1 
      UPDTTBL(COUNTUP) = CUR UP DT(2) 
      RETURN
  
  
  
   94 SCNUPDT = -1
      RETURN
  
  
  
   91 IF (NXT ITEM .EQ. 0) RETURN 
  
  
  
  160 NEXT = SHIFT(ADDRESS(DEBUG(SAREA+NEXT)), 22)
      IF (NEXT) 170, 180, 190 
  170 NEXT = SHIFT(NEXT, 18)
      NEXT = SHIFT(MASK(18),18) - NEXT
      NEXT1 = NEXT
      GO TO 160 
  190 NEXT = SHIFT(NEXT, 18)
      NEXT1 = NEXT
      GO TO 160 
  180 IF (NXT ITEM) 195, 210, 200 
  195 BD ADD = SHIFT(MASK(18),18) - BD ADD
  200 DEBUG(SAREA+NEXT1) = DEBUG(SAREA+NEXT1).OR.SHIFT(BD ADD, 20)
  210 RETURN
   30 NEXT = SHIFT(NEXT, 18)
      NEXT1 = NEXT
      N FIELD = 0 
      IF (((CUR UP DT(1) .AND..NOT. MINZERO) .OR. 
     ,    (SHIFT(CUR UP DT(2), 12) .AND. MINZERO))- 
     ,    DEBUG(SAREA + NEXT + 2)) 40, 300, 60
  300 IF ((SHIFT(CUR UP DT(2),12) .AND. MASK(30)) - 
     ,    (DEBUG(SAREA + NEXT + 3) .AND. MASK(30)) )
     ,    40,  90, 60 
   20 IF (NXT ITEM) 310, 320, 330 
  310 BD ADD = SHIFT(MASK(18),18) - BD ADD
  330 FM LIST = FM LIST .OR. BD ADD 
  320 RETURN
   13 IF (SCNUPDT .NE. 0) RETURN
      NEXT = 0
      RETURN
      END 
