1 |
guez |
32 |
module find_str_m |
2 |
|
|
|
3 |
|
|
implicit none |
4 |
|
|
|
5 |
|
|
contains |
6 |
|
|
|
7 |
|
|
!= |
8 |
|
|
SUBROUTINE find_str (nb_str,str_tab,str_len_tab,str,pos) |
9 |
|
|
!--------------------------------------------------------------------- |
10 |
|
|
!- This subroutine looks for a string in a table |
11 |
|
|
!--------------------------------------------------------------------- |
12 |
|
|
!- INPUT |
13 |
|
|
!- nb_str : length of table |
14 |
|
|
!- str_tab : Table of strings |
15 |
|
|
!- str_len_tab : Table of string-length |
16 |
|
|
!- str : Target we are looking for |
17 |
|
|
!- OUTPUT |
18 |
|
|
!- pos : -1 if str not found, else value in the table |
19 |
|
|
!--------------------------------------------------------------------- |
20 |
|
|
IMPLICIT NONE |
21 |
|
|
!- |
22 |
|
|
INTEGER :: nb_str |
23 |
|
|
CHARACTER(LEN=*),DIMENSION(nb_str) :: str_tab |
24 |
|
|
INTEGER,DIMENSION(nb_str) :: str_len_tab |
25 |
|
|
CHARACTER(LEN=*) :: str |
26 |
|
|
INTEGER :: pos |
27 |
|
|
!- |
28 |
|
|
INTEGER :: i,il |
29 |
|
|
!--------------------------------------------------------------------- |
30 |
|
|
pos = -1 |
31 |
|
|
il = LEN_TRIM(str) |
32 |
|
|
IF ( nb_str > 0 ) THEN |
33 |
|
|
DO i=1,nb_str |
34 |
|
|
IF ( (INDEX(str_tab(i),str(1:il)) > 0) & |
35 |
|
|
.AND.(str_len_tab(i) == il) ) THEN |
36 |
|
|
pos = i |
37 |
|
|
EXIT |
38 |
|
|
ENDIF |
39 |
|
|
ENDDO |
40 |
|
|
ENDIF |
41 |
|
|
!------------------------- |
42 |
|
|
END SUBROUTINE find_str |
43 |
|
|
|
44 |
|
|
end module find_str_m |