SURFEX v8.1
General documentation of Surfex
xrd_unix_env.F90
Go to the documentation of this file.
2 
3 !**** *XRD_UNIX_ENV* -
4 
5 ! Author.
6 ! -------
7 ! Philippe Marguinaud *METEO FRANCE*
8 ! Original : 11-09-2012
9 
10 USE parkind1, ONLY : jpim, jprb, jplm
11 IMPLICIT NONE
12 
13 CONTAINS
14 
15 SUBROUTINE xrd_getenv( KEY, VAL )
16  IMPLICIT NONE
17  CHARACTER(LEN=*), INTENT(IN) :: KEY
18  CHARACTER(LEN=*), INTENT(OUT) :: VAL
19 
20  CALL get_environment_variable( key, val )
21 END SUBROUTINE xrd_getenv
22 
23 
24 FUNCTION xrd_iargc()
25  IMPLICIT NONE
26  INTEGER(KIND=JPIM) :: XRD_IARGC
27  xrd_iargc = command_argument_count()
28 END FUNCTION xrd_iargc
29 
30 SUBROUTINE xrd_getarg( KEY, VAL )
31  IMPLICIT NONE
32  INTEGER(KIND=JPIM), INTENT(IN) :: KEY
33  CHARACTER(LEN=*), INTENT(OUT) :: VAL
34  CALL getarg( int(key,selected_int_kind(9)), val )
35 END SUBROUTINE xrd_getarg
36 
37 SUBROUTINE xrd_exit( STATUS )
38  IMPLICIT NONE
39  INTEGER(KIND=JPIM), INTENT(IN) :: STATUS
40  CALL exit( int(status,selected_int_kind(9)) )
41 END SUBROUTINE xrd_exit
42 
43 SUBROUTINE xrd_mkdir( PATH )
44  IMPLICIT NONE
45  CHARACTER(LEN=*), INTENT(IN) :: PATH
46  CALL system( "mkdir -p "//trim(path))
47 END SUBROUTINE xrd_mkdir
48 
49 CHARACTER*256 FUNCTION xrd_dirname( PATH )
50  IMPLICIT NONE
51  CHARACTER(LEN=*), INTENT(IN) :: PATH
52 
53  INTEGER(KIND=JPIM) :: I
54  xrd_dirname = ""
55  i = len( trim( path ) ) - 1
56  DO
57  IF( i .LE. 0 ) RETURN
58  IF( path(i:i) .EQ. '/' ) EXIT
59  i = i - 1
60  ENDDO
61  xrd_dirname = path(1:i)
62 END FUNCTION xrd_dirname
63 
64 FUNCTION xrd_basename( PATH )
65  IMPLICIT NONE
66  CHARACTER*256 :: XRD_BASENAME
67  CHARACTER(LEN=*), INTENT(IN) :: PATH
68 
69  INTEGER(KIND=JPIM) :: I
70  xrd_basename = ""
71  i = len( trim( path ) ) - 1
72  DO
73  IF( i .LE. 0 ) THEN
74  i = 0
75  EXIT
76  ENDIF
77  IF( path(i:i) .EQ. '/' ) EXIT
78  i = i - 1
79  ENDDO
80  xrd_basename = path(i+1:)
81 END FUNCTION xrd_basename
82 
83 ELEMENTAL SUBROUTINE xrd_lower_case(OUS,INS)
84 IMPLICIT NONE
85 ! CONVERT A WORD TO LOWER CASE
86 CHARACTER (LEN=*) , INTENT(OUT) :: OUS
87 CHARACTER (LEN=*) , INTENT(IN) :: INS
88 INTEGER :: I,IC,NLEN
89 nlen = len(ins)
90 ous = ''
91 DO i=1,nlen
92  ic = ichar(ins(i:i))
93  IF (ic >= 65 .AND. ic < 90) THEN
94  ous(i:i) = char(ic+32)
95  ELSE
96  ous(i:i) = ins(i:i)
97  ENDIF
98 END DO
99 END SUBROUTINE xrd_lower_case
100 
101 FUNCTION xrd_isalpha(C)
102 IMPLICIT NONE
103 LOGICAL(KIND=JPLM) :: XRD_ISALPHA
104 CHARACTER, INTENT(IN) :: C
105 
106 xrd_isalpha = ((c.GE.'A').AND.(c.LE.'Z'))&
107  .OR.((c.GE.'a').AND.(c.LE.'z'))
108 
109 END FUNCTION xrd_isalpha
110 
111 FUNCTION xrd_isdigit(C)
112 IMPLICIT NONE
113 LOGICAL(KIND=JPLM) :: XRD_ISDIGIT
114 CHARACTER, INTENT(IN) :: C
115 
116 xrd_isdigit = (c.GE.'0').AND.(c.LE.'9')
117 
118 END FUNCTION xrd_isdigit
119 
120 SUBROUTINE xrd_date_and_time( VL )
121 IMPLICIT NONE
122 INTEGER(KIND=JPIM), INTENT(OUT) :: VL(8)
123 !
124 INTEGER :: VLX(8)
125 
126  CALL date_and_time( values = vlx )
127 
128  vl = vlx
129 END SUBROUTINE xrd_date_and_time
130 
131 SUBROUTINE xrd_cpu_time( T )
132  IMPLICIT NONE
133  REAL,INTENT(OUT) :: T
134  CALL cpu_time( t )
135 END SUBROUTINE xrd_cpu_time
136 
137 SUBROUTINE xrd_countlines( NLINES, F, ERR )
138 IMPLICIT NONE
139 INTEGER(KIND=JPIM), INTENT(OUT) :: NLINES
140 CHARACTER*(*), INTENT(IN) :: F
141 INTEGER(KIND=JPIM), INTENT(OUT) :: ERR
142 CHARACTER*32 :: STR
143 
144 nlines = 0
145 OPEN( 77, file = f, err = 888 )
146 
147 DO
148  READ( 77, *, err = 888, end = 777 ) str
149  nlines = nlines + 1
150 ENDDO
151 
152 777 CONTINUE
153 
154 CLOSE( 77 )
155 
156 RETURN
157 888 CONTINUE
158  err = 1
159 END SUBROUTINE xrd_countlines
160 
161 FUNCTION xrd_countwords( S )
162  IMPLICIT NONE
163  INTEGER(KIND=JPIM) :: XRD_COUNTWORDS
164  CHARACTER(LEN=*), INTENT(IN) :: S
165  INTEGER(KIND=JPIM) :: N, I, L
166  LOGICAL(KIND=JPLM) :: IN
167  n = 0_jpim
168  in = .false.
169  l = len( trim( s ) )
170  DO i = 1, l
171  IF( s(i:i) .EQ. ' ' ) THEN
172  in = .false.
173  ELSE IF( .NOT. in ) THEN
174  n = n + 1
175  in = .true.
176  ENDIF
177  ENDDO
178  xrd_countwords = n
179 END FUNCTION xrd_countwords
180 
181 END MODULE xrd_unix_env
integer(kind=jpim) function xrd_countwords(S)
integer, parameter jpim
Definition: parkind1.F90:13
logical(kind=jplm) function xrd_isalpha(C)
subroutine xrd_date_and_time(VL)
subroutine xrd_countlines(NLINES, F, ERR)
integer(kind=jpim) function xrd_iargc()
subroutine xrd_mkdir(PATH)
integer, parameter jprb
Definition: parkind1.F90:32
subroutine xrd_exit(STATUS)
character *256 function xrd_basename(PATH)
logical(kind=jplm) function xrd_isdigit(C)
elemental subroutine xrd_lower_case(OUS, INS)
subroutine getarg(IARG, CLARG)
Definition: get_opt.F:91
integer, parameter jplm
Definition: parkind1.F90:44
subroutine xrd_getarg(KEY, VAL)
character *256 function xrd_dirname(PATH)
subroutine xrd_cpu_time(T)
subroutine xrd_getenv(KEY, VAL)