30 type(
gt_history),
intent(in),
target,
optional:: history
31 integer,
intent(in),
optional:: unit
37 character(*),
intent(in),
optional:: indent
41 logical,
intent(out),
optional:: err
62 character(STRING):: cause_c
65 character(STRING):: indent_str
67 character(STRING):: file, title, source, institution
68 character(STRING):: conventions, gt_version
69 character(TOKEN),
pointer:: dims(:) =>null()
70 integer,
pointer:: dimsizes(:) =>null()
71 character(STRING),
pointer:: longnames(:) =>null()
72 character(TOKEN),
pointer:: units(:) =>null()
73 character(TOKEN),
pointer:: xtypes(:) =>null()
75 real:: origin, interval, newest, oldest
76 character(*),
parameter:: subname =
'HistoryPutLine' 86 if (
present(unit) )
then 94 if (
present(indent) )
then 95 if ( len(indent) /= 0 )
then 96 indent_len = len(indent)
97 indent_str(1:indent_len) = indent
101 if (
present(history))
then 111 if ( hst % initialized )
then 113 & indent_str(1:indent_len) // &
114 &
'#<GT_HISTORY:: @initialized=%y', &
115 & l = (/hst % initialized/) )
119 & file = file, title = title, &
120 & source = source, institution = institution, &
121 & dims = dims, dimsizes = dimsizes, &
122 & longnames = longnames, &
123 & units = units, xtypes = xtypes, &
124 & conventions = conventions, &
125 & gt_version = gt_version )
128 & indent_str(1:indent_len) // &
129 &
' @file=%c @title=%c', &
130 & c1 = trim(file), c2 = trim(title) )
133 & indent_str(1:indent_len) // &
134 &
' @source=%c @institution=%c', &
135 & c1 = trim(source), c2 = trim(institution) )
139 & indent_str(1:indent_len) // &
140 &
' @dims=%c @dimsizes=%*d', &
141 & c1 = trim(
joinchar(dims,
',') ), &
142 & i = dimsizes, n = (/max/) )
143 deallocate( dims, dimsizes )
146 & indent_str(1:indent_len) // &
147 &
' @longnames=%c', &
148 & c1 = trim(
joinchar(longnames,
',') ) )
149 deallocate( longnames )
152 & indent_str(1:indent_len) // &
153 &
' @units=%c @xtypes=%c', &
154 & c1 = trim(
joinchar(units,
',') ), &
155 & c2 = trim(
joinchar(xtypes,
',') ) )
156 deallocate( units, xtypes )
159 & indent_str(1:indent_len) // &
160 &
' @conventions=%c @gt_version=%c', &
161 & c1 = trim(conventions), c2 = trim(gt_version) )
164 & indent_str(1:indent_len) // &
165 &
' @unlimited_index=%d', &
166 & i = (/hst % unlimited_index/) )
168 max =
size( hst % dim_value_written )
170 & indent_str(1:indent_len) // &
171 &
' @dim_value_written=%*y', &
172 & l = hst % dim_value_written, n = (/max/) )
174 origin = hst % origin
175 interval = hst % interval
176 newest = hst % newest
177 oldest = hst % oldest
185 & indent_str(1:indent_len) // &
186 &
' @origin=%r @interval=%r @newest=%r @oldest=%r', &
187 & r = (/origin, interval, newest, oldest/) )
189 if (
associated( hst % growable_indices ) )
then 190 max =
size( hst % growable_indices )
192 & indent_str(1:indent_len) // &
193 &
' @growable_indices=%*d', &
194 & i = hst % growable_indices, n = (/max/) )
197 & indent_str(1:indent_len) // &
198 &
' @growable_indices=<null>' )
201 if (
associated( hst % count ) )
then 202 max =
size( hst % count )
204 & indent_str(1:indent_len) // &
206 & i = hst % count, n = (/max/) )
209 & indent_str(1:indent_len) // &
213 if (
associated( hst % dimvars ) )
then 215 & indent_str(1:indent_len) // &
217 max =
size( hst % dimvars )
219 call putline( hst % dimvars(i), out_unit, &
220 & indent_str(1:indent_len) //
' ', err )
224 & indent_str(1:indent_len) // &
225 &
' @dimvars=<null>' )
228 if (
associated( hst % vars ) )
then 230 & indent_str(1:indent_len) // &
232 max =
size( hst % vars )
234 call putline( hst % vars(i), out_unit, &
235 & indent_str(1:indent_len) //
' ', err )
239 & indent_str(1:indent_len) // &
243 if (
associated( hst % var_avr_count ) )
then 244 max =
size( hst % var_avr_count )
246 & indent_str(1:indent_len) // &
247 &
' @var_avr_count=%*d', &
248 & i = hst % var_avr_count, n = (/max/) )
251 & indent_str(1:indent_len) // &
252 &
' @var_avr_count=<null>' )
255 if (
associated( hst % var_avr_firstput ) )
then 256 max =
size( hst % var_avr_firstput )
258 & indent_str(1:indent_len) // &
259 &
' @var_avr_firstput=%*b', &
260 & l = hst % var_avr_firstput, n = (/max/) )
263 & indent_str(1:indent_len) // &
264 &
' @var_avr_firstput=<null>' )
267 if (
associated( hst % var_avr_coefsum ) )
then 268 max =
size( hst % var_avr_coefsum )
270 & indent_str(1:indent_len) // &
271 &
' @var_avr_coefsum=%*f', &
272 & d = hst % var_avr_coefsum, n = (/max/) )
275 & indent_str(1:indent_len) // &
276 &
' @var_avr_coefsum=<null>' )
280 & indent_str(1:indent_len) // &
281 &
' @time_bnds=%*f, @time_bnds_output_count=%d', &
282 & i = (/hst % time_bnds_output_count/), &
283 & d = hst % time_bnds, &
284 & n = (/
size(hst % time_bnds) /) )
286 if (
associated( hst % var_avr_data ) )
then 288 & indent_str(1:indent_len) // &
289 &
' @var_avr_data=' )
290 max =
size( hst % var_avr_data )
293 & indent_str(1:indent_len) // &
294 &
' #<GT_HISTORY_AVRDATA:: @length=%d', &
295 & i = (/hst % var_avr_data(i) % length/) )
296 call putline( hst % var_avr_data(i) % a_DataAvr, unit = out_unit, &
297 & lbounds = lbound(hst % var_avr_data(i) % a_DataAvr), &
298 & ubounds = ubound(hst % var_avr_data(i) % a_DataAvr), &
299 & indent = indent_str(1:indent_len) // &
304 & indent_str(1:indent_len) // &
305 &
' @var_avr_data=<null>' )
309 & indent_str(1:indent_len) // &
313 & indent_str(1:indent_len) // &
314 &
'#<GT_HISTORY:: @initialized=%y>', &
315 & l = (/hst % initialized/) )
323 call storeerror( stat, subname, err, cause_c )
type(gt_history), target, save, public default
integer, parameter, public dc_enotinit
integer, parameter, public token
単語やキーワードを保持する文字型変数の種別型パラメタ
subroutine, public storeerror(number, where, err, cause_c, cause_i)
integer, parameter, public dc_noerr
character(string) function, public joinchar(carray, expr)
integer, parameter, public dp
倍精度実数型変数
subroutine, public beginsub(name, fmt, i, r, d, L, n, c1, c2, c3, ca, version)
integer, parameter, public stdout
標準出力の装置番号
subroutine historyputline(history, unit, indent, err)
subroutine, public endsub(name, fmt, i, r, d, L, n, c1, c2, c3, ca)
integer, parameter, public string
文字列を保持する 文字型変数の種別型パラメタ