!=======================================================================
      integer function generate_tag( iarg1, iarg2, carg )
      implicit none
! Predefined constants/arrays
#include "CPLR_SIG.h"
! Arguments
      integer iarg1
      integer iarg2
      character*(*) carg
! Local
      integer j,hash,pow
      integer itrans(MAXLEN_COMP_NAME)
!     ------------------------------------------------------------------

! Convert the characters to an integer array
      call MITCPLR_CHAR2INT( carg, itrans )

! Hash the integer array
      hash=1
      pow=1
      do j=1,MAXLEN_COMP_NAME
       hash=abs(hash+itrans(j)*pow)
       pow=mod(pow*128,256*256)
      enddo

      generate_tag=(hash*256+iarg2)*128+iarg1
      generate_tag=abs(mod(generate_tag,256*256*256))

c     if (DEBUG)
c    & write(0,*) 'generate_tag = ',generate_tag,iarg1,iarg2,carg

!     ------------------------------------------------------------------
      return
      end


!=======================================================================