46 use netcdf, only: nf90_max_vars
47 implicit none
48 type(GTHST_NMLINFO), intent(in):: gthstnml
49 character(TOKEN), pointer:: varnames_ary(:)
50 logical, intent(out), optional:: err
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68 type(GTHST_NMLINFO_ENTRY), pointer:: hptr =>null()
69 integer:: varnums, ary_size
70 character(TOKEN), allocatable:: varnames_ary_tmp1(:), varnames_ary_tmp2(:)
71 integer:: stat
72 character(STRING):: cause_c
73 character(*), parameter:: subname = 'HstNmlInfoNames'
74 continue
77 cause_c = ''
78
79 varnums = 0
80
81
82
83
84
85 if ( .not. gthstnml % initialized ) then
87 cause_c = 'GTHST_NMLINFO'
88 goto 999
89 end if
90
91
92
93
94
95 if ( associated(varnames_ary) ) deallocate(varnames_ary)
96 allocate( varnames_ary_tmp1(1:nf90_max_vars) )
97
98
99
100
101
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 )
114 end if
115
116 varnames_ary_tmp1(varnums) = adjustl( hptr % name )
117 end do
118
119 if ( varnums > 0 ) then
120 allocate( varnames_ary(1:varnums) )
121 varnames_ary(1:varnums) = varnames_ary_tmp1(1:varnums)
122 else
123 allocate( varnames_ary(1:1) )
124 varnames_ary = ''
125 end if
126
127
128
129
130
131999 continue
132 nullify( hptr )
133 call storeerror( stat, subname, err, cause_c )
subroutine, public storeerror(number, where, err, cause_c, cause_i)
integer, parameter, public dc_enotinit
-400 以下: dc ユーティリティのエラー
integer, parameter, public dc_noerr
エラー等を保持
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)
integer, parameter, public token
単語やキーワードを保持する文字型変数の種別型パラメタ
integer, parameter, public string
文字列を保持する 文字型変数の種別型パラメタ