gtool5 Fortran 90/95 Library 1.0.0-rc5
日本語
Loading...
Searching...
No Matches
Functions/Subroutines
historyinquire.f90 File Reference

Inquire for a GT_HISTORY variable . More...

Go to the source code of this file.

Functions/Subroutines

subroutine historyinquire1 (history, err, file, title, source, dims, dimsizes, longnames, units, xtypes, institution, origin, interval, newest, oldest, conventions, gt_version, axes, varinfo)
 
subroutine historyinquire2 (history, err, file, title, source, dims, dimsizes, longnames, units, xtypes, institution, origin, interval, newest, oldest, conventions, gt_version, axes, varinfo)
 
subroutine historyinquire3 (history, err, file, title, source, dims, dimsizes, longnames, units, xtypes, institution, origin, interval, newest, oldest, conventions, gt_version, axes, varinfo)
 
subroutine historyinquire4 (history, err, file, title, source, dims, dimsizes, longnames, units, xtypes, institution, origin, interval, newest, oldest, conventions, gt_version, axes, varinfo)
 

Detailed Description

Inquire for a GT_HISTORY variable

.

Author
Yasuhiro MORIKAWA

Definition in file historyinquire.f90.

Function/Subroutine Documentation

◆ historyinquire1()

subroutine historyinquire1 ( type(gt_history), intent(in)  history,
logical, intent(out), optional  err,
character(*), intent(out), optional  file,
character(*), intent(out), optional  title,
character(*), intent(out), optional  source,
character(*), dimension(:), optional, pointer  dims,
integer, dimension(:), optional, pointer  dimsizes,
character(*), dimension(:), optional, pointer  longnames,
character(*), dimension(:), optional, pointer  units,
character(*), dimension(:), optional, pointer  xtypes,
character(*), intent(out), optional  institution,
real, intent(out), optional  origin,
real, intent(out), optional  interval,
real, intent(out), optional  newest,
real, intent(out), optional  oldest,
character(*), intent(out), optional  conventions,
character(*), intent(out), optional  gt_version,
type(gt_history_axis), dimension(:), optional, pointer  axes,
type(gt_history_varinfo), dimension(:), optional, pointer  varinfo 
)

Inquire a GT_HISTORY variable

Retrieves values set by HistoryCreate, HistoryAddVariable, etc. For file, title, source, institution, origin, interval, conventions, gt_version, dims, dimsizes, longnames, units, xtypes, see HistoryCreate.

For title, source, institution, origin, interval, conventions, gt_version, "unknown" is returned if values are not available.

dims, dimsizes, longnames, units, xtypes return values via pointer; pass null pointers.

axes and varinfo return axis and variable information respectively.

HistoryInquire is a generic name for two subroutines.

Parameters
[in]historyHistory handle
[out]errError flag (optional)
[out]fileOutput file name (optional)
[out]titleTitle (optional)
[out]sourceSource (optional)
[out]institutionInstitution (optional)
[out]originOrigin time (optional)
[out]intervalOutput interval (optional)
[out]newestNewest time (optional)
[out]oldestOldest time (optional)
[out]conventionsConventions (optional)
[out]gt_versiongt_version (optional)
[out]dimsDimension names (pointer, optional)
[out]dimsizesDimension sizes (pointer, optional)
[out]longnamesLong names (pointer, optional)
[out]unitsUnits (pointer, optional)
[out]xtypesTypes (pointer, optional)
[out]axesAxis information (pointer, optional)
[out]varinfoVariable information (pointer, optional)

Definition at line 95 of file historyinquire.f90.

