50 use netcdf,
only: nf90_max_name, nf90_noerr, nf90_char, nf90_inquire_attribute, nf90_get_att
55 character(len = *),
intent(in):: name
56 logical,
intent(out):: value
57 logical,
intent(in),
optional:: default
59 character(len = STRING):: cbuffer
60 character(len = 7):: c_default
61 character(len = NF90_MAX_NAME):: aname
62 real,
allocatable:: rbuf(:)
63 integer:: stat, xtype, attrlen
66 if (stat /= nf90_noerr)
goto 999
69 & varid=varid, nf_attrname=aname)
70 stat = nf90_inquire_attribute(ent%fileid, varid, aname, xtype=xtype, len=attrlen)
71 if (stat /= nf90_noerr)
goto 999
72 if (xtype == nf90_char)
then
74 if (
present(default))
then
75 if (default) c_default =
"1"
77 call get_attr(var, name, cbuffer, c_default, stat)
80 case(
"",
"0",
"0.0",
"0.",
".0",
"FALSE",
"false",
".FALSE.", &
81 &
".false.",
"F",
"f",
"0.0D0",
"0.0d0")
87 allocate(rbuf(attrlen))
88 stat = nf90_get_att(ent%fileid, varid, aname, rbuf)
89 if (stat /= nf90_noerr)
goto 999
90 value = (abs(rbuf(1)) > tiny(0.0))
96 if (
present(default))
value = default