libsim Versione 7.1.11
optional_values.f90
1! Copyright (C) 2010 ARPA-SIM <urpsim@smr.arpa.emr.it>
2! authors:
3! Davide Cesari <dcesari@arpa.emr.it>
4! Paolo Patruno <ppatruno@arpa.emr.it>
5
6! This program is free software; you can redistribute it and/or
7! modify it under the terms of the GNU General Public License as
8! published by the Free Software Foundation; either version 2 of
9! the License, or (at your option) any later version.
10
11! This program is distributed in the hope that it will be useful,
12! but WITHOUT ANY WARRANTY; without even the implied warranty of
13! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14! GNU General Public License for more details.
15
16! You should have received a copy of the GNU General Public License
17! along with this program. If not, see <http://www.gnu.org/licenses/>.
18
30IMPLICIT NONE
31
36INTERFACE optio
37 MODULE PROCEDURE soptio_b, soptio_s, soptio_l, soptio_r, soptio_d, &
38 soptio_c, soptio_log
39END INTERFACE
40
41PRIVATE
42PUBLIC optio, &
43 optio_b, optio_s, optio_i, optio_l, optio_r, optio_d, optio_c, optio_log, &
44 soptio_b, soptio_s, soptio_l, soptio_r, soptio_d, soptio_c, soptio_log
45
46CONTAINS
47
48! Functions
49
51ELEMENTAL INTEGER(kind=int_b) FUNCTION optio_b(var)
52INTEGER(kind=int_b),INTENT(in),OPTIONAL :: var
53
54if (present(var))then
55 optio_b=var
56else
57 optio_b=ibmiss
58end if
59
60END FUNCTION optio_b
61
63ELEMENTAL INTEGER(kind=int_s) FUNCTION optio_s(var)
64INTEGER(kind=int_s),INTENT(in),OPTIONAL :: var
65
66if (present(var))then
67 optio_s=var
68else
69 optio_s=ismiss
70end if
71
72END FUNCTION optio_s
73
75ELEMENTAL INTEGER(kind=int_l) FUNCTION optio_i(var)
76INTEGER(kind=int_l),INTENT(in),OPTIONAL :: var
77
78if (present(var))then
79 optio_i=var
80else
81 optio_i=imiss
82end if
83
84END FUNCTION optio_i
85
87ELEMENTAL INTEGER(kind=int_l) FUNCTION optio_l(var)
88INTEGER(kind=int_l),INTENT(in),OPTIONAL :: var
89
90if (present(var))then
91 optio_l=var
92else
93 optio_l=ilmiss
94end if
95
96END FUNCTION optio_l
97
99ELEMENTAL REAL FUNCTION optio_r(var)
100REAL,INTENT(in),OPTIONAL :: var
101
102if (present(var))then
103 optio_r=var
104else
105 optio_r=rmiss
106end if
107
108END FUNCTION optio_r
109
111ELEMENTAL DOUBLE PRECISION FUNCTION optio_d(var)
112DOUBLE PRECISION,INTENT(in),OPTIONAL :: var
113
114if (present(var))then
115 optio_d=var
116else
117 optio_d=rdmiss
118end if
119
120END FUNCTION optio_d
121
124FUNCTION optio_c(var,len) RESULT(char)
125CHARACTER (len=*),INTENT(in),OPTIONAL :: var
126INTEGER,INTENT(in) :: len
127
128CHARACTER(len=len) :: char
129
130if (present(var))then
131 char=var
132else
133 char=cmiss
134end if
135
136END FUNCTION optio_c
137
139ELEMENTAL LOGICAL FUNCTION optio_log(var)
140LOGICAL,INTENT(in),OPTIONAL :: var
141
142if (present(var))then
143 optio_log=var
144else
145 optio_log=.false.
146end if
147
148END FUNCTION optio_log
149
150
151! Subroutines
152
155ELEMENTAL SUBROUTINE soptio_b(var,optio_b)
156INTEGER(kind=int_b),INTENT(in),OPTIONAL :: var
157INTEGER(kind=int_b),INTENT(out) :: optio_b
158
159if (present(var))then
160 optio_b=var
161else
162 optio_b=ibmiss
163end if
164
165END SUBROUTINE soptio_b
166
169ELEMENTAL SUBROUTINE soptio_s(var,optio_s)
170INTEGER(kind=int_s),INTENT(in),OPTIONAL :: var
171INTEGER(kind=int_s),INTENT(out) :: optio_s
172
173if (present(var))then
174 optio_s=var
175else
176 optio_s=ismiss
177end if
178
179END SUBROUTINE soptio_s
180
183ELEMENTAL SUBROUTINE soptio_l(var,optio_l)
184INTEGER(kind=int_l),INTENT(in),OPTIONAL :: var
185INTEGER(kind=int_l),INTENT(out) :: optio_l
186
187if (present(var))then
188 optio_l=var
189else
190 optio_l=ilmiss
191end if
192
193END SUBROUTINE soptio_l
194
197ELEMENTAL SUBROUTINE soptio_r(var,optio_r)
198REAL,INTENT(in),OPTIONAL :: var
199REAL,INTENT(out) :: optio_r
200
201if (present(var))then
202 optio_r=var
203else
204 optio_r=rmiss
205end if
206
207END SUBROUTINE soptio_r
208
211ELEMENTAL SUBROUTINE soptio_d(var,optio_d)
212DOUBLE PRECISION,INTENT(in),OPTIONAL :: var
213DOUBLE PRECISION,INTENT(out) :: optio_d
214
215if (present(var))then
216 optio_d=var
217else
218 optio_d=rdmiss
219end if
220
221END SUBROUTINE soptio_d
222
223
226ELEMENTAL SUBROUTINE soptio_c(var,optio_c)
227CHARACTER (len=*),INTENT(in),OPTIONAL :: var
228CHARACTER (len=*),INTENT(out) :: optio_c
229
230if (present(var))then
231 optio_c=var
232else
233 optio_c=cmiss
234end if
235
236END SUBROUTINE soptio_c
237
240ELEMENTAL SUBROUTINE soptio_log(var,optio_log)
241LOGICAL,INTENT(in),OPTIONAL :: var
242LOGICAL,INTENT(out) :: optio_log
243
244if (present(var))then
245 optio_log=var
246else
247 optio_log=.false.
248end if
249
250END SUBROUTINE soptio_log
251
252
253END MODULE optional_values
254
Generic subroutine for checking OPTIONAL parameters.
Definitions of constants and functions for working with missing values.
Module for quickly interpreting the OPTIONAL parameters passed to a subprogram.

Generated with Doxygen.