100 !
103 use gtdata_types, only: gt_variable
104 use dc_url, only: urlsplit
105 use dc_error, only: storeerror, dc_noerr, gt_ebadhistory, nf90_enotvar
106 use dc_trace, only: beginsub, endsub
107 use dc_types, only: string, token
108 implicit none
109 type(GT_HISTORY), intent(in):: history
110 logical, intent(out), optional :: err
111 character(*), intent(out), optional:: file, title, source, institution
112 real,intent(out), optional:: origin, interval
113 real,intent(out), optional:: newest ! 最新の時刻
114 real,intent(out), optional:: oldest ! 最初の時刻
115 character(*), intent(out), optional:: conventions, gt_version
116 character(*), pointer, optional:: dims(:) ! (out)
117 integer,pointer, optional:: dimsizes(:) ! (out)
118 character(*), pointer, optional:: longnames(:) ! (out)
119 character(*), pointer, optional:: units(:) ! (out)
120 character(*), pointer, optional:: xtypes(:) ! (out)
121 type(GT_HISTORY_AXIS), pointer, optional :: axes(:) ! (out)
122 type(GT_HISTORY_VARINFO), pointer, optional :: varinfo(:) ! (out)
123
124 ! Internal Work
125 character(STRING) :: url, cause_c
126 character(TOKEN) :: unknown_mes = 'unknown'
127 integer :: i, j, numdims, numvars, alldims, stat
128 logical :: growable
129 type(GT_VARIABLE) :: dimvar
130 character(*), parameter:: subname = "HistoryInquire1"
131 continue
132 call beginsub(subname)
133 stat = dc_noerr
134 cause_c = ''
135 if (.not. associated(history % dimvars) .or. &
136 & size(history % dimvars) < 1) then
137 stat = gt_ebadhistory
138 goto 999
139 end if
140
141 if (present(file)) then
142 call inquire(history % dimvars(1), url=url)
143 call urlsplit(fullname=url, file=file)
144 end if
145 if (present(title)) then
146 call get_attr(history % dimvars(1), '+title', title, trim(unknown_mes))
147 end if
148 if (present(source)) then
149 call get_attr(history % dimvars(1), '+source', source, trim(unknown_mes))
150 end if
151 if (present(institution)) then
152 call get_attr(history % dimvars(1), '+institution', institution, trim(unknown_mes))
153 end if
154
155 if (present(origin)) then
156 origin = real(history % origin, kind=kind(origin))
157! origin = EvalByUnit( history % origin, '', history % unlimited_units_symbol )
158 end if
159 if (present(interval)) then
160 interval = real(history % interval, kind=kind(interval))
161! interval = EvalByUnit( history % interval, '', history % unlimited_units_symbol )
162 end if
163 if (present(newest)) then
164 newest = real(history % newest, kind=kind(newest))
165! newest = EvalByUnit( history % newest, '', history % unlimited_units_symbol )
166 end if
167 if (present(oldest)) then
168 oldest = real(history % oldest, kind=kind(oldest))
169! oldest = EvalByUnit( history % oldest, '', history % unlimited_units_symbol )
170 end if
171 if (present(conventions)) then
172 call get_attr(history % dimvars(1), '+Conventions', conventions, trim(unknown_mes))
173 end if
174 if (present(gt_version)) then
175 call get_attr(history % dimvars(1), '+gt_version', gt_version, trim(unknown_mes))
176 end if
177 if (present(dims)) then
178 numdims = size(history % dimvars)
179 allocate(dims(numdims))
180 do i = 1, numdims
181 call inquire(history % dimvars(i), name=dims(i))
182 end do
183 end if
184 if (present(dimsizes)) then
185 numdims = size(history % dimvars)
186 allocate(dimsizes(numdims))
187 do i = 1, numdims
188 call inquire(history % dimvars(i), size=dimsizes(i), growable=growable)
189 if (growable) dimsizes(i) = 0
190 end do
191 end if
192 if (present(longnames)) then
193 numdims = size(history % dimvars)
194 allocate(longnames(numdims))
195 do i = 1, numdims
196 call get_attr(history % dimvars(i), 'long_name', &
197 & longnames(i), 'unknown')
198 end do
199 end if
200 if (present(units)) then
201 numdims = size(history % dimvars)
202 allocate(units(numdims))
203 do i = 1, numdims
204 call get_attr(history % dimvars(i), 'units', &
205 & units(i), 'unknown')
206 end do
207 end if
208 if (present(xtypes)) then
209 numdims = size(history % dimvars)
210 allocate(xtypes(numdims))
211 do i = 1, numdims
212 call inquire(history % dimvars(i), xtype=xtypes(i))
213 end do
214 end if
215 if (present(axes)) then
216 numvars = size(history % dimvars)
217 allocate(axes(numvars))
218 do i = 1, numvars
219 call inquire(history % dimvars(i), &
220 & allcount=axes(i) % length, &
221 & xtype=axes(i) % xtype, name=axes(i) % name)
222 call get_attr(history % dimvars(i), 'long_name', &
223 & axes(i) % longname, 'unknown')
224 call get_attr(history % dimvars(i), 'units', &
225 & axes(i) % units, 'unknown')
226
227 ! 属性 GT_HISTORY_ATTR はまだ取得できない
228 !
229 ! するためには, 属性名に対して様々な型が存在しうると
230 ! 考えられるため, get_attr (gtdata_generic および gtdata_netcdf_generic)
231 ! に err 属性を装備させ, 取得できない際にエラーを
232 ! 返してもらわなければならないだろう.
233
234 end do
235 end if
236
237 if (present(varinfo)) then
238 if (.not. associated(history % vars) ) then
239 stat = nf90_enotvar
240 goto 999
241 end if
242 if ( size(history % vars) < 1) then
243 stat = nf90_enotvar
244 goto 999
245 end if
246 numvars = size(history % vars)
247 allocate(varinfo(numvars))
248 do i = 1, numvars
249 call inquire(history % vars(i), alldims=alldims, &
250 & xtype=varinfo(i) % xtype, name=varinfo(i) % name)
251 call get_attr(history % vars(i), 'long_name', &
252 & varinfo(i) % longname, 'unknown')
253 call get_attr(history % vars(i), 'units', &
254 & varinfo(i) % units, 'unknown')
255
256 ! 属性 GT_HISTORY_ATTR はまだ取得できない
257 !
258 ! するためには, 属性名に対して様々な型が存在しうると
259 ! 考えられるため, get_attr (gtdata_generic および gtdata_netcdf_generic)
260 ! に err 属性を装備させ, 取得できない際にエラーを
261 ! 返してもらわなければならないだろう.
262
263 allocate(varinfo(i) % dims(alldims))
264 do j = 1, alldims
265 call open(var=dimvar, source_var=history % vars(i), &
266 & dimord=j, count_compact=.true.)
267 call inquire(dimvar, name=varinfo(i) % dims(j))
268 call close(dimvar)
269 end do
270
271 varinfo(i) % initialized = .true.
272
273 end do
274 end if
275999 continue
276 call storeerror(stat, subname, err, cause_c=cause_c)
277 call endsub(subname)
Error handling module.
Definition dc_error.f90:454
subroutine, public storeerror(number, where, err, cause_c, cause_i)
Definition dc_error.f90:891
integer, parameter, public gt_ebadhistory
Definition dc_error.f90:522
integer, parameter, public dc_noerr
Error storage variables
Definition dc_error.f90:468
Debug tracing module.
Definition dc_trace.f90:150
subroutine, public beginsub(name, fmt, i, r, d, l, n, c1, c2, c3, ca, version)
Definition dc_trace.f90:457
subroutine, public endsub(name, fmt, i, r, d, l, n, c1, c2, c3, ca)
Definition dc_trace.f90:580
Provides kind type parameter values.
Definition dc_types.f90:55
integer, parameter, public token
Character length for word, token
Definition dc_types.f90:128
integer, parameter, public string
Character length for string
Definition dc_types.f90:137
Variable URL string parser.
Definition dc_url.f90:61

References dc_trace::beginsub(), dc_error::dc_noerr, dc_trace::endsub(), dc_error::gt_ebadhistory, dc_error::storeerror(), dc_types::string, and dc_types::token.

Here is the call graph for this function:

◆ historyinquire2()

subroutine historyinquire2 ( character(*), intent(in)  history,
logical, intent(out), optional  err,
character(*), intent(out), optional  file,
character(*), intent(out), optional  title,
character(*), intent(out), optional  source,
character(*), dimension(:), optional, pointer  dims,
integer, dimension(:), optional, pointer  dimsizes,
character(*), dimension(:), optional, pointer  longnames,
character(*), dimension(:), optional, pointer  units,
character(*), dimension(:), optional, pointer  xtypes,
character(*), intent(out), optional  institution,
real, intent(out), optional  origin,
real, intent(out), optional  interval,
real, intent(out), optional  newest,
real, intent(out), optional  oldest,
character(*), intent(out), optional  conventions,
character(*), intent(out), optional  gt_version,
type(gt_history_axis), dimension(:), optional, pointer  axes,
type(gt_history_varinfo), dimension(:), optional, pointer  varinfo 
)

Inquire a GT_HISTORY variable (character interface)

Use this subroutine for inquiries when history was not specified in HistoryCreate. Pass the string "default" to history.

Definition at line 295 of file historyinquire.f90.

303 use dc_error, only: storeerror, dc_noerr, nf90_einval
304 use dc_trace, only: beginsub, endsub
305 use dc_types, only: string
306 implicit none
307 character(*), intent(in):: history
308 logical, intent(out), optional :: err
309 character(*), intent(out), optional:: file, title, source, institution
310 real,intent(out), optional:: origin, interval, newest, oldest
311 character(*), intent(out), optional:: conventions, gt_version
312 character(*), pointer, optional:: dims(:) ! (out)
313 integer,pointer, optional:: dimsizes(:) ! (out)
314 character(*), pointer, optional:: longnames(:) ! (out)
315 character(*), pointer, optional:: units(:) ! (out)
316 character(*), pointer, optional:: xtypes(:) ! (out)
317 type(GT_HISTORY_AXIS), pointer, optional :: axes(:) ! (out)
318 type(GT_HISTORY_VARINFO), pointer, optional :: varinfo(:) ! (out)
319 integer:: stat
320 character(STRING):: cause_c
321 character(*), parameter:: subname = "HistoryInquire2"
322 continue
323 call beginsub(subname, "history=%c", c1=trim(history))
324 stat = dc_noerr
325 cause_c = ''
326 if (trim(history) /= 'default') then
327 stat = nf90_einval
328 cause_c = 'history="' // trim(history) // '"'
329 goto 999
330 end if
331 call historyinquire(default, err, file, title, source, &
332 & dims, dimsizes, longnames, units, xtypes, &
333 & institution, origin, interval, newest, oldest, &
334 & conventions, gt_version, &
335 & axes, varinfo )
336999 continue
337 call storeerror(stat, subname, cause_c=cause_c)
338 call endsub(subname)
type(gt_history), target, save, public default

References dc_trace::beginsub(), dc_error::dc_noerr, gtool_history_internal::default, dc_trace::endsub(), dc_error::storeerror(), and dc_types::string.

Here is the call graph for this function:

◆ historyinquire3()

subroutine historyinquire3 ( type(gt_history), intent(in)  history,
logical, intent(out), optional  err,
character(*), intent(out), optional  file,
character(*), intent(out), optional  title,
character(*), intent(out), optional  source,
character(*), dimension(:), optional, pointer  dims,
integer, dimension(:), optional, pointer  dimsizes,
character(*), dimension(:), optional, pointer  longnames,
character(*), dimension(:), optional, pointer  units,
character(*), dimension(:), optional, pointer  xtypes,
character(*), intent(out), optional  institution,
real, intent(out), optional  origin,
real, intent(out), optional  interval,
real, intent(out), optional  newest,
real, intent(out), optional  oldest,
character(*), intent(out), optional  conventions,
character(*), intent(out), optional  gt_version,
type(gt_history_axis), dimension(:), optional, pointer  axes,
type(gt_history_varinfo), dimension(:), optional, pointer  varinfo 
)

Inquire a GT_HISTORY variable (generic interface)

Usage is same as HistoryInquire.

Definition at line 353 of file historyinquire.f90.

360 use dc_trace, only: beginsub, endsub
361 implicit none
362 type(GT_HISTORY), intent(in):: history
363 logical, intent(out), optional :: err
364 character(*), intent(out), optional:: file, title, source, institution
365 real,intent(out), optional:: origin, interval
366 real,intent(out), optional:: newest ! 最新の時刻
367 real,intent(out), optional:: oldest ! 最初の時刻
368 character(*), intent(out), optional:: conventions, gt_version
369 character(*), pointer, optional:: dims(:) ! (out)
370 integer,pointer, optional:: dimsizes(:) ! (out)
371 character(*), pointer, optional:: longnames(:) ! (out)
372 character(*), pointer, optional:: units(:) ! (out)
373 character(*), pointer, optional:: xtypes(:) ! (out)
374 type(GT_HISTORY_AXIS), pointer, optional :: axes(:) ! (out)
375 type(GT_HISTORY_VARINFO), pointer, optional :: varinfo(:) ! (out)
376
377 character(*), parameter:: subname = "HistoryInquire3"
378 continue
379 call beginsub(subname)
380 call historyinquire(history, err, file, title, source, &
381 & dims, dimsizes, longnames, units, xtypes, &
382 & institution, origin, interval, newest, oldest, &
383 & conventions, gt_version, &
384 & axes, varinfo )
385 call endsub(subname)

References dc_trace::beginsub(), and dc_trace::endsub().

Here is the call graph for this function:

◆ historyinquire4()

subroutine historyinquire4 ( character(*), intent(in)  history,
logical, intent(out), optional  err,
character(*), intent(out), optional  file,
character(*), intent(out), optional  title,
character(*), intent(out), optional  source,
character(*), dimension(:), optional, pointer  dims,
integer, dimension(:), optional, pointer  dimsizes,
character(*), dimension(:), optional, pointer  longnames,
character(*), dimension(:), optional, pointer  units,
character(*), dimension(:), optional, pointer  xtypes,
character(*), intent(out), optional  institution,
real, intent(out), optional  origin,
real, intent(out), optional  interval,
real, intent(out), optional  newest,
real, intent(out), optional  oldest,
character(*), intent(out), optional  conventions,
character(*), intent(out), optional  gt_version,
type(gt_history_axis), dimension(:), optional, pointer  axes,
type(gt_history_varinfo), dimension(:), optional, pointer  varinfo 
)

Inquire a GT_HISTORY variable (generic interface)

Usage is same as HistoryInquire.

Definition at line 400 of file historyinquire.f90.

407 use dc_trace, only: beginsub, endsub
408 implicit none
409 character(*), intent(in):: history
410 logical, intent(out), optional :: err
411 character(*), intent(out), optional:: file, title, source, institution
412 real,intent(out), optional:: origin, interval, newest, oldest
413 character(*), intent(out), optional:: conventions, gt_version
414 character(*), pointer, optional:: dims(:) ! (out)
415 integer,pointer, optional:: dimsizes(:) ! (out)
416 character(*), pointer, optional:: longnames(:) ! (out)
417 character(*), pointer, optional:: units(:) ! (out)
418 character(*), pointer, optional:: xtypes(:) ! (out)
419 type(GT_HISTORY_AXIS), pointer, optional :: axes(:) ! (out)
420 type(GT_HISTORY_VARINFO), pointer, optional :: varinfo(:) ! (out)
421 character(*), parameter:: subname = "HistoryInquire4"
422 continue
423 call beginsub(subname)
424 call historyinquire(history, err, file, title, source, &
425 & dims, dimsizes, longnames, units, xtypes, &
426 & institution, origin, interval, newest, oldest, &
427 & conventions, gt_version, &
428 & axes, varinfo )
429 call endsub(subname)

References dc_trace::beginsub(), and dc_trace::endsub().

Here is the call graph for this function: