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

数値型属性の入力 More...

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)

Detailed Description

数値型属性の入力

Author
Eizi TOYODA, Yasuhiro MORIKAWA

これらのサブルーチンは gtdata_generic から提供されます。 引数の型に応じて様々なバリアントがありますが、下部構造では同じものを使用しています。

Definition in file gtvargetattr.f90.

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 )

属性値の取得 (倍精度実数スカラ)

Parameters
[in]var変数ハンドル
[in]attrname属性名
[out]value属性値 (倍精度実数)
[in]defaultデフォルト値 (省略可能)

Definition at line 166 of file gtvargetattr.f90.

167 use gtdata_types, only: gt_variable
168 use gtdata_internal_map, only: var_class, vtb_class_netcdf
171 use dc_error, only: gt_enotvar, storeerror
172 use dc_types, only: dp
173 use netcdf, only: nf90_fill_double
174 implicit none
175 type(GT_VARIABLE), intent(in):: var
176 character(len = *), intent(in):: attrname
177 real(DP), intent(out):: value
178 real(DP), intent(in), optional:: default
179 integer:: stat
180 real(DP):: buffer(1)
181 integer:: class, cid
182continue
183 call var_class(var, class, cid)
184 select case(class)
185 case (vtb_class_netcdf)
186 call get_attr(gd_nc_variable(cid), attrname, value=buffer, &
187 & stat=stat, default=default)
188 if (stat >= 1) then
189 value = buffer(1)
190 return
191 end if
192 case default
193 call storeerror(gt_enotvar, "GTVarGetAttrR")
194 end select
195 value = nf90_fill_double
196 if (present(default)) value = default
エラー処理用モジュール
Definition dc_error.f90:454
subroutine, public storeerror(number, where, err, cause_c, cause_i)
Definition dc_error.f90:891
integer, parameter, public gt_enotvar
Definition dc_error.f90:512
種別型パラメタを提供します。
Definition dc_types.f90:55
integer, parameter, public dp
倍精度実数型変数
Definition dc_types.f90:92
subroutine, public var_class(var, class, cid)

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

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 )

属性値の取得 (倍精度実数固定長配列)

Parameters
[in]var変数ハンドル
[in]name属性名
[out]value属性値 (倍精度実数配列)
[in]defaultデフォルト充填値

Definition at line 413 of file gtvargetattr.f90.

414 use gtdata_types, only: gt_variable
415 use gtdata_generic, only: friend => get_attr
416 use gtdata_internal_map, only: var_class, vtb_class_netcdf
419 use dc_types, only: dp
420 use dc_error, only: gt_enotvar, storeerror
421 implicit none
422 type(GT_VARIABLE), intent(in):: var
423 character(len = *), intent(in):: name
424 real(DP), intent(out):: value(:)
425 real(DP), intent(in):: default
426 integer:: stat, class, cid
427continue
428 call var_class(var, class, cid)
429 if (class == vtb_class_netcdf) then
430 call get_attr(gd_nc_variable(cid), name, value, stat, default)
431 else
432 call storeerror(gt_enotvar, "GTVarGetAttrRA")
433 endif

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

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 )

属性値の取得 (倍精度実数ポインタ配列)

Parameters
[in]var変数ハンドル
[in]name属性名
[out]value属性値 (倍精度実数ポインタ)

Definition at line 293 of file gtvargetattr.f90.

294 use gtdata_types, only: gt_variable
295 use gtdata_internal_map, only: var_class, vtb_class_netcdf
298 use dc_types, only: dp
299 use dc_error, only: gt_enotvar, storeerror
300 implicit none
301 type(GT_VARIABLE), intent(in):: var
302 character(len = *), intent(in):: name
303 real(DP), pointer:: value(:) !(out)
304 integer:: stat, class, cid
305continue
306 call var_class(var, class, cid)
307 if (class == vtb_class_netcdf) then
308 allocate(value(1))
309 call get_attr(gd_nc_variable(cid), name, value(1:0), stat)
310 deallocate(value)
311 if (stat < 1) return
312 allocate(value(stat))
313 call get_attr(gd_nc_variable(cid), name, value, stat)
314 if (stat < 1) deallocate(value)
315 else
316 call storeerror(gt_enotvar, "GTVarGetAttrRP")
317 endif

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

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 )

