65 integer,
intent(in):: start(:)
66 integer,
intent(in):: cnt(:)
67 integer,
intent(in):: stride(:)
68 integer,
intent(in):: imap(:)
73 integer,
intent(in):: siz
74 real(SP),
intent(out):: val(siz)
75 integer,
intent(out):: iostat
78 integer,
allocatable:: istart(:), istride(:), iimap(:)
81 if (iostat /= nf90_noerr)
goto 999
84 if (
associated(ent%dimids)) nd =
size(ent%dimids)
85 if (min(
size(start),
size(cnt),
size(stride),
size(imap)) < nd)
then
90 iostat = nf90_get_var(ent%fileid, ent%varid, val(1), start)
94 allocate(istart(nd), istride(nd), iimap(nd))
95 istart(1:nd) = start(1:nd)
96 istride(1:nd) = stride(1:nd)
97 iimap(1:nd) = imap(1:nd)
99 iostat = nf90_get_var(ent%fileid, ent%varid, val, istart, cnt, istride, iimap)
100 if (iostat == nf90_eindefine)
then
101 iostat = nf90_enddef(ent%fileid)
102 if (iostat /= nf90_noerr)
return
103 iostat = nf90_get_var(ent%fileid, ent%varid, val, istart, cnt, istride, iimap)
104 if (iostat /= nf90_noerr)
return
105 iostat = nf90_redef(ent%fileid)
106 if (iostat /= nf90_noerr)
return
108 deallocate(istart, istride, iimap)
148 integer,
intent(in):: start(:)
149 integer,
intent(in):: cnt(:)
150 integer,
intent(in):: stride(:)
151 integer,
intent(in):: imap(:)
156 integer,
intent(in):: siz
157 real(DP),
intent(out):: val(siz)
158 integer,
intent(out):: iostat
161 integer,
allocatable:: istart(:), istride(:), iimap(:)
164 if (iostat /= nf90_noerr)
goto 999
167 if (
associated(ent%dimids)) nd =
size(ent%dimids)
168 if (min(
size(start),
size(cnt),
size(stride),
size(imap)) < nd)
then
173 iostat = nf90_get_var(ent%fileid, ent%varid, val(1), start)
177 allocate(istart(nd), istride(nd), iimap(nd))
178 istart(1:nd) = start(1:nd)
179 istride(1:nd) = stride(1:nd)
180 iimap(1:nd) = imap(1:nd)
182 iostat = nf90_get_var(ent%fileid, ent%varid, val, istart, cnt, istride, iimap)
183 if (iostat == nf90_eindefine)
then
184 iostat = nf90_enddef(ent%fileid)
185 if (iostat /= nf90_noerr)
return
186 iostat = nf90_get_var(ent%fileid, ent%varid, val, istart, cnt, istride, iimap)
187 if (iostat /= nf90_noerr)
return
188 iostat = nf90_redef(ent%fileid)
189 if (iostat /= nf90_noerr)
return
191 deallocate(istart, istride, iimap)
230 integer,
intent(in):: start(:)
231 integer,
intent(in):: cnt(:)
232 integer,
intent(in):: stride(:)
233 integer,
intent(in):: imap(:)
238 integer,
intent(in):: siz
239 integer,
intent(out):: val(siz)
240 integer,
intent(out):: iostat
243 integer,
allocatable:: istart(:), istride(:), iimap(:)
246 if (iostat /= nf90_noerr)
goto 999
249 if (
associated(ent%dimids)) nd =
size(ent%dimids)
250 if (min(
size(start),
size(cnt),
size(stride),
size(imap)) < nd)
then
255 iostat = nf90_get_var(ent%fileid, ent%varid, val(1), start)
259 allocate(istart(nd), istride(nd), iimap(nd))
260 istart(1:nd) = start(1:nd)
261 istride(1:nd) = stride(1:nd)
262 iimap(1:nd) = imap(1:nd)
264 iostat = nf90_get_var(ent%fileid, ent%varid, val, istart, cnt, istride, iimap)
265 if (iostat == nf90_eindefine)
then
266 iostat = nf90_enddef(ent%fileid)
267 if (iostat /= nf90_noerr)
return
268 iostat = nf90_get_var(ent%fileid, ent%varid, val, istart, cnt, istride, iimap)
269 if (iostat /= nf90_noerr)
return
270 iostat = nf90_redef(ent%fileid)
271 if (iostat /= nf90_noerr)
return
273 deallocate(istart, istride, iimap)
subroutine gdncvargetreal(var, start, cnt, stride, imap, siz, val, iostat)
subroutine gdncvargetint(var, start, cnt, stride, imap, siz, val, iostat)
subroutine gdncvargetdouble(var, start, cnt, stride, imap, siz, val, iostat)