32 & nf90_einval, nf90_enotvar
34 use dc_trace,
only: beginsub, endsub, dbgmessage
37 integer,
intent(in),
optional:: dimord
38 logical,
intent(out),
optional:: err
39 integer,
intent(out),
optional:: stat
41 integer:: mystat, vid, id, nd, idim_lo, idim_hi, ilast
43 call beginsub(
'gtvarslicenext')
44 if (
present(dimord))
call dbgmessage(
'dimord=%d', i=(/dimord/))
52 call dbgmessage(
'dimension map not associated')
59 if (
present(dimord))
then
60 if (dimord < 0 .or. dimord <=
size(map))
then
61 call dbgmessage(
'dimord=%d is out of 1..%d', i=(/dimord,
size(map)/))
71 call dbgmessage(
'idim scan range=(%d:%d)', i=(/idim_lo, idim_hi/))
74 do, id = idim_lo, idim_hi
75 ilast = map(id)%start + (map(id)%count * 2 - 1) * map(id)%stride
76 call dbgmessage(
'last_index=%d allcount=%d', &
77 & i=(/ilast, map(id)%allcount/))
78 if (ilast >= 1 .and. ilast <= map(id)%allcount)
then
79 map(id)%start = map(id)%start + map(id)%count * map(id)%stride
91 if (
present(stat))
then
93 if (
present(err)) err = (mystat /=
dc_noerr)
97 call endsub(
'gtvarslicenext',
'stat=%d', i=(/mystat/))