27 use dc_trace
, only: beginsub, endsub
28 use dc_string
, only: putline, printf, split, strinclude, stoa, joinchar
31 use netcdf
, only: nf90_max_vars
34 character(TOKEN),
pointer:: varnames_ary(:)
35 logical,
intent(out),
optional:: err
54 integer:: varnums, ary_size
55 character(TOKEN),
allocatable:: varnames_ary_tmp1(:), varnames_ary_tmp2(:)
57 character(STRING):: cause_c
58 character(*),
parameter:: subname =
'HstNmlInfoNames' 60 call beginsub( subname )
70 if ( .not. gthstnml % initialized )
then 72 cause_c =
'GTHST_NMLINFO' 80 if (
associated(varnames_ary) )
deallocate(varnames_ary)
81 allocate( varnames_ary_tmp1(1:nf90_max_vars) )
87 hptr => gthstnml % gthstnml_list
88 do while (
associated( hptr % next ) )
89 call listnext( gthstnml_list = hptr )
91 ary_size =
size( varnames_ary_tmp1 )
92 if ( varnums > ary_size )
then 93 allocate( varnames_ary_tmp2(1:ary_size) )
94 varnames_ary_tmp2(1:ary_size) = varnames_ary_tmp1(1:ary_size)
95 deallocate( varnames_ary_tmp1 )
96 allocate( varnames_ary_tmp1(1:varnums*2) )
97 varnames_ary_tmp1(1:ary_size) = varnames_ary_tmp2(1:ary_size)
98 deallocate( varnames_ary_tmp2 )
101 varnames_ary_tmp1(varnums) = adjustl( hptr % name )
104 if ( varnums > 0 )
then 105 allocate( varnames_ary(1:varnums) )
106 varnames_ary(1:varnums) = varnames_ary_tmp1(1:varnums)
108 allocate( varnames_ary(1:1) )
118 call storeerror( stat, subname, err, cause_c )
119 call endsub( subname )
integer, parameter, public dc_enotinit
integer, parameter, public token
Character length for word, token.
subroutine, public storeerror(number, where, err, cause_c, cause_i)
integer, parameter, public dc_noerr
integer, parameter, public dp
Double Precision Real number.
integer, parameter, public stdout
Unit number for Standard OUTPUT.
Provides kind type parameter values.
integer, parameter, public string
Character length for string.