46 use netcdf,
only: nf90_max_vars
49 character(TOKEN),
pointer:: varnames_ary(:)
50 logical,
intent(out),
optional:: err
69 integer:: varnums, ary_size
70 character(TOKEN),
allocatable:: varnames_ary_tmp1(:), varnames_ary_tmp2(:)
72 character(STRING):: cause_c
73 character(*),
parameter:: subname =
'HstNmlInfoNames'
85 if ( .not. gthstnml % initialized )
then
87 cause_c =
'GTHST_NMLINFO'
95 if (
associated(varnames_ary) )
deallocate(varnames_ary)
96 allocate( varnames_ary_tmp1(1:nf90_max_vars) )
102 hptr => gthstnml % gthstnml_list
103 do while (
associated( hptr % next ) )
104 call listnext( gthstnml_list = hptr )
105 varnums = varnums + 1
106 ary_size =
size( varnames_ary_tmp1 )
107 if ( varnums > ary_size )
then
108 allocate( varnames_ary_tmp2(1:ary_size) )
109 varnames_ary_tmp2(1:ary_size) = varnames_ary_tmp1(1:ary_size)
110 deallocate( varnames_ary_tmp1 )
111 allocate( varnames_ary_tmp1(1:varnums*2) )
112 varnames_ary_tmp1(1:ary_size) = varnames_ary_tmp2(1:ary_size)
113 deallocate( varnames_ary_tmp2 )
116 varnames_ary_tmp1(varnums) = adjustl( hptr % name )
119 if ( varnums > 0 )
then
120 allocate( varnames_ary(1:varnums) )
121 varnames_ary(1:varnums) = varnames_ary_tmp1(1:varnums)
123 allocate( varnames_ary(1:1) )
133 call storeerror( stat, subname, err, cause_c )
subroutine hstnmlinfogetnames(gthstnml, varnames_ary, err)
subroutine, public storeerror(number, where, err, cause_c, cause_i)
integer, parameter, public dc_enotinit
-400 or less: DC utilities errors
integer, parameter, public dc_noerr
Error storage variables
subroutine, public beginsub(name, fmt, i, r, d, l, n, c1, c2, c3, ca, version)
subroutine, public endsub(name, fmt, i, r, d, l, n, c1, c2, c3, ca)
Provides kind type parameter values.
integer, parameter, public token
Character length for word, token
integer, parameter, public string
Character length for string