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)
subroutine gdncattrgetreal(var, name, value, stat, default)
subroutine gdncattrgetdouble(var, name, value, stat, default)
subroutine gdncattrgetint(var, name, value, stat, default)
Handling character types.
Provides kind type parameter values.
integer, parameter, public string
Character length for string
integer, parameter, public dp
Double Precision Real number
integer, parameter, public sp
Single Precision Real number.
Variable URL string parser.
character, parameter, public gt_plus
integer function, public vtable_lookup(var, entry)