5
6
7
8
13 use netcdf, only: nf90_max_name, nf90_noerr, nf90_char, nf90_inquire_attribute, nf90_get_att
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
29 if (stat /= nf90_noerr) goto 999
30
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
57999 continue
58 value = .false.
59 if (present(default)) value = default
Provides kind type parameter values.
integer, parameter, public string
Character length for string
integer function, public vtable_lookup(var, entry)