属性値の取得 (整数スカラ)

変数 var に付加されている属性 attrname の値を返します。 Get_Attr は複数のサブルーチンの総称名なので、 value には様々な型の変数 (ポインタも可能) を与えることが可能です。

属性の値が正常に取得できず、且つ default が与えられていた場合、 その値が返ります。default が与えられない場合のデフォルトの値は それぞれ以下の通りです。

  • character: "" (空文字)
  • real: NF90_FILL_REAL
  • real(DP): NF90_FILL_DOUBLE
  • integer: NF90_FILL_INT

value にポインタを与えた場合、属性の値に応じて自動的に 割り付けが行われます。そのため、必ず空状態にしてから与えてください。

value に固定長配列を用意する場合 default が必須になりますが、 これは Fortran の言語仕様上ポインタ方式と引用仕様が同じであってはならないためです。

Parameters
[in]var変数ハンドル
[in]attrname属性名
[out]value属性値 (整数)
[in]defaultデフォルト値 (省略可能)

Definition at line 76 of file gtvargetattr.f90.

77 use gtdata_types, only: gt_variable
78 use gtdata_internal_map, only: var_class, vtb_class_netcdf
81 use netcdf, only: nf90_fill_int
83 implicit none
84 type(GT_VARIABLE), intent(in):: var
85 character(len = *), intent(in):: attrname
86 integer, intent(out):: value
87 integer, intent(in), optional:: default
88 integer:: stat, buffer(1), class, cid
89continue
90 call var_class(var, class, cid)
91 if (class == vtb_class_netcdf) then
92 call get_attr(gd_nc_variable(cid), attrname, buffer, stat, default)
93 if (stat >= 1) then
94 value = buffer(1)
95 return
96 end if
97 else
98 call storeerror(gt_enotvar, "GTVarGetAttrI")
99 endif
100 value = nf90_fill_int
101 if (present(default)) value = default

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

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 )

属性値の取得 (整数固定長配列)

固定長配列として受け取る場合は属性長があまっている場合には切り捨てられ、 属性長が足りない場合は default 値 (ポインタと違い必須) を埋めます。

Parameters
[in]var変数ハンドル
[in]name属性名
[out]value属性値 (整数配列)
[in]defaultデフォルト充填値

Definition at line 341 of file gtvargetattr.f90.

342 use gtdata_types, only: gt_variable
343 use gtdata_generic, only: friend => get_attr
344 use gtdata_internal_map, only: var_class, vtb_class_netcdf
347 use dc_error, only: gt_enotvar, storeerror
348 implicit none
349 type(GT_VARIABLE), intent(in):: var
350 character(len = *), intent(in):: name
351 integer, intent(out):: value(:)
352 integer, intent(in):: default
353 integer:: stat, class, cid
354continue
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
359 call storeerror(gt_enotvar, "GTVarGetAttrIA")
360 endif

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

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 )

属性値の取得 (整数ポインタ配列)

ポインタ配列を使って受け取る場合は解釈可能な数だけ実体が割り付けられます。

Parameters
[in]var変数ハンドル
[in]name属性名
[out]value属性値 (整数ポインタ)

Definition at line 216 of file gtvargetattr.f90.

217 use gtdata_types, only: gt_variable
218 use gtdata_internal_map, only: var_class, vtb_class_netcdf
221 use dc_error, only: gt_enotvar, storeerror
222 implicit none
223 type(GT_VARIABLE), intent(in):: var
224 character(len = *), intent(in):: name
225 integer, pointer:: value(:) !(out)
226 integer:: stat, class, cid
227continue
228 call var_class(var, class, cid)
229 if (class == vtb_class_netcdf) then
230 allocate(value(1))
231 call get_attr(gd_nc_variable(cid), name, value(1:0), stat)
232 deallocate(value)
233 if (stat < 1) return
234 allocate(value(stat))
235 call get_attr(gd_nc_variable(cid), name, value, stat)
236 if (stat < 1) deallocate(value)
237 else
238 call storeerror(gt_enotvar, "GTVarGetAttrIP")
239 endif

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

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 )

属性値の取得 (実数スカラ)

Parameters
[in]var変数ハンドル
[in]attrname属性名
[out]value属性値 (実数)
[in]defaultデフォルト値 (省略可能)

Definition at line 118 of file gtvargetattr.f90.

119 use gtdata_types, only: gt_variable
122 use gtdata_internal_map, only: var_class, vtb_class_netcdf
123 use dc_error, only: gt_ebadvar, storeerror
124 use netcdf, only: nf90_fill_float
125 implicit none
126 type(GT_VARIABLE), intent(in):: var
127 character(len = *), intent(in):: attrname
128 real, intent(out):: value
129 real, intent(in), optional:: default
130 integer:: stat
131 real:: buffer(1)
132 integer:: class, cid
133continue
134 call var_class(var, class, cid)
135 if (class == vtb_class_netcdf) then
136 call get_attr(gd_nc_variable(cid), attrname, value=buffer, &
137 & stat=stat, default=default)
138 if (stat >= 1) then
139 value = buffer(1)
140 return
141 endif
142 else
143 call storeerror(gt_ebadvar, "GTVarGetAttrR")
144 endif
145 if (present(default)) then
146 value = default
147 else
148 value = nf90_fill_float
149 endif
integer, parameter, public gt_ebadvar
Definition dc_error.f90:518

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

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 )

属性値の取得 (実数固定長配列)

Parameters
[in]var変数ハンドル
[in]name属性名
[out]value属性値 (実数配列)
[in]defaultデフォルト充填値

Definition at line 377 of file gtvargetattr.f90.

378 use gtdata_types, only: gt_variable
379 use gtdata_generic, only: friend => get_attr
380 use gtdata_internal_map, only: var_class, vtb_class_netcdf
383 use dc_error, only: gt_enotvar, storeerror
384 implicit none
385 type(GT_VARIABLE), intent(in):: var
386 character(len = *), intent(in):: name
387 real, intent(out):: value(:)
388 real, intent(in):: default
389 integer:: class, cid, stat
390continue
391 call var_class(var, class, cid)
392 if (class == vtb_class_netcdf) then
393 call get_attr(gd_nc_variable(cid), name, value, stat, default)
394 else
395 call storeerror(gt_enotvar, "GTVarGetAttrRA")
396 endif

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

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 )

属性値の取得 (実数ポインタ配列)

Parameters
[in]var変数ハンドル
[in]name属性名
[out]value属性値 (実数ポインタ)

Definition at line 254 of file gtvargetattr.f90.

255 use gtdata_types, only: gt_variable
256 use gtdata_internal_map, only: var_class, vtb_class_netcdf
259 use dc_error, only: gt_enotvar, storeerror
260 implicit none
261 type(GT_VARIABLE), intent(in):: var
262 character(len = *), intent(in):: name
263 real, pointer:: value(:) !(out)
264 integer:: stat, class, cid
265continue
266 call var_class(var, class, cid)
267 if (class == vtb_class_netcdf) then
268 allocate(value(1))
269 call get_attr(gd_nc_variable(cid), name, value(1:0), stat)
270 deallocate(value)
271 if (stat < 1) return
272 allocate(value(stat))
273 call get_attr(gd_nc_variable(cid), name, value, stat)
274 if (stat < 1) deallocate(value)
275 else
276 nullify(value)
277 call storeerror(gt_enotvar, "GTVarGetAttrRP")
278 endif

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

Here is the call graph for this function: