gtvargetattr.f90 File Reference

Go to the source code of this file.

Functions/Subroutines

subroutine gtvargetattri (var, attrname, value, default)
 
subroutine gtvargetattrr (var, attrname, value, default)
 
subroutine gtvargetattrd (var, attrname, value, default)
 
subroutine gtvargetattrip (var, name, value)
 
subroutine gtvargetattrrp (var, name, value)
 
subroutine gtvargetattrdp (var, name, value)
 
subroutine gtvargetattria (var, name, value, default)
 
subroutine gtvargetattrra (var, name, value, default)
 
subroutine gtvargetattrda (var, name, value, default)
 

Function/Subroutine Documentation

◆ gtvargetattrd()

subroutine gtvargetattrd ( type(gt_variable), intent(in)  var,
character(len = *), intent(in)  attrname,
real(dp), intent(out)  value,
real(dp), intent(in), optional  default 
)

Definition at line 133 of file gtvargetattr.f90.

References dc_types::dp, dc_error::gt_enotvar, dc_error::storeerror(), dc_types::string, and gtdata_internal_map::var_class().

133  use gtdata_types, only: gt_variable
134  use gtdata_internal_map, only: var_class, vtb_class_netcdf, vtb_class_memory
139  use dc_string, only: stod
140  use dc_error, only: gt_enotvar, storeerror
141  use dc_types, only: dp
142  use netcdf, only: nf90_fill_double
143  use dc_types, only: string
144  implicit none
145  type(gt_variable), intent(in):: var
146  character(len = *), intent(in):: attrname
147  real(DP), intent(out):: value
148  real(DP), intent(in), optional:: default
149  integer:: stat
150  real(DP):: buffer(1)
151  character(STRING):: cbuffer
152  integer:: class, cid
153  logical:: err
154 continue
155  call var_class(var, class, cid)
156  select case(class)
157  case (vtb_class_netcdf)
158  call get_attr(gd_nc_variable(cid), attrname, value=buffer, &
159  & stat=stat, default=default)
160  if (stat >= 1) then
161  value = buffer(1)
162  return
163  end if
164  case (vtb_class_memory)
165  call get_attr(gd_mem_variable(cid), attrname, cbuffer, err)
166  if (.not. err) then
167  value = stod(cbuffer)
168  return
169  endif
170  case default
171  call storeerror(gt_enotvar, "GTVarGetAttrR")
172  end select
173  value = nf90_fill_double
174  if (present(default)) value = default
integer, parameter, public gt_enotvar
Definition: dc_error.f90:533
subroutine, public storeerror(number, where, err, cause_c, cause_i)
Definition: dc_error.f90:830
integer, parameter, public dp
倍精度実数型変数
Definition: dc_types.f90:83
文字型変数の操作.
Definition: dc_string.f90:24
種別型パラメタを提供します。
Definition: dc_types.f90:49
subroutine, public var_class(var, class, cid)
integer, parameter, public string
文字列を保持する 文字型変数の種別型パラメタ
Definition: dc_types.f90:118
Here is the call graph for this function:

◆ gtvargetattrda()

subroutine gtvargetattrda ( type(gt_variable), intent(in)  var,
character(len = *), intent(in)  name,
real(dp), dimension(:), intent(out)  value,
real(dp), intent(in)  default 
)

Definition at line 374 of file gtvargetattr.f90.

References dc_types::dp, dc_error::gt_enotvar, dc_error::storeerror(), and gtdata_internal_map::var_class().

