33   integer function vtable_add(var, entry) 
result(result)
    40     if (.not. 
allocated(
gdnctab)) 
then    42       if (result /= 0) 
goto 999
    53       if (
gdnctab(i)%fileid == entry%fileid &
    54         & .and. 
gdnctab(i)%varid == entry%varid &
    55         & .and. 
gdnctab(i)%dimid == entry%dimid) 
then    58         call dbgmessage(
'gtdata_netcdf_internal.add: found %d', i=(/i/))
    66       if (
gdnctab(i)%fileid == 0) 
then    71     if (var%id == -1) 
then    74       allocate(tmp_table(n), stat=result)
    75       if (result /= 0) 
goto 999
    77       deallocate(
gdnctab, stat=result)
    78       if (result /= 0) 
goto 999
    79       allocate(
gdnctab(n * 2), stat=result)
    80       if (result /= 0) 
goto 999
    82       deallocate(tmp_table, stat=result)
    83       if (result /= 0) 
goto 999
    94     gdnctab(var%id)%fileid = entry%fileid
    95     gdnctab(var%id)%varid = entry%varid
    96     gdnctab(var%id)%dimid = entry%dimid
   100     if (result /= nf90_noerr) 
goto 999
   103     call dbgmessage(
'gtdata_netcdf_internal.add: added %d', i=(/var%id/))
   117       integer, 
intent(out):: stat
   119       if (ent%varid > 0) 
then   120         stat = nf90_inquire_variable(ent%fileid, ent%varid, ndims = ndims)
   121         if (stat /= nf90_noerr) 
return   122         if ((ent%dimid > 0) .and. (ndims /= 1)) 
goto 100
   128         allocate(ent%dimids(ndims), stat=stat)
   133         stat = nf90_inquire_variable(ent%fileid, ent%varid, dimids = ent%dimids)
   134         if (stat /= nf90_noerr) 
return   135         if ((ent%dimid > 0) .and. (ent%dimids(1) /= ent%dimid)) 
then   136           deallocate(ent%dimids)
   140         allocate(ent%dimids(1), stat=stat)
   145         ent%dimids(1) = ent%dimid
   152       allocate(ent%dimids(1))
   153       ent%dimids(1) = ent%dimid
   162     if (.not. 
allocated(
gdnctab)) 
goto 999
   163     if (var%id <= 0 .or. var%id > 
size(
gdnctab)) 
goto 999
   164     if (
gdnctab(var%id)%fileid == 0) 
goto 999
   165     result = 
gdnctab(var%id)%fileid
   170     if (
associated(
gdnctab(var%id)%dimids)) &
   171       & 
deallocate(
gdnctab(var%id)%dimids)
   172     call dbgmessage(
'gtdata_netcdf_internal.delete: delete %d', i=(/var%id/))
   176     result = nf90_enotvar
   182     if (.not. 
allocated(
gdnctab)) 
goto 999
   183     if (var%id <= 0 .or. var%id > 
size(
gdnctab)) 
goto 999
   184     if (
gdnctab(var%id)%fileid == 0) 
goto 999
   190     nullify(entry%dimids)
   195     result = nf90_enotvar
   200     integer, 
intent(in):: attrid
   202     if (.not. 
allocated(
gdnctab)) 
goto 999
   203     if (var%id <= 0 .or. var%id > 
size(
gdnctab)) 
goto 999
   204     if (
gdnctab(var%id)%fileid == 0) 
goto 999
   205     gdnctab(var%id)%attrid = attrid
   210     result = nf90_enotvar
 
integer function, public vtable_lookup(var, entry)
 
integer function, public vtable_delete(var)
 
integer function, public vtable_add(var, entry)
 
subroutine, public dbgmessage(fmt, i, r, d, L, n, c1, c2, c3, ca)
 
integer, parameter gdnctab_init_size
 
integer function, public vtable_set_attrid(var, attrid)
 
subroutine internal_build_dimids(ent, stat)
 
type(gd_nc_variable_entry), dimension(:), allocatable, target, save gdnctab