74 & nf90_inquire_attribute, &
82 character(len = *),
intent(in) :: name
83 integer,
intent(out):: stat
84 integer,
intent(out)::
value(:)
85 integer,
intent(in),
optional:: default
86 integer,
allocatable:: rbuffer(:)
87 character(STRING) :: cbuffer
88 character(STRING),
pointer :: lbuffer(:)
89 integer :: attrlen, xtype, i, xferend, iname, varid
93 if (stat /= nf90_noerr)
then
94 if (
present(default)) value(:) = default
105 stat = nf90_inquire_attribute(ent%fileid, varid, &
106 name = name(iname:), xtype = xtype, len = attrlen)
107 if (stat /= nf90_noerr)
then
108 if (
present(default)) value(:) = default
112 if (xtype == nf90_char)
then
113 call get_attr(var, name, cbuffer,
"", stat)
114 if (stat /= 0)
return
115 call split(cbuffer, lbuffer,
", ")
116 attrlen =
size(lbuffer)
119 if (
size(
value) == 0)
then
120 if (xtype == nf90_char)
deallocate(lbuffer)
125 xferend = min(
size(
value), attrlen)
126 if (
present(default)) value(xferend+1: ) = default
127 if (xtype == nf90_char)
then
129 value(i) =
stoi(lbuffer(i))
135 allocate(rbuffer(attrlen), stat=stat)
140 stat = nf90_get_att(ent%fileid, varid, name(iname:), rbuffer)
141 if (stat == nf90_noerr)
then
142 value(1:xferend) = rbuffer(1:xferend)
176 & nf90_inquire_attribute, &
184 character(len = *),
intent(in) :: name
185 integer,
intent(out):: stat
186 real(SP),
intent(out)::
value(:)
187 real(SP),
intent(in),
optional:: default
188 real(SP),
allocatable:: rbuffer(:)
189 character(STRING) :: cbuffer
190 character(STRING),
pointer :: lbuffer(:)
191 integer :: attrlen, xtype, i, xferend, iname, varid
195 if (stat /= nf90_noerr)
then
196 if (
present(default)) value(:) = default
207 stat = nf90_inquire_attribute(ent%fileid, varid, &
208 name = name(iname:), xtype = xtype, len = attrlen)
209 if (stat /= nf90_noerr)
then
210 if (
present(default)) value(:) = default
214 if (xtype == nf90_char)
then
215 call get_attr(var, name, cbuffer,
"", stat)
216 if (stat /= 0)
return
217 call split(cbuffer, lbuffer,
", ")
218 attrlen =
size(lbuffer)
221 if (
size(
value) == 0)
then
222 if (xtype == nf90_char)
deallocate(lbuffer)
227 xferend = min(
size(
value), attrlen)
228 if (
present(default)) value(xferend+1: ) = default
229 if (xtype == nf90_char)
then
231 value(i) = real(
stod(lbuffer(i)), kind=kind(value(i)))
237 allocate(rbuffer(attrlen), stat=stat)
242 stat = nf90_get_att(ent%fileid, varid, name(iname:), rbuffer)
243 if (stat == nf90_noerr)
then
244 value(1:xferend) = rbuffer(1:xferend)
278 & nf90_inquire_attribute, &
286 character(len = *),
intent(in) :: name
287 integer,
intent(out):: stat
288 real(DP),
intent(out)::
value(:)
289 real(DP),
intent(in),
optional:: default
290 real(DP),
allocatable:: rbuffer(:)
291 character(STRING) :: cbuffer
292 character(STRING),
pointer :: lbuffer(:)
293 integer :: attrlen, xtype, i, xferend, iname, varid
297 if (stat /= nf90_noerr)
then
298 if (
present(default)) value(:) = default
309 stat = nf90_inquire_attribute(ent%fileid, varid, &
310 name = name(iname:), xtype = xtype, len = attrlen)
311 if (stat /= nf90_noerr)
then
312 if (
present(default)) value(:) = default
316 if (xtype == nf90_char)
then
317 call get_attr(var, name, cbuffer,
"", stat)
318 if (stat /= 0)
return
319 call split(cbuffer, lbuffer,
", ")
320 attrlen =
size(lbuffer)
323 if (
size(
value) == 0)
then
324 if (xtype == nf90_char)
deallocate(lbuffer)
329 xferend = min(
size(
value), attrlen)
330 if (
present(default)) value(xferend+1: ) = default
331 if (xtype == nf90_char)
then
333 value(i) =
stod(lbuffer(i))
339 allocate(rbuffer(attrlen), stat=stat)
344 stat = nf90_get_att(ent%fileid, varid, name(iname:), rbuffer)
345 if (stat == nf90_noerr)
then
346 value(1:xferend) = rbuffer(1:xferend)