374  use gtdata_types, only: gt_variable
375  use gtdata_generic, only: friend => get_attr
376  use gtdata_internal_map, only: var_class, vtb_class_netcdf, vtb_class_memory
379  use dc_types, only: dp
380  use dc_error, only: gt_enotvar, storeerror
381  implicit none
382  type(gt_variable), intent(in):: var
383  character(len = *), intent(in):: name
384  real(DP), intent(out):: value(:)
385  real(DP), intent(in):: default
386  real(DP), pointer:: ptr(:)
387  integer:: n, stat, class, cid
388 continue
389  call var_class(var, class, cid)
390  if (class == vtb_class_netcdf) then
391  call get_attr(gd_nc_variable(cid), name, value, stat, default)
392  else if (class == vtb_class_memory) then
393  call friend(var, name, ptr)
394  if (.not. associated(ptr)) then
395  value(:) = default
396  else
397  n = min(size(ptr), size(value))
398  value(1:n) = ptr(1:n)
399  if (n < size(ptr)) value(n+1: ) = default
400  deallocate(ptr)
401  endif
402  else
403  call storeerror(gt_enotvar, "GTVarGetAttrRA")
404  endif
integer, parameter, public gt_enotvar
Definition: dc_error.f90:533
subroutine, public storeerror(number, where, err, cause_c, cause_i)
Definition: dc_error.f90:830
integer, parameter, public dp
倍精度実数型変数
Definition: dc_types.f90:83
種別型パラメタを提供します。
Definition: dc_types.f90:49
subroutine, public var_class(var, class, cid)
Here is the call graph for this function:

◆ gtvargetattrdp()

subroutine gtvargetattrdp ( type(gt_variable), intent(in)  var,
character(len = *), intent(in)  name,
real(dp), dimension(:), pointer  value 
)

Definition at line 263 of file gtvargetattr.f90.

References dc_types::dp, dc_error::gt_enotvar, dc_error::storeerror(), dc_types::string, and gtdata_internal_map::var_class().

263  use gtdata_types, only: gt_variable
264  use gtdata_internal_map, only: var_class, vtb_class_netcdf, vtb_class_memory
269  use dc_types, only: dp
270  use dc_error, only: gt_enotvar, storeerror
271  use dc_string, only: get_array
272  use dc_types, only: string
273  implicit none
274  type(gt_variable), intent(in):: var
275  character(len = *), intent(in):: name
276  real(DP), pointer:: value(:) !(out)
277  integer:: stat, class, cid
278  character(STRING):: cbuffer
279  logical:: err
280 continue
281  call var_class(var, class, cid)
282  if (class == vtb_class_netcdf) then
283  allocate(value(1))
284  call get_attr(gd_nc_variable(cid), name, value(1:0), stat)
285  deallocate(value)
286  if (stat < 1) return
287  allocate(value(stat))
288  call get_attr(gd_nc_variable(cid), name, value, stat)
289  if (stat < 1) deallocate(value)
290  else if (class == vtb_class_memory) then
291  call get_attr(gd_mem_variable(cid), name, cbuffer, err)
292  if (err) then
293  nullify(value)
294  return
295  endif
296  call get_array(value, cbuffer)
297  cbuffer = ""
298  else
299  call storeerror(gt_enotvar, "GTVarGetAttrRP")
300  endif
integer, parameter, public gt_enotvar
Definition: dc_error.f90:533
subroutine, public storeerror(number, where, err, cause_c, cause_i)
Definition: dc_error.f90:830
integer, parameter, public dp
倍精度実数型変数
Definition: dc_types.f90:83
文字型変数の操作.
Definition: dc_string.f90:24
種別型パラメタを提供します。
Definition: dc_types.f90:49
subroutine, public var_class(var, class, cid)
integer, parameter, public string
文字列を保持する 文字型変数の種別型パラメタ
Definition: dc_types.f90:118
Here is the call graph for this function:

◆ gtvargetattri()

subroutine gtvargetattri ( type(gt_variable), intent(in)  var,
character(len = *), intent(in)  attrname,
integer, intent(out)  value,
integer, intent(in), optional  default 
)

Definition at line 19 of file gtvargetattr.f90.

References dc_error::gt_enotvar, dc_error::storeerror(), dc_types::string, and gtdata_internal_map::var_class().

