source: XMLIO_SERVER/trunk/src/XMLIO/string_function.f90 @ 8

Last change on this file since 8 was 8, checked in by ymipsl, 15 years ago

Importation des sources du serveur XMLIO

File size: 2.2 KB
Line 
1MODULE string_function
2 
3
4
5
6CONTAINS
7
8  FUNCTION Hash(Str)
9  IMPLICIT NONE 
10    CHARACTER(LEN=*),INTENT(IN) :: Str
11    CHARACTER(LEN=LEN(str)) :: new_str
12    INTEGER :: Hash
13    INTEGER :: c
14    INTEGER :: i
15   
16    new_str=ADJUSTL(ADJUSTR(Str))
17   
18    Hash=0
19    DO i=1,LEN_TRIM(new_Str)
20      c = IACHAR(new_Str(i:i))
21      Hash=c+ISHFT(Hash,6)+ISHFT(Hash,16)-Hash
22    ENDDO
23   
24  END FUNCTION Hash
25 
26  FUNCTION String_to_integer(str,succed)
27  USE error_msg
28  IMPLICIT NONE
29    CHARACTER(LEN=*),INTENT(IN) :: Str
30    LOGICAL,OPTIONAL            :: succed
31   
32    INTEGER :: String_to_integer
33    INTEGER :: ierr
34   
35    READ(Str,FMT=*,iostat=ierr) String_to_integer
36   
37    IF (PRESENT(succed)) succed=.TRUE.
38     
39    IF (ierr/=0) THEN
40      IF (PRESENT(succed)) THEN
41        succed=.FALSE.
42      ELSE
43        WRITE (message,*) 'Error when attempting to convert string :<<',TRIM(str),'>> to integer'
44        CALL Error("string_function:string_to_integer")
45      ENDIF
46    ENDIF
47  END FUNCTION String_to_integer
48 
49  FUNCTION String_to_real(str,succed)
50  USE error_msg
51  IMPLICIT NONE
52    CHARACTER(LEN=*),INTENT(IN) :: Str
53    LOGICAL,OPTIONAL            :: succed
54   
55    REAL    :: String_to_real
56    INTEGER :: ierr
57   
58    READ(Str,FMT=*,iostat=ierr) String_to_real
59   
60    IF (PRESENT(succed)) succed=.TRUE.
61     
62    IF (ierr/=0) THEN
63      IF (PRESENT(succed)) THEN
64        succed=.FALSE.
65      ELSE
66        WRITE (message,*) 'Error when attempting to convert string :<<',TRIM(str),'>> to real'
67        CALL Error("string_function:string_to_real")
68      ENDIF
69    ENDIF
70   
71  END FUNCTION String_to_real
72 
73  FUNCTION String_to_logical(str,succed)
74  USE error_msg
75  IMPLICIT NONE
76    CHARACTER(LEN=*),INTENT(IN) :: Str
77    LOGICAL,OPTIONAL            :: succed
78   
79    LOGICAL :: String_to_logical
80    INTEGER :: ierr
81   
82    READ(Str,FMT=*,iostat=ierr) String_to_logical
83   
84    IF (PRESENT(succed)) succed=.TRUE.
85     
86    IF (ierr/=0) THEN
87      IF (PRESENT(succed)) THEN
88        succed=.FALSE.
89      ELSE
90        WRITE (message,*) 'Error when attempting to convert string :<<',TRIM(str),'>> to logical'
91        CALL Error("string_function:string_to_logical")
92      ENDIF
93    ENDIF
94   
95  END FUNCTION String_to_logical
96   
97END MODULE string_function
Note: See TracBrowser for help on using the repository browser.