14 INTEGER,
DIMENSION(30) :: &
15 & prime=(/1,2,3,5,7,11,13,17,19,23,29,31,37,41,43, &
16 & 47,53,59,61,67,71,73,79,83,89,97,101,103,107,109/)
25 CHARACTER(LEN=*),
INTENT(inout) :: str
33 IF (str(ipb:ipb+1) ==
' ')
THEN
34 str(ipb+1:) = str(ipb+2:lcc)
43 INTEGER FUNCTION cntpos (c_c,l_c,c_r,l_r)
49 CHARACTER(LEN=*),
INTENT(in) :: c_c
50 INTEGER,
INTENT(IN) :: l_c
51 CHARACTER(LEN=*),
INTENT(in) :: c_r
52 INTEGER,
INTENT(IN) :: l_r
59 indx = index(c_c(ipos:l_c),c_r(1:l_r))
62 ipos = ipos+indx+l_r-1
70 INTEGER FUNCTION findpos (c_c,l_c,c_r,l_r)
76 CHARACTER(LEN=*),
INTENT(in) :: c_c
77 INTEGER,
INTENT(IN) :: l_c
78 CHARACTER(LEN=*),
INTENT(in) :: c_r
79 INTEGER,
INTENT(IN) :: l_r
81 findpos = index(c_c(1:l_c),c_r(1:l_r))
86 SUBROUTINE find_str (str_tab,str,pos)
98 CHARACTER(LEN=*),
DIMENSION(:),
INTENT(in) :: str_tab
99 CHARACTER(LEN=*),
INTENT(in) :: str
100 INTEGER,
INTENT(out) :: pos
106 IF ( nb_str > 0 )
THEN
108 IF ( trim(str_tab(i)) == trim(str) )
THEN
123 CHARACTER(LEN=*) :: str
128 IF (str(i:i) ==
',') str(i:i) =
' '
139 CHARACTER(LEN=*) :: str
144 ic = iachar(str(i:i))
145 IF ( (ic >= 65).AND.(ic <= 90) ) str(i:i) = achar(ic+32)
156 CHARACTER(LEN=*) :: str
161 ic = iachar(str(i:i))
162 IF ( (ic >= 97).AND.(ic <= 122) ) str(i:i) = achar(ic-32)
167 SUBROUTINE gensig (str,sig)
175 CHARACTER(LEN=*) :: str
181 DO i=1,min(len_trim(str),30)
182 sig = sig +
prime(i)*iachar(str(i:i))
187 SUBROUTINE find_sig (nb_sig,str_tab,str,sig_tab,sig,pos)
203 CHARACTER(LEN=*),
DIMENSION(nb_sig) :: str_tab
204 CHARACTER(LEN=*) :: str
205 INTEGER,
DIMENSION(nb_sig) :: sig_tab
209 INTEGER,
DIMENSION(nb_sig) :: loczeros
212 INTEGER,
DIMENSION(1) :: minpos
217 IF ( nb_sig > 0 )
THEN
218 loczeros = abs(sig_tab(1:nb_sig)-sig)
219 IF ( count(loczeros < 1) == 1 )
THEN
220 minpos = minloc(loczeros)
221 len = len_trim(str_tab(minpos(1)))
222 IF ( (index(str_tab(minpos(1)),str(1:il)) > 0) &
223 .AND.(len == il) )
THEN
226 ELSE IF ( count(loczeros < 1) > 1 )
THEN
227 DO WHILE (count(loczeros < 1) >= 1 .AND. pos < 0 )
228 minpos = minloc(loczeros)
229 len = len_trim(str_tab(minpos(1)))
230 IF ( (index(str_tab(minpos(1)),str(1:il)) > 0) &
231 .AND.(len == il) )
THEN
234 loczeros(minpos(1)) = 99999
integer, dimension(30) prime
subroutine find_sig(nb_sig, str_tab, str, sig_tab, sig, pos)
subroutine struppercase(str)
subroutine strlowercase(str)
integer function findpos(c_c, l_c, c_r, l_r)
subroutine find_str(str_tab, str, pos)
integer function cntpos(c_c, l_c, c_r, l_r)
subroutine gensig(str, sig)