11
12
13
14
15
16
17
18
19
20
21
22
23
24
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
32 implicit none
33 type(GTHST_NMLINFO), intent(in):: gthstnml
34 character(TOKEN), pointer:: varnames_ary(:)
35 logical, intent(out), optional:: err
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53 type(GTHST_NMLINFO_ENTRY), pointer:: hptr =>null()
54 integer:: varnums, ary_size
55 character(TOKEN), allocatable:: varnames_ary_tmp1(:), varnames_ary_tmp2(:)
56 integer:: stat
57 character(STRING):: cause_c
58 character(*), parameter:: subname = 'HstNmlInfoNames'
59 continue
60 call beginsub( subname )
62 cause_c = ''
63
64 varnums = 0
65
66
67
68
69
70 if ( .not. gthstnml % initialized ) then
72 cause_c = 'GTHST_NMLINFO'
73 goto 999
74 end if
75
76
77
78
79
80 if ( associated(varnames_ary) ) deallocate(varnames_ary)
81 allocate( varnames_ary_tmp1(1:nf90_max_vars) )
82
83
84
85
86
87 hptr => gthstnml % gthstnml_list
88 do while ( associated( hptr % next ) )
89 call listnext( gthstnml_list = hptr )
90 varnums = varnums + 1
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 )
99 end if
100
101 varnames_ary_tmp1(varnums) = adjustl( hptr % name )
102 end do
103
104 if ( varnums > 0 ) then
105 allocate( varnames_ary(1:varnums) )
106 varnames_ary(1:varnums) = varnames_ary_tmp1(1:varnums)
107 else
108 allocate( varnames_ary(1:1) )
109 varnames_ary = ''
110 end if
111
112
113
114
115
116999 continue
117 nullify( hptr )
118 call storeerror( stat, subname, err, cause_c )
119 call endsub( subname )
subroutine, public storeerror(number, where, err, cause_c, cause_i)
integer, parameter, public dc_enotinit
integer, parameter, public dc_noerr
integer, parameter, public token
単語やキーワードを保持する文字型変数の種別型パラメタ
integer, parameter, public string
文字列を保持する 文字型変数の種別型パラメタ
integer, parameter, public stdout
標準出力の装置番号
integer, parameter, public dp
倍精度実数型変数