gdncvarattrtrue.f90 File Reference

Go to the source code of this file.

Functions/Subroutines

subroutine gdncvargetattrlogical (var, name, value, default)
 

Function/Subroutine Documentation

◆ gdncvargetattrlogical()

subroutine gdncvargetattrlogical ( type(gd_nc_variable), intent(in)  var,
character(len = *), intent(in)  name,
logical, intent(out)  value,
logical, intent(in), optional  default 
)

Definition at line 5 of file gdncvarattrtrue.f90.

References dc_types::string, and gtdata_netcdf_internal::vtable_lookup().

5  ! 真偽値の判定基準 ... 偽の例を示す。例を lowercase にしたもの以外の値は全部真。
6  ! 数値 0, 0.0
7  ! 文字列 "0", "0.0", ".0", "0.", "0.0D0", "FALSE", ".FALSE.", "F"
8 
12  use dc_types, only: string
13  use netcdf, only: nf90_max_name, nf90_noerr, nf90_char, nf90_inquire_attribute, nf90_get_att
14  use dc_error
15  use dc_string
16  implicit none
17  type(gd_nc_variable), intent(in):: var
18  character(len = *), intent(in):: name
19  logical, intent(out):: value
20  logical, intent(in), optional:: default
21  type(gd_nc_variable_entry):: ent
22  character(len = STRING):: cbuffer
23  character(len = 7):: c_default
24  character(len = NF90_MAX_NAME):: aname
25  real, allocatable:: rbuf(:)
26  integer:: stat, xtype, attrlen
27  integer:: varid
28  stat = vtable_lookup(var, ent)
29  if (stat /= nf90_noerr) goto 999
30  ! 大域属性サポート
31  call inquireplus(var, name, &
32  & varid=varid, nf_attrname=aname)
33  stat = nf90_inquire_attribute(ent%fileid, varid, aname, xtype=xtype, len=attrlen)
34  if (stat /= nf90_noerr) goto 999
35  if (xtype == nf90_char) then
36  c_default = "0"
37  if (present(default)) then
38  if (default) c_default = "1"
39  endif
40  call get_attr(var, name, cbuffer, c_default, stat)
41  ! もうちょっとましな方法があるべきだが。
42  select case(cbuffer)
43  case("", "0", "0.0", "0.", ".0", "FALSE", "false", ".FALSE.", &
44  & ".false.", "F", "f", "0.0D0", "0.0d0")
45  value = .false.
46  case default
47  value = .true.
48  end select
49  else
50  allocate(rbuf(attrlen))
51  stat = nf90_get_att(ent%fileid, varid, aname, rbuf)
52  if (stat /= nf90_noerr) goto 999
53  value = (abs(rbuf(1)) > tiny(0.0))
54  endif
55  return
56 
57 999 continue
58  value = .false.
59  if (present(default)) value = default
integer function, public vtable_lookup(var, entry)
文字型変数の操作.
Definition: dc_string.f90:24
種別型パラメタを提供します。
Definition: dc_types.f90:49
integer, parameter, public string
文字列を保持する 文字型変数の種別型パラメタ
Definition: dc_types.f90:118
Here is the call graph for this function: