historyinquire.f90 File Reference

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)
 

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 
)

Definition at line 15 of file historyinquire.f90.

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

15  !
16  !== GT_HISTORY 型変数への問い合わせ
17  !
18  ! HistoryCreate や HistoryAddVariable などで設定した値の
19  ! 参照を行います。
20  !
21  ! file, title, source, institution, origin, interval,
22  ! conventions, gt_version, dims, dimsizes, longnames, units,
23  ! xtypes に関しては HistoryCreate を参照してください。
24  !
25  ! title, source, institution, origin, interval, conventions, gt_version
26  ! に関しては、値が得られなかった場合は "unknown" が返ります。
27  !
28  ! dims, dimsizes, longnames, units, xtypes に関してはポインタに
29  ! 値を返すため、必ずポインタを空状態にしてから与えてください。
30  !
31  ! axes と varinfo にはそれぞれ座標軸情報と変数情報を返します。
32  ! 将来的には全ての属性の値も一緒に返す予定ですが、現在は
33  ! long_name, units, xtype のみが属性の値として返ります。
34  !
35  ! *HistoryInquire* は 2 つのサブルーチンの総称名です。
36  ! HistoryCreate で *history* を与えなかった場合の問い合わせに関しては
37  ! 上記のサブルーチンを参照してください。
38  !
39  !=== エラー
40  !
41  ! 以下の場合に、このサブルーチンはエラーを生じプログラムを終了させます。
42  ! ただし、*err* 引数を与える場合、この引数に <tt>.true.</tt> を
43  ! 返し、プログラムは続行します。
44  !
45  ! - *history* が HistoryCreate によって初期設定されていない場合
46  ! - HistoryAddVariable や HistoryCopyVariable 等による変数定義が
47  ! 一度も行われていない GT_HISTORY 変数に対して引数 varinfo
48  ! を渡した場合
49  !
53  use gtdata_types, only: gt_variable
54  use dc_url, only: urlsplit
55  use dc_error, only: storeerror, dc_noerr, gt_ebadhistory, nf90_enotvar
56  use dc_date, only: evalbyunit
57  use dc_trace, only: beginsub, endsub, dbgmessage
58  use dc_types, only: string, token, dp
59  implicit none
60  type(gt_history), intent(in):: history
61  logical, intent(out), optional :: err
62  character(*), intent(out), optional:: file, title, source, institution
63  real,intent(out), optional:: origin, interval
64  real,intent(out), optional:: newest ! 最新の時刻
65  real,intent(out), optional:: oldest ! 最初の時刻
66  character(*), intent(out), optional:: conventions, gt_version
67  character(*), pointer, optional:: dims(:) ! (out)
68  integer,pointer, optional:: dimsizes(:) ! (out)
69  character(*), pointer, optional:: longnames(:) ! (out)
70  character(*), pointer, optional:: units(:) ! (out)
71  character(*), pointer, optional:: xtypes(:) ! (out)
72  type(gt_history_axis), pointer, optional :: axes(:) ! (out)
73  type(gt_history_varinfo), pointer, optional :: varinfo(:) ! (out)
74 
75  ! Internal Work
76  character(STRING) :: url, cause_c
77  character(TOKEN) :: unknown_mes = 'unknown'
78  integer :: i, j, numdims, numvars, alldims, stat
79  logical :: growable
80  type(gt_variable) :: dimvar
81  character(*), parameter:: subname = "HistoryInquire1"
82  continue
83  call beginsub(subname)
84  stat = dc_noerr
85  cause_c = ''
86  if (.not. associated(history % dimvars) .or. &
87  & size(history % dimvars) < 1) then
88  stat = gt_ebadhistory
89  goto 999
90  end if
91 
92  if (present(file)) then
93  call inquire(history % dimvars(1), url=url)
94  call urlsplit(fullname=url, file=file)
95  end if
96  if (present(title)) then
97  call get_attr(history % dimvars(1), '+title', title, trim(unknown_mes))
98  end if
99  if (present(source)) then
100  call get_attr(history % dimvars(1), '+source', source, trim(unknown_mes))
101  end if
102  if (present(institution)) then
103  call get_attr(history % dimvars(1), '+institution', institution, trim(unknown_mes))
104  end if
105 
106  if (present(origin)) then
107  origin = history % origin
108 ! origin = EvalByUnit( history % origin, '', history % unlimited_units_symbol )
109  end if
110  if (present(interval)) then
111  interval = history % interval
112 ! interval = EvalByUnit( history % interval, '', history % unlimited_units_symbol )
113  end if
114  if (present(newest)) then
115  newest = history % newest
116 ! newest = EvalByUnit( history % newest, '', history % unlimited_units_symbol )
117  end if
118  if (present(oldest)) then
119  oldest = history % oldest
120 ! oldest = EvalByUnit( history % oldest, '', history % unlimited_units_symbol )
121  end if
122  if (present(conventions)) then
123  call get_attr(history % dimvars(1), '+Conventions', conventions, trim(unknown_mes))
124  end if
125  if (present(gt_version)) then
126  call get_attr(history % dimvars(1), '+gt_version', gt_version, trim(unknown_mes))
127  end if
128  if (present(dims)) then
129  numdims = size(history % dimvars)
130  allocate(dims(numdims))
131  do i = 1, numdims
132  call inquire(history % dimvars(i), name=dims(i))
133  end do
134  end if
135  if (present(dimsizes)) then
136  numdims = size(history % dimvars)
137  allocate(dimsizes(numdims))
138  do i = 1, numdims
139  call inquire(history % dimvars(i), size=dimsizes(i), growable=growable)
140  if (growable) dimsizes(i) = 0
141  end do
142  end if
143  if (present(longnames)) then
144  numdims = size(history % dimvars)
145  allocate(longnames(numdims))
146  do i = 1, numdims
147  call get_attr(history % dimvars(i), 'long_name', &
148  & longnames(i), 'unknown')
149  end do
150  end if
151  if (present(units)) then
152  numdims = size(history % dimvars)
153  allocate(units(numdims))
154  do i = 1, numdims
155  call get_attr(history % dimvars(i), 'units', &
156  & units(i), 'unknown')
157  end do
158  end if
159  if (present(xtypes)) then
160  numdims = size(history % dimvars)
161  allocate(xtypes(numdims))
162  do i = 1, numdims
163  call inquire(history % dimvars(i), xtype=xtypes(i))
164  end do
165  end if
166  if (present(axes)) then
167  numvars = size(history % dimvars)
168  allocate(axes(numvars))
169  do i = 1, numvars
170  call inquire(history % dimvars(i), &
171  & allcount=axes(i) % length, &
172  & xtype=axes(i) % xtype, name=axes(i) % name)
173  call get_attr(history % dimvars(i), 'long_name', &
174  & axes(i) % longname, 'unknown')
175  call get_attr(history % dimvars(i), 'units', &
176  & axes(i) % units, 'unknown')
177 
178  ! 属性 GT_HISTORY_ATTR はまだ取得できない
179  !
180  ! するためには, 属性名に対して様々な型が存在しうると
181  ! 考えられるため, get_attr (gtdata_generic および gtdata_netcdf_generic)
182  ! に err 属性を装備させ, 取得できない際にエラーを
183  ! 返してもらわなければならないだろう.
184 
185  end do
186  end if
187 
188  if (present(varinfo)) then
189  if (.not. associated(history % vars) .or. &
190  & size(history % vars) < 1) then
191  stat = nf90_enotvar
192  goto 999
193  end if
194 
195  numvars = size(history % vars)
196  allocate(varinfo(numvars))
197  do i = 1, numvars
198  call inquire(history % vars(i), alldims=alldims, &
199  & xtype=varinfo(i) % xtype, name=varinfo(i) % name)
200  call get_attr(history % vars(i), 'long_name', &
201  & varinfo(i) % longname, 'unknown')
202  call get_attr(history % vars(i), 'units', &
203  & varinfo(i) % units, 'unknown')
204 
205  ! 属性 GT_HISTORY_ATTR はまだ取得できない
206  !
207  ! するためには, 属性名に対して様々な型が存在しうると
208  ! 考えられるため, get_attr (gtdata_generic および gtdata_netcdf_generic)
209  ! に err 属性を装備させ, 取得できない際にエラーを
210  ! 返してもらわなければならないだろう.
211 
212  allocate(varinfo(i) % dims(alldims))
213  do j = 1, alldims
214  call open(var=dimvar, source_var=history % vars(i), &
215  & dimord=j, count_compact=.true.)
216  call inquire(dimvar, name=varinfo(i) % dims(j))
217  call close(dimvar)
218  end do
219 
220  varinfo(i) % initialized = .true.
221 
222  end do
223  end if
224 999 continue
225  call storeerror(stat, subname, err, cause_c=cause_c)
226  call endsub(subname)
type(gt_history), target, save, public default
integer, parameter, public token
単語やキーワードを保持する文字型変数の種別型パラメタ
Definition: dc_types.f90:109
subroutine, public storeerror(number, where, err, cause_c, cause_i)
Definition: dc_error.f90:830
integer, parameter, public dc_noerr
Definition: dc_error.f90:509
integer, parameter, public dp
倍精度実数型変数
Definition: dc_types.f90:83
subroutine, public dbgmessage(fmt, i, r, d, L, n, c1, c2, c3, ca)
Definition: dc_trace.f90:509
subroutine, public beginsub(name, fmt, i, r, d, L, n, c1, c2, c3, ca, version)
Definition: dc_trace.f90:351
種別型パラメタを提供します。
Definition: dc_types.f90:49
integer, parameter, public gt_ebadhistory
Definition: dc_error.f90:543
subroutine, public endsub(name, fmt, i, r, d, L, n, c1, c2, c3, ca)
Definition: dc_trace.f90:446
integer, parameter, public string
文字列を保持する 文字型変数の種別型パラメタ
Definition: dc_types.f90:118
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 
)

Definition at line 236 of file historyinquire.f90.

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

236  !
237  !== GT_HISTORY 型変数への問い合わせ
238  !
239  ! HistoryCreate で *history* を指定しなかった場合はこちらの
240  ! サブルーチンで問い合わせを行います。
241  ! *history* には必ず "<tt>default</tt>" という文字列を与えてください。
242  !
243  ! *HistoryInquire* は 2 つのサブルーチンの総称名です。
244  ! 各引数の情報に関しては下記のサブルーチンを参照してください。
245  !
246  !--
247  ! HistoryInquire1 と同機能だが, こちらは
248  ! history に "default" という文字列を代入することで,
249  ! デフォルトで出力されるファイル名 (HistoryCreate で
250  ! history 引数を与えない場合のファイル名) が返る.
251  !++
252  !
256  use dc_error, only: storeerror, dc_noerr, nf90_einval
257  use dc_trace, only: beginsub, endsub, dbgmessage
258  use dc_types, only: string, token, dp
259  implicit none
260  character(*), intent(in):: history
261  logical, intent(out), optional :: err
262  character(*), intent(out), optional:: file, title, source, institution
263  real,intent(out), optional:: origin, interval, newest, oldest
264  character(*), intent(out), optional:: conventions, gt_version
265  character(*), pointer, optional:: dims(:) ! (out)
266  integer,pointer, optional:: dimsizes(:) ! (out)
267  character(*), pointer, optional:: longnames(:) ! (out)
268  character(*), pointer, optional:: units(:) ! (out)
269  character(*), pointer, optional:: xtypes(:) ! (out)
270  type(gt_history_axis), pointer, optional :: axes(:) ! (out)
271  type(gt_history_varinfo), pointer, optional :: varinfo(:) ! (out)
272  integer:: stat
273  character(STRING):: cause_c
274  character(*), parameter:: subname = "HistoryInquire2"
275  continue
276  call beginsub(subname, "history=%c", c1=trim(history))
277  stat = dc_noerr
278  cause_c = ''
279  if (trim(history) /= 'default') then
280  stat = nf90_einval
281  cause_c = 'history="' // trim(history) // '"'
282  goto 999
283  end if
284  call historyinquire(default, err, file, title, source, &
285  & dims, dimsizes, longnames, units, xtypes, &
286  & institution, origin, interval, newest, oldest, &
287  & conventions, gt_version, &
288  & axes, varinfo )
289 999 continue
290  call storeerror(stat, subname, cause_c=cause_c)
291  call endsub(subname)
type(gt_history), target, save, public default
integer, parameter, public token
単語やキーワードを保持する文字型変数の種別型パラメタ
Definition: dc_types.f90:109
subroutine, public storeerror(number, where, err, cause_c, cause_i)
Definition: dc_error.f90:830
integer, parameter, public dc_noerr
Definition: dc_error.f90:509
integer, parameter, public dp
倍精度実数型変数
Definition: dc_types.f90:83
subroutine, public dbgmessage(fmt, i, r, d, L, n, c1, c2, c3, ca)
Definition: dc_trace.f90:509
subroutine, public beginsub(name, fmt, i, r, d, L, n, c1, c2, c3, ca, version)
Definition: dc_trace.f90:351
種別型パラメタを提供します。
Definition: dc_types.f90:49
subroutine, public endsub(name, fmt, i, r, d, L, n, c1, c2, c3, ca)
Definition: dc_trace.f90:446
integer, parameter, public string
文字列を保持する 文字型変数の種別型パラメタ
Definition: dc_types.f90:118
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 
)

Definition at line 301 of file historyinquire.f90.

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

301  !
302  ! 使用方法は HistoryInquire と同様です.
303  !
304  ! Usage is same as "HistoryInquire".
305  !
306  !--
307  ! 総称名 Inquire として提供するためのサブルーチンです.
308  ! 機能は HistoryInquire1 と同じです.
309  !++
310  !
313  use dc_trace, only: beginsub, endsub, dbgmessage
314  implicit none
315  type(gt_history), intent(in):: history
316  logical, intent(out), optional :: err
317  character(*), intent(out), optional:: file, title, source, institution
318  real,intent(out), optional:: origin, interval
319  real,intent(out), optional:: newest ! 最新の時刻
320  real,intent(out), optional:: oldest ! 最初の時刻
321  character(*), intent(out), optional:: conventions, gt_version
322  character(*), pointer, optional:: dims(:) ! (out)
323  integer,pointer, optional:: dimsizes(:) ! (out)
324  character(*), pointer, optional:: longnames(:) ! (out)
325  character(*), pointer, optional:: units(:) ! (out)
326  character(*), pointer, optional:: xtypes(:) ! (out)
327  type(gt_history_axis), pointer, optional :: axes(:) ! (out)
328  type(gt_history_varinfo), pointer, optional :: varinfo(:) ! (out)
329 
330  character(*), parameter:: subname = "HistoryInquire3"
331  continue
332  call beginsub(subname)
333  call historyinquire(history, err, file, title, source, &
334  & dims, dimsizes, longnames, units, xtypes, &
335  & institution, origin, interval, newest, oldest, &
336  & conventions, gt_version, &
337  & axes, varinfo )
338  call endsub(subname)
subroutine, public dbgmessage(fmt, i, r, d, L, n, c1, c2, c3, ca)
Definition: dc_trace.f90:509
subroutine, public beginsub(name, fmt, i, r, d, L, n, c1, c2, c3, ca, version)
Definition: dc_trace.f90:351
subroutine, public endsub(name, fmt, i, r, d, L, n, c1, c2, c3, ca)
Definition: dc_trace.f90:446
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 
)

Definition at line 348 of file historyinquire.f90.

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

348  !
349  ! 使用方法は HistoryInquire と同様です.
350  !
351  ! Usage is same as "HistoryInquire".
352  !
353  !--
354  ! 総称名 Inquire として提供するためのサブルーチンです.
355  ! 機能は HistoryInquire2 と同じです.
356  !++
357  !
360  use dc_trace, only: beginsub, endsub, dbgmessage
361  implicit none
362  character(*), 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, newest, oldest
366  character(*), intent(out), optional:: conventions, gt_version
367  character(*), pointer, optional:: dims(:) ! (out)
368  integer,pointer, optional:: dimsizes(:) ! (out)
369  character(*), pointer, optional:: longnames(:) ! (out)
370  character(*), pointer, optional:: units(:) ! (out)
371  character(*), pointer, optional:: xtypes(:) ! (out)
372  type(gt_history_axis), pointer, optional :: axes(:) ! (out)
373  type(gt_history_varinfo), pointer, optional :: varinfo(:) ! (out)
374  character(*), parameter:: subname = "HistoryInquire4"
375  continue
376  call beginsub(subname)
377  call historyinquire(history, err, file, title, source, &
378  & dims, dimsizes, longnames, units, xtypes, &
379  & institution, origin, interval, newest, oldest, &
380  & conventions, gt_version, &
381  & axes, varinfo )
382  call endsub(subname)
subroutine, public dbgmessage(fmt, i, r, d, L, n, c1, c2, c3, ca)
Definition: dc_trace.f90:509
subroutine, public beginsub(name, fmt, i, r, d, L, n, c1, c2, c3, ca, version)
Definition: dc_trace.f90:351
subroutine, public endsub(name, fmt, i, r, d, L, n, c1, c2, c3, ca)
Definition: dc_trace.f90:446
Here is the call graph for this function: