gtool5 Fortran 90/95 ライブラリ 1.0.0-rc5
English
Loading...
Searching...
No Matches
Functions/Subroutines
historyinquire.f90 File Reference

GT_HISTORY 型変数への問い合わせ . 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

GT_HISTORY 型変数への問い合わせ .

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 
)

GT_HISTORY 型変数への問い合わせ

HistoryCreate や HistoryAddVariable などで設定した値の 参照を行います。

file, title, source, institution, origin, interval, conventions, gt_version, dims, dimsizes, longnames, units, xtypes に関しては HistoryCreate を参照してください。

title, source, institution, origin, interval, conventions, gt_version に関しては、値が得られなかった場合は "unknown" が返ります。

dims, dimsizes, longnames, units, xtypes に関してはポインタに 値を返すため、必ずポインタを空状態にしてから与えてください。

axes と varinfo にはそれぞれ座標軸情報と変数情報を返します。

HistoryInquire は 2 つのサブルーチンの総称名です。

Parameters
[in]historyヒストリーハンドル
[out]errエラーフラグ (省略可能)
[out]file出力ファイル名 (省略可能)
[out]titleタイトル (省略可能)
[out]sourceソース (省略可能)
[out]institution組織 (省略可能)
[out]origin開始時間 (省略可能)
[out]interval出力時間間隔 (省略可能)
[out]newest最新の時刻 (省略可能)
[out]oldest最初の時刻 (省略可能)
[out]conventions規約 (省略可能)
[out]gt_versiongtバージョン (省略可能)
[out]dims次元名 (ポインタ, 省略可能)
[out]dimsizes次元サイズ (ポインタ, 省略可能)
[out]longnames長い名前 (ポインタ, 省略可能)
[out]units単位 (ポインタ, 省略可能)
[out]xtypes型 (ポインタ, 省略可能)
[out]axes座標軸情報 (ポインタ, 省略可能)
[out]varinfo変数情報 (ポインタ, 省略可能)

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)
エラー処理用モジュール
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
エラー等を保持
Definition dc_error.f90:468
デバッグ時の追跡用モジュール
Definition dc_trace.f90:150
subroutine, public beginsub(name, fmt, i, r, d, l, n, c1, c2, c3, ca, version)
Definition dc_trace.f90:476
subroutine, public endsub(name, fmt, i, r, d, l, n, c1, c2, c3, ca)
Definition dc_trace.f90:599
種別型パラメタを提供します。
Definition dc_types.f90:55
integer, parameter, public token
単語やキーワードを保持する文字型変数の種別型パラメタ
Definition dc_types.f90:128
integer, parameter, public string
文字列を保持する 文字型変数の種別型パラメタ
Definition dc_types.f90:137
変数 URL の文字列解析
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 
)

GT_HISTORY 型変数への問い合わせ (文字列インターフェース)

HistoryCreate で history を指定しなかった場合はこちらの サブルーチンで問い合わせを行います。 history には必ず "default" という文字列を与えてください。

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 
)

GT_HISTORY 型変数への問い合わせ (総称インターフェース)

使用方法は 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 
)

GT_HISTORY 型変数への問い合わせ (総称インターフェース)

使用方法は 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: