anchor.diff:      tbl%is_init = .FALSE.
     END SUBROUTINE free_hash_tbl_sll
   
  +INTEGER FUNCTION HASH_DJB(KEY)
  +    CHARACTER(LEN=*), INTENT(IN) :: KEY
  +    INTEGER :: I, KEYLEN, UV
  +    !INTEGER (KIND=4) :: HASHVAL
  +
  +    HASH_DJB = 5381
  +    KEYLEN = LEN_TRIM(KEY)
  +    DO I = 1, KEYLEN
  +        UV = MOD(HASH_DJB * 33, 65536_4)
  +        HASH_DJB = MOD(UV + IACHAR(KEY(I:I)), 65536_4)
  +    END DO
  +    !HASH = MOD (HASHVAL, HASHSIZE) + 1
  +END FUNCTION
  +
  +
   END MODULE hashtbl
       
       
  
positive.code:   SUBROUTINE ENLARGE_VAL(AVAL)
      INTEGER,ALLOCATABLE,INTENT(INOUT)::AVAL(:)
      INTEGER,ALLOCATABLE::VAL1(:)
      INTEGER::NVAL1=0
      
      NVAL1=SIZE(AVAL,DIM=1)
      ALLOCATE(VAL1,SOURCE=AVAL)
      DEALLOCATE(AVAL)
      ALLOCATE(AVAL(NVAL1+10))
      AVAL(1:NVAL1)=VAL1
      AVAL(NVAL1+1:NVAL1+10)=-1
      DEALLOCATE(VAL1)
    END SUBROUTINE
    
  
negative.code:           IF ( .NOT. ASSOCIATED(list%child) ) ALLOCATE(list%child)
            CALL put_sll(list%child,key,val)
         ELSE
            LIST.VAL(0)=LIST.VAL(0)+1
            IF(LIST.VAL(0)>NLISTVAL) CALL LIST.ENLARGEVAL(LIST.VAL)
            list%val(LIST.VAL(0)) = val
         END IF
      ELSE
         IF (.NOT. ALLOCATED(list%key)) &
              ALLOCATE(CHARACTER(len=keylen) :: list%key)
         list%key = key
         IF (ALLOCATED(list%val)) DEALLOCATE(list%val)
         !ALLOCATE(CHARACTER(len=vallen) :: list%val)       
         ALLOCATE(LIST.VAL(0:NLISTVAL))       
         LIST.VAL=0
         LIST.VAL(0)=LIST.VAL(0)+1
         list%val(LIST.VAL(0)) = val
      END IF
    END SUBROUTINE put_sll
  
  