19  !
20  !== 属性の入力
21  !
22  ! 変数 *var* に付加されている属性 *name* の値を返します。
23  ! *Get_Attr* は複数のサブルーチンの総称名なので、
24  ! *value* には様々な型の変数 (ポインタも可能)
25  ! を与えることが可能です。
26  ! 以下のサブルーチンを参照してください。
27  !
28  ! 属性の値が正常に取得できず、且つ *default* が与えられて
29  ! いた場合、その値が返ります。
30  ! *default* が与えられない場合のデフォルトの値はそれぞれ以下の
31  ! 通りです。
32  !
33  ! character :: "" (空文字)
34  ! real :: netcdf_f77#NF90_FILL_REAL
35  ! real(DP) :: netcdf_f77#NF90_FILL_DOUBLE
36  ! integer :: netcdf_f77#NF90_FILL_INT
37  !
38  ! *value* がポインタの場合は、型に依らず空状態が返ります。
39  !
40  ! *value* にポインタを与えた場合、属性の値に応じて自動的に
41  ! 割り付けが行われます。そのため、必ず空状態にしてから与えてください。
42  !
43  ! *value* に固定長配列を用意する場合 *default* が必須になりますが、
44  ! これは Fortran の言語仕様上ポインタ方式と引用仕様が同じであっては
45  ! ならないからです。
46  !
47  use gtdata_types, only: gt_variable
48  use gtdata_internal_map, only: var_class, vtb_class_netcdf, vtb_class_memory
53  use netcdf, only: nf90_fill_int
54  use dc_string, only: stoi
55  use dc_error, only: gt_enotvar, storeerror
56  use dc_types, only: string
57  implicit none
58  type(gt_variable), intent(in):: var
59  character(len = *), intent(in):: attrname
60  integer, intent(out):: value
61  integer, intent(in), optional:: default
62  integer:: stat, buffer(1), class, cid
63  character(STRING):: cbuffer
64  logical:: err
65 continue
66  call var_class(var, class, cid)
67  if (class == vtb_class_netcdf) then
68  call get_attr(gd_nc_variable(cid), attrname, buffer, stat, default)
69  if (stat >= 1) then
70  value = buffer(1)
71  return
72  end if
73  else if (class == vtb_class_memory) then
74  call get_attr(gd_mem_variable(cid), attrname, cbuffer, err)
75  if (.not. err) then
76  value = stoi(cbuffer)
77  return
78  endif
79  else
80  call storeerror(gt_enotvar, "GTVarGetAttrI")
81  endif
82  value = nf90_fill_int
83  if (present(default)) value = default
integer, parameter, public gt_enotvar
Definition: dc_error.f90:533
subroutine, public storeerror(number, where, err, cause_c, cause_i)
Definition: dc_error.f90:830
文字型変数の操作.
Definition: dc_string.f90:24
種別型パラメタを提供します。
Definition: dc_types.f90:49
subroutine, public var_class(var, class, cid)
integer, parameter, public string
文字列を保持する 文字型変数の種別型パラメタ
Definition: dc_types.f90:118
Here is the call graph for this function:

◆ gtvargetattria()

subroutine gtvargetattria ( type(gt_variable), intent(in)  var,
character(len = *), intent(in)  name,
integer, dimension(:), intent(out)  value,
integer, intent(in)  default 
)

Definition at line 308 of file gtvargetattr.f90.

References dc_error::gt_enotvar, dc_error::storeerror(), and gtdata_internal_map::var_class().

308  use gtdata_types, only: gt_variable
309  use gtdata_generic, only: friend => get_attr
310  use gtdata_internal_map, only: var_class, vtb_class_netcdf, vtb_class_memory
313  use dc_error, only: gt_enotvar, storeerror
314  implicit none
315  type(gt_variable), intent(in):: var
316  character(len = *), intent(in):: name
317  integer, intent(out):: value(:)
318  integer, intent(in):: default
319  integer, pointer:: ptr(:)
320  integer:: n, stat, class, cid
321 continue
322  call var_class(var, class, cid)
323  if (class == vtb_class_netcdf) then
324  call get_attr(gd_nc_variable(cid), name, value, stat, default)
325  else if (class == vtb_class_memory) then
326  call friend(var, name, ptr)
327  if (.not. associated(ptr)) then
328  value(:) = default
329  else
330  n = min(size(ptr), size(value))
331  value(1:n) = ptr(1:n)
332  if (n < size(ptr)) value(n+1: ) = default
333  deallocate(ptr)
334  endif
335  else
336  call storeerror(gt_enotvar, "GTVarGetAttrIA")
337  endif
integer, parameter, public gt_enotvar
Definition: dc_error.f90:533
subroutine, public storeerror(number, where, err, cause_c, cause_i)
Definition: dc_error.f90:830
subroutine, public var_class(var, class, cid)
Here is the call graph for this function:

◆ gtvargetattrip()

subroutine gtvargetattrip ( type(gt_variable), intent(in)  var,
character(len = *), intent(in)  name,
integer, dimension(:), pointer  value 
)

Definition at line 182 of file gtvargetattr.f90.

References dc_error::gt_enotvar, dc_error::storeerror(), dc_types::string, and gtdata_internal_map::var_class().

182  use gtdata_types, only: gt_variable
183  use gtdata_internal_map, only: var_class, vtb_class_netcdf, vtb_class_memory
188  use dc_error, only: gt_enotvar, storeerror
189  use dc_string, only: get_array
190  use dc_types, only: string
191  implicit none
192  type(gt_variable), intent(in):: var
193  character(len = *), intent(in):: name
194  integer, pointer:: value(:) !(out)
195  integer:: stat, class, cid
196  character(STRING):: cbuffer
197  logical:: err
198 continue
199  call var_class(var, class, cid)
200  if (class == vtb_class_netcdf) then
201  allocate(value(1))
202  call get_attr(gd_nc_variable(cid), name, value(1:0), stat)
203  deallocate(value)
204  if (stat < 1) return
205  allocate(value(stat))
206  call get_attr(gd_nc_variable(cid), name, value, stat)
207  if (stat < 1) deallocate(value)
208  else if (class == vtb_class_memory) then
209  call get_attr(gd_mem_variable(cid), name, cbuffer, err)
210  if (err) then
211  nullify(value)
212  return
213  endif
214  call get_array(value, cbuffer)
215  cbuffer = ""
216  else
217  call storeerror(gt_enotvar, "GTVarGetAttrIP")
218  endif
integer, parameter, public gt_enotvar
Definition: dc_error.f90:533
subroutine, public storeerror(number, where, err, cause_c, cause_i)
Definition: dc_error.f90:830
文字型変数の操作.
Definition: dc_string.f90:24
種別型パラメタを提供します。
Definition: dc_types.f90:49
subroutine, public var_class(var, class, cid)
integer, parameter, public string
文字列を保持する 文字型変数の種別型パラメタ
Definition: dc_types.f90:118
Here is the call graph for this function:

◆ gtvargetattrr()

subroutine gtvargetattrr ( type(gt_variable), intent(in)  var,
character(len = *), intent(in)  attrname,
real, intent(out)  value,
real, intent(in), optional  default 
)

Definition at line 87 of file gtvargetattr.f90.

References dc_error::gt_ebadvar, dc_error::storeerror(), dc_types::string, and gtdata_internal_map::var_class().

87  use gtdata_types, only: gt_variable
92  use gtdata_internal_map, only: var_class, vtb_class_netcdf, vtb_class_memory
93  use dc_error, only: gt_ebadvar, storeerror
94  use dc_string, only: stod
95  use netcdf, only: nf90_fill_float
96  use dc_types, only: string
97  implicit none
98  type(gt_variable), intent(in):: var
99  character(len = *), intent(in):: attrname
100  real, intent(out):: value
101  real, intent(in), optional:: default
102  integer:: stat
103  real:: buffer(1)
104  character(STRING):: cbuffer
105  integer:: class, cid
106  logical:: err
107 continue
108  call var_class(var, class, cid)
109  if (class == vtb_class_netcdf) then
110  call get_attr(gd_nc_variable(cid), attrname, value=buffer, &
111  & stat=stat, default=default)
112  if (stat >= 1) then
113  value = buffer(1)
114  return
115  endif
116  else if (class == vtb_class_memory) then
117  call get_attr(gd_mem_variable(cid), attrname, cbuffer, err)
118  if (.not. err) then
119  value = stod(cbuffer)
120  return
121  endif
122  else
123  call storeerror(gt_ebadvar, "GTVarGetAttrR")
124  endif
125  if (present(default)) then
126  value = default
127  else
128  value = nf90_fill_float
129  endif
subroutine, public storeerror(number, where, err, cause_c, cause_i)
Definition: dc_error.f90:830
integer, parameter, public gt_ebadvar
Definition: dc_error.f90:539
文字型変数の操作.
Definition: dc_string.f90:24
種別型パラメタを提供します。
Definition: dc_types.f90:49
subroutine, public var_class(var, class, cid)
integer, parameter, public string
文字列を保持する 文字型変数の種別型パラメタ
Definition: dc_types.f90:118
Here is the call graph for this function:

◆ gtvargetattrra()

subroutine gtvargetattrra ( type(gt_variable), intent(in)  var,
character(len = *), intent(in)  name,
real, dimension(:), intent(out)  value,
real, intent(in)  default 
)

Definition at line 341 of file gtvargetattr.f90.

References dc_error::gt_enotvar, dc_error::storeerror(), and gtdata_internal_map::var_class().

341  use gtdata_types, only: gt_variable
342  use gtdata_generic, only: friend => get_attr
343  use gtdata_internal_map, only: var_class, vtb_class_netcdf, vtb_class_memory
346  use dc_error, only: gt_enotvar, storeerror
347  implicit none
348  type(gt_variable), intent(in):: var
349  character(len = *), intent(in):: name
350  real, intent(out):: value(:)
351  real, intent(in):: default
352  real, pointer:: ptr(:)
353  integer:: n, class, cid, stat
354 continue
355  call var_class(var, class, cid)
356  if (class == vtb_class_netcdf) then
357  call get_attr(gd_nc_variable(cid), name, value, stat, default)
358  else if (class == vtb_class_memory) then
359  call friend(var, name, ptr)
360  if (.not. associated(ptr)) then
361  value(:) = default
362  else
363  n = min(size(ptr), size(value))
364  value(1:n) = ptr(1:n)
365  if (n < size(ptr)) value(n+1: ) = default
366  deallocate(ptr)
367  endif
368  else
369  call storeerror(gt_enotvar, "GTVarGetAttrRA")
370  endif
integer, parameter, public gt_enotvar
Definition: dc_error.f90:533
subroutine, public storeerror(number, where, err, cause_c, cause_i)
Definition: dc_error.f90:830
subroutine, public var_class(var, class, cid)
Here is the call graph for this function:

◆ gtvargetattrrp()

subroutine gtvargetattrrp ( type(gt_variable), intent(in)  var,
character(len = *), intent(in)  name,
real, dimension(:), pointer  value 
)

Definition at line 222 of file gtvargetattr.f90.

References dc_error::gt_enotvar, dc_error::storeerror(), dc_types::string, and gtdata_internal_map::var_class().

222  use gtdata_types, only: gt_variable
223  use gtdata_internal_map, only: var_class, vtb_class_netcdf, vtb_class_memory
228  use dc_string, only: get_array
229  use dc_error, only: gt_enotvar, storeerror
230  use dc_types, only: string
231  implicit none
232  type(gt_variable), intent(in):: var
233  character(len = *), intent(in):: name
234  real, pointer:: value(:) !(out)
235  integer:: stat, class, cid
236  character(STRING):: cbuffer
237  logical:: err
238 continue
239  call var_class(var, class, cid)
240  if (class == vtb_class_netcdf) then
241  allocate(value(1))
242  call get_attr(gd_nc_variable(cid), name, value(1:0), stat)
243  deallocate(value)
244  if (stat < 1) return
245  allocate(value(stat))
246  call get_attr(gd_nc_variable(cid), name, value, stat)
247  if (stat < 1) deallocate(value)
248  else if (class == vtb_class_memory) then
249  call get_attr(gd_mem_variable(cid), name, cbuffer, err)
250  if (err) then
251  nullify(value)
252  return
253  endif
254  call get_array(value, cbuffer)
255  cbuffer = ""
256  else
257  nullify(value)
258  call storeerror(gt_enotvar, "GTVarGetAttrRP")
259  endif
integer, parameter, public gt_enotvar
Definition: dc_error.f90:533
subroutine, public storeerror(number, where, err, cause_c, cause_i)
Definition: dc_error.f90:830
文字型変数の操作.
Definition: dc_string.f90:24
種別型パラメタを提供します。
Definition: dc_types.f90:49
subroutine, public var_class(var, class, cid)
integer, parameter, public string
文字列を保持する 文字型変数の種別型パラメタ
Definition: dc_types.f90:118
Here is the call graph for this function: