anchor.diff:  CHARACTER(LEN=16)         :: STR16 = '   Some String  '
   CHARACTER(LEN=20)         :: STR20 = '1 34 tmp xyz  t '
   CHARACTER(LEN=24)         :: STR24 = '  ABCDEFGHIJKLMNO       '
  -TYPE(HASHTABLE)           :: HT
  +TYPE(HASHLIST)            :: HL
     WRITE(6,'("0*** HASHTEST - INTEGER ********")')
     WRITE(6,'("     HASH VALUE OF INT1  ",I20,   " = ",I11)')  INT1, HASHCODE( INT1)
     WRITE(6,'("     HASH VALUE OF INT2  ",I20,   " = ",I11)')  INT2, HASHCODE( INT2)
  
positive.code:   WRITE(6,'("     HASH VALUE OF STR20 ", 4X A20," = ",I11)') STR20, HASHCODE(STR20)
    WRITE(6,'("     HASH VALUE OF STR24 ",    A24," = ",I11)') STR24, HASHCODE(STR24)
  
    CALL HASHTABLE_INIT(HT,8,64)
  END PROGRAM HASHTEST
  
  
negative.code: !
  END MODULE MODHASHCODE
  ! ---------------------------------------------------------------------------------------------------------------------------------+
                                                       MODULE MODHASHLIST
  ! ---------------------------------------------------------------------------------------------------------------------------------+
  PUBLIC :: HASHLIST_INSERT_AT
  PUBLIC :: HASHLIST
  PUBLIC :: HASHLIST_RESIZE
  TYPE HASHLIST
    INTEGER(KIND=4)             :: LENGTH
    INTEGER(KIND=4)             :: COUNT
    INTEGER(KIND=4),ALLOCATABLE :: INDICIES(:,:)
  END TYPE HASHLIST
  ! ---------------------------------------------------------------------------------------------------------------------------------+
                                                             CONTAINS
  ! ---------------------------------------------------------------------------------------------------------------------------------+
  SUBROUTINE HASHLIST_RESIZE(HTABLE, LENGTH)
  TYPE(HASHLIST),INTENT(INOUT) :: HTABLE
  INTEGER(KIND=4),INTENT(IN)   :: LENGTH
  INTEGER(KIND=4),ALLOCATABLE  :: TEMP(:,:)
  INTEGER(KIND=4)              :: OLDLENGTH,I,J,IERR
    IF (ALLOCATED(HTABLE%INDICIES)) THEN
      OLDLENGTH = SIZE(HTABLE%INDICIES,2)
      ALLOCATE(TEMP(3,OLDLENGTH),STAT=IERR)
      IF (IERR.NE.0) THEN
        WRITE(0,'(A)') '0*** UNABLE TO ALLOCATE TEMPORARY MEMORY FOR HASHLIST.'
        STOP
      END IF
      TEMP = HTABLE%INDICIES
      CALL HASHLIST_ALLOCATE(HTABLE, LENGTH)
      DO J = 1, MIN(OLDLENGTH,LENGTH)
        DO I = 1,3
          HTABLE%INDICIES(I,J) = TEMP(I,J)
        END DO
      END DO
      DEALLOCATE(TEMP,STAT=IERR)
      IF (IERR.NE.0) THEN
        WRITE(0,'(A)') '0*** UNABLE TO DEALLOCATE TEMPORARY MEMORY FOR HASHLIST.'
        STOP
      END IF
    ELSE
      CALL HASHLIST_ALLOCATE(HTABLE, LENGTH)
    END IF
  END SUBROUTINE HASHLIST_RESIZE
  ! ---------------------------------------------------------------------------------------------------------------------------------+
  SUBROUTINE HASHLIST_ALLOCATE(HTABLE, LENGTH)
  TYPE(HASHLIST),INTENT(INOUT) :: HTABLE
  INTEGER(KIND=4),INTENT(IN)   :: LENGTH
  INTEGER(KIND=4)              :: IERR
    IF (ALLOCATED(HTABLE%INDICIES)) THEN
      DEALLOCATE(HTABLE%INDICIES,STAT=IERR)
      IF (IERR.NE.0) THEN
        WRITE(0,'(A)') '0*** UNABLE TO DEALLOCATE MEMORY FOR HASHLIST.'
        STOP
      END IF
    END IF
    ALLOCATE(HTABLE%INDICIES(3,LENGTH),STAT=IERR)
    IF (IERR.NE.0) THEN
      WRITE(0,'(A)') '0*** UNABLE TO ALLOCATE MEMORY FOR HASHLIST.'
      STOP
    END IF
    HTABLE%INDICIES = 0
    HTABLE%LENGTH = LENGTH
  END SUBROUTINE HASHLIST_ALLOCATE
  ! ---------------------------------------------------------------------------------------------------------------------------------+
  END MODULE MODHASHLIST
  ! ---------------------------------------------------------------------------------------------------------------------------------+
  PROGRAM HASHTEST
  USE MODHASHCODE
  USE MODHASHLIST
  IMPLICIT NONE
  INTEGER(KIND=1),PARAMETER :: IDIV = 11
  INTEGER(KIND=1)           :: INT1 = HUGE(INT1) / IDIV
  