67 integer,
intent(in):: vid
69 if (.not.
allocated(
table))
return 70 if (vid <= 0 .or. vid >
size(
table))
return 71 select case(
table(vid)%class)
77 write(
class, fmt=
"(i10)")
table(vid)%class
79 call dbgmessage(
'[vartable %d: class=%c cid=%d ref=%d]', &
80 & i=(/vid,
table(vid)%cid,
table(vid)%refcount/), &
82 select case(
table(vid)%class)
92 vtb_entry(:)%refcount = 0
97 integer,
intent(out):: vid
98 integer,
intent(in)::
class, cid
103 if (.not.
allocated(
table))
then 108 do, n = 1,
size(
table)
109 if (
table(n)%class ==
class .and. table(n)%cid == cid)
then 110 table(n)%refcount = table(n)%refcount + 1
111 call dbgmessage(
'gtdata_vartable.add(class=%d cid=%d) found (ref=%d)', &
112 & i=(/table(n)%class, table(n)%cid, table(n)%refcount/))
120 allocate(tmp_table(n))
121 tmp_table(:) = table(:)
123 allocate(table(n * 2))
124 table(1:n) = tmp_table(1:n)
125 deallocate(tmp_table)
128 do, n = 1,
size(table)
130 table(n)%class = class
132 table(n)%refcount = 1
141 integer,
intent(in):: vid
142 logical,
intent(out):: action
143 logical,
intent(out),
optional:: err
144 if (.not.
allocated(
table))
goto 999
145 if (vid <= 0 .or. vid >
size(
table))
goto 999
148 table(vid)%refcount = max(
table(vid)%refcount - 1, 0)
149 action = (
table(vid)%refcount == 0)
150 if (
present(err)) err = .false.
154 if (
present(err)) err = .true.
159 integer,
intent(in):: vid
160 integer,
intent(out),
optional::
class, cid
161 if (.not.
allocated(
table))
goto 999
162 if (vid <= 0 .or. vid >
size(
table))
goto 999
165 if (
present(class))
class =
table(vid)%class
166 if (
present(cid)) cid =
table(vid)%cid
174 integer,
intent(in):: vid
175 logical,
intent(out),
optional:: err
176 if (.not.
allocated(
table))
goto 999
177 if (vid <= 0 .or. vid >
size(
table))
goto 999
181 if (
present(err)) err = .false.
184 if (
present(err)) err = .true.
191 integer,
intent(in):: vid
192 integer,
intent(out):: dimlo, dimhi
202 call storeerror(nf90_einval,
'gtdata::dimrange')
206 integer function ndims(vid)
result(result)
210 integer,
intent(in):: vid
227 integer,
intent(in):: vid
228 logical,
intent(out):: result
subroutine, public vartabledelete(vid, action, err)
integer, parameter, public classes_max
integer, parameter, private table_ini_size
subroutine, public vartable_dump(vid)
type(gd_nc_variable_search), save, public gdnc_search
integer, parameter, public vtb_class_netcdf
integer, parameter, public vid_invalid
subroutine, private entry_cleanup(vtb_entry)
integer, parameter, public gt_efake
subroutine, public storeerror(number, where, err, cause_c, cause_i)
integer function, public ndims(vid)
subroutine dimrange_direct(vid, dimlo, dimhi)
type(var_table_entry), dimension(:), allocatable, save, private table
subroutine, public vartablemore(vid, err)
subroutine, public dbgmessage(fmt, i, r, d, L, n, c1, c2, c3, ca)
integer, parameter, public vtb_class_unused
subroutine, public vartablelookup(vid, class, cid)
subroutine, public vartableadd(vid, class, cid)
integer, parameter, public vtb_class_memory
subroutine, public query_growable(vid, result)
integer, parameter, public string
文字列を保持する 文字型変数の種別型パラメタ