1 |
C $Header: $ |
2 |
C $Name: $ |
3 |
|
4 |
!======================================================================= |
5 |
integer function generate_tag( iarg1, iarg2, carg ) |
6 |
implicit none |
7 |
! Predefined constants/arrays |
8 |
#include "CPLR_SIG.h" |
9 |
! Arguments |
10 |
integer iarg1 |
11 |
integer iarg2 |
12 |
character*(*) carg |
13 |
! Local |
14 |
integer j,hash,pow |
15 |
integer itrans(MAXLEN_COMP_NAME) |
16 |
! ------------------------------------------------------------------ |
17 |
|
18 |
! Convert the characters to an integer array |
19 |
call mitcplr_char2int( carg, itrans ) |
20 |
|
21 |
! Hash the integer array |
22 |
hash=1 |
23 |
pow=1 |
24 |
do j=1,MAXLEN_COMP_NAME |
25 |
hash=abs(hash+itrans(j)*pow) |
26 |
pow=mod(pow*128,256*256) |
27 |
enddo |
28 |
|
29 |
generate_tag=(hash*256+iarg2)*128+iarg1 |
30 |
generate_tag=abs(mod(generate_tag,256*256*256)) |
31 |
|
32 |
c if (DEBUG) |
33 |
c & write(0,*) 'generate_tag = ',generate_tag,iarg1,iarg2,carg |
34 |
|
35 |
! ------------------------------------------------------------------ |
36 |
return |
37 |
end |
38 |
!======================================================================= |