historyget.f90
Go to the documentation of this file.
1 ! -*- coding: utf-8; mode: f90 -*-
2 !-------------------------------------------------------------------------------------
3 ! Copyright (c) 2000-2016 Gtool Development Group. All rights reserved.
4 !-------------------------------------------------------------------------------------
5 ! ** Important**
6 !
7 ! This file is generated from historyget.erb by ERB included Ruby 2.3.3.
8 ! Please do not edit this file directly. @see "historyget.erb"
9 !-------------------------------------------------------------------------------------
10 !
11 !
12 != gtool4 netCDF データの入力
13 != Input gtool4 netCDF data
14 !
15 ! Authors:: Yasuhiro MORIKAWA
16 ! Version:: $Id: historyget.rb2f90,v 1.3 2009-07-04 05:04:42 morikawa Exp $
17 ! Tag Name:: $Name: $
18 ! Copyright:: Copyright (C) GFD Dennou Club, 2006. All rights reserved.
19 ! License:: See COPYRIGHT[link:../../../COPYRIGHT]
20 !
21 ! 以下のサブルーチン, 関数は gtool_history から gtool_history_generic#HistoryGet
22 ! もしくは gtool_history_generic#HistoryGetPointer として提供されます.
23 !
24 ! Following subroutines and functions are provided as
25 ! gtool_history_generic#HistoryGet or gtool_history_generic#HistoryGetPointer from
26 ! gtool_history.
27 !
28  !
29  ! <b>Note that Japanese and English are described in parallel.</b>
30  !
31  !
32  ! netCDF データを入力します. gtool4 netCDF 規約に基づくデータを想定
33  ! していますが, 大抵の netCDF データの入力は可能であると期待されます.
34  !
35  ! デフォルトでは, ファイル内の最新データ, すなわちデータを
36  ! 時刻最大で切り出したものを入力します. 別の時刻または
37  ! 別の次元で切り出したデータを
38  ! 入力したい場合には, 下記の *time* オプションもしくは
39  ! *range* オプションを利用してください.
40  !
41  ! *file* にファイル名を, *varname* に変数名を与えます.
42  ! *array* にはファイルから入力されたデータが返ります.
43  ! ポインタの配列へデータを入力を行う場合は,
44  ! HistoryGetPointer を利用してください.
45  !
46  ! ある時刻のデータを明示したい場合には, その時刻を
47  ! *time* に与えます.
48  ! 整数型, 単精度実数型, 倍精度実数型の数値を与えることが可能です.
49  !
50  ! *range* には gtool4 のコンマ記法
51  ! ({gtool4 netCDF 規約}[link:../xref.htm#label-6] の「5.4 コンマ記法」参照)
52  ! を与えることで, 任意の次元で入力データを切り出すことが可能です.
53  ! *range* に空文字を与えた場合は切り出しを行いません.
54  !
55  ! *HistoryGet* は複数のサブルーチンの総称名です. *array* には
56  ! 0 〜 7 次元の整数型, 単精度実数型,
57  ! 倍精度実数型の配列を与えることが可能です.
58  !
59  ! デフォルトでは, データの入力時にどのファイルのどの変数が
60  ! どの次元で切り出されて入力されたのかを表示します.
61  ! メッセージ出力が不要な場合は *quiet* に .true. を与えてください.
62  !
63  ! Input netCDF data. NetCDF data with gtool4 conventions is assumed,
64  ! but most netCDF data is expected to be input.
65  !
66  ! Give filename to *file*, variable name to *varname*.
67  ! Input data is returned to *array*.
68  ! If you want to use pointer array, use "HistoryGetPointer".
69  !
70  ! By default, recent data, that is to say, data clipped with
71  ! maximum time is input. In order to input data clipped with
72  ! other time or other dimension,
73  ! use *time* option or *range* option as follows.
74  !
75  ! In order to get data at certain time, specify the time to *time*.
76  ! Type is integer or single precision real or double precision.
77  !
78  ! Give gtool4 comma-graphy
79  ! (See "5.4 gtool4 comma-graphy" in {gtool4 netCDF Convention}[link:../xref.htm#label-6])
80  ! to *range*, then input data can be clipped by an arbitrary dimension.
81  ! If null character is given to *range*, data is not clipped.
82  !
83  ! *HistoryGet* is generic name of multiple subroutines.
84  ! Integer, single precision real, and double precision real
85  ! 0 -- 7 rank array can be given to *array*.
86  !
87  ! By default, when data is input, filename and variable name and
88  ! clipping information is printed.
89  ! The message is suppressed when .true. is given to *quiet*
90  !
91 subroutine historygetdouble0(file, varname, array, range, &
92  & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
94  use gtdata_generic, only: open, inquire, close, get
95  use dc_string, only: tochar, split, joinchar, stoa
98  use dc_regex, only: match
99  use dc_types, only: string, dp
100  use dc_message, only: messagenotify
101  use dc_trace, only: dbgmessage
104  implicit none
105  character(*), intent(in):: file
106  character(*), intent(in):: varname
107  character(*), intent(in), optional:: range
108  logical, intent(in), optional:: quiet
109  logical, intent(in), optional:: flag_mpi_split
110  real(DP), intent(out), optional:: returned_time ! データの時刻
111  logical, intent(out), optional:: flag_time_exist
112  logical, intent(out), optional:: err
113  real(DP), intent(out) :: array
114  real(DP) :: array_tmp(1)
115  type(gt_variable):: var
116  character(STRING):: file_work, url, actual_url
117  integer:: rank, alldims, array_rank
118  integer:: domain
119  character(STRING):: tname
120  integer:: stat
121  character(STRING):: cause_c
122  character(*), parameter :: subname = "HistoryGetDouble0"
123  interface
124  subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
125  character(*), intent(in):: file
126  character(*), intent(in):: varname
127  character(*), intent(out):: url
128  character(*), intent(in), optional:: range
129  logical, intent(out), optional:: flag_time_exist
130  character(*), intent(out), optional:: time_name
131  logical, intent(out), optional:: err
132  end subroutine lookup_growable_url
133  end interface
134  interface
135  subroutine actual_iorange_dump(url, actual_url, returned_time, time_name, err)
136  use dc_types, only: dp
137  character(*), intent(in) :: url ! 変数 URL
138  character(*), intent(out), optional :: actual_url
139  ! 正確な入出力範囲指定
140  real(DP), intent(out), optional:: returned_time ! データの時刻
141  character(*), intent(in), optional:: time_name ! 時刻次元の名称
142  logical, intent(out), optional :: err ! エラーのフラグ
143  end subroutine actual_iorange_dump
144  end interface
145  interface
146  function file_rename_mpi( file ) result(result)
147  use dc_types, only: string
148  character(*), intent(in):: file
149  character(STRING):: result
150  end function file_rename_mpi
151  end interface
152  continue
153  cause_c = ''
154  stat = dc_noerr
155  file_work = file
156  ! ファイル名の変更 (MPI 用)
157  ! Change filename (for MPI)
158  !
159  if ( present_and_true( flag_mpi_split ) ) &
160  & file_work = file_rename_mpi( file_work )
161  ! 最新時刻の URL 取得
162  ! Get URL of latest time
163  !
164  call lookup_growable_url(file_work, varname, url, range, &
165  & flag_time_exist = flag_time_exist, time_name = tname, err = err)
166  if ( present_and_true(err) ) then
167  stat = gt_enoturl
168  cause_c = url
169  goto 999
170  end if
171  ! ファイルオープン
172  ! File open
173  call open( var, url, err = err )
174  if ( present_and_true(err) ) then
175  stat = gt_enoturl
176  cause_c = url
177  goto 999
178  end if
179  !-------------------------------------------------------------------
180  ! 配列形状のチェック
181  ! Check array shape
182  !-------------------------------------------------------------------
183  ! 入力ファイル中のデータの次元数
184  ! Get size of dimesions in data of an input file
185  !
186  call inquire( var = var, & ! (in)
187  & rank = rank, alldims = alldims ) ! (out)
188  ! 引数の次元数のチェック (縮退されている場合には減らす)
189  ! Check size of dimensions of an argument (If any dimension degenerated, size of dimensions is decreased)
190  array_rank = 0
191  ! 次元数の比較
192  ! Compare sizes of dimensions
193  !
194  if ( .not. 0 == rank .and. .not. array_rank == rank ) then
195  if ( .not. present_and_true(quiet) ) then
196  call messagenotify('W', subname, &
197  & 'Rank of data (%c) is "%d", rank of argument is "%d"', &
198  & i = (/rank, 0/), c1 = trim(url) )
199  end if
200  stat = gt_erankmismatch
201  cause_c = 'array'
202  goto 999
203  end if
204  ! 入力ファイル中のデータの配列形状取得
205  ! Get shape of data in an input file
206  !-------------------------------------
207  ! データ取得
208  ! Get data
209  call inquire( var = var, & ! (in)
210  & size = domain ) ! (out)
211  call get( var = var, & ! (inout)
212  & nvalue = domain, & ! (in)
213  & value = array_tmp) ! (out)
214  array = array_tmp(1)
215  call close( var )
216  !-------------------------------------
217  ! データファイル名と切り出し範囲の印字
218  ! Print data filename and clipping range
219  call actual_iorange_dump(url, & ! (in)
220  & actual_url, returned_time, & ! (out) optional
221  & time_name = tname, & ! (in) optional
222  & err = err) ! (out) optional
223  if ( .not. present_and_true(quiet) ) then
224  call messagenotify('M', subname, 'Input %c', c1=trim(actual_url), rank_mpi = -1)
225  end if
226 999 continue
227  call storeerror(stat, subname, err, cause_c)
228 end subroutine historygetdouble0
229 subroutine historygetdouble1(file, varname, array, range, &
230  & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
232  use gtdata_generic, only: open, inquire, close, get
233  use dc_string, only: tochar, split, joinchar, stoa
236  use dc_regex, only: match
237  use dc_types, only: string, dp
238  use dc_message, only: messagenotify
239  use dc_trace, only: dbgmessage
242  implicit none
243  character(*), intent(in):: file
244  character(*), intent(in):: varname
245  character(*), intent(in), optional:: range
246  logical, intent(in), optional:: quiet
247  logical, intent(in), optional:: flag_mpi_split
248  real(DP), intent(out), optional:: returned_time ! データの時刻
249  logical, intent(out), optional:: flag_time_exist
250  logical, intent(out), optional:: err
251  real(DP), intent(out) :: array(:)
252  real(DP), allocatable :: array_tmp(:)
253  integer:: array_allsize
254  integer:: array_shape(1), data_shape(1), array_shape_check(1)
255  integer:: allcount
256  integer:: i, sd
257  logical:: inq_err
258  type(gt_variable):: var
259  character(STRING):: file_work, url, actual_url
260  integer:: rank, alldims, array_rank
261  integer:: domain
262  character(STRING):: tname
263  integer:: stat
264  character(STRING):: cause_c
265  character(*), parameter :: subname = "HistoryGetDouble1"
266  interface
267  subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
268  character(*), intent(in):: file
269  character(*), intent(in):: varname
270  character(*), intent(out):: url
271  character(*), intent(in), optional:: range
272  logical, intent(out), optional:: flag_time_exist
273  character(*), intent(out), optional:: time_name
274  logical, intent(out), optional:: err
275  end subroutine lookup_growable_url
276  end interface
277  interface
278  subroutine actual_iorange_dump(url, actual_url, returned_time, time_name, err)
279  use dc_types, only: dp
280  character(*), intent(in) :: url ! 変数 URL
281  character(*), intent(out), optional :: actual_url
282  ! 正確な入出力範囲指定
283  real(DP), intent(out), optional:: returned_time ! データの時刻
284  character(*), intent(in), optional:: time_name ! 時刻次元の名称
285  logical, intent(out), optional :: err ! エラーのフラグ
286  end subroutine actual_iorange_dump
287  end interface
288  interface
289  function file_rename_mpi( file ) result(result)
290  use dc_types, only: string
291  character(*), intent(in):: file
292  character(STRING):: result
293  end function file_rename_mpi
294  end interface
295  continue
296  cause_c = ''
297  stat = dc_noerr
298  file_work = file
299  array_shape = shape( array )
300  array_allsize = size( array )
301  ! ファイル名の変更 (MPI 用)
302  ! Change filename (for MPI)
303  !
304  if ( present_and_true( flag_mpi_split ) ) &
305  & file_work = file_rename_mpi( file_work )
306  ! 最新時刻の URL 取得
307  ! Get URL of latest time
308  !
309  call lookup_growable_url(file_work, varname, url, range, &
310  & flag_time_exist = flag_time_exist, time_name = tname, err = err)
311  if ( present_and_true(err) ) then
312  stat = gt_enoturl
313  cause_c = url
314  goto 999
315  end if
316  ! ファイルオープン
317  ! File open
318  call open( var, url, err = err )
319  if ( present_and_true(err) ) then
320  stat = gt_enoturl
321  cause_c = url
322  goto 999
323  end if
324  !-------------------------------------------------------------------
325  ! 配列形状のチェック
326  ! Check array shape
327  !-------------------------------------------------------------------
328  ! 入力ファイル中のデータの次元数
329  ! Get size of dimesions in data of an input file
330  !
331  call inquire( var = var, & ! (in)
332  & rank = rank, alldims = alldims ) ! (out)
333  ! 引数の次元数のチェック (縮退されている場合には減らす)
334  ! Check size of dimensions of an argument (If any dimension degenerated, size of dimensions is decreased)
335  array_rank = 1
336  if ( size( array, 1 ) == 1 ) array_rank = array_rank - 1
337  ! 次元数の比較
338  ! Compare sizes of dimensions
339  !
340  if ( .not. 1 == rank .and. .not. array_rank == rank ) then
341  if ( .not. present_and_true(quiet) ) then
342  call messagenotify('W', subname, &
343  & 'Rank of data (%c) is "%d", rank of argument is "%d"', &
344  & i = (/rank, 1/), c1 = trim(url) )
345  end if
346  stat = gt_erankmismatch
347  cause_c = 'array'
348  goto 999
349  end if
350  ! 入力ファイル中のデータの配列形状取得
351  ! Get shape of data in an input file
352  call inquire( var = var , dimord = 1, & ! (in)
353  & allcount = allcount, err = inq_err ) ! (out)
354  if ( .not. inq_err ) then
355  data_shape(1) = allcount
356  else
357  data_shape(1) = 1
358  end if
359  ! 引数の配列形状整形
360  ! Arrange shape of an argument
361  !
362  array_shape_check = array_shape
363  sd = 1
364  do i = 1, 1 - 1
365  if ( array_shape_check(sd) == 1 ) then
366  array_shape_check(sd:1) = cshift( array_shape_check(sd:1), 1, 1 )
367  else
368  sd = sd + 1
369  end if
370  end do
371  ! 配列形状の比較
372  ! Compare shapes
373  !
374  if ( .not. all( array_shape_check == data_shape ) ) then
375  if ( .not. present_and_true(quiet) ) then
376  call messagenotify('W', subname, &
377  & 'Shape of data (%c) is (%c), shape of argument is (%c)', &
378  & c1 = trim( url ), &
379  & c2 = trim( tochar( data_shape(1:rank) ) ), &
380  & c3 = trim( tochar( array_shape_check(1:rank) ) ) )
381  end if
382  stat = gt_eargsizemismatch
383  cause_c = 'array'
384  goto 999
385  end if
386  !-------------------------------------
387  ! データ取得
388  ! Get data
389  call inquire( var = var, & ! (in)
390  & size = domain ) ! (out)
391  if ( allocated( array_tmp ) ) deallocate( array_tmp )
392  allocate( array_tmp(array_allsize) )
393  call get( var, array_tmp, domain )
394  array = reshape( array_tmp, array_shape )
395  deallocate( array_tmp )
396  call close( var )
397  !-------------------------------------
398  ! データファイル名と切り出し範囲の印字
399  ! Print data filename and clipping range
400  call actual_iorange_dump(url, & ! (in)
401  & actual_url, returned_time, & ! (out) optional
402  & time_name = tname, & ! (in) optional
403  & err = err) ! (out) optional
404  if ( .not. present_and_true(quiet) ) then
405  call messagenotify('M', subname, 'Input %c', c1=trim(actual_url), rank_mpi = -1)
406  end if
407 999 continue
408  call storeerror(stat, subname, err, cause_c)
409 end subroutine historygetdouble1
410 subroutine historygetdouble2(file, varname, array, range, &
411  & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
413  use gtdata_generic, only: open, inquire, close, get
414  use dc_string, only: tochar, split, joinchar, stoa
417  use dc_regex, only: match
418  use dc_types, only: string, dp
419  use dc_message, only: messagenotify
420  use dc_trace, only: dbgmessage
423  implicit none
424  character(*), intent(in):: file
425  character(*), intent(in):: varname
426  character(*), intent(in), optional:: range
427  logical, intent(in), optional:: quiet
428  logical, intent(in), optional:: flag_mpi_split
429  real(DP), intent(out), optional:: returned_time ! データの時刻
430  logical, intent(out), optional:: flag_time_exist
431  logical, intent(out), optional:: err
432  real(DP), intent(out) :: array(:,:)
433  real(DP), allocatable :: array_tmp(:)
434  integer:: array_allsize
435  integer:: array_shape(2), data_shape(2), array_shape_check(2)
436  integer:: allcount
437  integer:: i, sd
438  logical:: inq_err
439  type(gt_variable):: var
440  character(STRING):: file_work, url, actual_url
441  integer:: rank, alldims, array_rank
442  integer:: domain
443  character(STRING):: tname
444  integer:: stat
445  character(STRING):: cause_c
446  character(*), parameter :: subname = "HistoryGetDouble2"
447  interface
448  subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
449  character(*), intent(in):: file
450  character(*), intent(in):: varname
451  character(*), intent(out):: url
452  character(*), intent(in), optional:: range
453  logical, intent(out), optional:: flag_time_exist
454  character(*), intent(out), optional:: time_name
455  logical, intent(out), optional:: err
456  end subroutine lookup_growable_url
457  end interface
458  interface
459  subroutine actual_iorange_dump(url, actual_url, returned_time, time_name, err)
460  use dc_types, only: dp
461  character(*), intent(in) :: url ! 変数 URL
462  character(*), intent(out), optional :: actual_url
463  ! 正確な入出力範囲指定
464  real(DP), intent(out), optional:: returned_time ! データの時刻
465  character(*), intent(in), optional:: time_name ! 時刻次元の名称
466  logical, intent(out), optional :: err ! エラーのフラグ
467  end subroutine actual_iorange_dump
468  end interface
469  interface
470  function file_rename_mpi( file ) result(result)
471  use dc_types, only: string
472  character(*), intent(in):: file
473  character(STRING):: result
474  end function file_rename_mpi
475  end interface
476  continue
477  cause_c = ''
478  stat = dc_noerr
479  file_work = file
480  array_shape = shape( array )
481  array_allsize = size( array )
482  ! ファイル名の変更 (MPI 用)
483  ! Change filename (for MPI)
484  !
485  if ( present_and_true( flag_mpi_split ) ) &
486  & file_work = file_rename_mpi( file_work )
487  ! 最新時刻の URL 取得
488  ! Get URL of latest time
489  !
490  call lookup_growable_url(file_work, varname, url, range, &
491  & flag_time_exist = flag_time_exist, time_name = tname, err = err)
492  if ( present_and_true(err) ) then
493  stat = gt_enoturl
494  cause_c = url
495  goto 999
496  end if
497  ! ファイルオープン
498  ! File open
499  call open( var, url, err = err )
500  if ( present_and_true(err) ) then
501  stat = gt_enoturl
502  cause_c = url
503  goto 999
504  end if
505  !-------------------------------------------------------------------
506  ! 配列形状のチェック
507  ! Check array shape
508  !-------------------------------------------------------------------
509  ! 入力ファイル中のデータの次元数
510  ! Get size of dimesions in data of an input file
511  !
512  call inquire( var = var, & ! (in)
513  & rank = rank, alldims = alldims ) ! (out)
514  ! 引数の次元数のチェック (縮退されている場合には減らす)
515  ! Check size of dimensions of an argument (If any dimension degenerated, size of dimensions is decreased)
516  array_rank = 2
517  if ( size( array, 1 ) == 1 ) array_rank = array_rank - 1
518  if ( size( array, 2 ) == 1 ) array_rank = array_rank - 1
519  ! 次元数の比較
520  ! Compare sizes of dimensions
521  !
522  if ( .not. 2 == rank .and. .not. array_rank == rank ) then
523  if ( .not. present_and_true(quiet) ) then
524  call messagenotify('W', subname, &
525  & 'Rank of data (%c) is "%d", rank of argument is "%d"', &
526  & i = (/rank, 2/), c1 = trim(url) )
527  end if
528  stat = gt_erankmismatch
529  cause_c = 'array'
530  goto 999
531  end if
532  ! 入力ファイル中のデータの配列形状取得
533  ! Get shape of data in an input file
534  call inquire( var = var , dimord = 1, & ! (in)
535  & allcount = allcount, err = inq_err ) ! (out)
536  if ( .not. inq_err ) then
537  data_shape(1) = allcount
538  else
539  data_shape(1) = 1
540  end if
541  call inquire( var = var , dimord = 2, & ! (in)
542  & allcount = allcount, err = inq_err ) ! (out)
543  if ( .not. inq_err ) then
544  data_shape(2) = allcount
545  else
546  data_shape(2) = 1
547  end if
548  ! 引数の配列形状整形
549  ! Arrange shape of an argument
550  !
551  array_shape_check = array_shape
552  sd = 1
553  do i = 1, 2 - 1
554  if ( array_shape_check(sd) == 1 ) then
555  array_shape_check(sd:2) = cshift( array_shape_check(sd:2), 1, 1 )
556  else
557  sd = sd + 1
558  end if
559  end do
560  ! 配列形状の比較
561  ! Compare shapes
562  !
563  if ( .not. all( array_shape_check == data_shape ) ) then
564  if ( .not. present_and_true(quiet) ) then
565  call messagenotify('W', subname, &
566  & 'Shape of data (%c) is (%c), shape of argument is (%c)', &
567  & c1 = trim( url ), &
568  & c2 = trim( tochar( data_shape(1:rank) ) ), &
569  & c3 = trim( tochar( array_shape_check(1:rank) ) ) )
570  end if
571  stat = gt_eargsizemismatch
572  cause_c = 'array'
573  goto 999
574  end if
575  !-------------------------------------
576  ! データ取得
577  ! Get data
578  call inquire( var = var, & ! (in)
579  & size = domain ) ! (out)
580  if ( allocated( array_tmp ) ) deallocate( array_tmp )
581  allocate( array_tmp(array_allsize) )
582  call get( var, array_tmp, domain )
583  array = reshape( array_tmp, array_shape )
584  deallocate( array_tmp )
585  call close( var )
586  !-------------------------------------
587  ! データファイル名と切り出し範囲の印字
588  ! Print data filename and clipping range
589  call actual_iorange_dump(url, & ! (in)
590  & actual_url, returned_time, & ! (out) optional
591  & time_name = tname, & ! (in) optional
592  & err = err) ! (out) optional
593  if ( .not. present_and_true(quiet) ) then
594  call messagenotify('M', subname, 'Input %c', c1=trim(actual_url), rank_mpi = -1)
595  end if
596 999 continue
597  call storeerror(stat, subname, err, cause_c)
598 end subroutine historygetdouble2
599 subroutine historygetdouble3(file, varname, array, range, &
600  & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
602  use gtdata_generic, only: open, inquire, close, get
603  use dc_string, only: tochar, split, joinchar, stoa
606  use dc_regex, only: match
607  use dc_types, only: string, dp
608  use dc_message, only: messagenotify
609  use dc_trace, only: dbgmessage
612  implicit none
613  character(*), intent(in):: file
614  character(*), intent(in):: varname
615  character(*), intent(in), optional:: range
616  logical, intent(in), optional:: quiet
617  logical, intent(in), optional:: flag_mpi_split
618  real(DP), intent(out), optional:: returned_time ! データの時刻
619  logical, intent(out), optional:: flag_time_exist
620  logical, intent(out), optional:: err
621  real(DP), intent(out) :: array(:,:,:)
622  real(DP), allocatable :: array_tmp(:)
623  integer:: array_allsize
624  integer:: array_shape(3), data_shape(3), array_shape_check(3)
625  integer:: allcount
626  integer:: i, sd
627  logical:: inq_err
628  type(gt_variable):: var
629  character(STRING):: file_work, url, actual_url
630  integer:: rank, alldims, array_rank
631  integer:: domain
632  character(STRING):: tname
633  integer:: stat
634  character(STRING):: cause_c
635  character(*), parameter :: subname = "HistoryGetDouble3"
636  interface
637  subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
638  character(*), intent(in):: file
639  character(*), intent(in):: varname
640  character(*), intent(out):: url
641  character(*), intent(in), optional:: range
642  logical, intent(out), optional:: flag_time_exist
643  character(*), intent(out), optional:: time_name
644  logical, intent(out), optional:: err
645  end subroutine lookup_growable_url
646  end interface
647  interface
648  subroutine actual_iorange_dump(url, actual_url, returned_time, time_name, err)
649  use dc_types, only: dp
650  character(*), intent(in) :: url ! 変数 URL
651  character(*), intent(out), optional :: actual_url
652  ! 正確な入出力範囲指定
653  real(DP), intent(out), optional:: returned_time ! データの時刻
654  character(*), intent(in), optional:: time_name ! 時刻次元の名称
655  logical, intent(out), optional :: err ! エラーのフラグ
656  end subroutine actual_iorange_dump
657  end interface
658  interface
659  function file_rename_mpi( file ) result(result)
660  use dc_types, only: string
661  character(*), intent(in):: file
662  character(STRING):: result
663  end function file_rename_mpi
664  end interface
665  continue
666  cause_c = ''
667  stat = dc_noerr
668  file_work = file
669  array_shape = shape( array )
670  array_allsize = size( array )
671  ! ファイル名の変更 (MPI 用)
672  ! Change filename (for MPI)
673  !
674  if ( present_and_true( flag_mpi_split ) ) &
675  & file_work = file_rename_mpi( file_work )
676  ! 最新時刻の URL 取得
677  ! Get URL of latest time
678  !
679  call lookup_growable_url(file_work, varname, url, range, &
680  & flag_time_exist = flag_time_exist, time_name = tname, err = err)
681  if ( present_and_true(err) ) then
682  stat = gt_enoturl
683  cause_c = url
684  goto 999
685  end if
686  ! ファイルオープン
687  ! File open
688  call open( var, url, err = err )
689  if ( present_and_true(err) ) then
690  stat = gt_enoturl
691  cause_c = url
692  goto 999
693  end if
694  !-------------------------------------------------------------------
695  ! 配列形状のチェック
696  ! Check array shape
697  !-------------------------------------------------------------------
698  ! 入力ファイル中のデータの次元数
699  ! Get size of dimesions in data of an input file
700  !
701  call inquire( var = var, & ! (in)
702  & rank = rank, alldims = alldims ) ! (out)
703  ! 引数の次元数のチェック (縮退されている場合には減らす)
704  ! Check size of dimensions of an argument (If any dimension degenerated, size of dimensions is decreased)
705  array_rank = 3
706  if ( size( array, 1 ) == 1 ) array_rank = array_rank - 1
707  if ( size( array, 2 ) == 1 ) array_rank = array_rank - 1
708  if ( size( array, 3 ) == 1 ) array_rank = array_rank - 1
709  ! 次元数の比較
710  ! Compare sizes of dimensions
711  !
712  if ( .not. 3 == rank .and. .not. array_rank == rank ) then
713  if ( .not. present_and_true(quiet) ) then
714  call messagenotify('W', subname, &
715  & 'Rank of data (%c) is "%d", rank of argument is "%d"', &
716  & i = (/rank, 3/), c1 = trim(url) )
717  end if
718  stat = gt_erankmismatch
719  cause_c = 'array'
720  goto 999
721  end if
722  ! 入力ファイル中のデータの配列形状取得
723  ! Get shape of data in an input file
724  call inquire( var = var , dimord = 1, & ! (in)
725  & allcount = allcount, err = inq_err ) ! (out)
726  if ( .not. inq_err ) then
727  data_shape(1) = allcount
728  else
729  data_shape(1) = 1
730  end if
731  call inquire( var = var , dimord = 2, & ! (in)
732  & allcount = allcount, err = inq_err ) ! (out)
733  if ( .not. inq_err ) then
734  data_shape(2) = allcount
735  else
736  data_shape(2) = 1
737  end if
738  call inquire( var = var , dimord = 3, & ! (in)
739  & allcount = allcount, err = inq_err ) ! (out)
740  if ( .not. inq_err ) then
741  data_shape(3) = allcount
742  else
743  data_shape(3) = 1
744  end if
745  ! 引数の配列形状整形
746  ! Arrange shape of an argument
747  !
748  array_shape_check = array_shape
749  sd = 1
750  do i = 1, 3 - 1
751  if ( array_shape_check(sd) == 1 ) then
752  array_shape_check(sd:3) = cshift( array_shape_check(sd:3), 1, 1 )
753  else
754  sd = sd + 1
755  end if
756  end do
757  ! 配列形状の比較
758  ! Compare shapes
759  !
760  if ( .not. all( array_shape_check == data_shape ) ) then
761  if ( .not. present_and_true(quiet) ) then
762  call messagenotify('W', subname, &
763  & 'Shape of data (%c) is (%c), shape of argument is (%c)', &
764  & c1 = trim( url ), &
765  & c2 = trim( tochar( data_shape(1:rank) ) ), &
766  & c3 = trim( tochar( array_shape_check(1:rank) ) ) )
767  end if
768  stat = gt_eargsizemismatch
769  cause_c = 'array'
770  goto 999
771  end if
772  !-------------------------------------
773  ! データ取得
774  ! Get data
775  call inquire( var = var, & ! (in)
776  & size = domain ) ! (out)
777  if ( allocated( array_tmp ) ) deallocate( array_tmp )
778  allocate( array_tmp(array_allsize) )
779  call get( var, array_tmp, domain )
780  array = reshape( array_tmp, array_shape )
781  deallocate( array_tmp )
782  call close( var )
783  !-------------------------------------
784  ! データファイル名と切り出し範囲の印字
785  ! Print data filename and clipping range
786  call actual_iorange_dump(url, & ! (in)
787  & actual_url, returned_time, & ! (out) optional
788  & time_name = tname, & ! (in) optional
789  & err = err) ! (out) optional
790  if ( .not. present_and_true(quiet) ) then
791  call messagenotify('M', subname, 'Input %c', c1=trim(actual_url), rank_mpi = -1)
792  end if
793 999 continue
794  call storeerror(stat, subname, err, cause_c)
795 end subroutine historygetdouble3
796 subroutine historygetdouble4(file, varname, array, range, &
797  & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
799  use gtdata_generic, only: open, inquire, close, get
800  use dc_string, only: tochar, split, joinchar, stoa
803  use dc_regex, only: match
804  use dc_types, only: string, dp
805  use dc_message, only: messagenotify
806  use dc_trace, only: dbgmessage
809  implicit none
810  character(*), intent(in):: file
811  character(*), intent(in):: varname
812  character(*), intent(in), optional:: range
813  logical, intent(in), optional:: quiet
814  logical, intent(in), optional:: flag_mpi_split
815  real(DP), intent(out), optional:: returned_time ! データの時刻
816  logical, intent(out), optional:: flag_time_exist
817  logical, intent(out), optional:: err
818  real(DP), intent(out) :: array(:,:,:,:)
819  real(DP), allocatable :: array_tmp(:)
820  integer:: array_allsize
821  integer:: array_shape(4), data_shape(4), array_shape_check(4)
822  integer:: allcount
823  integer:: i, sd
824  logical:: inq_err
825  type(gt_variable):: var
826  character(STRING):: file_work, url, actual_url
827  integer:: rank, alldims, array_rank
828  integer:: domain
829  character(STRING):: tname
830  integer:: stat
831  character(STRING):: cause_c
832  character(*), parameter :: subname = "HistoryGetDouble4"
833  interface
834  subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
835  character(*), intent(in):: file
836  character(*), intent(in):: varname
837  character(*), intent(out):: url
838  character(*), intent(in), optional:: range
839  logical, intent(out), optional:: flag_time_exist
840  character(*), intent(out), optional:: time_name
841  logical, intent(out), optional:: err
842  end subroutine lookup_growable_url
843  end interface
844  interface
845  subroutine actual_iorange_dump(url, actual_url, returned_time, time_name, err)
846  use dc_types, only: dp
847  character(*), intent(in) :: url ! 変数 URL
848  character(*), intent(out), optional :: actual_url
849  ! 正確な入出力範囲指定
850  real(DP), intent(out), optional:: returned_time ! データの時刻
851  character(*), intent(in), optional:: time_name ! 時刻次元の名称
852  logical, intent(out), optional :: err ! エラーのフラグ
853  end subroutine actual_iorange_dump
854  end interface
855  interface
856  function file_rename_mpi( file ) result(result)
857  use dc_types, only: string
858  character(*), intent(in):: file
859  character(STRING):: result
860  end function file_rename_mpi
861  end interface
862  continue
863  cause_c = ''
864  stat = dc_noerr
865  file_work = file
866  array_shape = shape( array )
867  array_allsize = size( array )
868  ! ファイル名の変更 (MPI 用)
869  ! Change filename (for MPI)
870  !
871  if ( present_and_true( flag_mpi_split ) ) &
872  & file_work = file_rename_mpi( file_work )
873  ! 最新時刻の URL 取得
874  ! Get URL of latest time
875  !
876  call lookup_growable_url(file_work, varname, url, range, &
877  & flag_time_exist = flag_time_exist, time_name = tname, err = err)
878  if ( present_and_true(err) ) then
879  stat = gt_enoturl
880  cause_c = url
881  goto 999
882  end if
883  ! ファイルオープン
884  ! File open
885  call open( var, url, err = err )
886  if ( present_and_true(err) ) then
887  stat = gt_enoturl
888  cause_c = url
889  goto 999
890  end if
891  !-------------------------------------------------------------------
892  ! 配列形状のチェック
893  ! Check array shape
894  !-------------------------------------------------------------------
895  ! 入力ファイル中のデータの次元数
896  ! Get size of dimesions in data of an input file
897  !
898  call inquire( var = var, & ! (in)
899  & rank = rank, alldims = alldims ) ! (out)
900  ! 引数の次元数のチェック (縮退されている場合には減らす)
901  ! Check size of dimensions of an argument (If any dimension degenerated, size of dimensions is decreased)
902  array_rank = 4
903  if ( size( array, 1 ) == 1 ) array_rank = array_rank - 1
904  if ( size( array, 2 ) == 1 ) array_rank = array_rank - 1
905  if ( size( array, 3 ) == 1 ) array_rank = array_rank - 1
906  if ( size( array, 4 ) == 1 ) array_rank = array_rank - 1
907  ! 次元数の比較
908  ! Compare sizes of dimensions
909  !
910  if ( .not. 4 == rank .and. .not. array_rank == rank ) then
911  if ( .not. present_and_true(quiet) ) then
912  call messagenotify('W', subname, &
913  & 'Rank of data (%c) is "%d", rank of argument is "%d"', &
914  & i = (/rank, 4/), c1 = trim(url) )
915  end if
916  stat = gt_erankmismatch
917  cause_c = 'array'
918  goto 999
919  end if
920  ! 入力ファイル中のデータの配列形状取得
921  ! Get shape of data in an input file
922  call inquire( var = var , dimord = 1, & ! (in)
923  & allcount = allcount, err = inq_err ) ! (out)
924  if ( .not. inq_err ) then
925  data_shape(1) = allcount
926  else
927  data_shape(1) = 1
928  end if
929  call inquire( var = var , dimord = 2, & ! (in)
930  & allcount = allcount, err = inq_err ) ! (out)
931  if ( .not. inq_err ) then
932  data_shape(2) = allcount
933  else
934  data_shape(2) = 1
935  end if
936  call inquire( var = var , dimord = 3, & ! (in)
937  & allcount = allcount, err = inq_err ) ! (out)
938  if ( .not. inq_err ) then
939  data_shape(3) = allcount
940  else
941  data_shape(3) = 1
942  end if
943  call inquire( var = var , dimord = 4, & ! (in)
944  & allcount = allcount, err = inq_err ) ! (out)
945  if ( .not. inq_err ) then
946  data_shape(4) = allcount
947  else
948  data_shape(4) = 1
949  end if
950  ! 引数の配列形状整形
951  ! Arrange shape of an argument
952  !
953  array_shape_check = array_shape
954  sd = 1
955  do i = 1, 4 - 1
956  if ( array_shape_check(sd) == 1 ) then
957  array_shape_check(sd:4) = cshift( array_shape_check(sd:4), 1, 1 )
958  else
959  sd = sd + 1
960  end if
961  end do
962  ! 配列形状の比較
963  ! Compare shapes
964  !
965  if ( .not. all( array_shape_check == data_shape ) ) then
966  if ( .not. present_and_true(quiet) ) then
967  call messagenotify('W', subname, &
968  & 'Shape of data (%c) is (%c), shape of argument is (%c)', &
969  & c1 = trim( url ), &
970  & c2 = trim( tochar( data_shape(1:rank) ) ), &
971  & c3 = trim( tochar( array_shape_check(1:rank) ) ) )
972  end if
973  stat = gt_eargsizemismatch
974  cause_c = 'array'
975  goto 999
976  end if
977  !-------------------------------------
978  ! データ取得
979  ! Get data
980  call inquire( var = var, & ! (in)
981  & size = domain ) ! (out)
982  if ( allocated( array_tmp ) ) deallocate( array_tmp )
983  allocate( array_tmp(array_allsize) )
984  call get( var, array_tmp, domain )
985  array = reshape( array_tmp, array_shape )
986  deallocate( array_tmp )
987  call close( var )
988  !-------------------------------------
989  ! データファイル名と切り出し範囲の印字
990  ! Print data filename and clipping range
991  call actual_iorange_dump(url, & ! (in)
992  & actual_url, returned_time, & ! (out) optional
993  & time_name = tname, & ! (in) optional
994  & err = err) ! (out) optional
995  if ( .not. present_and_true(quiet) ) then
996  call messagenotify('M', subname, 'Input %c', c1=trim(actual_url), rank_mpi = -1)
997  end if
998 999 continue
999  call storeerror(stat, subname, err, cause_c)
1000 end subroutine historygetdouble4
1001 subroutine historygetdouble5(file, varname, array, range, &
1002  & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
1004  use gtdata_generic, only: open, inquire, close, get
1005  use dc_string, only: tochar, split, joinchar, stoa
1008  use dc_regex, only: match
1009  use dc_types, only: string, dp
1010  use dc_message, only: messagenotify
1011  use dc_trace, only: dbgmessage
1014  implicit none
1015  character(*), intent(in):: file
1016  character(*), intent(in):: varname
1017  character(*), intent(in), optional:: range
1018  logical, intent(in), optional:: quiet
1019  logical, intent(in), optional:: flag_mpi_split
1020  real(DP), intent(out), optional:: returned_time ! データの時刻
1021  logical, intent(out), optional:: flag_time_exist
1022  logical, intent(out), optional:: err
1023  real(DP), intent(out) :: array(:,:,:,:,:)
1024  real(DP), allocatable :: array_tmp(:)
1025  integer:: array_allsize
1026  integer:: array_shape(5), data_shape(5), array_shape_check(5)
1027  integer:: allcount
1028  integer:: i, sd
1029  logical:: inq_err
1030  type(gt_variable):: var
1031  character(STRING):: file_work, url, actual_url
1032  integer:: rank, alldims, array_rank
1033  integer:: domain
1034  character(STRING):: tname
1035  integer:: stat
1036  character(STRING):: cause_c
1037  character(*), parameter :: subname = "HistoryGetDouble5"
1038  interface
1039  subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
1040  character(*), intent(in):: file
1041  character(*), intent(in):: varname
1042  character(*), intent(out):: url
1043  character(*), intent(in), optional:: range
1044  logical, intent(out), optional:: flag_time_exist
1045  character(*), intent(out), optional:: time_name
1046  logical, intent(out), optional:: err
1047  end subroutine lookup_growable_url
1048  end interface
1049  interface
1050  subroutine actual_iorange_dump(url, actual_url, returned_time, time_name, err)
1051  use dc_types, only: dp
1052  character(*), intent(in) :: url ! 変数 URL
1053  character(*), intent(out), optional :: actual_url
1054  ! 正確な入出力範囲指定
1055  real(DP), intent(out), optional:: returned_time ! データの時刻
1056  character(*), intent(in), optional:: time_name ! 時刻次元の名称
1057  logical, intent(out), optional :: err ! エラーのフラグ
1058  end subroutine actual_iorange_dump
1059  end interface
1060  interface
1061  function file_rename_mpi( file ) result(result)
1062  use dc_types, only: string
1063  character(*), intent(in):: file
1064  character(STRING):: result
1065  end function file_rename_mpi
1066  end interface
1067  continue
1068  cause_c = ''
1069  stat = dc_noerr
1070  file_work = file
1071  array_shape = shape( array )
1072  array_allsize = size( array )
1073  ! ファイル名の変更 (MPI 用)
1074  ! Change filename (for MPI)
1075  !
1076  if ( present_and_true( flag_mpi_split ) ) &
1077  & file_work = file_rename_mpi( file_work )
1078  ! 最新時刻の URL 取得
1079  ! Get URL of latest time
1080  !
1081  call lookup_growable_url(file_work, varname, url, range, &
1082  & flag_time_exist = flag_time_exist, time_name = tname, err = err)
1083  if ( present_and_true(err) ) then
1084  stat = gt_enoturl
1085  cause_c = url
1086  goto 999
1087  end if
1088  ! ファイルオープン
1089  ! File open
1090  call open( var, url, err = err )
1091  if ( present_and_true(err) ) then
1092  stat = gt_enoturl
1093  cause_c = url
1094  goto 999
1095  end if
1096  !-------------------------------------------------------------------
1097  ! 配列形状のチェック
1098  ! Check array shape
1099  !-------------------------------------------------------------------
1100  ! 入力ファイル中のデータの次元数
1101  ! Get size of dimesions in data of an input file
1102  !
1103  call inquire( var = var, & ! (in)
1104  & rank = rank, alldims = alldims ) ! (out)
1105  ! 引数の次元数のチェック (縮退されている場合には減らす)
1106  ! Check size of dimensions of an argument (If any dimension degenerated, size of dimensions is decreased)
1107  array_rank = 5
1108  if ( size( array, 1 ) == 1 ) array_rank = array_rank - 1
1109  if ( size( array, 2 ) == 1 ) array_rank = array_rank - 1
1110  if ( size( array, 3 ) == 1 ) array_rank = array_rank - 1
1111  if ( size( array, 4 ) == 1 ) array_rank = array_rank - 1
1112  if ( size( array, 5 ) == 1 ) array_rank = array_rank - 1
1113  ! 次元数の比較
1114  ! Compare sizes of dimensions
1115  !
1116  if ( .not. 5 == rank .and. .not. array_rank == rank ) then
1117  if ( .not. present_and_true(quiet) ) then
1118  call messagenotify('W', subname, &
1119  & 'Rank of data (%c) is "%d", rank of argument is "%d"', &
1120  & i = (/rank, 5/), c1 = trim(url) )
1121  end if
1122  stat = gt_erankmismatch
1123  cause_c = 'array'
1124  goto 999
1125  end if
1126  ! 入力ファイル中のデータの配列形状取得
1127  ! Get shape of data in an input file
1128  call inquire( var = var , dimord = 1, & ! (in)
1129  & allcount = allcount, err = inq_err ) ! (out)
1130  if ( .not. inq_err ) then
1131  data_shape(1) = allcount
1132  else
1133  data_shape(1) = 1
1134  end if
1135  call inquire( var = var , dimord = 2, & ! (in)
1136  & allcount = allcount, err = inq_err ) ! (out)
1137  if ( .not. inq_err ) then
1138  data_shape(2) = allcount
1139  else
1140  data_shape(2) = 1
1141  end if
1142  call inquire( var = var , dimord = 3, & ! (in)
1143  & allcount = allcount, err = inq_err ) ! (out)
1144  if ( .not. inq_err ) then
1145  data_shape(3) = allcount
1146  else
1147  data_shape(3) = 1
1148  end if
1149  call inquire( var = var , dimord = 4, & ! (in)
1150  & allcount = allcount, err = inq_err ) ! (out)
1151  if ( .not. inq_err ) then
1152  data_shape(4) = allcount
1153  else
1154  data_shape(4) = 1
1155  end if
1156  call inquire( var = var , dimord = 5, & ! (in)
1157  & allcount = allcount, err = inq_err ) ! (out)
1158  if ( .not. inq_err ) then
1159  data_shape(5) = allcount
1160  else
1161  data_shape(5) = 1
1162  end if
1163  ! 引数の配列形状整形
1164  ! Arrange shape of an argument
1165  !
1166  array_shape_check = array_shape
1167  sd = 1
1168  do i = 1, 5 - 1
1169  if ( array_shape_check(sd) == 1 ) then
1170  array_shape_check(sd:5) = cshift( array_shape_check(sd:5), 1, 1 )
1171  else
1172  sd = sd + 1
1173  end if
1174  end do
1175  ! 配列形状の比較
1176  ! Compare shapes
1177  !
1178  if ( .not. all( array_shape_check == data_shape ) ) then
1179  if ( .not. present_and_true(quiet) ) then
1180  call messagenotify('W', subname, &
1181  & 'Shape of data (%c) is (%c), shape of argument is (%c)', &
1182  & c1 = trim( url ), &
1183  & c2 = trim( tochar( data_shape(1:rank) ) ), &
1184  & c3 = trim( tochar( array_shape_check(1:rank) ) ) )
1185  end if
1186  stat = gt_eargsizemismatch
1187  cause_c = 'array'
1188  goto 999
1189  end if
1190  !-------------------------------------
1191  ! データ取得
1192  ! Get data
1193  call inquire( var = var, & ! (in)
1194  & size = domain ) ! (out)
1195  if ( allocated( array_tmp ) ) deallocate( array_tmp )
1196  allocate( array_tmp(array_allsize) )
1197  call get( var, array_tmp, domain )
1198  array = reshape( array_tmp, array_shape )
1199  deallocate( array_tmp )
1200  call close( var )
1201  !-------------------------------------
1202  ! データファイル名と切り出し範囲の印字
1203  ! Print data filename and clipping range
1204  call actual_iorange_dump(url, & ! (in)
1205  & actual_url, returned_time, & ! (out) optional
1206  & time_name = tname, & ! (in) optional
1207  & err = err) ! (out) optional
1208  if ( .not. present_and_true(quiet) ) then
1209  call messagenotify('M', subname, 'Input %c', c1=trim(actual_url), rank_mpi = -1)
1210  end if
1211 999 continue
1212  call storeerror(stat, subname, err, cause_c)
1213 end subroutine historygetdouble5
1214 subroutine historygetdouble6(file, varname, array, range, &
1215  & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
1217  use gtdata_generic, only: open, inquire, close, get
1218  use dc_string, only: tochar, split, joinchar, stoa
1221  use dc_regex, only: match
1222  use dc_types, only: string, dp
1223  use dc_message, only: messagenotify
1224  use dc_trace, only: dbgmessage
1227  implicit none
1228  character(*), intent(in):: file
1229  character(*), intent(in):: varname
1230  character(*), intent(in), optional:: range
1231  logical, intent(in), optional:: quiet
1232  logical, intent(in), optional:: flag_mpi_split
1233  real(DP), intent(out), optional:: returned_time ! データの時刻
1234  logical, intent(out), optional:: flag_time_exist
1235  logical, intent(out), optional:: err
1236  real(DP), intent(out) :: array(:,:,:,:,:,:)
1237  real(DP), allocatable :: array_tmp(:)
1238  integer:: array_allsize
1239  integer:: array_shape(6), data_shape(6), array_shape_check(6)
1240  integer:: allcount
1241  integer:: i, sd
1242  logical:: inq_err
1243  type(gt_variable):: var
1244  character(STRING):: file_work, url, actual_url
1245  integer:: rank, alldims, array_rank
1246  integer:: domain
1247  character(STRING):: tname
1248  integer:: stat
1249  character(STRING):: cause_c
1250  character(*), parameter :: subname = "HistoryGetDouble6"
1251  interface
1252  subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
1253  character(*), intent(in):: file
1254  character(*), intent(in):: varname
1255  character(*), intent(out):: url
1256  character(*), intent(in), optional:: range
1257  logical, intent(out), optional:: flag_time_exist
1258  character(*), intent(out), optional:: time_name
1259  logical, intent(out), optional:: err
1260  end subroutine lookup_growable_url
1261  end interface
1262  interface
1263  subroutine actual_iorange_dump(url, actual_url, returned_time, time_name, err)
1264  use dc_types, only: dp
1265  character(*), intent(in) :: url ! 変数 URL
1266  character(*), intent(out), optional :: actual_url
1267  ! 正確な入出力範囲指定
1268  real(DP), intent(out), optional:: returned_time ! データの時刻
1269  character(*), intent(in), optional:: time_name ! 時刻次元の名称
1270  logical, intent(out), optional :: err ! エラーのフラグ
1271  end subroutine actual_iorange_dump
1272  end interface
1273  interface
1274  function file_rename_mpi( file ) result(result)
1275  use dc_types, only: string
1276  character(*), intent(in):: file
1277  character(STRING):: result
1278  end function file_rename_mpi
1279  end interface
1280  continue
1281  cause_c = ''
1282  stat = dc_noerr
1283  file_work = file
1284  array_shape = shape( array )
1285  array_allsize = size( array )
1286  ! ファイル名の変更 (MPI 用)
1287  ! Change filename (for MPI)
1288  !
1289  if ( present_and_true( flag_mpi_split ) ) &
1290  & file_work = file_rename_mpi( file_work )
1291  ! 最新時刻の URL 取得
1292  ! Get URL of latest time
1293  !
1294  call lookup_growable_url(file_work, varname, url, range, &
1295  & flag_time_exist = flag_time_exist, time_name = tname, err = err)
1296  if ( present_and_true(err) ) then
1297  stat = gt_enoturl
1298  cause_c = url
1299  goto 999
1300  end if
1301  ! ファイルオープン
1302  ! File open
1303  call open( var, url, err = err )
1304  if ( present_and_true(err) ) then
1305  stat = gt_enoturl
1306  cause_c = url
1307  goto 999
1308  end if
1309  !-------------------------------------------------------------------
1310  ! 配列形状のチェック
1311  ! Check array shape
1312  !-------------------------------------------------------------------
1313  ! 入力ファイル中のデータの次元数
1314  ! Get size of dimesions in data of an input file
1315  !
1316  call inquire( var = var, & ! (in)
1317  & rank = rank, alldims = alldims ) ! (out)
1318  ! 引数の次元数のチェック (縮退されている場合には減らす)
1319  ! Check size of dimensions of an argument (If any dimension degenerated, size of dimensions is decreased)
1320  array_rank = 6
1321  if ( size( array, 1 ) == 1 ) array_rank = array_rank - 1
1322  if ( size( array, 2 ) == 1 ) array_rank = array_rank - 1
1323  if ( size( array, 3 ) == 1 ) array_rank = array_rank - 1
1324  if ( size( array, 4 ) == 1 ) array_rank = array_rank - 1
1325  if ( size( array, 5 ) == 1 ) array_rank = array_rank - 1
1326  if ( size( array, 6 ) == 1 ) array_rank = array_rank - 1
1327  ! 次元数の比較
1328  ! Compare sizes of dimensions
1329  !
1330  if ( .not. 6 == rank .and. .not. array_rank == rank ) then
1331  if ( .not. present_and_true(quiet) ) then
1332  call messagenotify('W', subname, &
1333  & 'Rank of data (%c) is "%d", rank of argument is "%d"', &
1334  & i = (/rank, 6/), c1 = trim(url) )
1335  end if
1336  stat = gt_erankmismatch
1337  cause_c = 'array'
1338  goto 999
1339  end if
1340  ! 入力ファイル中のデータの配列形状取得
1341  ! Get shape of data in an input file
1342  call inquire( var = var , dimord = 1, & ! (in)
1343  & allcount = allcount, err = inq_err ) ! (out)
1344  if ( .not. inq_err ) then
1345  data_shape(1) = allcount
1346  else
1347  data_shape(1) = 1
1348  end if
1349  call inquire( var = var , dimord = 2, & ! (in)
1350  & allcount = allcount, err = inq_err ) ! (out)
1351  if ( .not. inq_err ) then
1352  data_shape(2) = allcount
1353  else
1354  data_shape(2) = 1
1355  end if
1356  call inquire( var = var , dimord = 3, & ! (in)
1357  & allcount = allcount, err = inq_err ) ! (out)
1358  if ( .not. inq_err ) then
1359  data_shape(3) = allcount
1360  else
1361  data_shape(3) = 1
1362  end if
1363  call inquire( var = var , dimord = 4, & ! (in)
1364  & allcount = allcount, err = inq_err ) ! (out)
1365  if ( .not. inq_err ) then
1366  data_shape(4) = allcount
1367  else
1368  data_shape(4) = 1
1369  end if
1370  call inquire( var = var , dimord = 5, & ! (in)
1371  & allcount = allcount, err = inq_err ) ! (out)
1372  if ( .not. inq_err ) then
1373  data_shape(5) = allcount
1374  else
1375  data_shape(5) = 1
1376  end if
1377  call inquire( var = var , dimord = 6, & ! (in)
1378  & allcount = allcount, err = inq_err ) ! (out)
1379  if ( .not. inq_err ) then
1380  data_shape(6) = allcount
1381  else
1382  data_shape(6) = 1
1383  end if
1384  ! 引数の配列形状整形
1385  ! Arrange shape of an argument
1386  !
1387  array_shape_check = array_shape
1388  sd = 1
1389  do i = 1, 6 - 1
1390  if ( array_shape_check(sd) == 1 ) then
1391  array_shape_check(sd:6) = cshift( array_shape_check(sd:6), 1, 1 )
1392  else
1393  sd = sd + 1
1394  end if
1395  end do
1396  ! 配列形状の比較
1397  ! Compare shapes
1398  !
1399  if ( .not. all( array_shape_check == data_shape ) ) then
1400  if ( .not. present_and_true(quiet) ) then
1401  call messagenotify('W', subname, &
1402  & 'Shape of data (%c) is (%c), shape of argument is (%c)', &
1403  & c1 = trim( url ), &
1404  & c2 = trim( tochar( data_shape(1:rank) ) ), &
1405  & c3 = trim( tochar( array_shape_check(1:rank) ) ) )
1406  end if
1407  stat = gt_eargsizemismatch
1408  cause_c = 'array'
1409  goto 999
1410  end if
1411  !-------------------------------------
1412  ! データ取得
1413  ! Get data
1414  call inquire( var = var, & ! (in)
1415  & size = domain ) ! (out)
1416  if ( allocated( array_tmp ) ) deallocate( array_tmp )
1417  allocate( array_tmp(array_allsize) )
1418  call get( var, array_tmp, domain )
1419  array = reshape( array_tmp, array_shape )
1420  deallocate( array_tmp )
1421  call close( var )
1422  !-------------------------------------
1423  ! データファイル名と切り出し範囲の印字
1424  ! Print data filename and clipping range
1425  call actual_iorange_dump(url, & ! (in)
1426  & actual_url, returned_time, & ! (out) optional
1427  & time_name = tname, & ! (in) optional
1428  & err = err) ! (out) optional
1429  if ( .not. present_and_true(quiet) ) then
1430  call messagenotify('M', subname, 'Input %c', c1=trim(actual_url), rank_mpi = -1)
1431  end if
1432 999 continue
1433  call storeerror(stat, subname, err, cause_c)
1434 end subroutine historygetdouble6
1435 subroutine historygetdouble7(file, varname, array, range, &
1436  & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
1438  use gtdata_generic, only: open, inquire, close, get
1439  use dc_string, only: tochar, split, joinchar, stoa
1442  use dc_regex, only: match
1443  use dc_types, only: string, dp
1444  use dc_message, only: messagenotify
1445  use dc_trace, only: dbgmessage
1448  implicit none
1449  character(*), intent(in):: file
1450  character(*), intent(in):: varname
1451  character(*), intent(in), optional:: range
1452  logical, intent(in), optional:: quiet
1453  logical, intent(in), optional:: flag_mpi_split
1454  real(DP), intent(out), optional:: returned_time ! データの時刻
1455  logical, intent(out), optional:: flag_time_exist
1456  logical, intent(out), optional:: err
1457  real(DP), intent(out) :: array(:,:,:,:,:,:,:)
1458  real(DP), allocatable :: array_tmp(:)
1459  integer:: array_allsize
1460  integer:: array_shape(7), data_shape(7), array_shape_check(7)
1461  integer:: allcount
1462  integer:: i, sd
1463  logical:: inq_err
1464  type(gt_variable):: var
1465  character(STRING):: file_work, url, actual_url
1466  integer:: rank, alldims, array_rank
1467  integer:: domain
1468  character(STRING):: tname
1469  integer:: stat
1470  character(STRING):: cause_c
1471  character(*), parameter :: subname = "HistoryGetDouble7"
1472  interface
1473  subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
1474  character(*), intent(in):: file
1475  character(*), intent(in):: varname
1476  character(*), intent(out):: url
1477  character(*), intent(in), optional:: range
1478  logical, intent(out), optional:: flag_time_exist
1479  character(*), intent(out), optional:: time_name
1480  logical, intent(out), optional:: err
1481  end subroutine lookup_growable_url
1482  end interface
1483  interface
1484  subroutine actual_iorange_dump(url, actual_url, returned_time, time_name, err)
1485  use dc_types, only: dp
1486  character(*), intent(in) :: url ! 変数 URL
1487  character(*), intent(out), optional :: actual_url
1488  ! 正確な入出力範囲指定
1489  real(DP), intent(out), optional:: returned_time ! データの時刻
1490  character(*), intent(in), optional:: time_name ! 時刻次元の名称
1491  logical, intent(out), optional :: err ! エラーのフラグ
1492  end subroutine actual_iorange_dump
1493  end interface
1494  interface
1495  function file_rename_mpi( file ) result(result)
1496  use dc_types, only: string
1497  character(*), intent(in):: file
1498  character(STRING):: result
1499  end function file_rename_mpi
1500  end interface
1501  continue
1502  cause_c = ''
1503  stat = dc_noerr
1504  file_work = file
1505  array_shape = shape( array )
1506  array_allsize = size( array )
1507  ! ファイル名の変更 (MPI 用)
1508  ! Change filename (for MPI)
1509  !
1510  if ( present_and_true( flag_mpi_split ) ) &
1511  & file_work = file_rename_mpi( file_work )
1512  ! 最新時刻の URL 取得
1513  ! Get URL of latest time
1514  !
1515  call lookup_growable_url(file_work, varname, url, range, &
1516  & flag_time_exist = flag_time_exist, time_name = tname, err = err)
1517  if ( present_and_true(err) ) then
1518  stat = gt_enoturl
1519  cause_c = url
1520  goto 999
1521  end if
1522  ! ファイルオープン
1523  ! File open
1524  call open( var, url, err = err )
1525  if ( present_and_true(err) ) then
1526  stat = gt_enoturl
1527  cause_c = url
1528  goto 999
1529  end if
1530  !-------------------------------------------------------------------
1531  ! 配列形状のチェック
1532  ! Check array shape
1533  !-------------------------------------------------------------------
1534  ! 入力ファイル中のデータの次元数
1535  ! Get size of dimesions in data of an input file
1536  !
1537  call inquire( var = var, & ! (in)
1538  & rank = rank, alldims = alldims ) ! (out)
1539  ! 引数の次元数のチェック (縮退されている場合には減らす)
1540  ! Check size of dimensions of an argument (If any dimension degenerated, size of dimensions is decreased)
1541  array_rank = 7
1542  if ( size( array, 1 ) == 1 ) array_rank = array_rank - 1
1543  if ( size( array, 2 ) == 1 ) array_rank = array_rank - 1
1544  if ( size( array, 3 ) == 1 ) array_rank = array_rank - 1
1545  if ( size( array, 4 ) == 1 ) array_rank = array_rank - 1
1546  if ( size( array, 5 ) == 1 ) array_rank = array_rank - 1
1547  if ( size( array, 6 ) == 1 ) array_rank = array_rank - 1
1548  if ( size( array, 7 ) == 1 ) array_rank = array_rank - 1
1549  ! 次元数の比較
1550  ! Compare sizes of dimensions
1551  !
1552  if ( .not. 7 == rank .and. .not. array_rank == rank ) then
1553  if ( .not. present_and_true(quiet) ) then
1554  call messagenotify('W', subname, &
1555  & 'Rank of data (%c) is "%d", rank of argument is "%d"', &
1556  & i = (/rank, 7/), c1 = trim(url) )
1557  end if
1558  stat = gt_erankmismatch
1559  cause_c = 'array'
1560  goto 999
1561  end if
1562  ! 入力ファイル中のデータの配列形状取得
1563  ! Get shape of data in an input file
1564  call inquire( var = var , dimord = 1, & ! (in)
1565  & allcount = allcount, err = inq_err ) ! (out)
1566  if ( .not. inq_err ) then
1567  data_shape(1) = allcount
1568  else
1569  data_shape(1) = 1
1570  end if
1571  call inquire( var = var , dimord = 2, & ! (in)
1572  & allcount = allcount, err = inq_err ) ! (out)
1573  if ( .not. inq_err ) then
1574  data_shape(2) = allcount
1575  else
1576  data_shape(2) = 1
1577  end if
1578  call inquire( var = var , dimord = 3, & ! (in)
1579  & allcount = allcount, err = inq_err ) ! (out)
1580  if ( .not. inq_err ) then
1581  data_shape(3) = allcount
1582  else
1583  data_shape(3) = 1
1584  end if
1585  call inquire( var = var , dimord = 4, & ! (in)
1586  & allcount = allcount, err = inq_err ) ! (out)
1587  if ( .not. inq_err ) then
1588  data_shape(4) = allcount
1589  else
1590  data_shape(4) = 1
1591  end if
1592  call inquire( var = var , dimord = 5, & ! (in)
1593  & allcount = allcount, err = inq_err ) ! (out)
1594  if ( .not. inq_err ) then
1595  data_shape(5) = allcount
1596  else
1597  data_shape(5) = 1
1598  end if
1599  call inquire( var = var , dimord = 6, & ! (in)
1600  & allcount = allcount, err = inq_err ) ! (out)
1601  if ( .not. inq_err ) then
1602  data_shape(6) = allcount
1603  else
1604  data_shape(6) = 1
1605  end if
1606  call inquire( var = var , dimord = 7, & ! (in)
1607  & allcount = allcount, err = inq_err ) ! (out)
1608  if ( .not. inq_err ) then
1609  data_shape(7) = allcount
1610  else
1611  data_shape(7) = 1
1612  end if
1613  ! 引数の配列形状整形
1614  ! Arrange shape of an argument
1615  !
1616  array_shape_check = array_shape
1617  sd = 1
1618  do i = 1, 7 - 1
1619  if ( array_shape_check(sd) == 1 ) then
1620  array_shape_check(sd:7) = cshift( array_shape_check(sd:7), 1, 1 )
1621  else
1622  sd = sd + 1
1623  end if
1624  end do
1625  ! 配列形状の比較
1626  ! Compare shapes
1627  !
1628  if ( .not. all( array_shape_check == data_shape ) ) then
1629  if ( .not. present_and_true(quiet) ) then
1630  call messagenotify('W', subname, &
1631  & 'Shape of data (%c) is (%c), shape of argument is (%c)', &
1632  & c1 = trim( url ), &
1633  & c2 = trim( tochar( data_shape(1:rank) ) ), &
1634  & c3 = trim( tochar( array_shape_check(1:rank) ) ) )
1635  end if
1636  stat = gt_eargsizemismatch
1637  cause_c = 'array'
1638  goto 999
1639  end if
1640  !-------------------------------------
1641  ! データ取得
1642  ! Get data
1643  call inquire( var = var, & ! (in)
1644  & size = domain ) ! (out)
1645  if ( allocated( array_tmp ) ) deallocate( array_tmp )
1646  allocate( array_tmp(array_allsize) )
1647  call get( var, array_tmp, domain )
1648  array = reshape( array_tmp, array_shape )
1649  deallocate( array_tmp )
1650  call close( var )
1651  !-------------------------------------
1652  ! データファイル名と切り出し範囲の印字
1653  ! Print data filename and clipping range
1654  call actual_iorange_dump(url, & ! (in)
1655  & actual_url, returned_time, & ! (out) optional
1656  & time_name = tname, & ! (in) optional
1657  & err = err) ! (out) optional
1658  if ( .not. present_and_true(quiet) ) then
1659  call messagenotify('M', subname, 'Input %c', c1=trim(actual_url), rank_mpi = -1)
1660  end if
1661 999 continue
1662  call storeerror(stat, subname, err, cause_c)
1663 end subroutine historygetdouble7
1664 subroutine historygetreal0(file, varname, array, range, &
1665  & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
1667  use gtdata_generic, only: open, inquire, close, get
1668  use dc_string, only: tochar, split, joinchar, stoa
1671  use dc_regex, only: match
1672  use dc_types, only: string, dp, sp
1673  use dc_message, only: messagenotify
1674  use dc_trace, only: dbgmessage
1677  implicit none
1678  character(*), intent(in):: file
1679  character(*), intent(in):: varname
1680  character(*), intent(in), optional:: range
1681  logical, intent(in), optional:: quiet
1682  logical, intent(in), optional:: flag_mpi_split
1683  real(DP), intent(out), optional:: returned_time ! データの時刻
1684  logical, intent(out), optional:: flag_time_exist
1685  logical, intent(out), optional:: err
1686  real(SP), intent(out) :: array
1687  real(SP) :: array_tmp(1)
1688  type(gt_variable):: var
1689  character(STRING):: file_work, url, actual_url
1690  integer:: rank, alldims, array_rank
1691  integer:: domain
1692  character(STRING):: tname
1693  integer:: stat
1694  character(STRING):: cause_c
1695  character(*), parameter :: subname = "HistoryGetReal0"
1696  interface
1697  subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
1698  character(*), intent(in):: file
1699  character(*), intent(in):: varname
1700  character(*), intent(out):: url
1701  character(*), intent(in), optional:: range
1702  logical, intent(out), optional:: flag_time_exist
1703  character(*), intent(out), optional:: time_name
1704  logical, intent(out), optional:: err
1705  end subroutine lookup_growable_url
1706  end interface
1707  interface
1708  subroutine actual_iorange_dump(url, actual_url, returned_time, time_name, err)
1709  use dc_types, only: dp
1710  character(*), intent(in) :: url ! 変数 URL
1711  character(*), intent(out), optional :: actual_url
1712  ! 正確な入出力範囲指定
1713  real(DP), intent(out), optional:: returned_time ! データの時刻
1714  character(*), intent(in), optional:: time_name ! 時刻次元の名称
1715  logical, intent(out), optional :: err ! エラーのフラグ
1716  end subroutine actual_iorange_dump
1717  end interface
1718  interface
1719  function file_rename_mpi( file ) result(result)
1720  use dc_types, only: string
1721  character(*), intent(in):: file
1722  character(STRING):: result
1723  end function file_rename_mpi
1724  end interface
1725  continue
1726  cause_c = ''
1727  stat = dc_noerr
1728  file_work = file
1729  ! ファイル名の変更 (MPI 用)
1730  ! Change filename (for MPI)
1731  !
1732  if ( present_and_true( flag_mpi_split ) ) &
1733  & file_work = file_rename_mpi( file_work )
1734  ! 最新時刻の URL 取得
1735  ! Get URL of latest time
1736  !
1737  call lookup_growable_url(file_work, varname, url, range, &
1738  & flag_time_exist = flag_time_exist, time_name = tname, err = err)
1739  if ( present_and_true(err) ) then
1740  stat = gt_enoturl
1741  cause_c = url
1742  goto 999
1743  end if
1744  ! ファイルオープン
1745  ! File open
1746  call open( var, url, err = err )
1747  if ( present_and_true(err) ) then
1748  stat = gt_enoturl
1749  cause_c = url
1750  goto 999
1751  end if
1752  !-------------------------------------------------------------------
1753  ! 配列形状のチェック
1754  ! Check array shape
1755  !-------------------------------------------------------------------
1756  ! 入力ファイル中のデータの次元数
1757  ! Get size of dimesions in data of an input file
1758  !
1759  call inquire( var = var, & ! (in)
1760  & rank = rank, alldims = alldims ) ! (out)
1761  ! 引数の次元数のチェック (縮退されている場合には減らす)
1762  ! Check size of dimensions of an argument (If any dimension degenerated, size of dimensions is decreased)
1763  array_rank = 0
1764  ! 次元数の比較
1765  ! Compare sizes of dimensions
1766  !
1767  if ( .not. 0 == rank .and. .not. array_rank == rank ) then
1768  if ( .not. present_and_true(quiet) ) then
1769  call messagenotify('W', subname, &
1770  & 'Rank of data (%c) is "%d", rank of argument is "%d"', &
1771  & i = (/rank, 0/), c1 = trim(url) )
1772  end if
1773  stat = gt_erankmismatch
1774  cause_c = 'array'
1775  goto 999
1776  end if
1777  ! 入力ファイル中のデータの配列形状取得
1778  ! Get shape of data in an input file
1779  !-------------------------------------
1780  ! データ取得
1781  ! Get data
1782  call inquire( var = var, & ! (in)
1783  & size = domain ) ! (out)
1784  call get( var = var, & ! (inout)
1785  & nvalue = domain, & ! (in)
1786  & value = array_tmp) ! (out)
1787  array = array_tmp(1)
1788  call close( var )
1789  !-------------------------------------
1790  ! データファイル名と切り出し範囲の印字
1791  ! Print data filename and clipping range
1792  call actual_iorange_dump(url, & ! (in)
1793  & actual_url, returned_time, & ! (out) optional
1794  & time_name = tname, & ! (in) optional
1795  & err = err) ! (out) optional
1796  if ( .not. present_and_true(quiet) ) then
1797  call messagenotify('M', subname, 'Input %c', c1=trim(actual_url), rank_mpi = -1)
1798  end if
1799 999 continue
1800  call storeerror(stat, subname, err, cause_c)
1801 end subroutine historygetreal0
1802 subroutine historygetreal1(file, varname, array, range, &
1803  & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
1805  use gtdata_generic, only: open, inquire, close, get
1806  use dc_string, only: tochar, split, joinchar, stoa
1809  use dc_regex, only: match
1810  use dc_types, only: string, dp, sp
1811  use dc_message, only: messagenotify
1812  use dc_trace, only: dbgmessage
1815  implicit none
1816  character(*), intent(in):: file
1817  character(*), intent(in):: varname
1818  character(*), intent(in), optional:: range
1819  logical, intent(in), optional:: quiet
1820  logical, intent(in), optional:: flag_mpi_split
1821  real(DP), intent(out), optional:: returned_time ! データの時刻
1822  logical, intent(out), optional:: flag_time_exist
1823  logical, intent(out), optional:: err
1824  real(SP), intent(out) :: array(:)
1825  real(SP), allocatable :: array_tmp(:)
1826  integer:: array_allsize
1827  integer:: array_shape(1), data_shape(1), array_shape_check(1)
1828  integer:: allcount
1829  integer:: i, sd
1830  logical:: inq_err
1831  type(gt_variable):: var
1832  character(STRING):: file_work, url, actual_url
1833  integer:: rank, alldims, array_rank
1834  integer:: domain
1835  character(STRING):: tname
1836  integer:: stat
1837  character(STRING):: cause_c
1838  character(*), parameter :: subname = "HistoryGetReal1"
1839  interface
1840  subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
1841  character(*), intent(in):: file
1842  character(*), intent(in):: varname
1843  character(*), intent(out):: url
1844  character(*), intent(in), optional:: range
1845  logical, intent(out), optional:: flag_time_exist
1846  character(*), intent(out), optional:: time_name
1847  logical, intent(out), optional:: err
1848  end subroutine lookup_growable_url
1849  end interface
1850  interface
1851  subroutine actual_iorange_dump(url, actual_url, returned_time, time_name, err)
1852  use dc_types, only: dp
1853  character(*), intent(in) :: url ! 変数 URL
1854  character(*), intent(out), optional :: actual_url
1855  ! 正確な入出力範囲指定
1856  real(DP), intent(out), optional:: returned_time ! データの時刻
1857  character(*), intent(in), optional:: time_name ! 時刻次元の名称
1858  logical, intent(out), optional :: err ! エラーのフラグ
1859  end subroutine actual_iorange_dump
1860  end interface
1861  interface
1862  function file_rename_mpi( file ) result(result)
1863  use dc_types, only: string
1864  character(*), intent(in):: file
1865  character(STRING):: result
1866  end function file_rename_mpi
1867  end interface
1868  continue
1869  cause_c = ''
1870  stat = dc_noerr
1871  file_work = file
1872  array_shape = shape( array )
1873  array_allsize = size( array )
1874  ! ファイル名の変更 (MPI 用)
1875  ! Change filename (for MPI)
1876  !
1877  if ( present_and_true( flag_mpi_split ) ) &
1878  & file_work = file_rename_mpi( file_work )
1879  ! 最新時刻の URL 取得
1880  ! Get URL of latest time
1881  !
1882  call lookup_growable_url(file_work, varname, url, range, &
1883  & flag_time_exist = flag_time_exist, time_name = tname, err = err)
1884  if ( present_and_true(err) ) then
1885  stat = gt_enoturl
1886  cause_c = url
1887  goto 999
1888  end if
1889  ! ファイルオープン
1890  ! File open
1891  call open( var, url, err = err )
1892  if ( present_and_true(err) ) then
1893  stat = gt_enoturl
1894  cause_c = url
1895  goto 999
1896  end if
1897  !-------------------------------------------------------------------
1898  ! 配列形状のチェック
1899  ! Check array shape
1900  !-------------------------------------------------------------------
1901  ! 入力ファイル中のデータの次元数
1902  ! Get size of dimesions in data of an input file
1903  !
1904  call inquire( var = var, & ! (in)
1905  & rank = rank, alldims = alldims ) ! (out)
1906  ! 引数の次元数のチェック (縮退されている場合には減らす)
1907  ! Check size of dimensions of an argument (If any dimension degenerated, size of dimensions is decreased)
1908  array_rank = 1
1909  if ( size( array, 1 ) == 1 ) array_rank = array_rank - 1
1910  ! 次元数の比較
1911  ! Compare sizes of dimensions
1912  !
1913  if ( .not. 1 == rank .and. .not. array_rank == rank ) then
1914  if ( .not. present_and_true(quiet) ) then
1915  call messagenotify('W', subname, &
1916  & 'Rank of data (%c) is "%d", rank of argument is "%d"', &
1917  & i = (/rank, 1/), c1 = trim(url) )
1918  end if
1919  stat = gt_erankmismatch
1920  cause_c = 'array'
1921  goto 999
1922  end if
1923  ! 入力ファイル中のデータの配列形状取得
1924  ! Get shape of data in an input file
1925  call inquire( var = var , dimord = 1, & ! (in)
1926  & allcount = allcount, err = inq_err ) ! (out)
1927  if ( .not. inq_err ) then
1928  data_shape(1) = allcount
1929  else
1930  data_shape(1) = 1
1931  end if
1932  ! 引数の配列形状整形
1933  ! Arrange shape of an argument
1934  !
1935  array_shape_check = array_shape
1936  sd = 1
1937  do i = 1, 1 - 1
1938  if ( array_shape_check(sd) == 1 ) then
1939  array_shape_check(sd:1) = cshift( array_shape_check(sd:1), 1, 1 )
1940  else
1941  sd = sd + 1
1942  end if
1943  end do
1944  ! 配列形状の比較
1945  ! Compare shapes
1946  !
1947  if ( .not. all( array_shape_check == data_shape ) ) then
1948  if ( .not. present_and_true(quiet) ) then
1949  call messagenotify('W', subname, &
1950  & 'Shape of data (%c) is (%c), shape of argument is (%c)', &
1951  & c1 = trim( url ), &
1952  & c2 = trim( tochar( data_shape(1:rank) ) ), &
1953  & c3 = trim( tochar( array_shape_check(1:rank) ) ) )
1954  end if
1955  stat = gt_eargsizemismatch
1956  cause_c = 'array'
1957  goto 999
1958  end if
1959  !-------------------------------------
1960  ! データ取得
1961  ! Get data
1962  call inquire( var = var, & ! (in)
1963  & size = domain ) ! (out)
1964  if ( allocated( array_tmp ) ) deallocate( array_tmp )
1965  allocate( array_tmp(array_allsize) )
1966  call get( var, array_tmp, domain )
1967  array = reshape( array_tmp, array_shape )
1968  deallocate( array_tmp )
1969  call close( var )
1970  !-------------------------------------
1971  ! データファイル名と切り出し範囲の印字
1972  ! Print data filename and clipping range
1973  call actual_iorange_dump(url, & ! (in)
1974  & actual_url, returned_time, & ! (out) optional
1975  & time_name = tname, & ! (in) optional
1976  & err = err) ! (out) optional
1977  if ( .not. present_and_true(quiet) ) then
1978  call messagenotify('M', subname, 'Input %c', c1=trim(actual_url), rank_mpi = -1)
1979  end if
1980 999 continue
1981  call storeerror(stat, subname, err, cause_c)
1982 end subroutine historygetreal1
1983 subroutine historygetreal2(file, varname, array, range, &
1984  & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
1986  use gtdata_generic, only: open, inquire, close, get
1987  use dc_string, only: tochar, split, joinchar, stoa
1990  use dc_regex, only: match
1991  use dc_types, only: string, dp, sp
1992  use dc_message, only: messagenotify
1993  use dc_trace, only: dbgmessage
1996  implicit none
1997  character(*), intent(in):: file
1998  character(*), intent(in):: varname
1999  character(*), intent(in), optional:: range
2000  logical, intent(in), optional:: quiet
2001  logical, intent(in), optional:: flag_mpi_split
2002  real(DP), intent(out), optional:: returned_time ! データの時刻
2003  logical, intent(out), optional:: flag_time_exist
2004  logical, intent(out), optional:: err
2005  real(SP), intent(out) :: array(:,:)
2006  real(SP), allocatable :: array_tmp(:)
2007  integer:: array_allsize
2008  integer:: array_shape(2), data_shape(2), array_shape_check(2)
2009  integer:: allcount
2010  integer:: i, sd
2011  logical:: inq_err
2012  type(gt_variable):: var
2013  character(STRING):: file_work, url, actual_url
2014  integer:: rank, alldims, array_rank
2015  integer:: domain
2016  character(STRING):: tname
2017  integer:: stat
2018  character(STRING):: cause_c
2019  character(*), parameter :: subname = "HistoryGetReal2"
2020  interface
2021  subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
2022  character(*), intent(in):: file
2023  character(*), intent(in):: varname
2024  character(*), intent(out):: url
2025  character(*), intent(in), optional:: range
2026  logical, intent(out), optional:: flag_time_exist
2027  character(*), intent(out), optional:: time_name
2028  logical, intent(out), optional:: err
2029  end subroutine lookup_growable_url
2030  end interface
2031  interface
2032  subroutine actual_iorange_dump(url, actual_url, returned_time, time_name, err)
2033  use dc_types, only: dp
2034  character(*), intent(in) :: url ! 変数 URL
2035  character(*), intent(out), optional :: actual_url
2036  ! 正確な入出力範囲指定
2037  real(DP), intent(out), optional:: returned_time ! データの時刻
2038  character(*), intent(in), optional:: time_name ! 時刻次元の名称
2039  logical, intent(out), optional :: err ! エラーのフラグ
2040  end subroutine actual_iorange_dump
2041  end interface
2042  interface
2043  function file_rename_mpi( file ) result(result)
2044  use dc_types, only: string
2045  character(*), intent(in):: file
2046  character(STRING):: result
2047  end function file_rename_mpi
2048  end interface
2049  continue
2050  cause_c = ''
2051  stat = dc_noerr
2052  file_work = file
2053  array_shape = shape( array )
2054  array_allsize = size( array )
2055  ! ファイル名の変更 (MPI 用)
2056  ! Change filename (for MPI)
2057  !
2058  if ( present_and_true( flag_mpi_split ) ) &
2059  & file_work = file_rename_mpi( file_work )
2060  ! 最新時刻の URL 取得
2061  ! Get URL of latest time
2062  !
2063  call lookup_growable_url(file_work, varname, url, range, &
2064  & flag_time_exist = flag_time_exist, time_name = tname, err = err)
2065  if ( present_and_true(err) ) then
2066  stat = gt_enoturl
2067  cause_c = url
2068  goto 999
2069  end if
2070  ! ファイルオープン
2071  ! File open
2072  call open( var, url, err = err )
2073  if ( present_and_true(err) ) then
2074  stat = gt_enoturl
2075  cause_c = url
2076  goto 999
2077  end if
2078  !-------------------------------------------------------------------
2079  ! 配列形状のチェック
2080  ! Check array shape
2081  !-------------------------------------------------------------------
2082  ! 入力ファイル中のデータの次元数
2083  ! Get size of dimesions in data of an input file
2084  !
2085  call inquire( var = var, & ! (in)
2086  & rank = rank, alldims = alldims ) ! (out)
2087  ! 引数の次元数のチェック (縮退されている場合には減らす)
2088  ! Check size of dimensions of an argument (If any dimension degenerated, size of dimensions is decreased)
2089  array_rank = 2
2090  if ( size( array, 1 ) == 1 ) array_rank = array_rank - 1
2091  if ( size( array, 2 ) == 1 ) array_rank = array_rank - 1
2092  ! 次元数の比較
2093  ! Compare sizes of dimensions
2094  !
2095  if ( .not. 2 == rank .and. .not. array_rank == rank ) then
2096  if ( .not. present_and_true(quiet) ) then
2097  call messagenotify('W', subname, &
2098  & 'Rank of data (%c) is "%d", rank of argument is "%d"', &
2099  & i = (/rank, 2/), c1 = trim(url) )
2100  end if
2101  stat = gt_erankmismatch
2102  cause_c = 'array'
2103  goto 999
2104  end if
2105  ! 入力ファイル中のデータの配列形状取得
2106  ! Get shape of data in an input file
2107  call inquire( var = var , dimord = 1, & ! (in)
2108  & allcount = allcount, err = inq_err ) ! (out)
2109  if ( .not. inq_err ) then
2110  data_shape(1) = allcount
2111  else
2112  data_shape(1) = 1
2113  end if
2114  call inquire( var = var , dimord = 2, & ! (in)
2115  & allcount = allcount, err = inq_err ) ! (out)
2116  if ( .not. inq_err ) then
2117  data_shape(2) = allcount
2118  else
2119  data_shape(2) = 1
2120  end if
2121  ! 引数の配列形状整形
2122  ! Arrange shape of an argument
2123  !
2124  array_shape_check = array_shape
2125  sd = 1
2126  do i = 1, 2 - 1
2127  if ( array_shape_check(sd) == 1 ) then
2128  array_shape_check(sd:2) = cshift( array_shape_check(sd:2), 1, 1 )
2129  else
2130  sd = sd + 1
2131  end if
2132  end do
2133  ! 配列形状の比較
2134  ! Compare shapes
2135  !
2136  if ( .not. all( array_shape_check == data_shape ) ) then
2137  if ( .not. present_and_true(quiet) ) then
2138  call messagenotify('W', subname, &
2139  & 'Shape of data (%c) is (%c), shape of argument is (%c)', &
2140  & c1 = trim( url ), &
2141  & c2 = trim( tochar( data_shape(1:rank) ) ), &
2142  & c3 = trim( tochar( array_shape_check(1:rank) ) ) )
2143  end if
2144  stat = gt_eargsizemismatch
2145  cause_c = 'array'
2146  goto 999
2147  end if
2148  !-------------------------------------
2149  ! データ取得
2150  ! Get data
2151  call inquire( var = var, & ! (in)
2152  & size = domain ) ! (out)
2153  if ( allocated( array_tmp ) ) deallocate( array_tmp )
2154  allocate( array_tmp(array_allsize) )
2155  call get( var, array_tmp, domain )
2156  array = reshape( array_tmp, array_shape )
2157  deallocate( array_tmp )
2158  call close( var )
2159  !-------------------------------------
2160  ! データファイル名と切り出し範囲の印字
2161  ! Print data filename and clipping range
2162  call actual_iorange_dump(url, & ! (in)
2163  & actual_url, returned_time, & ! (out) optional
2164  & time_name = tname, & ! (in) optional
2165  & err = err) ! (out) optional
2166  if ( .not. present_and_true(quiet) ) then
2167  call messagenotify('M', subname, 'Input %c', c1=trim(actual_url), rank_mpi = -1)
2168  end if
2169 999 continue
2170  call storeerror(stat, subname, err, cause_c)
2171 end subroutine historygetreal2
2172 subroutine historygetreal3(file, varname, array, range, &
2173  & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
2175  use gtdata_generic, only: open, inquire, close, get
2176  use dc_string, only: tochar, split, joinchar, stoa
2179  use dc_regex, only: match
2180  use dc_types, only: string, dp, sp
2181  use dc_message, only: messagenotify
2182  use dc_trace, only: dbgmessage
2185  implicit none
2186  character(*), intent(in):: file
2187  character(*), intent(in):: varname
2188  character(*), intent(in), optional:: range
2189  logical, intent(in), optional:: quiet
2190  logical, intent(in), optional:: flag_mpi_split
2191  real(DP), intent(out), optional:: returned_time ! データの時刻
2192  logical, intent(out), optional:: flag_time_exist
2193  logical, intent(out), optional:: err
2194  real(SP), intent(out) :: array(:,:,:)
2195  real(SP), allocatable :: array_tmp(:)
2196  integer:: array_allsize
2197  integer:: array_shape(3), data_shape(3), array_shape_check(3)
2198  integer:: allcount
2199  integer:: i, sd
2200  logical:: inq_err
2201  type(gt_variable):: var
2202  character(STRING):: file_work, url, actual_url
2203  integer:: rank, alldims, array_rank
2204  integer:: domain
2205  character(STRING):: tname
2206  integer:: stat
2207  character(STRING):: cause_c
2208  character(*), parameter :: subname = "HistoryGetReal3"
2209  interface
2210  subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
2211  character(*), intent(in):: file
2212  character(*), intent(in):: varname
2213  character(*), intent(out):: url
2214  character(*), intent(in), optional:: range
2215  logical, intent(out), optional:: flag_time_exist
2216  character(*), intent(out), optional:: time_name
2217  logical, intent(out), optional:: err
2218  end subroutine lookup_growable_url
2219  end interface
2220  interface
2221  subroutine actual_iorange_dump(url, actual_url, returned_time, time_name, err)
2222  use dc_types, only: dp
2223  character(*), intent(in) :: url ! 変数 URL
2224  character(*), intent(out), optional :: actual_url
2225  ! 正確な入出力範囲指定
2226  real(DP), intent(out), optional:: returned_time ! データの時刻
2227  character(*), intent(in), optional:: time_name ! 時刻次元の名称
2228  logical, intent(out), optional :: err ! エラーのフラグ
2229  end subroutine actual_iorange_dump
2230  end interface
2231  interface
2232  function file_rename_mpi( file ) result(result)
2233  use dc_types, only: string
2234  character(*), intent(in):: file
2235  character(STRING):: result
2236  end function file_rename_mpi
2237  end interface
2238  continue
2239  cause_c = ''
2240  stat = dc_noerr
2241  file_work = file
2242  array_shape = shape( array )
2243  array_allsize = size( array )
2244  ! ファイル名の変更 (MPI 用)
2245  ! Change filename (for MPI)
2246  !
2247  if ( present_and_true( flag_mpi_split ) ) &
2248  & file_work = file_rename_mpi( file_work )
2249  ! 最新時刻の URL 取得
2250  ! Get URL of latest time
2251  !
2252  call lookup_growable_url(file_work, varname, url, range, &
2253  & flag_time_exist = flag_time_exist, time_name = tname, err = err)
2254  if ( present_and_true(err) ) then
2255  stat = gt_enoturl
2256  cause_c = url
2257  goto 999
2258  end if
2259  ! ファイルオープン
2260  ! File open
2261  call open( var, url, err = err )
2262  if ( present_and_true(err) ) then
2263  stat = gt_enoturl
2264  cause_c = url
2265  goto 999
2266  end if
2267  !-------------------------------------------------------------------
2268  ! 配列形状のチェック
2269  ! Check array shape
2270  !-------------------------------------------------------------------
2271  ! 入力ファイル中のデータの次元数
2272  ! Get size of dimesions in data of an input file
2273  !
2274  call inquire( var = var, & ! (in)
2275  & rank = rank, alldims = alldims ) ! (out)
2276  ! 引数の次元数のチェック (縮退されている場合には減らす)
2277  ! Check size of dimensions of an argument (If any dimension degenerated, size of dimensions is decreased)
2278  array_rank = 3
2279  if ( size( array, 1 ) == 1 ) array_rank = array_rank - 1
2280  if ( size( array, 2 ) == 1 ) array_rank = array_rank - 1
2281  if ( size( array, 3 ) == 1 ) array_rank = array_rank - 1
2282  ! 次元数の比較
2283  ! Compare sizes of dimensions
2284  !
2285  if ( .not. 3 == rank .and. .not. array_rank == rank ) then
2286  if ( .not. present_and_true(quiet) ) then
2287  call messagenotify('W', subname, &
2288  & 'Rank of data (%c) is "%d", rank of argument is "%d"', &
2289  & i = (/rank, 3/), c1 = trim(url) )
2290  end if
2291  stat = gt_erankmismatch
2292  cause_c = 'array'
2293  goto 999
2294  end if
2295  ! 入力ファイル中のデータの配列形状取得
2296  ! Get shape of data in an input file
2297  call inquire( var = var , dimord = 1, & ! (in)
2298  & allcount = allcount, err = inq_err ) ! (out)
2299  if ( .not. inq_err ) then
2300  data_shape(1) = allcount
2301  else
2302  data_shape(1) = 1
2303  end if
2304  call inquire( var = var , dimord = 2, & ! (in)
2305  & allcount = allcount, err = inq_err ) ! (out)
2306  if ( .not. inq_err ) then
2307  data_shape(2) = allcount
2308  else
2309  data_shape(2) = 1
2310  end if
2311  call inquire( var = var , dimord = 3, & ! (in)
2312  & allcount = allcount, err = inq_err ) ! (out)
2313  if ( .not. inq_err ) then
2314  data_shape(3) = allcount
2315  else
2316  data_shape(3) = 1
2317  end if
2318  ! 引数の配列形状整形
2319  ! Arrange shape of an argument
2320  !
2321  array_shape_check = array_shape
2322  sd = 1
2323  do i = 1, 3 - 1
2324  if ( array_shape_check(sd) == 1 ) then
2325  array_shape_check(sd:3) = cshift( array_shape_check(sd:3), 1, 1 )
2326  else
2327  sd = sd + 1
2328  end if
2329  end do
2330  ! 配列形状の比較
2331  ! Compare shapes
2332  !
2333  if ( .not. all( array_shape_check == data_shape ) ) then
2334  if ( .not. present_and_true(quiet) ) then
2335  call messagenotify('W', subname, &
2336  & 'Shape of data (%c) is (%c), shape of argument is (%c)', &
2337  & c1 = trim( url ), &
2338  & c2 = trim( tochar( data_shape(1:rank) ) ), &
2339  & c3 = trim( tochar( array_shape_check(1:rank) ) ) )
2340  end if
2341  stat = gt_eargsizemismatch
2342  cause_c = 'array'
2343  goto 999
2344  end if
2345  !-------------------------------------
2346  ! データ取得
2347  ! Get data
2348  call inquire( var = var, & ! (in)
2349  & size = domain ) ! (out)
2350  if ( allocated( array_tmp ) ) deallocate( array_tmp )
2351  allocate( array_tmp(array_allsize) )
2352  call get( var, array_tmp, domain )
2353  array = reshape( array_tmp, array_shape )
2354  deallocate( array_tmp )
2355  call close( var )
2356  !-------------------------------------
2357  ! データファイル名と切り出し範囲の印字
2358  ! Print data filename and clipping range
2359  call actual_iorange_dump(url, & ! (in)
2360  & actual_url, returned_time, & ! (out) optional
2361  & time_name = tname, & ! (in) optional
2362  & err = err) ! (out) optional
2363  if ( .not. present_and_true(quiet) ) then
2364  call messagenotify('M', subname, 'Input %c', c1=trim(actual_url), rank_mpi = -1)
2365  end if
2366 999 continue
2367  call storeerror(stat, subname, err, cause_c)
2368 end subroutine historygetreal3
2369 subroutine historygetreal4(file, varname, array, range, &
2370  & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
2372  use gtdata_generic, only: open, inquire, close, get
2373  use dc_string, only: tochar, split, joinchar, stoa
2376  use dc_regex, only: match
2377  use dc_types, only: string, dp, sp
2378  use dc_message, only: messagenotify
2379  use dc_trace, only: dbgmessage
2382  implicit none
2383  character(*), intent(in):: file
2384  character(*), intent(in):: varname
2385  character(*), intent(in), optional:: range
2386  logical, intent(in), optional:: quiet
2387  logical, intent(in), optional:: flag_mpi_split
2388  real(DP), intent(out), optional:: returned_time ! データの時刻
2389  logical, intent(out), optional:: flag_time_exist
2390  logical, intent(out), optional:: err
2391  real(SP), intent(out) :: array(:,:,:,:)
2392  real(SP), allocatable :: array_tmp(:)
2393  integer:: array_allsize
2394  integer:: array_shape(4), data_shape(4), array_shape_check(4)
2395  integer:: allcount
2396  integer:: i, sd
2397  logical:: inq_err
2398  type(gt_variable):: var
2399  character(STRING):: file_work, url, actual_url
2400  integer:: rank, alldims, array_rank
2401  integer:: domain
2402  character(STRING):: tname
2403  integer:: stat
2404  character(STRING):: cause_c
2405  character(*), parameter :: subname = "HistoryGetReal4"
2406  interface
2407  subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
2408  character(*), intent(in):: file
2409  character(*), intent(in):: varname
2410  character(*), intent(out):: url
2411  character(*), intent(in), optional:: range
2412  logical, intent(out), optional:: flag_time_exist
2413  character(*), intent(out), optional:: time_name
2414  logical, intent(out), optional:: err
2415  end subroutine lookup_growable_url
2416  end interface
2417  interface
2418  subroutine actual_iorange_dump(url, actual_url, returned_time, time_name, err)
2419  use dc_types, only: dp
2420  character(*), intent(in) :: url ! 変数 URL
2421  character(*), intent(out), optional :: actual_url
2422  ! 正確な入出力範囲指定
2423  real(DP), intent(out), optional:: returned_time ! データの時刻
2424  character(*), intent(in), optional:: time_name ! 時刻次元の名称
2425  logical, intent(out), optional :: err ! エラーのフラグ
2426  end subroutine actual_iorange_dump
2427  end interface
2428  interface
2429  function file_rename_mpi( file ) result(result)
2430  use dc_types, only: string
2431  character(*), intent(in):: file
2432  character(STRING):: result
2433  end function file_rename_mpi
2434  end interface
2435  continue
2436  cause_c = ''
2437  stat = dc_noerr
2438  file_work = file
2439  array_shape = shape( array )
2440  array_allsize = size( array )
2441  ! ファイル名の変更 (MPI 用)
2442  ! Change filename (for MPI)
2443  !
2444  if ( present_and_true( flag_mpi_split ) ) &
2445  & file_work = file_rename_mpi( file_work )
2446  ! 最新時刻の URL 取得
2447  ! Get URL of latest time
2448  !
2449  call lookup_growable_url(file_work, varname, url, range, &
2450  & flag_time_exist = flag_time_exist, time_name = tname, err = err)
2451  if ( present_and_true(err) ) then
2452  stat = gt_enoturl
2453  cause_c = url
2454  goto 999
2455  end if
2456  ! ファイルオープン
2457  ! File open
2458  call open( var, url, err = err )
2459  if ( present_and_true(err) ) then
2460  stat = gt_enoturl
2461  cause_c = url
2462  goto 999
2463  end if
2464  !-------------------------------------------------------------------
2465  ! 配列形状のチェック
2466  ! Check array shape
2467  !-------------------------------------------------------------------
2468  ! 入力ファイル中のデータの次元数
2469  ! Get size of dimesions in data of an input file
2470  !
2471  call inquire( var = var, & ! (in)
2472  & rank = rank, alldims = alldims ) ! (out)
2473  ! 引数の次元数のチェック (縮退されている場合には減らす)
2474  ! Check size of dimensions of an argument (If any dimension degenerated, size of dimensions is decreased)
2475  array_rank = 4
2476  if ( size( array, 1 ) == 1 ) array_rank = array_rank - 1
2477  if ( size( array, 2 ) == 1 ) array_rank = array_rank - 1
2478  if ( size( array, 3 ) == 1 ) array_rank = array_rank - 1
2479  if ( size( array, 4 ) == 1 ) array_rank = array_rank - 1
2480  ! 次元数の比較
2481  ! Compare sizes of dimensions
2482  !
2483  if ( .not. 4 == rank .and. .not. array_rank == rank ) then
2484  if ( .not. present_and_true(quiet) ) then
2485  call messagenotify('W', subname, &
2486  & 'Rank of data (%c) is "%d", rank of argument is "%d"', &
2487  & i = (/rank, 4/), c1 = trim(url) )
2488  end if
2489  stat = gt_erankmismatch
2490  cause_c = 'array'
2491  goto 999
2492  end if
2493  ! 入力ファイル中のデータの配列形状取得
2494  ! Get shape of data in an input file
2495  call inquire( var = var , dimord = 1, & ! (in)
2496  & allcount = allcount, err = inq_err ) ! (out)
2497  if ( .not. inq_err ) then
2498  data_shape(1) = allcount
2499  else
2500  data_shape(1) = 1
2501  end if
2502  call inquire( var = var , dimord = 2, & ! (in)
2503  & allcount = allcount, err = inq_err ) ! (out)
2504  if ( .not. inq_err ) then
2505  data_shape(2) = allcount
2506  else
2507  data_shape(2) = 1
2508  end if
2509  call inquire( var = var , dimord = 3, & ! (in)
2510  & allcount = allcount, err = inq_err ) ! (out)
2511  if ( .not. inq_err ) then
2512  data_shape(3) = allcount
2513  else
2514  data_shape(3) = 1
2515  end if
2516  call inquire( var = var , dimord = 4, & ! (in)
2517  & allcount = allcount, err = inq_err ) ! (out)
2518  if ( .not. inq_err ) then
2519  data_shape(4) = allcount
2520  else
2521  data_shape(4) = 1
2522  end if
2523  ! 引数の配列形状整形
2524  ! Arrange shape of an argument
2525  !
2526  array_shape_check = array_shape
2527  sd = 1
2528  do i = 1, 4 - 1
2529  if ( array_shape_check(sd) == 1 ) then
2530  array_shape_check(sd:4) = cshift( array_shape_check(sd:4), 1, 1 )
2531  else
2532  sd = sd + 1
2533  end if
2534  end do
2535  ! 配列形状の比較
2536  ! Compare shapes
2537  !
2538  if ( .not. all( array_shape_check == data_shape ) ) then
2539  if ( .not. present_and_true(quiet) ) then
2540  call messagenotify('W', subname, &
2541  & 'Shape of data (%c) is (%c), shape of argument is (%c)', &
2542  & c1 = trim( url ), &
2543  & c2 = trim( tochar( data_shape(1:rank) ) ), &
2544  & c3 = trim( tochar( array_shape_check(1:rank) ) ) )
2545  end if
2546  stat = gt_eargsizemismatch
2547  cause_c = 'array'
2548  goto 999
2549  end if
2550  !-------------------------------------
2551  ! データ取得
2552  ! Get data
2553  call inquire( var = var, & ! (in)
2554  & size = domain ) ! (out)
2555  if ( allocated( array_tmp ) ) deallocate( array_tmp )
2556  allocate( array_tmp(array_allsize) )
2557  call get( var, array_tmp, domain )
2558  array = reshape( array_tmp, array_shape )
2559  deallocate( array_tmp )
2560  call close( var )
2561  !-------------------------------------
2562  ! データファイル名と切り出し範囲の印字
2563  ! Print data filename and clipping range
2564  call actual_iorange_dump(url, & ! (in)
2565  & actual_url, returned_time, & ! (out) optional
2566  & time_name = tname, & ! (in) optional
2567  & err = err) ! (out) optional
2568  if ( .not. present_and_true(quiet) ) then
2569  call messagenotify('M', subname, 'Input %c', c1=trim(actual_url), rank_mpi = -1)
2570  end if
2571 999 continue
2572  call storeerror(stat, subname, err, cause_c)
2573 end subroutine historygetreal4
2574 subroutine historygetreal5(file, varname, array, range, &
2575  & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
2577  use gtdata_generic, only: open, inquire, close, get
2578  use dc_string, only: tochar, split, joinchar, stoa
2581  use dc_regex, only: match
2582  use dc_types, only: string, dp, sp
2583  use dc_message, only: messagenotify
2584  use dc_trace, only: dbgmessage
2587  implicit none
2588  character(*), intent(in):: file
2589  character(*), intent(in):: varname
2590  character(*), intent(in), optional:: range
2591  logical, intent(in), optional:: quiet
2592  logical, intent(in), optional:: flag_mpi_split
2593  real(DP), intent(out), optional:: returned_time ! データの時刻
2594  logical, intent(out), optional:: flag_time_exist
2595  logical, intent(out), optional:: err
2596  real(SP), intent(out) :: array(:,:,:,:,:)
2597  real(SP), allocatable :: array_tmp(:)
2598  integer:: array_allsize
2599  integer:: array_shape(5), data_shape(5), array_shape_check(5)
2600  integer:: allcount
2601  integer:: i, sd
2602  logical:: inq_err
2603  type(gt_variable):: var
2604  character(STRING):: file_work, url, actual_url
2605  integer:: rank, alldims, array_rank
2606  integer:: domain
2607  character(STRING):: tname
2608  integer:: stat
2609  character(STRING):: cause_c
2610  character(*), parameter :: subname = "HistoryGetReal5"
2611  interface
2612  subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
2613  character(*), intent(in):: file
2614  character(*), intent(in):: varname
2615  character(*), intent(out):: url
2616  character(*), intent(in), optional:: range
2617  logical, intent(out), optional:: flag_time_exist
2618  character(*), intent(out), optional:: time_name
2619  logical, intent(out), optional:: err
2620  end subroutine lookup_growable_url
2621  end interface
2622  interface
2623  subroutine actual_iorange_dump(url, actual_url, returned_time, time_name, err)
2624  use dc_types, only: dp
2625  character(*), intent(in) :: url ! 変数 URL
2626  character(*), intent(out), optional :: actual_url
2627  ! 正確な入出力範囲指定
2628  real(DP), intent(out), optional:: returned_time ! データの時刻
2629  character(*), intent(in), optional:: time_name ! 時刻次元の名称
2630  logical, intent(out), optional :: err ! エラーのフラグ
2631  end subroutine actual_iorange_dump
2632  end interface
2633  interface
2634  function file_rename_mpi( file ) result(result)
2635  use dc_types, only: string
2636  character(*), intent(in):: file
2637  character(STRING):: result
2638  end function file_rename_mpi
2639  end interface
2640  continue
2641  cause_c = ''
2642  stat = dc_noerr
2643  file_work = file
2644  array_shape = shape( array )
2645  array_allsize = size( array )
2646  ! ファイル名の変更 (MPI 用)
2647  ! Change filename (for MPI)
2648  !
2649  if ( present_and_true( flag_mpi_split ) ) &
2650  & file_work = file_rename_mpi( file_work )
2651  ! 最新時刻の URL 取得
2652  ! Get URL of latest time
2653  !
2654  call lookup_growable_url(file_work, varname, url, range, &
2655  & flag_time_exist = flag_time_exist, time_name = tname, err = err)
2656  if ( present_and_true(err) ) then
2657  stat = gt_enoturl
2658  cause_c = url
2659  goto 999
2660  end if
2661  ! ファイルオープン
2662  ! File open
2663  call open( var, url, err = err )
2664  if ( present_and_true(err) ) then
2665  stat = gt_enoturl
2666  cause_c = url
2667  goto 999
2668  end if
2669  !-------------------------------------------------------------------
2670  ! 配列形状のチェック
2671  ! Check array shape
2672  !-------------------------------------------------------------------
2673  ! 入力ファイル中のデータの次元数
2674  ! Get size of dimesions in data of an input file
2675  !
2676  call inquire( var = var, & ! (in)
2677  & rank = rank, alldims = alldims ) ! (out)
2678  ! 引数の次元数のチェック (縮退されている場合には減らす)
2679  ! Check size of dimensions of an argument (If any dimension degenerated, size of dimensions is decreased)
2680  array_rank = 5
2681  if ( size( array, 1 ) == 1 ) array_rank = array_rank - 1
2682  if ( size( array, 2 ) == 1 ) array_rank = array_rank - 1
2683  if ( size( array, 3 ) == 1 ) array_rank = array_rank - 1
2684  if ( size( array, 4 ) == 1 ) array_rank = array_rank - 1
2685  if ( size( array, 5 ) == 1 ) array_rank = array_rank - 1
2686  ! 次元数の比較
2687  ! Compare sizes of dimensions
2688  !
2689  if ( .not. 5 == rank .and. .not. array_rank == rank ) then
2690  if ( .not. present_and_true(quiet) ) then
2691  call messagenotify('W', subname, &
2692  & 'Rank of data (%c) is "%d", rank of argument is "%d"', &
2693  & i = (/rank, 5/), c1 = trim(url) )
2694  end if
2695  stat = gt_erankmismatch
2696  cause_c = 'array'
2697  goto 999
2698  end if
2699  ! 入力ファイル中のデータの配列形状取得
2700  ! Get shape of data in an input file
2701  call inquire( var = var , dimord = 1, & ! (in)
2702  & allcount = allcount, err = inq_err ) ! (out)
2703  if ( .not. inq_err ) then
2704  data_shape(1) = allcount
2705  else
2706  data_shape(1) = 1
2707  end if
2708  call inquire( var = var , dimord = 2, & ! (in)
2709  & allcount = allcount, err = inq_err ) ! (out)
2710  if ( .not. inq_err ) then
2711  data_shape(2) = allcount
2712  else
2713  data_shape(2) = 1
2714  end if
2715  call inquire( var = var , dimord = 3, & ! (in)
2716  & allcount = allcount, err = inq_err ) ! (out)
2717  if ( .not. inq_err ) then
2718  data_shape(3) = allcount
2719  else
2720  data_shape(3) = 1
2721  end if
2722  call inquire( var = var , dimord = 4, & ! (in)
2723  & allcount = allcount, err = inq_err ) ! (out)
2724  if ( .not. inq_err ) then
2725  data_shape(4) = allcount
2726  else
2727  data_shape(4) = 1
2728  end if
2729  call inquire( var = var , dimord = 5, & ! (in)
2730  & allcount = allcount, err = inq_err ) ! (out)
2731  if ( .not. inq_err ) then
2732  data_shape(5) = allcount
2733  else
2734  data_shape(5) = 1
2735  end if
2736  ! 引数の配列形状整形
2737  ! Arrange shape of an argument
2738  !
2739  array_shape_check = array_shape
2740  sd = 1
2741  do i = 1, 5 - 1
2742  if ( array_shape_check(sd) == 1 ) then
2743  array_shape_check(sd:5) = cshift( array_shape_check(sd:5), 1, 1 )
2744  else
2745  sd = sd + 1
2746  end if
2747  end do
2748  ! 配列形状の比較
2749  ! Compare shapes
2750  !
2751  if ( .not. all( array_shape_check == data_shape ) ) then
2752  if ( .not. present_and_true(quiet) ) then
2753  call messagenotify('W', subname, &
2754  & 'Shape of data (%c) is (%c), shape of argument is (%c)', &
2755  & c1 = trim( url ), &
2756  & c2 = trim( tochar( data_shape(1:rank) ) ), &
2757  & c3 = trim( tochar( array_shape_check(1:rank) ) ) )
2758  end if
2759  stat = gt_eargsizemismatch
2760  cause_c = 'array'
2761  goto 999
2762  end if
2763  !-------------------------------------
2764  ! データ取得
2765  ! Get data
2766  call inquire( var = var, & ! (in)
2767  & size = domain ) ! (out)
2768  if ( allocated( array_tmp ) ) deallocate( array_tmp )
2769  allocate( array_tmp(array_allsize) )
2770  call get( var, array_tmp, domain )
2771  array = reshape( array_tmp, array_shape )
2772  deallocate( array_tmp )
2773  call close( var )
2774  !-------------------------------------
2775  ! データファイル名と切り出し範囲の印字
2776  ! Print data filename and clipping range
2777  call actual_iorange_dump(url, & ! (in)
2778  & actual_url, returned_time, & ! (out) optional
2779  & time_name = tname, & ! (in) optional
2780  & err = err) ! (out) optional
2781  if ( .not. present_and_true(quiet) ) then
2782  call messagenotify('M', subname, 'Input %c', c1=trim(actual_url), rank_mpi = -1)
2783  end if
2784 999 continue
2785  call storeerror(stat, subname, err, cause_c)
2786 end subroutine historygetreal5
2787 subroutine historygetreal6(file, varname, array, range, &
2788  & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
2790  use gtdata_generic, only: open, inquire, close, get
2791  use dc_string, only: tochar, split, joinchar, stoa
2794  use dc_regex, only: match
2795  use dc_types, only: string, dp, sp
2796  use dc_message, only: messagenotify
2797  use dc_trace, only: dbgmessage
2800  implicit none
2801  character(*), intent(in):: file
2802  character(*), intent(in):: varname
2803  character(*), intent(in), optional:: range
2804  logical, intent(in), optional:: quiet
2805  logical, intent(in), optional:: flag_mpi_split
2806  real(DP), intent(out), optional:: returned_time ! データの時刻
2807  logical, intent(out), optional:: flag_time_exist
2808  logical, intent(out), optional:: err
2809  real(SP), intent(out) :: array(:,:,:,:,:,:)
2810  real(SP), allocatable :: array_tmp(:)
2811  integer:: array_allsize
2812  integer:: array_shape(6), data_shape(6), array_shape_check(6)
2813  integer:: allcount
2814  integer:: i, sd
2815  logical:: inq_err
2816  type(gt_variable):: var
2817  character(STRING):: file_work, url, actual_url
2818  integer:: rank, alldims, array_rank
2819  integer:: domain
2820  character(STRING):: tname
2821  integer:: stat
2822  character(STRING):: cause_c
2823  character(*), parameter :: subname = "HistoryGetReal6"
2824  interface
2825  subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
2826  character(*), intent(in):: file
2827  character(*), intent(in):: varname
2828  character(*), intent(out):: url
2829  character(*), intent(in), optional:: range
2830  logical, intent(out), optional:: flag_time_exist
2831  character(*), intent(out), optional:: time_name
2832  logical, intent(out), optional:: err
2833  end subroutine lookup_growable_url
2834  end interface
2835  interface
2836  subroutine actual_iorange_dump(url, actual_url, returned_time, time_name, err)
2837  use dc_types, only: dp
2838  character(*), intent(in) :: url ! 変数 URL
2839  character(*), intent(out), optional :: actual_url
2840  ! 正確な入出力範囲指定
2841  real(DP), intent(out), optional:: returned_time ! データの時刻
2842  character(*), intent(in), optional:: time_name ! 時刻次元の名称
2843  logical, intent(out), optional :: err ! エラーのフラグ
2844  end subroutine actual_iorange_dump
2845  end interface
2846  interface
2847  function file_rename_mpi( file ) result(result)
2848  use dc_types, only: string
2849  character(*), intent(in):: file
2850  character(STRING):: result
2851  end function file_rename_mpi
2852  end interface
2853  continue
2854  cause_c = ''
2855  stat = dc_noerr
2856  file_work = file
2857  array_shape = shape( array )
2858  array_allsize = size( array )
2859  ! ファイル名の変更 (MPI 用)
2860  ! Change filename (for MPI)
2861  !
2862  if ( present_and_true( flag_mpi_split ) ) &
2863  & file_work = file_rename_mpi( file_work )
2864  ! 最新時刻の URL 取得
2865  ! Get URL of latest time
2866  !
2867  call lookup_growable_url(file_work, varname, url, range, &
2868  & flag_time_exist = flag_time_exist, time_name = tname, err = err)
2869  if ( present_and_true(err) ) then
2870  stat = gt_enoturl
2871  cause_c = url
2872  goto 999
2873  end if
2874  ! ファイルオープン
2875  ! File open
2876  call open( var, url, err = err )
2877  if ( present_and_true(err) ) then
2878  stat = gt_enoturl
2879  cause_c = url
2880  goto 999
2881  end if
2882  !-------------------------------------------------------------------
2883  ! 配列形状のチェック
2884  ! Check array shape
2885  !-------------------------------------------------------------------
2886  ! 入力ファイル中のデータの次元数
2887  ! Get size of dimesions in data of an input file
2888  !
2889  call inquire( var = var, & ! (in)
2890  & rank = rank, alldims = alldims ) ! (out)
2891  ! 引数の次元数のチェック (縮退されている場合には減らす)
2892  ! Check size of dimensions of an argument (If any dimension degenerated, size of dimensions is decreased)
2893  array_rank = 6
2894  if ( size( array, 1 ) == 1 ) array_rank = array_rank - 1
2895  if ( size( array, 2 ) == 1 ) array_rank = array_rank - 1
2896  if ( size( array, 3 ) == 1 ) array_rank = array_rank - 1
2897  if ( size( array, 4 ) == 1 ) array_rank = array_rank - 1
2898  if ( size( array, 5 ) == 1 ) array_rank = array_rank - 1
2899  if ( size( array, 6 ) == 1 ) array_rank = array_rank - 1
2900  ! 次元数の比較
2901  ! Compare sizes of dimensions
2902  !
2903  if ( .not. 6 == rank .and. .not. array_rank == rank ) then
2904  if ( .not. present_and_true(quiet) ) then
2905  call messagenotify('W', subname, &
2906  & 'Rank of data (%c) is "%d", rank of argument is "%d"', &
2907  & i = (/rank, 6/), c1 = trim(url) )
2908  end if
2909  stat = gt_erankmismatch
2910  cause_c = 'array'
2911  goto 999
2912  end if
2913  ! 入力ファイル中のデータの配列形状取得
2914  ! Get shape of data in an input file
2915  call inquire( var = var , dimord = 1, & ! (in)
2916  & allcount = allcount, err = inq_err ) ! (out)
2917  if ( .not. inq_err ) then
2918  data_shape(1) = allcount
2919  else
2920  data_shape(1) = 1
2921  end if
2922  call inquire( var = var , dimord = 2, & ! (in)
2923  & allcount = allcount, err = inq_err ) ! (out)
2924  if ( .not. inq_err ) then
2925  data_shape(2) = allcount
2926  else
2927  data_shape(2) = 1
2928  end if
2929  call inquire( var = var , dimord = 3, & ! (in)
2930  & allcount = allcount, err = inq_err ) ! (out)
2931  if ( .not. inq_err ) then
2932  data_shape(3) = allcount
2933  else
2934  data_shape(3) = 1
2935  end if
2936  call inquire( var = var , dimord = 4, & ! (in)
2937  & allcount = allcount, err = inq_err ) ! (out)
2938  if ( .not. inq_err ) then
2939  data_shape(4) = allcount
2940  else
2941  data_shape(4) = 1
2942  end if
2943  call inquire( var = var , dimord = 5, & ! (in)
2944  & allcount = allcount, err = inq_err ) ! (out)
2945  if ( .not. inq_err ) then
2946  data_shape(5) = allcount
2947  else
2948  data_shape(5) = 1
2949  end if
2950  call inquire( var = var , dimord = 6, & ! (in)
2951  & allcount = allcount, err = inq_err ) ! (out)
2952  if ( .not. inq_err ) then
2953  data_shape(6) = allcount
2954  else
2955  data_shape(6) = 1
2956  end if
2957  ! 引数の配列形状整形
2958  ! Arrange shape of an argument
2959  !
2960  array_shape_check = array_shape
2961  sd = 1
2962  do i = 1, 6 - 1
2963  if ( array_shape_check(sd) == 1 ) then
2964  array_shape_check(sd:6) = cshift( array_shape_check(sd:6), 1, 1 )
2965  else
2966  sd = sd + 1
2967  end if
2968  end do
2969  ! 配列形状の比較
2970  ! Compare shapes
2971  !
2972  if ( .not. all( array_shape_check == data_shape ) ) then
2973  if ( .not. present_and_true(quiet) ) then
2974  call messagenotify('W', subname, &
2975  & 'Shape of data (%c) is (%c), shape of argument is (%c)', &
2976  & c1 = trim( url ), &
2977  & c2 = trim( tochar( data_shape(1:rank) ) ), &
2978  & c3 = trim( tochar( array_shape_check(1:rank) ) ) )
2979  end if
2980  stat = gt_eargsizemismatch
2981  cause_c = 'array'
2982  goto 999
2983  end if
2984  !-------------------------------------
2985  ! データ取得
2986  ! Get data
2987  call inquire( var = var, & ! (in)
2988  & size = domain ) ! (out)
2989  if ( allocated( array_tmp ) ) deallocate( array_tmp )
2990  allocate( array_tmp(array_allsize) )
2991  call get( var, array_tmp, domain )
2992  array = reshape( array_tmp, array_shape )
2993  deallocate( array_tmp )
2994  call close( var )
2995  !-------------------------------------
2996  ! データファイル名と切り出し範囲の印字
2997  ! Print data filename and clipping range
2998  call actual_iorange_dump(url, & ! (in)
2999  & actual_url, returned_time, & ! (out) optional
3000  & time_name = tname, & ! (in) optional
3001  & err = err) ! (out) optional
3002  if ( .not. present_and_true(quiet) ) then
3003  call messagenotify('M', subname, 'Input %c', c1=trim(actual_url), rank_mpi = -1)
3004  end if
3005 999 continue
3006  call storeerror(stat, subname, err, cause_c)
3007 end subroutine historygetreal6
3008 subroutine historygetreal7(file, varname, array, range, &
3009  & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
3011  use gtdata_generic, only: open, inquire, close, get
3012  use dc_string, only: tochar, split, joinchar, stoa
3015  use dc_regex, only: match
3016  use dc_types, only: string, dp, sp
3017  use dc_message, only: messagenotify
3018  use dc_trace, only: dbgmessage
3021  implicit none
3022  character(*), intent(in):: file
3023  character(*), intent(in):: varname
3024  character(*), intent(in), optional:: range
3025  logical, intent(in), optional:: quiet
3026  logical, intent(in), optional:: flag_mpi_split
3027  real(DP), intent(out), optional:: returned_time ! データの時刻
3028  logical, intent(out), optional:: flag_time_exist
3029  logical, intent(out), optional:: err
3030  real(SP), intent(out) :: array(:,:,:,:,:,:,:)
3031  real(SP), allocatable :: array_tmp(:)
3032  integer:: array_allsize
3033  integer:: array_shape(7), data_shape(7), array_shape_check(7)
3034  integer:: allcount
3035  integer:: i, sd
3036  logical:: inq_err
3037  type(gt_variable):: var
3038  character(STRING):: file_work, url, actual_url
3039  integer:: rank, alldims, array_rank
3040  integer:: domain
3041  character(STRING):: tname
3042  integer:: stat
3043  character(STRING):: cause_c
3044  character(*), parameter :: subname = "HistoryGetReal7"
3045  interface
3046  subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
3047  character(*), intent(in):: file
3048  character(*), intent(in):: varname
3049  character(*), intent(out):: url
3050  character(*), intent(in), optional:: range
3051  logical, intent(out), optional:: flag_time_exist
3052  character(*), intent(out), optional:: time_name
3053  logical, intent(out), optional:: err
3054  end subroutine lookup_growable_url
3055  end interface
3056  interface
3057  subroutine actual_iorange_dump(url, actual_url, returned_time, time_name, err)
3058  use dc_types, only: dp
3059  character(*), intent(in) :: url ! 変数 URL
3060  character(*), intent(out), optional :: actual_url
3061  ! 正確な入出力範囲指定
3062  real(DP), intent(out), optional:: returned_time ! データの時刻
3063  character(*), intent(in), optional:: time_name ! 時刻次元の名称
3064  logical, intent(out), optional :: err ! エラーのフラグ
3065  end subroutine actual_iorange_dump
3066  end interface
3067  interface
3068  function file_rename_mpi( file ) result(result)
3069  use dc_types, only: string
3070  character(*), intent(in):: file
3071  character(STRING):: result
3072  end function file_rename_mpi
3073  end interface
3074  continue
3075  cause_c = ''
3076  stat = dc_noerr
3077  file_work = file
3078  array_shape = shape( array )
3079  array_allsize = size( array )
3080  ! ファイル名の変更 (MPI 用)
3081  ! Change filename (for MPI)
3082  !
3083  if ( present_and_true( flag_mpi_split ) ) &
3084  & file_work = file_rename_mpi( file_work )
3085  ! 最新時刻の URL 取得
3086  ! Get URL of latest time
3087  !
3088  call lookup_growable_url(file_work, varname, url, range, &
3089  & flag_time_exist = flag_time_exist, time_name = tname, err = err)
3090  if ( present_and_true(err) ) then
3091  stat = gt_enoturl
3092  cause_c = url
3093  goto 999
3094  end if
3095  ! ファイルオープン
3096  ! File open
3097  call open( var, url, err = err )
3098  if ( present_and_true(err) ) then
3099  stat = gt_enoturl
3100  cause_c = url
3101  goto 999
3102  end if
3103  !-------------------------------------------------------------------
3104  ! 配列形状のチェック
3105  ! Check array shape
3106  !-------------------------------------------------------------------
3107  ! 入力ファイル中のデータの次元数
3108  ! Get size of dimesions in data of an input file
3109  !
3110  call inquire( var = var, & ! (in)
3111  & rank = rank, alldims = alldims ) ! (out)
3112  ! 引数の次元数のチェック (縮退されている場合には減らす)
3113  ! Check size of dimensions of an argument (If any dimension degenerated, size of dimensions is decreased)
3114  array_rank = 7
3115  if ( size( array, 1 ) == 1 ) array_rank = array_rank - 1
3116  if ( size( array, 2 ) == 1 ) array_rank = array_rank - 1
3117  if ( size( array, 3 ) == 1 ) array_rank = array_rank - 1
3118  if ( size( array, 4 ) == 1 ) array_rank = array_rank - 1
3119  if ( size( array, 5 ) == 1 ) array_rank = array_rank - 1
3120  if ( size( array, 6 ) == 1 ) array_rank = array_rank - 1
3121  if ( size( array, 7 ) == 1 ) array_rank = array_rank - 1
3122  ! 次元数の比較
3123  ! Compare sizes of dimensions
3124  !
3125  if ( .not. 7 == rank .and. .not. array_rank == rank ) then
3126  if ( .not. present_and_true(quiet) ) then
3127  call messagenotify('W', subname, &
3128  & 'Rank of data (%c) is "%d", rank of argument is "%d"', &
3129  & i = (/rank, 7/), c1 = trim(url) )
3130  end if
3131  stat = gt_erankmismatch
3132  cause_c = 'array'
3133  goto 999
3134  end if
3135  ! 入力ファイル中のデータの配列形状取得
3136  ! Get shape of data in an input file
3137  call inquire( var = var , dimord = 1, & ! (in)
3138  & allcount = allcount, err = inq_err ) ! (out)
3139  if ( .not. inq_err ) then
3140  data_shape(1) = allcount
3141  else
3142  data_shape(1) = 1
3143  end if
3144  call inquire( var = var , dimord = 2, & ! (in)
3145  & allcount = allcount, err = inq_err ) ! (out)
3146  if ( .not. inq_err ) then
3147  data_shape(2) = allcount
3148  else
3149  data_shape(2) = 1
3150  end if
3151  call inquire( var = var , dimord = 3, & ! (in)
3152  & allcount = allcount, err = inq_err ) ! (out)
3153  if ( .not. inq_err ) then
3154  data_shape(3) = allcount
3155  else
3156  data_shape(3) = 1
3157  end if
3158  call inquire( var = var , dimord = 4, & ! (in)
3159  & allcount = allcount, err = inq_err ) ! (out)
3160  if ( .not. inq_err ) then
3161  data_shape(4) = allcount
3162  else
3163  data_shape(4) = 1
3164  end if
3165  call inquire( var = var , dimord = 5, & ! (in)
3166  & allcount = allcount, err = inq_err ) ! (out)
3167  if ( .not. inq_err ) then
3168  data_shape(5) = allcount
3169  else
3170  data_shape(5) = 1
3171  end if
3172  call inquire( var = var , dimord = 6, & ! (in)
3173  & allcount = allcount, err = inq_err ) ! (out)
3174  if ( .not. inq_err ) then
3175  data_shape(6) = allcount
3176  else
3177  data_shape(6) = 1
3178  end if
3179  call inquire( var = var , dimord = 7, & ! (in)
3180  & allcount = allcount, err = inq_err ) ! (out)
3181  if ( .not. inq_err ) then
3182  data_shape(7) = allcount
3183  else
3184  data_shape(7) = 1
3185  end if
3186  ! 引数の配列形状整形
3187  ! Arrange shape of an argument
3188  !
3189  array_shape_check = array_shape
3190  sd = 1
3191  do i = 1, 7 - 1
3192  if ( array_shape_check(sd) == 1 ) then
3193  array_shape_check(sd:7) = cshift( array_shape_check(sd:7), 1, 1 )
3194  else
3195  sd = sd + 1
3196  end if
3197  end do
3198  ! 配列形状の比較
3199  ! Compare shapes
3200  !
3201  if ( .not. all( array_shape_check == data_shape ) ) then
3202  if ( .not. present_and_true(quiet) ) then
3203  call messagenotify('W', subname, &
3204  & 'Shape of data (%c) is (%c), shape of argument is (%c)', &
3205  & c1 = trim( url ), &
3206  & c2 = trim( tochar( data_shape(1:rank) ) ), &
3207  & c3 = trim( tochar( array_shape_check(1:rank) ) ) )
3208  end if
3209  stat = gt_eargsizemismatch
3210  cause_c = 'array'
3211  goto 999
3212  end if
3213  !-------------------------------------
3214  ! データ取得
3215  ! Get data
3216  call inquire( var = var, & ! (in)
3217  & size = domain ) ! (out)
3218  if ( allocated( array_tmp ) ) deallocate( array_tmp )
3219  allocate( array_tmp(array_allsize) )
3220  call get( var, array_tmp, domain )
3221  array = reshape( array_tmp, array_shape )
3222  deallocate( array_tmp )
3223  call close( var )
3224  !-------------------------------------
3225  ! データファイル名と切り出し範囲の印字
3226  ! Print data filename and clipping range
3227  call actual_iorange_dump(url, & ! (in)
3228  & actual_url, returned_time, & ! (out) optional
3229  & time_name = tname, & ! (in) optional
3230  & err = err) ! (out) optional
3231  if ( .not. present_and_true(quiet) ) then
3232  call messagenotify('M', subname, 'Input %c', c1=trim(actual_url), rank_mpi = -1)
3233  end if
3234 999 continue
3235  call storeerror(stat, subname, err, cause_c)
3236 end subroutine historygetreal7
3237 subroutine historygetint0(file, varname, array, range, &
3238  & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
3240  use gtdata_generic, only: open, inquire, close, get
3241  use dc_string, only: tochar, split, joinchar, stoa
3244  use dc_regex, only: match
3245  use dc_types, only: string, dp
3246  use dc_message, only: messagenotify
3247  use dc_trace, only: dbgmessage
3250  implicit none
3251  character(*), intent(in):: file
3252  character(*), intent(in):: varname
3253  character(*), intent(in), optional:: range
3254  logical, intent(in), optional:: quiet
3255  logical, intent(in), optional:: flag_mpi_split
3256  real(DP), intent(out), optional:: returned_time ! データの時刻
3257  logical, intent(out), optional:: flag_time_exist
3258  logical, intent(out), optional:: err
3259  integer, intent(out) :: array
3260  integer :: array_tmp(1)
3261  type(gt_variable):: var
3262  character(STRING):: file_work, url, actual_url
3263  integer:: rank, alldims, array_rank
3264  integer:: domain
3265  character(STRING):: tname
3266  integer:: stat
3267  character(STRING):: cause_c
3268  character(*), parameter :: subname = "HistoryGetInt0"
3269  interface
3270  subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
3271  character(*), intent(in):: file
3272  character(*), intent(in):: varname
3273  character(*), intent(out):: url
3274  character(*), intent(in), optional:: range
3275  logical, intent(out), optional:: flag_time_exist
3276  character(*), intent(out), optional:: time_name
3277  logical, intent(out), optional:: err
3278  end subroutine lookup_growable_url
3279  end interface
3280  interface
3281  subroutine actual_iorange_dump(url, actual_url, returned_time, time_name, err)
3282  use dc_types, only: dp
3283  character(*), intent(in) :: url ! 変数 URL
3284  character(*), intent(out), optional :: actual_url
3285  ! 正確な入出力範囲指定
3286  real(DP), intent(out), optional:: returned_time ! データの時刻
3287  character(*), intent(in), optional:: time_name ! 時刻次元の名称
3288  logical, intent(out), optional :: err ! エラーのフラグ
3289  end subroutine actual_iorange_dump
3290  end interface
3291  interface
3292  function file_rename_mpi( file ) result(result)
3293  use dc_types, only: string
3294  character(*), intent(in):: file
3295  character(STRING):: result
3296  end function file_rename_mpi
3297  end interface
3298  continue
3299  cause_c = ''
3300  stat = dc_noerr
3301  file_work = file
3302  ! ファイル名の変更 (MPI 用)
3303  ! Change filename (for MPI)
3304  !
3305  if ( present_and_true( flag_mpi_split ) ) &
3306  & file_work = file_rename_mpi( file_work )
3307  ! 最新時刻の URL 取得
3308  ! Get URL of latest time
3309  !
3310  call lookup_growable_url(file_work, varname, url, range, &
3311  & flag_time_exist = flag_time_exist, time_name = tname, err = err)
3312  if ( present_and_true(err) ) then
3313  stat = gt_enoturl
3314  cause_c = url
3315  goto 999
3316  end if
3317  ! ファイルオープン
3318  ! File open
3319  call open( var, url, err = err )
3320  if ( present_and_true(err) ) then
3321  stat = gt_enoturl
3322  cause_c = url
3323  goto 999
3324  end if
3325  !-------------------------------------------------------------------
3326  ! 配列形状のチェック
3327  ! Check array shape
3328  !-------------------------------------------------------------------
3329  ! 入力ファイル中のデータの次元数
3330  ! Get size of dimesions in data of an input file
3331  !
3332  call inquire( var = var, & ! (in)
3333  & rank = rank, alldims = alldims ) ! (out)
3334  ! 引数の次元数のチェック (縮退されている場合には減らす)
3335  ! Check size of dimensions of an argument (If any dimension degenerated, size of dimensions is decreased)
3336  array_rank = 0
3337  ! 次元数の比較
3338  ! Compare sizes of dimensions
3339  !
3340  if ( .not. 0 == rank .and. .not. array_rank == rank ) then
3341  if ( .not. present_and_true(quiet) ) then
3342  call messagenotify('W', subname, &
3343  & 'Rank of data (%c) is "%d", rank of argument is "%d"', &
3344  & i = (/rank, 0/), c1 = trim(url) )
3345  end if
3346  stat = gt_erankmismatch
3347  cause_c = 'array'
3348  goto 999
3349  end if
3350  ! 入力ファイル中のデータの配列形状取得
3351  ! Get shape of data in an input file
3352  !-------------------------------------
3353  ! データ取得
3354  ! Get data
3355  call inquire( var = var, & ! (in)
3356  & size = domain ) ! (out)
3357  call get( var = var, & ! (inout)
3358  & nvalue = domain, & ! (in)
3359  & value = array_tmp) ! (out)
3360  array = array_tmp(1)
3361  call close( var )
3362  !-------------------------------------
3363  ! データファイル名と切り出し範囲の印字
3364  ! Print data filename and clipping range
3365  call actual_iorange_dump(url, & ! (in)
3366  & actual_url, returned_time, & ! (out) optional
3367  & time_name = tname, & ! (in) optional
3368  & err = err) ! (out) optional
3369  if ( .not. present_and_true(quiet) ) then
3370  call messagenotify('M', subname, 'Input %c', c1=trim(actual_url), rank_mpi = -1)
3371  end if
3372 999 continue
3373  call storeerror(stat, subname, err, cause_c)
3374 end subroutine historygetint0
3375 subroutine historygetint1(file, varname, array, range, &
3376  & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
3378  use gtdata_generic, only: open, inquire, close, get
3379  use dc_string, only: tochar, split, joinchar, stoa
3382  use dc_regex, only: match
3383  use dc_types, only: string, dp
3384  use dc_message, only: messagenotify
3385  use dc_trace, only: dbgmessage
3388  implicit none
3389  character(*), intent(in):: file
3390  character(*), intent(in):: varname
3391  character(*), intent(in), optional:: range
3392  logical, intent(in), optional:: quiet
3393  logical, intent(in), optional:: flag_mpi_split
3394  real(DP), intent(out), optional:: returned_time ! データの時刻
3395  logical, intent(out), optional:: flag_time_exist
3396  logical, intent(out), optional:: err
3397  integer, intent(out) :: array(:)
3398  integer, allocatable :: array_tmp(:)
3399  integer:: array_allsize
3400  integer:: array_shape(1), data_shape(1), array_shape_check(1)
3401  integer:: allcount
3402  integer:: i, sd
3403  logical:: inq_err
3404  type(gt_variable):: var
3405  character(STRING):: file_work, url, actual_url
3406  integer:: rank, alldims, array_rank
3407  integer:: domain
3408  character(STRING):: tname
3409  integer:: stat
3410  character(STRING):: cause_c
3411  character(*), parameter :: subname = "HistoryGetInt1"
3412  interface
3413  subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
3414  character(*), intent(in):: file
3415  character(*), intent(in):: varname
3416  character(*), intent(out):: url
3417  character(*), intent(in), optional:: range
3418  logical, intent(out), optional:: flag_time_exist
3419  character(*), intent(out), optional:: time_name
3420  logical, intent(out), optional:: err
3421  end subroutine lookup_growable_url
3422  end interface
3423  interface
3424  subroutine actual_iorange_dump(url, actual_url, returned_time, time_name, err)
3425  use dc_types, only: dp
3426  character(*), intent(in) :: url ! 変数 URL
3427  character(*), intent(out), optional :: actual_url
3428  ! 正確な入出力範囲指定
3429  real(DP), intent(out), optional:: returned_time ! データの時刻
3430  character(*), intent(in), optional:: time_name ! 時刻次元の名称
3431  logical, intent(out), optional :: err ! エラーのフラグ
3432  end subroutine actual_iorange_dump
3433  end interface
3434  interface
3435  function file_rename_mpi( file ) result(result)
3436  use dc_types, only: string
3437  character(*), intent(in):: file
3438  character(STRING):: result
3439  end function file_rename_mpi
3440  end interface
3441  continue
3442  cause_c = ''
3443  stat = dc_noerr
3444  file_work = file
3445  array_shape = shape( array )
3446  array_allsize = size( array )
3447  ! ファイル名の変更 (MPI 用)
3448  ! Change filename (for MPI)
3449  !
3450  if ( present_and_true( flag_mpi_split ) ) &
3451  & file_work = file_rename_mpi( file_work )
3452  ! 最新時刻の URL 取得
3453  ! Get URL of latest time
3454  !
3455  call lookup_growable_url(file_work, varname, url, range, &
3456  & flag_time_exist = flag_time_exist, time_name = tname, err = err)
3457  if ( present_and_true(err) ) then
3458  stat = gt_enoturl
3459  cause_c = url
3460  goto 999
3461  end if
3462  ! ファイルオープン
3463  ! File open
3464  call open( var, url, err = err )
3465  if ( present_and_true(err) ) then
3466  stat = gt_enoturl
3467  cause_c = url
3468  goto 999
3469  end if
3470  !-------------------------------------------------------------------
3471  ! 配列形状のチェック
3472  ! Check array shape
3473  !-------------------------------------------------------------------
3474  ! 入力ファイル中のデータの次元数
3475  ! Get size of dimesions in data of an input file
3476  !
3477  call inquire( var = var, & ! (in)
3478  & rank = rank, alldims = alldims ) ! (out)
3479  ! 引数の次元数のチェック (縮退されている場合には減らす)
3480  ! Check size of dimensions of an argument (If any dimension degenerated, size of dimensions is decreased)
3481  array_rank = 1
3482  if ( size( array, 1 ) == 1 ) array_rank = array_rank - 1
3483  ! 次元数の比較
3484  ! Compare sizes of dimensions
3485  !
3486  if ( .not. 1 == rank .and. .not. array_rank == rank ) then
3487  if ( .not. present_and_true(quiet) ) then
3488  call messagenotify('W', subname, &
3489  & 'Rank of data (%c) is "%d", rank of argument is "%d"', &
3490  & i = (/rank, 1/), c1 = trim(url) )
3491  end if
3492  stat = gt_erankmismatch
3493  cause_c = 'array'
3494  goto 999
3495  end if
3496  ! 入力ファイル中のデータの配列形状取得
3497  ! Get shape of data in an input file
3498  call inquire( var = var , dimord = 1, & ! (in)
3499  & allcount = allcount, err = inq_err ) ! (out)
3500  if ( .not. inq_err ) then
3501  data_shape(1) = allcount
3502  else
3503  data_shape(1) = 1
3504  end if
3505  ! 引数の配列形状整形
3506  ! Arrange shape of an argument
3507  !
3508  array_shape_check = array_shape
3509  sd = 1
3510  do i = 1, 1 - 1
3511  if ( array_shape_check(sd) == 1 ) then
3512  array_shape_check(sd:1) = cshift( array_shape_check(sd:1), 1, 1 )
3513  else
3514  sd = sd + 1
3515  end if
3516  end do
3517  ! 配列形状の比較
3518  ! Compare shapes
3519  !
3520  if ( .not. all( array_shape_check == data_shape ) ) then
3521  if ( .not. present_and_true(quiet) ) then
3522  call messagenotify('W', subname, &
3523  & 'Shape of data (%c) is (%c), shape of argument is (%c)', &
3524  & c1 = trim( url ), &
3525  & c2 = trim( tochar( data_shape(1:rank) ) ), &
3526  & c3 = trim( tochar( array_shape_check(1:rank) ) ) )
3527  end if
3528  stat = gt_eargsizemismatch
3529  cause_c = 'array'
3530  goto 999
3531  end if
3532  !-------------------------------------
3533  ! データ取得
3534  ! Get data
3535  call inquire( var = var, & ! (in)
3536  & size = domain ) ! (out)
3537  if ( allocated( array_tmp ) ) deallocate( array_tmp )
3538  allocate( array_tmp(array_allsize) )
3539  call get( var, array_tmp, domain )
3540  array = reshape( array_tmp, array_shape )
3541  deallocate( array_tmp )
3542  call close( var )
3543  !-------------------------------------
3544  ! データファイル名と切り出し範囲の印字
3545  ! Print data filename and clipping range
3546  call actual_iorange_dump(url, & ! (in)
3547  & actual_url, returned_time, & ! (out) optional
3548  & time_name = tname, & ! (in) optional
3549  & err = err) ! (out) optional
3550  if ( .not. present_and_true(quiet) ) then
3551  call messagenotify('M', subname, 'Input %c', c1=trim(actual_url), rank_mpi = -1)
3552  end if
3553 999 continue
3554  call storeerror(stat, subname, err, cause_c)
3555 end subroutine historygetint1
3556 subroutine historygetint2(file, varname, array, range, &
3557  & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
3559  use gtdata_generic, only: open, inquire, close, get
3560  use dc_string, only: tochar, split, joinchar, stoa
3563  use dc_regex, only: match
3564  use dc_types, only: string, dp
3565  use dc_message, only: messagenotify
3566  use dc_trace, only: dbgmessage
3569  implicit none
3570  character(*), intent(in):: file
3571  character(*), intent(in):: varname
3572  character(*), intent(in), optional:: range
3573  logical, intent(in), optional:: quiet
3574  logical, intent(in), optional:: flag_mpi_split
3575  real(DP), intent(out), optional:: returned_time ! データの時刻
3576  logical, intent(out), optional:: flag_time_exist
3577  logical, intent(out), optional:: err
3578  integer, intent(out) :: array(:,:)
3579  integer, allocatable :: array_tmp(:)
3580  integer:: array_allsize
3581  integer:: array_shape(2), data_shape(2), array_shape_check(2)
3582  integer:: allcount
3583  integer:: i, sd
3584  logical:: inq_err
3585  type(gt_variable):: var
3586  character(STRING):: file_work, url, actual_url
3587  integer:: rank, alldims, array_rank
3588  integer:: domain
3589  character(STRING):: tname
3590  integer:: stat
3591  character(STRING):: cause_c
3592  character(*), parameter :: subname = "HistoryGetInt2"
3593  interface
3594  subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
3595  character(*), intent(in):: file
3596  character(*), intent(in):: varname
3597  character(*), intent(out):: url
3598  character(*), intent(in), optional:: range
3599  logical, intent(out), optional:: flag_time_exist
3600  character(*), intent(out), optional:: time_name
3601  logical, intent(out), optional:: err
3602  end subroutine lookup_growable_url
3603  end interface
3604  interface
3605  subroutine actual_iorange_dump(url, actual_url, returned_time, time_name, err)
3606  use dc_types, only: dp
3607  character(*), intent(in) :: url ! 変数 URL
3608  character(*), intent(out), optional :: actual_url
3609  ! 正確な入出力範囲指定
3610  real(DP), intent(out), optional:: returned_time ! データの時刻
3611  character(*), intent(in), optional:: time_name ! 時刻次元の名称
3612  logical, intent(out), optional :: err ! エラーのフラグ
3613  end subroutine actual_iorange_dump
3614  end interface
3615  interface
3616  function file_rename_mpi( file ) result(result)
3617  use dc_types, only: string
3618  character(*), intent(in):: file
3619  character(STRING):: result
3620  end function file_rename_mpi
3621  end interface
3622  continue
3623  cause_c = ''
3624  stat = dc_noerr
3625  file_work = file
3626  array_shape = shape( array )
3627  array_allsize = size( array )
3628  ! ファイル名の変更 (MPI 用)
3629  ! Change filename (for MPI)
3630  !
3631  if ( present_and_true( flag_mpi_split ) ) &
3632  & file_work = file_rename_mpi( file_work )
3633  ! 最新時刻の URL 取得
3634  ! Get URL of latest time
3635  !
3636  call lookup_growable_url(file_work, varname, url, range, &
3637  & flag_time_exist = flag_time_exist, time_name = tname, err = err)
3638  if ( present_and_true(err) ) then
3639  stat = gt_enoturl
3640  cause_c = url
3641  goto 999
3642  end if
3643  ! ファイルオープン
3644  ! File open
3645  call open( var, url, err = err )
3646  if ( present_and_true(err) ) then
3647  stat = gt_enoturl
3648  cause_c = url
3649  goto 999
3650  end if
3651  !-------------------------------------------------------------------
3652  ! 配列形状のチェック
3653  ! Check array shape
3654  !-------------------------------------------------------------------
3655  ! 入力ファイル中のデータの次元数
3656  ! Get size of dimesions in data of an input file
3657  !
3658  call inquire( var = var, & ! (in)
3659  & rank = rank, alldims = alldims ) ! (out)
3660  ! 引数の次元数のチェック (縮退されている場合には減らす)
3661  ! Check size of dimensions of an argument (If any dimension degenerated, size of dimensions is decreased)
3662  array_rank = 2
3663  if ( size( array, 1 ) == 1 ) array_rank = array_rank - 1
3664  if ( size( array, 2 ) == 1 ) array_rank = array_rank - 1
3665  ! 次元数の比較
3666  ! Compare sizes of dimensions
3667  !
3668  if ( .not. 2 == rank .and. .not. array_rank == rank ) then
3669  if ( .not. present_and_true(quiet) ) then
3670  call messagenotify('W', subname, &
3671  & 'Rank of data (%c) is "%d", rank of argument is "%d"', &
3672  & i = (/rank, 2/), c1 = trim(url) )
3673  end if
3674  stat = gt_erankmismatch
3675  cause_c = 'array'
3676  goto 999
3677  end if
3678  ! 入力ファイル中のデータの配列形状取得
3679  ! Get shape of data in an input file
3680  call inquire( var = var , dimord = 1, & ! (in)
3681  & allcount = allcount, err = inq_err ) ! (out)
3682  if ( .not. inq_err ) then
3683  data_shape(1) = allcount
3684  else
3685  data_shape(1) = 1
3686  end if
3687  call inquire( var = var , dimord = 2, & ! (in)
3688  & allcount = allcount, err = inq_err ) ! (out)
3689  if ( .not. inq_err ) then
3690  data_shape(2) = allcount
3691  else
3692  data_shape(2) = 1
3693  end if
3694  ! 引数の配列形状整形
3695  ! Arrange shape of an argument
3696  !
3697  array_shape_check = array_shape
3698  sd = 1
3699  do i = 1, 2 - 1
3700  if ( array_shape_check(sd) == 1 ) then
3701  array_shape_check(sd:2) = cshift( array_shape_check(sd:2), 1, 1 )
3702  else
3703  sd = sd + 1
3704  end if
3705  end do
3706  ! 配列形状の比較
3707  ! Compare shapes
3708  !
3709  if ( .not. all( array_shape_check == data_shape ) ) then
3710  if ( .not. present_and_true(quiet) ) then
3711  call messagenotify('W', subname, &
3712  & 'Shape of data (%c) is (%c), shape of argument is (%c)', &
3713  & c1 = trim( url ), &
3714  & c2 = trim( tochar( data_shape(1:rank) ) ), &
3715  & c3 = trim( tochar( array_shape_check(1:rank) ) ) )
3716  end if
3717  stat = gt_eargsizemismatch
3718  cause_c = 'array'
3719  goto 999
3720  end if
3721  !-------------------------------------
3722  ! データ取得
3723  ! Get data
3724  call inquire( var = var, & ! (in)
3725  & size = domain ) ! (out)
3726  if ( allocated( array_tmp ) ) deallocate( array_tmp )
3727  allocate( array_tmp(array_allsize) )
3728  call get( var, array_tmp, domain )
3729  array = reshape( array_tmp, array_shape )
3730  deallocate( array_tmp )
3731  call close( var )
3732  !-------------------------------------
3733  ! データファイル名と切り出し範囲の印字
3734  ! Print data filename and clipping range
3735  call actual_iorange_dump(url, & ! (in)
3736  & actual_url, returned_time, & ! (out) optional
3737  & time_name = tname, & ! (in) optional
3738  & err = err) ! (out) optional
3739  if ( .not. present_and_true(quiet) ) then
3740  call messagenotify('M', subname, 'Input %c', c1=trim(actual_url), rank_mpi = -1)
3741  end if
3742 999 continue
3743  call storeerror(stat, subname, err, cause_c)
3744 end subroutine historygetint2
3745 subroutine historygetint3(file, varname, array, range, &
3746  & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
3748  use gtdata_generic, only: open, inquire, close, get
3749  use dc_string, only: tochar, split, joinchar, stoa
3752  use dc_regex, only: match
3753  use dc_types, only: string, dp
3754  use dc_message, only: messagenotify
3755  use dc_trace, only: dbgmessage
3758  implicit none
3759  character(*), intent(in):: file
3760  character(*), intent(in):: varname
3761  character(*), intent(in), optional:: range
3762  logical, intent(in), optional:: quiet
3763  logical, intent(in), optional:: flag_mpi_split
3764  real(DP), intent(out), optional:: returned_time ! データの時刻
3765  logical, intent(out), optional:: flag_time_exist
3766  logical, intent(out), optional:: err
3767  integer, intent(out) :: array(:,:,:)
3768  integer, allocatable :: array_tmp(:)
3769  integer:: array_allsize
3770  integer:: array_shape(3), data_shape(3), array_shape_check(3)
3771  integer:: allcount
3772  integer:: i, sd
3773  logical:: inq_err
3774  type(gt_variable):: var
3775  character(STRING):: file_work, url, actual_url
3776  integer:: rank, alldims, array_rank
3777  integer:: domain
3778  character(STRING):: tname
3779  integer:: stat
3780  character(STRING):: cause_c
3781  character(*), parameter :: subname = "HistoryGetInt3"
3782  interface
3783  subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
3784  character(*), intent(in):: file
3785  character(*), intent(in):: varname
3786  character(*), intent(out):: url
3787  character(*), intent(in), optional:: range
3788  logical, intent(out), optional:: flag_time_exist
3789  character(*), intent(out), optional:: time_name
3790  logical, intent(out), optional:: err
3791  end subroutine lookup_growable_url
3792  end interface
3793  interface
3794  subroutine actual_iorange_dump(url, actual_url, returned_time, time_name, err)
3795  use dc_types, only: dp
3796  character(*), intent(in) :: url ! 変数 URL
3797  character(*), intent(out), optional :: actual_url
3798  ! 正確な入出力範囲指定
3799  real(DP), intent(out), optional:: returned_time ! データの時刻
3800  character(*), intent(in), optional:: time_name ! 時刻次元の名称
3801  logical, intent(out), optional :: err ! エラーのフラグ
3802  end subroutine actual_iorange_dump
3803  end interface
3804  interface
3805  function file_rename_mpi( file ) result(result)
3806  use dc_types, only: string
3807  character(*), intent(in):: file
3808  character(STRING):: result
3809  end function file_rename_mpi
3810  end interface
3811  continue
3812  cause_c = ''
3813  stat = dc_noerr
3814  file_work = file
3815  array_shape = shape( array )
3816  array_allsize = size( array )
3817  ! ファイル名の変更 (MPI 用)
3818  ! Change filename (for MPI)
3819  !
3820  if ( present_and_true( flag_mpi_split ) ) &
3821  & file_work = file_rename_mpi( file_work )
3822  ! 最新時刻の URL 取得
3823  ! Get URL of latest time
3824  !
3825  call lookup_growable_url(file_work, varname, url, range, &
3826  & flag_time_exist = flag_time_exist, time_name = tname, err = err)
3827  if ( present_and_true(err) ) then
3828  stat = gt_enoturl
3829  cause_c = url
3830  goto 999
3831  end if
3832  ! ファイルオープン
3833  ! File open
3834  call open( var, url, err = err )
3835  if ( present_and_true(err) ) then
3836  stat = gt_enoturl
3837  cause_c = url
3838  goto 999
3839  end if
3840  !-------------------------------------------------------------------
3841  ! 配列形状のチェック
3842  ! Check array shape
3843  !-------------------------------------------------------------------
3844  ! 入力ファイル中のデータの次元数
3845  ! Get size of dimesions in data of an input file
3846  !
3847  call inquire( var = var, & ! (in)
3848  & rank = rank, alldims = alldims ) ! (out)
3849  ! 引数の次元数のチェック (縮退されている場合には減らす)
3850  ! Check size of dimensions of an argument (If any dimension degenerated, size of dimensions is decreased)
3851  array_rank = 3
3852  if ( size( array, 1 ) == 1 ) array_rank = array_rank - 1
3853  if ( size( array, 2 ) == 1 ) array_rank = array_rank - 1
3854  if ( size( array, 3 ) == 1 ) array_rank = array_rank - 1
3855  ! 次元数の比較
3856  ! Compare sizes of dimensions
3857  !
3858  if ( .not. 3 == rank .and. .not. array_rank == rank ) then
3859  if ( .not. present_and_true(quiet) ) then
3860  call messagenotify('W', subname, &
3861  & 'Rank of data (%c) is "%d", rank of argument is "%d"', &
3862  & i = (/rank, 3/), c1 = trim(url) )
3863  end if
3864  stat = gt_erankmismatch
3865  cause_c = 'array'
3866  goto 999
3867  end if
3868  ! 入力ファイル中のデータの配列形状取得
3869  ! Get shape of data in an input file
3870  call inquire( var = var , dimord = 1, & ! (in)
3871  & allcount = allcount, err = inq_err ) ! (out)
3872  if ( .not. inq_err ) then
3873  data_shape(1) = allcount
3874  else
3875  data_shape(1) = 1
3876  end if
3877  call inquire( var = var , dimord = 2, & ! (in)
3878  & allcount = allcount, err = inq_err ) ! (out)
3879  if ( .not. inq_err ) then
3880  data_shape(2) = allcount
3881  else
3882  data_shape(2) = 1
3883  end if
3884  call inquire( var = var , dimord = 3, & ! (in)
3885  & allcount = allcount, err = inq_err ) ! (out)
3886  if ( .not. inq_err ) then
3887  data_shape(3) = allcount
3888  else
3889  data_shape(3) = 1
3890  end if
3891  ! 引数の配列形状整形
3892  ! Arrange shape of an argument
3893  !
3894  array_shape_check = array_shape
3895  sd = 1
3896  do i = 1, 3 - 1
3897  if ( array_shape_check(sd) == 1 ) then
3898  array_shape_check(sd:3) = cshift( array_shape_check(sd:3), 1, 1 )
3899  else
3900  sd = sd + 1
3901  end if
3902  end do
3903  ! 配列形状の比較
3904  ! Compare shapes
3905  !
3906  if ( .not. all( array_shape_check == data_shape ) ) then
3907  if ( .not. present_and_true(quiet) ) then
3908  call messagenotify('W', subname, &
3909  & 'Shape of data (%c) is (%c), shape of argument is (%c)', &
3910  & c1 = trim( url ), &
3911  & c2 = trim( tochar( data_shape(1:rank) ) ), &
3912  & c3 = trim( tochar( array_shape_check(1:rank) ) ) )
3913  end if
3914  stat = gt_eargsizemismatch
3915  cause_c = 'array'
3916  goto 999
3917  end if
3918  !-------------------------------------
3919  ! データ取得
3920  ! Get data
3921  call inquire( var = var, & ! (in)
3922  & size = domain ) ! (out)
3923  if ( allocated( array_tmp ) ) deallocate( array_tmp )
3924  allocate( array_tmp(array_allsize) )
3925  call get( var, array_tmp, domain )
3926  array = reshape( array_tmp, array_shape )
3927  deallocate( array_tmp )
3928  call close( var )
3929  !-------------------------------------
3930  ! データファイル名と切り出し範囲の印字
3931  ! Print data filename and clipping range
3932  call actual_iorange_dump(url, & ! (in)
3933  & actual_url, returned_time, & ! (out) optional
3934  & time_name = tname, & ! (in) optional
3935  & err = err) ! (out) optional
3936  if ( .not. present_and_true(quiet) ) then
3937  call messagenotify('M', subname, 'Input %c', c1=trim(actual_url), rank_mpi = -1)
3938  end if
3939 999 continue
3940  call storeerror(stat, subname, err, cause_c)
3941 end subroutine historygetint3
3942 subroutine historygetint4(file, varname, array, range, &
3943  & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
3945  use gtdata_generic, only: open, inquire, close, get
3946  use dc_string, only: tochar, split, joinchar, stoa
3949  use dc_regex, only: match
3950  use dc_types, only: string, dp
3951  use dc_message, only: messagenotify
3952  use dc_trace, only: dbgmessage
3955  implicit none
3956  character(*), intent(in):: file
3957  character(*), intent(in):: varname
3958  character(*), intent(in), optional:: range
3959  logical, intent(in), optional:: quiet
3960  logical, intent(in), optional:: flag_mpi_split
3961  real(DP), intent(out), optional:: returned_time ! データの時刻
3962  logical, intent(out), optional:: flag_time_exist
3963  logical, intent(out), optional:: err
3964  integer, intent(out) :: array(:,:,:,:)
3965  integer, allocatable :: array_tmp(:)
3966  integer:: array_allsize
3967  integer:: array_shape(4), data_shape(4), array_shape_check(4)
3968  integer:: allcount
3969  integer:: i, sd
3970  logical:: inq_err
3971  type(gt_variable):: var
3972  character(STRING):: file_work, url, actual_url
3973  integer:: rank, alldims, array_rank
3974  integer:: domain
3975  character(STRING):: tname
3976  integer:: stat
3977  character(STRING):: cause_c
3978  character(*), parameter :: subname = "HistoryGetInt4"
3979  interface
3980  subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
3981  character(*), intent(in):: file
3982  character(*), intent(in):: varname
3983  character(*), intent(out):: url
3984  character(*), intent(in), optional:: range
3985  logical, intent(out), optional:: flag_time_exist
3986  character(*), intent(out), optional:: time_name
3987  logical, intent(out), optional:: err
3988  end subroutine lookup_growable_url
3989  end interface
3990  interface
3991  subroutine actual_iorange_dump(url, actual_url, returned_time, time_name, err)
3992  use dc_types, only: dp
3993  character(*), intent(in) :: url ! 変数 URL
3994  character(*), intent(out), optional :: actual_url
3995  ! 正確な入出力範囲指定
3996  real(DP), intent(out), optional:: returned_time ! データの時刻
3997  character(*), intent(in), optional:: time_name ! 時刻次元の名称
3998  logical, intent(out), optional :: err ! エラーのフラグ
3999  end subroutine actual_iorange_dump
4000  end interface
4001  interface
4002  function file_rename_mpi( file ) result(result)
4003  use dc_types, only: string
4004  character(*), intent(in):: file
4005  character(STRING):: result
4006  end function file_rename_mpi
4007  end interface
4008  continue
4009  cause_c = ''
4010  stat = dc_noerr
4011  file_work = file
4012  array_shape = shape( array )
4013  array_allsize = size( array )
4014  ! ファイル名の変更 (MPI 用)
4015  ! Change filename (for MPI)
4016  !
4017  if ( present_and_true( flag_mpi_split ) ) &
4018  & file_work = file_rename_mpi( file_work )
4019  ! 最新時刻の URL 取得
4020  ! Get URL of latest time
4021  !
4022  call lookup_growable_url(file_work, varname, url, range, &
4023  & flag_time_exist = flag_time_exist, time_name = tname, err = err)
4024  if ( present_and_true(err) ) then
4025  stat = gt_enoturl
4026  cause_c = url
4027  goto 999
4028  end if
4029  ! ファイルオープン
4030  ! File open
4031  call open( var, url, err = err )
4032  if ( present_and_true(err) ) then
4033  stat = gt_enoturl
4034  cause_c = url
4035  goto 999
4036  end if
4037  !-------------------------------------------------------------------
4038  ! 配列形状のチェック
4039  ! Check array shape
4040  !-------------------------------------------------------------------
4041  ! 入力ファイル中のデータの次元数
4042  ! Get size of dimesions in data of an input file
4043  !
4044  call inquire( var = var, & ! (in)
4045  & rank = rank, alldims = alldims ) ! (out)
4046  ! 引数の次元数のチェック (縮退されている場合には減らす)
4047  ! Check size of dimensions of an argument (If any dimension degenerated, size of dimensions is decreased)
4048  array_rank = 4
4049  if ( size( array, 1 ) == 1 ) array_rank = array_rank - 1
4050  if ( size( array, 2 ) == 1 ) array_rank = array_rank - 1
4051  if ( size( array, 3 ) == 1 ) array_rank = array_rank - 1
4052  if ( size( array, 4 ) == 1 ) array_rank = array_rank - 1
4053  ! 次元数の比較
4054  ! Compare sizes of dimensions
4055  !
4056  if ( .not. 4 == rank .and. .not. array_rank == rank ) then
4057  if ( .not. present_and_true(quiet) ) then
4058  call messagenotify('W', subname, &
4059  & 'Rank of data (%c) is "%d", rank of argument is "%d"', &
4060  & i = (/rank, 4/), c1 = trim(url) )
4061  end if
4062  stat = gt_erankmismatch
4063  cause_c = 'array'
4064  goto 999
4065  end if
4066  ! 入力ファイル中のデータの配列形状取得
4067  ! Get shape of data in an input file
4068  call inquire( var = var , dimord = 1, & ! (in)
4069  & allcount = allcount, err = inq_err ) ! (out)
4070  if ( .not. inq_err ) then
4071  data_shape(1) = allcount
4072  else
4073  data_shape(1) = 1
4074  end if
4075  call inquire( var = var , dimord = 2, & ! (in)
4076  & allcount = allcount, err = inq_err ) ! (out)
4077  if ( .not. inq_err ) then
4078  data_shape(2) = allcount
4079  else
4080  data_shape(2) = 1
4081  end if
4082  call inquire( var = var , dimord = 3, & ! (in)
4083  & allcount = allcount, err = inq_err ) ! (out)
4084  if ( .not. inq_err ) then
4085  data_shape(3) = allcount
4086  else
4087  data_shape(3) = 1
4088  end if
4089  call inquire( var = var , dimord = 4, & ! (in)
4090  & allcount = allcount, err = inq_err ) ! (out)
4091  if ( .not. inq_err ) then
4092  data_shape(4) = allcount
4093  else
4094  data_shape(4) = 1
4095  end if
4096  ! 引数の配列形状整形
4097  ! Arrange shape of an argument
4098  !
4099  array_shape_check = array_shape
4100  sd = 1
4101  do i = 1, 4 - 1
4102  if ( array_shape_check(sd) == 1 ) then
4103  array_shape_check(sd:4) = cshift( array_shape_check(sd:4), 1, 1 )
4104  else
4105  sd = sd + 1
4106  end if
4107  end do
4108  ! 配列形状の比較
4109  ! Compare shapes
4110  !
4111  if ( .not. all( array_shape_check == data_shape ) ) then
4112  if ( .not. present_and_true(quiet) ) then
4113  call messagenotify('W', subname, &
4114  & 'Shape of data (%c) is (%c), shape of argument is (%c)', &
4115  & c1 = trim( url ), &
4116  & c2 = trim( tochar( data_shape(1:rank) ) ), &
4117  & c3 = trim( tochar( array_shape_check(1:rank) ) ) )
4118  end if
4119  stat = gt_eargsizemismatch
4120  cause_c = 'array'
4121  goto 999
4122  end if
4123  !-------------------------------------
4124  ! データ取得
4125  ! Get data
4126  call inquire( var = var, & ! (in)
4127  & size = domain ) ! (out)
4128  if ( allocated( array_tmp ) ) deallocate( array_tmp )
4129  allocate( array_tmp(array_allsize) )
4130  call get( var, array_tmp, domain )
4131  array = reshape( array_tmp, array_shape )
4132  deallocate( array_tmp )
4133  call close( var )
4134  !-------------------------------------
4135  ! データファイル名と切り出し範囲の印字
4136  ! Print data filename and clipping range
4137  call actual_iorange_dump(url, & ! (in)
4138  & actual_url, returned_time, & ! (out) optional
4139  & time_name = tname, & ! (in) optional
4140  & err = err) ! (out) optional
4141  if ( .not. present_and_true(quiet) ) then
4142  call messagenotify('M', subname, 'Input %c', c1=trim(actual_url), rank_mpi = -1)
4143  end if
4144 999 continue
4145  call storeerror(stat, subname, err, cause_c)
4146 end subroutine historygetint4
4147 subroutine historygetint5(file, varname, array, range, &
4148  & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
4150  use gtdata_generic, only: open, inquire, close, get
4151  use dc_string, only: tochar, split, joinchar, stoa
4154  use dc_regex, only: match
4155  use dc_types, only: string, dp
4156  use dc_message, only: messagenotify
4157  use dc_trace, only: dbgmessage
4160  implicit none
4161  character(*), intent(in):: file
4162  character(*), intent(in):: varname
4163  character(*), intent(in), optional:: range
4164  logical, intent(in), optional:: quiet
4165  logical, intent(in), optional:: flag_mpi_split
4166  real(DP), intent(out), optional:: returned_time ! データの時刻
4167  logical, intent(out), optional:: flag_time_exist
4168  logical, intent(out), optional:: err
4169  integer, intent(out) :: array(:,:,:,:,:)
4170  integer, allocatable :: array_tmp(:)
4171  integer:: array_allsize
4172  integer:: array_shape(5), data_shape(5), array_shape_check(5)
4173  integer:: allcount
4174  integer:: i, sd
4175  logical:: inq_err
4176  type(gt_variable):: var
4177  character(STRING):: file_work, url, actual_url
4178  integer:: rank, alldims, array_rank
4179  integer:: domain
4180  character(STRING):: tname
4181  integer:: stat
4182  character(STRING):: cause_c
4183  character(*), parameter :: subname = "HistoryGetInt5"
4184  interface
4185  subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
4186  character(*), intent(in):: file
4187  character(*), intent(in):: varname
4188  character(*), intent(out):: url
4189  character(*), intent(in), optional:: range
4190  logical, intent(out), optional:: flag_time_exist
4191  character(*), intent(out), optional:: time_name
4192  logical, intent(out), optional:: err
4193  end subroutine lookup_growable_url
4194  end interface
4195  interface
4196  subroutine actual_iorange_dump(url, actual_url, returned_time, time_name, err)
4197  use dc_types, only: dp
4198  character(*), intent(in) :: url ! 変数 URL
4199  character(*), intent(out), optional :: actual_url
4200  ! 正確な入出力範囲指定
4201  real(DP), intent(out), optional:: returned_time ! データの時刻
4202  character(*), intent(in), optional:: time_name ! 時刻次元の名称
4203  logical, intent(out), optional :: err ! エラーのフラグ
4204  end subroutine actual_iorange_dump
4205  end interface
4206  interface
4207  function file_rename_mpi( file ) result(result)
4208  use dc_types, only: string
4209  character(*), intent(in):: file
4210  character(STRING):: result
4211  end function file_rename_mpi
4212  end interface
4213  continue
4214  cause_c = ''
4215  stat = dc_noerr
4216  file_work = file
4217  array_shape = shape( array )
4218  array_allsize = size( array )
4219  ! ファイル名の変更 (MPI 用)
4220  ! Change filename (for MPI)
4221  !
4222  if ( present_and_true( flag_mpi_split ) ) &
4223  & file_work = file_rename_mpi( file_work )
4224  ! 最新時刻の URL 取得
4225  ! Get URL of latest time
4226  !
4227  call lookup_growable_url(file_work, varname, url, range, &
4228  & flag_time_exist = flag_time_exist, time_name = tname, err = err)
4229  if ( present_and_true(err) ) then
4230  stat = gt_enoturl
4231  cause_c = url
4232  goto 999
4233  end if
4234  ! ファイルオープン
4235  ! File open
4236  call open( var, url, err = err )
4237  if ( present_and_true(err) ) then
4238  stat = gt_enoturl
4239  cause_c = url
4240  goto 999
4241  end if
4242  !-------------------------------------------------------------------
4243  ! 配列形状のチェック
4244  ! Check array shape
4245  !-------------------------------------------------------------------
4246  ! 入力ファイル中のデータの次元数
4247  ! Get size of dimesions in data of an input file
4248  !
4249  call inquire( var = var, & ! (in)
4250  & rank = rank, alldims = alldims ) ! (out)
4251  ! 引数の次元数のチェック (縮退されている場合には減らす)
4252  ! Check size of dimensions of an argument (If any dimension degenerated, size of dimensions is decreased)
4253  array_rank = 5
4254  if ( size( array, 1 ) == 1 ) array_rank = array_rank - 1
4255  if ( size( array, 2 ) == 1 ) array_rank = array_rank - 1
4256  if ( size( array, 3 ) == 1 ) array_rank = array_rank - 1
4257  if ( size( array, 4 ) == 1 ) array_rank = array_rank - 1
4258  if ( size( array, 5 ) == 1 ) array_rank = array_rank - 1
4259  ! 次元数の比較
4260  ! Compare sizes of dimensions
4261  !
4262  if ( .not. 5 == rank .and. .not. array_rank == rank ) then
4263  if ( .not. present_and_true(quiet) ) then
4264  call messagenotify('W', subname, &
4265  & 'Rank of data (%c) is "%d", rank of argument is "%d"', &
4266  & i = (/rank, 5/), c1 = trim(url) )
4267  end if
4268  stat = gt_erankmismatch
4269  cause_c = 'array'
4270  goto 999
4271  end if
4272  ! 入力ファイル中のデータの配列形状取得
4273  ! Get shape of data in an input file
4274  call inquire( var = var , dimord = 1, & ! (in)
4275  & allcount = allcount, err = inq_err ) ! (out)
4276  if ( .not. inq_err ) then
4277  data_shape(1) = allcount
4278  else
4279  data_shape(1) = 1
4280  end if
4281  call inquire( var = var , dimord = 2, & ! (in)
4282  & allcount = allcount, err = inq_err ) ! (out)
4283  if ( .not. inq_err ) then
4284  data_shape(2) = allcount
4285  else
4286  data_shape(2) = 1
4287  end if
4288  call inquire( var = var , dimord = 3, & ! (in)
4289  & allcount = allcount, err = inq_err ) ! (out)
4290  if ( .not. inq_err ) then
4291  data_shape(3) = allcount
4292  else
4293  data_shape(3) = 1
4294  end if
4295  call inquire( var = var , dimord = 4, & ! (in)
4296  & allcount = allcount, err = inq_err ) ! (out)
4297  if ( .not. inq_err ) then
4298  data_shape(4) = allcount
4299  else
4300  data_shape(4) = 1
4301  end if
4302  call inquire( var = var , dimord = 5, & ! (in)
4303  & allcount = allcount, err = inq_err ) ! (out)
4304  if ( .not. inq_err ) then
4305  data_shape(5) = allcount
4306  else
4307  data_shape(5) = 1
4308  end if
4309  ! 引数の配列形状整形
4310  ! Arrange shape of an argument
4311  !
4312  array_shape_check = array_shape
4313  sd = 1
4314  do i = 1, 5 - 1
4315  if ( array_shape_check(sd) == 1 ) then
4316  array_shape_check(sd:5) = cshift( array_shape_check(sd:5), 1, 1 )
4317  else
4318  sd = sd + 1
4319  end if
4320  end do
4321  ! 配列形状の比較
4322  ! Compare shapes
4323  !
4324  if ( .not. all( array_shape_check == data_shape ) ) then
4325  if ( .not. present_and_true(quiet) ) then
4326  call messagenotify('W', subname, &
4327  & 'Shape of data (%c) is (%c), shape of argument is (%c)', &
4328  & c1 = trim( url ), &
4329  & c2 = trim( tochar( data_shape(1:rank) ) ), &
4330  & c3 = trim( tochar( array_shape_check(1:rank) ) ) )
4331  end if
4332  stat = gt_eargsizemismatch
4333  cause_c = 'array'
4334  goto 999
4335  end if
4336  !-------------------------------------
4337  ! データ取得
4338  ! Get data
4339  call inquire( var = var, & ! (in)
4340  & size = domain ) ! (out)
4341  if ( allocated( array_tmp ) ) deallocate( array_tmp )
4342  allocate( array_tmp(array_allsize) )
4343  call get( var, array_tmp, domain )
4344  array = reshape( array_tmp, array_shape )
4345  deallocate( array_tmp )
4346  call close( var )
4347  !-------------------------------------
4348  ! データファイル名と切り出し範囲の印字
4349  ! Print data filename and clipping range
4350  call actual_iorange_dump(url, & ! (in)
4351  & actual_url, returned_time, & ! (out) optional
4352  & time_name = tname, & ! (in) optional
4353  & err = err) ! (out) optional
4354  if ( .not. present_and_true(quiet) ) then
4355  call messagenotify('M', subname, 'Input %c', c1=trim(actual_url), rank_mpi = -1)
4356  end if
4357 999 continue
4358  call storeerror(stat, subname, err, cause_c)
4359 end subroutine historygetint5
4360 subroutine historygetint6(file, varname, array, range, &
4361  & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
4363  use gtdata_generic, only: open, inquire, close, get
4364  use dc_string, only: tochar, split, joinchar, stoa
4367  use dc_regex, only: match
4368  use dc_types, only: string, dp
4369  use dc_message, only: messagenotify
4370  use dc_trace, only: dbgmessage
4373  implicit none
4374  character(*), intent(in):: file
4375  character(*), intent(in):: varname
4376  character(*), intent(in), optional:: range
4377  logical, intent(in), optional:: quiet
4378  logical, intent(in), optional:: flag_mpi_split
4379  real(DP), intent(out), optional:: returned_time ! データの時刻
4380  logical, intent(out), optional:: flag_time_exist
4381  logical, intent(out), optional:: err
4382  integer, intent(out) :: array(:,:,:,:,:,:)
4383  integer, allocatable :: array_tmp(:)
4384  integer:: array_allsize
4385  integer:: array_shape(6), data_shape(6), array_shape_check(6)
4386  integer:: allcount
4387  integer:: i, sd
4388  logical:: inq_err
4389  type(gt_variable):: var
4390  character(STRING):: file_work, url, actual_url
4391  integer:: rank, alldims, array_rank
4392  integer:: domain
4393  character(STRING):: tname
4394  integer:: stat
4395  character(STRING):: cause_c
4396  character(*), parameter :: subname = "HistoryGetInt6"
4397  interface
4398  subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
4399  character(*), intent(in):: file
4400  character(*), intent(in):: varname
4401  character(*), intent(out):: url
4402  character(*), intent(in), optional:: range
4403  logical, intent(out), optional:: flag_time_exist
4404  character(*), intent(out), optional:: time_name
4405  logical, intent(out), optional:: err
4406  end subroutine lookup_growable_url
4407  end interface
4408  interface
4409  subroutine actual_iorange_dump(url, actual_url, returned_time, time_name, err)
4410  use dc_types, only: dp
4411  character(*), intent(in) :: url ! 変数 URL
4412  character(*), intent(out), optional :: actual_url
4413  ! 正確な入出力範囲指定
4414  real(DP), intent(out), optional:: returned_time ! データの時刻
4415  character(*), intent(in), optional:: time_name ! 時刻次元の名称
4416  logical, intent(out), optional :: err ! エラーのフラグ
4417  end subroutine actual_iorange_dump
4418  end interface
4419  interface
4420  function file_rename_mpi( file ) result(result)
4421  use dc_types, only: string
4422  character(*), intent(in):: file
4423  character(STRING):: result
4424  end function file_rename_mpi
4425  end interface
4426  continue
4427  cause_c = ''
4428  stat = dc_noerr
4429  file_work = file
4430  array_shape = shape( array )
4431  array_allsize = size( array )
4432  ! ファイル名の変更 (MPI 用)
4433  ! Change filename (for MPI)
4434  !
4435  if ( present_and_true( flag_mpi_split ) ) &
4436  & file_work = file_rename_mpi( file_work )
4437  ! 最新時刻の URL 取得
4438  ! Get URL of latest time
4439  !
4440  call lookup_growable_url(file_work, varname, url, range, &
4441  & flag_time_exist = flag_time_exist, time_name = tname, err = err)
4442  if ( present_and_true(err) ) then
4443  stat = gt_enoturl
4444  cause_c = url
4445  goto 999
4446  end if
4447  ! ファイルオープン
4448  ! File open
4449  call open( var, url, err = err )
4450  if ( present_and_true(err) ) then
4451  stat = gt_enoturl
4452  cause_c = url
4453  goto 999
4454  end if
4455  !-------------------------------------------------------------------
4456  ! 配列形状のチェック
4457  ! Check array shape
4458  !-------------------------------------------------------------------
4459  ! 入力ファイル中のデータの次元数
4460  ! Get size of dimesions in data of an input file
4461  !
4462  call inquire( var = var, & ! (in)
4463  & rank = rank, alldims = alldims ) ! (out)
4464  ! 引数の次元数のチェック (縮退されている場合には減らす)
4465  ! Check size of dimensions of an argument (If any dimension degenerated, size of dimensions is decreased)
4466  array_rank = 6
4467  if ( size( array, 1 ) == 1 ) array_rank = array_rank - 1
4468  if ( size( array, 2 ) == 1 ) array_rank = array_rank - 1
4469  if ( size( array, 3 ) == 1 ) array_rank = array_rank - 1
4470  if ( size( array, 4 ) == 1 ) array_rank = array_rank - 1
4471  if ( size( array, 5 ) == 1 ) array_rank = array_rank - 1
4472  if ( size( array, 6 ) == 1 ) array_rank = array_rank - 1
4473  ! 次元数の比較
4474  ! Compare sizes of dimensions
4475  !
4476  if ( .not. 6 == rank .and. .not. array_rank == rank ) then
4477  if ( .not. present_and_true(quiet) ) then
4478  call messagenotify('W', subname, &
4479  & 'Rank of data (%c) is "%d", rank of argument is "%d"', &
4480  & i = (/rank, 6/), c1 = trim(url) )
4481  end if
4482  stat = gt_erankmismatch
4483  cause_c = 'array'
4484  goto 999
4485  end if
4486  ! 入力ファイル中のデータの配列形状取得
4487  ! Get shape of data in an input file
4488  call inquire( var = var , dimord = 1, & ! (in)
4489  & allcount = allcount, err = inq_err ) ! (out)
4490  if ( .not. inq_err ) then
4491  data_shape(1) = allcount
4492  else
4493  data_shape(1) = 1
4494  end if
4495  call inquire( var = var , dimord = 2, & ! (in)
4496  & allcount = allcount, err = inq_err ) ! (out)
4497  if ( .not. inq_err ) then
4498  data_shape(2) = allcount
4499  else
4500  data_shape(2) = 1
4501  end if
4502  call inquire( var = var , dimord = 3, & ! (in)
4503  & allcount = allcount, err = inq_err ) ! (out)
4504  if ( .not. inq_err ) then
4505  data_shape(3) = allcount
4506  else
4507  data_shape(3) = 1
4508  end if
4509  call inquire( var = var , dimord = 4, & ! (in)
4510  & allcount = allcount, err = inq_err ) ! (out)
4511  if ( .not. inq_err ) then
4512  data_shape(4) = allcount
4513  else
4514  data_shape(4) = 1
4515  end if
4516  call inquire( var = var , dimord = 5, & ! (in)
4517  & allcount = allcount, err = inq_err ) ! (out)
4518  if ( .not. inq_err ) then
4519  data_shape(5) = allcount
4520  else
4521  data_shape(5) = 1
4522  end if
4523  call inquire( var = var , dimord = 6, & ! (in)
4524  & allcount = allcount, err = inq_err ) ! (out)
4525  if ( .not. inq_err ) then
4526  data_shape(6) = allcount
4527  else
4528  data_shape(6) = 1
4529  end if
4530  ! 引数の配列形状整形
4531  ! Arrange shape of an argument
4532  !
4533  array_shape_check = array_shape
4534  sd = 1
4535  do i = 1, 6 - 1
4536  if ( array_shape_check(sd) == 1 ) then
4537  array_shape_check(sd:6) = cshift( array_shape_check(sd:6), 1, 1 )
4538  else
4539  sd = sd + 1
4540  end if
4541  end do
4542  ! 配列形状の比較
4543  ! Compare shapes
4544  !
4545  if ( .not. all( array_shape_check == data_shape ) ) then
4546  if ( .not. present_and_true(quiet) ) then
4547  call messagenotify('W', subname, &
4548  & 'Shape of data (%c) is (%c), shape of argument is (%c)', &
4549  & c1 = trim( url ), &
4550  & c2 = trim( tochar( data_shape(1:rank) ) ), &
4551  & c3 = trim( tochar( array_shape_check(1:rank) ) ) )
4552  end if
4553  stat = gt_eargsizemismatch
4554  cause_c = 'array'
4555  goto 999
4556  end if
4557  !-------------------------------------
4558  ! データ取得
4559  ! Get data
4560  call inquire( var = var, & ! (in)
4561  & size = domain ) ! (out)
4562  if ( allocated( array_tmp ) ) deallocate( array_tmp )
4563  allocate( array_tmp(array_allsize) )
4564  call get( var, array_tmp, domain )
4565  array = reshape( array_tmp, array_shape )
4566  deallocate( array_tmp )
4567  call close( var )
4568  !-------------------------------------
4569  ! データファイル名と切り出し範囲の印字
4570  ! Print data filename and clipping range
4571  call actual_iorange_dump(url, & ! (in)
4572  & actual_url, returned_time, & ! (out) optional
4573  & time_name = tname, & ! (in) optional
4574  & err = err) ! (out) optional
4575  if ( .not. present_and_true(quiet) ) then
4576  call messagenotify('M', subname, 'Input %c', c1=trim(actual_url), rank_mpi = -1)
4577  end if
4578 999 continue
4579  call storeerror(stat, subname, err, cause_c)
4580 end subroutine historygetint6
4581 subroutine historygetint7(file, varname, array, range, &
4582  & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
4584  use gtdata_generic, only: open, inquire, close, get
4585  use dc_string, only: tochar, split, joinchar, stoa
4588  use dc_regex, only: match
4589  use dc_types, only: string, dp
4590  use dc_message, only: messagenotify
4591  use dc_trace, only: dbgmessage
4594  implicit none
4595  character(*), intent(in):: file
4596  character(*), intent(in):: varname
4597  character(*), intent(in), optional:: range
4598  logical, intent(in), optional:: quiet
4599  logical, intent(in), optional:: flag_mpi_split
4600  real(DP), intent(out), optional:: returned_time ! データの時刻
4601  logical, intent(out), optional:: flag_time_exist
4602  logical, intent(out), optional:: err
4603  integer, intent(out) :: array(:,:,:,:,:,:,:)
4604  integer, allocatable :: array_tmp(:)
4605  integer:: array_allsize
4606  integer:: array_shape(7), data_shape(7), array_shape_check(7)
4607  integer:: allcount
4608  integer:: i, sd
4609  logical:: inq_err
4610  type(gt_variable):: var
4611  character(STRING):: file_work, url, actual_url
4612  integer:: rank, alldims, array_rank
4613  integer:: domain
4614  character(STRING):: tname
4615  integer:: stat
4616  character(STRING):: cause_c
4617  character(*), parameter :: subname = "HistoryGetInt7"
4618  interface
4619  subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
4620  character(*), intent(in):: file
4621  character(*), intent(in):: varname
4622  character(*), intent(out):: url
4623  character(*), intent(in), optional:: range
4624  logical, intent(out), optional:: flag_time_exist
4625  character(*), intent(out), optional:: time_name
4626  logical, intent(out), optional:: err
4627  end subroutine lookup_growable_url
4628  end interface
4629  interface
4630  subroutine actual_iorange_dump(url, actual_url, returned_time, time_name, err)
4631  use dc_types, only: dp
4632  character(*), intent(in) :: url ! 変数 URL
4633  character(*), intent(out), optional :: actual_url
4634  ! 正確な入出力範囲指定
4635  real(DP), intent(out), optional:: returned_time ! データの時刻
4636  character(*), intent(in), optional:: time_name ! 時刻次元の名称
4637  logical, intent(out), optional :: err ! エラーのフラグ
4638  end subroutine actual_iorange_dump
4639  end interface
4640  interface
4641  function file_rename_mpi( file ) result(result)
4642  use dc_types, only: string
4643  character(*), intent(in):: file
4644  character(STRING):: result
4645  end function file_rename_mpi
4646  end interface
4647  continue
4648  cause_c = ''
4649  stat = dc_noerr
4650  file_work = file
4651  array_shape = shape( array )
4652  array_allsize = size( array )
4653  ! ファイル名の変更 (MPI 用)
4654  ! Change filename (for MPI)
4655  !
4656  if ( present_and_true( flag_mpi_split ) ) &
4657  & file_work = file_rename_mpi( file_work )
4658  ! 最新時刻の URL 取得
4659  ! Get URL of latest time
4660  !
4661  call lookup_growable_url(file_work, varname, url, range, &
4662  & flag_time_exist = flag_time_exist, time_name = tname, err = err)
4663  if ( present_and_true(err) ) then
4664  stat = gt_enoturl
4665  cause_c = url
4666  goto 999
4667  end if
4668  ! ファイルオープン
4669  ! File open
4670  call open( var, url, err = err )
4671  if ( present_and_true(err) ) then
4672  stat = gt_enoturl
4673  cause_c = url
4674  goto 999
4675  end if
4676  !-------------------------------------------------------------------
4677  ! 配列形状のチェック
4678  ! Check array shape
4679  !-------------------------------------------------------------------
4680  ! 入力ファイル中のデータの次元数
4681  ! Get size of dimesions in data of an input file
4682  !
4683  call inquire( var = var, & ! (in)
4684  & rank = rank, alldims = alldims ) ! (out)
4685  ! 引数の次元数のチェック (縮退されている場合には減らす)
4686  ! Check size of dimensions of an argument (If any dimension degenerated, size of dimensions is decreased)
4687  array_rank = 7
4688  if ( size( array, 1 ) == 1 ) array_rank = array_rank - 1
4689  if ( size( array, 2 ) == 1 ) array_rank = array_rank - 1
4690  if ( size( array, 3 ) == 1 ) array_rank = array_rank - 1
4691  if ( size( array, 4 ) == 1 ) array_rank = array_rank - 1
4692  if ( size( array, 5 ) == 1 ) array_rank = array_rank - 1
4693  if ( size( array, 6 ) == 1 ) array_rank = array_rank - 1
4694  if ( size( array, 7 ) == 1 ) array_rank = array_rank - 1
4695  ! 次元数の比較
4696  ! Compare sizes of dimensions
4697  !
4698  if ( .not. 7 == rank .and. .not. array_rank == rank ) then
4699  if ( .not. present_and_true(quiet) ) then
4700  call messagenotify('W', subname, &
4701  & 'Rank of data (%c) is "%d", rank of argument is "%d"', &
4702  & i = (/rank, 7/), c1 = trim(url) )
4703  end if
4704  stat = gt_erankmismatch
4705  cause_c = 'array'
4706  goto 999
4707  end if
4708  ! 入力ファイル中のデータの配列形状取得
4709  ! Get shape of data in an input file
4710  call inquire( var = var , dimord = 1, & ! (in)
4711  & allcount = allcount, err = inq_err ) ! (out)
4712  if ( .not. inq_err ) then
4713  data_shape(1) = allcount
4714  else
4715  data_shape(1) = 1
4716  end if
4717  call inquire( var = var , dimord = 2, & ! (in)
4718  & allcount = allcount, err = inq_err ) ! (out)
4719  if ( .not. inq_err ) then
4720  data_shape(2) = allcount
4721  else
4722  data_shape(2) = 1
4723  end if
4724  call inquire( var = var , dimord = 3, & ! (in)
4725  & allcount = allcount, err = inq_err ) ! (out)
4726  if ( .not. inq_err ) then
4727  data_shape(3) = allcount
4728  else
4729  data_shape(3) = 1
4730  end if
4731  call inquire( var = var , dimord = 4, & ! (in)
4732  & allcount = allcount, err = inq_err ) ! (out)
4733  if ( .not. inq_err ) then
4734  data_shape(4) = allcount
4735  else
4736  data_shape(4) = 1
4737  end if
4738  call inquire( var = var , dimord = 5, & ! (in)
4739  & allcount = allcount, err = inq_err ) ! (out)
4740  if ( .not. inq_err ) then
4741  data_shape(5) = allcount
4742  else
4743  data_shape(5) = 1
4744  end if
4745  call inquire( var = var , dimord = 6, & ! (in)
4746  & allcount = allcount, err = inq_err ) ! (out)
4747  if ( .not. inq_err ) then
4748  data_shape(6) = allcount
4749  else
4750  data_shape(6) = 1
4751  end if
4752  call inquire( var = var , dimord = 7, & ! (in)
4753  & allcount = allcount, err = inq_err ) ! (out)
4754  if ( .not. inq_err ) then
4755  data_shape(7) = allcount
4756  else
4757  data_shape(7) = 1
4758  end if
4759  ! 引数の配列形状整形
4760  ! Arrange shape of an argument
4761  !
4762  array_shape_check = array_shape
4763  sd = 1
4764  do i = 1, 7 - 1
4765  if ( array_shape_check(sd) == 1 ) then
4766  array_shape_check(sd:7) = cshift( array_shape_check(sd:7), 1, 1 )
4767  else
4768  sd = sd + 1
4769  end if
4770  end do
4771  ! 配列形状の比較
4772  ! Compare shapes
4773  !
4774  if ( .not. all( array_shape_check == data_shape ) ) then
4775  if ( .not. present_and_true(quiet) ) then
4776  call messagenotify('W', subname, &
4777  & 'Shape of data (%c) is (%c), shape of argument is (%c)', &
4778  & c1 = trim( url ), &
4779  & c2 = trim( tochar( data_shape(1:rank) ) ), &
4780  & c3 = trim( tochar( array_shape_check(1:rank) ) ) )
4781  end if
4782  stat = gt_eargsizemismatch
4783  cause_c = 'array'
4784  goto 999
4785  end if
4786  !-------------------------------------
4787  ! データ取得
4788  ! Get data
4789  call inquire( var = var, & ! (in)
4790  & size = domain ) ! (out)
4791  if ( allocated( array_tmp ) ) deallocate( array_tmp )
4792  allocate( array_tmp(array_allsize) )
4793  call get( var, array_tmp, domain )
4794  array = reshape( array_tmp, array_shape )
4795  deallocate( array_tmp )
4796  call close( var )
4797  !-------------------------------------
4798  ! データファイル名と切り出し範囲の印字
4799  ! Print data filename and clipping range
4800  call actual_iorange_dump(url, & ! (in)
4801  & actual_url, returned_time, & ! (out) optional
4802  & time_name = tname, & ! (in) optional
4803  & err = err) ! (out) optional
4804  if ( .not. present_and_true(quiet) ) then
4805  call messagenotify('M', subname, 'Input %c', c1=trim(actual_url), rank_mpi = -1)
4806  end if
4807 999 continue
4808  call storeerror(stat, subname, err, cause_c)
4809 end subroutine historygetint7
4810 subroutine historygetdouble0pointer(file, varname, array, range, &
4811  & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
4813  use gtdata_generic, only: open, inquire, close, get
4814  use dc_string, only: tochar
4816  use dc_types, only: string, dp
4817  use dc_message, only: messagenotify
4818  use dc_trace, only: dbgmessage
4819  implicit none
4820  character(*), intent(in):: file
4821  character(*), intent(in):: varname
4822  character(*), intent(in), optional:: range
4823  logical, intent(in), optional:: quiet
4824  logical, intent(in), optional:: flag_mpi_split
4825  real(DP), intent(out), optional:: returned_time ! データの時刻
4826  logical, intent(out), optional:: flag_time_exist
4827  logical, intent(out), optional:: err
4828  integer:: domain
4829  real(DP), pointer :: array ! (out)
4830  real(DP), target :: array_tmp(1)
4831  type(gt_variable):: var
4832  character(STRING):: file_work, url, actual_url
4833  character(STRING):: tname
4834  character(*), parameter :: subname = "HistoryGetDouble0Pointer"
4835  interface
4836  subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
4837  character(*), intent(in):: file
4838  character(*), intent(in):: varname
4839  character(*), intent(out):: url
4840  character(*), intent(in), optional:: range
4841  logical, intent(out), optional:: flag_time_exist
4842  character(*), intent(out), optional:: time_name
4843  logical, intent(out), optional:: err
4844  end subroutine lookup_growable_url
4845  end interface
4846  interface
4847  subroutine actual_iorange_dump(url, actual_url, returned_time, time_name, err)
4848  use dc_types, only: dp
4849  character(*), intent(in) :: url ! 変数 URL
4850  character(*), intent(out), optional :: actual_url
4851  ! 正確な入出力範囲指定
4852  real(DP), intent(out), optional:: returned_time ! データの時刻
4853  character(*), intent(in), optional:: time_name ! 時刻次元の名称
4854  logical, intent(out), optional :: err ! エラーのフラグ
4855  end subroutine actual_iorange_dump
4856  end interface
4857  interface
4858  function file_rename_mpi( file ) result(result)
4859  use dc_types, only: string
4860  character(*), intent(in):: file
4861  character(STRING):: result
4862  end function file_rename_mpi
4863  end interface
4864  continue
4865  file_work = file
4866  ! ファイル名の変更 (MPI 用)
4867  ! Change filename (for MPI)
4868  !
4869  if ( present_and_true( flag_mpi_split ) ) &
4870  & file_work = file_rename_mpi( file_work )
4871  ! 必要な情報を gtool 変数化
4872  !
4873  call lookup_growable_url(file_work, varname, url, range, &
4874  & flag_time_exist = flag_time_exist, time_name = tname, err = err)
4875  allocate(array)
4876  call dbgmessage('@ url =%c', c1=trim(url))
4877  ! いよいよデータ取得
4878  !
4879  call open(var, url, err)
4880  call inquire(var=var, size=domain)
4881  call get(var, array_tmp, domain, err)
4882  array = array_tmp(1)
4883  call close(var, err)
4884  call actual_iorange_dump(url, & ! (in)
4885  & actual_url, returned_time, & ! (out) optional
4886  & time_name = tname, & ! (in) optional
4887  & err = err) ! (out) optional
4888  if ( .not. present_and_true(quiet) ) then
4889  call messagenotify('M', subname, 'Input %c', c1=trim(actual_url))
4890  end if
4891 end subroutine historygetdouble0pointer
4892 subroutine historygetdouble1pointer(file, varname, array, range, &
4893  & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
4895  use gtdata_generic, only: open, inquire, close, get
4896  use dc_string, only: tochar
4898  use dc_types, only: string, dp
4899  use dc_message, only: messagenotify
4900  use dc_trace, only: dbgmessage
4901  implicit none
4902  character(*), intent(in):: file
4903  character(*), intent(in):: varname
4904  character(*), intent(in), optional:: range
4905  logical, intent(in), optional:: quiet
4906  logical, intent(in), optional:: flag_mpi_split
4907  real(DP), intent(out), optional:: returned_time ! データの時刻
4908  logical, intent(out), optional:: flag_time_exist
4909  logical, intent(out), optional:: err
4910  integer:: domain
4911  real(DP), pointer :: array(:) ! (out)
4912  real(DP), target :: array_tmp(1)
4913  type(gt_variable):: var
4914  character(STRING):: file_work, url, actual_url
4915  character(STRING):: tname
4916  character(*), parameter :: subname = "HistoryGetDouble1Pointer"
4917  interface
4918  subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
4919  character(*), intent(in):: file
4920  character(*), intent(in):: varname
4921  character(*), intent(out):: url
4922  character(*), intent(in), optional:: range
4923  logical, intent(out), optional:: flag_time_exist
4924  character(*), intent(out), optional:: time_name
4925  logical, intent(out), optional:: err
4926  end subroutine lookup_growable_url
4927  end interface
4928  interface
4929  subroutine actual_iorange_dump(url, actual_url, returned_time, time_name, err)
4930  use dc_types, only: dp
4931  character(*), intent(in) :: url ! 変数 URL
4932  character(*), intent(out), optional :: actual_url
4933  ! 正確な入出力範囲指定
4934  real(DP), intent(out), optional:: returned_time ! データの時刻
4935  character(*), intent(in), optional:: time_name ! 時刻次元の名称
4936  logical, intent(out), optional :: err ! エラーのフラグ
4937  end subroutine actual_iorange_dump
4938  end interface
4939  interface
4940  function file_rename_mpi( file ) result(result)
4941  use dc_types, only: string
4942  character(*), intent(in):: file
4943  character(STRING):: result
4944  end function file_rename_mpi
4945  end interface
4946  continue
4947  file_work = file
4948  ! ファイル名の変更 (MPI 用)
4949  ! Change filename (for MPI)
4950  !
4951  if ( present_and_true( flag_mpi_split ) ) &
4952  & file_work = file_rename_mpi( file_work )
4953  ! 必要な情報を gtool 変数化
4954  !
4955  call lookup_growable_url(file_work, varname, url, range, &
4956  & flag_time_exist = flag_time_exist, time_name = tname, err = err)
4957  call dbgmessage('@ url =%c', c1=trim(url))
4958  ! いよいよデータ取得
4959  !
4960  call open(var, url, err)
4961  call get(var, array, err)
4962  call close(var, err)
4963  call actual_iorange_dump(url, & ! (in)
4964  & actual_url, returned_time, & ! (out) optional
4965  & time_name = tname, & ! (in) optional
4966  & err = err) ! (out) optional
4967  if ( .not. present_and_true(quiet) ) then
4968  call messagenotify('M', subname, 'Input %c', c1=trim(actual_url))
4969  end if
4970 end subroutine historygetdouble1pointer
4971 subroutine historygetdouble2pointer(file, varname, array, range, &
4972  & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
4974  use gtdata_generic, only: open, inquire, close, get
4975  use dc_string, only: tochar
4977  use dc_types, only: string, dp
4978  use dc_message, only: messagenotify
4979  use dc_trace, only: dbgmessage
4980  implicit none
4981  character(*), intent(in):: file
4982  character(*), intent(in):: varname
4983  character(*), intent(in), optional:: range
4984  logical, intent(in), optional:: quiet
4985  logical, intent(in), optional:: flag_mpi_split
4986  real(DP), intent(out), optional:: returned_time ! データの時刻
4987  logical, intent(out), optional:: flag_time_exist
4988  logical, intent(out), optional:: err
4989  integer:: domain
4990  real(DP), pointer :: array(:,:) ! (out)
4991  real(DP), target :: array_tmp(1)
4992  type(gt_variable):: var
4993  character(STRING):: file_work, url, actual_url
4994  character(STRING):: tname
4995  character(*), parameter :: subname = "HistoryGetDouble2Pointer"
4996  interface
4997  subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
4998  character(*), intent(in):: file
4999  character(*), intent(in):: varname
5000  character(*), intent(out):: url
5001  character(*), intent(in), optional:: range
5002  logical, intent(out), optional:: flag_time_exist
5003  character(*), intent(out), optional:: time_name
5004  logical, intent(out), optional:: err
5005  end subroutine lookup_growable_url
5006  end interface
5007  interface
5008  subroutine actual_iorange_dump(url, actual_url, returned_time, time_name, err)
5009  use dc_types, only: dp
5010  character(*), intent(in) :: url ! 変数 URL
5011  character(*), intent(out), optional :: actual_url
5012  ! 正確な入出力範囲指定
5013  real(DP), intent(out), optional:: returned_time ! データの時刻
5014  character(*), intent(in), optional:: time_name ! 時刻次元の名称
5015  logical, intent(out), optional :: err ! エラーのフラグ
5016  end subroutine actual_iorange_dump
5017  end interface
5018  interface
5019  function file_rename_mpi( file ) result(result)
5020  use dc_types, only: string
5021  character(*), intent(in):: file
5022  character(STRING):: result
5023  end function file_rename_mpi
5024  end interface
5025  continue
5026  file_work = file
5027  ! ファイル名の変更 (MPI 用)
5028  ! Change filename (for MPI)
5029  !
5030  if ( present_and_true( flag_mpi_split ) ) &
5031  & file_work = file_rename_mpi( file_work )
5032  ! 必要な情報を gtool 変数化
5033  !
5034  call lookup_growable_url(file_work, varname, url, range, &
5035  & flag_time_exist = flag_time_exist, time_name = tname, err = err)
5036  call dbgmessage('@ url =%c', c1=trim(url))
5037  ! いよいよデータ取得
5038  !
5039  call open(var, url, err)
5040  call get(var, array, err)
5041  call close(var, err)
5042  call actual_iorange_dump(url, & ! (in)
5043  & actual_url, returned_time, & ! (out) optional
5044  & time_name = tname, & ! (in) optional
5045  & err = err) ! (out) optional
5046  if ( .not. present_and_true(quiet) ) then
5047  call messagenotify('M', subname, 'Input %c', c1=trim(actual_url))
5048  end if
5049 end subroutine historygetdouble2pointer
5050 subroutine historygetdouble3pointer(file, varname, array, range, &
5051  & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
5053  use gtdata_generic, only: open, inquire, close, get
5054  use dc_string, only: tochar
5056  use dc_types, only: string, dp
5057  use dc_message, only: messagenotify
5058  use dc_trace, only: dbgmessage
5059  implicit none
5060  character(*), intent(in):: file
5061  character(*), intent(in):: varname
5062  character(*), intent(in), optional:: range
5063  logical, intent(in), optional:: quiet
5064  logical, intent(in), optional:: flag_mpi_split
5065  real(DP), intent(out), optional:: returned_time ! データの時刻
5066  logical, intent(out), optional:: flag_time_exist
5067  logical, intent(out), optional:: err
5068  integer:: domain
5069  real(DP), pointer :: array(:,:,:) ! (out)
5070  real(DP), target :: array_tmp(1)
5071  type(gt_variable):: var
5072  character(STRING):: file_work, url, actual_url
5073  character(STRING):: tname
5074  character(*), parameter :: subname = "HistoryGetDouble3Pointer"
5075  interface
5076  subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
5077  character(*), intent(in):: file
5078  character(*), intent(in):: varname
5079  character(*), intent(out):: url
5080  character(*), intent(in), optional:: range
5081  logical, intent(out), optional:: flag_time_exist
5082  character(*), intent(out), optional:: time_name
5083  logical, intent(out), optional:: err
5084  end subroutine lookup_growable_url
5085  end interface
5086  interface
5087  subroutine actual_iorange_dump(url, actual_url, returned_time, time_name, err)
5088  use dc_types, only: dp
5089  character(*), intent(in) :: url ! 変数 URL
5090  character(*), intent(out), optional :: actual_url
5091  ! 正確な入出力範囲指定
5092  real(DP), intent(out), optional:: returned_time ! データの時刻
5093  character(*), intent(in), optional:: time_name ! 時刻次元の名称
5094  logical, intent(out), optional :: err ! エラーのフラグ
5095  end subroutine actual_iorange_dump
5096  end interface
5097  interface
5098  function file_rename_mpi( file ) result(result)
5099  use dc_types, only: string
5100  character(*), intent(in):: file
5101  character(STRING):: result
5102  end function file_rename_mpi
5103  end interface
5104  continue
5105  file_work = file
5106  ! ファイル名の変更 (MPI 用)
5107  ! Change filename (for MPI)
5108  !
5109  if ( present_and_true( flag_mpi_split ) ) &
5110  & file_work = file_rename_mpi( file_work )
5111  ! 必要な情報を gtool 変数化
5112  !
5113  call lookup_growable_url(file_work, varname, url, range, &
5114  & flag_time_exist = flag_time_exist, time_name = tname, err = err)
5115  call dbgmessage('@ url =%c', c1=trim(url))
5116  ! いよいよデータ取得
5117  !
5118  call open(var, url, err)
5119  call get(var, array, err)
5120  call close(var, err)
5121  call actual_iorange_dump(url, & ! (in)
5122  & actual_url, returned_time, & ! (out) optional
5123  & time_name = tname, & ! (in) optional
5124  & err = err) ! (out) optional
5125  if ( .not. present_and_true(quiet) ) then
5126  call messagenotify('M', subname, 'Input %c', c1=trim(actual_url))
5127  end if
5128 end subroutine historygetdouble3pointer
5129 subroutine historygetdouble4pointer(file, varname, array, range, &
5130  & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
5132  use gtdata_generic, only: open, inquire, close, get
5133  use dc_string, only: tochar
5135  use dc_types, only: string, dp
5136  use dc_message, only: messagenotify
5137  use dc_trace, only: dbgmessage
5138  implicit none
5139  character(*), intent(in):: file
5140  character(*), intent(in):: varname
5141  character(*), intent(in), optional:: range
5142  logical, intent(in), optional:: quiet
5143  logical, intent(in), optional:: flag_mpi_split
5144  real(DP), intent(out), optional:: returned_time ! データの時刻
5145  logical, intent(out), optional:: flag_time_exist
5146  logical, intent(out), optional:: err
5147  integer:: domain
5148  real(DP), pointer :: array(:,:,:,:) ! (out)
5149  real(DP), target :: array_tmp(1)
5150  type(gt_variable):: var
5151  character(STRING):: file_work, url, actual_url
5152  character(STRING):: tname
5153  character(*), parameter :: subname = "HistoryGetDouble4Pointer"
5154  interface
5155  subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
5156  character(*), intent(in):: file
5157  character(*), intent(in):: varname
5158  character(*), intent(out):: url
5159  character(*), intent(in), optional:: range
5160  logical, intent(out), optional:: flag_time_exist
5161  character(*), intent(out), optional:: time_name
5162  logical, intent(out), optional:: err
5163  end subroutine lookup_growable_url
5164  end interface
5165  interface
5166  subroutine actual_iorange_dump(url, actual_url, returned_time, time_name, err)
5167  use dc_types, only: dp
5168  character(*), intent(in) :: url ! 変数 URL
5169  character(*), intent(out), optional :: actual_url
5170  ! 正確な入出力範囲指定
5171  real(DP), intent(out), optional:: returned_time ! データの時刻
5172  character(*), intent(in), optional:: time_name ! 時刻次元の名称
5173  logical, intent(out), optional :: err ! エラーのフラグ
5174  end subroutine actual_iorange_dump
5175  end interface
5176  interface
5177  function file_rename_mpi( file ) result(result)
5178  use dc_types, only: string
5179  character(*), intent(in):: file
5180  character(STRING):: result
5181  end function file_rename_mpi
5182  end interface
5183  continue
5184  file_work = file
5185  ! ファイル名の変更 (MPI 用)
5186  ! Change filename (for MPI)
5187  !
5188  if ( present_and_true( flag_mpi_split ) ) &
5189  & file_work = file_rename_mpi( file_work )
5190  ! 必要な情報を gtool 変数化
5191  !
5192  call lookup_growable_url(file_work, varname, url, range, &
5193  & flag_time_exist = flag_time_exist, time_name = tname, err = err)
5194  call dbgmessage('@ url =%c', c1=trim(url))
5195  ! いよいよデータ取得
5196  !
5197  call open(var, url, err)
5198  call get(var, array, err)
5199  call close(var, err)
5200  call actual_iorange_dump(url, & ! (in)
5201  & actual_url, returned_time, & ! (out) optional
5202  & time_name = tname, & ! (in) optional
5203  & err = err) ! (out) optional
5204  if ( .not. present_and_true(quiet) ) then
5205  call messagenotify('M', subname, 'Input %c', c1=trim(actual_url))
5206  end if
5207 end subroutine historygetdouble4pointer
5208 subroutine historygetdouble5pointer(file, varname, array, range, &
5209  & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
5211  use gtdata_generic, only: open, inquire, close, get
5212  use dc_string, only: tochar
5214  use dc_types, only: string, dp
5215  use dc_message, only: messagenotify
5216  use dc_trace, only: dbgmessage
5217  implicit none
5218  character(*), intent(in):: file
5219  character(*), intent(in):: varname
5220  character(*), intent(in), optional:: range
5221  logical, intent(in), optional:: quiet
5222  logical, intent(in), optional:: flag_mpi_split
5223  real(DP), intent(out), optional:: returned_time ! データの時刻
5224  logical, intent(out), optional:: flag_time_exist
5225  logical, intent(out), optional:: err
5226  integer:: domain
5227  real(DP), pointer :: array(:,:,:,:,:) ! (out)
5228  real(DP), target :: array_tmp(1)
5229  type(gt_variable):: var
5230  character(STRING):: file_work, url, actual_url
5231  character(STRING):: tname
5232  character(*), parameter :: subname = "HistoryGetDouble5Pointer"
5233  interface
5234  subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
5235  character(*), intent(in):: file
5236  character(*), intent(in):: varname
5237  character(*), intent(out):: url
5238  character(*), intent(in), optional:: range
5239  logical, intent(out), optional:: flag_time_exist
5240  character(*), intent(out), optional:: time_name
5241  logical, intent(out), optional:: err
5242  end subroutine lookup_growable_url
5243  end interface
5244  interface
5245  subroutine actual_iorange_dump(url, actual_url, returned_time, time_name, err)
5246  use dc_types, only: dp
5247  character(*), intent(in) :: url ! 変数 URL
5248  character(*), intent(out), optional :: actual_url
5249  ! 正確な入出力範囲指定
5250  real(DP), intent(out), optional:: returned_time ! データの時刻
5251  character(*), intent(in), optional:: time_name ! 時刻次元の名称
5252  logical, intent(out), optional :: err ! エラーのフラグ
5253  end subroutine actual_iorange_dump
5254  end interface
5255  interface
5256  function file_rename_mpi( file ) result(result)
5257  use dc_types, only: string
5258  character(*), intent(in):: file
5259  character(STRING):: result
5260  end function file_rename_mpi
5261  end interface
5262  continue
5263  file_work = file
5264  ! ファイル名の変更 (MPI 用)
5265  ! Change filename (for MPI)
5266  !
5267  if ( present_and_true( flag_mpi_split ) ) &
5268  & file_work = file_rename_mpi( file_work )
5269  ! 必要な情報を gtool 変数化
5270  !
5271  call lookup_growable_url(file_work, varname, url, range, &
5272  & flag_time_exist = flag_time_exist, time_name = tname, err = err)
5273  call dbgmessage('@ url =%c', c1=trim(url))
5274  ! いよいよデータ取得
5275  !
5276  call open(var, url, err)
5277  call get(var, array, err)
5278  call close(var, err)
5279  call actual_iorange_dump(url, & ! (in)
5280  & actual_url, returned_time, & ! (out) optional
5281  & time_name = tname, & ! (in) optional
5282  & err = err) ! (out) optional
5283  if ( .not. present_and_true(quiet) ) then
5284  call messagenotify('M', subname, 'Input %c', c1=trim(actual_url))
5285  end if
5286 end subroutine historygetdouble5pointer
5287 subroutine historygetdouble6pointer(file, varname, array, range, &
5288  & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
5290  use gtdata_generic, only: open, inquire, close, get
5291  use dc_string, only: tochar
5293  use dc_types, only: string, dp
5294  use dc_message, only: messagenotify
5295  use dc_trace, only: dbgmessage
5296  implicit none
5297  character(*), intent(in):: file
5298  character(*), intent(in):: varname
5299  character(*), intent(in), optional:: range
5300  logical, intent(in), optional:: quiet
5301  logical, intent(in), optional:: flag_mpi_split
5302  real(DP), intent(out), optional:: returned_time ! データの時刻
5303  logical, intent(out), optional:: flag_time_exist
5304  logical, intent(out), optional:: err
5305  integer:: domain
5306  real(DP), pointer :: array(:,:,:,:,:,:) ! (out)
5307  real(DP), target :: array_tmp(1)
5308  type(gt_variable):: var
5309  character(STRING):: file_work, url, actual_url
5310  character(STRING):: tname
5311  character(*), parameter :: subname = "HistoryGetDouble6Pointer"
5312  interface
5313  subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
5314  character(*), intent(in):: file
5315  character(*), intent(in):: varname
5316  character(*), intent(out):: url
5317  character(*), intent(in), optional:: range
5318  logical, intent(out), optional:: flag_time_exist
5319  character(*), intent(out), optional:: time_name
5320  logical, intent(out), optional:: err
5321  end subroutine lookup_growable_url
5322  end interface
5323  interface
5324  subroutine actual_iorange_dump(url, actual_url, returned_time, time_name, err)
5325  use dc_types, only: dp
5326  character(*), intent(in) :: url ! 変数 URL
5327  character(*), intent(out), optional :: actual_url
5328  ! 正確な入出力範囲指定
5329  real(DP), intent(out), optional:: returned_time ! データの時刻
5330  character(*), intent(in), optional:: time_name ! 時刻次元の名称
5331  logical, intent(out), optional :: err ! エラーのフラグ
5332  end subroutine actual_iorange_dump
5333  end interface
5334  interface
5335  function file_rename_mpi( file ) result(result)
5336  use dc_types, only: string
5337  character(*), intent(in):: file
5338  character(STRING):: result
5339  end function file_rename_mpi
5340  end interface
5341  continue
5342  file_work = file
5343  ! ファイル名の変更 (MPI 用)
5344  ! Change filename (for MPI)
5345  !
5346  if ( present_and_true( flag_mpi_split ) ) &
5347  & file_work = file_rename_mpi( file_work )
5348  ! 必要な情報を gtool 変数化
5349  !
5350  call lookup_growable_url(file_work, varname, url, range, &
5351  & flag_time_exist = flag_time_exist, time_name = tname, err = err)
5352  call dbgmessage('@ url =%c', c1=trim(url))
5353  ! いよいよデータ取得
5354  !
5355  call open(var, url, err)
5356  call get(var, array, err)
5357  call close(var, err)
5358  call actual_iorange_dump(url, & ! (in)
5359  & actual_url, returned_time, & ! (out) optional
5360  & time_name = tname, & ! (in) optional
5361  & err = err) ! (out) optional
5362  if ( .not. present_and_true(quiet) ) then
5363  call messagenotify('M', subname, 'Input %c', c1=trim(actual_url))
5364  end if
5365 end subroutine historygetdouble6pointer
5366 subroutine historygetdouble7pointer(file, varname, array, range, &
5367  & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
5369  use gtdata_generic, only: open, inquire, close, get
5370  use dc_string, only: tochar
5372  use dc_types, only: string, dp
5373  use dc_message, only: messagenotify
5374  use dc_trace, only: dbgmessage
5375  implicit none
5376  character(*), intent(in):: file
5377  character(*), intent(in):: varname
5378  character(*), intent(in), optional:: range
5379  logical, intent(in), optional:: quiet
5380  logical, intent(in), optional:: flag_mpi_split
5381  real(DP), intent(out), optional:: returned_time ! データの時刻
5382  logical, intent(out), optional:: flag_time_exist
5383  logical, intent(out), optional:: err
5384  integer:: domain
5385  real(DP), pointer :: array(:,:,:,:,:,:,:) ! (out)
5386  real(DP), target :: array_tmp(1)
5387  type(gt_variable):: var
5388  character(STRING):: file_work, url, actual_url
5389  character(STRING):: tname
5390  character(*), parameter :: subname = "HistoryGetDouble7Pointer"
5391  interface
5392  subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
5393  character(*), intent(in):: file
5394  character(*), intent(in):: varname
5395  character(*), intent(out):: url
5396  character(*), intent(in), optional:: range
5397  logical, intent(out), optional:: flag_time_exist
5398  character(*), intent(out), optional:: time_name
5399  logical, intent(out), optional:: err
5400  end subroutine lookup_growable_url
5401  end interface
5402  interface
5403  subroutine actual_iorange_dump(url, actual_url, returned_time, time_name, err)
5404  use dc_types, only: dp
5405  character(*), intent(in) :: url ! 変数 URL
5406  character(*), intent(out), optional :: actual_url
5407  ! 正確な入出力範囲指定
5408  real(DP), intent(out), optional:: returned_time ! データの時刻
5409  character(*), intent(in), optional:: time_name ! 時刻次元の名称
5410  logical, intent(out), optional :: err ! エラーのフラグ
5411  end subroutine actual_iorange_dump
5412  end interface
5413  interface
5414  function file_rename_mpi( file ) result(result)
5415  use dc_types, only: string
5416  character(*), intent(in):: file
5417  character(STRING):: result
5418  end function file_rename_mpi
5419  end interface
5420  continue
5421  file_work = file
5422  ! ファイル名の変更 (MPI 用)
5423  ! Change filename (for MPI)
5424  !
5425  if ( present_and_true( flag_mpi_split ) ) &
5426  & file_work = file_rename_mpi( file_work )
5427  ! 必要な情報を gtool 変数化
5428  !
5429  call lookup_growable_url(file_work, varname, url, range, &
5430  & flag_time_exist = flag_time_exist, time_name = tname, err = err)
5431  call dbgmessage('@ url =%c', c1=trim(url))
5432  ! いよいよデータ取得
5433  !
5434  call open(var, url, err)
5435  call get(var, array, err)
5436  call close(var, err)
5437  call actual_iorange_dump(url, & ! (in)
5438  & actual_url, returned_time, & ! (out) optional
5439  & time_name = tname, & ! (in) optional
5440  & err = err) ! (out) optional
5441  if ( .not. present_and_true(quiet) ) then
5442  call messagenotify('M', subname, 'Input %c', c1=trim(actual_url))
5443  end if
5444 end subroutine historygetdouble7pointer
5445 subroutine historygetreal0pointer(file, varname, array, range, &
5446  & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
5448  use gtdata_generic, only: open, inquire, close, get
5449  use dc_string, only: tochar
5451  use dc_types, only: string, dp, sp
5452  use dc_message, only: messagenotify
5453  use dc_trace, only: dbgmessage
5454  implicit none
5455  character(*), intent(in):: file
5456  character(*), intent(in):: varname
5457  character(*), intent(in), optional:: range
5458  logical, intent(in), optional:: quiet
5459  logical, intent(in), optional:: flag_mpi_split
5460  real(DP), intent(out), optional:: returned_time ! データの時刻
5461  logical, intent(out), optional:: flag_time_exist
5462  logical, intent(out), optional:: err
5463  integer:: domain
5464  real(SP), pointer :: array ! (out)
5465  real(SP), target :: array_tmp(1)
5466  type(gt_variable):: var
5467  character(STRING):: file_work, url, actual_url
5468  character(STRING):: tname
5469  character(*), parameter :: subname = "HistoryGetReal0Pointer"
5470  interface
5471  subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
5472  character(*), intent(in):: file
5473  character(*), intent(in):: varname
5474  character(*), intent(out):: url
5475  character(*), intent(in), optional:: range
5476  logical, intent(out), optional:: flag_time_exist
5477  character(*), intent(out), optional:: time_name
5478  logical, intent(out), optional:: err
5479  end subroutine lookup_growable_url
5480  end interface
5481  interface
5482  subroutine actual_iorange_dump(url, actual_url, returned_time, time_name, err)
5483  use dc_types, only: dp
5484  character(*), intent(in) :: url ! 変数 URL
5485  character(*), intent(out), optional :: actual_url
5486  ! 正確な入出力範囲指定
5487  real(DP), intent(out), optional:: returned_time ! データの時刻
5488  character(*), intent(in), optional:: time_name ! 時刻次元の名称
5489  logical, intent(out), optional :: err ! エラーのフラグ
5490  end subroutine actual_iorange_dump
5491  end interface
5492  interface
5493  function file_rename_mpi( file ) result(result)
5494  use dc_types, only: string
5495  character(*), intent(in):: file
5496  character(STRING):: result
5497  end function file_rename_mpi
5498  end interface
5499  continue
5500  file_work = file
5501  ! ファイル名の変更 (MPI 用)
5502  ! Change filename (for MPI)
5503  !
5504  if ( present_and_true( flag_mpi_split ) ) &
5505  & file_work = file_rename_mpi( file_work )
5506  ! 必要な情報を gtool 変数化
5507  !
5508  call lookup_growable_url(file_work, varname, url, range, &
5509  & flag_time_exist = flag_time_exist, time_name = tname, err = err)
5510  allocate(array)
5511  call dbgmessage('@ url =%c', c1=trim(url))
5512  ! いよいよデータ取得
5513  !
5514  call open(var, url, err)
5515  call inquire(var=var, size=domain)
5516  call get(var, array_tmp, domain, err)
5517  array = array_tmp(1)
5518  call close(var, err)
5519  call actual_iorange_dump(url, & ! (in)
5520  & actual_url, returned_time, & ! (out) optional
5521  & time_name = tname, & ! (in) optional
5522  & err = err) ! (out) optional
5523  if ( .not. present_and_true(quiet) ) then
5524  call messagenotify('M', subname, 'Input %c', c1=trim(actual_url))
5525  end if
5526 end subroutine historygetreal0pointer
5527 subroutine historygetreal1pointer(file, varname, array, range, &
5528  & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
5530  use gtdata_generic, only: open, inquire, close, get
5531  use dc_string, only: tochar
5533  use dc_types, only: string, dp, sp
5534  use dc_message, only: messagenotify
5535  use dc_trace, only: dbgmessage
5536  implicit none
5537  character(*), intent(in):: file
5538  character(*), intent(in):: varname
5539  character(*), intent(in), optional:: range
5540  logical, intent(in), optional:: quiet
5541  logical, intent(in), optional:: flag_mpi_split
5542  real(DP), intent(out), optional:: returned_time ! データの時刻
5543  logical, intent(out), optional:: flag_time_exist
5544  logical, intent(out), optional:: err
5545  integer:: domain
5546  real(SP), pointer :: array(:) ! (out)
5547  real(SP), target :: array_tmp(1)
5548  type(gt_variable):: var
5549  character(STRING):: file_work, url, actual_url
5550  character(STRING):: tname
5551  character(*), parameter :: subname = "HistoryGetReal1Pointer"
5552  interface
5553  subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
5554  character(*), intent(in):: file
5555  character(*), intent(in):: varname
5556  character(*), intent(out):: url
5557  character(*), intent(in), optional:: range
5558  logical, intent(out), optional:: flag_time_exist
5559  character(*), intent(out), optional:: time_name
5560  logical, intent(out), optional:: err
5561  end subroutine lookup_growable_url
5562  end interface
5563  interface
5564  subroutine actual_iorange_dump(url, actual_url, returned_time, time_name, err)
5565  use dc_types, only: dp
5566  character(*), intent(in) :: url ! 変数 URL
5567  character(*), intent(out), optional :: actual_url
5568  ! 正確な入出力範囲指定
5569  real(DP), intent(out), optional:: returned_time ! データの時刻
5570  character(*), intent(in), optional:: time_name ! 時刻次元の名称
5571  logical, intent(out), optional :: err ! エラーのフラグ
5572  end subroutine actual_iorange_dump
5573  end interface
5574  interface
5575  function file_rename_mpi( file ) result(result)
5576  use dc_types, only: string
5577  character(*), intent(in):: file
5578  character(STRING):: result
5579  end function file_rename_mpi
5580  end interface
5581  continue
5582  file_work = file
5583  ! ファイル名の変更 (MPI 用)
5584  ! Change filename (for MPI)
5585  !
5586  if ( present_and_true( flag_mpi_split ) ) &
5587  & file_work = file_rename_mpi( file_work )
5588  ! 必要な情報を gtool 変数化
5589  !
5590  call lookup_growable_url(file_work, varname, url, range, &
5591  & flag_time_exist = flag_time_exist, time_name = tname, err = err)
5592  call dbgmessage('@ url =%c', c1=trim(url))
5593  ! いよいよデータ取得
5594  !
5595  call open(var, url, err)
5596  call get(var, array, err)
5597  call close(var, err)
5598  call actual_iorange_dump(url, & ! (in)
5599  & actual_url, returned_time, & ! (out) optional
5600  & time_name = tname, & ! (in) optional
5601  & err = err) ! (out) optional
5602  if ( .not. present_and_true(quiet) ) then
5603  call messagenotify('M', subname, 'Input %c', c1=trim(actual_url))
5604  end if
5605 end subroutine historygetreal1pointer
5606 subroutine historygetreal2pointer(file, varname, array, range, &
5607  & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
5609  use gtdata_generic, only: open, inquire, close, get
5610  use dc_string, only: tochar
5612  use dc_types, only: string, dp, sp
5613  use dc_message, only: messagenotify
5614  use dc_trace, only: dbgmessage
5615  implicit none
5616  character(*), intent(in):: file
5617  character(*), intent(in):: varname
5618  character(*), intent(in), optional:: range
5619  logical, intent(in), optional:: quiet
5620  logical, intent(in), optional:: flag_mpi_split
5621  real(DP), intent(out), optional:: returned_time ! データの時刻
5622  logical, intent(out), optional:: flag_time_exist
5623  logical, intent(out), optional:: err
5624  integer:: domain
5625  real(SP), pointer :: array(:,:) ! (out)
5626  real(SP), target :: array_tmp(1)
5627  type(gt_variable):: var
5628  character(STRING):: file_work, url, actual_url
5629  character(STRING):: tname
5630  character(*), parameter :: subname = "HistoryGetReal2Pointer"
5631  interface
5632  subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
5633  character(*), intent(in):: file
5634  character(*), intent(in):: varname
5635  character(*), intent(out):: url
5636  character(*), intent(in), optional:: range
5637  logical, intent(out), optional:: flag_time_exist
5638  character(*), intent(out), optional:: time_name
5639  logical, intent(out), optional:: err
5640  end subroutine lookup_growable_url
5641  end interface
5642  interface
5643  subroutine actual_iorange_dump(url, actual_url, returned_time, time_name, err)
5644  use dc_types, only: dp
5645  character(*), intent(in) :: url ! 変数 URL
5646  character(*), intent(out), optional :: actual_url
5647  ! 正確な入出力範囲指定
5648  real(DP), intent(out), optional:: returned_time ! データの時刻
5649  character(*), intent(in), optional:: time_name ! 時刻次元の名称
5650  logical, intent(out), optional :: err ! エラーのフラグ
5651  end subroutine actual_iorange_dump
5652  end interface
5653  interface
5654  function file_rename_mpi( file ) result(result)
5655  use dc_types, only: string
5656  character(*), intent(in):: file
5657  character(STRING):: result
5658  end function file_rename_mpi
5659  end interface
5660  continue
5661  file_work = file
5662  ! ファイル名の変更 (MPI 用)
5663  ! Change filename (for MPI)
5664  !
5665  if ( present_and_true( flag_mpi_split ) ) &
5666  & file_work = file_rename_mpi( file_work )
5667  ! 必要な情報を gtool 変数化
5668  !
5669  call lookup_growable_url(file_work, varname, url, range, &
5670  & flag_time_exist = flag_time_exist, time_name = tname, err = err)
5671  call dbgmessage('@ url =%c', c1=trim(url))
5672  ! いよいよデータ取得
5673  !
5674  call open(var, url, err)
5675  call get(var, array, err)
5676  call close(var, err)
5677  call actual_iorange_dump(url, & ! (in)
5678  & actual_url, returned_time, & ! (out) optional
5679  & time_name = tname, & ! (in) optional
5680  & err = err) ! (out) optional
5681  if ( .not. present_and_true(quiet) ) then
5682  call messagenotify('M', subname, 'Input %c', c1=trim(actual_url))
5683  end if
5684 end subroutine historygetreal2pointer
5685 subroutine historygetreal3pointer(file, varname, array, range, &
5686  & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
5688  use gtdata_generic, only: open, inquire, close, get
5689  use dc_string, only: tochar
5691  use dc_types, only: string, dp, sp
5692  use dc_message, only: messagenotify
5693  use dc_trace, only: dbgmessage
5694  implicit none
5695  character(*), intent(in):: file
5696  character(*), intent(in):: varname
5697  character(*), intent(in), optional:: range
5698  logical, intent(in), optional:: quiet
5699  logical, intent(in), optional:: flag_mpi_split
5700  real(DP), intent(out), optional:: returned_time ! データの時刻
5701  logical, intent(out), optional:: flag_time_exist
5702  logical, intent(out), optional:: err
5703  integer:: domain
5704  real(SP), pointer :: array(:,:,:) ! (out)
5705  real(SP), target :: array_tmp(1)
5706  type(gt_variable):: var
5707  character(STRING):: file_work, url, actual_url
5708  character(STRING):: tname
5709  character(*), parameter :: subname = "HistoryGetReal3Pointer"
5710  interface
5711  subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
5712  character(*), intent(in):: file
5713  character(*), intent(in):: varname
5714  character(*), intent(out):: url
5715  character(*), intent(in), optional:: range
5716  logical, intent(out), optional:: flag_time_exist
5717  character(*), intent(out), optional:: time_name
5718  logical, intent(out), optional:: err
5719  end subroutine lookup_growable_url
5720  end interface
5721  interface
5722  subroutine actual_iorange_dump(url, actual_url, returned_time, time_name, err)
5723  use dc_types, only: dp
5724  character(*), intent(in) :: url ! 変数 URL
5725  character(*), intent(out), optional :: actual_url
5726  ! 正確な入出力範囲指定
5727  real(DP), intent(out), optional:: returned_time ! データの時刻
5728  character(*), intent(in), optional:: time_name ! 時刻次元の名称
5729  logical, intent(out), optional :: err ! エラーのフラグ
5730  end subroutine actual_iorange_dump
5731  end interface
5732  interface
5733  function file_rename_mpi( file ) result(result)
5734  use dc_types, only: string
5735  character(*), intent(in):: file
5736  character(STRING):: result
5737  end function file_rename_mpi
5738  end interface
5739  continue
5740  file_work = file
5741  ! ファイル名の変更 (MPI 用)
5742  ! Change filename (for MPI)
5743  !
5744  if ( present_and_true( flag_mpi_split ) ) &
5745  & file_work = file_rename_mpi( file_work )
5746  ! 必要な情報を gtool 変数化
5747  !
5748  call lookup_growable_url(file_work, varname, url, range, &
5749  & flag_time_exist = flag_time_exist, time_name = tname, err = err)
5750  call dbgmessage('@ url =%c', c1=trim(url))
5751  ! いよいよデータ取得
5752  !
5753  call open(var, url, err)
5754  call get(var, array, err)
5755  call close(var, err)
5756  call actual_iorange_dump(url, & ! (in)
5757  & actual_url, returned_time, & ! (out) optional
5758  & time_name = tname, & ! (in) optional
5759  & err = err) ! (out) optional
5760  if ( .not. present_and_true(quiet) ) then
5761  call messagenotify('M', subname, 'Input %c', c1=trim(actual_url))
5762  end if
5763 end subroutine historygetreal3pointer
5764 subroutine historygetreal4pointer(file, varname, array, range, &
5765  & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
5767  use gtdata_generic, only: open, inquire, close, get
5768  use dc_string, only: tochar
5770  use dc_types, only: string, dp, sp
5771  use dc_message, only: messagenotify
5772  use dc_trace, only: dbgmessage
5773  implicit none
5774  character(*), intent(in):: file
5775  character(*), intent(in):: varname
5776  character(*), intent(in), optional:: range
5777  logical, intent(in), optional:: quiet
5778  logical, intent(in), optional:: flag_mpi_split
5779  real(DP), intent(out), optional:: returned_time ! データの時刻
5780  logical, intent(out), optional:: flag_time_exist
5781  logical, intent(out), optional:: err
5782  integer:: domain
5783  real(SP), pointer :: array(:,:,:,:) ! (out)
5784  real(SP), target :: array_tmp(1)
5785  type(gt_variable):: var
5786  character(STRING):: file_work, url, actual_url
5787  character(STRING):: tname
5788  character(*), parameter :: subname = "HistoryGetReal4Pointer"
5789  interface
5790  subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
5791  character(*), intent(in):: file
5792  character(*), intent(in):: varname
5793  character(*), intent(out):: url
5794  character(*), intent(in), optional:: range
5795  logical, intent(out), optional:: flag_time_exist
5796  character(*), intent(out), optional:: time_name
5797  logical, intent(out), optional:: err
5798  end subroutine lookup_growable_url
5799  end interface
5800  interface
5801  subroutine actual_iorange_dump(url, actual_url, returned_time, time_name, err)
5802  use dc_types, only: dp
5803  character(*), intent(in) :: url ! 変数 URL
5804  character(*), intent(out), optional :: actual_url
5805  ! 正確な入出力範囲指定
5806  real(DP), intent(out), optional:: returned_time ! データの時刻
5807  character(*), intent(in), optional:: time_name ! 時刻次元の名称
5808  logical, intent(out), optional :: err ! エラーのフラグ
5809  end subroutine actual_iorange_dump
5810  end interface
5811  interface
5812  function file_rename_mpi( file ) result(result)
5813  use dc_types, only: string
5814  character(*), intent(in):: file
5815  character(STRING):: result
5816  end function file_rename_mpi
5817  end interface
5818  continue
5819  file_work = file
5820  ! ファイル名の変更 (MPI 用)
5821  ! Change filename (for MPI)
5822  !
5823  if ( present_and_true( flag_mpi_split ) ) &
5824  & file_work = file_rename_mpi( file_work )
5825  ! 必要な情報を gtool 変数化
5826  !
5827  call lookup_growable_url(file_work, varname, url, range, &
5828  & flag_time_exist = flag_time_exist, time_name = tname, err = err)
5829  call dbgmessage('@ url =%c', c1=trim(url))
5830  ! いよいよデータ取得
5831  !
5832  call open(var, url, err)
5833  call get(var, array, err)
5834  call close(var, err)
5835  call actual_iorange_dump(url, & ! (in)
5836  & actual_url, returned_time, & ! (out) optional
5837  & time_name = tname, & ! (in) optional
5838  & err = err) ! (out) optional
5839  if ( .not. present_and_true(quiet) ) then
5840  call messagenotify('M', subname, 'Input %c', c1=trim(actual_url))
5841  end if
5842 end subroutine historygetreal4pointer
5843 subroutine historygetreal5pointer(file, varname, array, range, &
5844  & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
5846  use gtdata_generic, only: open, inquire, close, get
5847  use dc_string, only: tochar
5849  use dc_types, only: string, dp, sp
5850  use dc_message, only: messagenotify
5851  use dc_trace, only: dbgmessage
5852  implicit none
5853  character(*), intent(in):: file
5854  character(*), intent(in):: varname
5855  character(*), intent(in), optional:: range
5856  logical, intent(in), optional:: quiet
5857  logical, intent(in), optional:: flag_mpi_split
5858  real(DP), intent(out), optional:: returned_time ! データの時刻
5859  logical, intent(out), optional:: flag_time_exist
5860  logical, intent(out), optional:: err
5861  integer:: domain
5862  real(SP), pointer :: array(:,:,:,:,:) ! (out)
5863  real(SP), target :: array_tmp(1)
5864  type(gt_variable):: var
5865  character(STRING):: file_work, url, actual_url
5866  character(STRING):: tname
5867  character(*), parameter :: subname = "HistoryGetReal5Pointer"
5868  interface
5869  subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
5870  character(*), intent(in):: file
5871  character(*), intent(in):: varname
5872  character(*), intent(out):: url
5873  character(*), intent(in), optional:: range
5874  logical, intent(out), optional:: flag_time_exist
5875  character(*), intent(out), optional:: time_name
5876  logical, intent(out), optional:: err
5877  end subroutine lookup_growable_url
5878  end interface
5879  interface
5880  subroutine actual_iorange_dump(url, actual_url, returned_time, time_name, err)
5881  use dc_types, only: dp
5882  character(*), intent(in) :: url ! 変数 URL
5883  character(*), intent(out), optional :: actual_url
5884  ! 正確な入出力範囲指定
5885  real(DP), intent(out), optional:: returned_time ! データの時刻
5886  character(*), intent(in), optional:: time_name ! 時刻次元の名称
5887  logical, intent(out), optional :: err ! エラーのフラグ
5888  end subroutine actual_iorange_dump
5889  end interface
5890  interface
5891  function file_rename_mpi( file ) result(result)
5892  use dc_types, only: string
5893  character(*), intent(in):: file
5894  character(STRING):: result
5895  end function file_rename_mpi
5896  end interface
5897  continue
5898  file_work = file
5899  ! ファイル名の変更 (MPI 用)
5900  ! Change filename (for MPI)
5901  !
5902  if ( present_and_true( flag_mpi_split ) ) &
5903  & file_work = file_rename_mpi( file_work )
5904  ! 必要な情報を gtool 変数化
5905  !
5906  call lookup_growable_url(file_work, varname, url, range, &
5907  & flag_time_exist = flag_time_exist, time_name = tname, err = err)
5908  call dbgmessage('@ url =%c', c1=trim(url))
5909  ! いよいよデータ取得
5910  !
5911  call open(var, url, err)
5912  call get(var, array, err)
5913  call close(var, err)
5914  call actual_iorange_dump(url, & ! (in)
5915  & actual_url, returned_time, & ! (out) optional
5916  & time_name = tname, & ! (in) optional
5917  & err = err) ! (out) optional
5918  if ( .not. present_and_true(quiet) ) then
5919  call messagenotify('M', subname, 'Input %c', c1=trim(actual_url))
5920  end if
5921 end subroutine historygetreal5pointer
5922 subroutine historygetreal6pointer(file, varname, array, range, &
5923  & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
5925  use gtdata_generic, only: open, inquire, close, get
5926  use dc_string, only: tochar
5928  use dc_types, only: string, dp, sp
5929  use dc_message, only: messagenotify
5930  use dc_trace, only: dbgmessage
5931  implicit none
5932  character(*), intent(in):: file
5933  character(*), intent(in):: varname
5934  character(*), intent(in), optional:: range
5935  logical, intent(in), optional:: quiet
5936  logical, intent(in), optional:: flag_mpi_split
5937  real(DP), intent(out), optional:: returned_time ! データの時刻
5938  logical, intent(out), optional:: flag_time_exist
5939  logical, intent(out), optional:: err
5940  integer:: domain
5941  real(SP), pointer :: array(:,:,:,:,:,:) ! (out)
5942  real(SP), target :: array_tmp(1)
5943  type(gt_variable):: var
5944  character(STRING):: file_work, url, actual_url
5945  character(STRING):: tname
5946  character(*), parameter :: subname = "HistoryGetReal6Pointer"
5947  interface
5948  subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
5949  character(*), intent(in):: file
5950  character(*), intent(in):: varname
5951  character(*), intent(out):: url
5952  character(*), intent(in), optional:: range
5953  logical, intent(out), optional:: flag_time_exist
5954  character(*), intent(out), optional:: time_name
5955  logical, intent(out), optional:: err
5956  end subroutine lookup_growable_url
5957  end interface
5958  interface
5959  subroutine actual_iorange_dump(url, actual_url, returned_time, time_name, err)
5960  use dc_types, only: dp
5961  character(*), intent(in) :: url ! 変数 URL
5962  character(*), intent(out), optional :: actual_url
5963  ! 正確な入出力範囲指定
5964  real(DP), intent(out), optional:: returned_time ! データの時刻
5965  character(*), intent(in), optional:: time_name ! 時刻次元の名称
5966  logical, intent(out), optional :: err ! エラーのフラグ
5967  end subroutine actual_iorange_dump
5968  end interface
5969  interface
5970  function file_rename_mpi( file ) result(result)
5971  use dc_types, only: string
5972  character(*), intent(in):: file
5973  character(STRING):: result
5974  end function file_rename_mpi
5975  end interface
5976  continue
5977  file_work = file
5978  ! ファイル名の変更 (MPI 用)
5979  ! Change filename (for MPI)
5980  !
5981  if ( present_and_true( flag_mpi_split ) ) &
5982  & file_work = file_rename_mpi( file_work )
5983  ! 必要な情報を gtool 変数化
5984  !
5985  call lookup_growable_url(file_work, varname, url, range, &
5986  & flag_time_exist = flag_time_exist, time_name = tname, err = err)
5987  call dbgmessage('@ url =%c', c1=trim(url))
5988  ! いよいよデータ取得
5989  !
5990  call open(var, url, err)
5991  call get(var, array, err)
5992  call close(var, err)
5993  call actual_iorange_dump(url, & ! (in)
5994  & actual_url, returned_time, & ! (out) optional
5995  & time_name = tname, & ! (in) optional
5996  & err = err) ! (out) optional
5997  if ( .not. present_and_true(quiet) ) then
5998  call messagenotify('M', subname, 'Input %c', c1=trim(actual_url))
5999  end if
6000 end subroutine historygetreal6pointer
6001 subroutine historygetreal7pointer(file, varname, array, range, &
6002  & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
6004  use gtdata_generic, only: open, inquire, close, get
6005  use dc_string, only: tochar
6007  use dc_types, only: string, dp, sp
6008  use dc_message, only: messagenotify
6009  use dc_trace, only: dbgmessage
6010  implicit none
6011  character(*), intent(in):: file
6012  character(*), intent(in):: varname
6013  character(*), intent(in), optional:: range
6014  logical, intent(in), optional:: quiet
6015  logical, intent(in), optional:: flag_mpi_split
6016  real(DP), intent(out), optional:: returned_time ! データの時刻
6017  logical, intent(out), optional:: flag_time_exist
6018  logical, intent(out), optional:: err
6019  integer:: domain
6020  real(SP), pointer :: array(:,:,:,:,:,:,:) ! (out)
6021  real(SP), target :: array_tmp(1)
6022  type(gt_variable):: var
6023  character(STRING):: file_work, url, actual_url
6024  character(STRING):: tname
6025  character(*), parameter :: subname = "HistoryGetReal7Pointer"
6026  interface
6027  subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
6028  character(*), intent(in):: file
6029  character(*), intent(in):: varname
6030  character(*), intent(out):: url
6031  character(*), intent(in), optional:: range
6032  logical, intent(out), optional:: flag_time_exist
6033  character(*), intent(out), optional:: time_name
6034  logical, intent(out), optional:: err
6035  end subroutine lookup_growable_url
6036  end interface
6037  interface
6038  subroutine actual_iorange_dump(url, actual_url, returned_time, time_name, err)
6039  use dc_types, only: dp
6040  character(*), intent(in) :: url ! 変数 URL
6041  character(*), intent(out), optional :: actual_url
6042  ! 正確な入出力範囲指定
6043  real(DP), intent(out), optional:: returned_time ! データの時刻
6044  character(*), intent(in), optional:: time_name ! 時刻次元の名称
6045  logical, intent(out), optional :: err ! エラーのフラグ
6046  end subroutine actual_iorange_dump
6047  end interface
6048  interface
6049  function file_rename_mpi( file ) result(result)
6050  use dc_types, only: string
6051  character(*), intent(in):: file
6052  character(STRING):: result
6053  end function file_rename_mpi
6054  end interface
6055  continue
6056  file_work = file
6057  ! ファイル名の変更 (MPI 用)
6058  ! Change filename (for MPI)
6059  !
6060  if ( present_and_true( flag_mpi_split ) ) &
6061  & file_work = file_rename_mpi( file_work )
6062  ! 必要な情報を gtool 変数化
6063  !
6064  call lookup_growable_url(file_work, varname, url, range, &
6065  & flag_time_exist = flag_time_exist, time_name = tname, err = err)
6066  call dbgmessage('@ url =%c', c1=trim(url))
6067  ! いよいよデータ取得
6068  !
6069  call open(var, url, err)
6070  call get(var, array, err)
6071  call close(var, err)
6072  call actual_iorange_dump(url, & ! (in)
6073  & actual_url, returned_time, & ! (out) optional
6074  & time_name = tname, & ! (in) optional
6075  & err = err) ! (out) optional
6076  if ( .not. present_and_true(quiet) ) then
6077  call messagenotify('M', subname, 'Input %c', c1=trim(actual_url))
6078  end if
6079 end subroutine historygetreal7pointer
6080 subroutine historygetint0pointer(file, varname, array, range, &
6081  & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
6083  use gtdata_generic, only: open, inquire, close, get
6084  use dc_string, only: tochar
6086  use dc_types, only: string, dp
6087  use dc_message, only: messagenotify
6088  use dc_trace, only: dbgmessage
6089  implicit none
6090  character(*), intent(in):: file
6091  character(*), intent(in):: varname
6092  character(*), intent(in), optional:: range
6093  logical, intent(in), optional:: quiet
6094  logical, intent(in), optional:: flag_mpi_split
6095  real(DP), intent(out), optional:: returned_time ! データの時刻
6096  logical, intent(out), optional:: flag_time_exist
6097  logical, intent(out), optional:: err
6098  integer:: domain
6099  integer, pointer :: array ! (out)
6100  integer, target :: array_tmp(1)
6101  type(gt_variable):: var
6102  character(STRING):: file_work, url, actual_url
6103  character(STRING):: tname
6104  character(*), parameter :: subname = "HistoryGetInt0Pointer"
6105  interface
6106  subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
6107  character(*), intent(in):: file
6108  character(*), intent(in):: varname
6109  character(*), intent(out):: url
6110  character(*), intent(in), optional:: range
6111  logical, intent(out), optional:: flag_time_exist
6112  character(*), intent(out), optional:: time_name
6113  logical, intent(out), optional:: err
6114  end subroutine lookup_growable_url
6115  end interface
6116  interface
6117  subroutine actual_iorange_dump(url, actual_url, returned_time, time_name, err)
6118  use dc_types, only: dp
6119  character(*), intent(in) :: url ! 変数 URL
6120  character(*), intent(out), optional :: actual_url
6121  ! 正確な入出力範囲指定
6122  real(DP), intent(out), optional:: returned_time ! データの時刻
6123  character(*), intent(in), optional:: time_name ! 時刻次元の名称
6124  logical, intent(out), optional :: err ! エラーのフラグ
6125  end subroutine actual_iorange_dump
6126  end interface
6127  interface
6128  function file_rename_mpi( file ) result(result)
6129  use dc_types, only: string
6130  character(*), intent(in):: file
6131  character(STRING):: result
6132  end function file_rename_mpi
6133  end interface
6134  continue
6135  file_work = file
6136  ! ファイル名の変更 (MPI 用)
6137  ! Change filename (for MPI)
6138  !
6139  if ( present_and_true( flag_mpi_split ) ) &
6140  & file_work = file_rename_mpi( file_work )
6141  ! 必要な情報を gtool 変数化
6142  !
6143  call lookup_growable_url(file_work, varname, url, range, &
6144  & flag_time_exist = flag_time_exist, time_name = tname, err = err)
6145  allocate(array)
6146  call dbgmessage('@ url =%c', c1=trim(url))
6147  ! いよいよデータ取得
6148  !
6149  call open(var, url, err)
6150  call inquire(var=var, size=domain)
6151  call get(var, array_tmp, domain, err)
6152  array = array_tmp(1)
6153  call close(var, err)
6154  call actual_iorange_dump(url, & ! (in)
6155  & actual_url, returned_time, & ! (out) optional
6156  & time_name = tname, & ! (in) optional
6157  & err = err) ! (out) optional
6158  if ( .not. present_and_true(quiet) ) then
6159  call messagenotify('M', subname, 'Input %c', c1=trim(actual_url))
6160  end if
6161 end subroutine historygetint0pointer
6162 subroutine historygetint1pointer(file, varname, array, range, &
6163  & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
6165  use gtdata_generic, only: open, inquire, close, get
6166  use dc_string, only: tochar
6168  use dc_types, only: string, dp
6169  use dc_message, only: messagenotify
6170  use dc_trace, only: dbgmessage
6171  implicit none
6172  character(*), intent(in):: file
6173  character(*), intent(in):: varname
6174  character(*), intent(in), optional:: range
6175  logical, intent(in), optional:: quiet
6176  logical, intent(in), optional:: flag_mpi_split
6177  real(DP), intent(out), optional:: returned_time ! データの時刻
6178  logical, intent(out), optional:: flag_time_exist
6179  logical, intent(out), optional:: err
6180  integer:: domain
6181  integer, pointer :: array(:) ! (out)
6182  integer, target :: array_tmp(1)
6183  type(gt_variable):: var
6184  character(STRING):: file_work, url, actual_url
6185  character(STRING):: tname
6186  character(*), parameter :: subname = "HistoryGetInt1Pointer"
6187  interface
6188  subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
6189  character(*), intent(in):: file
6190  character(*), intent(in):: varname
6191  character(*), intent(out):: url
6192  character(*), intent(in), optional:: range
6193  logical, intent(out), optional:: flag_time_exist
6194  character(*), intent(out), optional:: time_name
6195  logical, intent(out), optional:: err
6196  end subroutine lookup_growable_url
6197  end interface
6198  interface
6199  subroutine actual_iorange_dump(url, actual_url, returned_time, time_name, err)
6200  use dc_types, only: dp
6201  character(*), intent(in) :: url ! 変数 URL
6202  character(*), intent(out), optional :: actual_url
6203  ! 正確な入出力範囲指定
6204  real(DP), intent(out), optional:: returned_time ! データの時刻
6205  character(*), intent(in), optional:: time_name ! 時刻次元の名称
6206  logical, intent(out), optional :: err ! エラーのフラグ
6207  end subroutine actual_iorange_dump
6208  end interface
6209  interface
6210  function file_rename_mpi( file ) result(result)
6211  use dc_types, only: string
6212  character(*), intent(in):: file
6213  character(STRING):: result
6214  end function file_rename_mpi
6215  end interface
6216  continue
6217  file_work = file
6218  ! ファイル名の変更 (MPI 用)
6219  ! Change filename (for MPI)
6220  !
6221  if ( present_and_true( flag_mpi_split ) ) &
6222  & file_work = file_rename_mpi( file_work )
6223  ! 必要な情報を gtool 変数化
6224  !
6225  call lookup_growable_url(file_work, varname, url, range, &
6226  & flag_time_exist = flag_time_exist, time_name = tname, err = err)
6227  call dbgmessage('@ url =%c', c1=trim(url))
6228  ! いよいよデータ取得
6229  !
6230  call open(var, url, err)
6231  call get(var, array, err)
6232  call close(var, err)
6233  call actual_iorange_dump(url, & ! (in)
6234  & actual_url, returned_time, & ! (out) optional
6235  & time_name = tname, & ! (in) optional
6236  & err = err) ! (out) optional
6237  if ( .not. present_and_true(quiet) ) then
6238  call messagenotify('M', subname, 'Input %c', c1=trim(actual_url))
6239  end if
6240 end subroutine historygetint1pointer
6241 subroutine historygetint2pointer(file, varname, array, range, &
6242  & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
6244  use gtdata_generic, only: open, inquire, close, get
6245  use dc_string, only: tochar
6247  use dc_types, only: string, dp
6248  use dc_message, only: messagenotify
6249  use dc_trace, only: dbgmessage
6250  implicit none
6251  character(*), intent(in):: file
6252  character(*), intent(in):: varname
6253  character(*), intent(in), optional:: range
6254  logical, intent(in), optional:: quiet
6255  logical, intent(in), optional:: flag_mpi_split
6256  real(DP), intent(out), optional:: returned_time ! データの時刻
6257  logical, intent(out), optional:: flag_time_exist
6258  logical, intent(out), optional:: err
6259  integer:: domain
6260  integer, pointer :: array(:,:) ! (out)
6261  integer, target :: array_tmp(1)
6262  type(gt_variable):: var
6263  character(STRING):: file_work, url, actual_url
6264  character(STRING):: tname
6265  character(*), parameter :: subname = "HistoryGetInt2Pointer"
6266  interface
6267  subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
6268  character(*), intent(in):: file
6269  character(*), intent(in):: varname
6270  character(*), intent(out):: url
6271  character(*), intent(in), optional:: range
6272  logical, intent(out), optional:: flag_time_exist
6273  character(*), intent(out), optional:: time_name
6274  logical, intent(out), optional:: err
6275  end subroutine lookup_growable_url
6276  end interface
6277  interface
6278  subroutine actual_iorange_dump(url, actual_url, returned_time, time_name, err)
6279  use dc_types, only: dp
6280  character(*), intent(in) :: url ! 変数 URL
6281  character(*), intent(out), optional :: actual_url
6282  ! 正確な入出力範囲指定
6283  real(DP), intent(out), optional:: returned_time ! データの時刻
6284  character(*), intent(in), optional:: time_name ! 時刻次元の名称
6285  logical, intent(out), optional :: err ! エラーのフラグ
6286  end subroutine actual_iorange_dump
6287  end interface
6288  interface
6289  function file_rename_mpi( file ) result(result)
6290  use dc_types, only: string
6291  character(*), intent(in):: file
6292  character(STRING):: result
6293  end function file_rename_mpi
6294  end interface
6295  continue
6296  file_work = file
6297  ! ファイル名の変更 (MPI 用)
6298  ! Change filename (for MPI)
6299  !
6300  if ( present_and_true( flag_mpi_split ) ) &
6301  & file_work = file_rename_mpi( file_work )
6302  ! 必要な情報を gtool 変数化
6303  !
6304  call lookup_growable_url(file_work, varname, url, range, &
6305  & flag_time_exist = flag_time_exist, time_name = tname, err = err)
6306  call dbgmessage('@ url =%c', c1=trim(url))
6307  ! いよいよデータ取得
6308  !
6309  call open(var, url, err)
6310  call get(var, array, err)
6311  call close(var, err)
6312  call actual_iorange_dump(url, & ! (in)
6313  & actual_url, returned_time, & ! (out) optional
6314  & time_name = tname, & ! (in) optional
6315  & err = err) ! (out) optional
6316  if ( .not. present_and_true(quiet) ) then
6317  call messagenotify('M', subname, 'Input %c', c1=trim(actual_url))
6318  end if
6319 end subroutine historygetint2pointer
6320 subroutine historygetint3pointer(file, varname, array, range, &
6321  & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
6323  use gtdata_generic, only: open, inquire, close, get
6324  use dc_string, only: tochar
6326  use dc_types, only: string, dp
6327  use dc_message, only: messagenotify
6328  use dc_trace, only: dbgmessage
6329  implicit none
6330  character(*), intent(in):: file
6331  character(*), intent(in):: varname
6332  character(*), intent(in), optional:: range
6333  logical, intent(in), optional:: quiet
6334  logical, intent(in), optional:: flag_mpi_split
6335  real(DP), intent(out), optional:: returned_time ! データの時刻
6336  logical, intent(out), optional:: flag_time_exist
6337  logical, intent(out), optional:: err
6338  integer:: domain
6339  integer, pointer :: array(:,:,:) ! (out)
6340  integer, target :: array_tmp(1)
6341  type(gt_variable):: var
6342  character(STRING):: file_work, url, actual_url
6343  character(STRING):: tname
6344  character(*), parameter :: subname = "HistoryGetInt3Pointer"
6345  interface
6346  subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
6347  character(*), intent(in):: file
6348  character(*), intent(in):: varname
6349  character(*), intent(out):: url
6350  character(*), intent(in), optional:: range
6351  logical, intent(out), optional:: flag_time_exist
6352  character(*), intent(out), optional:: time_name
6353  logical, intent(out), optional:: err
6354  end subroutine lookup_growable_url
6355  end interface
6356  interface
6357  subroutine actual_iorange_dump(url, actual_url, returned_time, time_name, err)
6358  use dc_types, only: dp
6359  character(*), intent(in) :: url ! 変数 URL
6360  character(*), intent(out), optional :: actual_url
6361  ! 正確な入出力範囲指定
6362  real(DP), intent(out), optional:: returned_time ! データの時刻
6363  character(*), intent(in), optional:: time_name ! 時刻次元の名称
6364  logical, intent(out), optional :: err ! エラーのフラグ
6365  end subroutine actual_iorange_dump
6366  end interface
6367  interface
6368  function file_rename_mpi( file ) result(result)
6369  use dc_types, only: string
6370  character(*), intent(in):: file
6371  character(STRING):: result
6372  end function file_rename_mpi
6373  end interface
6374  continue
6375  file_work = file
6376  ! ファイル名の変更 (MPI 用)
6377  ! Change filename (for MPI)
6378  !
6379  if ( present_and_true( flag_mpi_split ) ) &
6380  & file_work = file_rename_mpi( file_work )
6381  ! 必要な情報を gtool 変数化
6382  !
6383  call lookup_growable_url(file_work, varname, url, range, &
6384  & flag_time_exist = flag_time_exist, time_name = tname, err = err)
6385  call dbgmessage('@ url =%c', c1=trim(url))
6386  ! いよいよデータ取得
6387  !
6388  call open(var, url, err)
6389  call get(var, array, err)
6390  call close(var, err)
6391  call actual_iorange_dump(url, & ! (in)
6392  & actual_url, returned_time, & ! (out) optional
6393  & time_name = tname, & ! (in) optional
6394  & err = err) ! (out) optional
6395  if ( .not. present_and_true(quiet) ) then
6396  call messagenotify('M', subname, 'Input %c', c1=trim(actual_url))
6397  end if
6398 end subroutine historygetint3pointer
6399 subroutine historygetint4pointer(file, varname, array, range, &
6400  & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
6402  use gtdata_generic, only: open, inquire, close, get
6403  use dc_string, only: tochar
6405  use dc_types, only: string, dp
6406  use dc_message, only: messagenotify
6407  use dc_trace, only: dbgmessage
6408  implicit none
6409  character(*), intent(in):: file
6410  character(*), intent(in):: varname
6411  character(*), intent(in), optional:: range
6412  logical, intent(in), optional:: quiet
6413  logical, intent(in), optional:: flag_mpi_split
6414  real(DP), intent(out), optional:: returned_time ! データの時刻
6415  logical, intent(out), optional:: flag_time_exist
6416  logical, intent(out), optional:: err
6417  integer:: domain
6418  integer, pointer :: array(:,:,:,:) ! (out)
6419  integer, target :: array_tmp(1)
6420  type(gt_variable):: var
6421  character(STRING):: file_work, url, actual_url
6422  character(STRING):: tname
6423  character(*), parameter :: subname = "HistoryGetInt4Pointer"
6424  interface
6425  subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
6426  character(*), intent(in):: file
6427  character(*), intent(in):: varname
6428  character(*), intent(out):: url
6429  character(*), intent(in), optional:: range
6430  logical, intent(out), optional:: flag_time_exist
6431  character(*), intent(out), optional:: time_name
6432  logical, intent(out), optional:: err
6433  end subroutine lookup_growable_url
6434  end interface
6435  interface
6436  subroutine actual_iorange_dump(url, actual_url, returned_time, time_name, err)
6437  use dc_types, only: dp
6438  character(*), intent(in) :: url ! 変数 URL
6439  character(*), intent(out), optional :: actual_url
6440  ! 正確な入出力範囲指定
6441  real(DP), intent(out), optional:: returned_time ! データの時刻
6442  character(*), intent(in), optional:: time_name ! 時刻次元の名称
6443  logical, intent(out), optional :: err ! エラーのフラグ
6444  end subroutine actual_iorange_dump
6445  end interface
6446  interface
6447  function file_rename_mpi( file ) result(result)
6448  use dc_types, only: string
6449  character(*), intent(in):: file
6450  character(STRING):: result
6451  end function file_rename_mpi
6452  end interface
6453  continue
6454  file_work = file
6455  ! ファイル名の変更 (MPI 用)
6456  ! Change filename (for MPI)
6457  !
6458  if ( present_and_true( flag_mpi_split ) ) &
6459  & file_work = file_rename_mpi( file_work )
6460  ! 必要な情報を gtool 変数化
6461  !
6462  call lookup_growable_url(file_work, varname, url, range, &
6463  & flag_time_exist = flag_time_exist, time_name = tname, err = err)
6464  call dbgmessage('@ url =%c', c1=trim(url))
6465  ! いよいよデータ取得
6466  !
6467  call open(var, url, err)
6468  call get(var, array, err)
6469  call close(var, err)
6470  call actual_iorange_dump(url, & ! (in)
6471  & actual_url, returned_time, & ! (out) optional
6472  & time_name = tname, & ! (in) optional
6473  & err = err) ! (out) optional
6474  if ( .not. present_and_true(quiet) ) then
6475  call messagenotify('M', subname, 'Input %c', c1=trim(actual_url))
6476  end if
6477 end subroutine historygetint4pointer
6478 subroutine historygetint5pointer(file, varname, array, range, &
6479  & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
6481  use gtdata_generic, only: open, inquire, close, get
6482  use dc_string, only: tochar
6484  use dc_types, only: string, dp
6485  use dc_message, only: messagenotify
6486  use dc_trace, only: dbgmessage
6487  implicit none
6488  character(*), intent(in):: file
6489  character(*), intent(in):: varname
6490  character(*), intent(in), optional:: range
6491  logical, intent(in), optional:: quiet
6492  logical, intent(in), optional:: flag_mpi_split
6493  real(DP), intent(out), optional:: returned_time ! データの時刻
6494  logical, intent(out), optional:: flag_time_exist
6495  logical, intent(out), optional:: err
6496  integer:: domain
6497  integer, pointer :: array(:,:,:,:,:) ! (out)
6498  integer, target :: array_tmp(1)
6499  type(gt_variable):: var
6500  character(STRING):: file_work, url, actual_url
6501  character(STRING):: tname
6502  character(*), parameter :: subname = "HistoryGetInt5Pointer"
6503  interface
6504  subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
6505  character(*), intent(in):: file
6506  character(*), intent(in):: varname
6507  character(*), intent(out):: url
6508  character(*), intent(in), optional:: range
6509  logical, intent(out), optional:: flag_time_exist
6510  character(*), intent(out), optional:: time_name
6511  logical, intent(out), optional:: err
6512  end subroutine lookup_growable_url
6513  end interface
6514  interface
6515  subroutine actual_iorange_dump(url, actual_url, returned_time, time_name, err)
6516  use dc_types, only: dp
6517  character(*), intent(in) :: url ! 変数 URL
6518  character(*), intent(out), optional :: actual_url
6519  ! 正確な入出力範囲指定
6520  real(DP), intent(out), optional:: returned_time ! データの時刻
6521  character(*), intent(in), optional:: time_name ! 時刻次元の名称
6522  logical, intent(out), optional :: err ! エラーのフラグ
6523  end subroutine actual_iorange_dump
6524  end interface
6525  interface
6526  function file_rename_mpi( file ) result(result)
6527  use dc_types, only: string
6528  character(*), intent(in):: file
6529  character(STRING):: result
6530  end function file_rename_mpi
6531  end interface
6532  continue
6533  file_work = file
6534  ! ファイル名の変更 (MPI 用)
6535  ! Change filename (for MPI)
6536  !
6537  if ( present_and_true( flag_mpi_split ) ) &
6538  & file_work = file_rename_mpi( file_work )
6539  ! 必要な情報を gtool 変数化
6540  !
6541  call lookup_growable_url(file_work, varname, url, range, &
6542  & flag_time_exist = flag_time_exist, time_name = tname, err = err)
6543  call dbgmessage('@ url =%c', c1=trim(url))
6544  ! いよいよデータ取得
6545  !
6546  call open(var, url, err)
6547  call get(var, array, err)
6548  call close(var, err)
6549  call actual_iorange_dump(url, & ! (in)
6550  & actual_url, returned_time, & ! (out) optional
6551  & time_name = tname, & ! (in) optional
6552  & err = err) ! (out) optional
6553  if ( .not. present_and_true(quiet) ) then
6554  call messagenotify('M', subname, 'Input %c', c1=trim(actual_url))
6555  end if
6556 end subroutine historygetint5pointer
6557 subroutine historygetint6pointer(file, varname, array, range, &
6558  & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
6560  use gtdata_generic, only: open, inquire, close, get
6561  use dc_string, only: tochar
6563  use dc_types, only: string, dp
6564  use dc_message, only: messagenotify
6565  use dc_trace, only: dbgmessage
6566  implicit none
6567  character(*), intent(in):: file
6568  character(*), intent(in):: varname
6569  character(*), intent(in), optional:: range
6570  logical, intent(in), optional:: quiet
6571  logical, intent(in), optional:: flag_mpi_split
6572  real(DP), intent(out), optional:: returned_time ! データの時刻
6573  logical, intent(out), optional:: flag_time_exist
6574  logical, intent(out), optional:: err
6575  integer:: domain
6576  integer, pointer :: array(:,:,:,:,:,:) ! (out)
6577  integer, target :: array_tmp(1)
6578  type(gt_variable):: var
6579  character(STRING):: file_work, url, actual_url
6580  character(STRING):: tname
6581  character(*), parameter :: subname = "HistoryGetInt6Pointer"
6582  interface
6583  subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
6584  character(*), intent(in):: file
6585  character(*), intent(in):: varname
6586  character(*), intent(out):: url
6587  character(*), intent(in), optional:: range
6588  logical, intent(out), optional:: flag_time_exist
6589  character(*), intent(out), optional:: time_name
6590  logical, intent(out), optional:: err
6591  end subroutine lookup_growable_url
6592  end interface
6593  interface
6594  subroutine actual_iorange_dump(url, actual_url, returned_time, time_name, err)
6595  use dc_types, only: dp
6596  character(*), intent(in) :: url ! 変数 URL
6597  character(*), intent(out), optional :: actual_url
6598  ! 正確な入出力範囲指定
6599  real(DP), intent(out), optional:: returned_time ! データの時刻
6600  character(*), intent(in), optional:: time_name ! 時刻次元の名称
6601  logical, intent(out), optional :: err ! エラーのフラグ
6602  end subroutine actual_iorange_dump
6603  end interface
6604  interface
6605  function file_rename_mpi( file ) result(result)
6606  use dc_types, only: string
6607  character(*), intent(in):: file
6608  character(STRING):: result
6609  end function file_rename_mpi
6610  end interface
6611  continue
6612  file_work = file
6613  ! ファイル名の変更 (MPI 用)
6614  ! Change filename (for MPI)
6615  !
6616  if ( present_and_true( flag_mpi_split ) ) &
6617  & file_work = file_rename_mpi( file_work )
6618  ! 必要な情報を gtool 変数化
6619  !
6620  call lookup_growable_url(file_work, varname, url, range, &
6621  & flag_time_exist = flag_time_exist, time_name = tname, err = err)
6622  call dbgmessage('@ url =%c', c1=trim(url))
6623  ! いよいよデータ取得
6624  !
6625  call open(var, url, err)
6626  call get(var, array, err)
6627  call close(var, err)
6628  call actual_iorange_dump(url, & ! (in)
6629  & actual_url, returned_time, & ! (out) optional
6630  & time_name = tname, & ! (in) optional
6631  & err = err) ! (out) optional
6632  if ( .not. present_and_true(quiet) ) then
6633  call messagenotify('M', subname, 'Input %c', c1=trim(actual_url))
6634  end if
6635 end subroutine historygetint6pointer
6636 subroutine historygetint7pointer(file, varname, array, range, &
6637  & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
6639  use gtdata_generic, only: open, inquire, close, get
6640  use dc_string, only: tochar
6642  use dc_types, only: string, dp
6643  use dc_message, only: messagenotify
6644  use dc_trace, only: dbgmessage
6645  implicit none
6646  character(*), intent(in):: file
6647  character(*), intent(in):: varname
6648  character(*), intent(in), optional:: range
6649  logical, intent(in), optional:: quiet
6650  logical, intent(in), optional:: flag_mpi_split
6651  real(DP), intent(out), optional:: returned_time ! データの時刻
6652  logical, intent(out), optional:: flag_time_exist
6653  logical, intent(out), optional:: err
6654  integer:: domain
6655  integer, pointer :: array(:,:,:,:,:,:,:) ! (out)
6656  integer, target :: array_tmp(1)
6657  type(gt_variable):: var
6658  character(STRING):: file_work, url, actual_url
6659  character(STRING):: tname
6660  character(*), parameter :: subname = "HistoryGetInt7Pointer"
6661  interface
6662  subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
6663  character(*), intent(in):: file
6664  character(*), intent(in):: varname
6665  character(*), intent(out):: url
6666  character(*), intent(in), optional:: range
6667  logical, intent(out), optional:: flag_time_exist
6668  character(*), intent(out), optional:: time_name
6669  logical, intent(out), optional:: err
6670  end subroutine lookup_growable_url
6671  end interface
6672  interface
6673  subroutine actual_iorange_dump(url, actual_url, returned_time, time_name, err)
6674  use dc_types, only: dp
6675  character(*), intent(in) :: url ! 変数 URL
6676  character(*), intent(out), optional :: actual_url
6677  ! 正確な入出力範囲指定
6678  real(DP), intent(out), optional:: returned_time ! データの時刻
6679  character(*), intent(in), optional:: time_name ! 時刻次元の名称
6680  logical, intent(out), optional :: err ! エラーのフラグ
6681  end subroutine actual_iorange_dump
6682  end interface
6683  interface
6684  function file_rename_mpi( file ) result(result)
6685  use dc_types, only: string
6686  character(*), intent(in):: file
6687  character(STRING):: result
6688  end function file_rename_mpi
6689  end interface
6690  continue
6691  file_work = file
6692  ! ファイル名の変更 (MPI 用)
6693  ! Change filename (for MPI)
6694  !
6695  if ( present_and_true( flag_mpi_split ) ) &
6696  & file_work = file_rename_mpi( file_work )
6697  ! 必要な情報を gtool 変数化
6698  !
6699  call lookup_growable_url(file_work, varname, url, range, &
6700  & flag_time_exist = flag_time_exist, time_name = tname, err = err)
6701  call dbgmessage('@ url =%c', c1=trim(url))
6702  ! いよいよデータ取得
6703  !
6704  call open(var, url, err)
6705  call get(var, array, err)
6706  call close(var, err)
6707  call actual_iorange_dump(url, & ! (in)
6708  & actual_url, returned_time, & ! (out) optional
6709  & time_name = tname, & ! (in) optional
6710  & err = err) ! (out) optional
6711  if ( .not. present_and_true(quiet) ) then
6712  call messagenotify('M', subname, 'Input %c', c1=trim(actual_url))
6713  end if
6714 end subroutine historygetint7pointer
6715 subroutine historygetdouble0timer( &
6716  & file, varname, array, time, &
6717  & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
6718  use dc_string, only: tochar, split
6719  use dc_types, only: string, dp, sp
6720  use dc_trace, only: dbgmessage
6721  use dc_url, only: url_chop_iorange, gt_equal
6722  use dc_present, only: present_and_true
6723  implicit none
6724  character(*), intent(in):: file, varname
6725  real(SP), intent(in):: time
6726  logical, intent(in), optional:: quiet
6727  real(DP), intent(out) :: array
6728  logical, intent(in), optional:: flag_mpi_split
6729  real(DP), intent(out), optional:: returned_time
6730  logical, intent(out), optional:: flag_time_exist
6731  logical, intent(out), optional:: err
6732  character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
6733  character(STRING), pointer:: carray (:)
6734  character(STRING):: tname
6735  character(*), parameter :: subname = "HistoryGetDouble0TimeR"
6736  interface
6737  subroutine historygetdouble0(&
6738  & file, varname, array, range, quiet, &
6739  & flag_mpi_split, returned_time, flag_time_exist, err)
6740  use dc_types, only: dp
6741  character(*), intent(in):: file
6742  character(*), intent(in):: varname
6743  character(*), intent(in), optional:: range
6744  logical, intent(in), optional:: quiet
6745  logical, intent(in), optional:: flag_mpi_split
6746  real(DP), intent(out), optional:: returned_time
6747  logical, intent(out), optional:: flag_time_exist
6748  logical, intent(out), optional:: err
6749  real(DP), intent(out) :: array
6750  end subroutine historygetdouble0
6751  end interface
6752  interface
6753  subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
6754  character(*), intent(in):: file
6755  character(*), intent(in):: varname
6756  character(*), intent(out):: url
6757  character(*), intent(in), optional:: range
6758  logical, intent(out), optional:: flag_time_exist
6759  character(*), intent(out), optional:: time_name
6760  logical, intent(out), optional:: err
6761  end subroutine lookup_growable_url
6762  end interface
6763  interface
6764  function file_rename_mpi( file ) result(result)
6765  use dc_types, only: string
6766  character(*), intent(in):: file
6767  character(STRING):: result
6768  end function file_rename_mpi
6769  end interface
6770  continue
6771  file_work = file
6772  if ( present_and_true( flag_mpi_split ) ) &
6773  & file_work = file_rename_mpi( file_work )
6774  call lookup_growable_url(file = file_work, varname = varname, &
6775  & url = url, &
6776  & flag_time_exist = flag_time_exist, time_name = tname, err = err)
6777  call url_chop_iorange( &
6778  & fullname = url, iorange = iorange, remainder = remainder )
6779  call split( str = iorange, carray = carray, sep = gt_equal )
6780  timevar_name = carray(1)
6781  deallocate( carray )
6782  time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
6783  call historygetdouble0( file = file, &
6784  & varname = varname, array = array, &
6785  & range = time_range, quiet = quiet, &
6786  & flag_mpi_split = flag_mpi_split, &
6787  & returned_time = returned_time, &
6788  & flag_time_exist = flag_time_exist, &
6789  & err = err )
6790 end subroutine historygetdouble0timer
6791 subroutine historygetdouble1timer( &
6792  & file, varname, array, time, &
6793  & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
6794  use dc_string, only: tochar, split
6795  use dc_types, only: string, dp, sp
6796  use dc_trace, only: dbgmessage
6797  use dc_url, only: url_chop_iorange, gt_equal
6798  use dc_present, only: present_and_true
6799  implicit none
6800  character(*), intent(in):: file, varname
6801  real(SP), intent(in):: time
6802  logical, intent(in), optional:: quiet
6803  real(DP), intent(out) :: array(:)
6804  logical, intent(in), optional:: flag_mpi_split
6805  real(DP), intent(out), optional:: returned_time
6806  logical, intent(out), optional:: flag_time_exist
6807  logical, intent(out), optional:: err
6808  character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
6809  character(STRING), pointer:: carray (:)
6810  character(STRING):: tname
6811  character(*), parameter :: subname = "HistoryGetDouble1TimeR"
6812  interface
6813  subroutine historygetdouble1(&
6814  & file, varname, array, range, quiet, &
6815  & flag_mpi_split, returned_time, flag_time_exist, err)
6816  use dc_types, only: dp
6817  character(*), intent(in):: file
6818  character(*), intent(in):: varname
6819  character(*), intent(in), optional:: range
6820  logical, intent(in), optional:: quiet
6821  logical, intent(in), optional:: flag_mpi_split
6822  real(DP), intent(out), optional:: returned_time
6823  logical, intent(out), optional:: flag_time_exist
6824  logical, intent(out), optional:: err
6825  real(DP), intent(out) :: array(:)
6826  end subroutine historygetdouble1
6827  end interface
6828  interface
6829  subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
6830  character(*), intent(in):: file
6831  character(*), intent(in):: varname
6832  character(*), intent(out):: url
6833  character(*), intent(in), optional:: range
6834  logical, intent(out), optional:: flag_time_exist
6835  character(*), intent(out), optional:: time_name
6836  logical, intent(out), optional:: err
6837  end subroutine lookup_growable_url
6838  end interface
6839  interface
6840  function file_rename_mpi( file ) result(result)
6841  use dc_types, only: string
6842  character(*), intent(in):: file
6843  character(STRING):: result
6844  end function file_rename_mpi
6845  end interface
6846  continue
6847  file_work = file
6848  if ( present_and_true( flag_mpi_split ) ) &
6849  & file_work = file_rename_mpi( file_work )
6850  call lookup_growable_url(file = file_work, varname = varname, &
6851  & url = url, &
6852  & flag_time_exist = flag_time_exist, time_name = tname, err = err)
6853  call url_chop_iorange( &
6854  & fullname = url, iorange = iorange, remainder = remainder )
6855  call split( str = iorange, carray = carray, sep = gt_equal )
6856  timevar_name = carray(1)
6857  deallocate( carray )
6858  time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
6859  call historygetdouble1( file = file, &
6860  & varname = varname, array = array, &
6861  & range = time_range, quiet = quiet, &
6862  & flag_mpi_split = flag_mpi_split, &
6863  & returned_time = returned_time, &
6864  & flag_time_exist = flag_time_exist, &
6865  & err = err )
6866 end subroutine historygetdouble1timer
6867 subroutine historygetdouble2timer( &
6868  & file, varname, array, time, &
6869  & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
6870  use dc_string, only: tochar, split
6871  use dc_types, only: string, dp, sp
6872  use dc_trace, only: dbgmessage
6873  use dc_url, only: url_chop_iorange, gt_equal
6874  use dc_present, only: present_and_true
6875  implicit none
6876  character(*), intent(in):: file, varname
6877  real(SP), intent(in):: time
6878  logical, intent(in), optional:: quiet
6879  real(DP), intent(out) :: array(:,:)
6880  logical, intent(in), optional:: flag_mpi_split
6881  real(DP), intent(out), optional:: returned_time
6882  logical, intent(out), optional:: flag_time_exist
6883  logical, intent(out), optional:: err
6884  character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
6885  character(STRING), pointer:: carray (:)
6886  character(STRING):: tname
6887  character(*), parameter :: subname = "HistoryGetDouble2TimeR"
6888  interface
6889  subroutine historygetdouble2(&
6890  & file, varname, array, range, quiet, &
6891  & flag_mpi_split, returned_time, flag_time_exist, err)
6892  use dc_types, only: dp
6893  character(*), intent(in):: file
6894  character(*), intent(in):: varname
6895  character(*), intent(in), optional:: range
6896  logical, intent(in), optional:: quiet
6897  logical, intent(in), optional:: flag_mpi_split
6898  real(DP), intent(out), optional:: returned_time
6899  logical, intent(out), optional:: flag_time_exist
6900  logical, intent(out), optional:: err
6901  real(DP), intent(out) :: array(:,:)
6902  end subroutine historygetdouble2
6903  end interface
6904  interface
6905  subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
6906  character(*), intent(in):: file
6907  character(*), intent(in):: varname
6908  character(*), intent(out):: url
6909  character(*), intent(in), optional:: range
6910  logical, intent(out), optional:: flag_time_exist
6911  character(*), intent(out), optional:: time_name
6912  logical, intent(out), optional:: err
6913  end subroutine lookup_growable_url
6914  end interface
6915  interface
6916  function file_rename_mpi( file ) result(result)
6917  use dc_types, only: string
6918  character(*), intent(in):: file
6919  character(STRING):: result
6920  end function file_rename_mpi
6921  end interface
6922  continue
6923  file_work = file
6924  if ( present_and_true( flag_mpi_split ) ) &
6925  & file_work = file_rename_mpi( file_work )
6926  call lookup_growable_url(file = file_work, varname = varname, &
6927  & url = url, &
6928  & flag_time_exist = flag_time_exist, time_name = tname, err = err)
6929  call url_chop_iorange( &
6930  & fullname = url, iorange = iorange, remainder = remainder )
6931  call split( str = iorange, carray = carray, sep = gt_equal )
6932  timevar_name = carray(1)
6933  deallocate( carray )
6934  time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
6935  call historygetdouble2( file = file, &
6936  & varname = varname, array = array, &
6937  & range = time_range, quiet = quiet, &
6938  & flag_mpi_split = flag_mpi_split, &
6939  & returned_time = returned_time, &
6940  & flag_time_exist = flag_time_exist, &
6941  & err = err )
6942 end subroutine historygetdouble2timer
6943 subroutine historygetdouble3timer( &
6944  & file, varname, array, time, &
6945  & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
6946  use dc_string, only: tochar, split
6947  use dc_types, only: string, dp, sp
6948  use dc_trace, only: dbgmessage
6949  use dc_url, only: url_chop_iorange, gt_equal
6950  use dc_present, only: present_and_true
6951  implicit none
6952  character(*), intent(in):: file, varname
6953  real(SP), intent(in):: time
6954  logical, intent(in), optional:: quiet
6955  real(DP), intent(out) :: array(:,:,:)
6956  logical, intent(in), optional:: flag_mpi_split
6957  real(DP), intent(out), optional:: returned_time
6958  logical, intent(out), optional:: flag_time_exist
6959  logical, intent(out), optional:: err
6960  character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
6961  character(STRING), pointer:: carray (:)
6962  character(STRING):: tname
6963  character(*), parameter :: subname = "HistoryGetDouble3TimeR"
6964  interface
6965  subroutine historygetdouble3(&
6966  & file, varname, array, range, quiet, &
6967  & flag_mpi_split, returned_time, flag_time_exist, err)
6968  use dc_types, only: dp
6969  character(*), intent(in):: file
6970  character(*), intent(in):: varname
6971  character(*), intent(in), optional:: range
6972  logical, intent(in), optional:: quiet
6973  logical, intent(in), optional:: flag_mpi_split
6974  real(DP), intent(out), optional:: returned_time
6975  logical, intent(out), optional:: flag_time_exist
6976  logical, intent(out), optional:: err
6977  real(DP), intent(out) :: array(:,:,:)
6978  end subroutine historygetdouble3
6979  end interface
6980  interface
6981  subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
6982  character(*), intent(in):: file
6983  character(*), intent(in):: varname
6984  character(*), intent(out):: url
6985  character(*), intent(in), optional:: range
6986  logical, intent(out), optional:: flag_time_exist
6987  character(*), intent(out), optional:: time_name
6988  logical, intent(out), optional:: err
6989  end subroutine lookup_growable_url
6990  end interface
6991  interface
6992  function file_rename_mpi( file ) result(result)
6993  use dc_types, only: string
6994  character(*), intent(in):: file
6995  character(STRING):: result
6996  end function file_rename_mpi
6997  end interface
6998  continue
6999  file_work = file
7000  if ( present_and_true( flag_mpi_split ) ) &
7001  & file_work = file_rename_mpi( file_work )
7002  call lookup_growable_url(file = file_work, varname = varname, &
7003  & url = url, &
7004  & flag_time_exist = flag_time_exist, time_name = tname, err = err)
7005  call url_chop_iorange( &
7006  & fullname = url, iorange = iorange, remainder = remainder )
7007  call split( str = iorange, carray = carray, sep = gt_equal )
7008  timevar_name = carray(1)
7009  deallocate( carray )
7010  time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
7011  call historygetdouble3( file = file, &
7012  & varname = varname, array = array, &
7013  & range = time_range, quiet = quiet, &
7014  & flag_mpi_split = flag_mpi_split, &
7015  & returned_time = returned_time, &
7016  & flag_time_exist = flag_time_exist, &
7017  & err = err )
7018 end subroutine historygetdouble3timer
7019 subroutine historygetdouble4timer( &
7020  & file, varname, array, time, &
7021  & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
7022  use dc_string, only: tochar, split
7023  use dc_types, only: string, dp, sp
7024  use dc_trace, only: dbgmessage
7025  use dc_url, only: url_chop_iorange, gt_equal
7026  use dc_present, only: present_and_true
7027  implicit none
7028  character(*), intent(in):: file, varname
7029  real(SP), intent(in):: time
7030  logical, intent(in), optional:: quiet
7031  real(DP), intent(out) :: array(:,:,:,:)
7032  logical, intent(in), optional:: flag_mpi_split
7033  real(DP), intent(out), optional:: returned_time
7034  logical, intent(out), optional:: flag_time_exist
7035  logical, intent(out), optional:: err
7036  character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
7037  character(STRING), pointer:: carray (:)
7038  character(STRING):: tname
7039  character(*), parameter :: subname = "HistoryGetDouble4TimeR"
7040  interface
7041  subroutine historygetdouble4(&
7042  & file, varname, array, range, quiet, &
7043  & flag_mpi_split, returned_time, flag_time_exist, err)
7044  use dc_types, only: dp
7045  character(*), intent(in):: file
7046  character(*), intent(in):: varname
7047  character(*), intent(in), optional:: range
7048  logical, intent(in), optional:: quiet
7049  logical, intent(in), optional:: flag_mpi_split
7050  real(DP), intent(out), optional:: returned_time
7051  logical, intent(out), optional:: flag_time_exist
7052  logical, intent(out), optional:: err
7053  real(DP), intent(out) :: array(:,:,:,:)
7054  end subroutine historygetdouble4
7055  end interface
7056  interface
7057  subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
7058  character(*), intent(in):: file
7059  character(*), intent(in):: varname
7060  character(*), intent(out):: url
7061  character(*), intent(in), optional:: range
7062  logical, intent(out), optional:: flag_time_exist
7063  character(*), intent(out), optional:: time_name
7064  logical, intent(out), optional:: err
7065  end subroutine lookup_growable_url
7066  end interface
7067  interface
7068  function file_rename_mpi( file ) result(result)
7069  use dc_types, only: string
7070  character(*), intent(in):: file
7071  character(STRING):: result
7072  end function file_rename_mpi
7073  end interface
7074  continue
7075  file_work = file
7076  if ( present_and_true( flag_mpi_split ) ) &
7077  & file_work = file_rename_mpi( file_work )
7078  call lookup_growable_url(file = file_work, varname = varname, &
7079  & url = url, &
7080  & flag_time_exist = flag_time_exist, time_name = tname, err = err)
7081  call url_chop_iorange( &
7082  & fullname = url, iorange = iorange, remainder = remainder )
7083  call split( str = iorange, carray = carray, sep = gt_equal )
7084  timevar_name = carray(1)
7085  deallocate( carray )
7086  time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
7087  call historygetdouble4( file = file, &
7088  & varname = varname, array = array, &
7089  & range = time_range, quiet = quiet, &
7090  & flag_mpi_split = flag_mpi_split, &
7091  & returned_time = returned_time, &
7092  & flag_time_exist = flag_time_exist, &
7093  & err = err )
7094 end subroutine historygetdouble4timer
7095 subroutine historygetdouble5timer( &
7096  & file, varname, array, time, &
7097  & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
7098  use dc_string, only: tochar, split
7099  use dc_types, only: string, dp, sp
7100  use dc_trace, only: dbgmessage
7101  use dc_url, only: url_chop_iorange, gt_equal
7102  use dc_present, only: present_and_true
7103  implicit none
7104  character(*), intent(in):: file, varname
7105  real(SP), intent(in):: time
7106  logical, intent(in), optional:: quiet
7107  real(DP), intent(out) :: array(:,:,:,:,:)
7108  logical, intent(in), optional:: flag_mpi_split
7109  real(DP), intent(out), optional:: returned_time
7110  logical, intent(out), optional:: flag_time_exist
7111  logical, intent(out), optional:: err
7112  character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
7113  character(STRING), pointer:: carray (:)
7114  character(STRING):: tname
7115  character(*), parameter :: subname = "HistoryGetDouble5TimeR"
7116  interface
7117  subroutine historygetdouble5(&
7118  & file, varname, array, range, quiet, &
7119  & flag_mpi_split, returned_time, flag_time_exist, err)
7120  use dc_types, only: dp
7121  character(*), intent(in):: file
7122  character(*), intent(in):: varname
7123  character(*), intent(in), optional:: range
7124  logical, intent(in), optional:: quiet
7125  logical, intent(in), optional:: flag_mpi_split
7126  real(DP), intent(out), optional:: returned_time
7127  logical, intent(out), optional:: flag_time_exist
7128  logical, intent(out), optional:: err
7129  real(DP), intent(out) :: array(:,:,:,:,:)
7130  end subroutine historygetdouble5
7131  end interface
7132  interface
7133  subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
7134  character(*), intent(in):: file
7135  character(*), intent(in):: varname
7136  character(*), intent(out):: url
7137  character(*), intent(in), optional:: range
7138  logical, intent(out), optional:: flag_time_exist
7139  character(*), intent(out), optional:: time_name
7140  logical, intent(out), optional:: err
7141  end subroutine lookup_growable_url
7142  end interface
7143  interface
7144  function file_rename_mpi( file ) result(result)
7145  use dc_types, only: string
7146  character(*), intent(in):: file
7147  character(STRING):: result
7148  end function file_rename_mpi
7149  end interface
7150  continue
7151  file_work = file
7152  if ( present_and_true( flag_mpi_split ) ) &
7153  & file_work = file_rename_mpi( file_work )
7154  call lookup_growable_url(file = file_work, varname = varname, &
7155  & url = url, &
7156  & flag_time_exist = flag_time_exist, time_name = tname, err = err)
7157  call url_chop_iorange( &
7158  & fullname = url, iorange = iorange, remainder = remainder )
7159  call split( str = iorange, carray = carray, sep = gt_equal )
7160  timevar_name = carray(1)
7161  deallocate( carray )
7162  time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
7163  call historygetdouble5( file = file, &
7164  & varname = varname, array = array, &
7165  & range = time_range, quiet = quiet, &
7166  & flag_mpi_split = flag_mpi_split, &
7167  & returned_time = returned_time, &
7168  & flag_time_exist = flag_time_exist, &
7169  & err = err )
7170 end subroutine historygetdouble5timer
7171 subroutine historygetdouble6timer( &
7172  & file, varname, array, time, &
7173  & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
7174  use dc_string, only: tochar, split
7175  use dc_types, only: string, dp, sp
7176  use dc_trace, only: dbgmessage
7177  use dc_url, only: url_chop_iorange, gt_equal
7178  use dc_present, only: present_and_true
7179  implicit none
7180  character(*), intent(in):: file, varname
7181  real(SP), intent(in):: time
7182  logical, intent(in), optional:: quiet
7183  real(DP), intent(out) :: array(:,:,:,:,:,:)
7184  logical, intent(in), optional:: flag_mpi_split
7185  real(DP), intent(out), optional:: returned_time
7186  logical, intent(out), optional:: flag_time_exist
7187  logical, intent(out), optional:: err
7188  character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
7189  character(STRING), pointer:: carray (:)
7190  character(STRING):: tname
7191  character(*), parameter :: subname = "HistoryGetDouble6TimeR"
7192  interface
7193  subroutine historygetdouble6(&
7194  & file, varname, array, range, quiet, &
7195  & flag_mpi_split, returned_time, flag_time_exist, err)
7196  use dc_types, only: dp
7197  character(*), intent(in):: file
7198  character(*), intent(in):: varname
7199  character(*), intent(in), optional:: range
7200  logical, intent(in), optional:: quiet
7201  logical, intent(in), optional:: flag_mpi_split
7202  real(DP), intent(out), optional:: returned_time
7203  logical, intent(out), optional:: flag_time_exist
7204  logical, intent(out), optional:: err
7205  real(DP), intent(out) :: array(:,:,:,:,:,:)
7206  end subroutine historygetdouble6
7207  end interface
7208  interface
7209  subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
7210  character(*), intent(in):: file
7211  character(*), intent(in):: varname
7212  character(*), intent(out):: url
7213  character(*), intent(in), optional:: range
7214  logical, intent(out), optional:: flag_time_exist
7215  character(*), intent(out), optional:: time_name
7216  logical, intent(out), optional:: err
7217  end subroutine lookup_growable_url
7218  end interface
7219  interface
7220  function file_rename_mpi( file ) result(result)
7221  use dc_types, only: string
7222  character(*), intent(in):: file
7223  character(STRING):: result
7224  end function file_rename_mpi
7225  end interface
7226  continue
7227  file_work = file
7228  if ( present_and_true( flag_mpi_split ) ) &
7229  & file_work = file_rename_mpi( file_work )
7230  call lookup_growable_url(file = file_work, varname = varname, &
7231  & url = url, &
7232  & flag_time_exist = flag_time_exist, time_name = tname, err = err)
7233  call url_chop_iorange( &
7234  & fullname = url, iorange = iorange, remainder = remainder )
7235  call split( str = iorange, carray = carray, sep = gt_equal )
7236  timevar_name = carray(1)
7237  deallocate( carray )
7238  time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
7239  call historygetdouble6( file = file, &
7240  & varname = varname, array = array, &
7241  & range = time_range, quiet = quiet, &
7242  & flag_mpi_split = flag_mpi_split, &
7243  & returned_time = returned_time, &
7244  & flag_time_exist = flag_time_exist, &
7245  & err = err )
7246 end subroutine historygetdouble6timer
7247 subroutine historygetdouble7timer( &
7248  & file, varname, array, time, &
7249  & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
7250  use dc_string, only: tochar, split
7251  use dc_types, only: string, dp, sp
7252  use dc_trace, only: dbgmessage
7253  use dc_url, only: url_chop_iorange, gt_equal
7254  use dc_present, only: present_and_true
7255  implicit none
7256  character(*), intent(in):: file, varname
7257  real(SP), intent(in):: time
7258  logical, intent(in), optional:: quiet
7259  real(DP), intent(out) :: array(:,:,:,:,:,:,:)
7260  logical, intent(in), optional:: flag_mpi_split
7261  real(DP), intent(out), optional:: returned_time
7262  logical, intent(out), optional:: flag_time_exist
7263  logical, intent(out), optional:: err
7264  character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
7265  character(STRING), pointer:: carray (:)
7266  character(STRING):: tname
7267  character(*), parameter :: subname = "HistoryGetDouble7TimeR"
7268  interface
7269  subroutine historygetdouble7(&
7270  & file, varname, array, range, quiet, &
7271  & flag_mpi_split, returned_time, flag_time_exist, err)
7272  use dc_types, only: dp
7273  character(*), intent(in):: file
7274  character(*), intent(in):: varname
7275  character(*), intent(in), optional:: range
7276  logical, intent(in), optional:: quiet
7277  logical, intent(in), optional:: flag_mpi_split
7278  real(DP), intent(out), optional:: returned_time
7279  logical, intent(out), optional:: flag_time_exist
7280  logical, intent(out), optional:: err
7281  real(DP), intent(out) :: array(:,:,:,:,:,:,:)
7282  end subroutine historygetdouble7
7283  end interface
7284  interface
7285  subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
7286  character(*), intent(in):: file
7287  character(*), intent(in):: varname
7288  character(*), intent(out):: url
7289  character(*), intent(in), optional:: range
7290  logical, intent(out), optional:: flag_time_exist
7291  character(*), intent(out), optional:: time_name
7292  logical, intent(out), optional:: err
7293  end subroutine lookup_growable_url
7294  end interface
7295  interface
7296  function file_rename_mpi( file ) result(result)
7297  use dc_types, only: string
7298  character(*), intent(in):: file
7299  character(STRING):: result
7300  end function file_rename_mpi
7301  end interface
7302  continue
7303  file_work = file
7304  if ( present_and_true( flag_mpi_split ) ) &
7305  & file_work = file_rename_mpi( file_work )
7306  call lookup_growable_url(file = file_work, varname = varname, &
7307  & url = url, &
7308  & flag_time_exist = flag_time_exist, time_name = tname, err = err)
7309  call url_chop_iorange( &
7310  & fullname = url, iorange = iorange, remainder = remainder )
7311  call split( str = iorange, carray = carray, sep = gt_equal )
7312  timevar_name = carray(1)
7313  deallocate( carray )
7314  time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
7315  call historygetdouble7( file = file, &
7316  & varname = varname, array = array, &
7317  & range = time_range, quiet = quiet, &
7318  & flag_mpi_split = flag_mpi_split, &
7319  & returned_time = returned_time, &
7320  & flag_time_exist = flag_time_exist, &
7321  & err = err )
7322 end subroutine historygetdouble7timer
7323 subroutine historygetdouble0pointertimer( &
7324  & file, varname, array, time, &
7325  & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
7326  use dc_string, only: tochar, split
7327  use dc_types, only: string, dp, sp
7328  use dc_trace, only: dbgmessage
7329  use dc_url, only: url_chop_iorange, gt_equal
7330  use dc_present, only: present_and_true
7331  implicit none
7332  character(*), intent(in):: file, varname
7333  real(SP), intent(in):: time
7334  logical, intent(in), optional:: quiet
7335  real(DP), pointer :: array
7336  logical, intent(in), optional:: flag_mpi_split
7337  real(DP), intent(out), optional:: returned_time
7338  logical, intent(out), optional:: flag_time_exist
7339  logical, intent(out), optional:: err
7340  character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
7341  character(STRING), pointer:: carray (:)
7342  character(STRING):: tname
7343  character(*), parameter :: subname = "HistoryGetDouble0TimeR"
7344  interface
7345  subroutine historygetdouble0pointer(&
7346  & file, varname, array, range, quiet, &
7347  & flag_mpi_split, returned_time, flag_time_exist, err)
7348  use dc_types, only: dp
7349  character(*), intent(in):: file
7350  character(*), intent(in):: varname
7351  character(*), intent(in), optional:: range
7352  logical, intent(in), optional:: quiet
7353  logical, intent(in), optional:: flag_mpi_split
7354  real(DP), intent(out), optional:: returned_time
7355  logical, intent(out), optional:: flag_time_exist
7356  logical, intent(out), optional:: err
7357  real(DP), pointer :: array
7358  end subroutine historygetdouble0pointer
7359  end interface
7360  interface
7361  subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
7362  character(*), intent(in):: file
7363  character(*), intent(in):: varname
7364  character(*), intent(out):: url
7365  character(*), intent(in), optional:: range
7366  logical, intent(out), optional:: flag_time_exist
7367  character(*), intent(out), optional:: time_name
7368  logical, intent(out), optional:: err
7369  end subroutine lookup_growable_url
7370  end interface
7371  interface
7372  function file_rename_mpi( file ) result(result)
7373  use dc_types, only: string
7374  character(*), intent(in):: file
7375  character(STRING):: result
7376  end function file_rename_mpi
7377  end interface
7378  continue
7379  file_work = file
7380  if ( present_and_true( flag_mpi_split ) ) &
7381  & file_work = file_rename_mpi( file_work )
7382  call lookup_growable_url(file = file_work, varname = varname, &
7383  & url = url, &
7384  & flag_time_exist = flag_time_exist, time_name = tname, err = err)
7385  call url_chop_iorange( &
7386  & fullname = url, iorange = iorange, remainder = remainder )
7387  call split( str = iorange, carray = carray, sep = gt_equal )
7388  timevar_name = carray(1)
7389  deallocate( carray )
7390  time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
7391  call historygetdouble0pointer( file = file, &
7392  & varname = varname, array = array, &
7393  & range = time_range, quiet = quiet, &
7394  & flag_mpi_split = flag_mpi_split, &
7395  & returned_time = returned_time, &
7396  & flag_time_exist = flag_time_exist, &
7397  & err = err )
7398 end subroutine historygetdouble0pointertimer
7399 subroutine historygetdouble1pointertimer( &
7400  & file, varname, array, time, &
7401  & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
7402  use dc_string, only: tochar, split
7403  use dc_types, only: string, dp, sp
7404  use dc_trace, only: dbgmessage
7405  use dc_url, only: url_chop_iorange, gt_equal
7406  use dc_present, only: present_and_true
7407  implicit none
7408  character(*), intent(in):: file, varname
7409  real(SP), intent(in):: time
7410  logical, intent(in), optional:: quiet
7411  real(DP), pointer :: array(:)
7412  logical, intent(in), optional:: flag_mpi_split
7413  real(DP), intent(out), optional:: returned_time
7414  logical, intent(out), optional:: flag_time_exist
7415  logical, intent(out), optional:: err
7416  character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
7417  character(STRING), pointer:: carray (:)
7418  character(STRING):: tname
7419  character(*), parameter :: subname = "HistoryGetDouble1TimeR"
7420  interface
7421  subroutine historygetdouble1pointer(&
7422  & file, varname, array, range, quiet, &
7423  & flag_mpi_split, returned_time, flag_time_exist, err)
7424  use dc_types, only: dp
7425  character(*), intent(in):: file
7426  character(*), intent(in):: varname
7427  character(*), intent(in), optional:: range
7428  logical, intent(in), optional:: quiet
7429  logical, intent(in), optional:: flag_mpi_split
7430  real(DP), intent(out), optional:: returned_time
7431  logical, intent(out), optional:: flag_time_exist
7432  logical, intent(out), optional:: err
7433  real(DP), pointer :: array(:)
7434  end subroutine historygetdouble1pointer
7435  end interface
7436  interface
7437  subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
7438  character(*), intent(in):: file
7439  character(*), intent(in):: varname
7440  character(*), intent(out):: url
7441  character(*), intent(in), optional:: range
7442  logical, intent(out), optional:: flag_time_exist
7443  character(*), intent(out), optional:: time_name
7444  logical, intent(out), optional:: err
7445  end subroutine lookup_growable_url
7446  end interface
7447  interface
7448  function file_rename_mpi( file ) result(result)
7449  use dc_types, only: string
7450  character(*), intent(in):: file
7451  character(STRING):: result
7452  end function file_rename_mpi
7453  end interface
7454  continue
7455  file_work = file
7456  if ( present_and_true( flag_mpi_split ) ) &
7457  & file_work = file_rename_mpi( file_work )
7458  call lookup_growable_url(file = file_work, varname = varname, &
7459  & url = url, &
7460  & flag_time_exist = flag_time_exist, time_name = tname, err = err)
7461  call url_chop_iorange( &
7462  & fullname = url, iorange = iorange, remainder = remainder )
7463  call split( str = iorange, carray = carray, sep = gt_equal )
7464  timevar_name = carray(1)
7465  deallocate( carray )
7466  time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
7467  call historygetdouble1pointer( file = file, &
7468  & varname = varname, array = array, &
7469  & range = time_range, quiet = quiet, &
7470  & flag_mpi_split = flag_mpi_split, &
7471  & returned_time = returned_time, &
7472  & flag_time_exist = flag_time_exist, &
7473  & err = err )
7474 end subroutine historygetdouble1pointertimer
7475 subroutine historygetdouble2pointertimer( &
7476  & file, varname, array, time, &
7477  & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
7478  use dc_string, only: tochar, split
7479  use dc_types, only: string, dp, sp
7480  use dc_trace, only: dbgmessage
7481  use dc_url, only: url_chop_iorange, gt_equal
7482  use dc_present, only: present_and_true
7483  implicit none
7484  character(*), intent(in):: file, varname
7485  real(SP), intent(in):: time
7486  logical, intent(in), optional:: quiet
7487  real(DP), pointer :: array(:,:)
7488  logical, intent(in), optional:: flag_mpi_split
7489  real(DP), intent(out), optional:: returned_time
7490  logical, intent(out), optional:: flag_time_exist
7491  logical, intent(out), optional:: err
7492  character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
7493  character(STRING), pointer:: carray (:)
7494  character(STRING):: tname
7495  character(*), parameter :: subname = "HistoryGetDouble2TimeR"
7496  interface
7497  subroutine historygetdouble2pointer(&
7498  & file, varname, array, range, quiet, &
7499  & flag_mpi_split, returned_time, flag_time_exist, err)
7500  use dc_types, only: dp
7501  character(*), intent(in):: file
7502  character(*), intent(in):: varname
7503  character(*), intent(in), optional:: range
7504  logical, intent(in), optional:: quiet
7505  logical, intent(in), optional:: flag_mpi_split
7506  real(DP), intent(out), optional:: returned_time
7507  logical, intent(out), optional:: flag_time_exist
7508  logical, intent(out), optional:: err
7509  real(DP), pointer :: array(:,:)
7510  end subroutine historygetdouble2pointer
7511  end interface
7512  interface
7513  subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
7514  character(*), intent(in):: file
7515  character(*), intent(in):: varname
7516  character(*), intent(out):: url
7517  character(*), intent(in), optional:: range
7518  logical, intent(out), optional:: flag_time_exist
7519  character(*), intent(out), optional:: time_name
7520  logical, intent(out), optional:: err
7521  end subroutine lookup_growable_url
7522  end interface
7523  interface
7524  function file_rename_mpi( file ) result(result)
7525  use dc_types, only: string
7526  character(*), intent(in):: file
7527  character(STRING):: result
7528  end function file_rename_mpi
7529  end interface
7530  continue
7531  file_work = file
7532  if ( present_and_true( flag_mpi_split ) ) &
7533  & file_work = file_rename_mpi( file_work )
7534  call lookup_growable_url(file = file_work, varname = varname, &
7535  & url = url, &
7536  & flag_time_exist = flag_time_exist, time_name = tname, err = err)
7537  call url_chop_iorange( &
7538  & fullname = url, iorange = iorange, remainder = remainder )
7539  call split( str = iorange, carray = carray, sep = gt_equal )
7540  timevar_name = carray(1)
7541  deallocate( carray )
7542  time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
7543  call historygetdouble2pointer( file = file, &
7544  & varname = varname, array = array, &
7545  & range = time_range, quiet = quiet, &
7546  & flag_mpi_split = flag_mpi_split, &
7547  & returned_time = returned_time, &
7548  & flag_time_exist = flag_time_exist, &
7549  & err = err )
7550 end subroutine historygetdouble2pointertimer
7551 subroutine historygetdouble3pointertimer( &
7552  & file, varname, array, time, &
7553  & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
7554  use dc_string, only: tochar, split
7555  use dc_types, only: string, dp, sp
7556  use dc_trace, only: dbgmessage
7557  use dc_url, only: url_chop_iorange, gt_equal
7558  use dc_present, only: present_and_true
7559  implicit none
7560  character(*), intent(in):: file, varname
7561  real(SP), intent(in):: time
7562  logical, intent(in), optional:: quiet
7563  real(DP), pointer :: array(:,:,:)
7564  logical, intent(in), optional:: flag_mpi_split
7565  real(DP), intent(out), optional:: returned_time
7566  logical, intent(out), optional:: flag_time_exist
7567  logical, intent(out), optional:: err
7568  character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
7569  character(STRING), pointer:: carray (:)
7570  character(STRING):: tname
7571  character(*), parameter :: subname = "HistoryGetDouble3TimeR"
7572  interface
7573  subroutine historygetdouble3pointer(&
7574  & file, varname, array, range, quiet, &
7575  & flag_mpi_split, returned_time, flag_time_exist, err)
7576  use dc_types, only: dp
7577  character(*), intent(in):: file
7578  character(*), intent(in):: varname
7579  character(*), intent(in), optional:: range
7580  logical, intent(in), optional:: quiet
7581  logical, intent(in), optional:: flag_mpi_split
7582  real(DP), intent(out), optional:: returned_time
7583  logical, intent(out), optional:: flag_time_exist
7584  logical, intent(out), optional:: err
7585  real(DP), pointer :: array(:,:,:)
7586  end subroutine historygetdouble3pointer
7587  end interface
7588  interface
7589  subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
7590  character(*), intent(in):: file
7591  character(*), intent(in):: varname
7592  character(*), intent(out):: url
7593  character(*), intent(in), optional:: range
7594  logical, intent(out), optional:: flag_time_exist
7595  character(*), intent(out), optional:: time_name
7596  logical, intent(out), optional:: err
7597  end subroutine lookup_growable_url
7598  end interface
7599  interface
7600  function file_rename_mpi( file ) result(result)
7601  use dc_types, only: string
7602  character(*), intent(in):: file
7603  character(STRING):: result
7604  end function file_rename_mpi
7605  end interface
7606  continue
7607  file_work = file
7608  if ( present_and_true( flag_mpi_split ) ) &
7609  & file_work = file_rename_mpi( file_work )
7610  call lookup_growable_url(file = file_work, varname = varname, &
7611  & url = url, &
7612  & flag_time_exist = flag_time_exist, time_name = tname, err = err)
7613  call url_chop_iorange( &
7614  & fullname = url, iorange = iorange, remainder = remainder )
7615  call split( str = iorange, carray = carray, sep = gt_equal )
7616  timevar_name = carray(1)
7617  deallocate( carray )
7618  time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
7619  call historygetdouble3pointer( file = file, &
7620  & varname = varname, array = array, &
7621  & range = time_range, quiet = quiet, &
7622  & flag_mpi_split = flag_mpi_split, &
7623  & returned_time = returned_time, &
7624  & flag_time_exist = flag_time_exist, &
7625  & err = err )
7626 end subroutine historygetdouble3pointertimer
7627 subroutine historygetdouble4pointertimer( &
7628  & file, varname, array, time, &
7629  & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
7630  use dc_string, only: tochar, split
7631  use dc_types, only: string, dp, sp
7632  use dc_trace, only: dbgmessage
7633  use dc_url, only: url_chop_iorange, gt_equal
7634  use dc_present, only: present_and_true
7635  implicit none
7636  character(*), intent(in):: file, varname
7637  real(SP), intent(in):: time
7638  logical, intent(in), optional:: quiet
7639  real(DP), pointer :: array(:,:,:,:)
7640  logical, intent(in), optional:: flag_mpi_split
7641  real(DP), intent(out), optional:: returned_time
7642  logical, intent(out), optional:: flag_time_exist
7643  logical, intent(out), optional:: err
7644  character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
7645  character(STRING), pointer:: carray (:)
7646  character(STRING):: tname
7647  character(*), parameter :: subname = "HistoryGetDouble4TimeR"
7648  interface
7649  subroutine historygetdouble4pointer(&
7650  & file, varname, array, range, quiet, &
7651  & flag_mpi_split, returned_time, flag_time_exist, err)
7652  use dc_types, only: dp
7653  character(*), intent(in):: file
7654  character(*), intent(in):: varname
7655  character(*), intent(in), optional:: range
7656  logical, intent(in), optional:: quiet
7657  logical, intent(in), optional:: flag_mpi_split
7658  real(DP), intent(out), optional:: returned_time
7659  logical, intent(out), optional:: flag_time_exist
7660  logical, intent(out), optional:: err
7661  real(DP), pointer :: array(:,:,:,:)
7662  end subroutine historygetdouble4pointer
7663  end interface
7664  interface
7665  subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
7666  character(*), intent(in):: file
7667  character(*), intent(in):: varname
7668  character(*), intent(out):: url
7669  character(*), intent(in), optional:: range
7670  logical, intent(out), optional:: flag_time_exist
7671  character(*), intent(out), optional:: time_name
7672  logical, intent(out), optional:: err
7673  end subroutine lookup_growable_url
7674  end interface
7675  interface
7676  function file_rename_mpi( file ) result(result)
7677  use dc_types, only: string
7678  character(*), intent(in):: file
7679  character(STRING):: result
7680  end function file_rename_mpi
7681  end interface
7682  continue
7683  file_work = file
7684  if ( present_and_true( flag_mpi_split ) ) &
7685  & file_work = file_rename_mpi( file_work )
7686  call lookup_growable_url(file = file_work, varname = varname, &
7687  & url = url, &
7688  & flag_time_exist = flag_time_exist, time_name = tname, err = err)
7689  call url_chop_iorange( &
7690  & fullname = url, iorange = iorange, remainder = remainder )
7691  call split( str = iorange, carray = carray, sep = gt_equal )
7692  timevar_name = carray(1)
7693  deallocate( carray )
7694  time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
7695  call historygetdouble4pointer( file = file, &
7696  & varname = varname, array = array, &
7697  & range = time_range, quiet = quiet, &
7698  & flag_mpi_split = flag_mpi_split, &
7699  & returned_time = returned_time, &
7700  & flag_time_exist = flag_time_exist, &
7701  & err = err )
7702 end subroutine historygetdouble4pointertimer
7703 subroutine historygetdouble5pointertimer( &
7704  & file, varname, array, time, &
7705  & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
7706  use dc_string, only: tochar, split
7707  use dc_types, only: string, dp, sp
7708  use dc_trace, only: dbgmessage
7709  use dc_url, only: url_chop_iorange, gt_equal
7710  use dc_present, only: present_and_true
7711  implicit none
7712  character(*), intent(in):: file, varname
7713  real(SP), intent(in):: time
7714  logical, intent(in), optional:: quiet
7715  real(DP), pointer :: array(:,:,:,:,:)
7716  logical, intent(in), optional:: flag_mpi_split
7717  real(DP), intent(out), optional:: returned_time
7718  logical, intent(out), optional:: flag_time_exist
7719  logical, intent(out), optional:: err
7720  character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
7721  character(STRING), pointer:: carray (:)
7722  character(STRING):: tname
7723  character(*), parameter :: subname = "HistoryGetDouble5TimeR"
7724  interface
7725  subroutine historygetdouble5pointer(&
7726  & file, varname, array, range, quiet, &
7727  & flag_mpi_split, returned_time, flag_time_exist, err)
7728  use dc_types, only: dp
7729  character(*), intent(in):: file
7730  character(*), intent(in):: varname
7731  character(*), intent(in), optional:: range
7732  logical, intent(in), optional:: quiet
7733  logical, intent(in), optional:: flag_mpi_split
7734  real(DP), intent(out), optional:: returned_time
7735  logical, intent(out), optional:: flag_time_exist
7736  logical, intent(out), optional:: err
7737  real(DP), pointer :: array(:,:,:,:,:)
7738  end subroutine historygetdouble5pointer
7739  end interface
7740  interface
7741  subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
7742  character(*), intent(in):: file
7743  character(*), intent(in):: varname
7744  character(*), intent(out):: url
7745  character(*), intent(in), optional:: range
7746  logical, intent(out), optional:: flag_time_exist
7747  character(*), intent(out), optional:: time_name
7748  logical, intent(out), optional:: err
7749  end subroutine lookup_growable_url
7750  end interface
7751  interface
7752  function file_rename_mpi( file ) result(result)
7753  use dc_types, only: string
7754  character(*), intent(in):: file
7755  character(STRING):: result
7756  end function file_rename_mpi
7757  end interface
7758  continue
7759  file_work = file
7760  if ( present_and_true( flag_mpi_split ) ) &
7761  & file_work = file_rename_mpi( file_work )
7762  call lookup_growable_url(file = file_work, varname = varname, &
7763  & url = url, &
7764  & flag_time_exist = flag_time_exist, time_name = tname, err = err)
7765  call url_chop_iorange( &
7766  & fullname = url, iorange = iorange, remainder = remainder )
7767  call split( str = iorange, carray = carray, sep = gt_equal )
7768  timevar_name = carray(1)
7769  deallocate( carray )
7770  time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
7771  call historygetdouble5pointer( file = file, &
7772  & varname = varname, array = array, &
7773  & range = time_range, quiet = quiet, &
7774  & flag_mpi_split = flag_mpi_split, &
7775  & returned_time = returned_time, &
7776  & flag_time_exist = flag_time_exist, &
7777  & err = err )
7778 end subroutine historygetdouble5pointertimer
7779 subroutine historygetdouble6pointertimer( &
7780  & file, varname, array, time, &
7781  & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
7782  use dc_string, only: tochar, split
7783  use dc_types, only: string, dp, sp
7784  use dc_trace, only: dbgmessage
7785  use dc_url, only: url_chop_iorange, gt_equal
7786  use dc_present, only: present_and_true
7787  implicit none
7788  character(*), intent(in):: file, varname
7789  real(SP), intent(in):: time
7790  logical, intent(in), optional:: quiet
7791  real(DP), pointer :: array(:,:,:,:,:,:)
7792  logical, intent(in), optional:: flag_mpi_split
7793  real(DP), intent(out), optional:: returned_time
7794  logical, intent(out), optional:: flag_time_exist
7795  logical, intent(out), optional:: err
7796  character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
7797  character(STRING), pointer:: carray (:)
7798  character(STRING):: tname
7799  character(*), parameter :: subname = "HistoryGetDouble6TimeR"
7800  interface
7801  subroutine historygetdouble6pointer(&
7802  & file, varname, array, range, quiet, &
7803  & flag_mpi_split, returned_time, flag_time_exist, err)
7804  use dc_types, only: dp
7805  character(*), intent(in):: file
7806  character(*), intent(in):: varname
7807  character(*), intent(in), optional:: range
7808  logical, intent(in), optional:: quiet
7809  logical, intent(in), optional:: flag_mpi_split
7810  real(DP), intent(out), optional:: returned_time
7811  logical, intent(out), optional:: flag_time_exist
7812  logical, intent(out), optional:: err
7813  real(DP), pointer :: array(:,:,:,:,:,:)
7814  end subroutine historygetdouble6pointer
7815  end interface
7816  interface
7817  subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
7818  character(*), intent(in):: file
7819  character(*), intent(in):: varname
7820  character(*), intent(out):: url
7821  character(*), intent(in), optional:: range
7822  logical, intent(out), optional:: flag_time_exist
7823  character(*), intent(out), optional:: time_name
7824  logical, intent(out), optional:: err
7825  end subroutine lookup_growable_url
7826  end interface
7827  interface
7828  function file_rename_mpi( file ) result(result)
7829  use dc_types, only: string
7830  character(*), intent(in):: file
7831  character(STRING):: result
7832  end function file_rename_mpi
7833  end interface
7834  continue
7835  file_work = file
7836  if ( present_and_true( flag_mpi_split ) ) &
7837  & file_work = file_rename_mpi( file_work )
7838  call lookup_growable_url(file = file_work, varname = varname, &
7839  & url = url, &
7840  & flag_time_exist = flag_time_exist, time_name = tname, err = err)
7841  call url_chop_iorange( &
7842  & fullname = url, iorange = iorange, remainder = remainder )
7843  call split( str = iorange, carray = carray, sep = gt_equal )
7844  timevar_name = carray(1)
7845  deallocate( carray )
7846  time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
7847  call historygetdouble6pointer( file = file, &
7848  & varname = varname, array = array, &
7849  & range = time_range, quiet = quiet, &
7850  & flag_mpi_split = flag_mpi_split, &
7851  & returned_time = returned_time, &
7852  & flag_time_exist = flag_time_exist, &
7853  & err = err )
7854 end subroutine historygetdouble6pointertimer
7855 subroutine historygetdouble7pointertimer( &
7856  & file, varname, array, time, &
7857  & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
7858  use dc_string, only: tochar, split
7859  use dc_types, only: string, dp, sp
7860  use dc_trace, only: dbgmessage
7861  use dc_url, only: url_chop_iorange, gt_equal
7862  use dc_present, only: present_and_true
7863  implicit none
7864  character(*), intent(in):: file, varname
7865  real(SP), intent(in):: time
7866  logical, intent(in), optional:: quiet
7867  real(DP), pointer :: array(:,:,:,:,:,:,:)
7868  logical, intent(in), optional:: flag_mpi_split
7869  real(DP), intent(out), optional:: returned_time
7870  logical, intent(out), optional:: flag_time_exist
7871  logical, intent(out), optional:: err
7872  character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
7873  character(STRING), pointer:: carray (:)
7874  character(STRING):: tname
7875  character(*), parameter :: subname = "HistoryGetDouble7TimeR"
7876  interface
7877  subroutine historygetdouble7pointer(&
7878  & file, varname, array, range, quiet, &
7879  & flag_mpi_split, returned_time, flag_time_exist, err)
7880  use dc_types, only: dp
7881  character(*), intent(in):: file
7882  character(*), intent(in):: varname
7883  character(*), intent(in), optional:: range
7884  logical, intent(in), optional:: quiet
7885  logical, intent(in), optional:: flag_mpi_split
7886  real(DP), intent(out), optional:: returned_time
7887  logical, intent(out), optional:: flag_time_exist
7888  logical, intent(out), optional:: err
7889  real(DP), pointer :: array(:,:,:,:,:,:,:)
7890  end subroutine historygetdouble7pointer
7891  end interface
7892  interface
7893  subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
7894  character(*), intent(in):: file
7895  character(*), intent(in):: varname
7896  character(*), intent(out):: url
7897  character(*), intent(in), optional:: range
7898  logical, intent(out), optional:: flag_time_exist
7899  character(*), intent(out), optional:: time_name
7900  logical, intent(out), optional:: err
7901  end subroutine lookup_growable_url
7902  end interface
7903  interface
7904  function file_rename_mpi( file ) result(result)
7905  use dc_types, only: string
7906  character(*), intent(in):: file
7907  character(STRING):: result
7908  end function file_rename_mpi
7909  end interface
7910  continue
7911  file_work = file
7912  if ( present_and_true( flag_mpi_split ) ) &
7913  & file_work = file_rename_mpi( file_work )
7914  call lookup_growable_url(file = file_work, varname = varname, &
7915  & url = url, &
7916  & flag_time_exist = flag_time_exist, time_name = tname, err = err)
7917  call url_chop_iorange( &
7918  & fullname = url, iorange = iorange, remainder = remainder )
7919  call split( str = iorange, carray = carray, sep = gt_equal )
7920  timevar_name = carray(1)
7921  deallocate( carray )
7922  time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
7923  call historygetdouble7pointer( file = file, &
7924  & varname = varname, array = array, &
7925  & range = time_range, quiet = quiet, &
7926  & flag_mpi_split = flag_mpi_split, &
7927  & returned_time = returned_time, &
7928  & flag_time_exist = flag_time_exist, &
7929  & err = err )
7930 end subroutine historygetdouble7pointertimer
7931 subroutine historygetreal0timer( &
7932  & file, varname, array, time, &
7933  & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
7934  use dc_string, only: tochar, split
7935  use dc_types, only: string, dp, sp
7936  use dc_trace, only: dbgmessage
7937  use dc_url, only: url_chop_iorange, gt_equal
7938  use dc_present, only: present_and_true
7939  implicit none
7940  character(*), intent(in):: file, varname
7941  real(SP), intent(in):: time
7942  logical, intent(in), optional:: quiet
7943  real(SP), intent(out) :: array
7944  logical, intent(in), optional:: flag_mpi_split
7945  real(DP), intent(out), optional:: returned_time
7946  logical, intent(out), optional:: flag_time_exist
7947  logical, intent(out), optional:: err
7948  character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
7949  character(STRING), pointer:: carray (:)
7950  character(STRING):: tname
7951  character(*), parameter :: subname = "HistoryGetReal0TimeR"
7952  interface
7953  subroutine historygetreal0(&
7954  & file, varname, array, range, quiet, &
7955  & flag_mpi_split, returned_time, flag_time_exist, err)
7956  use dc_types, only: dp, sp
7957  character(*), intent(in):: file
7958  character(*), intent(in):: varname
7959  character(*), intent(in), optional:: range
7960  logical, intent(in), optional:: quiet
7961  logical, intent(in), optional:: flag_mpi_split
7962  real(DP), intent(out), optional:: returned_time
7963  logical, intent(out), optional:: flag_time_exist
7964  logical, intent(out), optional:: err
7965  real(SP), intent(out) :: array
7966  end subroutine historygetreal0
7967  end interface
7968  interface
7969  subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
7970  character(*), intent(in):: file
7971  character(*), intent(in):: varname
7972  character(*), intent(out):: url
7973  character(*), intent(in), optional:: range
7974  logical, intent(out), optional:: flag_time_exist
7975  character(*), intent(out), optional:: time_name
7976  logical, intent(out), optional:: err
7977  end subroutine lookup_growable_url
7978  end interface
7979  interface
7980  function file_rename_mpi( file ) result(result)
7981  use dc_types, only: string
7982  character(*), intent(in):: file
7983  character(STRING):: result
7984  end function file_rename_mpi
7985  end interface
7986  continue
7987  file_work = file
7988  if ( present_and_true( flag_mpi_split ) ) &
7989  & file_work = file_rename_mpi( file_work )
7990  call lookup_growable_url(file = file_work, varname = varname, &
7991  & url = url, &
7992  & flag_time_exist = flag_time_exist, time_name = tname, err = err)
7993  call url_chop_iorange( &
7994  & fullname = url, iorange = iorange, remainder = remainder )
7995  call split( str = iorange, carray = carray, sep = gt_equal )
7996  timevar_name = carray(1)
7997  deallocate( carray )
7998  time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
7999  call historygetreal0( file = file, &
8000  & varname = varname, array = array, &
8001  & range = time_range, quiet = quiet, &
8002  & flag_mpi_split = flag_mpi_split, &
8003  & returned_time = returned_time, &
8004  & flag_time_exist = flag_time_exist, &
8005  & err = err )
8006 end subroutine historygetreal0timer
8007 subroutine historygetreal1timer( &
8008  & file, varname, array, time, &
8009  & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
8010  use dc_string, only: tochar, split
8011  use dc_types, only: string, dp, sp
8012  use dc_trace, only: dbgmessage
8013  use dc_url, only: url_chop_iorange, gt_equal
8014  use dc_present, only: present_and_true
8015  implicit none
8016  character(*), intent(in):: file, varname
8017  real(SP), intent(in):: time
8018  logical, intent(in), optional:: quiet
8019  real(SP), intent(out) :: array(:)
8020  logical, intent(in), optional:: flag_mpi_split
8021  real(DP), intent(out), optional:: returned_time
8022  logical, intent(out), optional:: flag_time_exist
8023  logical, intent(out), optional:: err
8024  character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
8025  character(STRING), pointer:: carray (:)
8026  character(STRING):: tname
8027  character(*), parameter :: subname = "HistoryGetReal1TimeR"
8028  interface
8029  subroutine historygetreal1(&
8030  & file, varname, array, range, quiet, &
8031  & flag_mpi_split, returned_time, flag_time_exist, err)
8032  use dc_types, only: dp, sp
8033  character(*), intent(in):: file
8034  character(*), intent(in):: varname
8035  character(*), intent(in), optional:: range
8036  logical, intent(in), optional:: quiet
8037  logical, intent(in), optional:: flag_mpi_split
8038  real(DP), intent(out), optional:: returned_time
8039  logical, intent(out), optional:: flag_time_exist
8040  logical, intent(out), optional:: err
8041  real(SP), intent(out) :: array(:)
8042  end subroutine historygetreal1
8043  end interface
8044  interface
8045  subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
8046  character(*), intent(in):: file
8047  character(*), intent(in):: varname
8048  character(*), intent(out):: url
8049  character(*), intent(in), optional:: range
8050  logical, intent(out), optional:: flag_time_exist
8051  character(*), intent(out), optional:: time_name
8052  logical, intent(out), optional:: err
8053  end subroutine lookup_growable_url
8054  end interface
8055  interface
8056  function file_rename_mpi( file ) result(result)
8057  use dc_types, only: string
8058  character(*), intent(in):: file
8059  character(STRING):: result
8060  end function file_rename_mpi
8061  end interface
8062  continue
8063  file_work = file
8064  if ( present_and_true( flag_mpi_split ) ) &
8065  & file_work = file_rename_mpi( file_work )
8066  call lookup_growable_url(file = file_work, varname = varname, &
8067  & url = url, &
8068  & flag_time_exist = flag_time_exist, time_name = tname, err = err)
8069  call url_chop_iorange( &
8070  & fullname = url, iorange = iorange, remainder = remainder )
8071  call split( str = iorange, carray = carray, sep = gt_equal )
8072  timevar_name = carray(1)
8073  deallocate( carray )
8074  time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
8075  call historygetreal1( file = file, &
8076  & varname = varname, array = array, &
8077  & range = time_range, quiet = quiet, &
8078  & flag_mpi_split = flag_mpi_split, &
8079  & returned_time = returned_time, &
8080  & flag_time_exist = flag_time_exist, &
8081  & err = err )
8082 end subroutine historygetreal1timer
8083 subroutine historygetreal2timer( &
8084  & file, varname, array, time, &
8085  & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
8086  use dc_string, only: tochar, split
8087  use dc_types, only: string, dp, sp
8088  use dc_trace, only: dbgmessage
8089  use dc_url, only: url_chop_iorange, gt_equal
8090  use dc_present, only: present_and_true
8091  implicit none
8092  character(*), intent(in):: file, varname
8093  real(SP), intent(in):: time
8094  logical, intent(in), optional:: quiet
8095  real(SP), intent(out) :: array(:,:)
8096  logical, intent(in), optional:: flag_mpi_split
8097  real(DP), intent(out), optional:: returned_time
8098  logical, intent(out), optional:: flag_time_exist
8099  logical, intent(out), optional:: err
8100  character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
8101  character(STRING), pointer:: carray (:)
8102  character(STRING):: tname
8103  character(*), parameter :: subname = "HistoryGetReal2TimeR"
8104  interface
8105  subroutine historygetreal2(&
8106  & file, varname, array, range, quiet, &
8107  & flag_mpi_split, returned_time, flag_time_exist, err)
8108  use dc_types, only: dp, sp
8109  character(*), intent(in):: file
8110  character(*), intent(in):: varname
8111  character(*), intent(in), optional:: range
8112  logical, intent(in), optional:: quiet
8113  logical, intent(in), optional:: flag_mpi_split
8114  real(DP), intent(out), optional:: returned_time
8115  logical, intent(out), optional:: flag_time_exist
8116  logical, intent(out), optional:: err
8117  real(SP), intent(out) :: array(:,:)
8118  end subroutine historygetreal2
8119  end interface
8120  interface
8121  subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
8122  character(*), intent(in):: file
8123  character(*), intent(in):: varname
8124  character(*), intent(out):: url
8125  character(*), intent(in), optional:: range
8126  logical, intent(out), optional:: flag_time_exist
8127  character(*), intent(out), optional:: time_name
8128  logical, intent(out), optional:: err
8129  end subroutine lookup_growable_url
8130  end interface
8131  interface
8132  function file_rename_mpi( file ) result(result)
8133  use dc_types, only: string
8134  character(*), intent(in):: file
8135  character(STRING):: result
8136  end function file_rename_mpi
8137  end interface
8138  continue
8139  file_work = file
8140  if ( present_and_true( flag_mpi_split ) ) &
8141  & file_work = file_rename_mpi( file_work )
8142  call lookup_growable_url(file = file_work, varname = varname, &
8143  & url = url, &
8144  & flag_time_exist = flag_time_exist, time_name = tname, err = err)
8145  call url_chop_iorange( &
8146  & fullname = url, iorange = iorange, remainder = remainder )
8147  call split( str = iorange, carray = carray, sep = gt_equal )
8148  timevar_name = carray(1)
8149  deallocate( carray )
8150  time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
8151  call historygetreal2( file = file, &
8152  & varname = varname, array = array, &
8153  & range = time_range, quiet = quiet, &
8154  & flag_mpi_split = flag_mpi_split, &
8155  & returned_time = returned_time, &
8156  & flag_time_exist = flag_time_exist, &
8157  & err = err )
8158 end subroutine historygetreal2timer
8159 subroutine historygetreal3timer( &
8160  & file, varname, array, time, &
8161  & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
8162  use dc_string, only: tochar, split
8163  use dc_types, only: string, dp, sp
8164  use dc_trace, only: dbgmessage
8165  use dc_url, only: url_chop_iorange, gt_equal
8166  use dc_present, only: present_and_true
8167  implicit none
8168  character(*), intent(in):: file, varname
8169  real(SP), intent(in):: time
8170  logical, intent(in), optional:: quiet
8171  real(SP), intent(out) :: array(:,:,:)
8172  logical, intent(in), optional:: flag_mpi_split
8173  real(DP), intent(out), optional:: returned_time
8174  logical, intent(out), optional:: flag_time_exist
8175  logical, intent(out), optional:: err
8176  character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
8177  character(STRING), pointer:: carray (:)
8178  character(STRING):: tname
8179  character(*), parameter :: subname = "HistoryGetReal3TimeR"
8180  interface
8181  subroutine historygetreal3(&
8182  & file, varname, array, range, quiet, &
8183  & flag_mpi_split, returned_time, flag_time_exist, err)
8184  use dc_types, only: dp, sp
8185  character(*), intent(in):: file
8186  character(*), intent(in):: varname
8187  character(*), intent(in), optional:: range
8188  logical, intent(in), optional:: quiet
8189  logical, intent(in), optional:: flag_mpi_split
8190  real(DP), intent(out), optional:: returned_time
8191  logical, intent(out), optional:: flag_time_exist
8192  logical, intent(out), optional:: err
8193  real(SP), intent(out) :: array(:,:,:)
8194  end subroutine historygetreal3
8195  end interface
8196  interface
8197  subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
8198  character(*), intent(in):: file
8199  character(*), intent(in):: varname
8200  character(*), intent(out):: url
8201  character(*), intent(in), optional:: range
8202  logical, intent(out), optional:: flag_time_exist
8203  character(*), intent(out), optional:: time_name
8204  logical, intent(out), optional:: err
8205  end subroutine lookup_growable_url
8206  end interface
8207  interface
8208  function file_rename_mpi( file ) result(result)
8209  use dc_types, only: string
8210  character(*), intent(in):: file
8211  character(STRING):: result
8212  end function file_rename_mpi
8213  end interface
8214  continue
8215  file_work = file
8216  if ( present_and_true( flag_mpi_split ) ) &
8217  & file_work = file_rename_mpi( file_work )
8218  call lookup_growable_url(file = file_work, varname = varname, &
8219  & url = url, &
8220  & flag_time_exist = flag_time_exist, time_name = tname, err = err)
8221  call url_chop_iorange( &
8222  & fullname = url, iorange = iorange, remainder = remainder )
8223  call split( str = iorange, carray = carray, sep = gt_equal )
8224  timevar_name = carray(1)
8225  deallocate( carray )
8226  time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
8227  call historygetreal3( file = file, &
8228  & varname = varname, array = array, &
8229  & range = time_range, quiet = quiet, &
8230  & flag_mpi_split = flag_mpi_split, &
8231  & returned_time = returned_time, &
8232  & flag_time_exist = flag_time_exist, &
8233  & err = err )
8234 end subroutine historygetreal3timer
8235 subroutine historygetreal4timer( &
8236  & file, varname, array, time, &
8237  & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
8238  use dc_string, only: tochar, split
8239  use dc_types, only: string, dp, sp
8240  use dc_trace, only: dbgmessage
8241  use dc_url, only: url_chop_iorange, gt_equal
8242  use dc_present, only: present_and_true
8243  implicit none
8244  character(*), intent(in):: file, varname
8245  real(SP), intent(in):: time
8246  logical, intent(in), optional:: quiet
8247  real(SP), intent(out) :: array(:,:,:,:)
8248  logical, intent(in), optional:: flag_mpi_split
8249  real(DP), intent(out), optional:: returned_time
8250  logical, intent(out), optional:: flag_time_exist
8251  logical, intent(out), optional:: err
8252  character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
8253  character(STRING), pointer:: carray (:)
8254  character(STRING):: tname
8255  character(*), parameter :: subname = "HistoryGetReal4TimeR"
8256  interface
8257  subroutine historygetreal4(&
8258  & file, varname, array, range, quiet, &
8259  & flag_mpi_split, returned_time, flag_time_exist, err)
8260  use dc_types, only: dp, sp
8261  character(*), intent(in):: file
8262  character(*), intent(in):: varname
8263  character(*), intent(in), optional:: range
8264  logical, intent(in), optional:: quiet
8265  logical, intent(in), optional:: flag_mpi_split
8266  real(DP), intent(out), optional:: returned_time
8267  logical, intent(out), optional:: flag_time_exist
8268  logical, intent(out), optional:: err
8269  real(SP), intent(out) :: array(:,:,:,:)
8270  end subroutine historygetreal4
8271  end interface
8272  interface
8273  subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
8274  character(*), intent(in):: file
8275  character(*), intent(in):: varname
8276  character(*), intent(out):: url
8277  character(*), intent(in), optional:: range
8278  logical, intent(out), optional:: flag_time_exist
8279  character(*), intent(out), optional:: time_name
8280  logical, intent(out), optional:: err
8281  end subroutine lookup_growable_url
8282  end interface
8283  interface
8284  function file_rename_mpi( file ) result(result)
8285  use dc_types, only: string
8286  character(*), intent(in):: file
8287  character(STRING):: result
8288  end function file_rename_mpi
8289  end interface
8290  continue
8291  file_work = file
8292  if ( present_and_true( flag_mpi_split ) ) &
8293  & file_work = file_rename_mpi( file_work )
8294  call lookup_growable_url(file = file_work, varname = varname, &
8295  & url = url, &
8296  & flag_time_exist = flag_time_exist, time_name = tname, err = err)
8297  call url_chop_iorange( &
8298  & fullname = url, iorange = iorange, remainder = remainder )
8299  call split( str = iorange, carray = carray, sep = gt_equal )
8300  timevar_name = carray(1)
8301  deallocate( carray )
8302  time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
8303  call historygetreal4( file = file, &
8304  & varname = varname, array = array, &
8305  & range = time_range, quiet = quiet, &
8306  & flag_mpi_split = flag_mpi_split, &
8307  & returned_time = returned_time, &
8308  & flag_time_exist = flag_time_exist, &
8309  & err = err )
8310 end subroutine historygetreal4timer
8311 subroutine historygetreal5timer( &
8312  & file, varname, array, time, &
8313  & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
8314  use dc_string, only: tochar, split
8315  use dc_types, only: string, dp, sp
8316  use dc_trace, only: dbgmessage
8317  use dc_url, only: url_chop_iorange, gt_equal
8318  use dc_present, only: present_and_true
8319  implicit none
8320  character(*), intent(in):: file, varname
8321  real(SP), intent(in):: time
8322  logical, intent(in), optional:: quiet
8323  real(SP), intent(out) :: array(:,:,:,:,:)
8324  logical, intent(in), optional:: flag_mpi_split
8325  real(DP), intent(out), optional:: returned_time
8326  logical, intent(out), optional:: flag_time_exist
8327  logical, intent(out), optional:: err
8328  character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
8329  character(STRING), pointer:: carray (:)
8330  character(STRING):: tname
8331  character(*), parameter :: subname = "HistoryGetReal5TimeR"
8332  interface
8333  subroutine historygetreal5(&
8334  & file, varname, array, range, quiet, &
8335  & flag_mpi_split, returned_time, flag_time_exist, err)
8336  use dc_types, only: dp, sp
8337  character(*), intent(in):: file
8338  character(*), intent(in):: varname
8339  character(*), intent(in), optional:: range
8340  logical, intent(in), optional:: quiet
8341  logical, intent(in), optional:: flag_mpi_split
8342  real(DP), intent(out), optional:: returned_time
8343  logical, intent(out), optional:: flag_time_exist
8344  logical, intent(out), optional:: err
8345  real(SP), intent(out) :: array(:,:,:,:,:)
8346  end subroutine historygetreal5
8347  end interface
8348  interface
8349  subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
8350  character(*), intent(in):: file
8351  character(*), intent(in):: varname
8352  character(*), intent(out):: url
8353  character(*), intent(in), optional:: range
8354  logical, intent(out), optional:: flag_time_exist
8355  character(*), intent(out), optional:: time_name
8356  logical, intent(out), optional:: err
8357  end subroutine lookup_growable_url
8358  end interface
8359  interface
8360  function file_rename_mpi( file ) result(result)
8361  use dc_types, only: string
8362  character(*), intent(in):: file
8363  character(STRING):: result
8364  end function file_rename_mpi
8365  end interface
8366  continue
8367  file_work = file
8368  if ( present_and_true( flag_mpi_split ) ) &
8369  & file_work = file_rename_mpi( file_work )
8370  call lookup_growable_url(file = file_work, varname = varname, &
8371  & url = url, &
8372  & flag_time_exist = flag_time_exist, time_name = tname, err = err)
8373  call url_chop_iorange( &
8374  & fullname = url, iorange = iorange, remainder = remainder )
8375  call split( str = iorange, carray = carray, sep = gt_equal )
8376  timevar_name = carray(1)
8377  deallocate( carray )
8378  time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
8379  call historygetreal5( file = file, &
8380  & varname = varname, array = array, &
8381  & range = time_range, quiet = quiet, &
8382  & flag_mpi_split = flag_mpi_split, &
8383  & returned_time = returned_time, &
8384  & flag_time_exist = flag_time_exist, &
8385  & err = err )
8386 end subroutine historygetreal5timer
8387 subroutine historygetreal6timer( &
8388  & file, varname, array, time, &
8389  & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
8390  use dc_string, only: tochar, split
8391  use dc_types, only: string, dp, sp
8392  use dc_trace, only: dbgmessage
8393  use dc_url, only: url_chop_iorange, gt_equal
8394  use dc_present, only: present_and_true
8395  implicit none
8396  character(*), intent(in):: file, varname
8397  real(SP), intent(in):: time
8398  logical, intent(in), optional:: quiet
8399  real(SP), intent(out) :: array(:,:,:,:,:,:)
8400  logical, intent(in), optional:: flag_mpi_split
8401  real(DP), intent(out), optional:: returned_time
8402  logical, intent(out), optional:: flag_time_exist
8403  logical, intent(out), optional:: err
8404  character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
8405  character(STRING), pointer:: carray (:)
8406  character(STRING):: tname
8407  character(*), parameter :: subname = "HistoryGetReal6TimeR"
8408  interface
8409  subroutine historygetreal6(&
8410  & file, varname, array, range, quiet, &
8411  & flag_mpi_split, returned_time, flag_time_exist, err)
8412  use dc_types, only: dp, sp
8413  character(*), intent(in):: file
8414  character(*), intent(in):: varname
8415  character(*), intent(in), optional:: range
8416  logical, intent(in), optional:: quiet
8417  logical, intent(in), optional:: flag_mpi_split
8418  real(DP), intent(out), optional:: returned_time
8419  logical, intent(out), optional:: flag_time_exist
8420  logical, intent(out), optional:: err
8421  real(SP), intent(out) :: array(:,:,:,:,:,:)
8422  end subroutine historygetreal6
8423  end interface
8424  interface
8425  subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
8426  character(*), intent(in):: file
8427  character(*), intent(in):: varname
8428  character(*), intent(out):: url
8429  character(*), intent(in), optional:: range
8430  logical, intent(out), optional:: flag_time_exist
8431  character(*), intent(out), optional:: time_name
8432  logical, intent(out), optional:: err
8433  end subroutine lookup_growable_url
8434  end interface
8435  interface
8436  function file_rename_mpi( file ) result(result)
8437  use dc_types, only: string
8438  character(*), intent(in):: file
8439  character(STRING):: result
8440  end function file_rename_mpi
8441  end interface
8442  continue
8443  file_work = file
8444  if ( present_and_true( flag_mpi_split ) ) &
8445  & file_work = file_rename_mpi( file_work )
8446  call lookup_growable_url(file = file_work, varname = varname, &
8447  & url = url, &
8448  & flag_time_exist = flag_time_exist, time_name = tname, err = err)
8449  call url_chop_iorange( &
8450  & fullname = url, iorange = iorange, remainder = remainder )
8451  call split( str = iorange, carray = carray, sep = gt_equal )
8452  timevar_name = carray(1)
8453  deallocate( carray )
8454  time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
8455  call historygetreal6( file = file, &
8456  & varname = varname, array = array, &
8457  & range = time_range, quiet = quiet, &
8458  & flag_mpi_split = flag_mpi_split, &
8459  & returned_time = returned_time, &
8460  & flag_time_exist = flag_time_exist, &
8461  & err = err )
8462 end subroutine historygetreal6timer
8463 subroutine historygetreal7timer( &
8464  & file, varname, array, time, &
8465  & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
8466  use dc_string, only: tochar, split
8467  use dc_types, only: string, dp, sp
8468  use dc_trace, only: dbgmessage
8469  use dc_url, only: url_chop_iorange, gt_equal
8470  use dc_present, only: present_and_true
8471  implicit none
8472  character(*), intent(in):: file, varname
8473  real(SP), intent(in):: time
8474  logical, intent(in), optional:: quiet
8475  real(SP), intent(out) :: array(:,:,:,:,:,:,:)
8476  logical, intent(in), optional:: flag_mpi_split
8477  real(DP), intent(out), optional:: returned_time
8478  logical, intent(out), optional:: flag_time_exist
8479  logical, intent(out), optional:: err
8480  character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
8481  character(STRING), pointer:: carray (:)
8482  character(STRING):: tname
8483  character(*), parameter :: subname = "HistoryGetReal7TimeR"
8484  interface
8485  subroutine historygetreal7(&
8486  & file, varname, array, range, quiet, &
8487  & flag_mpi_split, returned_time, flag_time_exist, err)
8488  use dc_types, only: dp, sp
8489  character(*), intent(in):: file
8490  character(*), intent(in):: varname
8491  character(*), intent(in), optional:: range
8492  logical, intent(in), optional:: quiet
8493  logical, intent(in), optional:: flag_mpi_split
8494  real(DP), intent(out), optional:: returned_time
8495  logical, intent(out), optional:: flag_time_exist
8496  logical, intent(out), optional:: err
8497  real(SP), intent(out) :: array(:,:,:,:,:,:,:)
8498  end subroutine historygetreal7
8499  end interface
8500  interface
8501  subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
8502  character(*), intent(in):: file
8503  character(*), intent(in):: varname
8504  character(*), intent(out):: url
8505  character(*), intent(in), optional:: range
8506  logical, intent(out), optional:: flag_time_exist
8507  character(*), intent(out), optional:: time_name
8508  logical, intent(out), optional:: err
8509  end subroutine lookup_growable_url
8510  end interface
8511  interface
8512  function file_rename_mpi( file ) result(result)
8513  use dc_types, only: string
8514  character(*), intent(in):: file
8515  character(STRING):: result
8516  end function file_rename_mpi
8517  end interface
8518  continue
8519  file_work = file
8520  if ( present_and_true( flag_mpi_split ) ) &
8521  & file_work = file_rename_mpi( file_work )
8522  call lookup_growable_url(file = file_work, varname = varname, &
8523  & url = url, &
8524  & flag_time_exist = flag_time_exist, time_name = tname, err = err)
8525  call url_chop_iorange( &
8526  & fullname = url, iorange = iorange, remainder = remainder )
8527  call split( str = iorange, carray = carray, sep = gt_equal )
8528  timevar_name = carray(1)
8529  deallocate( carray )
8530  time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
8531  call historygetreal7( file = file, &
8532  & varname = varname, array = array, &
8533  & range = time_range, quiet = quiet, &
8534  & flag_mpi_split = flag_mpi_split, &
8535  & returned_time = returned_time, &
8536  & flag_time_exist = flag_time_exist, &
8537  & err = err )
8538 end subroutine historygetreal7timer
8539 subroutine historygetreal0pointertimer( &
8540  & file, varname, array, time, &
8541  & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
8542  use dc_string, only: tochar, split
8543  use dc_types, only: string, dp, sp
8544  use dc_trace, only: dbgmessage
8545  use dc_url, only: url_chop_iorange, gt_equal
8546  use dc_present, only: present_and_true
8547  implicit none
8548  character(*), intent(in):: file, varname
8549  real(SP), intent(in):: time
8550  logical, intent(in), optional:: quiet
8551  real(SP), pointer :: array
8552  logical, intent(in), optional:: flag_mpi_split
8553  real(DP), intent(out), optional:: returned_time
8554  logical, intent(out), optional:: flag_time_exist
8555  logical, intent(out), optional:: err
8556  character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
8557  character(STRING), pointer:: carray (:)
8558  character(STRING):: tname
8559  character(*), parameter :: subname = "HistoryGetReal0TimeR"
8560  interface
8561  subroutine historygetreal0pointer(&
8562  & file, varname, array, range, quiet, &
8563  & flag_mpi_split, returned_time, flag_time_exist, err)
8564  use dc_types, only: dp, sp
8565  character(*), intent(in):: file
8566  character(*), intent(in):: varname
8567  character(*), intent(in), optional:: range
8568  logical, intent(in), optional:: quiet
8569  logical, intent(in), optional:: flag_mpi_split
8570  real(DP), intent(out), optional:: returned_time
8571  logical, intent(out), optional:: flag_time_exist
8572  logical, intent(out), optional:: err
8573  real(SP), pointer :: array
8574  end subroutine historygetreal0pointer
8575  end interface
8576  interface
8577  subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
8578  character(*), intent(in):: file
8579  character(*), intent(in):: varname
8580  character(*), intent(out):: url
8581  character(*), intent(in), optional:: range
8582  logical, intent(out), optional:: flag_time_exist
8583  character(*), intent(out), optional:: time_name
8584  logical, intent(out), optional:: err
8585  end subroutine lookup_growable_url
8586  end interface
8587  interface
8588  function file_rename_mpi( file ) result(result)
8589  use dc_types, only: string
8590  character(*), intent(in):: file
8591  character(STRING):: result
8592  end function file_rename_mpi
8593  end interface
8594  continue
8595  file_work = file
8596  if ( present_and_true( flag_mpi_split ) ) &
8597  & file_work = file_rename_mpi( file_work )
8598  call lookup_growable_url(file = file_work, varname = varname, &
8599  & url = url, &
8600  & flag_time_exist = flag_time_exist, time_name = tname, err = err)
8601  call url_chop_iorange( &
8602  & fullname = url, iorange = iorange, remainder = remainder )
8603  call split( str = iorange, carray = carray, sep = gt_equal )
8604  timevar_name = carray(1)
8605  deallocate( carray )
8606  time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
8607  call historygetreal0pointer( file = file, &
8608  & varname = varname, array = array, &
8609  & range = time_range, quiet = quiet, &
8610  & flag_mpi_split = flag_mpi_split, &
8611  & returned_time = returned_time, &
8612  & flag_time_exist = flag_time_exist, &
8613  & err = err )
8614 end subroutine historygetreal0pointertimer
8615 subroutine historygetreal1pointertimer( &
8616  & file, varname, array, time, &
8617  & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
8618  use dc_string, only: tochar, split
8619  use dc_types, only: string, dp, sp
8620  use dc_trace, only: dbgmessage
8621  use dc_url, only: url_chop_iorange, gt_equal
8622  use dc_present, only: present_and_true
8623  implicit none
8624  character(*), intent(in):: file, varname
8625  real(SP), intent(in):: time
8626  logical, intent(in), optional:: quiet
8627  real(SP), pointer :: array(:)
8628  logical, intent(in), optional:: flag_mpi_split
8629  real(DP), intent(out), optional:: returned_time
8630  logical, intent(out), optional:: flag_time_exist
8631  logical, intent(out), optional:: err
8632  character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
8633  character(STRING), pointer:: carray (:)
8634  character(STRING):: tname
8635  character(*), parameter :: subname = "HistoryGetReal1TimeR"
8636  interface
8637  subroutine historygetreal1pointer(&
8638  & file, varname, array, range, quiet, &
8639  & flag_mpi_split, returned_time, flag_time_exist, err)
8640  use dc_types, only: dp, sp
8641  character(*), intent(in):: file
8642  character(*), intent(in):: varname
8643  character(*), intent(in), optional:: range
8644  logical, intent(in), optional:: quiet
8645  logical, intent(in), optional:: flag_mpi_split
8646  real(DP), intent(out), optional:: returned_time
8647  logical, intent(out), optional:: flag_time_exist
8648  logical, intent(out), optional:: err
8649  real(SP), pointer :: array(:)
8650  end subroutine historygetreal1pointer
8651  end interface
8652  interface
8653  subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
8654  character(*), intent(in):: file
8655  character(*), intent(in):: varname
8656  character(*), intent(out):: url
8657  character(*), intent(in), optional:: range
8658  logical, intent(out), optional:: flag_time_exist
8659  character(*), intent(out), optional:: time_name
8660  logical, intent(out), optional:: err
8661  end subroutine lookup_growable_url
8662  end interface
8663  interface
8664  function file_rename_mpi( file ) result(result)
8665  use dc_types, only: string
8666  character(*), intent(in):: file
8667  character(STRING):: result
8668  end function file_rename_mpi
8669  end interface
8670  continue
8671  file_work = file
8672  if ( present_and_true( flag_mpi_split ) ) &
8673  & file_work = file_rename_mpi( file_work )
8674  call lookup_growable_url(file = file_work, varname = varname, &
8675  & url = url, &
8676  & flag_time_exist = flag_time_exist, time_name = tname, err = err)
8677  call url_chop_iorange( &
8678  & fullname = url, iorange = iorange, remainder = remainder )
8679  call split( str = iorange, carray = carray, sep = gt_equal )
8680  timevar_name = carray(1)
8681  deallocate( carray )
8682  time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
8683  call historygetreal1pointer( file = file, &
8684  & varname = varname, array = array, &
8685  & range = time_range, quiet = quiet, &
8686  & flag_mpi_split = flag_mpi_split, &
8687  & returned_time = returned_time, &
8688  & flag_time_exist = flag_time_exist, &
8689  & err = err )
8690 end subroutine historygetreal1pointertimer
8691 subroutine historygetreal2pointertimer( &
8692  & file, varname, array, time, &
8693  & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
8694  use dc_string, only: tochar, split
8695  use dc_types, only: string, dp, sp
8696  use dc_trace, only: dbgmessage
8697  use dc_url, only: url_chop_iorange, gt_equal
8698  use dc_present, only: present_and_true
8699  implicit none
8700  character(*), intent(in):: file, varname
8701  real(SP), intent(in):: time
8702  logical, intent(in), optional:: quiet
8703  real(SP), pointer :: array(:,:)
8704  logical, intent(in), optional:: flag_mpi_split
8705  real(DP), intent(out), optional:: returned_time
8706  logical, intent(out), optional:: flag_time_exist
8707  logical, intent(out), optional:: err
8708  character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
8709  character(STRING), pointer:: carray (:)
8710  character(STRING):: tname
8711  character(*), parameter :: subname = "HistoryGetReal2TimeR"
8712  interface
8713  subroutine historygetreal2pointer(&
8714  & file, varname, array, range, quiet, &
8715  & flag_mpi_split, returned_time, flag_time_exist, err)
8716  use dc_types, only: dp, sp
8717  character(*), intent(in):: file
8718  character(*), intent(in):: varname
8719  character(*), intent(in), optional:: range
8720  logical, intent(in), optional:: quiet
8721  logical, intent(in), optional:: flag_mpi_split
8722  real(DP), intent(out), optional:: returned_time
8723  logical, intent(out), optional:: flag_time_exist
8724  logical, intent(out), optional:: err
8725  real(SP), pointer :: array(:,:)
8726  end subroutine historygetreal2pointer
8727  end interface
8728  interface
8729  subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
8730  character(*), intent(in):: file
8731  character(*), intent(in):: varname
8732  character(*), intent(out):: url
8733  character(*), intent(in), optional:: range
8734  logical, intent(out), optional:: flag_time_exist
8735  character(*), intent(out), optional:: time_name
8736  logical, intent(out), optional:: err
8737  end subroutine lookup_growable_url
8738  end interface
8739  interface
8740  function file_rename_mpi( file ) result(result)
8741  use dc_types, only: string
8742  character(*), intent(in):: file
8743  character(STRING):: result
8744  end function file_rename_mpi
8745  end interface
8746  continue
8747  file_work = file
8748  if ( present_and_true( flag_mpi_split ) ) &
8749  & file_work = file_rename_mpi( file_work )
8750  call lookup_growable_url(file = file_work, varname = varname, &
8751  & url = url, &
8752  & flag_time_exist = flag_time_exist, time_name = tname, err = err)
8753  call url_chop_iorange( &
8754  & fullname = url, iorange = iorange, remainder = remainder )
8755  call split( str = iorange, carray = carray, sep = gt_equal )
8756  timevar_name = carray(1)
8757  deallocate( carray )
8758  time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
8759  call historygetreal2pointer( file = file, &
8760  & varname = varname, array = array, &
8761  & range = time_range, quiet = quiet, &
8762  & flag_mpi_split = flag_mpi_split, &
8763  & returned_time = returned_time, &
8764  & flag_time_exist = flag_time_exist, &
8765  & err = err )
8766 end subroutine historygetreal2pointertimer
8767 subroutine historygetreal3pointertimer( &
8768  & file, varname, array, time, &
8769  & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
8770  use dc_string, only: tochar, split
8771  use dc_types, only: string, dp, sp
8772  use dc_trace, only: dbgmessage
8773  use dc_url, only: url_chop_iorange, gt_equal
8774  use dc_present, only: present_and_true
8775  implicit none
8776  character(*), intent(in):: file, varname
8777  real(SP), intent(in):: time
8778  logical, intent(in), optional:: quiet
8779  real(SP), pointer :: array(:,:,:)
8780  logical, intent(in), optional:: flag_mpi_split
8781  real(DP), intent(out), optional:: returned_time
8782  logical, intent(out), optional:: flag_time_exist
8783  logical, intent(out), optional:: err
8784  character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
8785  character(STRING), pointer:: carray (:)
8786  character(STRING):: tname
8787  character(*), parameter :: subname = "HistoryGetReal3TimeR"
8788  interface
8789  subroutine historygetreal3pointer(&
8790  & file, varname, array, range, quiet, &
8791  & flag_mpi_split, returned_time, flag_time_exist, err)
8792  use dc_types, only: dp, sp
8793  character(*), intent(in):: file
8794  character(*), intent(in):: varname
8795  character(*), intent(in), optional:: range
8796  logical, intent(in), optional:: quiet
8797  logical, intent(in), optional:: flag_mpi_split
8798  real(DP), intent(out), optional:: returned_time
8799  logical, intent(out), optional:: flag_time_exist
8800  logical, intent(out), optional:: err
8801  real(SP), pointer :: array(:,:,:)
8802  end subroutine historygetreal3pointer
8803  end interface
8804  interface
8805  subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
8806  character(*), intent(in):: file
8807  character(*), intent(in):: varname
8808  character(*), intent(out):: url
8809  character(*), intent(in), optional:: range
8810  logical, intent(out), optional:: flag_time_exist
8811  character(*), intent(out), optional:: time_name
8812  logical, intent(out), optional:: err
8813  end subroutine lookup_growable_url
8814  end interface
8815  interface
8816  function file_rename_mpi( file ) result(result)
8817  use dc_types, only: string
8818  character(*), intent(in):: file
8819  character(STRING):: result
8820  end function file_rename_mpi
8821  end interface
8822  continue
8823  file_work = file
8824  if ( present_and_true( flag_mpi_split ) ) &
8825  & file_work = file_rename_mpi( file_work )
8826  call lookup_growable_url(file = file_work, varname = varname, &
8827  & url = url, &
8828  & flag_time_exist = flag_time_exist, time_name = tname, err = err)
8829  call url_chop_iorange( &
8830  & fullname = url, iorange = iorange, remainder = remainder )
8831  call split( str = iorange, carray = carray, sep = gt_equal )
8832  timevar_name = carray(1)
8833  deallocate( carray )
8834  time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
8835  call historygetreal3pointer( file = file, &
8836  & varname = varname, array = array, &
8837  & range = time_range, quiet = quiet, &
8838  & flag_mpi_split = flag_mpi_split, &
8839  & returned_time = returned_time, &
8840  & flag_time_exist = flag_time_exist, &
8841  & err = err )
8842 end subroutine historygetreal3pointertimer
8843 subroutine historygetreal4pointertimer( &
8844  & file, varname, array, time, &
8845  & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
8846  use dc_string, only: tochar, split
8847  use dc_types, only: string, dp, sp
8848  use dc_trace, only: dbgmessage
8849  use dc_url, only: url_chop_iorange, gt_equal
8850  use dc_present, only: present_and_true
8851  implicit none
8852  character(*), intent(in):: file, varname
8853  real(SP), intent(in):: time
8854  logical, intent(in), optional:: quiet
8855  real(SP), pointer :: array(:,:,:,:)
8856  logical, intent(in), optional:: flag_mpi_split
8857  real(DP), intent(out), optional:: returned_time
8858  logical, intent(out), optional:: flag_time_exist
8859  logical, intent(out), optional:: err
8860  character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
8861  character(STRING), pointer:: carray (:)
8862  character(STRING):: tname
8863  character(*), parameter :: subname = "HistoryGetReal4TimeR"
8864  interface
8865  subroutine historygetreal4pointer(&
8866  & file, varname, array, range, quiet, &
8867  & flag_mpi_split, returned_time, flag_time_exist, err)
8868  use dc_types, only: dp, sp
8869  character(*), intent(in):: file
8870  character(*), intent(in):: varname
8871  character(*), intent(in), optional:: range
8872  logical, intent(in), optional:: quiet
8873  logical, intent(in), optional:: flag_mpi_split
8874  real(DP), intent(out), optional:: returned_time
8875  logical, intent(out), optional:: flag_time_exist
8876  logical, intent(out), optional:: err
8877  real(SP), pointer :: array(:,:,:,:)
8878  end subroutine historygetreal4pointer
8879  end interface
8880  interface
8881  subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
8882  character(*), intent(in):: file
8883  character(*), intent(in):: varname
8884  character(*), intent(out):: url
8885  character(*), intent(in), optional:: range
8886  logical, intent(out), optional:: flag_time_exist
8887  character(*), intent(out), optional:: time_name
8888  logical, intent(out), optional:: err
8889  end subroutine lookup_growable_url
8890  end interface
8891  interface
8892  function file_rename_mpi( file ) result(result)
8893  use dc_types, only: string
8894  character(*), intent(in):: file
8895  character(STRING):: result
8896  end function file_rename_mpi
8897  end interface
8898  continue
8899  file_work = file
8900  if ( present_and_true( flag_mpi_split ) ) &
8901  & file_work = file_rename_mpi( file_work )
8902  call lookup_growable_url(file = file_work, varname = varname, &
8903  & url = url, &
8904  & flag_time_exist = flag_time_exist, time_name = tname, err = err)
8905  call url_chop_iorange( &
8906  & fullname = url, iorange = iorange, remainder = remainder )
8907  call split( str = iorange, carray = carray, sep = gt_equal )
8908  timevar_name = carray(1)
8909  deallocate( carray )
8910  time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
8911  call historygetreal4pointer( file = file, &
8912  & varname = varname, array = array, &
8913  & range = time_range, quiet = quiet, &
8914  & flag_mpi_split = flag_mpi_split, &
8915  & returned_time = returned_time, &
8916  & flag_time_exist = flag_time_exist, &
8917  & err = err )
8918 end subroutine historygetreal4pointertimer
8919 subroutine historygetreal5pointertimer( &
8920  & file, varname, array, time, &
8921  & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
8922  use dc_string, only: tochar, split
8923  use dc_types, only: string, dp, sp
8924  use dc_trace, only: dbgmessage
8925  use dc_url, only: url_chop_iorange, gt_equal
8926  use dc_present, only: present_and_true
8927  implicit none
8928  character(*), intent(in):: file, varname
8929  real(SP), intent(in):: time
8930  logical, intent(in), optional:: quiet
8931  real(SP), pointer :: array(:,:,:,:,:)
8932  logical, intent(in), optional:: flag_mpi_split
8933  real(DP), intent(out), optional:: returned_time
8934  logical, intent(out), optional:: flag_time_exist
8935  logical, intent(out), optional:: err
8936  character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
8937  character(STRING), pointer:: carray (:)
8938  character(STRING):: tname
8939  character(*), parameter :: subname = "HistoryGetReal5TimeR"
8940  interface
8941  subroutine historygetreal5pointer(&
8942  & file, varname, array, range, quiet, &
8943  & flag_mpi_split, returned_time, flag_time_exist, err)
8944  use dc_types, only: dp, sp
8945  character(*), intent(in):: file
8946  character(*), intent(in):: varname
8947  character(*), intent(in), optional:: range
8948  logical, intent(in), optional:: quiet
8949  logical, intent(in), optional:: flag_mpi_split
8950  real(DP), intent(out), optional:: returned_time
8951  logical, intent(out), optional:: flag_time_exist
8952  logical, intent(out), optional:: err
8953  real(SP), pointer :: array(:,:,:,:,:)
8954  end subroutine historygetreal5pointer
8955  end interface
8956  interface
8957  subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
8958  character(*), intent(in):: file
8959  character(*), intent(in):: varname
8960  character(*), intent(out):: url
8961  character(*), intent(in), optional:: range
8962  logical, intent(out), optional:: flag_time_exist
8963  character(*), intent(out), optional:: time_name
8964  logical, intent(out), optional:: err
8965  end subroutine lookup_growable_url
8966  end interface
8967  interface
8968  function file_rename_mpi( file ) result(result)
8969  use dc_types, only: string
8970  character(*), intent(in):: file
8971  character(STRING):: result
8972  end function file_rename_mpi
8973  end interface
8974  continue
8975  file_work = file
8976  if ( present_and_true( flag_mpi_split ) ) &
8977  & file_work = file_rename_mpi( file_work )
8978  call lookup_growable_url(file = file_work, varname = varname, &
8979  & url = url, &
8980  & flag_time_exist = flag_time_exist, time_name = tname, err = err)
8981  call url_chop_iorange( &
8982  & fullname = url, iorange = iorange, remainder = remainder )
8983  call split( str = iorange, carray = carray, sep = gt_equal )
8984  timevar_name = carray(1)
8985  deallocate( carray )
8986  time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
8987  call historygetreal5pointer( file = file, &
8988  & varname = varname, array = array, &
8989  & range = time_range, quiet = quiet, &
8990  & flag_mpi_split = flag_mpi_split, &
8991  & returned_time = returned_time, &
8992  & flag_time_exist = flag_time_exist, &
8993  & err = err )
8994 end subroutine historygetreal5pointertimer
8995 subroutine historygetreal6pointertimer( &
8996  & file, varname, array, time, &
8997  & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
8998  use dc_string, only: tochar, split
8999  use dc_types, only: string, dp, sp
9000  use dc_trace, only: dbgmessage
9001  use dc_url, only: url_chop_iorange, gt_equal
9002  use dc_present, only: present_and_true
9003  implicit none
9004  character(*), intent(in):: file, varname
9005  real(SP), intent(in):: time
9006  logical, intent(in), optional:: quiet
9007  real(SP), pointer :: array(:,:,:,:,:,:)
9008  logical, intent(in), optional:: flag_mpi_split
9009  real(DP), intent(out), optional:: returned_time
9010  logical, intent(out), optional:: flag_time_exist
9011  logical, intent(out), optional:: err
9012  character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
9013  character(STRING), pointer:: carray (:)
9014  character(STRING):: tname
9015  character(*), parameter :: subname = "HistoryGetReal6TimeR"
9016  interface
9017  subroutine historygetreal6pointer(&
9018  & file, varname, array, range, quiet, &
9019  & flag_mpi_split, returned_time, flag_time_exist, err)
9020  use dc_types, only: dp, sp
9021  character(*), intent(in):: file
9022  character(*), intent(in):: varname
9023  character(*), intent(in), optional:: range
9024  logical, intent(in), optional:: quiet
9025  logical, intent(in), optional:: flag_mpi_split
9026  real(DP), intent(out), optional:: returned_time
9027  logical, intent(out), optional:: flag_time_exist
9028  logical, intent(out), optional:: err
9029  real(SP), pointer :: array(:,:,:,:,:,:)
9030  end subroutine historygetreal6pointer
9031  end interface
9032  interface
9033  subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
9034  character(*), intent(in):: file
9035  character(*), intent(in):: varname
9036  character(*), intent(out):: url
9037  character(*), intent(in), optional:: range
9038  logical, intent(out), optional:: flag_time_exist
9039  character(*), intent(out), optional:: time_name
9040  logical, intent(out), optional:: err
9041  end subroutine lookup_growable_url
9042  end interface
9043  interface
9044  function file_rename_mpi( file ) result(result)
9045  use dc_types, only: string
9046  character(*), intent(in):: file
9047  character(STRING):: result
9048  end function file_rename_mpi
9049  end interface
9050  continue
9051  file_work = file
9052  if ( present_and_true( flag_mpi_split ) ) &
9053  & file_work = file_rename_mpi( file_work )
9054  call lookup_growable_url(file = file_work, varname = varname, &
9055  & url = url, &
9056  & flag_time_exist = flag_time_exist, time_name = tname, err = err)
9057  call url_chop_iorange( &
9058  & fullname = url, iorange = iorange, remainder = remainder )
9059  call split( str = iorange, carray = carray, sep = gt_equal )
9060  timevar_name = carray(1)
9061  deallocate( carray )
9062  time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
9063  call historygetreal6pointer( file = file, &
9064  & varname = varname, array = array, &
9065  & range = time_range, quiet = quiet, &
9066  & flag_mpi_split = flag_mpi_split, &
9067  & returned_time = returned_time, &
9068  & flag_time_exist = flag_time_exist, &
9069  & err = err )
9070 end subroutine historygetreal6pointertimer
9071 subroutine historygetreal7pointertimer( &
9072  & file, varname, array, time, &
9073  & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
9074  use dc_string, only: tochar, split
9075  use dc_types, only: string, dp, sp
9076  use dc_trace, only: dbgmessage
9077  use dc_url, only: url_chop_iorange, gt_equal
9078  use dc_present, only: present_and_true
9079  implicit none
9080  character(*), intent(in):: file, varname
9081  real(SP), intent(in):: time
9082  logical, intent(in), optional:: quiet
9083  real(SP), pointer :: array(:,:,:,:,:,:,:)
9084  logical, intent(in), optional:: flag_mpi_split
9085  real(DP), intent(out), optional:: returned_time
9086  logical, intent(out), optional:: flag_time_exist
9087  logical, intent(out), optional:: err
9088  character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
9089  character(STRING), pointer:: carray (:)
9090  character(STRING):: tname
9091  character(*), parameter :: subname = "HistoryGetReal7TimeR"
9092  interface
9093  subroutine historygetreal7pointer(&
9094  & file, varname, array, range, quiet, &
9095  & flag_mpi_split, returned_time, flag_time_exist, err)
9096  use dc_types, only: dp, sp
9097  character(*), intent(in):: file
9098  character(*), intent(in):: varname
9099  character(*), intent(in), optional:: range
9100  logical, intent(in), optional:: quiet
9101  logical, intent(in), optional:: flag_mpi_split
9102  real(DP), intent(out), optional:: returned_time
9103  logical, intent(out), optional:: flag_time_exist
9104  logical, intent(out), optional:: err
9105  real(SP), pointer :: array(:,:,:,:,:,:,:)
9106  end subroutine historygetreal7pointer
9107  end interface
9108  interface
9109  subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
9110  character(*), intent(in):: file
9111  character(*), intent(in):: varname
9112  character(*), intent(out):: url
9113  character(*), intent(in), optional:: range
9114  logical, intent(out), optional:: flag_time_exist
9115  character(*), intent(out), optional:: time_name
9116  logical, intent(out), optional:: err
9117  end subroutine lookup_growable_url
9118  end interface
9119  interface
9120  function file_rename_mpi( file ) result(result)
9121  use dc_types, only: string
9122  character(*), intent(in):: file
9123  character(STRING):: result
9124  end function file_rename_mpi
9125  end interface
9126  continue
9127  file_work = file
9128  if ( present_and_true( flag_mpi_split ) ) &
9129  & file_work = file_rename_mpi( file_work )
9130  call lookup_growable_url(file = file_work, varname = varname, &
9131  & url = url, &
9132  & flag_time_exist = flag_time_exist, time_name = tname, err = err)
9133  call url_chop_iorange( &
9134  & fullname = url, iorange = iorange, remainder = remainder )
9135  call split( str = iorange, carray = carray, sep = gt_equal )
9136  timevar_name = carray(1)
9137  deallocate( carray )
9138  time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
9139  call historygetreal7pointer( file = file, &
9140  & varname = varname, array = array, &
9141  & range = time_range, quiet = quiet, &
9142  & flag_mpi_split = flag_mpi_split, &
9143  & returned_time = returned_time, &
9144  & flag_time_exist = flag_time_exist, &
9145  & err = err )
9146 end subroutine historygetreal7pointertimer
9147 subroutine historygetint0timer( &
9148  & file, varname, array, time, &
9149  & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
9150  use dc_string, only: tochar, split
9151  use dc_types, only: string, dp, sp
9152  use dc_trace, only: dbgmessage
9153  use dc_url, only: url_chop_iorange, gt_equal
9154  use dc_present, only: present_and_true
9155  implicit none
9156  character(*), intent(in):: file, varname
9157  real(SP), intent(in):: time
9158  logical, intent(in), optional:: quiet
9159  integer, intent(out) :: array
9160  logical, intent(in), optional:: flag_mpi_split
9161  real(DP), intent(out), optional:: returned_time
9162  logical, intent(out), optional:: flag_time_exist
9163  logical, intent(out), optional:: err
9164  character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
9165  character(STRING), pointer:: carray (:)
9166  character(STRING):: tname
9167  character(*), parameter :: subname = "HistoryGetInt0TimeR"
9168  interface
9169  subroutine historygetint0(&
9170  & file, varname, array, range, quiet, &
9171  & flag_mpi_split, returned_time, flag_time_exist, err)
9172  use dc_types, only: dp
9173  character(*), intent(in):: file
9174  character(*), intent(in):: varname
9175  character(*), intent(in), optional:: range
9176  logical, intent(in), optional:: quiet
9177  logical, intent(in), optional:: flag_mpi_split
9178  real(DP), intent(out), optional:: returned_time
9179  logical, intent(out), optional:: flag_time_exist
9180  logical, intent(out), optional:: err
9181  integer, intent(out) :: array
9182  end subroutine historygetint0
9183  end interface
9184  interface
9185  subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
9186  character(*), intent(in):: file
9187  character(*), intent(in):: varname
9188  character(*), intent(out):: url
9189  character(*), intent(in), optional:: range
9190  logical, intent(out), optional:: flag_time_exist
9191  character(*), intent(out), optional:: time_name
9192  logical, intent(out), optional:: err
9193  end subroutine lookup_growable_url
9194  end interface
9195  interface
9196  function file_rename_mpi( file ) result(result)
9197  use dc_types, only: string
9198  character(*), intent(in):: file
9199  character(STRING):: result
9200  end function file_rename_mpi
9201  end interface
9202  continue
9203  file_work = file
9204  if ( present_and_true( flag_mpi_split ) ) &
9205  & file_work = file_rename_mpi( file_work )
9206  call lookup_growable_url(file = file_work, varname = varname, &
9207  & url = url, &
9208  & flag_time_exist = flag_time_exist, time_name = tname, err = err)
9209  call url_chop_iorange( &
9210  & fullname = url, iorange = iorange, remainder = remainder )
9211  call split( str = iorange, carray = carray, sep = gt_equal )
9212  timevar_name = carray(1)
9213  deallocate( carray )
9214  time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
9215  call historygetint0( file = file, &
9216  & varname = varname, array = array, &
9217  & range = time_range, quiet = quiet, &
9218  & flag_mpi_split = flag_mpi_split, &
9219  & returned_time = returned_time, &
9220  & flag_time_exist = flag_time_exist, &
9221  & err = err )
9222 end subroutine historygetint0timer
9223 subroutine historygetint1timer( &
9224  & file, varname, array, time, &
9225  & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
9226  use dc_string, only: tochar, split
9227  use dc_types, only: string, dp, sp
9228  use dc_trace, only: dbgmessage
9229  use dc_url, only: url_chop_iorange, gt_equal
9230  use dc_present, only: present_and_true
9231  implicit none
9232  character(*), intent(in):: file, varname
9233  real(SP), intent(in):: time
9234  logical, intent(in), optional:: quiet
9235  integer, intent(out) :: array(:)
9236  logical, intent(in), optional:: flag_mpi_split
9237  real(DP), intent(out), optional:: returned_time
9238  logical, intent(out), optional:: flag_time_exist
9239  logical, intent(out), optional:: err
9240  character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
9241  character(STRING), pointer:: carray (:)
9242  character(STRING):: tname
9243  character(*), parameter :: subname = "HistoryGetInt1TimeR"
9244  interface
9245  subroutine historygetint1(&
9246  & file, varname, array, range, quiet, &
9247  & flag_mpi_split, returned_time, flag_time_exist, err)
9248  use dc_types, only: dp
9249  character(*), intent(in):: file
9250  character(*), intent(in):: varname
9251  character(*), intent(in), optional:: range
9252  logical, intent(in), optional:: quiet
9253  logical, intent(in), optional:: flag_mpi_split
9254  real(DP), intent(out), optional:: returned_time
9255  logical, intent(out), optional:: flag_time_exist
9256  logical, intent(out), optional:: err
9257  integer, intent(out) :: array(:)
9258  end subroutine historygetint1
9259  end interface
9260  interface
9261  subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
9262  character(*), intent(in):: file
9263  character(*), intent(in):: varname
9264  character(*), intent(out):: url
9265  character(*), intent(in), optional:: range
9266  logical, intent(out), optional:: flag_time_exist
9267  character(*), intent(out), optional:: time_name
9268  logical, intent(out), optional:: err
9269  end subroutine lookup_growable_url
9270  end interface
9271  interface
9272  function file_rename_mpi( file ) result(result)
9273  use dc_types, only: string
9274  character(*), intent(in):: file
9275  character(STRING):: result
9276  end function file_rename_mpi
9277  end interface
9278  continue
9279  file_work = file
9280  if ( present_and_true( flag_mpi_split ) ) &
9281  & file_work = file_rename_mpi( file_work )
9282  call lookup_growable_url(file = file_work, varname = varname, &
9283  & url = url, &
9284  & flag_time_exist = flag_time_exist, time_name = tname, err = err)
9285  call url_chop_iorange( &
9286  & fullname = url, iorange = iorange, remainder = remainder )
9287  call split( str = iorange, carray = carray, sep = gt_equal )
9288  timevar_name = carray(1)
9289  deallocate( carray )
9290  time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
9291  call historygetint1( file = file, &
9292  & varname = varname, array = array, &
9293  & range = time_range, quiet = quiet, &
9294  & flag_mpi_split = flag_mpi_split, &
9295  & returned_time = returned_time, &
9296  & flag_time_exist = flag_time_exist, &
9297  & err = err )
9298 end subroutine historygetint1timer
9299 subroutine historygetint2timer( &
9300  & file, varname, array, time, &
9301  & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
9302  use dc_string, only: tochar, split
9303  use dc_types, only: string, dp, sp
9304  use dc_trace, only: dbgmessage
9305  use dc_url, only: url_chop_iorange, gt_equal
9306  use dc_present, only: present_and_true
9307  implicit none
9308  character(*), intent(in):: file, varname
9309  real(SP), intent(in):: time
9310  logical, intent(in), optional:: quiet
9311  integer, intent(out) :: array(:,:)
9312  logical, intent(in), optional:: flag_mpi_split
9313  real(DP), intent(out), optional:: returned_time
9314  logical, intent(out), optional:: flag_time_exist
9315  logical, intent(out), optional:: err
9316  character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
9317  character(STRING), pointer:: carray (:)
9318  character(STRING):: tname
9319  character(*), parameter :: subname = "HistoryGetInt2TimeR"
9320  interface
9321  subroutine historygetint2(&
9322  & file, varname, array, range, quiet, &
9323  & flag_mpi_split, returned_time, flag_time_exist, err)
9324  use dc_types, only: dp
9325  character(*), intent(in):: file
9326  character(*), intent(in):: varname
9327  character(*), intent(in), optional:: range
9328  logical, intent(in), optional:: quiet
9329  logical, intent(in), optional:: flag_mpi_split
9330  real(DP), intent(out), optional:: returned_time
9331  logical, intent(out), optional:: flag_time_exist
9332  logical, intent(out), optional:: err
9333  integer, intent(out) :: array(:,:)
9334  end subroutine historygetint2
9335  end interface
9336  interface
9337  subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
9338  character(*), intent(in):: file
9339  character(*), intent(in):: varname
9340  character(*), intent(out):: url
9341  character(*), intent(in), optional:: range
9342  logical, intent(out), optional:: flag_time_exist
9343  character(*), intent(out), optional:: time_name
9344  logical, intent(out), optional:: err
9345  end subroutine lookup_growable_url
9346  end interface
9347  interface
9348  function file_rename_mpi( file ) result(result)
9349  use dc_types, only: string
9350  character(*), intent(in):: file
9351  character(STRING):: result
9352  end function file_rename_mpi
9353  end interface
9354  continue
9355  file_work = file
9356  if ( present_and_true( flag_mpi_split ) ) &
9357  & file_work = file_rename_mpi( file_work )
9358  call lookup_growable_url(file = file_work, varname = varname, &
9359  & url = url, &
9360  & flag_time_exist = flag_time_exist, time_name = tname, err = err)
9361  call url_chop_iorange( &
9362  & fullname = url, iorange = iorange, remainder = remainder )
9363  call split( str = iorange, carray = carray, sep = gt_equal )
9364  timevar_name = carray(1)
9365  deallocate( carray )
9366  time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
9367  call historygetint2( file = file, &
9368  & varname = varname, array = array, &
9369  & range = time_range, quiet = quiet, &
9370  & flag_mpi_split = flag_mpi_split, &
9371  & returned_time = returned_time, &
9372  & flag_time_exist = flag_time_exist, &
9373  & err = err )
9374 end subroutine historygetint2timer
9375 subroutine historygetint3timer( &
9376  & file, varname, array, time, &
9377  & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
9378  use dc_string, only: tochar, split
9379  use dc_types, only: string, dp, sp
9380  use dc_trace, only: dbgmessage
9381  use dc_url, only: url_chop_iorange, gt_equal
9382  use dc_present, only: present_and_true
9383  implicit none
9384  character(*), intent(in):: file, varname
9385  real(SP), intent(in):: time
9386  logical, intent(in), optional:: quiet
9387  integer, intent(out) :: array(:,:,:)
9388  logical, intent(in), optional:: flag_mpi_split
9389  real(DP), intent(out), optional:: returned_time
9390  logical, intent(out), optional:: flag_time_exist
9391  logical, intent(out), optional:: err
9392  character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
9393  character(STRING), pointer:: carray (:)
9394  character(STRING):: tname
9395  character(*), parameter :: subname = "HistoryGetInt3TimeR"
9396  interface
9397  subroutine historygetint3(&
9398  & file, varname, array, range, quiet, &
9399  & flag_mpi_split, returned_time, flag_time_exist, err)
9400  use dc_types, only: dp
9401  character(*), intent(in):: file
9402  character(*), intent(in):: varname
9403  character(*), intent(in), optional:: range
9404  logical, intent(in), optional:: quiet
9405  logical, intent(in), optional:: flag_mpi_split
9406  real(DP), intent(out), optional:: returned_time
9407  logical, intent(out), optional:: flag_time_exist
9408  logical, intent(out), optional:: err
9409  integer, intent(out) :: array(:,:,:)
9410  end subroutine historygetint3
9411  end interface
9412  interface
9413  subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
9414  character(*), intent(in):: file
9415  character(*), intent(in):: varname
9416  character(*), intent(out):: url
9417  character(*), intent(in), optional:: range
9418  logical, intent(out), optional:: flag_time_exist
9419  character(*), intent(out), optional:: time_name
9420  logical, intent(out), optional:: err
9421  end subroutine lookup_growable_url
9422  end interface
9423  interface
9424  function file_rename_mpi( file ) result(result)
9425  use dc_types, only: string
9426  character(*), intent(in):: file
9427  character(STRING):: result
9428  end function file_rename_mpi
9429  end interface
9430  continue
9431  file_work = file
9432  if ( present_and_true( flag_mpi_split ) ) &
9433  & file_work = file_rename_mpi( file_work )
9434  call lookup_growable_url(file = file_work, varname = varname, &
9435  & url = url, &
9436  & flag_time_exist = flag_time_exist, time_name = tname, err = err)
9437  call url_chop_iorange( &
9438  & fullname = url, iorange = iorange, remainder = remainder )
9439  call split( str = iorange, carray = carray, sep = gt_equal )
9440  timevar_name = carray(1)
9441  deallocate( carray )
9442  time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
9443  call historygetint3( file = file, &
9444  & varname = varname, array = array, &
9445  & range = time_range, quiet = quiet, &
9446  & flag_mpi_split = flag_mpi_split, &
9447  & returned_time = returned_time, &
9448  & flag_time_exist = flag_time_exist, &
9449  & err = err )
9450 end subroutine historygetint3timer
9451 subroutine historygetint4timer( &
9452  & file, varname, array, time, &
9453  & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
9454  use dc_string, only: tochar, split
9455  use dc_types, only: string, dp, sp
9456  use dc_trace, only: dbgmessage
9457  use dc_url, only: url_chop_iorange, gt_equal
9458  use dc_present, only: present_and_true
9459  implicit none
9460  character(*), intent(in):: file, varname
9461  real(SP), intent(in):: time
9462  logical, intent(in), optional:: quiet
9463  integer, intent(out) :: array(:,:,:,:)
9464  logical, intent(in), optional:: flag_mpi_split
9465  real(DP), intent(out), optional:: returned_time
9466  logical, intent(out), optional:: flag_time_exist
9467  logical, intent(out), optional:: err
9468  character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
9469  character(STRING), pointer:: carray (:)
9470  character(STRING):: tname
9471  character(*), parameter :: subname = "HistoryGetInt4TimeR"
9472  interface
9473  subroutine historygetint4(&
9474  & file, varname, array, range, quiet, &
9475  & flag_mpi_split, returned_time, flag_time_exist, err)
9476  use dc_types, only: dp
9477  character(*), intent(in):: file
9478  character(*), intent(in):: varname
9479  character(*), intent(in), optional:: range
9480  logical, intent(in), optional:: quiet
9481  logical, intent(in), optional:: flag_mpi_split
9482  real(DP), intent(out), optional:: returned_time
9483  logical, intent(out), optional:: flag_time_exist
9484  logical, intent(out), optional:: err
9485  integer, intent(out) :: array(:,:,:,:)
9486  end subroutine historygetint4
9487  end interface
9488  interface
9489  subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
9490  character(*), intent(in):: file
9491  character(*), intent(in):: varname
9492  character(*), intent(out):: url
9493  character(*), intent(in), optional:: range
9494  logical, intent(out), optional:: flag_time_exist
9495  character(*), intent(out), optional:: time_name
9496  logical, intent(out), optional:: err
9497  end subroutine lookup_growable_url
9498  end interface
9499  interface
9500  function file_rename_mpi( file ) result(result)
9501  use dc_types, only: string
9502  character(*), intent(in):: file
9503  character(STRING):: result
9504  end function file_rename_mpi
9505  end interface
9506  continue
9507  file_work = file
9508  if ( present_and_true( flag_mpi_split ) ) &
9509  & file_work = file_rename_mpi( file_work )
9510  call lookup_growable_url(file = file_work, varname = varname, &
9511  & url = url, &
9512  & flag_time_exist = flag_time_exist, time_name = tname, err = err)
9513  call url_chop_iorange( &
9514  & fullname = url, iorange = iorange, remainder = remainder )
9515  call split( str = iorange, carray = carray, sep = gt_equal )
9516  timevar_name = carray(1)
9517  deallocate( carray )
9518  time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
9519  call historygetint4( file = file, &
9520  & varname = varname, array = array, &
9521  & range = time_range, quiet = quiet, &
9522  & flag_mpi_split = flag_mpi_split, &
9523  & returned_time = returned_time, &
9524  & flag_time_exist = flag_time_exist, &
9525  & err = err )
9526 end subroutine historygetint4timer
9527 subroutine historygetint5timer( &
9528  & file, varname, array, time, &
9529  & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
9530  use dc_string, only: tochar, split
9531  use dc_types, only: string, dp, sp
9532  use dc_trace, only: dbgmessage
9533  use dc_url, only: url_chop_iorange, gt_equal
9534  use dc_present, only: present_and_true
9535  implicit none
9536  character(*), intent(in):: file, varname
9537  real(SP), intent(in):: time
9538  logical, intent(in), optional:: quiet
9539  integer, intent(out) :: array(:,:,:,:,:)
9540  logical, intent(in), optional:: flag_mpi_split
9541  real(DP), intent(out), optional:: returned_time
9542  logical, intent(out), optional:: flag_time_exist
9543  logical, intent(out), optional:: err
9544  character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
9545  character(STRING), pointer:: carray (:)
9546  character(STRING):: tname
9547  character(*), parameter :: subname = "HistoryGetInt5TimeR"
9548  interface
9549  subroutine historygetint5(&
9550  & file, varname, array, range, quiet, &
9551  & flag_mpi_split, returned_time, flag_time_exist, err)
9552  use dc_types, only: dp
9553  character(*), intent(in):: file
9554  character(*), intent(in):: varname
9555  character(*), intent(in), optional:: range
9556  logical, intent(in), optional:: quiet
9557  logical, intent(in), optional:: flag_mpi_split
9558  real(DP), intent(out), optional:: returned_time
9559  logical, intent(out), optional:: flag_time_exist
9560  logical, intent(out), optional:: err
9561  integer, intent(out) :: array(:,:,:,:,:)
9562  end subroutine historygetint5
9563  end interface
9564  interface
9565  subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
9566  character(*), intent(in):: file
9567  character(*), intent(in):: varname
9568  character(*), intent(out):: url
9569  character(*), intent(in), optional:: range
9570  logical, intent(out), optional:: flag_time_exist
9571  character(*), intent(out), optional:: time_name
9572  logical, intent(out), optional:: err
9573  end subroutine lookup_growable_url
9574  end interface
9575  interface
9576  function file_rename_mpi( file ) result(result)
9577  use dc_types, only: string
9578  character(*), intent(in):: file
9579  character(STRING):: result
9580  end function file_rename_mpi
9581  end interface
9582  continue
9583  file_work = file
9584  if ( present_and_true( flag_mpi_split ) ) &
9585  & file_work = file_rename_mpi( file_work )
9586  call lookup_growable_url(file = file_work, varname = varname, &
9587  & url = url, &
9588  & flag_time_exist = flag_time_exist, time_name = tname, err = err)
9589  call url_chop_iorange( &
9590  & fullname = url, iorange = iorange, remainder = remainder )
9591  call split( str = iorange, carray = carray, sep = gt_equal )
9592  timevar_name = carray(1)
9593  deallocate( carray )
9594  time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
9595  call historygetint5( file = file, &
9596  & varname = varname, array = array, &
9597  & range = time_range, quiet = quiet, &
9598  & flag_mpi_split = flag_mpi_split, &
9599  & returned_time = returned_time, &
9600  & flag_time_exist = flag_time_exist, &
9601  & err = err )
9602 end subroutine historygetint5timer
9603 subroutine historygetint6timer( &
9604  & file, varname, array, time, &
9605  & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
9606  use dc_string, only: tochar, split
9607  use dc_types, only: string, dp, sp
9608  use dc_trace, only: dbgmessage
9609  use dc_url, only: url_chop_iorange, gt_equal
9610  use dc_present, only: present_and_true
9611  implicit none
9612  character(*), intent(in):: file, varname
9613  real(SP), intent(in):: time
9614  logical, intent(in), optional:: quiet
9615  integer, intent(out) :: array(:,:,:,:,:,:)
9616  logical, intent(in), optional:: flag_mpi_split
9617  real(DP), intent(out), optional:: returned_time
9618  logical, intent(out), optional:: flag_time_exist
9619  logical, intent(out), optional:: err
9620  character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
9621  character(STRING), pointer:: carray (:)
9622  character(STRING):: tname
9623  character(*), parameter :: subname = "HistoryGetInt6TimeR"
9624  interface
9625  subroutine historygetint6(&
9626  & file, varname, array, range, quiet, &
9627  & flag_mpi_split, returned_time, flag_time_exist, err)
9628  use dc_types, only: dp
9629  character(*), intent(in):: file
9630  character(*), intent(in):: varname
9631  character(*), intent(in), optional:: range
9632  logical, intent(in), optional:: quiet
9633  logical, intent(in), optional:: flag_mpi_split
9634  real(DP), intent(out), optional:: returned_time
9635  logical, intent(out), optional:: flag_time_exist
9636  logical, intent(out), optional:: err
9637  integer, intent(out) :: array(:,:,:,:,:,:)
9638  end subroutine historygetint6
9639  end interface
9640  interface
9641  subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
9642  character(*), intent(in):: file
9643  character(*), intent(in):: varname
9644  character(*), intent(out):: url
9645  character(*), intent(in), optional:: range
9646  logical, intent(out), optional:: flag_time_exist
9647  character(*), intent(out), optional:: time_name
9648  logical, intent(out), optional:: err
9649  end subroutine lookup_growable_url
9650  end interface
9651  interface
9652  function file_rename_mpi( file ) result(result)
9653  use dc_types, only: string
9654  character(*), intent(in):: file
9655  character(STRING):: result
9656  end function file_rename_mpi
9657  end interface
9658  continue
9659  file_work = file
9660  if ( present_and_true( flag_mpi_split ) ) &
9661  & file_work = file_rename_mpi( file_work )
9662  call lookup_growable_url(file = file_work, varname = varname, &
9663  & url = url, &
9664  & flag_time_exist = flag_time_exist, time_name = tname, err = err)
9665  call url_chop_iorange( &
9666  & fullname = url, iorange = iorange, remainder = remainder )
9667  call split( str = iorange, carray = carray, sep = gt_equal )
9668  timevar_name = carray(1)
9669  deallocate( carray )
9670  time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
9671  call historygetint6( file = file, &
9672  & varname = varname, array = array, &
9673  & range = time_range, quiet = quiet, &
9674  & flag_mpi_split = flag_mpi_split, &
9675  & returned_time = returned_time, &
9676  & flag_time_exist = flag_time_exist, &
9677  & err = err )
9678 end subroutine historygetint6timer
9679 subroutine historygetint7timer( &
9680  & file, varname, array, time, &
9681  & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
9682  use dc_string, only: tochar, split
9683  use dc_types, only: string, dp, sp
9684  use dc_trace, only: dbgmessage
9685  use dc_url, only: url_chop_iorange, gt_equal
9686  use dc_present, only: present_and_true
9687  implicit none
9688  character(*), intent(in):: file, varname
9689  real(SP), intent(in):: time
9690  logical, intent(in), optional:: quiet
9691  integer, intent(out) :: array(:,:,:,:,:,:,:)
9692  logical, intent(in), optional:: flag_mpi_split
9693  real(DP), intent(out), optional:: returned_time
9694  logical, intent(out), optional:: flag_time_exist
9695  logical, intent(out), optional:: err
9696  character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
9697  character(STRING), pointer:: carray (:)
9698  character(STRING):: tname
9699  character(*), parameter :: subname = "HistoryGetInt7TimeR"
9700  interface
9701  subroutine historygetint7(&
9702  & file, varname, array, range, quiet, &
9703  & flag_mpi_split, returned_time, flag_time_exist, err)
9704  use dc_types, only: dp
9705  character(*), intent(in):: file
9706  character(*), intent(in):: varname
9707  character(*), intent(in), optional:: range
9708  logical, intent(in), optional:: quiet
9709  logical, intent(in), optional:: flag_mpi_split
9710  real(DP), intent(out), optional:: returned_time
9711  logical, intent(out), optional:: flag_time_exist
9712  logical, intent(out), optional:: err
9713  integer, intent(out) :: array(:,:,:,:,:,:,:)
9714  end subroutine historygetint7
9715  end interface
9716  interface
9717  subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
9718  character(*), intent(in):: file
9719  character(*), intent(in):: varname
9720  character(*), intent(out):: url
9721  character(*), intent(in), optional:: range
9722  logical, intent(out), optional:: flag_time_exist
9723  character(*), intent(out), optional:: time_name
9724  logical, intent(out), optional:: err
9725  end subroutine lookup_growable_url
9726  end interface
9727  interface
9728  function file_rename_mpi( file ) result(result)
9729  use dc_types, only: string
9730  character(*), intent(in):: file
9731  character(STRING):: result
9732  end function file_rename_mpi
9733  end interface
9734  continue
9735  file_work = file
9736  if ( present_and_true( flag_mpi_split ) ) &
9737  & file_work = file_rename_mpi( file_work )
9738  call lookup_growable_url(file = file_work, varname = varname, &
9739  & url = url, &
9740  & flag_time_exist = flag_time_exist, time_name = tname, err = err)
9741  call url_chop_iorange( &
9742  & fullname = url, iorange = iorange, remainder = remainder )
9743  call split( str = iorange, carray = carray, sep = gt_equal )
9744  timevar_name = carray(1)
9745  deallocate( carray )
9746  time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
9747  call historygetint7( file = file, &
9748  & varname = varname, array = array, &
9749  & range = time_range, quiet = quiet, &
9750  & flag_mpi_split = flag_mpi_split, &
9751  & returned_time = returned_time, &
9752  & flag_time_exist = flag_time_exist, &
9753  & err = err )
9754 end subroutine historygetint7timer
9755 subroutine historygetint0pointertimer( &
9756  & file, varname, array, time, &
9757  & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
9758  use dc_string, only: tochar, split
9759  use dc_types, only: string, dp, sp
9760  use dc_trace, only: dbgmessage
9761  use dc_url, only: url_chop_iorange, gt_equal
9762  use dc_present, only: present_and_true
9763  implicit none
9764  character(*), intent(in):: file, varname
9765  real(SP), intent(in):: time
9766  logical, intent(in), optional:: quiet
9767  integer, pointer :: array
9768  logical, intent(in), optional:: flag_mpi_split
9769  real(DP), intent(out), optional:: returned_time
9770  logical, intent(out), optional:: flag_time_exist
9771  logical, intent(out), optional:: err
9772  character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
9773  character(STRING), pointer:: carray (:)
9774  character(STRING):: tname
9775  character(*), parameter :: subname = "HistoryGetInt0TimeR"
9776  interface
9777  subroutine historygetint0pointer(&
9778  & file, varname, array, range, quiet, &
9779  & flag_mpi_split, returned_time, flag_time_exist, err)
9780  use dc_types, only: dp
9781  character(*), intent(in):: file
9782  character(*), intent(in):: varname
9783  character(*), intent(in), optional:: range
9784  logical, intent(in), optional:: quiet
9785  logical, intent(in), optional:: flag_mpi_split
9786  real(DP), intent(out), optional:: returned_time
9787  logical, intent(out), optional:: flag_time_exist
9788  logical, intent(out), optional:: err
9789  integer, pointer :: array
9790  end subroutine historygetint0pointer
9791  end interface
9792  interface
9793  subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
9794  character(*), intent(in):: file
9795  character(*), intent(in):: varname
9796  character(*), intent(out):: url
9797  character(*), intent(in), optional:: range
9798  logical, intent(out), optional:: flag_time_exist
9799  character(*), intent(out), optional:: time_name
9800  logical, intent(out), optional:: err
9801  end subroutine lookup_growable_url
9802  end interface
9803  interface
9804  function file_rename_mpi( file ) result(result)
9805  use dc_types, only: string
9806  character(*), intent(in):: file
9807  character(STRING):: result
9808  end function file_rename_mpi
9809  end interface
9810  continue
9811  file_work = file
9812  if ( present_and_true( flag_mpi_split ) ) &
9813  & file_work = file_rename_mpi( file_work )
9814  call lookup_growable_url(file = file_work, varname = varname, &
9815  & url = url, &
9816  & flag_time_exist = flag_time_exist, time_name = tname, err = err)
9817  call url_chop_iorange( &
9818  & fullname = url, iorange = iorange, remainder = remainder )
9819  call split( str = iorange, carray = carray, sep = gt_equal )
9820  timevar_name = carray(1)
9821  deallocate( carray )
9822  time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
9823  call historygetint0pointer( file = file, &
9824  & varname = varname, array = array, &
9825  & range = time_range, quiet = quiet, &
9826  & flag_mpi_split = flag_mpi_split, &
9827  & returned_time = returned_time, &
9828  & flag_time_exist = flag_time_exist, &
9829  & err = err )
9830 end subroutine historygetint0pointertimer
9831 subroutine historygetint1pointertimer( &
9832  & file, varname, array, time, &
9833  & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
9834  use dc_string, only: tochar, split
9835  use dc_types, only: string, dp, sp
9836  use dc_trace, only: dbgmessage
9837  use dc_url, only: url_chop_iorange, gt_equal
9838  use dc_present, only: present_and_true
9839  implicit none
9840  character(*), intent(in):: file, varname
9841  real(SP), intent(in):: time
9842  logical, intent(in), optional:: quiet
9843  integer, pointer :: array(:)
9844  logical, intent(in), optional:: flag_mpi_split
9845  real(DP), intent(out), optional:: returned_time
9846  logical, intent(out), optional:: flag_time_exist
9847  logical, intent(out), optional:: err
9848  character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
9849  character(STRING), pointer:: carray (:)
9850  character(STRING):: tname
9851  character(*), parameter :: subname = "HistoryGetInt1TimeR"
9852  interface
9853  subroutine historygetint1pointer(&
9854  & file, varname, array, range, quiet, &
9855  & flag_mpi_split, returned_time, flag_time_exist, err)
9856  use dc_types, only: dp
9857  character(*), intent(in):: file
9858  character(*), intent(in):: varname
9859  character(*), intent(in), optional:: range
9860  logical, intent(in), optional:: quiet
9861  logical, intent(in), optional:: flag_mpi_split
9862  real(DP), intent(out), optional:: returned_time
9863  logical, intent(out), optional:: flag_time_exist
9864  logical, intent(out), optional:: err
9865  integer, pointer :: array(:)
9866  end subroutine historygetint1pointer
9867  end interface
9868  interface
9869  subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
9870  character(*), intent(in):: file
9871  character(*), intent(in):: varname
9872  character(*), intent(out):: url
9873  character(*), intent(in), optional:: range
9874  logical, intent(out), optional:: flag_time_exist
9875  character(*), intent(out), optional:: time_name
9876  logical, intent(out), optional:: err
9877  end subroutine lookup_growable_url
9878  end interface
9879  interface
9880  function file_rename_mpi( file ) result(result)
9881  use dc_types, only: string
9882  character(*), intent(in):: file
9883  character(STRING):: result
9884  end function file_rename_mpi
9885  end interface
9886  continue
9887  file_work = file
9888  if ( present_and_true( flag_mpi_split ) ) &
9889  & file_work = file_rename_mpi( file_work )
9890  call lookup_growable_url(file = file_work, varname = varname, &
9891  & url = url, &
9892  & flag_time_exist = flag_time_exist, time_name = tname, err = err)
9893  call url_chop_iorange( &
9894  & fullname = url, iorange = iorange, remainder = remainder )
9895  call split( str = iorange, carray = carray, sep = gt_equal )
9896  timevar_name = carray(1)
9897  deallocate( carray )
9898  time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
9899  call historygetint1pointer( file = file, &
9900  & varname = varname, array = array, &
9901  & range = time_range, quiet = quiet, &
9902  & flag_mpi_split = flag_mpi_split, &
9903  & returned_time = returned_time, &
9904  & flag_time_exist = flag_time_exist, &
9905  & err = err )
9906 end subroutine historygetint1pointertimer
9907 subroutine historygetint2pointertimer( &
9908  & file, varname, array, time, &
9909  & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
9910  use dc_string, only: tochar, split
9911  use dc_types, only: string, dp, sp
9912  use dc_trace, only: dbgmessage
9913  use dc_url, only: url_chop_iorange, gt_equal
9914  use dc_present, only: present_and_true
9915  implicit none
9916  character(*), intent(in):: file, varname
9917  real(SP), intent(in):: time
9918  logical, intent(in), optional:: quiet
9919  integer, pointer :: array(:,:)
9920  logical, intent(in), optional:: flag_mpi_split
9921  real(DP), intent(out), optional:: returned_time
9922  logical, intent(out), optional:: flag_time_exist
9923  logical, intent(out), optional:: err
9924  character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
9925  character(STRING), pointer:: carray (:)
9926  character(STRING):: tname
9927  character(*), parameter :: subname = "HistoryGetInt2TimeR"
9928  interface
9929  subroutine historygetint2pointer(&
9930  & file, varname, array, range, quiet, &
9931  & flag_mpi_split, returned_time, flag_time_exist, err)
9932  use dc_types, only: dp
9933  character(*), intent(in):: file
9934  character(*), intent(in):: varname
9935  character(*), intent(in), optional:: range
9936  logical, intent(in), optional:: quiet
9937  logical, intent(in), optional:: flag_mpi_split
9938  real(DP), intent(out), optional:: returned_time
9939  logical, intent(out), optional:: flag_time_exist
9940  logical, intent(out), optional:: err
9941  integer, pointer :: array(:,:)
9942  end subroutine historygetint2pointer
9943  end interface
9944  interface
9945  subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
9946  character(*), intent(in):: file
9947  character(*), intent(in):: varname
9948  character(*), intent(out):: url
9949  character(*), intent(in), optional:: range
9950  logical, intent(out), optional:: flag_time_exist
9951  character(*), intent(out), optional:: time_name
9952  logical, intent(out), optional:: err
9953  end subroutine lookup_growable_url
9954  end interface
9955  interface
9956  function file_rename_mpi( file ) result(result)
9957  use dc_types, only: string
9958  character(*), intent(in):: file
9959  character(STRING):: result
9960  end function file_rename_mpi
9961  end interface
9962  continue
9963  file_work = file
9964  if ( present_and_true( flag_mpi_split ) ) &
9965  & file_work = file_rename_mpi( file_work )
9966  call lookup_growable_url(file = file_work, varname = varname, &
9967  & url = url, &
9968  & flag_time_exist = flag_time_exist, time_name = tname, err = err)
9969  call url_chop_iorange( &
9970  & fullname = url, iorange = iorange, remainder = remainder )
9971  call split( str = iorange, carray = carray, sep = gt_equal )
9972  timevar_name = carray(1)
9973  deallocate( carray )
9974  time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
9975  call historygetint2pointer( file = file, &
9976  & varname = varname, array = array, &
9977  & range = time_range, quiet = quiet, &
9978  & flag_mpi_split = flag_mpi_split, &
9979  & returned_time = returned_time, &
9980  & flag_time_exist = flag_time_exist, &
9981  & err = err )
9982 end subroutine historygetint2pointertimer
9983 subroutine historygetint3pointertimer( &
9984  & file, varname, array, time, &
9985  & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
9986  use dc_string, only: tochar, split
9987  use dc_types, only: string, dp, sp
9988  use dc_trace, only: dbgmessage
9989  use dc_url, only: url_chop_iorange, gt_equal
9990  use dc_present, only: present_and_true
9991  implicit none
9992  character(*), intent(in):: file, varname
9993  real(SP), intent(in):: time
9994  logical, intent(in), optional:: quiet
9995  integer, pointer :: array(:,:,:)
9996  logical, intent(in), optional:: flag_mpi_split
9997  real(DP), intent(out), optional:: returned_time
9998  logical, intent(out), optional:: flag_time_exist
9999  logical, intent(out), optional:: err
10000  character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
10001  character(STRING), pointer:: carray (:)
10002  character(STRING):: tname
10003  character(*), parameter :: subname = "HistoryGetInt3TimeR"
10004  interface
10005  subroutine historygetint3pointer(&
10006  & file, varname, array, range, quiet, &
10007  & flag_mpi_split, returned_time, flag_time_exist, err)
10008  use dc_types, only: dp
10009  character(*), intent(in):: file
10010  character(*), intent(in):: varname
10011  character(*), intent(in), optional:: range
10012  logical, intent(in), optional:: quiet
10013  logical, intent(in), optional:: flag_mpi_split
10014  real(DP), intent(out), optional:: returned_time
10015  logical, intent(out), optional:: flag_time_exist
10016  logical, intent(out), optional:: err
10017  integer, pointer :: array(:,:,:)
10018  end subroutine historygetint3pointer
10019  end interface
10020  interface
10021  subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
10022  character(*), intent(in):: file
10023  character(*), intent(in):: varname
10024  character(*), intent(out):: url
10025  character(*), intent(in), optional:: range
10026  logical, intent(out), optional:: flag_time_exist
10027  character(*), intent(out), optional:: time_name
10028  logical, intent(out), optional:: err
10029  end subroutine lookup_growable_url
10030  end interface
10031  interface
10032  function file_rename_mpi( file ) result(result)
10033  use dc_types, only: string
10034  character(*), intent(in):: file
10035  character(STRING):: result
10036  end function file_rename_mpi
10037  end interface
10038  continue
10039  file_work = file
10040  if ( present_and_true( flag_mpi_split ) ) &
10041  & file_work = file_rename_mpi( file_work )
10042  call lookup_growable_url(file = file_work, varname = varname, &
10043  & url = url, &
10044  & flag_time_exist = flag_time_exist, time_name = tname, err = err)
10045  call url_chop_iorange( &
10046  & fullname = url, iorange = iorange, remainder = remainder )
10047  call split( str = iorange, carray = carray, sep = gt_equal )
10048  timevar_name = carray(1)
10049  deallocate( carray )
10050  time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
10051  call historygetint3pointer( file = file, &
10052  & varname = varname, array = array, &
10053  & range = time_range, quiet = quiet, &
10054  & flag_mpi_split = flag_mpi_split, &
10055  & returned_time = returned_time, &
10056  & flag_time_exist = flag_time_exist, &
10057  & err = err )
10058 end subroutine historygetint3pointertimer
10059 subroutine historygetint4pointertimer( &
10060  & file, varname, array, time, &
10061  & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
10062  use dc_string, only: tochar, split
10063  use dc_types, only: string, dp, sp
10064  use dc_trace, only: dbgmessage
10065  use dc_url, only: url_chop_iorange, gt_equal
10066  use dc_present, only: present_and_true
10067  implicit none
10068  character(*), intent(in):: file, varname
10069  real(SP), intent(in):: time
10070  logical, intent(in), optional:: quiet
10071  integer, pointer :: array(:,:,:,:)
10072  logical, intent(in), optional:: flag_mpi_split
10073  real(DP), intent(out), optional:: returned_time
10074  logical, intent(out), optional:: flag_time_exist
10075  logical, intent(out), optional:: err
10076  character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
10077  character(STRING), pointer:: carray (:)
10078  character(STRING):: tname
10079  character(*), parameter :: subname = "HistoryGetInt4TimeR"
10080  interface
10081  subroutine historygetint4pointer(&
10082  & file, varname, array, range, quiet, &
10083  & flag_mpi_split, returned_time, flag_time_exist, err)
10084  use dc_types, only: dp
10085  character(*), intent(in):: file
10086  character(*), intent(in):: varname
10087  character(*), intent(in), optional:: range
10088  logical, intent(in), optional:: quiet
10089  logical, intent(in), optional:: flag_mpi_split
10090  real(DP), intent(out), optional:: returned_time
10091  logical, intent(out), optional:: flag_time_exist
10092  logical, intent(out), optional:: err
10093  integer, pointer :: array(:,:,:,:)
10094  end subroutine historygetint4pointer
10095  end interface
10096  interface
10097  subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
10098  character(*), intent(in):: file
10099  character(*), intent(in):: varname
10100  character(*), intent(out):: url
10101  character(*), intent(in), optional:: range
10102  logical, intent(out), optional:: flag_time_exist
10103  character(*), intent(out), optional:: time_name
10104  logical, intent(out), optional:: err
10105  end subroutine lookup_growable_url
10106  end interface
10107  interface
10108  function file_rename_mpi( file ) result(result)
10109  use dc_types, only: string
10110  character(*), intent(in):: file
10111  character(STRING):: result
10112  end function file_rename_mpi
10113  end interface
10114  continue
10115  file_work = file
10116  if ( present_and_true( flag_mpi_split ) ) &
10117  & file_work = file_rename_mpi( file_work )
10118  call lookup_growable_url(file = file_work, varname = varname, &
10119  & url = url, &
10120  & flag_time_exist = flag_time_exist, time_name = tname, err = err)
10121  call url_chop_iorange( &
10122  & fullname = url, iorange = iorange, remainder = remainder )
10123  call split( str = iorange, carray = carray, sep = gt_equal )
10124  timevar_name = carray(1)
10125  deallocate( carray )
10126  time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
10127  call historygetint4pointer( file = file, &
10128  & varname = varname, array = array, &
10129  & range = time_range, quiet = quiet, &
10130  & flag_mpi_split = flag_mpi_split, &
10131  & returned_time = returned_time, &
10132  & flag_time_exist = flag_time_exist, &
10133  & err = err )
10134 end subroutine historygetint4pointertimer
10135 subroutine historygetint5pointertimer( &
10136  & file, varname, array, time, &
10137  & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
10138  use dc_string, only: tochar, split
10139  use dc_types, only: string, dp, sp
10140  use dc_trace, only: dbgmessage
10141  use dc_url, only: url_chop_iorange, gt_equal
10142  use dc_present, only: present_and_true
10143  implicit none
10144  character(*), intent(in):: file, varname
10145  real(SP), intent(in):: time
10146  logical, intent(in), optional:: quiet
10147  integer, pointer :: array(:,:,:,:,:)
10148  logical, intent(in), optional:: flag_mpi_split
10149  real(DP), intent(out), optional:: returned_time
10150  logical, intent(out), optional:: flag_time_exist
10151  logical, intent(out), optional:: err
10152  character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
10153  character(STRING), pointer:: carray (:)
10154  character(STRING):: tname
10155  character(*), parameter :: subname = "HistoryGetInt5TimeR"
10156  interface
10157  subroutine historygetint5pointer(&
10158  & file, varname, array, range, quiet, &
10159  & flag_mpi_split, returned_time, flag_time_exist, err)
10160  use dc_types, only: dp
10161  character(*), intent(in):: file
10162  character(*), intent(in):: varname
10163  character(*), intent(in), optional:: range
10164  logical, intent(in), optional:: quiet
10165  logical, intent(in), optional:: flag_mpi_split
10166  real(DP), intent(out), optional:: returned_time
10167  logical, intent(out), optional:: flag_time_exist
10168  logical, intent(out), optional:: err
10169  integer, pointer :: array(:,:,:,:,:)
10170  end subroutine historygetint5pointer
10171  end interface
10172  interface
10173  subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
10174  character(*), intent(in):: file
10175  character(*), intent(in):: varname
10176  character(*), intent(out):: url
10177  character(*), intent(in), optional:: range
10178  logical, intent(out), optional:: flag_time_exist
10179  character(*), intent(out), optional:: time_name
10180  logical, intent(out), optional:: err
10181  end subroutine lookup_growable_url
10182  end interface
10183  interface
10184  function file_rename_mpi( file ) result(result)
10185  use dc_types, only: string
10186  character(*), intent(in):: file
10187  character(STRING):: result
10188  end function file_rename_mpi
10189  end interface
10190  continue
10191  file_work = file
10192  if ( present_and_true( flag_mpi_split ) ) &
10193  & file_work = file_rename_mpi( file_work )
10194  call lookup_growable_url(file = file_work, varname = varname, &
10195  & url = url, &
10196  & flag_time_exist = flag_time_exist, time_name = tname, err = err)
10197  call url_chop_iorange( &
10198  & fullname = url, iorange = iorange, remainder = remainder )
10199  call split( str = iorange, carray = carray, sep = gt_equal )
10200  timevar_name = carray(1)
10201  deallocate( carray )
10202  time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
10203  call historygetint5pointer( file = file, &
10204  & varname = varname, array = array, &
10205  & range = time_range, quiet = quiet, &
10206  & flag_mpi_split = flag_mpi_split, &
10207  & returned_time = returned_time, &
10208  & flag_time_exist = flag_time_exist, &
10209  & err = err )
10210 end subroutine historygetint5pointertimer
10211 subroutine historygetint6pointertimer( &
10212  & file, varname, array, time, &
10213  & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
10214  use dc_string, only: tochar, split
10215  use dc_types, only: string, dp, sp
10216  use dc_trace, only: dbgmessage
10217  use dc_url, only: url_chop_iorange, gt_equal
10218  use dc_present, only: present_and_true
10219  implicit none
10220  character(*), intent(in):: file, varname
10221  real(SP), intent(in):: time
10222  logical, intent(in), optional:: quiet
10223  integer, pointer :: array(:,:,:,:,:,:)
10224  logical, intent(in), optional:: flag_mpi_split
10225  real(DP), intent(out), optional:: returned_time
10226  logical, intent(out), optional:: flag_time_exist
10227  logical, intent(out), optional:: err
10228  character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
10229  character(STRING), pointer:: carray (:)
10230  character(STRING):: tname
10231  character(*), parameter :: subname = "HistoryGetInt6TimeR"
10232  interface
10233  subroutine historygetint6pointer(&
10234  & file, varname, array, range, quiet, &
10235  & flag_mpi_split, returned_time, flag_time_exist, err)
10236  use dc_types, only: dp
10237  character(*), intent(in):: file
10238  character(*), intent(in):: varname
10239  character(*), intent(in), optional:: range
10240  logical, intent(in), optional:: quiet
10241  logical, intent(in), optional:: flag_mpi_split
10242  real(DP), intent(out), optional:: returned_time
10243  logical, intent(out), optional:: flag_time_exist
10244  logical, intent(out), optional:: err
10245  integer, pointer :: array(:,:,:,:,:,:)
10246  end subroutine historygetint6pointer
10247  end interface
10248  interface
10249  subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
10250  character(*), intent(in):: file
10251  character(*), intent(in):: varname
10252  character(*), intent(out):: url
10253  character(*), intent(in), optional:: range
10254  logical, intent(out), optional:: flag_time_exist
10255  character(*), intent(out), optional:: time_name
10256  logical, intent(out), optional:: err
10257  end subroutine lookup_growable_url
10258  end interface
10259  interface
10260  function file_rename_mpi( file ) result(result)
10261  use dc_types, only: string
10262  character(*), intent(in):: file
10263  character(STRING):: result
10264  end function file_rename_mpi
10265  end interface
10266  continue
10267  file_work = file
10268  if ( present_and_true( flag_mpi_split ) ) &
10269  & file_work = file_rename_mpi( file_work )
10270  call lookup_growable_url(file = file_work, varname = varname, &
10271  & url = url, &
10272  & flag_time_exist = flag_time_exist, time_name = tname, err = err)
10273  call url_chop_iorange( &
10274  & fullname = url, iorange = iorange, remainder = remainder )
10275  call split( str = iorange, carray = carray, sep = gt_equal )
10276  timevar_name = carray(1)
10277  deallocate( carray )
10278  time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
10279  call historygetint6pointer( file = file, &
10280  & varname = varname, array = array, &
10281  & range = time_range, quiet = quiet, &
10282  & flag_mpi_split = flag_mpi_split, &
10283  & returned_time = returned_time, &
10284  & flag_time_exist = flag_time_exist, &
10285  & err = err )
10286 end subroutine historygetint6pointertimer
10287 subroutine historygetint7pointertimer( &
10288  & file, varname, array, time, &
10289  & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
10290  use dc_string, only: tochar, split
10291  use dc_types, only: string, dp, sp
10292  use dc_trace, only: dbgmessage
10293  use dc_url, only: url_chop_iorange, gt_equal
10294  use dc_present, only: present_and_true
10295  implicit none
10296  character(*), intent(in):: file, varname
10297  real(SP), intent(in):: time
10298  logical, intent(in), optional:: quiet
10299  integer, pointer :: array(:,:,:,:,:,:,:)
10300  logical, intent(in), optional:: flag_mpi_split
10301  real(DP), intent(out), optional:: returned_time
10302  logical, intent(out), optional:: flag_time_exist
10303  logical, intent(out), optional:: err
10304  character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
10305  character(STRING), pointer:: carray (:)
10306  character(STRING):: tname
10307  character(*), parameter :: subname = "HistoryGetInt7TimeR"
10308  interface
10309  subroutine historygetint7pointer(&
10310  & file, varname, array, range, quiet, &
10311  & flag_mpi_split, returned_time, flag_time_exist, err)
10312  use dc_types, only: dp
10313  character(*), intent(in):: file
10314  character(*), intent(in):: varname
10315  character(*), intent(in), optional:: range
10316  logical, intent(in), optional:: quiet
10317  logical, intent(in), optional:: flag_mpi_split
10318  real(DP), intent(out), optional:: returned_time
10319  logical, intent(out), optional:: flag_time_exist
10320  logical, intent(out), optional:: err
10321  integer, pointer :: array(:,:,:,:,:,:,:)
10322  end subroutine historygetint7pointer
10323  end interface
10324  interface
10325  subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
10326  character(*), intent(in):: file
10327  character(*), intent(in):: varname
10328  character(*), intent(out):: url
10329  character(*), intent(in), optional:: range
10330  logical, intent(out), optional:: flag_time_exist
10331  character(*), intent(out), optional:: time_name
10332  logical, intent(out), optional:: err
10333  end subroutine lookup_growable_url
10334  end interface
10335  interface
10336  function file_rename_mpi( file ) result(result)
10337  use dc_types, only: string
10338  character(*), intent(in):: file
10339  character(STRING):: result
10340  end function file_rename_mpi
10341  end interface
10342  continue
10343  file_work = file
10344  if ( present_and_true( flag_mpi_split ) ) &
10345  & file_work = file_rename_mpi( file_work )
10346  call lookup_growable_url(file = file_work, varname = varname, &
10347  & url = url, &
10348  & flag_time_exist = flag_time_exist, time_name = tname, err = err)
10349  call url_chop_iorange( &
10350  & fullname = url, iorange = iorange, remainder = remainder )
10351  call split( str = iorange, carray = carray, sep = gt_equal )
10352  timevar_name = carray(1)
10353  deallocate( carray )
10354  time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
10355  call historygetint7pointer( file = file, &
10356  & varname = varname, array = array, &
10357  & range = time_range, quiet = quiet, &
10358  & flag_mpi_split = flag_mpi_split, &
10359  & returned_time = returned_time, &
10360  & flag_time_exist = flag_time_exist, &
10361  & err = err )
10362 end subroutine historygetint7pointertimer
10363 subroutine historygetdouble0timed( &
10364  & file, varname, array, time, &
10365  & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
10366  use dc_string, only: tochar, split
10367  use dc_types, only: string, dp
10368  use dc_trace, only: dbgmessage
10369  use dc_url, only: url_chop_iorange, gt_equal
10370  use dc_present, only: present_and_true
10371  implicit none
10372  character(*), intent(in):: file, varname
10373  real(DP), intent(in):: time
10374  logical, intent(in), optional:: quiet
10375  real(DP), intent(out) :: array
10376  logical, intent(in), optional:: flag_mpi_split
10377  real(DP), intent(out), optional:: returned_time
10378  logical, intent(out), optional:: flag_time_exist
10379  logical, intent(out), optional:: err
10380  character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
10381  character(STRING), pointer:: carray (:)
10382  character(STRING):: tname
10383  character(*), parameter :: subname = "HistoryGetDouble0TimeD"
10384  interface
10385  subroutine historygetdouble0(&
10386  & file, varname, array, range, quiet, &
10387  & flag_mpi_split, returned_time, flag_time_exist, err)
10388  use dc_types, only: dp
10389  character(*), intent(in):: file
10390  character(*), intent(in):: varname
10391  character(*), intent(in), optional:: range
10392  logical, intent(in), optional:: quiet
10393  logical, intent(in), optional:: flag_mpi_split
10394  real(DP), intent(out), optional:: returned_time
10395  logical, intent(out), optional:: flag_time_exist
10396  logical, intent(out), optional:: err
10397  real(DP), intent(out) :: array
10398  end subroutine historygetdouble0
10399  end interface
10400  interface
10401  subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
10402  character(*), intent(in):: file
10403  character(*), intent(in):: varname
10404  character(*), intent(out):: url
10405  character(*), intent(in), optional:: range
10406  logical, intent(out), optional:: flag_time_exist
10407  character(*), intent(out), optional:: time_name
10408  logical, intent(out), optional:: err
10409  end subroutine lookup_growable_url
10410  end interface
10411  interface
10412  function file_rename_mpi( file ) result(result)
10413  use dc_types, only: string
10414  character(*), intent(in):: file
10415  character(STRING):: result
10416  end function file_rename_mpi
10417  end interface
10418  continue
10419  file_work = file
10420  if ( present_and_true( flag_mpi_split ) ) &
10421  & file_work = file_rename_mpi( file_work )
10422  call lookup_growable_url(file = file_work, varname = varname, &
10423  & url = url, &
10424  & flag_time_exist = flag_time_exist, time_name = tname, err = err)
10425  call url_chop_iorange( &
10426  & fullname = url, iorange = iorange, remainder = remainder )
10427  call split( str = iorange, carray = carray, sep = gt_equal )
10428  timevar_name = carray(1)
10429  deallocate( carray )
10430  time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
10431  call historygetdouble0( file = file, &
10432  & varname = varname, array = array, &
10433  & range = time_range, quiet = quiet, &
10434  & flag_mpi_split = flag_mpi_split, &
10435  & returned_time = returned_time, &
10436  & flag_time_exist = flag_time_exist, &
10437  & err = err )
10438 end subroutine historygetdouble0timed
10439 subroutine historygetdouble1timed( &
10440  & file, varname, array, time, &
10441  & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
10442  use dc_string, only: tochar, split
10443  use dc_types, only: string, dp
10444  use dc_trace, only: dbgmessage
10445  use dc_url, only: url_chop_iorange, gt_equal
10446  use dc_present, only: present_and_true
10447  implicit none
10448  character(*), intent(in):: file, varname
10449  real(DP), intent(in):: time
10450  logical, intent(in), optional:: quiet
10451  real(DP), intent(out) :: array(:)
10452  logical, intent(in), optional:: flag_mpi_split
10453  real(DP), intent(out), optional:: returned_time
10454  logical, intent(out), optional:: flag_time_exist
10455  logical, intent(out), optional:: err
10456  character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
10457  character(STRING), pointer:: carray (:)
10458  character(STRING):: tname
10459  character(*), parameter :: subname = "HistoryGetDouble1TimeD"
10460  interface
10461  subroutine historygetdouble1(&
10462  & file, varname, array, range, quiet, &
10463  & flag_mpi_split, returned_time, flag_time_exist, err)
10464  use dc_types, only: dp
10465  character(*), intent(in):: file
10466  character(*), intent(in):: varname
10467  character(*), intent(in), optional:: range
10468  logical, intent(in), optional:: quiet
10469  logical, intent(in), optional:: flag_mpi_split
10470  real(DP), intent(out), optional:: returned_time
10471  logical, intent(out), optional:: flag_time_exist
10472  logical, intent(out), optional:: err
10473  real(DP), intent(out) :: array(:)
10474  end subroutine historygetdouble1
10475  end interface
10476  interface
10477  subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
10478  character(*), intent(in):: file
10479  character(*), intent(in):: varname
10480  character(*), intent(out):: url
10481  character(*), intent(in), optional:: range
10482  logical, intent(out), optional:: flag_time_exist
10483  character(*), intent(out), optional:: time_name
10484  logical, intent(out), optional:: err
10485  end subroutine lookup_growable_url
10486  end interface
10487  interface
10488  function file_rename_mpi( file ) result(result)
10489  use dc_types, only: string
10490  character(*), intent(in):: file
10491  character(STRING):: result
10492  end function file_rename_mpi
10493  end interface
10494  continue
10495  file_work = file
10496  if ( present_and_true( flag_mpi_split ) ) &
10497  & file_work = file_rename_mpi( file_work )
10498  call lookup_growable_url(file = file_work, varname = varname, &
10499  & url = url, &
10500  & flag_time_exist = flag_time_exist, time_name = tname, err = err)
10501  call url_chop_iorange( &
10502  & fullname = url, iorange = iorange, remainder = remainder )
10503  call split( str = iorange, carray = carray, sep = gt_equal )
10504  timevar_name = carray(1)
10505  deallocate( carray )
10506  time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
10507  call historygetdouble1( file = file, &
10508  & varname = varname, array = array, &
10509  & range = time_range, quiet = quiet, &
10510  & flag_mpi_split = flag_mpi_split, &
10511  & returned_time = returned_time, &
10512  & flag_time_exist = flag_time_exist, &
10513  & err = err )
10514 end subroutine historygetdouble1timed
10515 subroutine historygetdouble2timed( &
10516  & file, varname, array, time, &
10517  & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
10518  use dc_string, only: tochar, split
10519  use dc_types, only: string, dp
10520  use dc_trace, only: dbgmessage
10521  use dc_url, only: url_chop_iorange, gt_equal
10522  use dc_present, only: present_and_true
10523  implicit none
10524  character(*), intent(in):: file, varname
10525  real(DP), intent(in):: time
10526  logical, intent(in), optional:: quiet
10527  real(DP), intent(out) :: array(:,:)
10528  logical, intent(in), optional:: flag_mpi_split
10529  real(DP), intent(out), optional:: returned_time
10530  logical, intent(out), optional:: flag_time_exist
10531  logical, intent(out), optional:: err
10532  character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
10533  character(STRING), pointer:: carray (:)
10534  character(STRING):: tname
10535  character(*), parameter :: subname = "HistoryGetDouble2TimeD"
10536  interface
10537  subroutine historygetdouble2(&
10538  & file, varname, array, range, quiet, &
10539  & flag_mpi_split, returned_time, flag_time_exist, err)
10540  use dc_types, only: dp
10541  character(*), intent(in):: file
10542  character(*), intent(in):: varname
10543  character(*), intent(in), optional:: range
10544  logical, intent(in), optional:: quiet
10545  logical, intent(in), optional:: flag_mpi_split
10546  real(DP), intent(out), optional:: returned_time
10547  logical, intent(out), optional:: flag_time_exist
10548  logical, intent(out), optional:: err
10549  real(DP), intent(out) :: array(:,:)
10550  end subroutine historygetdouble2
10551  end interface
10552  interface
10553  subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
10554  character(*), intent(in):: file
10555  character(*), intent(in):: varname
10556  character(*), intent(out):: url
10557  character(*), intent(in), optional:: range
10558  logical, intent(out), optional:: flag_time_exist
10559  character(*), intent(out), optional:: time_name
10560  logical, intent(out), optional:: err
10561  end subroutine lookup_growable_url
10562  end interface
10563  interface
10564  function file_rename_mpi( file ) result(result)
10565  use dc_types, only: string
10566  character(*), intent(in):: file
10567  character(STRING):: result
10568  end function file_rename_mpi
10569  end interface
10570  continue
10571  file_work = file
10572  if ( present_and_true( flag_mpi_split ) ) &
10573  & file_work = file_rename_mpi( file_work )
10574  call lookup_growable_url(file = file_work, varname = varname, &
10575  & url = url, &
10576  & flag_time_exist = flag_time_exist, time_name = tname, err = err)
10577  call url_chop_iorange( &
10578  & fullname = url, iorange = iorange, remainder = remainder )
10579  call split( str = iorange, carray = carray, sep = gt_equal )
10580  timevar_name = carray(1)
10581  deallocate( carray )
10582  time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
10583  call historygetdouble2( file = file, &
10584  & varname = varname, array = array, &
10585  & range = time_range, quiet = quiet, &
10586  & flag_mpi_split = flag_mpi_split, &
10587  & returned_time = returned_time, &
10588  & flag_time_exist = flag_time_exist, &
10589  & err = err )
10590 end subroutine historygetdouble2timed
10591 subroutine historygetdouble3timed( &
10592  & file, varname, array, time, &
10593  & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
10594  use dc_string, only: tochar, split
10595  use dc_types, only: string, dp
10596  use dc_trace, only: dbgmessage
10597  use dc_url, only: url_chop_iorange, gt_equal
10598  use dc_present, only: present_and_true
10599  implicit none
10600  character(*), intent(in):: file, varname
10601  real(DP), intent(in):: time
10602  logical, intent(in), optional:: quiet
10603  real(DP), intent(out) :: array(:,:,:)
10604  logical, intent(in), optional:: flag_mpi_split
10605  real(DP), intent(out), optional:: returned_time
10606  logical, intent(out), optional:: flag_time_exist
10607  logical, intent(out), optional:: err
10608  character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
10609  character(STRING), pointer:: carray (:)
10610  character(STRING):: tname
10611  character(*), parameter :: subname = "HistoryGetDouble3TimeD"
10612  interface
10613  subroutine historygetdouble3(&
10614  & file, varname, array, range, quiet, &
10615  & flag_mpi_split, returned_time, flag_time_exist, err)
10616  use dc_types, only: dp
10617  character(*), intent(in):: file
10618  character(*), intent(in):: varname
10619  character(*), intent(in), optional:: range
10620  logical, intent(in), optional:: quiet
10621  logical, intent(in), optional:: flag_mpi_split
10622  real(DP), intent(out), optional:: returned_time
10623  logical, intent(out), optional:: flag_time_exist
10624  logical, intent(out), optional:: err
10625  real(DP), intent(out) :: array(:,:,:)
10626  end subroutine historygetdouble3
10627  end interface
10628  interface
10629  subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
10630  character(*), intent(in):: file
10631  character(*), intent(in):: varname
10632  character(*), intent(out):: url
10633  character(*), intent(in), optional:: range
10634  logical, intent(out), optional:: flag_time_exist
10635  character(*), intent(out), optional:: time_name
10636  logical, intent(out), optional:: err
10637  end subroutine lookup_growable_url
10638  end interface
10639  interface
10640  function file_rename_mpi( file ) result(result)
10641  use dc_types, only: string
10642  character(*), intent(in):: file
10643  character(STRING):: result
10644  end function file_rename_mpi
10645  end interface
10646  continue
10647  file_work = file
10648  if ( present_and_true( flag_mpi_split ) ) &
10649  & file_work = file_rename_mpi( file_work )
10650  call lookup_growable_url(file = file_work, varname = varname, &
10651  & url = url, &
10652  & flag_time_exist = flag_time_exist, time_name = tname, err = err)
10653  call url_chop_iorange( &
10654  & fullname = url, iorange = iorange, remainder = remainder )
10655  call split( str = iorange, carray = carray, sep = gt_equal )
10656  timevar_name = carray(1)
10657  deallocate( carray )
10658  time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
10659  call historygetdouble3( file = file, &
10660  & varname = varname, array = array, &
10661  & range = time_range, quiet = quiet, &
10662  & flag_mpi_split = flag_mpi_split, &
10663  & returned_time = returned_time, &
10664  & flag_time_exist = flag_time_exist, &
10665  & err = err )
10666 end subroutine historygetdouble3timed
10667 subroutine historygetdouble4timed( &
10668  & file, varname, array, time, &
10669  & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
10670  use dc_string, only: tochar, split
10671  use dc_types, only: string, dp
10672  use dc_trace, only: dbgmessage
10673  use dc_url, only: url_chop_iorange, gt_equal
10674  use dc_present, only: present_and_true
10675  implicit none
10676  character(*), intent(in):: file, varname
10677  real(DP), intent(in):: time
10678  logical, intent(in), optional:: quiet
10679  real(DP), intent(out) :: array(:,:,:,:)
10680  logical, intent(in), optional:: flag_mpi_split
10681  real(DP), intent(out), optional:: returned_time
10682  logical, intent(out), optional:: flag_time_exist
10683  logical, intent(out), optional:: err
10684  character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
10685  character(STRING), pointer:: carray (:)
10686  character(STRING):: tname
10687  character(*), parameter :: subname = "HistoryGetDouble4TimeD"
10688  interface
10689  subroutine historygetdouble4(&
10690  & file, varname, array, range, quiet, &
10691  & flag_mpi_split, returned_time, flag_time_exist, err)
10692  use dc_types, only: dp
10693  character(*), intent(in):: file
10694  character(*), intent(in):: varname
10695  character(*), intent(in), optional:: range
10696  logical, intent(in), optional:: quiet
10697  logical, intent(in), optional:: flag_mpi_split
10698  real(DP), intent(out), optional:: returned_time
10699  logical, intent(out), optional:: flag_time_exist
10700  logical, intent(out), optional:: err
10701  real(DP), intent(out) :: array(:,:,:,:)
10702  end subroutine historygetdouble4
10703  end interface
10704  interface
10705  subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
10706  character(*), intent(in):: file
10707  character(*), intent(in):: varname
10708  character(*), intent(out):: url
10709  character(*), intent(in), optional:: range
10710  logical, intent(out), optional:: flag_time_exist
10711  character(*), intent(out), optional:: time_name
10712  logical, intent(out), optional:: err
10713  end subroutine lookup_growable_url
10714  end interface
10715  interface
10716  function file_rename_mpi( file ) result(result)
10717  use dc_types, only: string
10718  character(*), intent(in):: file
10719  character(STRING):: result
10720  end function file_rename_mpi
10721  end interface
10722  continue
10723  file_work = file
10724  if ( present_and_true( flag_mpi_split ) ) &
10725  & file_work = file_rename_mpi( file_work )
10726  call lookup_growable_url(file = file_work, varname = varname, &
10727  & url = url, &
10728  & flag_time_exist = flag_time_exist, time_name = tname, err = err)
10729  call url_chop_iorange( &
10730  & fullname = url, iorange = iorange, remainder = remainder )
10731  call split( str = iorange, carray = carray, sep = gt_equal )
10732  timevar_name = carray(1)
10733  deallocate( carray )
10734  time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
10735  call historygetdouble4( file = file, &
10736  & varname = varname, array = array, &
10737  & range = time_range, quiet = quiet, &
10738  & flag_mpi_split = flag_mpi_split, &
10739  & returned_time = returned_time, &
10740  & flag_time_exist = flag_time_exist, &
10741  & err = err )
10742 end subroutine historygetdouble4timed
10743 subroutine historygetdouble5timed( &
10744  & file, varname, array, time, &
10745  & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
10746  use dc_string, only: tochar, split
10747  use dc_types, only: string, dp
10748  use dc_trace, only: dbgmessage
10749  use dc_url, only: url_chop_iorange, gt_equal
10750  use dc_present, only: present_and_true
10751  implicit none
10752  character(*), intent(in):: file, varname
10753  real(DP), intent(in):: time
10754  logical, intent(in), optional:: quiet
10755  real(DP), intent(out) :: array(:,:,:,:,:)
10756  logical, intent(in), optional:: flag_mpi_split
10757  real(DP), intent(out), optional:: returned_time
10758  logical, intent(out), optional:: flag_time_exist
10759  logical, intent(out), optional:: err
10760  character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
10761  character(STRING), pointer:: carray (:)
10762  character(STRING):: tname
10763  character(*), parameter :: subname = "HistoryGetDouble5TimeD"
10764  interface
10765  subroutine historygetdouble5(&
10766  & file, varname, array, range, quiet, &
10767  & flag_mpi_split, returned_time, flag_time_exist, err)
10768  use dc_types, only: dp
10769  character(*), intent(in):: file
10770  character(*), intent(in):: varname
10771  character(*), intent(in), optional:: range
10772  logical, intent(in), optional:: quiet
10773  logical, intent(in), optional:: flag_mpi_split
10774  real(DP), intent(out), optional:: returned_time
10775  logical, intent(out), optional:: flag_time_exist
10776  logical, intent(out), optional:: err
10777  real(DP), intent(out) :: array(:,:,:,:,:)
10778  end subroutine historygetdouble5
10779  end interface
10780  interface
10781  subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
10782  character(*), intent(in):: file
10783  character(*), intent(in):: varname
10784  character(*), intent(out):: url
10785  character(*), intent(in), optional:: range
10786  logical, intent(out), optional:: flag_time_exist
10787  character(*), intent(out), optional:: time_name
10788  logical, intent(out), optional:: err
10789  end subroutine lookup_growable_url
10790  end interface
10791  interface
10792  function file_rename_mpi( file ) result(result)
10793  use dc_types, only: string
10794  character(*), intent(in):: file
10795  character(STRING):: result
10796  end function file_rename_mpi
10797  end interface
10798  continue
10799  file_work = file
10800  if ( present_and_true( flag_mpi_split ) ) &
10801  & file_work = file_rename_mpi( file_work )
10802  call lookup_growable_url(file = file_work, varname = varname, &
10803  & url = url, &
10804  & flag_time_exist = flag_time_exist, time_name = tname, err = err)
10805  call url_chop_iorange( &
10806  & fullname = url, iorange = iorange, remainder = remainder )
10807  call split( str = iorange, carray = carray, sep = gt_equal )
10808  timevar_name = carray(1)
10809  deallocate( carray )
10810  time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
10811  call historygetdouble5( file = file, &
10812  & varname = varname, array = array, &
10813  & range = time_range, quiet = quiet, &
10814  & flag_mpi_split = flag_mpi_split, &
10815  & returned_time = returned_time, &
10816  & flag_time_exist = flag_time_exist, &
10817  & err = err )
10818 end subroutine historygetdouble5timed
10819 subroutine historygetdouble6timed( &
10820  & file, varname, array, time, &
10821  & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
10822  use dc_string, only: tochar, split
10823  use dc_types, only: string, dp
10824  use dc_trace, only: dbgmessage
10825  use dc_url, only: url_chop_iorange, gt_equal
10826  use dc_present, only: present_and_true
10827  implicit none
10828  character(*), intent(in):: file, varname
10829  real(DP), intent(in):: time
10830  logical, intent(in), optional:: quiet
10831  real(DP), intent(out) :: array(:,:,:,:,:,:)
10832  logical, intent(in), optional:: flag_mpi_split
10833  real(DP), intent(out), optional:: returned_time
10834  logical, intent(out), optional:: flag_time_exist
10835  logical, intent(out), optional:: err
10836  character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
10837  character(STRING), pointer:: carray (:)
10838  character(STRING):: tname
10839  character(*), parameter :: subname = "HistoryGetDouble6TimeD"
10840  interface
10841  subroutine historygetdouble6(&
10842  & file, varname, array, range, quiet, &
10843  & flag_mpi_split, returned_time, flag_time_exist, err)
10844  use dc_types, only: dp
10845  character(*), intent(in):: file
10846  character(*), intent(in):: varname
10847  character(*), intent(in), optional:: range
10848  logical, intent(in), optional:: quiet
10849  logical, intent(in), optional:: flag_mpi_split
10850  real(DP), intent(out), optional:: returned_time
10851  logical, intent(out), optional:: flag_time_exist
10852  logical, intent(out), optional:: err
10853  real(DP), intent(out) :: array(:,:,:,:,:,:)
10854  end subroutine historygetdouble6
10855  end interface
10856  interface
10857  subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
10858  character(*), intent(in):: file
10859  character(*), intent(in):: varname
10860  character(*), intent(out):: url
10861  character(*), intent(in), optional:: range
10862  logical, intent(out), optional:: flag_time_exist
10863  character(*), intent(out), optional:: time_name
10864  logical, intent(out), optional:: err
10865  end subroutine lookup_growable_url
10866  end interface
10867  interface
10868  function file_rename_mpi( file ) result(result)
10869  use dc_types, only: string
10870  character(*), intent(in):: file
10871  character(STRING):: result
10872  end function file_rename_mpi
10873  end interface
10874  continue
10875  file_work = file
10876  if ( present_and_true( flag_mpi_split ) ) &
10877  & file_work = file_rename_mpi( file_work )
10878  call lookup_growable_url(file = file_work, varname = varname, &
10879  & url = url, &
10880  & flag_time_exist = flag_time_exist, time_name = tname, err = err)
10881  call url_chop_iorange( &
10882  & fullname = url, iorange = iorange, remainder = remainder )
10883  call split( str = iorange, carray = carray, sep = gt_equal )
10884  timevar_name = carray(1)
10885  deallocate( carray )
10886  time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
10887  call historygetdouble6( file = file, &
10888  & varname = varname, array = array, &
10889  & range = time_range, quiet = quiet, &
10890  & flag_mpi_split = flag_mpi_split, &
10891  & returned_time = returned_time, &
10892  & flag_time_exist = flag_time_exist, &
10893  & err = err )
10894 end subroutine historygetdouble6timed
10895 subroutine historygetdouble7timed( &
10896  & file, varname, array, time, &
10897  & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
10898  use dc_string, only: tochar, split
10899  use dc_types, only: string, dp
10900  use dc_trace, only: dbgmessage
10901  use dc_url, only: url_chop_iorange, gt_equal
10902  use dc_present, only: present_and_true
10903  implicit none
10904  character(*), intent(in):: file, varname
10905  real(DP), intent(in):: time
10906  logical, intent(in), optional:: quiet
10907  real(DP), intent(out) :: array(:,:,:,:,:,:,:)
10908  logical, intent(in), optional:: flag_mpi_split
10909  real(DP), intent(out), optional:: returned_time
10910  logical, intent(out), optional:: flag_time_exist
10911  logical, intent(out), optional:: err
10912  character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
10913  character(STRING), pointer:: carray (:)
10914  character(STRING):: tname
10915  character(*), parameter :: subname = "HistoryGetDouble7TimeD"
10916  interface
10917  subroutine historygetdouble7(&
10918  & file, varname, array, range, quiet, &
10919  & flag_mpi_split, returned_time, flag_time_exist, err)
10920  use dc_types, only: dp
10921  character(*), intent(in):: file
10922  character(*), intent(in):: varname
10923  character(*), intent(in), optional:: range
10924  logical, intent(in), optional:: quiet
10925  logical, intent(in), optional:: flag_mpi_split
10926  real(DP), intent(out), optional:: returned_time
10927  logical, intent(out), optional:: flag_time_exist
10928  logical, intent(out), optional:: err
10929  real(DP), intent(out) :: array(:,:,:,:,:,:,:)
10930  end subroutine historygetdouble7
10931  end interface
10932  interface
10933  subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
10934  character(*), intent(in):: file
10935  character(*), intent(in):: varname
10936  character(*), intent(out):: url
10937  character(*), intent(in), optional:: range
10938  logical, intent(out), optional:: flag_time_exist
10939  character(*), intent(out), optional:: time_name
10940  logical, intent(out), optional:: err
10941  end subroutine lookup_growable_url
10942  end interface
10943  interface
10944  function file_rename_mpi( file ) result(result)
10945  use dc_types, only: string
10946  character(*), intent(in):: file
10947  character(STRING):: result
10948  end function file_rename_mpi
10949  end interface
10950  continue
10951  file_work = file
10952  if ( present_and_true( flag_mpi_split ) ) &
10953  & file_work = file_rename_mpi( file_work )
10954  call lookup_growable_url(file = file_work, varname = varname, &
10955  & url = url, &
10956  & flag_time_exist = flag_time_exist, time_name = tname, err = err)
10957  call url_chop_iorange( &
10958  & fullname = url, iorange = iorange, remainder = remainder )
10959  call split( str = iorange, carray = carray, sep = gt_equal )
10960  timevar_name = carray(1)
10961  deallocate( carray )
10962  time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
10963  call historygetdouble7( file = file, &
10964  & varname = varname, array = array, &
10965  & range = time_range, quiet = quiet, &
10966  & flag_mpi_split = flag_mpi_split, &
10967  & returned_time = returned_time, &
10968  & flag_time_exist = flag_time_exist, &
10969  & err = err )
10970 end subroutine historygetdouble7timed
10971 subroutine historygetdouble0pointertimed( &
10972  & file, varname, array, time, &
10973  & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
10974  use dc_string, only: tochar, split
10975  use dc_types, only: string, dp
10976  use dc_trace, only: dbgmessage
10977  use dc_url, only: url_chop_iorange, gt_equal
10978  use dc_present, only: present_and_true
10979  implicit none
10980  character(*), intent(in):: file, varname
10981  real(DP), intent(in):: time
10982  logical, intent(in), optional:: quiet
10983  real(DP), pointer :: array
10984  logical, intent(in), optional:: flag_mpi_split
10985  real(DP), intent(out), optional:: returned_time
10986  logical, intent(out), optional:: flag_time_exist
10987  logical, intent(out), optional:: err
10988  character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
10989  character(STRING), pointer:: carray (:)
10990  character(STRING):: tname
10991  character(*), parameter :: subname = "HistoryGetDouble0TimeD"
10992  interface
10993  subroutine historygetdouble0pointer(&
10994  & file, varname, array, range, quiet, &
10995  & flag_mpi_split, returned_time, flag_time_exist, err)
10996  use dc_types, only: dp
10997  character(*), intent(in):: file
10998  character(*), intent(in):: varname
10999  character(*), intent(in), optional:: range
11000  logical, intent(in), optional:: quiet
11001  logical, intent(in), optional:: flag_mpi_split
11002  real(DP), intent(out), optional:: returned_time
11003  logical, intent(out), optional:: flag_time_exist
11004  logical, intent(out), optional:: err
11005  real(DP), pointer :: array
11006  end subroutine historygetdouble0pointer
11007  end interface
11008  interface
11009  subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
11010  character(*), intent(in):: file
11011  character(*), intent(in):: varname
11012  character(*), intent(out):: url
11013  character(*), intent(in), optional:: range
11014  logical, intent(out), optional:: flag_time_exist
11015  character(*), intent(out), optional:: time_name
11016  logical, intent(out), optional:: err
11017  end subroutine lookup_growable_url
11018  end interface
11019  interface
11020  function file_rename_mpi( file ) result(result)
11021  use dc_types, only: string
11022  character(*), intent(in):: file
11023  character(STRING):: result
11024  end function file_rename_mpi
11025  end interface
11026  continue
11027  file_work = file
11028  if ( present_and_true( flag_mpi_split ) ) &
11029  & file_work = file_rename_mpi( file_work )
11030  call lookup_growable_url(file = file_work, varname = varname, &
11031  & url = url, &
11032  & flag_time_exist = flag_time_exist, time_name = tname, err = err)
11033  call url_chop_iorange( &
11034  & fullname = url, iorange = iorange, remainder = remainder )
11035  call split( str = iorange, carray = carray, sep = gt_equal )
11036  timevar_name = carray(1)
11037  deallocate( carray )
11038  time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
11039  call historygetdouble0pointer( file = file, &
11040  & varname = varname, array = array, &
11041  & range = time_range, quiet = quiet, &
11042  & flag_mpi_split = flag_mpi_split, &
11043  & returned_time = returned_time, &
11044  & flag_time_exist = flag_time_exist, &
11045  & err = err )
11046 end subroutine historygetdouble0pointertimed
11047 subroutine historygetdouble1pointertimed( &
11048  & file, varname, array, time, &
11049  & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
11050  use dc_string, only: tochar, split
11051  use dc_types, only: string, dp
11052  use dc_trace, only: dbgmessage
11053  use dc_url, only: url_chop_iorange, gt_equal
11054  use dc_present, only: present_and_true
11055  implicit none
11056  character(*), intent(in):: file, varname
11057  real(DP), intent(in):: time
11058  logical, intent(in), optional:: quiet
11059  real(DP), pointer :: array(:)
11060  logical, intent(in), optional:: flag_mpi_split
11061  real(DP), intent(out), optional:: returned_time
11062  logical, intent(out), optional:: flag_time_exist
11063  logical, intent(out), optional:: err
11064  character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
11065  character(STRING), pointer:: carray (:)
11066  character(STRING):: tname
11067  character(*), parameter :: subname = "HistoryGetDouble1TimeD"
11068  interface
11069  subroutine historygetdouble1pointer(&
11070  & file, varname, array, range, quiet, &
11071  & flag_mpi_split, returned_time, flag_time_exist, err)
11072  use dc_types, only: dp
11073  character(*), intent(in):: file
11074  character(*), intent(in):: varname
11075  character(*), intent(in), optional:: range
11076  logical, intent(in), optional:: quiet
11077  logical, intent(in), optional:: flag_mpi_split
11078  real(DP), intent(out), optional:: returned_time
11079  logical, intent(out), optional:: flag_time_exist
11080  logical, intent(out), optional:: err
11081  real(DP), pointer :: array(:)
11082  end subroutine historygetdouble1pointer
11083  end interface
11084  interface
11085  subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
11086  character(*), intent(in):: file
11087  character(*), intent(in):: varname
11088  character(*), intent(out):: url
11089  character(*), intent(in), optional:: range
11090  logical, intent(out), optional:: flag_time_exist
11091  character(*), intent(out), optional:: time_name
11092  logical, intent(out), optional:: err
11093  end subroutine lookup_growable_url
11094  end interface
11095  interface
11096  function file_rename_mpi( file ) result(result)
11097  use dc_types, only: string
11098  character(*), intent(in):: file
11099  character(STRING):: result
11100  end function file_rename_mpi
11101  end interface
11102  continue
11103  file_work = file
11104  if ( present_and_true( flag_mpi_split ) ) &
11105  & file_work = file_rename_mpi( file_work )
11106  call lookup_growable_url(file = file_work, varname = varname, &
11107  & url = url, &
11108  & flag_time_exist = flag_time_exist, time_name = tname, err = err)
11109  call url_chop_iorange( &
11110  & fullname = url, iorange = iorange, remainder = remainder )
11111  call split( str = iorange, carray = carray, sep = gt_equal )
11112  timevar_name = carray(1)
11113  deallocate( carray )
11114  time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
11115  call historygetdouble1pointer( file = file, &
11116  & varname = varname, array = array, &
11117  & range = time_range, quiet = quiet, &
11118  & flag_mpi_split = flag_mpi_split, &
11119  & returned_time = returned_time, &
11120  & flag_time_exist = flag_time_exist, &
11121  & err = err )
11122 end subroutine historygetdouble1pointertimed
11123 subroutine historygetdouble2pointertimed( &
11124  & file, varname, array, time, &
11125  & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
11126  use dc_string, only: tochar, split
11127  use dc_types, only: string, dp
11128  use dc_trace, only: dbgmessage
11129  use dc_url, only: url_chop_iorange, gt_equal
11130  use dc_present, only: present_and_true
11131  implicit none
11132  character(*), intent(in):: file, varname
11133  real(DP), intent(in):: time
11134  logical, intent(in), optional:: quiet
11135  real(DP), pointer :: array(:,:)
11136  logical, intent(in), optional:: flag_mpi_split
11137  real(DP), intent(out), optional:: returned_time
11138  logical, intent(out), optional:: flag_time_exist
11139  logical, intent(out), optional:: err
11140  character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
11141  character(STRING), pointer:: carray (:)
11142  character(STRING):: tname
11143  character(*), parameter :: subname = "HistoryGetDouble2TimeD"
11144  interface
11145  subroutine historygetdouble2pointer(&
11146  & file, varname, array, range, quiet, &
11147  & flag_mpi_split, returned_time, flag_time_exist, err)
11148  use dc_types, only: dp
11149  character(*), intent(in):: file
11150  character(*), intent(in):: varname
11151  character(*), intent(in), optional:: range
11152  logical, intent(in), optional:: quiet
11153  logical, intent(in), optional:: flag_mpi_split
11154  real(DP), intent(out), optional:: returned_time
11155  logical, intent(out), optional:: flag_time_exist
11156  logical, intent(out), optional:: err
11157  real(DP), pointer :: array(:,:)
11158  end subroutine historygetdouble2pointer
11159  end interface
11160  interface
11161  subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
11162  character(*), intent(in):: file
11163  character(*), intent(in):: varname
11164  character(*), intent(out):: url
11165  character(*), intent(in), optional:: range
11166  logical, intent(out), optional:: flag_time_exist
11167  character(*), intent(out), optional:: time_name
11168  logical, intent(out), optional:: err
11169  end subroutine lookup_growable_url
11170  end interface
11171  interface
11172  function file_rename_mpi( file ) result(result)
11173  use dc_types, only: string
11174  character(*), intent(in):: file
11175  character(STRING):: result
11176  end function file_rename_mpi
11177  end interface
11178  continue
11179  file_work = file
11180  if ( present_and_true( flag_mpi_split ) ) &
11181  & file_work = file_rename_mpi( file_work )
11182  call lookup_growable_url(file = file_work, varname = varname, &
11183  & url = url, &
11184  & flag_time_exist = flag_time_exist, time_name = tname, err = err)
11185  call url_chop_iorange( &
11186  & fullname = url, iorange = iorange, remainder = remainder )
11187  call split( str = iorange, carray = carray, sep = gt_equal )
11188  timevar_name = carray(1)
11189  deallocate( carray )
11190  time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
11191  call historygetdouble2pointer( file = file, &
11192  & varname = varname, array = array, &
11193  & range = time_range, quiet = quiet, &
11194  & flag_mpi_split = flag_mpi_split, &
11195  & returned_time = returned_time, &
11196  & flag_time_exist = flag_time_exist, &
11197  & err = err )
11198 end subroutine historygetdouble2pointertimed
11199 subroutine historygetdouble3pointertimed( &
11200  & file, varname, array, time, &
11201  & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
11202  use dc_string, only: tochar, split
11203  use dc_types, only: string, dp
11204  use dc_trace, only: dbgmessage
11205  use dc_url, only: url_chop_iorange, gt_equal
11206  use dc_present, only: present_and_true
11207  implicit none
11208  character(*), intent(in):: file, varname
11209  real(DP), intent(in):: time
11210  logical, intent(in), optional:: quiet
11211  real(DP), pointer :: array(:,:,:)
11212  logical, intent(in), optional:: flag_mpi_split
11213  real(DP), intent(out), optional:: returned_time
11214  logical, intent(out), optional:: flag_time_exist
11215  logical, intent(out), optional:: err
11216  character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
11217  character(STRING), pointer:: carray (:)
11218  character(STRING):: tname
11219  character(*), parameter :: subname = "HistoryGetDouble3TimeD"
11220  interface
11221  subroutine historygetdouble3pointer(&
11222  & file, varname, array, range, quiet, &
11223  & flag_mpi_split, returned_time, flag_time_exist, err)
11224  use dc_types, only: dp
11225  character(*), intent(in):: file
11226  character(*), intent(in):: varname
11227  character(*), intent(in), optional:: range
11228  logical, intent(in), optional:: quiet
11229  logical, intent(in), optional:: flag_mpi_split
11230  real(DP), intent(out), optional:: returned_time
11231  logical, intent(out), optional:: flag_time_exist
11232  logical, intent(out), optional:: err
11233  real(DP), pointer :: array(:,:,:)
11234  end subroutine historygetdouble3pointer
11235  end interface
11236  interface
11237  subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
11238  character(*), intent(in):: file
11239  character(*), intent(in):: varname
11240  character(*), intent(out):: url
11241  character(*), intent(in), optional:: range
11242  logical, intent(out), optional:: flag_time_exist
11243  character(*), intent(out), optional:: time_name
11244  logical, intent(out), optional:: err
11245  end subroutine lookup_growable_url
11246  end interface
11247  interface
11248  function file_rename_mpi( file ) result(result)
11249  use dc_types, only: string
11250  character(*), intent(in):: file
11251  character(STRING):: result
11252  end function file_rename_mpi
11253  end interface
11254  continue
11255  file_work = file
11256  if ( present_and_true( flag_mpi_split ) ) &
11257  & file_work = file_rename_mpi( file_work )
11258  call lookup_growable_url(file = file_work, varname = varname, &
11259  & url = url, &
11260  & flag_time_exist = flag_time_exist, time_name = tname, err = err)
11261  call url_chop_iorange( &
11262  & fullname = url, iorange = iorange, remainder = remainder )
11263  call split( str = iorange, carray = carray, sep = gt_equal )
11264  timevar_name = carray(1)
11265  deallocate( carray )
11266  time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
11267  call historygetdouble3pointer( file = file, &
11268  & varname = varname, array = array, &
11269  & range = time_range, quiet = quiet, &
11270  & flag_mpi_split = flag_mpi_split, &
11271  & returned_time = returned_time, &
11272  & flag_time_exist = flag_time_exist, &
11273  & err = err )
11274 end subroutine historygetdouble3pointertimed
11275 subroutine historygetdouble4pointertimed( &
11276  & file, varname, array, time, &
11277  & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
11278  use dc_string, only: tochar, split
11279  use dc_types, only: string, dp
11280  use dc_trace, only: dbgmessage
11281  use dc_url, only: url_chop_iorange, gt_equal
11282  use dc_present, only: present_and_true
11283  implicit none
11284  character(*), intent(in):: file, varname
11285  real(DP), intent(in):: time
11286  logical, intent(in), optional:: quiet
11287  real(DP), pointer :: array(:,:,:,:)
11288  logical, intent(in), optional:: flag_mpi_split
11289  real(DP), intent(out), optional:: returned_time
11290  logical, intent(out), optional:: flag_time_exist
11291  logical, intent(out), optional:: err
11292  character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
11293  character(STRING), pointer:: carray (:)
11294  character(STRING):: tname
11295  character(*), parameter :: subname = "HistoryGetDouble4TimeD"
11296  interface
11297  subroutine historygetdouble4pointer(&
11298  & file, varname, array, range, quiet, &
11299  & flag_mpi_split, returned_time, flag_time_exist, err)
11300  use dc_types, only: dp
11301  character(*), intent(in):: file
11302  character(*), intent(in):: varname
11303  character(*), intent(in), optional:: range
11304  logical, intent(in), optional:: quiet
11305  logical, intent(in), optional:: flag_mpi_split
11306  real(DP), intent(out), optional:: returned_time
11307  logical, intent(out), optional:: flag_time_exist
11308  logical, intent(out), optional:: err
11309  real(DP), pointer :: array(:,:,:,:)
11310  end subroutine historygetdouble4pointer
11311  end interface
11312  interface
11313  subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
11314  character(*), intent(in):: file
11315  character(*), intent(in):: varname
11316  character(*), intent(out):: url
11317  character(*), intent(in), optional:: range
11318  logical, intent(out), optional:: flag_time_exist
11319  character(*), intent(out), optional:: time_name
11320  logical, intent(out), optional:: err
11321  end subroutine lookup_growable_url
11322  end interface
11323  interface
11324  function file_rename_mpi( file ) result(result)
11325  use dc_types, only: string
11326  character(*), intent(in):: file
11327  character(STRING):: result
11328  end function file_rename_mpi
11329  end interface
11330  continue
11331  file_work = file
11332  if ( present_and_true( flag_mpi_split ) ) &
11333  & file_work = file_rename_mpi( file_work )
11334  call lookup_growable_url(file = file_work, varname = varname, &
11335  & url = url, &
11336  & flag_time_exist = flag_time_exist, time_name = tname, err = err)
11337  call url_chop_iorange( &
11338  & fullname = url, iorange = iorange, remainder = remainder )
11339  call split( str = iorange, carray = carray, sep = gt_equal )
11340  timevar_name = carray(1)
11341  deallocate( carray )
11342  time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
11343  call historygetdouble4pointer( file = file, &
11344  & varname = varname, array = array, &
11345  & range = time_range, quiet = quiet, &
11346  & flag_mpi_split = flag_mpi_split, &
11347  & returned_time = returned_time, &
11348  & flag_time_exist = flag_time_exist, &
11349  & err = err )
11350 end subroutine historygetdouble4pointertimed
11351 subroutine historygetdouble5pointertimed( &
11352  & file, varname, array, time, &
11353  & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
11354  use dc_string, only: tochar, split
11355  use dc_types, only: string, dp
11356  use dc_trace, only: dbgmessage
11357  use dc_url, only: url_chop_iorange, gt_equal
11358  use dc_present, only: present_and_true
11359  implicit none
11360  character(*), intent(in):: file, varname
11361  real(DP), intent(in):: time
11362  logical, intent(in), optional:: quiet
11363  real(DP), pointer :: array(:,:,:,:,:)
11364  logical, intent(in), optional:: flag_mpi_split
11365  real(DP), intent(out), optional:: returned_time
11366  logical, intent(out), optional:: flag_time_exist
11367  logical, intent(out), optional:: err
11368  character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
11369  character(STRING), pointer:: carray (:)
11370  character(STRING):: tname
11371  character(*), parameter :: subname = "HistoryGetDouble5TimeD"
11372  interface
11373  subroutine historygetdouble5pointer(&
11374  & file, varname, array, range, quiet, &
11375  & flag_mpi_split, returned_time, flag_time_exist, err)
11376  use dc_types, only: dp
11377  character(*), intent(in):: file
11378  character(*), intent(in):: varname
11379  character(*), intent(in), optional:: range
11380  logical, intent(in), optional:: quiet
11381  logical, intent(in), optional:: flag_mpi_split
11382  real(DP), intent(out), optional:: returned_time
11383  logical, intent(out), optional:: flag_time_exist
11384  logical, intent(out), optional:: err
11385  real(DP), pointer :: array(:,:,:,:,:)
11386  end subroutine historygetdouble5pointer
11387  end interface
11388  interface
11389  subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
11390  character(*), intent(in):: file
11391  character(*), intent(in):: varname
11392  character(*), intent(out):: url
11393  character(*), intent(in), optional:: range
11394  logical, intent(out), optional:: flag_time_exist
11395  character(*), intent(out), optional:: time_name
11396  logical, intent(out), optional:: err
11397  end subroutine lookup_growable_url
11398  end interface
11399  interface
11400  function file_rename_mpi( file ) result(result)
11401  use dc_types, only: string
11402  character(*), intent(in):: file
11403  character(STRING):: result
11404  end function file_rename_mpi
11405  end interface
11406  continue
11407  file_work = file
11408  if ( present_and_true( flag_mpi_split ) ) &
11409  & file_work = file_rename_mpi( file_work )
11410  call lookup_growable_url(file = file_work, varname = varname, &
11411  & url = url, &
11412  & flag_time_exist = flag_time_exist, time_name = tname, err = err)
11413  call url_chop_iorange( &
11414  & fullname = url, iorange = iorange, remainder = remainder )
11415  call split( str = iorange, carray = carray, sep = gt_equal )
11416  timevar_name = carray(1)
11417  deallocate( carray )
11418  time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
11419  call historygetdouble5pointer( file = file, &
11420  & varname = varname, array = array, &
11421  & range = time_range, quiet = quiet, &
11422  & flag_mpi_split = flag_mpi_split, &
11423  & returned_time = returned_time, &
11424  & flag_time_exist = flag_time_exist, &
11425  & err = err )
11426 end subroutine historygetdouble5pointertimed
11427 subroutine historygetdouble6pointertimed( &
11428  & file, varname, array, time, &
11429  & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
11430  use dc_string, only: tochar, split
11431  use dc_types, only: string, dp
11432  use dc_trace, only: dbgmessage
11433  use dc_url, only: url_chop_iorange, gt_equal
11434  use dc_present, only: present_and_true
11435  implicit none
11436  character(*), intent(in):: file, varname
11437  real(DP), intent(in):: time
11438  logical, intent(in), optional:: quiet
11439  real(DP), pointer :: array(:,:,:,:,:,:)
11440  logical, intent(in), optional:: flag_mpi_split
11441  real(DP), intent(out), optional:: returned_time
11442  logical, intent(out), optional:: flag_time_exist
11443  logical, intent(out), optional:: err
11444  character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
11445  character(STRING), pointer:: carray (:)
11446  character(STRING):: tname
11447  character(*), parameter :: subname = "HistoryGetDouble6TimeD"
11448  interface
11449  subroutine historygetdouble6pointer(&
11450  & file, varname, array, range, quiet, &
11451  & flag_mpi_split, returned_time, flag_time_exist, err)
11452  use dc_types, only: dp
11453  character(*), intent(in):: file
11454  character(*), intent(in):: varname
11455  character(*), intent(in), optional:: range
11456  logical, intent(in), optional:: quiet
11457  logical, intent(in), optional:: flag_mpi_split
11458  real(DP), intent(out), optional:: returned_time
11459  logical, intent(out), optional:: flag_time_exist
11460  logical, intent(out), optional:: err
11461  real(DP), pointer :: array(:,:,:,:,:,:)
11462  end subroutine historygetdouble6pointer
11463  end interface
11464  interface
11465  subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
11466  character(*), intent(in):: file
11467  character(*), intent(in):: varname
11468  character(*), intent(out):: url
11469  character(*), intent(in), optional:: range
11470  logical, intent(out), optional:: flag_time_exist
11471  character(*), intent(out), optional:: time_name
11472  logical, intent(out), optional:: err
11473  end subroutine lookup_growable_url
11474  end interface
11475  interface
11476  function file_rename_mpi( file ) result(result)
11477  use dc_types, only: string
11478  character(*), intent(in):: file
11479  character(STRING):: result
11480  end function file_rename_mpi
11481  end interface
11482  continue
11483  file_work = file
11484  if ( present_and_true( flag_mpi_split ) ) &
11485  & file_work = file_rename_mpi( file_work )
11486  call lookup_growable_url(file = file_work, varname = varname, &
11487  & url = url, &
11488  & flag_time_exist = flag_time_exist, time_name = tname, err = err)
11489  call url_chop_iorange( &
11490  & fullname = url, iorange = iorange, remainder = remainder )
11491  call split( str = iorange, carray = carray, sep = gt_equal )
11492  timevar_name = carray(1)
11493  deallocate( carray )
11494  time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
11495  call historygetdouble6pointer( file = file, &
11496  & varname = varname, array = array, &
11497  & range = time_range, quiet = quiet, &
11498  & flag_mpi_split = flag_mpi_split, &
11499  & returned_time = returned_time, &
11500  & flag_time_exist = flag_time_exist, &
11501  & err = err )
11502 end subroutine historygetdouble6pointertimed
11503 subroutine historygetdouble7pointertimed( &
11504  & file, varname, array, time, &
11505  & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
11506  use dc_string, only: tochar, split
11507  use dc_types, only: string, dp
11508  use dc_trace, only: dbgmessage
11509  use dc_url, only: url_chop_iorange, gt_equal
11510  use dc_present, only: present_and_true
11511  implicit none
11512  character(*), intent(in):: file, varname
11513  real(DP), intent(in):: time
11514  logical, intent(in), optional:: quiet
11515  real(DP), pointer :: array(:,:,:,:,:,:,:)
11516  logical, intent(in), optional:: flag_mpi_split
11517  real(DP), intent(out), optional:: returned_time
11518  logical, intent(out), optional:: flag_time_exist
11519  logical, intent(out), optional:: err
11520  character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
11521  character(STRING), pointer:: carray (:)
11522  character(STRING):: tname
11523  character(*), parameter :: subname = "HistoryGetDouble7TimeD"
11524  interface
11525  subroutine historygetdouble7pointer(&
11526  & file, varname, array, range, quiet, &
11527  & flag_mpi_split, returned_time, flag_time_exist, err)
11528  use dc_types, only: dp
11529  character(*), intent(in):: file
11530  character(*), intent(in):: varname
11531  character(*), intent(in), optional:: range
11532  logical, intent(in), optional:: quiet
11533  logical, intent(in), optional:: flag_mpi_split
11534  real(DP), intent(out), optional:: returned_time
11535  logical, intent(out), optional:: flag_time_exist
11536  logical, intent(out), optional:: err
11537  real(DP), pointer :: array(:,:,:,:,:,:,:)
11538  end subroutine historygetdouble7pointer
11539  end interface
11540  interface
11541  subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
11542  character(*), intent(in):: file
11543  character(*), intent(in):: varname
11544  character(*), intent(out):: url
11545  character(*), intent(in), optional:: range
11546  logical, intent(out), optional:: flag_time_exist
11547  character(*), intent(out), optional:: time_name
11548  logical, intent(out), optional:: err
11549  end subroutine lookup_growable_url
11550  end interface
11551  interface
11552  function file_rename_mpi( file ) result(result)
11553  use dc_types, only: string
11554  character(*), intent(in):: file
11555  character(STRING):: result
11556  end function file_rename_mpi
11557  end interface
11558  continue
11559  file_work = file
11560  if ( present_and_true( flag_mpi_split ) ) &
11561  & file_work = file_rename_mpi( file_work )
11562  call lookup_growable_url(file = file_work, varname = varname, &
11563  & url = url, &
11564  & flag_time_exist = flag_time_exist, time_name = tname, err = err)
11565  call url_chop_iorange( &
11566  & fullname = url, iorange = iorange, remainder = remainder )
11567  call split( str = iorange, carray = carray, sep = gt_equal )
11568  timevar_name = carray(1)
11569  deallocate( carray )
11570  time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
11571  call historygetdouble7pointer( file = file, &
11572  & varname = varname, array = array, &
11573  & range = time_range, quiet = quiet, &
11574  & flag_mpi_split = flag_mpi_split, &
11575  & returned_time = returned_time, &
11576  & flag_time_exist = flag_time_exist, &
11577  & err = err )
11578 end subroutine historygetdouble7pointertimed
11579 subroutine historygetreal0timed( &
11580  & file, varname, array, time, &
11581  & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
11582  use dc_string, only: tochar, split
11583  use dc_types, only: string, dp, sp
11584  use dc_trace, only: dbgmessage
11585  use dc_url, only: url_chop_iorange, gt_equal
11586  use dc_present, only: present_and_true
11587  implicit none
11588  character(*), intent(in):: file, varname
11589  real(DP), intent(in):: time
11590  logical, intent(in), optional:: quiet
11591  real(SP), intent(out) :: array
11592  logical, intent(in), optional:: flag_mpi_split
11593  real(DP), intent(out), optional:: returned_time
11594  logical, intent(out), optional:: flag_time_exist
11595  logical, intent(out), optional:: err
11596  character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
11597  character(STRING), pointer:: carray (:)
11598  character(STRING):: tname
11599  character(*), parameter :: subname = "HistoryGetReal0TimeD"
11600  interface
11601  subroutine historygetreal0(&
11602  & file, varname, array, range, quiet, &
11603  & flag_mpi_split, returned_time, flag_time_exist, err)
11604  use dc_types, only: dp, sp
11605  character(*), intent(in):: file
11606  character(*), intent(in):: varname
11607  character(*), intent(in), optional:: range
11608  logical, intent(in), optional:: quiet
11609  logical, intent(in), optional:: flag_mpi_split
11610  real(DP), intent(out), optional:: returned_time
11611  logical, intent(out), optional:: flag_time_exist
11612  logical, intent(out), optional:: err
11613  real(SP), intent(out) :: array
11614  end subroutine historygetreal0
11615  end interface
11616  interface
11617  subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
11618  character(*), intent(in):: file
11619  character(*), intent(in):: varname
11620  character(*), intent(out):: url
11621  character(*), intent(in), optional:: range
11622  logical, intent(out), optional:: flag_time_exist
11623  character(*), intent(out), optional:: time_name
11624  logical, intent(out), optional:: err
11625  end subroutine lookup_growable_url
11626  end interface
11627  interface
11628  function file_rename_mpi( file ) result(result)
11629  use dc_types, only: string
11630  character(*), intent(in):: file
11631  character(STRING):: result
11632  end function file_rename_mpi
11633  end interface
11634  continue
11635  file_work = file
11636  if ( present_and_true( flag_mpi_split ) ) &
11637  & file_work = file_rename_mpi( file_work )
11638  call lookup_growable_url(file = file_work, varname = varname, &
11639  & url = url, &
11640  & flag_time_exist = flag_time_exist, time_name = tname, err = err)
11641  call url_chop_iorange( &
11642  & fullname = url, iorange = iorange, remainder = remainder )
11643  call split( str = iorange, carray = carray, sep = gt_equal )
11644  timevar_name = carray(1)
11645  deallocate( carray )
11646  time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
11647  call historygetreal0( file = file, &
11648  & varname = varname, array = array, &
11649  & range = time_range, quiet = quiet, &
11650  & flag_mpi_split = flag_mpi_split, &
11651  & returned_time = returned_time, &
11652  & flag_time_exist = flag_time_exist, &
11653  & err = err )
11654 end subroutine historygetreal0timed
11655 subroutine historygetreal1timed( &
11656  & file, varname, array, time, &
11657  & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
11658  use dc_string, only: tochar, split
11659  use dc_types, only: string, dp, sp
11660  use dc_trace, only: dbgmessage
11661  use dc_url, only: url_chop_iorange, gt_equal
11662  use dc_present, only: present_and_true
11663  implicit none
11664  character(*), intent(in):: file, varname
11665  real(DP), intent(in):: time
11666  logical, intent(in), optional:: quiet
11667  real(SP), intent(out) :: array(:)
11668  logical, intent(in), optional:: flag_mpi_split
11669  real(DP), intent(out), optional:: returned_time
11670  logical, intent(out), optional:: flag_time_exist
11671  logical, intent(out), optional:: err
11672  character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
11673  character(STRING), pointer:: carray (:)
11674  character(STRING):: tname
11675  character(*), parameter :: subname = "HistoryGetReal1TimeD"
11676  interface
11677  subroutine historygetreal1(&
11678  & file, varname, array, range, quiet, &
11679  & flag_mpi_split, returned_time, flag_time_exist, err)
11680  use dc_types, only: dp, sp
11681  character(*), intent(in):: file
11682  character(*), intent(in):: varname
11683  character(*), intent(in), optional:: range
11684  logical, intent(in), optional:: quiet
11685  logical, intent(in), optional:: flag_mpi_split
11686  real(DP), intent(out), optional:: returned_time
11687  logical, intent(out), optional:: flag_time_exist
11688  logical, intent(out), optional:: err
11689  real(SP), intent(out) :: array(:)
11690  end subroutine historygetreal1
11691  end interface
11692  interface
11693  subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
11694  character(*), intent(in):: file
11695  character(*), intent(in):: varname
11696  character(*), intent(out):: url
11697  character(*), intent(in), optional:: range
11698  logical, intent(out), optional:: flag_time_exist
11699  character(*), intent(out), optional:: time_name
11700  logical, intent(out), optional:: err
11701  end subroutine lookup_growable_url
11702  end interface
11703  interface
11704  function file_rename_mpi( file ) result(result)
11705  use dc_types, only: string
11706  character(*), intent(in):: file
11707  character(STRING):: result
11708  end function file_rename_mpi
11709  end interface
11710  continue
11711  file_work = file
11712  if ( present_and_true( flag_mpi_split ) ) &
11713  & file_work = file_rename_mpi( file_work )
11714  call lookup_growable_url(file = file_work, varname = varname, &
11715  & url = url, &
11716  & flag_time_exist = flag_time_exist, time_name = tname, err = err)
11717  call url_chop_iorange( &
11718  & fullname = url, iorange = iorange, remainder = remainder )
11719  call split( str = iorange, carray = carray, sep = gt_equal )
11720  timevar_name = carray(1)
11721  deallocate( carray )
11722  time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
11723  call historygetreal1( file = file, &
11724  & varname = varname, array = array, &
11725  & range = time_range, quiet = quiet, &
11726  & flag_mpi_split = flag_mpi_split, &
11727  & returned_time = returned_time, &
11728  & flag_time_exist = flag_time_exist, &
11729  & err = err )
11730 end subroutine historygetreal1timed
11731 subroutine historygetreal2timed( &
11732  & file, varname, array, time, &
11733  & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
11734  use dc_string, only: tochar, split
11735  use dc_types, only: string, dp, sp
11736  use dc_trace, only: dbgmessage
11737  use dc_url, only: url_chop_iorange, gt_equal
11738  use dc_present, only: present_and_true
11739  implicit none
11740  character(*), intent(in):: file, varname
11741  real(DP), intent(in):: time
11742  logical, intent(in), optional:: quiet
11743  real(SP), intent(out) :: array(:,:)
11744  logical, intent(in), optional:: flag_mpi_split
11745  real(DP), intent(out), optional:: returned_time
11746  logical, intent(out), optional:: flag_time_exist
11747  logical, intent(out), optional:: err
11748  character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
11749  character(STRING), pointer:: carray (:)
11750  character(STRING):: tname
11751  character(*), parameter :: subname = "HistoryGetReal2TimeD"
11752  interface
11753  subroutine historygetreal2(&
11754  & file, varname, array, range, quiet, &
11755  & flag_mpi_split, returned_time, flag_time_exist, err)
11756  use dc_types, only: dp, sp
11757  character(*), intent(in):: file
11758  character(*), intent(in):: varname
11759  character(*), intent(in), optional:: range
11760  logical, intent(in), optional:: quiet
11761  logical, intent(in), optional:: flag_mpi_split
11762  real(DP), intent(out), optional:: returned_time
11763  logical, intent(out), optional:: flag_time_exist
11764  logical, intent(out), optional:: err
11765  real(SP), intent(out) :: array(:,:)
11766  end subroutine historygetreal2
11767  end interface
11768  interface
11769  subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
11770  character(*), intent(in):: file
11771  character(*), intent(in):: varname
11772  character(*), intent(out):: url
11773  character(*), intent(in), optional:: range
11774  logical, intent(out), optional:: flag_time_exist
11775  character(*), intent(out), optional:: time_name
11776  logical, intent(out), optional:: err
11777  end subroutine lookup_growable_url
11778  end interface
11779  interface
11780  function file_rename_mpi( file ) result(result)
11781  use dc_types, only: string
11782  character(*), intent(in):: file
11783  character(STRING):: result
11784  end function file_rename_mpi
11785  end interface
11786  continue
11787  file_work = file
11788  if ( present_and_true( flag_mpi_split ) ) &
11789  & file_work = file_rename_mpi( file_work )
11790  call lookup_growable_url(file = file_work, varname = varname, &
11791  & url = url, &
11792  & flag_time_exist = flag_time_exist, time_name = tname, err = err)
11793  call url_chop_iorange( &
11794  & fullname = url, iorange = iorange, remainder = remainder )
11795  call split( str = iorange, carray = carray, sep = gt_equal )
11796  timevar_name = carray(1)
11797  deallocate( carray )
11798  time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
11799  call historygetreal2( file = file, &
11800  & varname = varname, array = array, &
11801  & range = time_range, quiet = quiet, &
11802  & flag_mpi_split = flag_mpi_split, &
11803  & returned_time = returned_time, &
11804  & flag_time_exist = flag_time_exist, &
11805  & err = err )
11806 end subroutine historygetreal2timed
11807 subroutine historygetreal3timed( &
11808  & file, varname, array, time, &
11809  & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
11810  use dc_string, only: tochar, split
11811  use dc_types, only: string, dp, sp
11812  use dc_trace, only: dbgmessage
11813  use dc_url, only: url_chop_iorange, gt_equal
11814  use dc_present, only: present_and_true
11815  implicit none
11816  character(*), intent(in):: file, varname
11817  real(DP), intent(in):: time
11818  logical, intent(in), optional:: quiet
11819  real(SP), intent(out) :: array(:,:,:)
11820  logical, intent(in), optional:: flag_mpi_split
11821  real(DP), intent(out), optional:: returned_time
11822  logical, intent(out), optional:: flag_time_exist
11823  logical, intent(out), optional:: err
11824  character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
11825  character(STRING), pointer:: carray (:)
11826  character(STRING):: tname
11827  character(*), parameter :: subname = "HistoryGetReal3TimeD"
11828  interface
11829  subroutine historygetreal3(&
11830  & file, varname, array, range, quiet, &
11831  & flag_mpi_split, returned_time, flag_time_exist, err)
11832  use dc_types, only: dp, sp
11833  character(*), intent(in):: file
11834  character(*), intent(in):: varname
11835  character(*), intent(in), optional:: range
11836  logical, intent(in), optional:: quiet
11837  logical, intent(in), optional:: flag_mpi_split
11838  real(DP), intent(out), optional:: returned_time
11839  logical, intent(out), optional:: flag_time_exist
11840  logical, intent(out), optional:: err
11841  real(SP), intent(out) :: array(:,:,:)
11842  end subroutine historygetreal3
11843  end interface
11844  interface
11845  subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
11846  character(*), intent(in):: file
11847  character(*), intent(in):: varname
11848  character(*), intent(out):: url
11849  character(*), intent(in), optional:: range
11850  logical, intent(out), optional:: flag_time_exist
11851  character(*), intent(out), optional:: time_name
11852  logical, intent(out), optional:: err
11853  end subroutine lookup_growable_url
11854  end interface
11855  interface
11856  function file_rename_mpi( file ) result(result)
11857  use dc_types, only: string
11858  character(*), intent(in):: file
11859  character(STRING):: result
11860  end function file_rename_mpi
11861  end interface
11862  continue
11863  file_work = file
11864  if ( present_and_true( flag_mpi_split ) ) &
11865  & file_work = file_rename_mpi( file_work )
11866  call lookup_growable_url(file = file_work, varname = varname, &
11867  & url = url, &
11868  & flag_time_exist = flag_time_exist, time_name = tname, err = err)
11869  call url_chop_iorange( &
11870  & fullname = url, iorange = iorange, remainder = remainder )
11871  call split( str = iorange, carray = carray, sep = gt_equal )
11872  timevar_name = carray(1)
11873  deallocate( carray )
11874  time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
11875  call historygetreal3( file = file, &
11876  & varname = varname, array = array, &
11877  & range = time_range, quiet = quiet, &
11878  & flag_mpi_split = flag_mpi_split, &
11879  & returned_time = returned_time, &
11880  & flag_time_exist = flag_time_exist, &
11881  & err = err )
11882 end subroutine historygetreal3timed
11883 subroutine historygetreal4timed( &
11884  & file, varname, array, time, &
11885  & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
11886  use dc_string, only: tochar, split
11887  use dc_types, only: string, dp, sp
11888  use dc_trace, only: dbgmessage
11889  use dc_url, only: url_chop_iorange, gt_equal
11890  use dc_present, only: present_and_true
11891  implicit none
11892  character(*), intent(in):: file, varname
11893  real(DP), intent(in):: time
11894  logical, intent(in), optional:: quiet
11895  real(SP), intent(out) :: array(:,:,:,:)
11896  logical, intent(in), optional:: flag_mpi_split
11897  real(DP), intent(out), optional:: returned_time
11898  logical, intent(out), optional:: flag_time_exist
11899  logical, intent(out), optional:: err
11900  character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
11901  character(STRING), pointer:: carray (:)
11902  character(STRING):: tname
11903  character(*), parameter :: subname = "HistoryGetReal4TimeD"
11904  interface
11905  subroutine historygetreal4(&
11906  & file, varname, array, range, quiet, &
11907  & flag_mpi_split, returned_time, flag_time_exist, err)
11908  use dc_types, only: dp, sp
11909  character(*), intent(in):: file
11910  character(*), intent(in):: varname
11911  character(*), intent(in), optional:: range
11912  logical, intent(in), optional:: quiet
11913  logical, intent(in), optional:: flag_mpi_split
11914  real(DP), intent(out), optional:: returned_time
11915  logical, intent(out), optional:: flag_time_exist
11916  logical, intent(out), optional:: err
11917  real(SP), intent(out) :: array(:,:,:,:)
11918  end subroutine historygetreal4
11919  end interface
11920  interface
11921  subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
11922  character(*), intent(in):: file
11923  character(*), intent(in):: varname
11924  character(*), intent(out):: url
11925  character(*), intent(in), optional:: range
11926  logical, intent(out), optional:: flag_time_exist
11927  character(*), intent(out), optional:: time_name
11928  logical, intent(out), optional:: err
11929  end subroutine lookup_growable_url
11930  end interface
11931  interface
11932  function file_rename_mpi( file ) result(result)
11933  use dc_types, only: string
11934  character(*), intent(in):: file
11935  character(STRING):: result
11936  end function file_rename_mpi
11937  end interface
11938  continue
11939  file_work = file
11940  if ( present_and_true( flag_mpi_split ) ) &
11941  & file_work = file_rename_mpi( file_work )
11942  call lookup_growable_url(file = file_work, varname = varname, &
11943  & url = url, &
11944  & flag_time_exist = flag_time_exist, time_name = tname, err = err)
11945  call url_chop_iorange( &
11946  & fullname = url, iorange = iorange, remainder = remainder )
11947  call split( str = iorange, carray = carray, sep = gt_equal )
11948  timevar_name = carray(1)
11949  deallocate( carray )
11950  time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
11951  call historygetreal4( file = file, &
11952  & varname = varname, array = array, &
11953  & range = time_range, quiet = quiet, &
11954  & flag_mpi_split = flag_mpi_split, &
11955  & returned_time = returned_time, &
11956  & flag_time_exist = flag_time_exist, &
11957  & err = err )
11958 end subroutine historygetreal4timed
11959 subroutine historygetreal5timed( &
11960  & file, varname, array, time, &
11961  & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
11962  use dc_string, only: tochar, split
11963  use dc_types, only: string, dp, sp
11964  use dc_trace, only: dbgmessage
11965  use dc_url, only: url_chop_iorange, gt_equal
11966  use dc_present, only: present_and_true
11967  implicit none
11968  character(*), intent(in):: file, varname
11969  real(DP), intent(in):: time
11970  logical, intent(in), optional:: quiet
11971  real(SP), intent(out) :: array(:,:,:,:,:)
11972  logical, intent(in), optional:: flag_mpi_split
11973  real(DP), intent(out), optional:: returned_time
11974  logical, intent(out), optional:: flag_time_exist
11975  logical, intent(out), optional:: err
11976  character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
11977  character(STRING), pointer:: carray (:)
11978  character(STRING):: tname
11979  character(*), parameter :: subname = "HistoryGetReal5TimeD"
11980  interface
11981  subroutine historygetreal5(&
11982  & file, varname, array, range, quiet, &
11983  & flag_mpi_split, returned_time, flag_time_exist, err)
11984  use dc_types, only: dp, sp
11985  character(*), intent(in):: file
11986  character(*), intent(in):: varname
11987  character(*), intent(in), optional:: range
11988  logical, intent(in), optional:: quiet
11989  logical, intent(in), optional:: flag_mpi_split
11990  real(DP), intent(out), optional:: returned_time
11991  logical, intent(out), optional:: flag_time_exist
11992  logical, intent(out), optional:: err
11993  real(SP), intent(out) :: array(:,:,:,:,:)
11994  end subroutine historygetreal5
11995  end interface
11996  interface
11997  subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
11998  character(*), intent(in):: file
11999  character(*), intent(in):: varname
12000  character(*), intent(out):: url
12001  character(*), intent(in), optional:: range
12002  logical, intent(out), optional:: flag_time_exist
12003  character(*), intent(out), optional:: time_name
12004  logical, intent(out), optional:: err
12005  end subroutine lookup_growable_url
12006  end interface
12007  interface
12008  function file_rename_mpi( file ) result(result)
12009  use dc_types, only: string
12010  character(*), intent(in):: file
12011  character(STRING):: result
12012  end function file_rename_mpi
12013  end interface
12014  continue
12015  file_work = file
12016  if ( present_and_true( flag_mpi_split ) ) &
12017  & file_work = file_rename_mpi( file_work )
12018  call lookup_growable_url(file = file_work, varname = varname, &
12019  & url = url, &
12020  & flag_time_exist = flag_time_exist, time_name = tname, err = err)
12021  call url_chop_iorange( &
12022  & fullname = url, iorange = iorange, remainder = remainder )
12023  call split( str = iorange, carray = carray, sep = gt_equal )
12024  timevar_name = carray(1)
12025  deallocate( carray )
12026  time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
12027  call historygetreal5( file = file, &
12028  & varname = varname, array = array, &
12029  & range = time_range, quiet = quiet, &
12030  & flag_mpi_split = flag_mpi_split, &
12031  & returned_time = returned_time, &
12032  & flag_time_exist = flag_time_exist, &
12033  & err = err )
12034 end subroutine historygetreal5timed
12035 subroutine historygetreal6timed( &
12036  & file, varname, array, time, &
12037  & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
12038  use dc_string, only: tochar, split
12039  use dc_types, only: string, dp, sp
12040  use dc_trace, only: dbgmessage
12041  use dc_url, only: url_chop_iorange, gt_equal
12042  use dc_present, only: present_and_true
12043  implicit none
12044  character(*), intent(in):: file, varname
12045  real(DP), intent(in):: time
12046  logical, intent(in), optional:: quiet
12047  real(SP), intent(out) :: array(:,:,:,:,:,:)
12048  logical, intent(in), optional:: flag_mpi_split
12049  real(DP), intent(out), optional:: returned_time
12050  logical, intent(out), optional:: flag_time_exist
12051  logical, intent(out), optional:: err
12052  character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
12053  character(STRING), pointer:: carray (:)
12054  character(STRING):: tname
12055  character(*), parameter :: subname = "HistoryGetReal6TimeD"
12056  interface
12057  subroutine historygetreal6(&
12058  & file, varname, array, range, quiet, &
12059  & flag_mpi_split, returned_time, flag_time_exist, err)
12060  use dc_types, only: dp, sp
12061  character(*), intent(in):: file
12062  character(*), intent(in):: varname
12063  character(*), intent(in), optional:: range
12064  logical, intent(in), optional:: quiet
12065  logical, intent(in), optional:: flag_mpi_split
12066  real(DP), intent(out), optional:: returned_time
12067  logical, intent(out), optional:: flag_time_exist
12068  logical, intent(out), optional:: err
12069  real(SP), intent(out) :: array(:,:,:,:,:,:)
12070  end subroutine historygetreal6
12071  end interface
12072  interface
12073  subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
12074  character(*), intent(in):: file
12075  character(*), intent(in):: varname
12076  character(*), intent(out):: url
12077  character(*), intent(in), optional:: range
12078  logical, intent(out), optional:: flag_time_exist
12079  character(*), intent(out), optional:: time_name
12080  logical, intent(out), optional:: err
12081  end subroutine lookup_growable_url
12082  end interface
12083  interface
12084  function file_rename_mpi( file ) result(result)
12085  use dc_types, only: string
12086  character(*), intent(in):: file
12087  character(STRING):: result
12088  end function file_rename_mpi
12089  end interface
12090  continue
12091  file_work = file
12092  if ( present_and_true( flag_mpi_split ) ) &
12093  & file_work = file_rename_mpi( file_work )
12094  call lookup_growable_url(file = file_work, varname = varname, &
12095  & url = url, &
12096  & flag_time_exist = flag_time_exist, time_name = tname, err = err)
12097  call url_chop_iorange( &
12098  & fullname = url, iorange = iorange, remainder = remainder )
12099  call split( str = iorange, carray = carray, sep = gt_equal )
12100  timevar_name = carray(1)
12101  deallocate( carray )
12102  time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
12103  call historygetreal6( file = file, &
12104  & varname = varname, array = array, &
12105  & range = time_range, quiet = quiet, &
12106  & flag_mpi_split = flag_mpi_split, &
12107  & returned_time = returned_time, &
12108  & flag_time_exist = flag_time_exist, &
12109  & err = err )
12110 end subroutine historygetreal6timed
12111 subroutine historygetreal7timed( &
12112  & file, varname, array, time, &
12113  & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
12114  use dc_string, only: tochar, split
12115  use dc_types, only: string, dp, sp
12116  use dc_trace, only: dbgmessage
12117  use dc_url, only: url_chop_iorange, gt_equal
12118  use dc_present, only: present_and_true
12119  implicit none
12120  character(*), intent(in):: file, varname
12121  real(DP), intent(in):: time
12122  logical, intent(in), optional:: quiet
12123  real(SP), intent(out) :: array(:,:,:,:,:,:,:)
12124  logical, intent(in), optional:: flag_mpi_split
12125  real(DP), intent(out), optional:: returned_time
12126  logical, intent(out), optional:: flag_time_exist
12127  logical, intent(out), optional:: err
12128  character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
12129  character(STRING), pointer:: carray (:)
12130  character(STRING):: tname
12131  character(*), parameter :: subname = "HistoryGetReal7TimeD"
12132  interface
12133  subroutine historygetreal7(&
12134  & file, varname, array, range, quiet, &
12135  & flag_mpi_split, returned_time, flag_time_exist, err)
12136  use dc_types, only: dp, sp
12137  character(*), intent(in):: file
12138  character(*), intent(in):: varname
12139  character(*), intent(in), optional:: range
12140  logical, intent(in), optional:: quiet
12141  logical, intent(in), optional:: flag_mpi_split
12142  real(DP), intent(out), optional:: returned_time
12143  logical, intent(out), optional:: flag_time_exist
12144  logical, intent(out), optional:: err
12145  real(SP), intent(out) :: array(:,:,:,:,:,:,:)
12146  end subroutine historygetreal7
12147  end interface
12148  interface
12149  subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
12150  character(*), intent(in):: file
12151  character(*), intent(in):: varname
12152  character(*), intent(out):: url
12153  character(*), intent(in), optional:: range
12154  logical, intent(out), optional:: flag_time_exist
12155  character(*), intent(out), optional:: time_name
12156  logical, intent(out), optional:: err
12157  end subroutine lookup_growable_url
12158  end interface
12159  interface
12160  function file_rename_mpi( file ) result(result)
12161  use dc_types, only: string
12162  character(*), intent(in):: file
12163  character(STRING):: result
12164  end function file_rename_mpi
12165  end interface
12166  continue
12167  file_work = file
12168  if ( present_and_true( flag_mpi_split ) ) &
12169  & file_work = file_rename_mpi( file_work )
12170  call lookup_growable_url(file = file_work, varname = varname, &
12171  & url = url, &
12172  & flag_time_exist = flag_time_exist, time_name = tname, err = err)
12173  call url_chop_iorange( &
12174  & fullname = url, iorange = iorange, remainder = remainder )
12175  call split( str = iorange, carray = carray, sep = gt_equal )
12176  timevar_name = carray(1)
12177  deallocate( carray )
12178  time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
12179  call historygetreal7( file = file, &
12180  & varname = varname, array = array, &
12181  & range = time_range, quiet = quiet, &
12182  & flag_mpi_split = flag_mpi_split, &
12183  & returned_time = returned_time, &
12184  & flag_time_exist = flag_time_exist, &
12185  & err = err )
12186 end subroutine historygetreal7timed
12187 subroutine historygetreal0pointertimed( &
12188  & file, varname, array, time, &
12189  & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
12190  use dc_string, only: tochar, split
12191  use dc_types, only: string, dp, sp
12192  use dc_trace, only: dbgmessage
12193  use dc_url, only: url_chop_iorange, gt_equal
12194  use dc_present, only: present_and_true
12195  implicit none
12196  character(*), intent(in):: file, varname
12197  real(DP), intent(in):: time
12198  logical, intent(in), optional:: quiet
12199  real(SP), pointer :: array
12200  logical, intent(in), optional:: flag_mpi_split
12201  real(DP), intent(out), optional:: returned_time
12202  logical, intent(out), optional:: flag_time_exist
12203  logical, intent(out), optional:: err
12204  character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
12205  character(STRING), pointer:: carray (:)
12206  character(STRING):: tname
12207  character(*), parameter :: subname = "HistoryGetReal0TimeD"
12208  interface
12209  subroutine historygetreal0pointer(&
12210  & file, varname, array, range, quiet, &
12211  & flag_mpi_split, returned_time, flag_time_exist, err)
12212  use dc_types, only: dp, sp
12213  character(*), intent(in):: file
12214  character(*), intent(in):: varname
12215  character(*), intent(in), optional:: range
12216  logical, intent(in), optional:: quiet
12217  logical, intent(in), optional:: flag_mpi_split
12218  real(DP), intent(out), optional:: returned_time
12219  logical, intent(out), optional:: flag_time_exist
12220  logical, intent(out), optional:: err
12221  real(SP), pointer :: array
12222  end subroutine historygetreal0pointer
12223  end interface
12224  interface
12225  subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
12226  character(*), intent(in):: file
12227  character(*), intent(in):: varname
12228  character(*), intent(out):: url
12229  character(*), intent(in), optional:: range
12230  logical, intent(out), optional:: flag_time_exist
12231  character(*), intent(out), optional:: time_name
12232  logical, intent(out), optional:: err
12233  end subroutine lookup_growable_url
12234  end interface
12235  interface
12236  function file_rename_mpi( file ) result(result)
12237  use dc_types, only: string
12238  character(*), intent(in):: file
12239  character(STRING):: result
12240  end function file_rename_mpi
12241  end interface
12242  continue
12243  file_work = file
12244  if ( present_and_true( flag_mpi_split ) ) &
12245  & file_work = file_rename_mpi( file_work )
12246  call lookup_growable_url(file = file_work, varname = varname, &
12247  & url = url, &
12248  & flag_time_exist = flag_time_exist, time_name = tname, err = err)
12249  call url_chop_iorange( &
12250  & fullname = url, iorange = iorange, remainder = remainder )
12251  call split( str = iorange, carray = carray, sep = gt_equal )
12252  timevar_name = carray(1)
12253  deallocate( carray )
12254  time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
12255  call historygetreal0pointer( file = file, &
12256  & varname = varname, array = array, &
12257  & range = time_range, quiet = quiet, &
12258  & flag_mpi_split = flag_mpi_split, &
12259  & returned_time = returned_time, &
12260  & flag_time_exist = flag_time_exist, &
12261  & err = err )
12262 end subroutine historygetreal0pointertimed
12263 subroutine historygetreal1pointertimed( &
12264  & file, varname, array, time, &
12265  & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
12266  use dc_string, only: tochar, split
12267  use dc_types, only: string, dp, sp
12268  use dc_trace, only: dbgmessage
12269  use dc_url, only: url_chop_iorange, gt_equal
12270  use dc_present, only: present_and_true
12271  implicit none
12272  character(*), intent(in):: file, varname
12273  real(DP), intent(in):: time
12274  logical, intent(in), optional:: quiet
12275  real(SP), pointer :: array(:)
12276  logical, intent(in), optional:: flag_mpi_split
12277  real(DP), intent(out), optional:: returned_time
12278  logical, intent(out), optional:: flag_time_exist
12279  logical, intent(out), optional:: err
12280  character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
12281  character(STRING), pointer:: carray (:)
12282  character(STRING):: tname
12283  character(*), parameter :: subname = "HistoryGetReal1TimeD"
12284  interface
12285  subroutine historygetreal1pointer(&
12286  & file, varname, array, range, quiet, &
12287  & flag_mpi_split, returned_time, flag_time_exist, err)
12288  use dc_types, only: dp, sp
12289  character(*), intent(in):: file
12290  character(*), intent(in):: varname
12291  character(*), intent(in), optional:: range
12292  logical, intent(in), optional:: quiet
12293  logical, intent(in), optional:: flag_mpi_split
12294  real(DP), intent(out), optional:: returned_time
12295  logical, intent(out), optional:: flag_time_exist
12296  logical, intent(out), optional:: err
12297  real(SP), pointer :: array(:)
12298  end subroutine historygetreal1pointer
12299  end interface
12300  interface
12301  subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
12302  character(*), intent(in):: file
12303  character(*), intent(in):: varname
12304  character(*), intent(out):: url
12305  character(*), intent(in), optional:: range
12306  logical, intent(out), optional:: flag_time_exist
12307  character(*), intent(out), optional:: time_name
12308  logical, intent(out), optional:: err
12309  end subroutine lookup_growable_url
12310  end interface
12311  interface
12312  function file_rename_mpi( file ) result(result)
12313  use dc_types, only: string
12314  character(*), intent(in):: file
12315  character(STRING):: result
12316  end function file_rename_mpi
12317  end interface
12318  continue
12319  file_work = file
12320  if ( present_and_true( flag_mpi_split ) ) &
12321  & file_work = file_rename_mpi( file_work )
12322  call lookup_growable_url(file = file_work, varname = varname, &
12323  & url = url, &
12324  & flag_time_exist = flag_time_exist, time_name = tname, err = err)
12325  call url_chop_iorange( &
12326  & fullname = url, iorange = iorange, remainder = remainder )
12327  call split( str = iorange, carray = carray, sep = gt_equal )
12328  timevar_name = carray(1)
12329  deallocate( carray )
12330  time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
12331  call historygetreal1pointer( file = file, &
12332  & varname = varname, array = array, &
12333  & range = time_range, quiet = quiet, &
12334  & flag_mpi_split = flag_mpi_split, &
12335  & returned_time = returned_time, &
12336  & flag_time_exist = flag_time_exist, &
12337  & err = err )
12338 end subroutine historygetreal1pointertimed
12339 subroutine historygetreal2pointertimed( &
12340  & file, varname, array, time, &
12341  & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
12342  use dc_string, only: tochar, split
12343  use dc_types, only: string, dp, sp
12344  use dc_trace, only: dbgmessage
12345  use dc_url, only: url_chop_iorange, gt_equal
12346  use dc_present, only: present_and_true
12347  implicit none
12348  character(*), intent(in):: file, varname
12349  real(DP), intent(in):: time
12350  logical, intent(in), optional:: quiet
12351  real(SP), pointer :: array(:,:)
12352  logical, intent(in), optional:: flag_mpi_split
12353  real(DP), intent(out), optional:: returned_time
12354  logical, intent(out), optional:: flag_time_exist
12355  logical, intent(out), optional:: err
12356  character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
12357  character(STRING), pointer:: carray (:)
12358  character(STRING):: tname
12359  character(*), parameter :: subname = "HistoryGetReal2TimeD"
12360  interface
12361  subroutine historygetreal2pointer(&
12362  & file, varname, array, range, quiet, &
12363  & flag_mpi_split, returned_time, flag_time_exist, err)
12364  use dc_types, only: dp, sp
12365  character(*), intent(in):: file
12366  character(*), intent(in):: varname
12367  character(*), intent(in), optional:: range
12368  logical, intent(in), optional:: quiet
12369  logical, intent(in), optional:: flag_mpi_split
12370  real(DP), intent(out), optional:: returned_time
12371  logical, intent(out), optional:: flag_time_exist
12372  logical, intent(out), optional:: err
12373  real(SP), pointer :: array(:,:)
12374  end subroutine historygetreal2pointer
12375  end interface
12376  interface
12377  subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
12378  character(*), intent(in):: file
12379  character(*), intent(in):: varname
12380  character(*), intent(out):: url
12381  character(*), intent(in), optional:: range
12382  logical, intent(out), optional:: flag_time_exist
12383  character(*), intent(out), optional:: time_name
12384  logical, intent(out), optional:: err
12385  end subroutine lookup_growable_url
12386  end interface
12387  interface
12388  function file_rename_mpi( file ) result(result)
12389  use dc_types, only: string
12390  character(*), intent(in):: file
12391  character(STRING):: result
12392  end function file_rename_mpi
12393  end interface
12394  continue
12395  file_work = file
12396  if ( present_and_true( flag_mpi_split ) ) &
12397  & file_work = file_rename_mpi( file_work )
12398  call lookup_growable_url(file = file_work, varname = varname, &
12399  & url = url, &
12400  & flag_time_exist = flag_time_exist, time_name = tname, err = err)
12401  call url_chop_iorange( &
12402  & fullname = url, iorange = iorange, remainder = remainder )
12403  call split( str = iorange, carray = carray, sep = gt_equal )
12404  timevar_name = carray(1)
12405  deallocate( carray )
12406  time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
12407  call historygetreal2pointer( file = file, &
12408  & varname = varname, array = array, &
12409  & range = time_range, quiet = quiet, &
12410  & flag_mpi_split = flag_mpi_split, &
12411  & returned_time = returned_time, &
12412  & flag_time_exist = flag_time_exist, &
12413  & err = err )
12414 end subroutine historygetreal2pointertimed
12415 subroutine historygetreal3pointertimed( &
12416  & file, varname, array, time, &
12417  & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
12418  use dc_string, only: tochar, split
12419  use dc_types, only: string, dp, sp
12420  use dc_trace, only: dbgmessage
12421  use dc_url, only: url_chop_iorange, gt_equal
12422  use dc_present, only: present_and_true
12423  implicit none
12424  character(*), intent(in):: file, varname
12425  real(DP), intent(in):: time
12426  logical, intent(in), optional:: quiet
12427  real(SP), pointer :: array(:,:,:)
12428  logical, intent(in), optional:: flag_mpi_split
12429  real(DP), intent(out), optional:: returned_time
12430  logical, intent(out), optional:: flag_time_exist
12431  logical, intent(out), optional:: err
12432  character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
12433  character(STRING), pointer:: carray (:)
12434  character(STRING):: tname
12435  character(*), parameter :: subname = "HistoryGetReal3TimeD"
12436  interface
12437  subroutine historygetreal3pointer(&
12438  & file, varname, array, range, quiet, &
12439  & flag_mpi_split, returned_time, flag_time_exist, err)
12440  use dc_types, only: dp, sp
12441  character(*), intent(in):: file
12442  character(*), intent(in):: varname
12443  character(*), intent(in), optional:: range
12444  logical, intent(in), optional:: quiet
12445  logical, intent(in), optional:: flag_mpi_split
12446  real(DP), intent(out), optional:: returned_time
12447  logical, intent(out), optional:: flag_time_exist
12448  logical, intent(out), optional:: err
12449  real(SP), pointer :: array(:,:,:)
12450  end subroutine historygetreal3pointer
12451  end interface
12452  interface
12453  subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
12454  character(*), intent(in):: file
12455  character(*), intent(in):: varname
12456  character(*), intent(out):: url
12457  character(*), intent(in), optional:: range
12458  logical, intent(out), optional:: flag_time_exist
12459  character(*), intent(out), optional:: time_name
12460  logical, intent(out), optional:: err
12461  end subroutine lookup_growable_url
12462  end interface
12463  interface
12464  function file_rename_mpi( file ) result(result)
12465  use dc_types, only: string
12466  character(*), intent(in):: file
12467  character(STRING):: result
12468  end function file_rename_mpi
12469  end interface
12470  continue
12471  file_work = file
12472  if ( present_and_true( flag_mpi_split ) ) &
12473  & file_work = file_rename_mpi( file_work )
12474  call lookup_growable_url(file = file_work, varname = varname, &
12475  & url = url, &
12476  & flag_time_exist = flag_time_exist, time_name = tname, err = err)
12477  call url_chop_iorange( &
12478  & fullname = url, iorange = iorange, remainder = remainder )
12479  call split( str = iorange, carray = carray, sep = gt_equal )
12480  timevar_name = carray(1)
12481  deallocate( carray )
12482  time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
12483  call historygetreal3pointer( file = file, &
12484  & varname = varname, array = array, &
12485  & range = time_range, quiet = quiet, &
12486  & flag_mpi_split = flag_mpi_split, &
12487  & returned_time = returned_time, &
12488  & flag_time_exist = flag_time_exist, &
12489  & err = err )
12490 end subroutine historygetreal3pointertimed
12491 subroutine historygetreal4pointertimed( &
12492  & file, varname, array, time, &
12493  & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
12494  use dc_string, only: tochar, split
12495  use dc_types, only: string, dp, sp
12496  use dc_trace, only: dbgmessage
12497  use dc_url, only: url_chop_iorange, gt_equal
12498  use dc_present, only: present_and_true
12499  implicit none
12500  character(*), intent(in):: file, varname
12501  real(DP), intent(in):: time
12502  logical, intent(in), optional:: quiet
12503  real(SP), pointer :: array(:,:,:,:)
12504  logical, intent(in), optional:: flag_mpi_split
12505  real(DP), intent(out), optional:: returned_time
12506  logical, intent(out), optional:: flag_time_exist
12507  logical, intent(out), optional:: err
12508  character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
12509  character(STRING), pointer:: carray (:)
12510  character(STRING):: tname
12511  character(*), parameter :: subname = "HistoryGetReal4TimeD"
12512  interface
12513  subroutine historygetreal4pointer(&
12514  & file, varname, array, range, quiet, &
12515  & flag_mpi_split, returned_time, flag_time_exist, err)
12516  use dc_types, only: dp, sp
12517  character(*), intent(in):: file
12518  character(*), intent(in):: varname
12519  character(*), intent(in), optional:: range
12520  logical, intent(in), optional:: quiet
12521  logical, intent(in), optional:: flag_mpi_split
12522  real(DP), intent(out), optional:: returned_time
12523  logical, intent(out), optional:: flag_time_exist
12524  logical, intent(out), optional:: err
12525  real(SP), pointer :: array(:,:,:,:)
12526  end subroutine historygetreal4pointer
12527  end interface
12528  interface
12529  subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
12530  character(*), intent(in):: file
12531  character(*), intent(in):: varname
12532  character(*), intent(out):: url
12533  character(*), intent(in), optional:: range
12534  logical, intent(out), optional:: flag_time_exist
12535  character(*), intent(out), optional:: time_name
12536  logical, intent(out), optional:: err
12537  end subroutine lookup_growable_url
12538  end interface
12539  interface
12540  function file_rename_mpi( file ) result(result)
12541  use dc_types, only: string
12542  character(*), intent(in):: file
12543  character(STRING):: result
12544  end function file_rename_mpi
12545  end interface
12546  continue
12547  file_work = file
12548  if ( present_and_true( flag_mpi_split ) ) &
12549  & file_work = file_rename_mpi( file_work )
12550  call lookup_growable_url(file = file_work, varname = varname, &
12551  & url = url, &
12552  & flag_time_exist = flag_time_exist, time_name = tname, err = err)
12553  call url_chop_iorange( &
12554  & fullname = url, iorange = iorange, remainder = remainder )
12555  call split( str = iorange, carray = carray, sep = gt_equal )
12556  timevar_name = carray(1)
12557  deallocate( carray )
12558  time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
12559  call historygetreal4pointer( file = file, &
12560  & varname = varname, array = array, &
12561  & range = time_range, quiet = quiet, &
12562  & flag_mpi_split = flag_mpi_split, &
12563  & returned_time = returned_time, &
12564  & flag_time_exist = flag_time_exist, &
12565  & err = err )
12566 end subroutine historygetreal4pointertimed
12567 subroutine historygetreal5pointertimed( &
12568  & file, varname, array, time, &
12569  & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
12570  use dc_string, only: tochar, split
12571  use dc_types, only: string, dp, sp
12572  use dc_trace, only: dbgmessage
12573  use dc_url, only: url_chop_iorange, gt_equal
12574  use dc_present, only: present_and_true
12575  implicit none
12576  character(*), intent(in):: file, varname
12577  real(DP), intent(in):: time
12578  logical, intent(in), optional:: quiet
12579  real(SP), pointer :: array(:,:,:,:,:)
12580  logical, intent(in), optional:: flag_mpi_split
12581  real(DP), intent(out), optional:: returned_time
12582  logical, intent(out), optional:: flag_time_exist
12583  logical, intent(out), optional:: err
12584  character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
12585  character(STRING), pointer:: carray (:)
12586  character(STRING):: tname
12587  character(*), parameter :: subname = "HistoryGetReal5TimeD"
12588  interface
12589  subroutine historygetreal5pointer(&
12590  & file, varname, array, range, quiet, &
12591  & flag_mpi_split, returned_time, flag_time_exist, err)
12592  use dc_types, only: dp, sp
12593  character(*), intent(in):: file
12594  character(*), intent(in):: varname
12595  character(*), intent(in), optional:: range
12596  logical, intent(in), optional:: quiet
12597  logical, intent(in), optional:: flag_mpi_split
12598  real(DP), intent(out), optional:: returned_time
12599  logical, intent(out), optional:: flag_time_exist
12600  logical, intent(out), optional:: err
12601  real(SP), pointer :: array(:,:,:,:,:)
12602  end subroutine historygetreal5pointer
12603  end interface
12604  interface
12605  subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
12606  character(*), intent(in):: file
12607  character(*), intent(in):: varname
12608  character(*), intent(out):: url
12609  character(*), intent(in), optional:: range
12610  logical, intent(out), optional:: flag_time_exist
12611  character(*), intent(out), optional:: time_name
12612  logical, intent(out), optional:: err
12613  end subroutine lookup_growable_url
12614  end interface
12615  interface
12616  function file_rename_mpi( file ) result(result)
12617  use dc_types, only: string
12618  character(*), intent(in):: file
12619  character(STRING):: result
12620  end function file_rename_mpi
12621  end interface
12622  continue
12623  file_work = file
12624  if ( present_and_true( flag_mpi_split ) ) &
12625  & file_work = file_rename_mpi( file_work )
12626  call lookup_growable_url(file = file_work, varname = varname, &
12627  & url = url, &
12628  & flag_time_exist = flag_time_exist, time_name = tname, err = err)
12629  call url_chop_iorange( &
12630  & fullname = url, iorange = iorange, remainder = remainder )
12631  call split( str = iorange, carray = carray, sep = gt_equal )
12632  timevar_name = carray(1)
12633  deallocate( carray )
12634  time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
12635  call historygetreal5pointer( file = file, &
12636  & varname = varname, array = array, &
12637  & range = time_range, quiet = quiet, &
12638  & flag_mpi_split = flag_mpi_split, &
12639  & returned_time = returned_time, &
12640  & flag_time_exist = flag_time_exist, &
12641  & err = err )
12642 end subroutine historygetreal5pointertimed
12643 subroutine historygetreal6pointertimed( &
12644  & file, varname, array, time, &
12645  & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
12646  use dc_string, only: tochar, split
12647  use dc_types, only: string, dp, sp
12648  use dc_trace, only: dbgmessage
12649  use dc_url, only: url_chop_iorange, gt_equal
12650  use dc_present, only: present_and_true
12651  implicit none
12652  character(*), intent(in):: file, varname
12653  real(DP), intent(in):: time
12654  logical, intent(in), optional:: quiet
12655  real(SP), pointer :: array(:,:,:,:,:,:)
12656  logical, intent(in), optional:: flag_mpi_split
12657  real(DP), intent(out), optional:: returned_time
12658  logical, intent(out), optional:: flag_time_exist
12659  logical, intent(out), optional:: err
12660  character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
12661  character(STRING), pointer:: carray (:)
12662  character(STRING):: tname
12663  character(*), parameter :: subname = "HistoryGetReal6TimeD"
12664  interface
12665  subroutine historygetreal6pointer(&
12666  & file, varname, array, range, quiet, &
12667  & flag_mpi_split, returned_time, flag_time_exist, err)
12668  use dc_types, only: dp, sp
12669  character(*), intent(in):: file
12670  character(*), intent(in):: varname
12671  character(*), intent(in), optional:: range
12672  logical, intent(in), optional:: quiet
12673  logical, intent(in), optional:: flag_mpi_split
12674  real(DP), intent(out), optional:: returned_time
12675  logical, intent(out), optional:: flag_time_exist
12676  logical, intent(out), optional:: err
12677  real(SP), pointer :: array(:,:,:,:,:,:)
12678  end subroutine historygetreal6pointer
12679  end interface
12680  interface
12681  subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
12682  character(*), intent(in):: file
12683  character(*), intent(in):: varname
12684  character(*), intent(out):: url
12685  character(*), intent(in), optional:: range
12686  logical, intent(out), optional:: flag_time_exist
12687  character(*), intent(out), optional:: time_name
12688  logical, intent(out), optional:: err
12689  end subroutine lookup_growable_url
12690  end interface
12691  interface
12692  function file_rename_mpi( file ) result(result)
12693  use dc_types, only: string
12694  character(*), intent(in):: file
12695  character(STRING):: result
12696  end function file_rename_mpi
12697  end interface
12698  continue
12699  file_work = file
12700  if ( present_and_true( flag_mpi_split ) ) &
12701  & file_work = file_rename_mpi( file_work )
12702  call lookup_growable_url(file = file_work, varname = varname, &
12703  & url = url, &
12704  & flag_time_exist = flag_time_exist, time_name = tname, err = err)
12705  call url_chop_iorange( &
12706  & fullname = url, iorange = iorange, remainder = remainder )
12707  call split( str = iorange, carray = carray, sep = gt_equal )
12708  timevar_name = carray(1)
12709  deallocate( carray )
12710  time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
12711  call historygetreal6pointer( file = file, &
12712  & varname = varname, array = array, &
12713  & range = time_range, quiet = quiet, &
12714  & flag_mpi_split = flag_mpi_split, &
12715  & returned_time = returned_time, &
12716  & flag_time_exist = flag_time_exist, &
12717  & err = err )
12718 end subroutine historygetreal6pointertimed
12719 subroutine historygetreal7pointertimed( &
12720  & file, varname, array, time, &
12721  & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
12722  use dc_string, only: tochar, split
12723  use dc_types, only: string, dp, sp
12724  use dc_trace, only: dbgmessage
12725  use dc_url, only: url_chop_iorange, gt_equal
12726  use dc_present, only: present_and_true
12727  implicit none
12728  character(*), intent(in):: file, varname
12729  real(DP), intent(in):: time
12730  logical, intent(in), optional:: quiet
12731  real(SP), pointer :: array(:,:,:,:,:,:,:)
12732  logical, intent(in), optional:: flag_mpi_split
12733  real(DP), intent(out), optional:: returned_time
12734  logical, intent(out), optional:: flag_time_exist
12735  logical, intent(out), optional:: err
12736  character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
12737  character(STRING), pointer:: carray (:)
12738  character(STRING):: tname
12739  character(*), parameter :: subname = "HistoryGetReal7TimeD"
12740  interface
12741  subroutine historygetreal7pointer(&
12742  & file, varname, array, range, quiet, &
12743  & flag_mpi_split, returned_time, flag_time_exist, err)
12744  use dc_types, only: dp, sp
12745  character(*), intent(in):: file
12746  character(*), intent(in):: varname
12747  character(*), intent(in), optional:: range
12748  logical, intent(in), optional:: quiet
12749  logical, intent(in), optional:: flag_mpi_split
12750  real(DP), intent(out), optional:: returned_time
12751  logical, intent(out), optional:: flag_time_exist
12752  logical, intent(out), optional:: err
12753  real(SP), pointer :: array(:,:,:,:,:,:,:)
12754  end subroutine historygetreal7pointer
12755  end interface
12756  interface
12757  subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
12758  character(*), intent(in):: file
12759  character(*), intent(in):: varname
12760  character(*), intent(out):: url
12761  character(*), intent(in), optional:: range
12762  logical, intent(out), optional:: flag_time_exist
12763  character(*), intent(out), optional:: time_name
12764  logical, intent(out), optional:: err
12765  end subroutine lookup_growable_url
12766  end interface
12767  interface
12768  function file_rename_mpi( file ) result(result)
12769  use dc_types, only: string
12770  character(*), intent(in):: file
12771  character(STRING):: result
12772  end function file_rename_mpi
12773  end interface
12774  continue
12775  file_work = file
12776  if ( present_and_true( flag_mpi_split ) ) &
12777  & file_work = file_rename_mpi( file_work )
12778  call lookup_growable_url(file = file_work, varname = varname, &
12779  & url = url, &
12780  & flag_time_exist = flag_time_exist, time_name = tname, err = err)
12781  call url_chop_iorange( &
12782  & fullname = url, iorange = iorange, remainder = remainder )
12783  call split( str = iorange, carray = carray, sep = gt_equal )
12784  timevar_name = carray(1)
12785  deallocate( carray )
12786  time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
12787  call historygetreal7pointer( file = file, &
12788  & varname = varname, array = array, &
12789  & range = time_range, quiet = quiet, &
12790  & flag_mpi_split = flag_mpi_split, &
12791  & returned_time = returned_time, &
12792  & flag_time_exist = flag_time_exist, &
12793  & err = err )
12794 end subroutine historygetreal7pointertimed
12795 subroutine historygetint0timed( &
12796  & file, varname, array, time, &
12797  & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
12798  use dc_string, only: tochar, split
12799  use dc_types, only: string, dp
12800  use dc_trace, only: dbgmessage
12801  use dc_url, only: url_chop_iorange, gt_equal
12802  use dc_present, only: present_and_true
12803  implicit none
12804  character(*), intent(in):: file, varname
12805  real(DP), intent(in):: time
12806  logical, intent(in), optional:: quiet
12807  integer, intent(out) :: array
12808  logical, intent(in), optional:: flag_mpi_split
12809  real(DP), intent(out), optional:: returned_time
12810  logical, intent(out), optional:: flag_time_exist
12811  logical, intent(out), optional:: err
12812  character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
12813  character(STRING), pointer:: carray (:)
12814  character(STRING):: tname
12815  character(*), parameter :: subname = "HistoryGetInt0TimeD"
12816  interface
12817  subroutine historygetint0(&
12818  & file, varname, array, range, quiet, &
12819  & flag_mpi_split, returned_time, flag_time_exist, err)
12820  use dc_types, only: dp
12821  character(*), intent(in):: file
12822  character(*), intent(in):: varname
12823  character(*), intent(in), optional:: range
12824  logical, intent(in), optional:: quiet
12825  logical, intent(in), optional:: flag_mpi_split
12826  real(DP), intent(out), optional:: returned_time
12827  logical, intent(out), optional:: flag_time_exist
12828  logical, intent(out), optional:: err
12829  integer, intent(out) :: array
12830  end subroutine historygetint0
12831  end interface
12832  interface
12833  subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
12834  character(*), intent(in):: file
12835  character(*), intent(in):: varname
12836  character(*), intent(out):: url
12837  character(*), intent(in), optional:: range
12838  logical, intent(out), optional:: flag_time_exist
12839  character(*), intent(out), optional:: time_name
12840  logical, intent(out), optional:: err
12841  end subroutine lookup_growable_url
12842  end interface
12843  interface
12844  function file_rename_mpi( file ) result(result)
12845  use dc_types, only: string
12846  character(*), intent(in):: file
12847  character(STRING):: result
12848  end function file_rename_mpi
12849  end interface
12850  continue
12851  file_work = file
12852  if ( present_and_true( flag_mpi_split ) ) &
12853  & file_work = file_rename_mpi( file_work )
12854  call lookup_growable_url(file = file_work, varname = varname, &
12855  & url = url, &
12856  & flag_time_exist = flag_time_exist, time_name = tname, err = err)
12857  call url_chop_iorange( &
12858  & fullname = url, iorange = iorange, remainder = remainder )
12859  call split( str = iorange, carray = carray, sep = gt_equal )
12860  timevar_name = carray(1)
12861  deallocate( carray )
12862  time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
12863  call historygetint0( file = file, &
12864  & varname = varname, array = array, &
12865  & range = time_range, quiet = quiet, &
12866  & flag_mpi_split = flag_mpi_split, &
12867  & returned_time = returned_time, &
12868  & flag_time_exist = flag_time_exist, &
12869  & err = err )
12870 end subroutine historygetint0timed
12871 subroutine historygetint1timed( &
12872  & file, varname, array, time, &
12873  & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
12874  use dc_string, only: tochar, split
12875  use dc_types, only: string, dp
12876  use dc_trace, only: dbgmessage
12877  use dc_url, only: url_chop_iorange, gt_equal
12878  use dc_present, only: present_and_true
12879  implicit none
12880  character(*), intent(in):: file, varname
12881  real(DP), intent(in):: time
12882  logical, intent(in), optional:: quiet
12883  integer, intent(out) :: array(:)
12884  logical, intent(in), optional:: flag_mpi_split
12885  real(DP), intent(out), optional:: returned_time
12886  logical, intent(out), optional:: flag_time_exist
12887  logical, intent(out), optional:: err
12888  character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
12889  character(STRING), pointer:: carray (:)
12890  character(STRING):: tname
12891  character(*), parameter :: subname = "HistoryGetInt1TimeD"
12892  interface
12893  subroutine historygetint1(&
12894  & file, varname, array, range, quiet, &
12895  & flag_mpi_split, returned_time, flag_time_exist, err)
12896  use dc_types, only: dp
12897  character(*), intent(in):: file
12898  character(*), intent(in):: varname
12899  character(*), intent(in), optional:: range
12900  logical, intent(in), optional:: quiet
12901  logical, intent(in), optional:: flag_mpi_split
12902  real(DP), intent(out), optional:: returned_time
12903  logical, intent(out), optional:: flag_time_exist
12904  logical, intent(out), optional:: err
12905  integer, intent(out) :: array(:)
12906  end subroutine historygetint1
12907  end interface
12908  interface
12909  subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
12910  character(*), intent(in):: file
12911  character(*), intent(in):: varname
12912  character(*), intent(out):: url
12913  character(*), intent(in), optional:: range
12914  logical, intent(out), optional:: flag_time_exist
12915  character(*), intent(out), optional:: time_name
12916  logical, intent(out), optional:: err
12917  end subroutine lookup_growable_url
12918  end interface
12919  interface
12920  function file_rename_mpi( file ) result(result)
12921  use dc_types, only: string
12922  character(*), intent(in):: file
12923  character(STRING):: result
12924  end function file_rename_mpi
12925  end interface
12926  continue
12927  file_work = file
12928  if ( present_and_true( flag_mpi_split ) ) &
12929  & file_work = file_rename_mpi( file_work )
12930  call lookup_growable_url(file = file_work, varname = varname, &
12931  & url = url, &
12932  & flag_time_exist = flag_time_exist, time_name = tname, err = err)
12933  call url_chop_iorange( &
12934  & fullname = url, iorange = iorange, remainder = remainder )
12935  call split( str = iorange, carray = carray, sep = gt_equal )
12936  timevar_name = carray(1)
12937  deallocate( carray )
12938  time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
12939  call historygetint1( file = file, &
12940  & varname = varname, array = array, &
12941  & range = time_range, quiet = quiet, &
12942  & flag_mpi_split = flag_mpi_split, &
12943  & returned_time = returned_time, &
12944  & flag_time_exist = flag_time_exist, &
12945  & err = err )
12946 end subroutine historygetint1timed
12947 subroutine historygetint2timed( &
12948  & file, varname, array, time, &
12949  & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
12950  use dc_string, only: tochar, split
12951  use dc_types, only: string, dp
12952  use dc_trace, only: dbgmessage
12953  use dc_url, only: url_chop_iorange, gt_equal
12954  use dc_present, only: present_and_true
12955  implicit none
12956  character(*), intent(in):: file, varname
12957  real(DP), intent(in):: time
12958  logical, intent(in), optional:: quiet
12959  integer, intent(out) :: array(:,:)
12960  logical, intent(in), optional:: flag_mpi_split
12961  real(DP), intent(out), optional:: returned_time
12962  logical, intent(out), optional:: flag_time_exist
12963  logical, intent(out), optional:: err
12964  character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
12965  character(STRING), pointer:: carray (:)
12966  character(STRING):: tname
12967  character(*), parameter :: subname = "HistoryGetInt2TimeD"
12968  interface
12969  subroutine historygetint2(&
12970  & file, varname, array, range, quiet, &
12971  & flag_mpi_split, returned_time, flag_time_exist, err)
12972  use dc_types, only: dp
12973  character(*), intent(in):: file
12974  character(*), intent(in):: varname
12975  character(*), intent(in), optional:: range
12976  logical, intent(in), optional:: quiet
12977  logical, intent(in), optional:: flag_mpi_split
12978  real(DP), intent(out), optional:: returned_time
12979  logical, intent(out), optional:: flag_time_exist
12980  logical, intent(out), optional:: err
12981  integer, intent(out) :: array(:,:)
12982  end subroutine historygetint2
12983  end interface
12984  interface
12985  subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
12986  character(*), intent(in):: file
12987  character(*), intent(in):: varname
12988  character(*), intent(out):: url
12989  character(*), intent(in), optional:: range
12990  logical, intent(out), optional:: flag_time_exist
12991  character(*), intent(out), optional:: time_name
12992  logical, intent(out), optional:: err
12993  end subroutine lookup_growable_url
12994  end interface
12995  interface
12996  function file_rename_mpi( file ) result(result)
12997  use dc_types, only: string
12998  character(*), intent(in):: file
12999  character(STRING):: result
13000  end function file_rename_mpi
13001  end interface
13002  continue
13003  file_work = file
13004  if ( present_and_true( flag_mpi_split ) ) &
13005  & file_work = file_rename_mpi( file_work )
13006  call lookup_growable_url(file = file_work, varname = varname, &
13007  & url = url, &
13008  & flag_time_exist = flag_time_exist, time_name = tname, err = err)
13009  call url_chop_iorange( &
13010  & fullname = url, iorange = iorange, remainder = remainder )
13011  call split( str = iorange, carray = carray, sep = gt_equal )
13012  timevar_name = carray(1)
13013  deallocate( carray )
13014  time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
13015  call historygetint2( file = file, &
13016  & varname = varname, array = array, &
13017  & range = time_range, quiet = quiet, &
13018  & flag_mpi_split = flag_mpi_split, &
13019  & returned_time = returned_time, &
13020  & flag_time_exist = flag_time_exist, &
13021  & err = err )
13022 end subroutine historygetint2timed
13023 subroutine historygetint3timed( &
13024  & file, varname, array, time, &
13025  & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
13026  use dc_string, only: tochar, split
13027  use dc_types, only: string, dp
13028  use dc_trace, only: dbgmessage
13029  use dc_url, only: url_chop_iorange, gt_equal
13030  use dc_present, only: present_and_true
13031  implicit none
13032  character(*), intent(in):: file, varname
13033  real(DP), intent(in):: time
13034  logical, intent(in), optional:: quiet
13035  integer, intent(out) :: array(:,:,:)
13036  logical, intent(in), optional:: flag_mpi_split
13037  real(DP), intent(out), optional:: returned_time
13038  logical, intent(out), optional:: flag_time_exist
13039  logical, intent(out), optional:: err
13040  character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
13041  character(STRING), pointer:: carray (:)
13042  character(STRING):: tname
13043  character(*), parameter :: subname = "HistoryGetInt3TimeD"
13044  interface
13045  subroutine historygetint3(&
13046  & file, varname, array, range, quiet, &
13047  & flag_mpi_split, returned_time, flag_time_exist, err)
13048  use dc_types, only: dp
13049  character(*), intent(in):: file
13050  character(*), intent(in):: varname
13051  character(*), intent(in), optional:: range
13052  logical, intent(in), optional:: quiet
13053  logical, intent(in), optional:: flag_mpi_split
13054  real(DP), intent(out), optional:: returned_time
13055  logical, intent(out), optional:: flag_time_exist
13056  logical, intent(out), optional:: err
13057  integer, intent(out) :: array(:,:,:)
13058  end subroutine historygetint3
13059  end interface
13060  interface
13061  subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
13062  character(*), intent(in):: file
13063  character(*), intent(in):: varname
13064  character(*), intent(out):: url
13065  character(*), intent(in), optional:: range
13066  logical, intent(out), optional:: flag_time_exist
13067  character(*), intent(out), optional:: time_name
13068  logical, intent(out), optional:: err
13069  end subroutine lookup_growable_url
13070  end interface
13071  interface
13072  function file_rename_mpi( file ) result(result)
13073  use dc_types, only: string
13074  character(*), intent(in):: file
13075  character(STRING):: result
13076  end function file_rename_mpi
13077  end interface
13078  continue
13079  file_work = file
13080  if ( present_and_true( flag_mpi_split ) ) &
13081  & file_work = file_rename_mpi( file_work )
13082  call lookup_growable_url(file = file_work, varname = varname, &
13083  & url = url, &
13084  & flag_time_exist = flag_time_exist, time_name = tname, err = err)
13085  call url_chop_iorange( &
13086  & fullname = url, iorange = iorange, remainder = remainder )
13087  call split( str = iorange, carray = carray, sep = gt_equal )
13088  timevar_name = carray(1)
13089  deallocate( carray )
13090  time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
13091  call historygetint3( file = file, &
13092  & varname = varname, array = array, &
13093  & range = time_range, quiet = quiet, &
13094  & flag_mpi_split = flag_mpi_split, &
13095  & returned_time = returned_time, &
13096  & flag_time_exist = flag_time_exist, &
13097  & err = err )
13098 end subroutine historygetint3timed
13099 subroutine historygetint4timed( &
13100  & file, varname, array, time, &
13101  & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
13102  use dc_string, only: tochar, split
13103  use dc_types, only: string, dp
13104  use dc_trace, only: dbgmessage
13105  use dc_url, only: url_chop_iorange, gt_equal
13106  use dc_present, only: present_and_true
13107  implicit none
13108  character(*), intent(in):: file, varname
13109  real(DP), intent(in):: time
13110  logical, intent(in), optional:: quiet
13111  integer, intent(out) :: array(:,:,:,:)
13112  logical, intent(in), optional:: flag_mpi_split
13113  real(DP), intent(out), optional:: returned_time
13114  logical, intent(out), optional:: flag_time_exist
13115  logical, intent(out), optional:: err
13116  character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
13117  character(STRING), pointer:: carray (:)
13118  character(STRING):: tname
13119  character(*), parameter :: subname = "HistoryGetInt4TimeD"
13120  interface
13121  subroutine historygetint4(&
13122  & file, varname, array, range, quiet, &
13123  & flag_mpi_split, returned_time, flag_time_exist, err)
13124  use dc_types, only: dp
13125  character(*), intent(in):: file
13126  character(*), intent(in):: varname
13127  character(*), intent(in), optional:: range
13128  logical, intent(in), optional:: quiet
13129  logical, intent(in), optional:: flag_mpi_split
13130  real(DP), intent(out), optional:: returned_time
13131  logical, intent(out), optional:: flag_time_exist
13132  logical, intent(out), optional:: err
13133  integer, intent(out) :: array(:,:,:,:)
13134  end subroutine historygetint4
13135  end interface
13136  interface
13137  subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
13138  character(*), intent(in):: file
13139  character(*), intent(in):: varname
13140  character(*), intent(out):: url
13141  character(*), intent(in), optional:: range
13142  logical, intent(out), optional:: flag_time_exist
13143  character(*), intent(out), optional:: time_name
13144  logical, intent(out), optional:: err
13145  end subroutine lookup_growable_url
13146  end interface
13147  interface
13148  function file_rename_mpi( file ) result(result)
13149  use dc_types, only: string
13150  character(*), intent(in):: file
13151  character(STRING):: result
13152  end function file_rename_mpi
13153  end interface
13154  continue
13155  file_work = file
13156  if ( present_and_true( flag_mpi_split ) ) &
13157  & file_work = file_rename_mpi( file_work )
13158  call lookup_growable_url(file = file_work, varname = varname, &
13159  & url = url, &
13160  & flag_time_exist = flag_time_exist, time_name = tname, err = err)
13161  call url_chop_iorange( &
13162  & fullname = url, iorange = iorange, remainder = remainder )
13163  call split( str = iorange, carray = carray, sep = gt_equal )
13164  timevar_name = carray(1)
13165  deallocate( carray )
13166  time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
13167  call historygetint4( file = file, &
13168  & varname = varname, array = array, &
13169  & range = time_range, quiet = quiet, &
13170  & flag_mpi_split = flag_mpi_split, &
13171  & returned_time = returned_time, &
13172  & flag_time_exist = flag_time_exist, &
13173  & err = err )
13174 end subroutine historygetint4timed
13175 subroutine historygetint5timed( &
13176  & file, varname, array, time, &
13177  & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
13178  use dc_string, only: tochar, split
13179  use dc_types, only: string, dp
13180  use dc_trace, only: dbgmessage
13181  use dc_url, only: url_chop_iorange, gt_equal
13182  use dc_present, only: present_and_true
13183  implicit none
13184  character(*), intent(in):: file, varname
13185  real(DP), intent(in):: time
13186  logical, intent(in), optional:: quiet
13187  integer, intent(out) :: array(:,:,:,:,:)
13188  logical, intent(in), optional:: flag_mpi_split
13189  real(DP), intent(out), optional:: returned_time
13190  logical, intent(out), optional:: flag_time_exist
13191  logical, intent(out), optional:: err
13192  character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
13193  character(STRING), pointer:: carray (:)
13194  character(STRING):: tname
13195  character(*), parameter :: subname = "HistoryGetInt5TimeD"
13196  interface
13197  subroutine historygetint5(&
13198  & file, varname, array, range, quiet, &
13199  & flag_mpi_split, returned_time, flag_time_exist, err)
13200  use dc_types, only: dp
13201  character(*), intent(in):: file
13202  character(*), intent(in):: varname
13203  character(*), intent(in), optional:: range
13204  logical, intent(in), optional:: quiet
13205  logical, intent(in), optional:: flag_mpi_split
13206  real(DP), intent(out), optional:: returned_time
13207  logical, intent(out), optional:: flag_time_exist
13208  logical, intent(out), optional:: err
13209  integer, intent(out) :: array(:,:,:,:,:)
13210  end subroutine historygetint5
13211  end interface
13212  interface
13213  subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
13214  character(*), intent(in):: file
13215  character(*), intent(in):: varname
13216  character(*), intent(out):: url
13217  character(*), intent(in), optional:: range
13218  logical, intent(out), optional:: flag_time_exist
13219  character(*), intent(out), optional:: time_name
13220  logical, intent(out), optional:: err
13221  end subroutine lookup_growable_url
13222  end interface
13223  interface
13224  function file_rename_mpi( file ) result(result)
13225  use dc_types, only: string
13226  character(*), intent(in):: file
13227  character(STRING):: result
13228  end function file_rename_mpi
13229  end interface
13230  continue
13231  file_work = file
13232  if ( present_and_true( flag_mpi_split ) ) &
13233  & file_work = file_rename_mpi( file_work )
13234  call lookup_growable_url(file = file_work, varname = varname, &
13235  & url = url, &
13236  & flag_time_exist = flag_time_exist, time_name = tname, err = err)
13237  call url_chop_iorange( &
13238  & fullname = url, iorange = iorange, remainder = remainder )
13239  call split( str = iorange, carray = carray, sep = gt_equal )
13240  timevar_name = carray(1)
13241  deallocate( carray )
13242  time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
13243  call historygetint5( file = file, &
13244  & varname = varname, array = array, &
13245  & range = time_range, quiet = quiet, &
13246  & flag_mpi_split = flag_mpi_split, &
13247  & returned_time = returned_time, &
13248  & flag_time_exist = flag_time_exist, &
13249  & err = err )
13250 end subroutine historygetint5timed
13251 subroutine historygetint6timed( &
13252  & file, varname, array, time, &
13253  & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
13254  use dc_string, only: tochar, split
13255  use dc_types, only: string, dp
13256  use dc_trace, only: dbgmessage
13257  use dc_url, only: url_chop_iorange, gt_equal
13258  use dc_present, only: present_and_true
13259  implicit none
13260  character(*), intent(in):: file, varname
13261  real(DP), intent(in):: time
13262  logical, intent(in), optional:: quiet
13263  integer, intent(out) :: array(:,:,:,:,:,:)
13264  logical, intent(in), optional:: flag_mpi_split
13265  real(DP), intent(out), optional:: returned_time
13266  logical, intent(out), optional:: flag_time_exist
13267  logical, intent(out), optional:: err
13268  character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
13269  character(STRING), pointer:: carray (:)
13270  character(STRING):: tname
13271  character(*), parameter :: subname = "HistoryGetInt6TimeD"
13272  interface
13273  subroutine historygetint6(&
13274  & file, varname, array, range, quiet, &
13275  & flag_mpi_split, returned_time, flag_time_exist, err)
13276  use dc_types, only: dp
13277  character(*), intent(in):: file
13278  character(*), intent(in):: varname
13279  character(*), intent(in), optional:: range
13280  logical, intent(in), optional:: quiet
13281  logical, intent(in), optional:: flag_mpi_split
13282  real(DP), intent(out), optional:: returned_time
13283  logical, intent(out), optional:: flag_time_exist
13284  logical, intent(out), optional:: err
13285  integer, intent(out) :: array(:,:,:,:,:,:)
13286  end subroutine historygetint6
13287  end interface
13288  interface
13289  subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
13290  character(*), intent(in):: file
13291  character(*), intent(in):: varname
13292  character(*), intent(out):: url
13293  character(*), intent(in), optional:: range
13294  logical, intent(out), optional:: flag_time_exist
13295  character(*), intent(out), optional:: time_name
13296  logical, intent(out), optional:: err
13297  end subroutine lookup_growable_url
13298  end interface
13299  interface
13300  function file_rename_mpi( file ) result(result)
13301  use dc_types, only: string
13302  character(*), intent(in):: file
13303  character(STRING):: result
13304  end function file_rename_mpi
13305  end interface
13306  continue
13307  file_work = file
13308  if ( present_and_true( flag_mpi_split ) ) &
13309  & file_work = file_rename_mpi( file_work )
13310  call lookup_growable_url(file = file_work, varname = varname, &
13311  & url = url, &
13312  & flag_time_exist = flag_time_exist, time_name = tname, err = err)
13313  call url_chop_iorange( &
13314  & fullname = url, iorange = iorange, remainder = remainder )
13315  call split( str = iorange, carray = carray, sep = gt_equal )
13316  timevar_name = carray(1)
13317  deallocate( carray )
13318  time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
13319  call historygetint6( file = file, &
13320  & varname = varname, array = array, &
13321  & range = time_range, quiet = quiet, &
13322  & flag_mpi_split = flag_mpi_split, &
13323  & returned_time = returned_time, &
13324  & flag_time_exist = flag_time_exist, &
13325  & err = err )
13326 end subroutine historygetint6timed
13327 subroutine historygetint7timed( &
13328  & file, varname, array, time, &
13329  & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
13330  use dc_string, only: tochar, split
13331  use dc_types, only: string, dp
13332  use dc_trace, only: dbgmessage
13333  use dc_url, only: url_chop_iorange, gt_equal
13334  use dc_present, only: present_and_true
13335  implicit none
13336  character(*), intent(in):: file, varname
13337  real(DP), intent(in):: time
13338  logical, intent(in), optional:: quiet
13339  integer, intent(out) :: array(:,:,:,:,:,:,:)
13340  logical, intent(in), optional:: flag_mpi_split
13341  real(DP), intent(out), optional:: returned_time
13342  logical, intent(out), optional:: flag_time_exist
13343  logical, intent(out), optional:: err
13344  character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
13345  character(STRING), pointer:: carray (:)
13346  character(STRING):: tname
13347  character(*), parameter :: subname = "HistoryGetInt7TimeD"
13348  interface
13349  subroutine historygetint7(&
13350  & file, varname, array, range, quiet, &
13351  & flag_mpi_split, returned_time, flag_time_exist, err)
13352  use dc_types, only: dp
13353  character(*), intent(in):: file
13354  character(*), intent(in):: varname
13355  character(*), intent(in), optional:: range
13356  logical, intent(in), optional:: quiet
13357  logical, intent(in), optional:: flag_mpi_split
13358  real(DP), intent(out), optional:: returned_time
13359  logical, intent(out), optional:: flag_time_exist
13360  logical, intent(out), optional:: err
13361  integer, intent(out) :: array(:,:,:,:,:,:,:)
13362  end subroutine historygetint7
13363  end interface
13364  interface
13365  subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
13366  character(*), intent(in):: file
13367  character(*), intent(in):: varname
13368  character(*), intent(out):: url
13369  character(*), intent(in), optional:: range
13370  logical, intent(out), optional:: flag_time_exist
13371  character(*), intent(out), optional:: time_name
13372  logical, intent(out), optional:: err
13373  end subroutine lookup_growable_url
13374  end interface
13375  interface
13376  function file_rename_mpi( file ) result(result)
13377  use dc_types, only: string
13378  character(*), intent(in):: file
13379  character(STRING):: result
13380  end function file_rename_mpi
13381  end interface
13382  continue
13383  file_work = file
13384  if ( present_and_true( flag_mpi_split ) ) &
13385  & file_work = file_rename_mpi( file_work )
13386  call lookup_growable_url(file = file_work, varname = varname, &
13387  & url = url, &
13388  & flag_time_exist = flag_time_exist, time_name = tname, err = err)
13389  call url_chop_iorange( &
13390  & fullname = url, iorange = iorange, remainder = remainder )
13391  call split( str = iorange, carray = carray, sep = gt_equal )
13392  timevar_name = carray(1)
13393  deallocate( carray )
13394  time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
13395  call historygetint7( file = file, &
13396  & varname = varname, array = array, &
13397  & range = time_range, quiet = quiet, &
13398  & flag_mpi_split = flag_mpi_split, &
13399  & returned_time = returned_time, &
13400  & flag_time_exist = flag_time_exist, &
13401  & err = err )
13402 end subroutine historygetint7timed
13403 subroutine historygetint0pointertimed( &
13404  & file, varname, array, time, &
13405  & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
13406  use dc_string, only: tochar, split
13407  use dc_types, only: string, dp
13408  use dc_trace, only: dbgmessage
13409  use dc_url, only: url_chop_iorange, gt_equal
13410  use dc_present, only: present_and_true
13411  implicit none
13412  character(*), intent(in):: file, varname
13413  real(DP), intent(in):: time
13414  logical, intent(in), optional:: quiet
13415  integer, pointer :: array
13416  logical, intent(in), optional:: flag_mpi_split
13417  real(DP), intent(out), optional:: returned_time
13418  logical, intent(out), optional:: flag_time_exist
13419  logical, intent(out), optional:: err
13420  character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
13421  character(STRING), pointer:: carray (:)
13422  character(STRING):: tname
13423  character(*), parameter :: subname = "HistoryGetInt0TimeD"
13424  interface
13425  subroutine historygetint0pointer(&
13426  & file, varname, array, range, quiet, &
13427  & flag_mpi_split, returned_time, flag_time_exist, err)
13428  use dc_types, only: dp
13429  character(*), intent(in):: file
13430  character(*), intent(in):: varname
13431  character(*), intent(in), optional:: range
13432  logical, intent(in), optional:: quiet
13433  logical, intent(in), optional:: flag_mpi_split
13434  real(DP), intent(out), optional:: returned_time
13435  logical, intent(out), optional:: flag_time_exist
13436  logical, intent(out), optional:: err
13437  integer, pointer :: array
13438  end subroutine historygetint0pointer
13439  end interface
13440  interface
13441  subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
13442  character(*), intent(in):: file
13443  character(*), intent(in):: varname
13444  character(*), intent(out):: url
13445  character(*), intent(in), optional:: range
13446  logical, intent(out), optional:: flag_time_exist
13447  character(*), intent(out), optional:: time_name
13448  logical, intent(out), optional:: err
13449  end subroutine lookup_growable_url
13450  end interface
13451  interface
13452  function file_rename_mpi( file ) result(result)
13453  use dc_types, only: string
13454  character(*), intent(in):: file
13455  character(STRING):: result
13456  end function file_rename_mpi
13457  end interface
13458  continue
13459  file_work = file
13460  if ( present_and_true( flag_mpi_split ) ) &
13461  & file_work = file_rename_mpi( file_work )
13462  call lookup_growable_url(file = file_work, varname = varname, &
13463  & url = url, &
13464  & flag_time_exist = flag_time_exist, time_name = tname, err = err)
13465  call url_chop_iorange( &
13466  & fullname = url, iorange = iorange, remainder = remainder )
13467  call split( str = iorange, carray = carray, sep = gt_equal )
13468  timevar_name = carray(1)
13469  deallocate( carray )
13470  time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
13471  call historygetint0pointer( file = file, &
13472  & varname = varname, array = array, &
13473  & range = time_range, quiet = quiet, &
13474  & flag_mpi_split = flag_mpi_split, &
13475  & returned_time = returned_time, &
13476  & flag_time_exist = flag_time_exist, &
13477  & err = err )
13478 end subroutine historygetint0pointertimed
13479 subroutine historygetint1pointertimed( &
13480  & file, varname, array, time, &
13481  & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
13482  use dc_string, only: tochar, split
13483  use dc_types, only: string, dp
13484  use dc_trace, only: dbgmessage
13485  use dc_url, only: url_chop_iorange, gt_equal
13486  use dc_present, only: present_and_true
13487  implicit none
13488  character(*), intent(in):: file, varname
13489  real(DP), intent(in):: time
13490  logical, intent(in), optional:: quiet
13491  integer, pointer :: array(:)
13492  logical, intent(in), optional:: flag_mpi_split
13493  real(DP), intent(out), optional:: returned_time
13494  logical, intent(out), optional:: flag_time_exist
13495  logical, intent(out), optional:: err
13496  character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
13497  character(STRING), pointer:: carray (:)
13498  character(STRING):: tname
13499  character(*), parameter :: subname = "HistoryGetInt1TimeD"
13500  interface
13501  subroutine historygetint1pointer(&
13502  & file, varname, array, range, quiet, &
13503  & flag_mpi_split, returned_time, flag_time_exist, err)
13504  use dc_types, only: dp
13505  character(*), intent(in):: file
13506  character(*), intent(in):: varname
13507  character(*), intent(in), optional:: range
13508  logical, intent(in), optional:: quiet
13509  logical, intent(in), optional:: flag_mpi_split
13510  real(DP), intent(out), optional:: returned_time
13511  logical, intent(out), optional:: flag_time_exist
13512  logical, intent(out), optional:: err
13513  integer, pointer :: array(:)
13514  end subroutine historygetint1pointer
13515  end interface
13516  interface
13517  subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
13518  character(*), intent(in):: file
13519  character(*), intent(in):: varname
13520  character(*), intent(out):: url
13521  character(*), intent(in), optional:: range
13522  logical, intent(out), optional:: flag_time_exist
13523  character(*), intent(out), optional:: time_name
13524  logical, intent(out), optional:: err
13525  end subroutine lookup_growable_url
13526  end interface
13527  interface
13528  function file_rename_mpi( file ) result(result)
13529  use dc_types, only: string
13530  character(*), intent(in):: file
13531  character(STRING):: result
13532  end function file_rename_mpi
13533  end interface
13534  continue
13535  file_work = file
13536  if ( present_and_true( flag_mpi_split ) ) &
13537  & file_work = file_rename_mpi( file_work )
13538  call lookup_growable_url(file = file_work, varname = varname, &
13539  & url = url, &
13540  & flag_time_exist = flag_time_exist, time_name = tname, err = err)
13541  call url_chop_iorange( &
13542  & fullname = url, iorange = iorange, remainder = remainder )
13543  call split( str = iorange, carray = carray, sep = gt_equal )
13544  timevar_name = carray(1)
13545  deallocate( carray )
13546  time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
13547  call historygetint1pointer( file = file, &
13548  & varname = varname, array = array, &
13549  & range = time_range, quiet = quiet, &
13550  & flag_mpi_split = flag_mpi_split, &
13551  & returned_time = returned_time, &
13552  & flag_time_exist = flag_time_exist, &
13553  & err = err )
13554 end subroutine historygetint1pointertimed
13555 subroutine historygetint2pointertimed( &
13556  & file, varname, array, time, &
13557  & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
13558  use dc_string, only: tochar, split
13559  use dc_types, only: string, dp
13560  use dc_trace, only: dbgmessage
13561  use dc_url, only: url_chop_iorange, gt_equal
13562  use dc_present, only: present_and_true
13563  implicit none
13564  character(*), intent(in):: file, varname
13565  real(DP), intent(in):: time
13566  logical, intent(in), optional:: quiet
13567  integer, pointer :: array(:,:)
13568  logical, intent(in), optional:: flag_mpi_split
13569  real(DP), intent(out), optional:: returned_time
13570  logical, intent(out), optional:: flag_time_exist
13571  logical, intent(out), optional:: err
13572  character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
13573  character(STRING), pointer:: carray (:)
13574  character(STRING):: tname
13575  character(*), parameter :: subname = "HistoryGetInt2TimeD"
13576  interface
13577  subroutine historygetint2pointer(&
13578  & file, varname, array, range, quiet, &
13579  & flag_mpi_split, returned_time, flag_time_exist, err)
13580  use dc_types, only: dp
13581  character(*), intent(in):: file
13582  character(*), intent(in):: varname
13583  character(*), intent(in), optional:: range
13584  logical, intent(in), optional:: quiet
13585  logical, intent(in), optional:: flag_mpi_split
13586  real(DP), intent(out), optional:: returned_time
13587  logical, intent(out), optional:: flag_time_exist
13588  logical, intent(out), optional:: err
13589  integer, pointer :: array(:,:)
13590  end subroutine historygetint2pointer
13591  end interface
13592  interface
13593  subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
13594  character(*), intent(in):: file
13595  character(*), intent(in):: varname
13596  character(*), intent(out):: url
13597  character(*), intent(in), optional:: range
13598  logical, intent(out), optional:: flag_time_exist
13599  character(*), intent(out), optional:: time_name
13600  logical, intent(out), optional:: err
13601  end subroutine lookup_growable_url
13602  end interface
13603  interface
13604  function file_rename_mpi( file ) result(result)
13605  use dc_types, only: string
13606  character(*), intent(in):: file
13607  character(STRING):: result
13608  end function file_rename_mpi
13609  end interface
13610  continue
13611  file_work = file
13612  if ( present_and_true( flag_mpi_split ) ) &
13613  & file_work = file_rename_mpi( file_work )
13614  call lookup_growable_url(file = file_work, varname = varname, &
13615  & url = url, &
13616  & flag_time_exist = flag_time_exist, time_name = tname, err = err)
13617  call url_chop_iorange( &
13618  & fullname = url, iorange = iorange, remainder = remainder )
13619  call split( str = iorange, carray = carray, sep = gt_equal )
13620  timevar_name = carray(1)
13621  deallocate( carray )
13622  time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
13623  call historygetint2pointer( file = file, &
13624  & varname = varname, array = array, &
13625  & range = time_range, quiet = quiet, &
13626  & flag_mpi_split = flag_mpi_split, &
13627  & returned_time = returned_time, &
13628  & flag_time_exist = flag_time_exist, &
13629  & err = err )
13630 end subroutine historygetint2pointertimed
13631 subroutine historygetint3pointertimed( &
13632  & file, varname, array, time, &
13633  & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
13634  use dc_string, only: tochar, split
13635  use dc_types, only: string, dp
13636  use dc_trace, only: dbgmessage
13637  use dc_url, only: url_chop_iorange, gt_equal
13638  use dc_present, only: present_and_true
13639  implicit none
13640  character(*), intent(in):: file, varname
13641  real(DP), intent(in):: time
13642  logical, intent(in), optional:: quiet
13643  integer, pointer :: array(:,:,:)
13644  logical, intent(in), optional:: flag_mpi_split
13645  real(DP), intent(out), optional:: returned_time
13646  logical, intent(out), optional:: flag_time_exist
13647  logical, intent(out), optional:: err
13648  character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
13649  character(STRING), pointer:: carray (:)
13650  character(STRING):: tname
13651  character(*), parameter :: subname = "HistoryGetInt3TimeD"
13652  interface
13653  subroutine historygetint3pointer(&
13654  & file, varname, array, range, quiet, &
13655  & flag_mpi_split, returned_time, flag_time_exist, err)
13656  use dc_types, only: dp
13657  character(*), intent(in):: file
13658  character(*), intent(in):: varname
13659  character(*), intent(in), optional:: range
13660  logical, intent(in), optional:: quiet
13661  logical, intent(in), optional:: flag_mpi_split
13662  real(DP), intent(out), optional:: returned_time
13663  logical, intent(out), optional:: flag_time_exist
13664  logical, intent(out), optional:: err
13665  integer, pointer :: array(:,:,:)
13666  end subroutine historygetint3pointer
13667  end interface
13668  interface
13669  subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
13670  character(*), intent(in):: file
13671  character(*), intent(in):: varname
13672  character(*), intent(out):: url
13673  character(*), intent(in), optional:: range
13674  logical, intent(out), optional:: flag_time_exist
13675  character(*), intent(out), optional:: time_name
13676  logical, intent(out), optional:: err
13677  end subroutine lookup_growable_url
13678  end interface
13679  interface
13680  function file_rename_mpi( file ) result(result)
13681  use dc_types, only: string
13682  character(*), intent(in):: file
13683  character(STRING):: result
13684  end function file_rename_mpi
13685  end interface
13686  continue
13687  file_work = file
13688  if ( present_and_true( flag_mpi_split ) ) &
13689  & file_work = file_rename_mpi( file_work )
13690  call lookup_growable_url(file = file_work, varname = varname, &
13691  & url = url, &
13692  & flag_time_exist = flag_time_exist, time_name = tname, err = err)
13693  call url_chop_iorange( &
13694  & fullname = url, iorange = iorange, remainder = remainder )
13695  call split( str = iorange, carray = carray, sep = gt_equal )
13696  timevar_name = carray(1)
13697  deallocate( carray )
13698  time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
13699  call historygetint3pointer( file = file, &
13700  & varname = varname, array = array, &
13701  & range = time_range, quiet = quiet, &
13702  & flag_mpi_split = flag_mpi_split, &
13703  & returned_time = returned_time, &
13704  & flag_time_exist = flag_time_exist, &
13705  & err = err )
13706 end subroutine historygetint3pointertimed
13707 subroutine historygetint4pointertimed( &
13708  & file, varname, array, time, &
13709  & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
13710  use dc_string, only: tochar, split
13711  use dc_types, only: string, dp
13712  use dc_trace, only: dbgmessage
13713  use dc_url, only: url_chop_iorange, gt_equal
13714  use dc_present, only: present_and_true
13715  implicit none
13716  character(*), intent(in):: file, varname
13717  real(DP), intent(in):: time
13718  logical, intent(in), optional:: quiet
13719  integer, pointer :: array(:,:,:,:)
13720  logical, intent(in), optional:: flag_mpi_split
13721  real(DP), intent(out), optional:: returned_time
13722  logical, intent(out), optional:: flag_time_exist
13723  logical, intent(out), optional:: err
13724  character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
13725  character(STRING), pointer:: carray (:)
13726  character(STRING):: tname
13727  character(*), parameter :: subname = "HistoryGetInt4TimeD"
13728  interface
13729  subroutine historygetint4pointer(&
13730  & file, varname, array, range, quiet, &
13731  & flag_mpi_split, returned_time, flag_time_exist, err)
13732  use dc_types, only: dp
13733  character(*), intent(in):: file
13734  character(*), intent(in):: varname
13735  character(*), intent(in), optional:: range
13736  logical, intent(in), optional:: quiet
13737  logical, intent(in), optional:: flag_mpi_split
13738  real(DP), intent(out), optional:: returned_time
13739  logical, intent(out), optional:: flag_time_exist
13740  logical, intent(out), optional:: err
13741  integer, pointer :: array(:,:,:,:)
13742  end subroutine historygetint4pointer
13743  end interface
13744  interface
13745  subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
13746  character(*), intent(in):: file
13747  character(*), intent(in):: varname
13748  character(*), intent(out):: url
13749  character(*), intent(in), optional:: range
13750  logical, intent(out), optional:: flag_time_exist
13751  character(*), intent(out), optional:: time_name
13752  logical, intent(out), optional:: err
13753  end subroutine lookup_growable_url
13754  end interface
13755  interface
13756  function file_rename_mpi( file ) result(result)
13757  use dc_types, only: string
13758  character(*), intent(in):: file
13759  character(STRING):: result
13760  end function file_rename_mpi
13761  end interface
13762  continue
13763  file_work = file
13764  if ( present_and_true( flag_mpi_split ) ) &
13765  & file_work = file_rename_mpi( file_work )
13766  call lookup_growable_url(file = file_work, varname = varname, &
13767  & url = url, &
13768  & flag_time_exist = flag_time_exist, time_name = tname, err = err)
13769  call url_chop_iorange( &
13770  & fullname = url, iorange = iorange, remainder = remainder )
13771  call split( str = iorange, carray = carray, sep = gt_equal )
13772  timevar_name = carray(1)
13773  deallocate( carray )
13774  time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
13775  call historygetint4pointer( file = file, &
13776  & varname = varname, array = array, &
13777  & range = time_range, quiet = quiet, &
13778  & flag_mpi_split = flag_mpi_split, &
13779  & returned_time = returned_time, &
13780  & flag_time_exist = flag_time_exist, &
13781  & err = err )
13782 end subroutine historygetint4pointertimed
13783 subroutine historygetint5pointertimed( &
13784  & file, varname, array, time, &
13785  & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
13786  use dc_string, only: tochar, split
13787  use dc_types, only: string, dp
13788  use dc_trace, only: dbgmessage
13789  use dc_url, only: url_chop_iorange, gt_equal
13790  use dc_present, only: present_and_true
13791  implicit none
13792  character(*), intent(in):: file, varname
13793  real(DP), intent(in):: time
13794  logical, intent(in), optional:: quiet
13795  integer, pointer :: array(:,:,:,:,:)
13796  logical, intent(in), optional:: flag_mpi_split
13797  real(DP), intent(out), optional:: returned_time
13798  logical, intent(out), optional:: flag_time_exist
13799  logical, intent(out), optional:: err
13800  character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
13801  character(STRING), pointer:: carray (:)
13802  character(STRING):: tname
13803  character(*), parameter :: subname = "HistoryGetInt5TimeD"
13804  interface
13805  subroutine historygetint5pointer(&
13806  & file, varname, array, range, quiet, &
13807  & flag_mpi_split, returned_time, flag_time_exist, err)
13808  use dc_types, only: dp
13809  character(*), intent(in):: file
13810  character(*), intent(in):: varname
13811  character(*), intent(in), optional:: range
13812  logical, intent(in), optional:: quiet
13813  logical, intent(in), optional:: flag_mpi_split
13814  real(DP), intent(out), optional:: returned_time
13815  logical, intent(out), optional:: flag_time_exist
13816  logical, intent(out), optional:: err
13817  integer, pointer :: array(:,:,:,:,:)
13818  end subroutine historygetint5pointer
13819  end interface
13820  interface
13821  subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
13822  character(*), intent(in):: file
13823  character(*), intent(in):: varname
13824  character(*), intent(out):: url
13825  character(*), intent(in), optional:: range
13826  logical, intent(out), optional:: flag_time_exist
13827  character(*), intent(out), optional:: time_name
13828  logical, intent(out), optional:: err
13829  end subroutine lookup_growable_url
13830  end interface
13831  interface
13832  function file_rename_mpi( file ) result(result)
13833  use dc_types, only: string
13834  character(*), intent(in):: file
13835  character(STRING):: result
13836  end function file_rename_mpi
13837  end interface
13838  continue
13839  file_work = file
13840  if ( present_and_true( flag_mpi_split ) ) &
13841  & file_work = file_rename_mpi( file_work )
13842  call lookup_growable_url(file = file_work, varname = varname, &
13843  & url = url, &
13844  & flag_time_exist = flag_time_exist, time_name = tname, err = err)
13845  call url_chop_iorange( &
13846  & fullname = url, iorange = iorange, remainder = remainder )
13847  call split( str = iorange, carray = carray, sep = gt_equal )
13848  timevar_name = carray(1)
13849  deallocate( carray )
13850  time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
13851  call historygetint5pointer( file = file, &
13852  & varname = varname, array = array, &
13853  & range = time_range, quiet = quiet, &
13854  & flag_mpi_split = flag_mpi_split, &
13855  & returned_time = returned_time, &
13856  & flag_time_exist = flag_time_exist, &
13857  & err = err )
13858 end subroutine historygetint5pointertimed
13859 subroutine historygetint6pointertimed( &
13860  & file, varname, array, time, &
13861  & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
13862  use dc_string, only: tochar, split
13863  use dc_types, only: string, dp
13864  use dc_trace, only: dbgmessage
13865  use dc_url, only: url_chop_iorange, gt_equal
13866  use dc_present, only: present_and_true
13867  implicit none
13868  character(*), intent(in):: file, varname
13869  real(DP), intent(in):: time
13870  logical, intent(in), optional:: quiet
13871  integer, pointer :: array(:,:,:,:,:,:)
13872  logical, intent(in), optional:: flag_mpi_split
13873  real(DP), intent(out), optional:: returned_time
13874  logical, intent(out), optional:: flag_time_exist
13875  logical, intent(out), optional:: err
13876  character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
13877  character(STRING), pointer:: carray (:)
13878  character(STRING):: tname
13879  character(*), parameter :: subname = "HistoryGetInt6TimeD"
13880  interface
13881  subroutine historygetint6pointer(&
13882  & file, varname, array, range, quiet, &
13883  & flag_mpi_split, returned_time, flag_time_exist, err)
13884  use dc_types, only: dp
13885  character(*), intent(in):: file
13886  character(*), intent(in):: varname
13887  character(*), intent(in), optional:: range
13888  logical, intent(in), optional:: quiet
13889  logical, intent(in), optional:: flag_mpi_split
13890  real(DP), intent(out), optional:: returned_time
13891  logical, intent(out), optional:: flag_time_exist
13892  logical, intent(out), optional:: err
13893  integer, pointer :: array(:,:,:,:,:,:)
13894  end subroutine historygetint6pointer
13895  end interface
13896  interface
13897  subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
13898  character(*), intent(in):: file
13899  character(*), intent(in):: varname
13900  character(*), intent(out):: url
13901  character(*), intent(in), optional:: range
13902  logical, intent(out), optional:: flag_time_exist
13903  character(*), intent(out), optional:: time_name
13904  logical, intent(out), optional:: err
13905  end subroutine lookup_growable_url
13906  end interface
13907  interface
13908  function file_rename_mpi( file ) result(result)
13909  use dc_types, only: string
13910  character(*), intent(in):: file
13911  character(STRING):: result
13912  end function file_rename_mpi
13913  end interface
13914  continue
13915  file_work = file
13916  if ( present_and_true( flag_mpi_split ) ) &
13917  & file_work = file_rename_mpi( file_work )
13918  call lookup_growable_url(file = file_work, varname = varname, &
13919  & url = url, &
13920  & flag_time_exist = flag_time_exist, time_name = tname, err = err)
13921  call url_chop_iorange( &
13922  & fullname = url, iorange = iorange, remainder = remainder )
13923  call split( str = iorange, carray = carray, sep = gt_equal )
13924  timevar_name = carray(1)
13925  deallocate( carray )
13926  time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
13927  call historygetint6pointer( file = file, &
13928  & varname = varname, array = array, &
13929  & range = time_range, quiet = quiet, &
13930  & flag_mpi_split = flag_mpi_split, &
13931  & returned_time = returned_time, &
13932  & flag_time_exist = flag_time_exist, &
13933  & err = err )
13934 end subroutine historygetint6pointertimed
13935 subroutine historygetint7pointertimed( &
13936  & file, varname, array, time, &
13937  & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
13938  use dc_string, only: tochar, split
13939  use dc_types, only: string, dp
13940  use dc_trace, only: dbgmessage
13941  use dc_url, only: url_chop_iorange, gt_equal
13942  use dc_present, only: present_and_true
13943  implicit none
13944  character(*), intent(in):: file, varname
13945  real(DP), intent(in):: time
13946  logical, intent(in), optional:: quiet
13947  integer, pointer :: array(:,:,:,:,:,:,:)
13948  logical, intent(in), optional:: flag_mpi_split
13949  real(DP), intent(out), optional:: returned_time
13950  logical, intent(out), optional:: flag_time_exist
13951  logical, intent(out), optional:: err
13952  character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
13953  character(STRING), pointer:: carray (:)
13954  character(STRING):: tname
13955  character(*), parameter :: subname = "HistoryGetInt7TimeD"
13956  interface
13957  subroutine historygetint7pointer(&
13958  & file, varname, array, range, quiet, &
13959  & flag_mpi_split, returned_time, flag_time_exist, err)
13960  use dc_types, only: dp
13961  character(*), intent(in):: file
13962  character(*), intent(in):: varname
13963  character(*), intent(in), optional:: range
13964  logical, intent(in), optional:: quiet
13965  logical, intent(in), optional:: flag_mpi_split
13966  real(DP), intent(out), optional:: returned_time
13967  logical, intent(out), optional:: flag_time_exist
13968  logical, intent(out), optional:: err
13969  integer, pointer :: array(:,:,:,:,:,:,:)
13970  end subroutine historygetint7pointer
13971  end interface
13972  interface
13973  subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
13974  character(*), intent(in):: file
13975  character(*), intent(in):: varname
13976  character(*), intent(out):: url
13977  character(*), intent(in), optional:: range
13978  logical, intent(out), optional:: flag_time_exist
13979  character(*), intent(out), optional:: time_name
13980  logical, intent(out), optional:: err
13981  end subroutine lookup_growable_url
13982  end interface
13983  interface
13984  function file_rename_mpi( file ) result(result)
13985  use dc_types, only: string
13986  character(*), intent(in):: file
13987  character(STRING):: result
13988  end function file_rename_mpi
13989  end interface
13990  continue
13991  file_work = file
13992  if ( present_and_true( flag_mpi_split ) ) &
13993  & file_work = file_rename_mpi( file_work )
13994  call lookup_growable_url(file = file_work, varname = varname, &
13995  & url = url, &
13996  & flag_time_exist = flag_time_exist, time_name = tname, err = err)
13997  call url_chop_iorange( &
13998  & fullname = url, iorange = iorange, remainder = remainder )
13999  call split( str = iorange, carray = carray, sep = gt_equal )
14000  timevar_name = carray(1)
14001  deallocate( carray )
14002  time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
14003  call historygetint7pointer( file = file, &
14004  & varname = varname, array = array, &
14005  & range = time_range, quiet = quiet, &
14006  & flag_mpi_split = flag_mpi_split, &
14007  & returned_time = returned_time, &
14008  & flag_time_exist = flag_time_exist, &
14009  & err = err )
14010 end subroutine historygetint7pointertimed
14011 subroutine historygetdouble0timei( &
14012  & file, varname, array, time, &
14013  & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
14014  use dc_string, only: tochar, split
14015  use dc_types, only: string, dp
14016  use dc_trace, only: dbgmessage
14017  use dc_url, only: url_chop_iorange, gt_equal
14018  use dc_present, only: present_and_true
14019  implicit none
14020  character(*), intent(in):: file, varname
14021  integer, intent(in):: time
14022  logical, intent(in), optional:: quiet
14023  real(DP), intent(out) :: array
14024  logical, intent(in), optional:: flag_mpi_split
14025  real(DP), intent(out), optional:: returned_time
14026  logical, intent(out), optional:: flag_time_exist
14027  logical, intent(out), optional:: err
14028  character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
14029  character(STRING), pointer:: carray (:)
14030  character(STRING):: tname
14031  character(*), parameter :: subname = "HistoryGetDouble0TimeI"
14032  interface
14033  subroutine historygetdouble0(&
14034  & file, varname, array, range, quiet, &
14035  & flag_mpi_split, returned_time, flag_time_exist, err)
14036  use dc_types, only: dp
14037  character(*), intent(in):: file
14038  character(*), intent(in):: varname
14039  character(*), intent(in), optional:: range
14040  logical, intent(in), optional:: quiet
14041  logical, intent(in), optional:: flag_mpi_split
14042  real(DP), intent(out), optional:: returned_time
14043  logical, intent(out), optional:: flag_time_exist
14044  logical, intent(out), optional:: err
14045  real(DP), intent(out) :: array
14046  end subroutine historygetdouble0
14047  end interface
14048  interface
14049  subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
14050  character(*), intent(in):: file
14051  character(*), intent(in):: varname
14052  character(*), intent(out):: url
14053  character(*), intent(in), optional:: range
14054  logical, intent(out), optional:: flag_time_exist
14055  character(*), intent(out), optional:: time_name
14056  logical, intent(out), optional:: err
14057  end subroutine lookup_growable_url
14058  end interface
14059  interface
14060  function file_rename_mpi( file ) result(result)
14061  use dc_types, only: string
14062  character(*), intent(in):: file
14063  character(STRING):: result
14064  end function file_rename_mpi
14065  end interface
14066  continue
14067  file_work = file
14068  if ( present_and_true( flag_mpi_split ) ) &
14069  & file_work = file_rename_mpi( file_work )
14070  call lookup_growable_url(file = file_work, varname = varname, &
14071  & url = url, &
14072  & flag_time_exist = flag_time_exist, time_name = tname, err = err)
14073  call url_chop_iorange( &
14074  & fullname = url, iorange = iorange, remainder = remainder )
14075  call split( str = iorange, carray = carray, sep = gt_equal )
14076  timevar_name = carray(1)
14077  deallocate( carray )
14078  time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
14079  call historygetdouble0( file = file, &
14080  & varname = varname, array = array, &
14081  & range = time_range, quiet = quiet, &
14082  & flag_mpi_split = flag_mpi_split, &
14083  & returned_time = returned_time, &
14084  & flag_time_exist = flag_time_exist, &
14085  & err = err )
14086 end subroutine historygetdouble0timei
14087 subroutine historygetdouble1timei( &
14088  & file, varname, array, time, &
14089  & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
14090  use dc_string, only: tochar, split
14091  use dc_types, only: string, dp
14092  use dc_trace, only: dbgmessage
14093  use dc_url, only: url_chop_iorange, gt_equal
14094  use dc_present, only: present_and_true
14095  implicit none
14096  character(*), intent(in):: file, varname
14097  integer, intent(in):: time
14098  logical, intent(in), optional:: quiet
14099  real(DP), intent(out) :: array(:)
14100  logical, intent(in), optional:: flag_mpi_split
14101  real(DP), intent(out), optional:: returned_time
14102  logical, intent(out), optional:: flag_time_exist
14103  logical, intent(out), optional:: err
14104  character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
14105  character(STRING), pointer:: carray (:)
14106  character(STRING):: tname
14107  character(*), parameter :: subname = "HistoryGetDouble1TimeI"
14108  interface
14109  subroutine historygetdouble1(&
14110  & file, varname, array, range, quiet, &
14111  & flag_mpi_split, returned_time, flag_time_exist, err)
14112  use dc_types, only: dp
14113  character(*), intent(in):: file
14114  character(*), intent(in):: varname
14115  character(*), intent(in), optional:: range
14116  logical, intent(in), optional:: quiet
14117  logical, intent(in), optional:: flag_mpi_split
14118  real(DP), intent(out), optional:: returned_time
14119  logical, intent(out), optional:: flag_time_exist
14120  logical, intent(out), optional:: err
14121  real(DP), intent(out) :: array(:)
14122  end subroutine historygetdouble1
14123  end interface
14124  interface
14125  subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
14126  character(*), intent(in):: file
14127  character(*), intent(in):: varname
14128  character(*), intent(out):: url
14129  character(*), intent(in), optional:: range
14130  logical, intent(out), optional:: flag_time_exist
14131  character(*), intent(out), optional:: time_name
14132  logical, intent(out), optional:: err
14133  end subroutine lookup_growable_url
14134  end interface
14135  interface
14136  function file_rename_mpi( file ) result(result)
14137  use dc_types, only: string
14138  character(*), intent(in):: file
14139  character(STRING):: result
14140  end function file_rename_mpi
14141  end interface
14142  continue
14143  file_work = file
14144  if ( present_and_true( flag_mpi_split ) ) &
14145  & file_work = file_rename_mpi( file_work )
14146  call lookup_growable_url(file = file_work, varname = varname, &
14147  & url = url, &
14148  & flag_time_exist = flag_time_exist, time_name = tname, err = err)
14149  call url_chop_iorange( &
14150  & fullname = url, iorange = iorange, remainder = remainder )
14151  call split( str = iorange, carray = carray, sep = gt_equal )
14152  timevar_name = carray(1)
14153  deallocate( carray )
14154  time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
14155  call historygetdouble1( file = file, &
14156  & varname = varname, array = array, &
14157  & range = time_range, quiet = quiet, &
14158  & flag_mpi_split = flag_mpi_split, &
14159  & returned_time = returned_time, &
14160  & flag_time_exist = flag_time_exist, &
14161  & err = err )
14162 end subroutine historygetdouble1timei
14163 subroutine historygetdouble2timei( &
14164  & file, varname, array, time, &
14165  & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
14166  use dc_string, only: tochar, split
14167  use dc_types, only: string, dp
14168  use dc_trace, only: dbgmessage
14169  use dc_url, only: url_chop_iorange, gt_equal
14170  use dc_present, only: present_and_true
14171  implicit none
14172  character(*), intent(in):: file, varname
14173  integer, intent(in):: time
14174  logical, intent(in), optional:: quiet
14175  real(DP), intent(out) :: array(:,:)
14176  logical, intent(in), optional:: flag_mpi_split
14177  real(DP), intent(out), optional:: returned_time
14178  logical, intent(out), optional:: flag_time_exist
14179  logical, intent(out), optional:: err
14180  character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
14181  character(STRING), pointer:: carray (:)
14182  character(STRING):: tname
14183  character(*), parameter :: subname = "HistoryGetDouble2TimeI"
14184  interface
14185  subroutine historygetdouble2(&
14186  & file, varname, array, range, quiet, &
14187  & flag_mpi_split, returned_time, flag_time_exist, err)
14188  use dc_types, only: dp
14189  character(*), intent(in):: file
14190  character(*), intent(in):: varname
14191  character(*), intent(in), optional:: range
14192  logical, intent(in), optional:: quiet
14193  logical, intent(in), optional:: flag_mpi_split
14194  real(DP), intent(out), optional:: returned_time
14195  logical, intent(out), optional:: flag_time_exist
14196  logical, intent(out), optional:: err
14197  real(DP), intent(out) :: array(:,:)
14198  end subroutine historygetdouble2
14199  end interface
14200  interface
14201  subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
14202  character(*), intent(in):: file
14203  character(*), intent(in):: varname
14204  character(*), intent(out):: url
14205  character(*), intent(in), optional:: range
14206  logical, intent(out), optional:: flag_time_exist
14207  character(*), intent(out), optional:: time_name
14208  logical, intent(out), optional:: err
14209  end subroutine lookup_growable_url
14210  end interface
14211  interface
14212  function file_rename_mpi( file ) result(result)
14213  use dc_types, only: string
14214  character(*), intent(in):: file
14215  character(STRING):: result
14216  end function file_rename_mpi
14217  end interface
14218  continue
14219  file_work = file
14220  if ( present_and_true( flag_mpi_split ) ) &
14221  & file_work = file_rename_mpi( file_work )
14222  call lookup_growable_url(file = file_work, varname = varname, &
14223  & url = url, &
14224  & flag_time_exist = flag_time_exist, time_name = tname, err = err)
14225  call url_chop_iorange( &
14226  & fullname = url, iorange = iorange, remainder = remainder )
14227  call split( str = iorange, carray = carray, sep = gt_equal )
14228  timevar_name = carray(1)
14229  deallocate( carray )
14230  time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
14231  call historygetdouble2( file = file, &
14232  & varname = varname, array = array, &
14233  & range = time_range, quiet = quiet, &
14234  & flag_mpi_split = flag_mpi_split, &
14235  & returned_time = returned_time, &
14236  & flag_time_exist = flag_time_exist, &
14237  & err = err )
14238 end subroutine historygetdouble2timei
14239 subroutine historygetdouble3timei( &
14240  & file, varname, array, time, &
14241  & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
14242  use dc_string, only: tochar, split
14243  use dc_types, only: string, dp
14244  use dc_trace, only: dbgmessage
14245  use dc_url, only: url_chop_iorange, gt_equal
14246  use dc_present, only: present_and_true
14247  implicit none
14248  character(*), intent(in):: file, varname
14249  integer, intent(in):: time
14250  logical, intent(in), optional:: quiet
14251  real(DP), intent(out) :: array(:,:,:)
14252  logical, intent(in), optional:: flag_mpi_split
14253  real(DP), intent(out), optional:: returned_time
14254  logical, intent(out), optional:: flag_time_exist
14255  logical, intent(out), optional:: err
14256  character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
14257  character(STRING), pointer:: carray (:)
14258  character(STRING):: tname
14259  character(*), parameter :: subname = "HistoryGetDouble3TimeI"
14260  interface
14261  subroutine historygetdouble3(&
14262  & file, varname, array, range, quiet, &
14263  & flag_mpi_split, returned_time, flag_time_exist, err)
14264  use dc_types, only: dp
14265  character(*), intent(in):: file
14266  character(*), intent(in):: varname
14267  character(*), intent(in), optional:: range
14268  logical, intent(in), optional:: quiet
14269  logical, intent(in), optional:: flag_mpi_split
14270  real(DP), intent(out), optional:: returned_time
14271  logical, intent(out), optional:: flag_time_exist
14272  logical, intent(out), optional:: err
14273  real(DP), intent(out) :: array(:,:,:)
14274  end subroutine historygetdouble3
14275  end interface
14276  interface
14277  subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
14278  character(*), intent(in):: file
14279  character(*), intent(in):: varname
14280  character(*), intent(out):: url
14281  character(*), intent(in), optional:: range
14282  logical, intent(out), optional:: flag_time_exist
14283  character(*), intent(out), optional:: time_name
14284  logical, intent(out), optional:: err
14285  end subroutine lookup_growable_url
14286  end interface
14287  interface
14288  function file_rename_mpi( file ) result(result)
14289  use dc_types, only: string
14290  character(*), intent(in):: file
14291  character(STRING):: result
14292  end function file_rename_mpi
14293  end interface
14294  continue
14295  file_work = file
14296  if ( present_and_true( flag_mpi_split ) ) &
14297  & file_work = file_rename_mpi( file_work )
14298  call lookup_growable_url(file = file_work, varname = varname, &
14299  & url = url, &
14300  & flag_time_exist = flag_time_exist, time_name = tname, err = err)
14301  call url_chop_iorange( &
14302  & fullname = url, iorange = iorange, remainder = remainder )
14303  call split( str = iorange, carray = carray, sep = gt_equal )
14304  timevar_name = carray(1)
14305  deallocate( carray )
14306  time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
14307  call historygetdouble3( file = file, &
14308  & varname = varname, array = array, &
14309  & range = time_range, quiet = quiet, &
14310  & flag_mpi_split = flag_mpi_split, &
14311  & returned_time = returned_time, &
14312  & flag_time_exist = flag_time_exist, &
14313  & err = err )
14314 end subroutine historygetdouble3timei
14315 subroutine historygetdouble4timei( &
14316  & file, varname, array, time, &
14317  & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
14318  use dc_string, only: tochar, split
14319  use dc_types, only: string, dp
14320  use dc_trace, only: dbgmessage
14321  use dc_url, only: url_chop_iorange, gt_equal
14322  use dc_present, only: present_and_true
14323  implicit none
14324  character(*), intent(in):: file, varname
14325  integer, intent(in):: time
14326  logical, intent(in), optional:: quiet
14327  real(DP), intent(out) :: array(:,:,:,:)
14328  logical, intent(in), optional:: flag_mpi_split
14329  real(DP), intent(out), optional:: returned_time
14330  logical, intent(out), optional:: flag_time_exist
14331  logical, intent(out), optional:: err
14332  character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
14333  character(STRING), pointer:: carray (:)
14334  character(STRING):: tname
14335  character(*), parameter :: subname = "HistoryGetDouble4TimeI"
14336  interface
14337  subroutine historygetdouble4(&
14338  & file, varname, array, range, quiet, &
14339  & flag_mpi_split, returned_time, flag_time_exist, err)
14340  use dc_types, only: dp
14341  character(*), intent(in):: file
14342  character(*), intent(in):: varname
14343  character(*), intent(in), optional:: range
14344  logical, intent(in), optional:: quiet
14345  logical, intent(in), optional:: flag_mpi_split
14346  real(DP), intent(out), optional:: returned_time
14347  logical, intent(out), optional:: flag_time_exist
14348  logical, intent(out), optional:: err
14349  real(DP), intent(out) :: array(:,:,:,:)
14350  end subroutine historygetdouble4
14351  end interface
14352  interface
14353  subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
14354  character(*), intent(in):: file
14355  character(*), intent(in):: varname
14356  character(*), intent(out):: url
14357  character(*), intent(in), optional:: range
14358  logical, intent(out), optional:: flag_time_exist
14359  character(*), intent(out), optional:: time_name
14360  logical, intent(out), optional:: err
14361  end subroutine lookup_growable_url
14362  end interface
14363  interface
14364  function file_rename_mpi( file ) result(result)
14365  use dc_types, only: string
14366  character(*), intent(in):: file
14367  character(STRING):: result
14368  end function file_rename_mpi
14369  end interface
14370  continue
14371  file_work = file
14372  if ( present_and_true( flag_mpi_split ) ) &
14373  & file_work = file_rename_mpi( file_work )
14374  call lookup_growable_url(file = file_work, varname = varname, &
14375  & url = url, &
14376  & flag_time_exist = flag_time_exist, time_name = tname, err = err)
14377  call url_chop_iorange( &
14378  & fullname = url, iorange = iorange, remainder = remainder )
14379  call split( str = iorange, carray = carray, sep = gt_equal )
14380  timevar_name = carray(1)
14381  deallocate( carray )
14382  time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
14383  call historygetdouble4( file = file, &
14384  & varname = varname, array = array, &
14385  & range = time_range, quiet = quiet, &
14386  & flag_mpi_split = flag_mpi_split, &
14387  & returned_time = returned_time, &
14388  & flag_time_exist = flag_time_exist, &
14389  & err = err )
14390 end subroutine historygetdouble4timei
14391 subroutine historygetdouble5timei( &
14392  & file, varname, array, time, &
14393  & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
14394  use dc_string, only: tochar, split
14395  use dc_types, only: string, dp
14396  use dc_trace, only: dbgmessage
14397  use dc_url, only: url_chop_iorange, gt_equal
14398  use dc_present, only: present_and_true
14399  implicit none
14400  character(*), intent(in):: file, varname
14401  integer, intent(in):: time
14402  logical, intent(in), optional:: quiet
14403  real(DP), intent(out) :: array(:,:,:,:,:)
14404  logical, intent(in), optional:: flag_mpi_split
14405  real(DP), intent(out), optional:: returned_time
14406  logical, intent(out), optional:: flag_time_exist
14407  logical, intent(out), optional:: err
14408  character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
14409  character(STRING), pointer:: carray (:)
14410  character(STRING):: tname
14411  character(*), parameter :: subname = "HistoryGetDouble5TimeI"
14412  interface
14413  subroutine historygetdouble5(&
14414  & file, varname, array, range, quiet, &
14415  & flag_mpi_split, returned_time, flag_time_exist, err)
14416  use dc_types, only: dp
14417  character(*), intent(in):: file
14418  character(*), intent(in):: varname
14419  character(*), intent(in), optional:: range
14420  logical, intent(in), optional:: quiet
14421  logical, intent(in), optional:: flag_mpi_split
14422  real(DP), intent(out), optional:: returned_time
14423  logical, intent(out), optional:: flag_time_exist
14424  logical, intent(out), optional:: err
14425  real(DP), intent(out) :: array(:,:,:,:,:)
14426  end subroutine historygetdouble5
14427  end interface
14428  interface
14429  subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
14430  character(*), intent(in):: file
14431  character(*), intent(in):: varname
14432  character(*), intent(out):: url
14433  character(*), intent(in), optional:: range
14434  logical, intent(out), optional:: flag_time_exist
14435  character(*), intent(out), optional:: time_name
14436  logical, intent(out), optional:: err
14437  end subroutine lookup_growable_url
14438  end interface
14439  interface
14440  function file_rename_mpi( file ) result(result)
14441  use dc_types, only: string
14442  character(*), intent(in):: file
14443  character(STRING):: result
14444  end function file_rename_mpi
14445  end interface
14446  continue
14447  file_work = file
14448  if ( present_and_true( flag_mpi_split ) ) &
14449  & file_work = file_rename_mpi( file_work )
14450  call lookup_growable_url(file = file_work, varname = varname, &
14451  & url = url, &
14452  & flag_time_exist = flag_time_exist, time_name = tname, err = err)
14453  call url_chop_iorange( &
14454  & fullname = url, iorange = iorange, remainder = remainder )
14455  call split( str = iorange, carray = carray, sep = gt_equal )
14456  timevar_name = carray(1)
14457  deallocate( carray )
14458  time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
14459  call historygetdouble5( file = file, &
14460  & varname = varname, array = array, &
14461  & range = time_range, quiet = quiet, &
14462  & flag_mpi_split = flag_mpi_split, &
14463  & returned_time = returned_time, &
14464  & flag_time_exist = flag_time_exist, &
14465  & err = err )
14466 end subroutine historygetdouble5timei
14467 subroutine historygetdouble6timei( &
14468  & file, varname, array, time, &
14469  & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
14470  use dc_string, only: tochar, split
14471  use dc_types, only: string, dp
14472  use dc_trace, only: dbgmessage
14473  use dc_url, only: url_chop_iorange, gt_equal
14474  use dc_present, only: present_and_true
14475  implicit none
14476  character(*), intent(in):: file, varname
14477  integer, intent(in):: time
14478  logical, intent(in), optional:: quiet
14479  real(DP), intent(out) :: array(:,:,:,:,:,:)
14480  logical, intent(in), optional:: flag_mpi_split
14481  real(DP), intent(out), optional:: returned_time
14482  logical, intent(out), optional:: flag_time_exist
14483  logical, intent(out), optional:: err
14484  character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
14485  character(STRING), pointer:: carray (:)
14486  character(STRING):: tname
14487  character(*), parameter :: subname = "HistoryGetDouble6TimeI"
14488  interface
14489  subroutine historygetdouble6(&
14490  & file, varname, array, range, quiet, &
14491  & flag_mpi_split, returned_time, flag_time_exist, err)
14492  use dc_types, only: dp
14493  character(*), intent(in):: file
14494  character(*), intent(in):: varname
14495  character(*), intent(in), optional:: range
14496  logical, intent(in), optional:: quiet
14497  logical, intent(in), optional:: flag_mpi_split
14498  real(DP), intent(out), optional:: returned_time
14499  logical, intent(out), optional:: flag_time_exist
14500  logical, intent(out), optional:: err
14501  real(DP), intent(out) :: array(:,:,:,:,:,:)
14502  end subroutine historygetdouble6
14503  end interface
14504  interface
14505  subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
14506  character(*), intent(in):: file
14507  character(*), intent(in):: varname
14508  character(*), intent(out):: url
14509  character(*), intent(in), optional:: range
14510  logical, intent(out), optional:: flag_time_exist
14511  character(*), intent(out), optional:: time_name
14512  logical, intent(out), optional:: err
14513  end subroutine lookup_growable_url
14514  end interface
14515  interface
14516  function file_rename_mpi( file ) result(result)
14517  use dc_types, only: string
14518  character(*), intent(in):: file
14519  character(STRING):: result
14520  end function file_rename_mpi
14521  end interface
14522  continue
14523  file_work = file
14524  if ( present_and_true( flag_mpi_split ) ) &
14525  & file_work = file_rename_mpi( file_work )
14526  call lookup_growable_url(file = file_work, varname = varname, &
14527  & url = url, &
14528  & flag_time_exist = flag_time_exist, time_name = tname, err = err)
14529  call url_chop_iorange( &
14530  & fullname = url, iorange = iorange, remainder = remainder )
14531  call split( str = iorange, carray = carray, sep = gt_equal )
14532  timevar_name = carray(1)
14533  deallocate( carray )
14534  time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
14535  call historygetdouble6( file = file, &
14536  & varname = varname, array = array, &
14537  & range = time_range, quiet = quiet, &
14538  & flag_mpi_split = flag_mpi_split, &
14539  & returned_time = returned_time, &
14540  & flag_time_exist = flag_time_exist, &
14541  & err = err )
14542 end subroutine historygetdouble6timei
14543 subroutine historygetdouble7timei( &
14544  & file, varname, array, time, &
14545  & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
14546  use dc_string, only: tochar, split
14547  use dc_types, only: string, dp
14548  use dc_trace, only: dbgmessage
14549  use dc_url, only: url_chop_iorange, gt_equal
14550  use dc_present, only: present_and_true
14551  implicit none
14552  character(*), intent(in):: file, varname
14553  integer, intent(in):: time
14554  logical, intent(in), optional:: quiet
14555  real(DP), intent(out) :: array(:,:,:,:,:,:,:)
14556  logical, intent(in), optional:: flag_mpi_split
14557  real(DP), intent(out), optional:: returned_time
14558  logical, intent(out), optional:: flag_time_exist
14559  logical, intent(out), optional:: err
14560  character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
14561  character(STRING), pointer:: carray (:)
14562  character(STRING):: tname
14563  character(*), parameter :: subname = "HistoryGetDouble7TimeI"
14564  interface
14565  subroutine historygetdouble7(&
14566  & file, varname, array, range, quiet, &
14567  & flag_mpi_split, returned_time, flag_time_exist, err)
14568  use dc_types, only: dp
14569  character(*), intent(in):: file
14570  character(*), intent(in):: varname
14571  character(*), intent(in), optional:: range
14572  logical, intent(in), optional:: quiet
14573  logical, intent(in), optional:: flag_mpi_split
14574  real(DP), intent(out), optional:: returned_time
14575  logical, intent(out), optional:: flag_time_exist
14576  logical, intent(out), optional:: err
14577  real(DP), intent(out) :: array(:,:,:,:,:,:,:)
14578  end subroutine historygetdouble7
14579  end interface
14580  interface
14581  subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
14582  character(*), intent(in):: file
14583  character(*), intent(in):: varname
14584  character(*), intent(out):: url
14585  character(*), intent(in), optional:: range
14586  logical, intent(out), optional:: flag_time_exist
14587  character(*), intent(out), optional:: time_name
14588  logical, intent(out), optional:: err
14589  end subroutine lookup_growable_url
14590  end interface
14591  interface
14592  function file_rename_mpi( file ) result(result)
14593  use dc_types, only: string
14594  character(*), intent(in):: file
14595  character(STRING):: result
14596  end function file_rename_mpi
14597  end interface
14598  continue
14599  file_work = file
14600  if ( present_and_true( flag_mpi_split ) ) &
14601  & file_work = file_rename_mpi( file_work )
14602  call lookup_growable_url(file = file_work, varname = varname, &
14603  & url = url, &
14604  & flag_time_exist = flag_time_exist, time_name = tname, err = err)
14605  call url_chop_iorange( &
14606  & fullname = url, iorange = iorange, remainder = remainder )
14607  call split( str = iorange, carray = carray, sep = gt_equal )
14608  timevar_name = carray(1)
14609  deallocate( carray )
14610  time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
14611  call historygetdouble7( file = file, &
14612  & varname = varname, array = array, &
14613  & range = time_range, quiet = quiet, &
14614  & flag_mpi_split = flag_mpi_split, &
14615  & returned_time = returned_time, &
14616  & flag_time_exist = flag_time_exist, &
14617  & err = err )
14618 end subroutine historygetdouble7timei
14619 subroutine historygetdouble0pointertimei( &
14620  & file, varname, array, time, &
14621  & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
14622  use dc_string, only: tochar, split
14623  use dc_types, only: string, dp
14624  use dc_trace, only: dbgmessage
14625  use dc_url, only: url_chop_iorange, gt_equal
14626  use dc_present, only: present_and_true
14627  implicit none
14628  character(*), intent(in):: file, varname
14629  integer, intent(in):: time
14630  logical, intent(in), optional:: quiet
14631  real(DP), pointer :: array
14632  logical, intent(in), optional:: flag_mpi_split
14633  real(DP), intent(out), optional:: returned_time
14634  logical, intent(out), optional:: flag_time_exist
14635  logical, intent(out), optional:: err
14636  character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
14637  character(STRING), pointer:: carray (:)
14638  character(STRING):: tname
14639  character(*), parameter :: subname = "HistoryGetDouble0TimeI"
14640  interface
14641  subroutine historygetdouble0pointer(&
14642  & file, varname, array, range, quiet, &
14643  & flag_mpi_split, returned_time, flag_time_exist, err)
14644  use dc_types, only: dp
14645  character(*), intent(in):: file
14646  character(*), intent(in):: varname
14647  character(*), intent(in), optional:: range
14648  logical, intent(in), optional:: quiet
14649  logical, intent(in), optional:: flag_mpi_split
14650  real(DP), intent(out), optional:: returned_time
14651  logical, intent(out), optional:: flag_time_exist
14652  logical, intent(out), optional:: err
14653  real(DP), pointer :: array
14654  end subroutine historygetdouble0pointer
14655  end interface
14656  interface
14657  subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
14658  character(*), intent(in):: file
14659  character(*), intent(in):: varname
14660  character(*), intent(out):: url
14661  character(*), intent(in), optional:: range
14662  logical, intent(out), optional:: flag_time_exist
14663  character(*), intent(out), optional:: time_name
14664  logical, intent(out), optional:: err
14665  end subroutine lookup_growable_url
14666  end interface
14667  interface
14668  function file_rename_mpi( file ) result(result)
14669  use dc_types, only: string
14670  character(*), intent(in):: file
14671  character(STRING):: result
14672  end function file_rename_mpi
14673  end interface
14674  continue
14675  file_work = file
14676  if ( present_and_true( flag_mpi_split ) ) &
14677  & file_work = file_rename_mpi( file_work )
14678  call lookup_growable_url(file = file_work, varname = varname, &
14679  & url = url, &
14680  & flag_time_exist = flag_time_exist, time_name = tname, err = err)
14681  call url_chop_iorange( &
14682  & fullname = url, iorange = iorange, remainder = remainder )
14683  call split( str = iorange, carray = carray, sep = gt_equal )
14684  timevar_name = carray(1)
14685  deallocate( carray )
14686  time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
14687  call historygetdouble0pointer( file = file, &
14688  & varname = varname, array = array, &
14689  & range = time_range, quiet = quiet, &
14690  & flag_mpi_split = flag_mpi_split, &
14691  & returned_time = returned_time, &
14692  & flag_time_exist = flag_time_exist, &
14693  & err = err )
14694 end subroutine historygetdouble0pointertimei
14695 subroutine historygetdouble1pointertimei( &
14696  & file, varname, array, time, &
14697  & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
14698  use dc_string, only: tochar, split
14699  use dc_types, only: string, dp
14700  use dc_trace, only: dbgmessage
14701  use dc_url, only: url_chop_iorange, gt_equal
14702  use dc_present, only: present_and_true
14703  implicit none
14704  character(*), intent(in):: file, varname
14705  integer, intent(in):: time
14706  logical, intent(in), optional:: quiet
14707  real(DP), pointer :: array(:)
14708  logical, intent(in), optional:: flag_mpi_split
14709  real(DP), intent(out), optional:: returned_time
14710  logical, intent(out), optional:: flag_time_exist
14711  logical, intent(out), optional:: err
14712  character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
14713  character(STRING), pointer:: carray (:)
14714  character(STRING):: tname
14715  character(*), parameter :: subname = "HistoryGetDouble1TimeI"
14716  interface
14717  subroutine historygetdouble1pointer(&
14718  & file, varname, array, range, quiet, &
14719  & flag_mpi_split, returned_time, flag_time_exist, err)
14720  use dc_types, only: dp
14721  character(*), intent(in):: file
14722  character(*), intent(in):: varname
14723  character(*), intent(in), optional:: range
14724  logical, intent(in), optional:: quiet
14725  logical, intent(in), optional:: flag_mpi_split
14726  real(DP), intent(out), optional:: returned_time
14727  logical, intent(out), optional:: flag_time_exist
14728  logical, intent(out), optional:: err
14729  real(DP), pointer :: array(:)
14730  end subroutine historygetdouble1pointer
14731  end interface
14732  interface
14733  subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
14734  character(*), intent(in):: file
14735  character(*), intent(in):: varname
14736  character(*), intent(out):: url
14737  character(*), intent(in), optional:: range
14738  logical, intent(out), optional:: flag_time_exist
14739  character(*), intent(out), optional:: time_name
14740  logical, intent(out), optional:: err
14741  end subroutine lookup_growable_url
14742  end interface
14743  interface
14744  function file_rename_mpi( file ) result(result)
14745  use dc_types, only: string
14746  character(*), intent(in):: file
14747  character(STRING):: result
14748  end function file_rename_mpi
14749  end interface
14750  continue
14751  file_work = file
14752  if ( present_and_true( flag_mpi_split ) ) &
14753  & file_work = file_rename_mpi( file_work )
14754  call lookup_growable_url(file = file_work, varname = varname, &
14755  & url = url, &
14756  & flag_time_exist = flag_time_exist, time_name = tname, err = err)
14757  call url_chop_iorange( &
14758  & fullname = url, iorange = iorange, remainder = remainder )
14759  call split( str = iorange, carray = carray, sep = gt_equal )
14760  timevar_name = carray(1)
14761  deallocate( carray )
14762  time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
14763  call historygetdouble1pointer( file = file, &
14764  & varname = varname, array = array, &
14765  & range = time_range, quiet = quiet, &
14766  & flag_mpi_split = flag_mpi_split, &
14767  & returned_time = returned_time, &
14768  & flag_time_exist = flag_time_exist, &
14769  & err = err )
14770 end subroutine historygetdouble1pointertimei
14771 subroutine historygetdouble2pointertimei( &
14772  & file, varname, array, time, &
14773  & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
14774  use dc_string, only: tochar, split
14775  use dc_types, only: string, dp
14776  use dc_trace, only: dbgmessage
14777  use dc_url, only: url_chop_iorange, gt_equal
14778  use dc_present, only: present_and_true
14779  implicit none
14780  character(*), intent(in):: file, varname
14781  integer, intent(in):: time
14782  logical, intent(in), optional:: quiet
14783  real(DP), pointer :: array(:,:)
14784  logical, intent(in), optional:: flag_mpi_split
14785  real(DP), intent(out), optional:: returned_time
14786  logical, intent(out), optional:: flag_time_exist
14787  logical, intent(out), optional:: err
14788  character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
14789  character(STRING), pointer:: carray (:)
14790  character(STRING):: tname
14791  character(*), parameter :: subname = "HistoryGetDouble2TimeI"
14792  interface
14793  subroutine historygetdouble2pointer(&
14794  & file, varname, array, range, quiet, &
14795  & flag_mpi_split, returned_time, flag_time_exist, err)
14796  use dc_types, only: dp
14797  character(*), intent(in):: file
14798  character(*), intent(in):: varname
14799  character(*), intent(in), optional:: range
14800  logical, intent(in), optional:: quiet
14801  logical, intent(in), optional:: flag_mpi_split
14802  real(DP), intent(out), optional:: returned_time
14803  logical, intent(out), optional:: flag_time_exist
14804  logical, intent(out), optional:: err
14805  real(DP), pointer :: array(:,:)
14806  end subroutine historygetdouble2pointer
14807  end interface
14808  interface
14809  subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
14810  character(*), intent(in):: file
14811  character(*), intent(in):: varname
14812  character(*), intent(out):: url
14813  character(*), intent(in), optional:: range
14814  logical, intent(out), optional:: flag_time_exist
14815  character(*), intent(out), optional:: time_name
14816  logical, intent(out), optional:: err
14817  end subroutine lookup_growable_url
14818  end interface
14819  interface
14820  function file_rename_mpi( file ) result(result)
14821  use dc_types, only: string
14822  character(*), intent(in):: file
14823  character(STRING):: result
14824  end function file_rename_mpi
14825  end interface
14826  continue
14827  file_work = file
14828  if ( present_and_true( flag_mpi_split ) ) &
14829  & file_work = file_rename_mpi( file_work )
14830  call lookup_growable_url(file = file_work, varname = varname, &
14831  & url = url, &
14832  & flag_time_exist = flag_time_exist, time_name = tname, err = err)
14833  call url_chop_iorange( &
14834  & fullname = url, iorange = iorange, remainder = remainder )
14835  call split( str = iorange, carray = carray, sep = gt_equal )
14836  timevar_name = carray(1)
14837  deallocate( carray )
14838  time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
14839  call historygetdouble2pointer( file = file, &
14840  & varname = varname, array = array, &
14841  & range = time_range, quiet = quiet, &
14842  & flag_mpi_split = flag_mpi_split, &
14843  & returned_time = returned_time, &
14844  & flag_time_exist = flag_time_exist, &
14845  & err = err )
14846 end subroutine historygetdouble2pointertimei
14847 subroutine historygetdouble3pointertimei( &
14848  & file, varname, array, time, &
14849  & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
14850  use dc_string, only: tochar, split
14851  use dc_types, only: string, dp
14852  use dc_trace, only: dbgmessage
14853  use dc_url, only: url_chop_iorange, gt_equal
14854  use dc_present, only: present_and_true
14855  implicit none
14856  character(*), intent(in):: file, varname
14857  integer, intent(in):: time
14858  logical, intent(in), optional:: quiet
14859  real(DP), pointer :: array(:,:,:)
14860  logical, intent(in), optional:: flag_mpi_split
14861  real(DP), intent(out), optional:: returned_time
14862  logical, intent(out), optional:: flag_time_exist
14863  logical, intent(out), optional:: err
14864  character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
14865  character(STRING), pointer:: carray (:)
14866  character(STRING):: tname
14867  character(*), parameter :: subname = "HistoryGetDouble3TimeI"
14868  interface
14869  subroutine historygetdouble3pointer(&
14870  & file, varname, array, range, quiet, &
14871  & flag_mpi_split, returned_time, flag_time_exist, err)
14872  use dc_types, only: dp
14873  character(*), intent(in):: file
14874  character(*), intent(in):: varname
14875  character(*), intent(in), optional:: range
14876  logical, intent(in), optional:: quiet
14877  logical, intent(in), optional:: flag_mpi_split
14878  real(DP), intent(out), optional:: returned_time
14879  logical, intent(out), optional:: flag_time_exist
14880  logical, intent(out), optional:: err
14881  real(DP), pointer :: array(:,:,:)
14882  end subroutine historygetdouble3pointer
14883  end interface
14884  interface
14885  subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
14886  character(*), intent(in):: file
14887  character(*), intent(in):: varname
14888  character(*), intent(out):: url
14889  character(*), intent(in), optional:: range
14890  logical, intent(out), optional:: flag_time_exist
14891  character(*), intent(out), optional:: time_name
14892  logical, intent(out), optional:: err
14893  end subroutine lookup_growable_url
14894  end interface
14895  interface
14896  function file_rename_mpi( file ) result(result)
14897  use dc_types, only: string
14898  character(*), intent(in):: file
14899  character(STRING):: result
14900  end function file_rename_mpi
14901  end interface
14902  continue
14903  file_work = file
14904  if ( present_and_true( flag_mpi_split ) ) &
14905  & file_work = file_rename_mpi( file_work )
14906  call lookup_growable_url(file = file_work, varname = varname, &
14907  & url = url, &
14908  & flag_time_exist = flag_time_exist, time_name = tname, err = err)
14909  call url_chop_iorange( &
14910  & fullname = url, iorange = iorange, remainder = remainder )
14911  call split( str = iorange, carray = carray, sep = gt_equal )
14912  timevar_name = carray(1)
14913  deallocate( carray )
14914  time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
14915  call historygetdouble3pointer( file = file, &
14916  & varname = varname, array = array, &
14917  & range = time_range, quiet = quiet, &
14918  & flag_mpi_split = flag_mpi_split, &
14919  & returned_time = returned_time, &
14920  & flag_time_exist = flag_time_exist, &
14921  & err = err )
14922 end subroutine historygetdouble3pointertimei
14923 subroutine historygetdouble4pointertimei( &
14924  & file, varname, array, time, &
14925  & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
14926  use dc_string, only: tochar, split
14927  use dc_types, only: string, dp
14928  use dc_trace, only: dbgmessage
14929  use dc_url, only: url_chop_iorange, gt_equal
14930  use dc_present, only: present_and_true
14931  implicit none
14932  character(*), intent(in):: file, varname
14933  integer, intent(in):: time
14934  logical, intent(in), optional:: quiet
14935  real(DP), pointer :: array(:,:,:,:)
14936  logical, intent(in), optional:: flag_mpi_split
14937  real(DP), intent(out), optional:: returned_time
14938  logical, intent(out), optional:: flag_time_exist
14939  logical, intent(out), optional:: err
14940  character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
14941  character(STRING), pointer:: carray (:)
14942  character(STRING):: tname
14943  character(*), parameter :: subname = "HistoryGetDouble4TimeI"
14944  interface
14945  subroutine historygetdouble4pointer(&
14946  & file, varname, array, range, quiet, &
14947  & flag_mpi_split, returned_time, flag_time_exist, err)
14948  use dc_types, only: dp
14949  character(*), intent(in):: file
14950  character(*), intent(in):: varname
14951  character(*), intent(in), optional:: range
14952  logical, intent(in), optional:: quiet
14953  logical, intent(in), optional:: flag_mpi_split
14954  real(DP), intent(out), optional:: returned_time
14955  logical, intent(out), optional:: flag_time_exist
14956  logical, intent(out), optional:: err
14957  real(DP), pointer :: array(:,:,:,:)
14958  end subroutine historygetdouble4pointer
14959  end interface
14960  interface
14961  subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
14962  character(*), intent(in):: file
14963  character(*), intent(in):: varname
14964  character(*), intent(out):: url
14965  character(*), intent(in), optional:: range
14966  logical, intent(out), optional:: flag_time_exist
14967  character(*), intent(out), optional:: time_name
14968  logical, intent(out), optional:: err
14969  end subroutine lookup_growable_url
14970  end interface
14971  interface
14972  function file_rename_mpi( file ) result(result)
14973  use dc_types, only: string
14974  character(*), intent(in):: file
14975  character(STRING):: result
14976  end function file_rename_mpi
14977  end interface
14978  continue
14979  file_work = file
14980  if ( present_and_true( flag_mpi_split ) ) &
14981  & file_work = file_rename_mpi( file_work )
14982  call lookup_growable_url(file = file_work, varname = varname, &
14983  & url = url, &
14984  & flag_time_exist = flag_time_exist, time_name = tname, err = err)
14985  call url_chop_iorange( &
14986  & fullname = url, iorange = iorange, remainder = remainder )
14987  call split( str = iorange, carray = carray, sep = gt_equal )
14988  timevar_name = carray(1)
14989  deallocate( carray )
14990  time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
14991  call historygetdouble4pointer( file = file, &
14992  & varname = varname, array = array, &
14993  & range = time_range, quiet = quiet, &
14994  & flag_mpi_split = flag_mpi_split, &
14995  & returned_time = returned_time, &
14996  & flag_time_exist = flag_time_exist, &
14997  & err = err )
14998 end subroutine historygetdouble4pointertimei
14999 subroutine historygetdouble5pointertimei( &
15000  & file, varname, array, time, &
15001  & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
15002  use dc_string, only: tochar, split
15003  use dc_types, only: string, dp
15004  use dc_trace, only: dbgmessage
15005  use dc_url, only: url_chop_iorange, gt_equal
15006  use dc_present, only: present_and_true
15007  implicit none
15008  character(*), intent(in):: file, varname
15009  integer, intent(in):: time
15010  logical, intent(in), optional:: quiet
15011  real(DP), pointer :: array(:,:,:,:,:)
15012  logical, intent(in), optional:: flag_mpi_split
15013  real(DP), intent(out), optional:: returned_time
15014  logical, intent(out), optional:: flag_time_exist
15015  logical, intent(out), optional:: err
15016  character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
15017  character(STRING), pointer:: carray (:)
15018  character(STRING):: tname
15019  character(*), parameter :: subname = "HistoryGetDouble5TimeI"
15020  interface
15021  subroutine historygetdouble5pointer(&
15022  & file, varname, array, range, quiet, &
15023  & flag_mpi_split, returned_time, flag_time_exist, err)
15024  use dc_types, only: dp
15025  character(*), intent(in):: file
15026  character(*), intent(in):: varname
15027  character(*), intent(in), optional:: range
15028  logical, intent(in), optional:: quiet
15029  logical, intent(in), optional:: flag_mpi_split
15030  real(DP), intent(out), optional:: returned_time
15031  logical, intent(out), optional:: flag_time_exist
15032  logical, intent(out), optional:: err
15033  real(DP), pointer :: array(:,:,:,:,:)
15034  end subroutine historygetdouble5pointer
15035  end interface
15036  interface
15037  subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
15038  character(*), intent(in):: file
15039  character(*), intent(in):: varname
15040  character(*), intent(out):: url
15041  character(*), intent(in), optional:: range
15042  logical, intent(out), optional:: flag_time_exist
15043  character(*), intent(out), optional:: time_name
15044  logical, intent(out), optional:: err
15045  end subroutine lookup_growable_url
15046  end interface
15047  interface
15048  function file_rename_mpi( file ) result(result)
15049  use dc_types, only: string
15050  character(*), intent(in):: file
15051  character(STRING):: result
15052  end function file_rename_mpi
15053  end interface
15054  continue
15055  file_work = file
15056  if ( present_and_true( flag_mpi_split ) ) &
15057  & file_work = file_rename_mpi( file_work )
15058  call lookup_growable_url(file = file_work, varname = varname, &
15059  & url = url, &
15060  & flag_time_exist = flag_time_exist, time_name = tname, err = err)
15061  call url_chop_iorange( &
15062  & fullname = url, iorange = iorange, remainder = remainder )
15063  call split( str = iorange, carray = carray, sep = gt_equal )
15064  timevar_name = carray(1)
15065  deallocate( carray )
15066  time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
15067  call historygetdouble5pointer( file = file, &
15068  & varname = varname, array = array, &
15069  & range = time_range, quiet = quiet, &
15070  & flag_mpi_split = flag_mpi_split, &
15071  & returned_time = returned_time, &
15072  & flag_time_exist = flag_time_exist, &
15073  & err = err )
15074 end subroutine historygetdouble5pointertimei
15075 subroutine historygetdouble6pointertimei( &
15076  & file, varname, array, time, &
15077  & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
15078  use dc_string, only: tochar, split
15079  use dc_types, only: string, dp
15080  use dc_trace, only: dbgmessage
15081  use dc_url, only: url_chop_iorange, gt_equal
15082  use dc_present, only: present_and_true
15083  implicit none
15084  character(*), intent(in):: file, varname
15085  integer, intent(in):: time
15086  logical, intent(in), optional:: quiet
15087  real(DP), pointer :: array(:,:,:,:,:,:)
15088  logical, intent(in), optional:: flag_mpi_split
15089  real(DP), intent(out), optional:: returned_time
15090  logical, intent(out), optional:: flag_time_exist
15091  logical, intent(out), optional:: err
15092  character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
15093  character(STRING), pointer:: carray (:)
15094  character(STRING):: tname
15095  character(*), parameter :: subname = "HistoryGetDouble6TimeI"
15096  interface
15097  subroutine historygetdouble6pointer(&
15098  & file, varname, array, range, quiet, &
15099  & flag_mpi_split, returned_time, flag_time_exist, err)
15100  use dc_types, only: dp
15101  character(*), intent(in):: file
15102  character(*), intent(in):: varname
15103  character(*), intent(in), optional:: range
15104  logical, intent(in), optional:: quiet
15105  logical, intent(in), optional:: flag_mpi_split
15106  real(DP), intent(out), optional:: returned_time
15107  logical, intent(out), optional:: flag_time_exist
15108  logical, intent(out), optional:: err
15109  real(DP), pointer :: array(:,:,:,:,:,:)
15110  end subroutine historygetdouble6pointer
15111  end interface
15112  interface
15113  subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
15114  character(*), intent(in):: file
15115  character(*), intent(in):: varname
15116  character(*), intent(out):: url
15117  character(*), intent(in), optional:: range
15118  logical, intent(out), optional:: flag_time_exist
15119  character(*), intent(out), optional:: time_name
15120  logical, intent(out), optional:: err
15121  end subroutine lookup_growable_url
15122  end interface
15123  interface
15124  function file_rename_mpi( file ) result(result)
15125  use dc_types, only: string
15126  character(*), intent(in):: file
15127  character(STRING):: result
15128  end function file_rename_mpi
15129  end interface
15130  continue
15131  file_work = file
15132  if ( present_and_true( flag_mpi_split ) ) &
15133  & file_work = file_rename_mpi( file_work )
15134  call lookup_growable_url(file = file_work, varname = varname, &
15135  & url = url, &
15136  & flag_time_exist = flag_time_exist, time_name = tname, err = err)
15137  call url_chop_iorange( &
15138  & fullname = url, iorange = iorange, remainder = remainder )
15139  call split( str = iorange, carray = carray, sep = gt_equal )
15140  timevar_name = carray(1)
15141  deallocate( carray )
15142  time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
15143  call historygetdouble6pointer( file = file, &
15144  & varname = varname, array = array, &
15145  & range = time_range, quiet = quiet, &
15146  & flag_mpi_split = flag_mpi_split, &
15147  & returned_time = returned_time, &
15148  & flag_time_exist = flag_time_exist, &
15149  & err = err )
15150 end subroutine historygetdouble6pointertimei
15151 subroutine historygetdouble7pointertimei( &
15152  & file, varname, array, time, &
15153  & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
15154  use dc_string, only: tochar, split
15155  use dc_types, only: string, dp
15156  use dc_trace, only: dbgmessage
15157  use dc_url, only: url_chop_iorange, gt_equal
15158  use dc_present, only: present_and_true
15159  implicit none
15160  character(*), intent(in):: file, varname
15161  integer, intent(in):: time
15162  logical, intent(in), optional:: quiet
15163  real(DP), pointer :: array(:,:,:,:,:,:,:)
15164  logical, intent(in), optional:: flag_mpi_split
15165  real(DP), intent(out), optional:: returned_time
15166  logical, intent(out), optional:: flag_time_exist
15167  logical, intent(out), optional:: err
15168  character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
15169  character(STRING), pointer:: carray (:)
15170  character(STRING):: tname
15171  character(*), parameter :: subname = "HistoryGetDouble7TimeI"
15172  interface
15173  subroutine historygetdouble7pointer(&
15174  & file, varname, array, range, quiet, &
15175  & flag_mpi_split, returned_time, flag_time_exist, err)
15176  use dc_types, only: dp
15177  character(*), intent(in):: file
15178  character(*), intent(in):: varname
15179  character(*), intent(in), optional:: range
15180  logical, intent(in), optional:: quiet
15181  logical, intent(in), optional:: flag_mpi_split
15182  real(DP), intent(out), optional:: returned_time
15183  logical, intent(out), optional:: flag_time_exist
15184  logical, intent(out), optional:: err
15185  real(DP), pointer :: array(:,:,:,:,:,:,:)
15186  end subroutine historygetdouble7pointer
15187  end interface
15188  interface
15189  subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
15190  character(*), intent(in):: file
15191  character(*), intent(in):: varname
15192  character(*), intent(out):: url
15193  character(*), intent(in), optional:: range
15194  logical, intent(out), optional:: flag_time_exist
15195  character(*), intent(out), optional:: time_name
15196  logical, intent(out), optional:: err
15197  end subroutine lookup_growable_url
15198  end interface
15199  interface
15200  function file_rename_mpi( file ) result(result)
15201  use dc_types, only: string
15202  character(*), intent(in):: file
15203  character(STRING):: result
15204  end function file_rename_mpi
15205  end interface
15206  continue
15207  file_work = file
15208  if ( present_and_true( flag_mpi_split ) ) &
15209  & file_work = file_rename_mpi( file_work )
15210  call lookup_growable_url(file = file_work, varname = varname, &
15211  & url = url, &
15212  & flag_time_exist = flag_time_exist, time_name = tname, err = err)
15213  call url_chop_iorange( &
15214  & fullname = url, iorange = iorange, remainder = remainder )
15215  call split( str = iorange, carray = carray, sep = gt_equal )
15216  timevar_name = carray(1)
15217  deallocate( carray )
15218  time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
15219  call historygetdouble7pointer( file = file, &
15220  & varname = varname, array = array, &
15221  & range = time_range, quiet = quiet, &
15222  & flag_mpi_split = flag_mpi_split, &
15223  & returned_time = returned_time, &
15224  & flag_time_exist = flag_time_exist, &
15225  & err = err )
15226 end subroutine historygetdouble7pointertimei
15227 subroutine historygetreal0timei( &
15228  & file, varname, array, time, &
15229  & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
15230  use dc_string, only: tochar, split
15231  use dc_types, only: string, dp, sp
15232  use dc_trace, only: dbgmessage
15233  use dc_url, only: url_chop_iorange, gt_equal
15234  use dc_present, only: present_and_true
15235  implicit none
15236  character(*), intent(in):: file, varname
15237  integer, intent(in):: time
15238  logical, intent(in), optional:: quiet
15239  real(SP), intent(out) :: array
15240  logical, intent(in), optional:: flag_mpi_split
15241  real(DP), intent(out), optional:: returned_time
15242  logical, intent(out), optional:: flag_time_exist
15243  logical, intent(out), optional:: err
15244  character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
15245  character(STRING), pointer:: carray (:)
15246  character(STRING):: tname
15247  character(*), parameter :: subname = "HistoryGetReal0TimeI"
15248  interface
15249  subroutine historygetreal0(&
15250  & file, varname, array, range, quiet, &
15251  & flag_mpi_split, returned_time, flag_time_exist, err)
15252  use dc_types, only: dp, sp
15253  character(*), intent(in):: file
15254  character(*), intent(in):: varname
15255  character(*), intent(in), optional:: range
15256  logical, intent(in), optional:: quiet
15257  logical, intent(in), optional:: flag_mpi_split
15258  real(DP), intent(out), optional:: returned_time
15259  logical, intent(out), optional:: flag_time_exist
15260  logical, intent(out), optional:: err
15261  real(SP), intent(out) :: array
15262  end subroutine historygetreal0
15263  end interface
15264  interface
15265  subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
15266  character(*), intent(in):: file
15267  character(*), intent(in):: varname
15268  character(*), intent(out):: url
15269  character(*), intent(in), optional:: range
15270  logical, intent(out), optional:: flag_time_exist
15271  character(*), intent(out), optional:: time_name
15272  logical, intent(out), optional:: err
15273  end subroutine lookup_growable_url
15274  end interface
15275  interface
15276  function file_rename_mpi( file ) result(result)
15277  use dc_types, only: string
15278  character(*), intent(in):: file
15279  character(STRING):: result
15280  end function file_rename_mpi
15281  end interface
15282  continue
15283  file_work = file
15284  if ( present_and_true( flag_mpi_split ) ) &
15285  & file_work = file_rename_mpi( file_work )
15286  call lookup_growable_url(file = file_work, varname = varname, &
15287  & url = url, &
15288  & flag_time_exist = flag_time_exist, time_name = tname, err = err)
15289  call url_chop_iorange( &
15290  & fullname = url, iorange = iorange, remainder = remainder )
15291  call split( str = iorange, carray = carray, sep = gt_equal )
15292  timevar_name = carray(1)
15293  deallocate( carray )
15294  time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
15295  call historygetreal0( file = file, &
15296  & varname = varname, array = array, &
15297  & range = time_range, quiet = quiet, &
15298  & flag_mpi_split = flag_mpi_split, &
15299  & returned_time = returned_time, &
15300  & flag_time_exist = flag_time_exist, &
15301  & err = err )
15302 end subroutine historygetreal0timei
15303 subroutine historygetreal1timei( &
15304  & file, varname, array, time, &
15305  & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
15306  use dc_string, only: tochar, split
15307  use dc_types, only: string, dp, sp
15308  use dc_trace, only: dbgmessage
15309  use dc_url, only: url_chop_iorange, gt_equal
15310  use dc_present, only: present_and_true
15311  implicit none
15312  character(*), intent(in):: file, varname
15313  integer, intent(in):: time
15314  logical, intent(in), optional:: quiet
15315  real(SP), intent(out) :: array(:)
15316  logical, intent(in), optional:: flag_mpi_split
15317  real(DP), intent(out), optional:: returned_time
15318  logical, intent(out), optional:: flag_time_exist
15319  logical, intent(out), optional:: err
15320  character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
15321  character(STRING), pointer:: carray (:)
15322  character(STRING):: tname
15323  character(*), parameter :: subname = "HistoryGetReal1TimeI"
15324  interface
15325  subroutine historygetreal1(&
15326  & file, varname, array, range, quiet, &
15327  & flag_mpi_split, returned_time, flag_time_exist, err)
15328  use dc_types, only: dp, sp
15329  character(*), intent(in):: file
15330  character(*), intent(in):: varname
15331  character(*), intent(in), optional:: range
15332  logical, intent(in), optional:: quiet
15333  logical, intent(in), optional:: flag_mpi_split
15334  real(DP), intent(out), optional:: returned_time
15335  logical, intent(out), optional:: flag_time_exist
15336  logical, intent(out), optional:: err
15337  real(SP), intent(out) :: array(:)
15338  end subroutine historygetreal1
15339  end interface
15340  interface
15341  subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
15342  character(*), intent(in):: file
15343  character(*), intent(in):: varname
15344  character(*), intent(out):: url
15345  character(*), intent(in), optional:: range
15346  logical, intent(out), optional:: flag_time_exist
15347  character(*), intent(out), optional:: time_name
15348  logical, intent(out), optional:: err
15349  end subroutine lookup_growable_url
15350  end interface
15351  interface
15352  function file_rename_mpi( file ) result(result)
15353  use dc_types, only: string
15354  character(*), intent(in):: file
15355  character(STRING):: result
15356  end function file_rename_mpi
15357  end interface
15358  continue
15359  file_work = file
15360  if ( present_and_true( flag_mpi_split ) ) &
15361  & file_work = file_rename_mpi( file_work )
15362  call lookup_growable_url(file = file_work, varname = varname, &
15363  & url = url, &
15364  & flag_time_exist = flag_time_exist, time_name = tname, err = err)
15365  call url_chop_iorange( &
15366  & fullname = url, iorange = iorange, remainder = remainder )
15367  call split( str = iorange, carray = carray, sep = gt_equal )
15368  timevar_name = carray(1)
15369  deallocate( carray )
15370  time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
15371  call historygetreal1( file = file, &
15372  & varname = varname, array = array, &
15373  & range = time_range, quiet = quiet, &
15374  & flag_mpi_split = flag_mpi_split, &
15375  & returned_time = returned_time, &
15376  & flag_time_exist = flag_time_exist, &
15377  & err = err )
15378 end subroutine historygetreal1timei
15379 subroutine historygetreal2timei( &
15380  & file, varname, array, time, &
15381  & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
15382  use dc_string, only: tochar, split
15383  use dc_types, only: string, dp, sp
15384  use dc_trace, only: dbgmessage
15385  use dc_url, only: url_chop_iorange, gt_equal
15386  use dc_present, only: present_and_true
15387  implicit none
15388  character(*), intent(in):: file, varname
15389  integer, intent(in):: time
15390  logical, intent(in), optional:: quiet
15391  real(SP), intent(out) :: array(:,:)
15392  logical, intent(in), optional:: flag_mpi_split
15393  real(DP), intent(out), optional:: returned_time
15394  logical, intent(out), optional:: flag_time_exist
15395  logical, intent(out), optional:: err
15396  character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
15397  character(STRING), pointer:: carray (:)
15398  character(STRING):: tname
15399  character(*), parameter :: subname = "HistoryGetReal2TimeI"
15400  interface
15401  subroutine historygetreal2(&
15402  & file, varname, array, range, quiet, &
15403  & flag_mpi_split, returned_time, flag_time_exist, err)
15404  use dc_types, only: dp, sp
15405  character(*), intent(in):: file
15406  character(*), intent(in):: varname
15407  character(*), intent(in), optional:: range
15408  logical, intent(in), optional:: quiet
15409  logical, intent(in), optional:: flag_mpi_split
15410  real(DP), intent(out), optional:: returned_time
15411  logical, intent(out), optional:: flag_time_exist
15412  logical, intent(out), optional:: err
15413  real(SP), intent(out) :: array(:,:)
15414  end subroutine historygetreal2
15415  end interface
15416  interface
15417  subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
15418  character(*), intent(in):: file
15419  character(*), intent(in):: varname
15420  character(*), intent(out):: url
15421  character(*), intent(in), optional:: range
15422  logical, intent(out), optional:: flag_time_exist
15423  character(*), intent(out), optional:: time_name
15424  logical, intent(out), optional:: err
15425  end subroutine lookup_growable_url
15426  end interface
15427  interface
15428  function file_rename_mpi( file ) result(result)
15429  use dc_types, only: string
15430  character(*), intent(in):: file
15431  character(STRING):: result
15432  end function file_rename_mpi
15433  end interface
15434  continue
15435  file_work = file
15436  if ( present_and_true( flag_mpi_split ) ) &
15437  & file_work = file_rename_mpi( file_work )
15438  call lookup_growable_url(file = file_work, varname = varname, &
15439  & url = url, &
15440  & flag_time_exist = flag_time_exist, time_name = tname, err = err)
15441  call url_chop_iorange( &
15442  & fullname = url, iorange = iorange, remainder = remainder )
15443  call split( str = iorange, carray = carray, sep = gt_equal )
15444  timevar_name = carray(1)
15445  deallocate( carray )
15446  time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
15447  call historygetreal2( file = file, &
15448  & varname = varname, array = array, &
15449  & range = time_range, quiet = quiet, &
15450  & flag_mpi_split = flag_mpi_split, &
15451  & returned_time = returned_time, &
15452  & flag_time_exist = flag_time_exist, &
15453  & err = err )
15454 end subroutine historygetreal2timei
15455 subroutine historygetreal3timei( &
15456  & file, varname, array, time, &
15457  & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
15458  use dc_string, only: tochar, split
15459  use dc_types, only: string, dp, sp
15460  use dc_trace, only: dbgmessage
15461  use dc_url, only: url_chop_iorange, gt_equal
15462  use dc_present, only: present_and_true
15463  implicit none
15464  character(*), intent(in):: file, varname
15465  integer, intent(in):: time
15466  logical, intent(in), optional:: quiet
15467  real(SP), intent(out) :: array(:,:,:)
15468  logical, intent(in), optional:: flag_mpi_split
15469  real(DP), intent(out), optional:: returned_time
15470  logical, intent(out), optional:: flag_time_exist
15471  logical, intent(out), optional:: err
15472  character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
15473  character(STRING), pointer:: carray (:)
15474  character(STRING):: tname
15475  character(*), parameter :: subname = "HistoryGetReal3TimeI"
15476  interface
15477  subroutine historygetreal3(&
15478  & file, varname, array, range, quiet, &
15479  & flag_mpi_split, returned_time, flag_time_exist, err)
15480  use dc_types, only: dp, sp
15481  character(*), intent(in):: file
15482  character(*), intent(in):: varname
15483  character(*), intent(in), optional:: range
15484  logical, intent(in), optional:: quiet
15485  logical, intent(in), optional:: flag_mpi_split
15486  real(DP), intent(out), optional:: returned_time
15487  logical, intent(out), optional:: flag_time_exist
15488  logical, intent(out), optional:: err
15489  real(SP), intent(out) :: array(:,:,:)
15490  end subroutine historygetreal3
15491  end interface
15492  interface
15493  subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
15494  character(*), intent(in):: file
15495  character(*), intent(in):: varname
15496  character(*), intent(out):: url
15497  character(*), intent(in), optional:: range
15498  logical, intent(out), optional:: flag_time_exist
15499  character(*), intent(out), optional:: time_name
15500  logical, intent(out), optional:: err
15501  end subroutine lookup_growable_url
15502  end interface
15503  interface
15504  function file_rename_mpi( file ) result(result)
15505  use dc_types, only: string
15506  character(*), intent(in):: file
15507  character(STRING):: result
15508  end function file_rename_mpi
15509  end interface
15510  continue
15511  file_work = file
15512  if ( present_and_true( flag_mpi_split ) ) &
15513  & file_work = file_rename_mpi( file_work )
15514  call lookup_growable_url(file = file_work, varname = varname, &
15515  & url = url, &
15516  & flag_time_exist = flag_time_exist, time_name = tname, err = err)
15517  call url_chop_iorange( &
15518  & fullname = url, iorange = iorange, remainder = remainder )
15519  call split( str = iorange, carray = carray, sep = gt_equal )
15520  timevar_name = carray(1)
15521  deallocate( carray )
15522  time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
15523  call historygetreal3( file = file, &
15524  & varname = varname, array = array, &
15525  & range = time_range, quiet = quiet, &
15526  & flag_mpi_split = flag_mpi_split, &
15527  & returned_time = returned_time, &
15528  & flag_time_exist = flag_time_exist, &
15529  & err = err )
15530 end subroutine historygetreal3timei
15531 subroutine historygetreal4timei( &
15532  & file, varname, array, time, &
15533  & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
15534  use dc_string, only: tochar, split
15535  use dc_types, only: string, dp, sp
15536  use dc_trace, only: dbgmessage
15537  use dc_url, only: url_chop_iorange, gt_equal
15538  use dc_present, only: present_and_true
15539  implicit none
15540  character(*), intent(in):: file, varname
15541  integer, intent(in):: time
15542  logical, intent(in), optional:: quiet
15543  real(SP), intent(out) :: array(:,:,:,:)
15544  logical, intent(in), optional:: flag_mpi_split
15545  real(DP), intent(out), optional:: returned_time
15546  logical, intent(out), optional:: flag_time_exist
15547  logical, intent(out), optional:: err
15548  character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
15549  character(STRING), pointer:: carray (:)
15550  character(STRING):: tname
15551  character(*), parameter :: subname = "HistoryGetReal4TimeI"
15552  interface
15553  subroutine historygetreal4(&
15554  & file, varname, array, range, quiet, &
15555  & flag_mpi_split, returned_time, flag_time_exist, err)
15556  use dc_types, only: dp, sp
15557  character(*), intent(in):: file
15558  character(*), intent(in):: varname
15559  character(*), intent(in), optional:: range
15560  logical, intent(in), optional:: quiet
15561  logical, intent(in), optional:: flag_mpi_split
15562  real(DP), intent(out), optional:: returned_time
15563  logical, intent(out), optional:: flag_time_exist
15564  logical, intent(out), optional:: err
15565  real(SP), intent(out) :: array(:,:,:,:)
15566  end subroutine historygetreal4
15567  end interface
15568  interface
15569  subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
15570  character(*), intent(in):: file
15571  character(*), intent(in):: varname
15572  character(*), intent(out):: url
15573  character(*), intent(in), optional:: range
15574  logical, intent(out), optional:: flag_time_exist
15575  character(*), intent(out), optional:: time_name
15576  logical, intent(out), optional:: err
15577  end subroutine lookup_growable_url
15578  end interface
15579  interface
15580  function file_rename_mpi( file ) result(result)
15581  use dc_types, only: string
15582  character(*), intent(in):: file
15583  character(STRING):: result
15584  end function file_rename_mpi
15585  end interface
15586  continue
15587  file_work = file
15588  if ( present_and_true( flag_mpi_split ) ) &
15589  & file_work = file_rename_mpi( file_work )
15590  call lookup_growable_url(file = file_work, varname = varname, &
15591  & url = url, &
15592  & flag_time_exist = flag_time_exist, time_name = tname, err = err)
15593  call url_chop_iorange( &
15594  & fullname = url, iorange = iorange, remainder = remainder )
15595  call split( str = iorange, carray = carray, sep = gt_equal )
15596  timevar_name = carray(1)
15597  deallocate( carray )
15598  time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
15599  call historygetreal4( file = file, &
15600  & varname = varname, array = array, &
15601  & range = time_range, quiet = quiet, &
15602  & flag_mpi_split = flag_mpi_split, &
15603  & returned_time = returned_time, &
15604  & flag_time_exist = flag_time_exist, &
15605  & err = err )
15606 end subroutine historygetreal4timei
15607 subroutine historygetreal5timei( &
15608  & file, varname, array, time, &
15609  & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
15610  use dc_string, only: tochar, split
15611  use dc_types, only: string, dp, sp
15612  use dc_trace, only: dbgmessage
15613  use dc_url, only: url_chop_iorange, gt_equal
15614  use dc_present, only: present_and_true
15615  implicit none
15616  character(*), intent(in):: file, varname
15617  integer, intent(in):: time
15618  logical, intent(in), optional:: quiet
15619  real(SP), intent(out) :: array(:,:,:,:,:)
15620  logical, intent(in), optional:: flag_mpi_split
15621  real(DP), intent(out), optional:: returned_time
15622  logical, intent(out), optional:: flag_time_exist
15623  logical, intent(out), optional:: err
15624  character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
15625  character(STRING), pointer:: carray (:)
15626  character(STRING):: tname
15627  character(*), parameter :: subname = "HistoryGetReal5TimeI"
15628  interface
15629  subroutine historygetreal5(&
15630  & file, varname, array, range, quiet, &
15631  & flag_mpi_split, returned_time, flag_time_exist, err)
15632  use dc_types, only: dp, sp
15633  character(*), intent(in):: file
15634  character(*), intent(in):: varname
15635  character(*), intent(in), optional:: range
15636  logical, intent(in), optional:: quiet
15637  logical, intent(in), optional:: flag_mpi_split
15638  real(DP), intent(out), optional:: returned_time
15639  logical, intent(out), optional:: flag_time_exist
15640  logical, intent(out), optional:: err
15641  real(SP), intent(out) :: array(:,:,:,:,:)
15642  end subroutine historygetreal5
15643  end interface
15644  interface
15645  subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
15646  character(*), intent(in):: file
15647  character(*), intent(in):: varname
15648  character(*), intent(out):: url
15649  character(*), intent(in), optional:: range
15650  logical, intent(out), optional:: flag_time_exist
15651  character(*), intent(out), optional:: time_name
15652  logical, intent(out), optional:: err
15653  end subroutine lookup_growable_url
15654  end interface
15655  interface
15656  function file_rename_mpi( file ) result(result)
15657  use dc_types, only: string
15658  character(*), intent(in):: file
15659  character(STRING):: result
15660  end function file_rename_mpi
15661  end interface
15662  continue
15663  file_work = file
15664  if ( present_and_true( flag_mpi_split ) ) &
15665  & file_work = file_rename_mpi( file_work )
15666  call lookup_growable_url(file = file_work, varname = varname, &
15667  & url = url, &
15668  & flag_time_exist = flag_time_exist, time_name = tname, err = err)
15669  call url_chop_iorange( &
15670  & fullname = url, iorange = iorange, remainder = remainder )
15671  call split( str = iorange, carray = carray, sep = gt_equal )
15672  timevar_name = carray(1)
15673  deallocate( carray )
15674  time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
15675  call historygetreal5( file = file, &
15676  & varname = varname, array = array, &
15677  & range = time_range, quiet = quiet, &
15678  & flag_mpi_split = flag_mpi_split, &
15679  & returned_time = returned_time, &
15680  & flag_time_exist = flag_time_exist, &
15681  & err = err )
15682 end subroutine historygetreal5timei
15683 subroutine historygetreal6timei( &
15684  & file, varname, array, time, &
15685  & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
15686  use dc_string, only: tochar, split
15687  use dc_types, only: string, dp, sp
15688  use dc_trace, only: dbgmessage
15689  use dc_url, only: url_chop_iorange, gt_equal
15690  use dc_present, only: present_and_true
15691  implicit none
15692  character(*), intent(in):: file, varname
15693  integer, intent(in):: time
15694  logical, intent(in), optional:: quiet
15695  real(SP), intent(out) :: array(:,:,:,:,:,:)
15696  logical, intent(in), optional:: flag_mpi_split
15697  real(DP), intent(out), optional:: returned_time
15698  logical, intent(out), optional:: flag_time_exist
15699  logical, intent(out), optional:: err
15700  character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
15701  character(STRING), pointer:: carray (:)
15702  character(STRING):: tname
15703  character(*), parameter :: subname = "HistoryGetReal6TimeI"
15704  interface
15705  subroutine historygetreal6(&
15706  & file, varname, array, range, quiet, &
15707  & flag_mpi_split, returned_time, flag_time_exist, err)
15708  use dc_types, only: dp, sp
15709  character(*), intent(in):: file
15710  character(*), intent(in):: varname
15711  character(*), intent(in), optional:: range
15712  logical, intent(in), optional:: quiet
15713  logical, intent(in), optional:: flag_mpi_split
15714  real(DP), intent(out), optional:: returned_time
15715  logical, intent(out), optional:: flag_time_exist
15716  logical, intent(out), optional:: err
15717  real(SP), intent(out) :: array(:,:,:,:,:,:)
15718  end subroutine historygetreal6
15719  end interface
15720  interface
15721  subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
15722  character(*), intent(in):: file
15723  character(*), intent(in):: varname
15724  character(*), intent(out):: url
15725  character(*), intent(in), optional:: range
15726  logical, intent(out), optional:: flag_time_exist
15727  character(*), intent(out), optional:: time_name
15728  logical, intent(out), optional:: err
15729  end subroutine lookup_growable_url
15730  end interface
15731  interface
15732  function file_rename_mpi( file ) result(result)
15733  use dc_types, only: string
15734  character(*), intent(in):: file
15735  character(STRING):: result
15736  end function file_rename_mpi
15737  end interface
15738  continue
15739  file_work = file
15740  if ( present_and_true( flag_mpi_split ) ) &
15741  & file_work = file_rename_mpi( file_work )
15742  call lookup_growable_url(file = file_work, varname = varname, &
15743  & url = url, &
15744  & flag_time_exist = flag_time_exist, time_name = tname, err = err)
15745  call url_chop_iorange( &
15746  & fullname = url, iorange = iorange, remainder = remainder )
15747  call split( str = iorange, carray = carray, sep = gt_equal )
15748  timevar_name = carray(1)
15749  deallocate( carray )
15750  time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
15751  call historygetreal6( file = file, &
15752  & varname = varname, array = array, &
15753  & range = time_range, quiet = quiet, &
15754  & flag_mpi_split = flag_mpi_split, &
15755  & returned_time = returned_time, &
15756  & flag_time_exist = flag_time_exist, &
15757  & err = err )
15758 end subroutine historygetreal6timei
15759 subroutine historygetreal7timei( &
15760  & file, varname, array, time, &
15761  & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
15762  use dc_string, only: tochar, split
15763  use dc_types, only: string, dp, sp
15764  use dc_trace, only: dbgmessage
15765  use dc_url, only: url_chop_iorange, gt_equal
15766  use dc_present, only: present_and_true
15767  implicit none
15768  character(*), intent(in):: file, varname
15769  integer, intent(in):: time
15770  logical, intent(in), optional:: quiet
15771  real(SP), intent(out) :: array(:,:,:,:,:,:,:)
15772  logical, intent(in), optional:: flag_mpi_split
15773  real(DP), intent(out), optional:: returned_time
15774  logical, intent(out), optional:: flag_time_exist
15775  logical, intent(out), optional:: err
15776  character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
15777  character(STRING), pointer:: carray (:)
15778  character(STRING):: tname
15779  character(*), parameter :: subname = "HistoryGetReal7TimeI"
15780  interface
15781  subroutine historygetreal7(&
15782  & file, varname, array, range, quiet, &
15783  & flag_mpi_split, returned_time, flag_time_exist, err)
15784  use dc_types, only: dp, sp
15785  character(*), intent(in):: file
15786  character(*), intent(in):: varname
15787  character(*), intent(in), optional:: range
15788  logical, intent(in), optional:: quiet
15789  logical, intent(in), optional:: flag_mpi_split
15790  real(DP), intent(out), optional:: returned_time
15791  logical, intent(out), optional:: flag_time_exist
15792  logical, intent(out), optional:: err
15793  real(SP), intent(out) :: array(:,:,:,:,:,:,:)
15794  end subroutine historygetreal7
15795  end interface
15796  interface
15797  subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
15798  character(*), intent(in):: file
15799  character(*), intent(in):: varname
15800  character(*), intent(out):: url
15801  character(*), intent(in), optional:: range
15802  logical, intent(out), optional:: flag_time_exist
15803  character(*), intent(out), optional:: time_name
15804  logical, intent(out), optional:: err
15805  end subroutine lookup_growable_url
15806  end interface
15807  interface
15808  function file_rename_mpi( file ) result(result)
15809  use dc_types, only: string
15810  character(*), intent(in):: file
15811  character(STRING):: result
15812  end function file_rename_mpi
15813  end interface
15814  continue
15815  file_work = file
15816  if ( present_and_true( flag_mpi_split ) ) &
15817  & file_work = file_rename_mpi( file_work )
15818  call lookup_growable_url(file = file_work, varname = varname, &
15819  & url = url, &
15820  & flag_time_exist = flag_time_exist, time_name = tname, err = err)
15821  call url_chop_iorange( &
15822  & fullname = url, iorange = iorange, remainder = remainder )
15823  call split( str = iorange, carray = carray, sep = gt_equal )
15824  timevar_name = carray(1)
15825  deallocate( carray )
15826  time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
15827  call historygetreal7( file = file, &
15828  & varname = varname, array = array, &
15829  & range = time_range, quiet = quiet, &
15830  & flag_mpi_split = flag_mpi_split, &
15831  & returned_time = returned_time, &
15832  & flag_time_exist = flag_time_exist, &
15833  & err = err )
15834 end subroutine historygetreal7timei
15835 subroutine historygetreal0pointertimei( &
15836  & file, varname, array, time, &
15837  & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
15838  use dc_string, only: tochar, split
15839  use dc_types, only: string, dp, sp
15840  use dc_trace, only: dbgmessage
15841  use dc_url, only: url_chop_iorange, gt_equal
15842  use dc_present, only: present_and_true
15843  implicit none
15844  character(*), intent(in):: file, varname
15845  integer, intent(in):: time
15846  logical, intent(in), optional:: quiet
15847  real(SP), pointer :: array
15848  logical, intent(in), optional:: flag_mpi_split
15849  real(DP), intent(out), optional:: returned_time
15850  logical, intent(out), optional:: flag_time_exist
15851  logical, intent(out), optional:: err
15852  character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
15853  character(STRING), pointer:: carray (:)
15854  character(STRING):: tname
15855  character(*), parameter :: subname = "HistoryGetReal0TimeI"
15856  interface
15857  subroutine historygetreal0pointer(&
15858  & file, varname, array, range, quiet, &
15859  & flag_mpi_split, returned_time, flag_time_exist, err)
15860  use dc_types, only: dp, sp
15861  character(*), intent(in):: file
15862  character(*), intent(in):: varname
15863  character(*), intent(in), optional:: range
15864  logical, intent(in), optional:: quiet
15865  logical, intent(in), optional:: flag_mpi_split
15866  real(DP), intent(out), optional:: returned_time
15867  logical, intent(out), optional:: flag_time_exist
15868  logical, intent(out), optional:: err
15869  real(SP), pointer :: array
15870  end subroutine historygetreal0pointer
15871  end interface
15872  interface
15873  subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
15874  character(*), intent(in):: file
15875  character(*), intent(in):: varname
15876  character(*), intent(out):: url
15877  character(*), intent(in), optional:: range
15878  logical, intent(out), optional:: flag_time_exist
15879  character(*), intent(out), optional:: time_name
15880  logical, intent(out), optional:: err
15881  end subroutine lookup_growable_url
15882  end interface
15883  interface
15884  function file_rename_mpi( file ) result(result)
15885  use dc_types, only: string
15886  character(*), intent(in):: file
15887  character(STRING):: result
15888  end function file_rename_mpi
15889  end interface
15890  continue
15891  file_work = file
15892  if ( present_and_true( flag_mpi_split ) ) &
15893  & file_work = file_rename_mpi( file_work )
15894  call lookup_growable_url(file = file_work, varname = varname, &
15895  & url = url, &
15896  & flag_time_exist = flag_time_exist, time_name = tname, err = err)
15897  call url_chop_iorange( &
15898  & fullname = url, iorange = iorange, remainder = remainder )
15899  call split( str = iorange, carray = carray, sep = gt_equal )
15900  timevar_name = carray(1)
15901  deallocate( carray )
15902  time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
15903  call historygetreal0pointer( file = file, &
15904  & varname = varname, array = array, &
15905  & range = time_range, quiet = quiet, &
15906  & flag_mpi_split = flag_mpi_split, &
15907  & returned_time = returned_time, &
15908  & flag_time_exist = flag_time_exist, &
15909  & err = err )
15910 end subroutine historygetreal0pointertimei
15911 subroutine historygetreal1pointertimei( &
15912  & file, varname, array, time, &
15913  & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
15914  use dc_string, only: tochar, split
15915  use dc_types, only: string, dp, sp
15916  use dc_trace, only: dbgmessage
15917  use dc_url, only: url_chop_iorange, gt_equal
15918  use dc_present, only: present_and_true
15919  implicit none
15920  character(*), intent(in):: file, varname
15921  integer, intent(in):: time
15922  logical, intent(in), optional:: quiet
15923  real(SP), pointer :: array(:)
15924  logical, intent(in), optional:: flag_mpi_split
15925  real(DP), intent(out), optional:: returned_time
15926  logical, intent(out), optional:: flag_time_exist
15927  logical, intent(out), optional:: err
15928  character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
15929  character(STRING), pointer:: carray (:)
15930  character(STRING):: tname
15931  character(*), parameter :: subname = "HistoryGetReal1TimeI"
15932  interface
15933  subroutine historygetreal1pointer(&
15934  & file, varname, array, range, quiet, &
15935  & flag_mpi_split, returned_time, flag_time_exist, err)
15936  use dc_types, only: dp, sp
15937  character(*), intent(in):: file
15938  character(*), intent(in):: varname
15939  character(*), intent(in), optional:: range
15940  logical, intent(in), optional:: quiet
15941  logical, intent(in), optional:: flag_mpi_split
15942  real(DP), intent(out), optional:: returned_time
15943  logical, intent(out), optional:: flag_time_exist
15944  logical, intent(out), optional:: err
15945  real(SP), pointer :: array(:)
15946  end subroutine historygetreal1pointer
15947  end interface
15948  interface
15949  subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
15950  character(*), intent(in):: file
15951  character(*), intent(in):: varname
15952  character(*), intent(out):: url
15953  character(*), intent(in), optional:: range
15954  logical, intent(out), optional:: flag_time_exist
15955  character(*), intent(out), optional:: time_name
15956  logical, intent(out), optional:: err
15957  end subroutine lookup_growable_url
15958  end interface
15959  interface
15960  function file_rename_mpi( file ) result(result)
15961  use dc_types, only: string
15962  character(*), intent(in):: file
15963  character(STRING):: result
15964  end function file_rename_mpi
15965  end interface
15966  continue
15967  file_work = file
15968  if ( present_and_true( flag_mpi_split ) ) &
15969  & file_work = file_rename_mpi( file_work )
15970  call lookup_growable_url(file = file_work, varname = varname, &
15971  & url = url, &
15972  & flag_time_exist = flag_time_exist, time_name = tname, err = err)
15973  call url_chop_iorange( &
15974  & fullname = url, iorange = iorange, remainder = remainder )
15975  call split( str = iorange, carray = carray, sep = gt_equal )
15976  timevar_name = carray(1)
15977  deallocate( carray )
15978  time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
15979  call historygetreal1pointer( file = file, &
15980  & varname = varname, array = array, &
15981  & range = time_range, quiet = quiet, &
15982  & flag_mpi_split = flag_mpi_split, &
15983  & returned_time = returned_time, &
15984  & flag_time_exist = flag_time_exist, &
15985  & err = err )
15986 end subroutine historygetreal1pointertimei
15987 subroutine historygetreal2pointertimei( &
15988  & file, varname, array, time, &
15989  & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
15990  use dc_string, only: tochar, split
15991  use dc_types, only: string, dp, sp
15992  use dc_trace, only: dbgmessage
15993  use dc_url, only: url_chop_iorange, gt_equal
15994  use dc_present, only: present_and_true
15995  implicit none
15996  character(*), intent(in):: file, varname
15997  integer, intent(in):: time
15998  logical, intent(in), optional:: quiet
15999  real(SP), pointer :: array(:,:)
16000  logical, intent(in), optional:: flag_mpi_split
16001  real(DP), intent(out), optional:: returned_time
16002  logical, intent(out), optional:: flag_time_exist
16003  logical, intent(out), optional:: err
16004  character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
16005  character(STRING), pointer:: carray (:)
16006  character(STRING):: tname
16007  character(*), parameter :: subname = "HistoryGetReal2TimeI"
16008  interface
16009  subroutine historygetreal2pointer(&
16010  & file, varname, array, range, quiet, &
16011  & flag_mpi_split, returned_time, flag_time_exist, err)
16012  use dc_types, only: dp, sp
16013  character(*), intent(in):: file
16014  character(*), intent(in):: varname
16015  character(*), intent(in), optional:: range
16016  logical, intent(in), optional:: quiet
16017  logical, intent(in), optional:: flag_mpi_split
16018  real(DP), intent(out), optional:: returned_time
16019  logical, intent(out), optional:: flag_time_exist
16020  logical, intent(out), optional:: err
16021  real(SP), pointer :: array(:,:)
16022  end subroutine historygetreal2pointer
16023  end interface
16024  interface
16025  subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
16026  character(*), intent(in):: file
16027  character(*), intent(in):: varname
16028  character(*), intent(out):: url
16029  character(*), intent(in), optional:: range
16030  logical, intent(out), optional:: flag_time_exist
16031  character(*), intent(out), optional:: time_name
16032  logical, intent(out), optional:: err
16033  end subroutine lookup_growable_url
16034  end interface
16035  interface
16036  function file_rename_mpi( file ) result(result)
16037  use dc_types, only: string
16038  character(*), intent(in):: file
16039  character(STRING):: result
16040  end function file_rename_mpi
16041  end interface
16042  continue
16043  file_work = file
16044  if ( present_and_true( flag_mpi_split ) ) &
16045  & file_work = file_rename_mpi( file_work )
16046  call lookup_growable_url(file = file_work, varname = varname, &
16047  & url = url, &
16048  & flag_time_exist = flag_time_exist, time_name = tname, err = err)
16049  call url_chop_iorange( &
16050  & fullname = url, iorange = iorange, remainder = remainder )
16051  call split( str = iorange, carray = carray, sep = gt_equal )
16052  timevar_name = carray(1)
16053  deallocate( carray )
16054  time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
16055  call historygetreal2pointer( file = file, &
16056  & varname = varname, array = array, &
16057  & range = time_range, quiet = quiet, &
16058  & flag_mpi_split = flag_mpi_split, &
16059  & returned_time = returned_time, &
16060  & flag_time_exist = flag_time_exist, &
16061  & err = err )
16062 end subroutine historygetreal2pointertimei
16063 subroutine historygetreal3pointertimei( &
16064  & file, varname, array, time, &
16065  & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
16066  use dc_string, only: tochar, split
16067  use dc_types, only: string, dp, sp
16068  use dc_trace, only: dbgmessage
16069  use dc_url, only: url_chop_iorange, gt_equal
16070  use dc_present, only: present_and_true
16071  implicit none
16072  character(*), intent(in):: file, varname
16073  integer, intent(in):: time
16074  logical, intent(in), optional:: quiet
16075  real(SP), pointer :: array(:,:,:)
16076  logical, intent(in), optional:: flag_mpi_split
16077  real(DP), intent(out), optional:: returned_time
16078  logical, intent(out), optional:: flag_time_exist
16079  logical, intent(out), optional:: err
16080  character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
16081  character(STRING), pointer:: carray (:)
16082  character(STRING):: tname
16083  character(*), parameter :: subname = "HistoryGetReal3TimeI"
16084  interface
16085  subroutine historygetreal3pointer(&
16086  & file, varname, array, range, quiet, &
16087  & flag_mpi_split, returned_time, flag_time_exist, err)
16088  use dc_types, only: dp, sp
16089  character(*), intent(in):: file
16090  character(*), intent(in):: varname
16091  character(*), intent(in), optional:: range
16092  logical, intent(in), optional:: quiet
16093  logical, intent(in), optional:: flag_mpi_split
16094  real(DP), intent(out), optional:: returned_time
16095  logical, intent(out), optional:: flag_time_exist
16096  logical, intent(out), optional:: err
16097  real(SP), pointer :: array(:,:,:)
16098  end subroutine historygetreal3pointer
16099  end interface
16100  interface
16101  subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
16102  character(*), intent(in):: file
16103  character(*), intent(in):: varname
16104  character(*), intent(out):: url
16105  character(*), intent(in), optional:: range
16106  logical, intent(out), optional:: flag_time_exist
16107  character(*), intent(out), optional:: time_name
16108  logical, intent(out), optional:: err
16109  end subroutine lookup_growable_url
16110  end interface
16111  interface
16112  function file_rename_mpi( file ) result(result)
16113  use dc_types, only: string
16114  character(*), intent(in):: file
16115  character(STRING):: result
16116  end function file_rename_mpi
16117  end interface
16118  continue
16119  file_work = file
16120  if ( present_and_true( flag_mpi_split ) ) &
16121  & file_work = file_rename_mpi( file_work )
16122  call lookup_growable_url(file = file_work, varname = varname, &
16123  & url = url, &
16124  & flag_time_exist = flag_time_exist, time_name = tname, err = err)
16125  call url_chop_iorange( &
16126  & fullname = url, iorange = iorange, remainder = remainder )
16127  call split( str = iorange, carray = carray, sep = gt_equal )
16128  timevar_name = carray(1)
16129  deallocate( carray )
16130  time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
16131  call historygetreal3pointer( file = file, &
16132  & varname = varname, array = array, &
16133  & range = time_range, quiet = quiet, &
16134  & flag_mpi_split = flag_mpi_split, &
16135  & returned_time = returned_time, &
16136  & flag_time_exist = flag_time_exist, &
16137  & err = err )
16138 end subroutine historygetreal3pointertimei
16139 subroutine historygetreal4pointertimei( &
16140  & file, varname, array, time, &
16141  & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
16142  use dc_string, only: tochar, split
16143  use dc_types, only: string, dp, sp
16144  use dc_trace, only: dbgmessage
16145  use dc_url, only: url_chop_iorange, gt_equal
16146  use dc_present, only: present_and_true
16147  implicit none
16148  character(*), intent(in):: file, varname
16149  integer, intent(in):: time
16150  logical, intent(in), optional:: quiet
16151  real(SP), pointer :: array(:,:,:,:)
16152  logical, intent(in), optional:: flag_mpi_split
16153  real(DP), intent(out), optional:: returned_time
16154  logical, intent(out), optional:: flag_time_exist
16155  logical, intent(out), optional:: err
16156  character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
16157  character(STRING), pointer:: carray (:)
16158  character(STRING):: tname
16159  character(*), parameter :: subname = "HistoryGetReal4TimeI"
16160  interface
16161  subroutine historygetreal4pointer(&
16162  & file, varname, array, range, quiet, &
16163  & flag_mpi_split, returned_time, flag_time_exist, err)
16164  use dc_types, only: dp, sp
16165  character(*), intent(in):: file
16166  character(*), intent(in):: varname
16167  character(*), intent(in), optional:: range
16168  logical, intent(in), optional:: quiet
16169  logical, intent(in), optional:: flag_mpi_split
16170  real(DP), intent(out), optional:: returned_time
16171  logical, intent(out), optional:: flag_time_exist
16172  logical, intent(out), optional:: err
16173  real(SP), pointer :: array(:,:,:,:)
16174  end subroutine historygetreal4pointer
16175  end interface
16176  interface
16177  subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
16178  character(*), intent(in):: file
16179  character(*), intent(in):: varname
16180  character(*), intent(out):: url
16181  character(*), intent(in), optional:: range
16182  logical, intent(out), optional:: flag_time_exist
16183  character(*), intent(out), optional:: time_name
16184  logical, intent(out), optional:: err
16185  end subroutine lookup_growable_url
16186  end interface
16187  interface
16188  function file_rename_mpi( file ) result(result)
16189  use dc_types, only: string
16190  character(*), intent(in):: file
16191  character(STRING):: result
16192  end function file_rename_mpi
16193  end interface
16194  continue
16195  file_work = file
16196  if ( present_and_true( flag_mpi_split ) ) &
16197  & file_work = file_rename_mpi( file_work )
16198  call lookup_growable_url(file = file_work, varname = varname, &
16199  & url = url, &
16200  & flag_time_exist = flag_time_exist, time_name = tname, err = err)
16201  call url_chop_iorange( &
16202  & fullname = url, iorange = iorange, remainder = remainder )
16203  call split( str = iorange, carray = carray, sep = gt_equal )
16204  timevar_name = carray(1)
16205  deallocate( carray )
16206  time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
16207  call historygetreal4pointer( file = file, &
16208  & varname = varname, array = array, &
16209  & range = time_range, quiet = quiet, &
16210  & flag_mpi_split = flag_mpi_split, &
16211  & returned_time = returned_time, &
16212  & flag_time_exist = flag_time_exist, &
16213  & err = err )
16214 end subroutine historygetreal4pointertimei
16215 subroutine historygetreal5pointertimei( &
16216  & file, varname, array, time, &
16217  & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
16218  use dc_string, only: tochar, split
16219  use dc_types, only: string, dp, sp
16220  use dc_trace, only: dbgmessage
16221  use dc_url, only: url_chop_iorange, gt_equal
16222  use dc_present, only: present_and_true
16223  implicit none
16224  character(*), intent(in):: file, varname
16225  integer, intent(in):: time
16226  logical, intent(in), optional:: quiet
16227  real(SP), pointer :: array(:,:,:,:,:)
16228  logical, intent(in), optional:: flag_mpi_split
16229  real(DP), intent(out), optional:: returned_time
16230  logical, intent(out), optional:: flag_time_exist
16231  logical, intent(out), optional:: err
16232  character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
16233  character(STRING), pointer:: carray (:)
16234  character(STRING):: tname
16235  character(*), parameter :: subname = "HistoryGetReal5TimeI"
16236  interface
16237  subroutine historygetreal5pointer(&
16238  & file, varname, array, range, quiet, &
16239  & flag_mpi_split, returned_time, flag_time_exist, err)
16240  use dc_types, only: dp, sp
16241  character(*), intent(in):: file
16242  character(*), intent(in):: varname
16243  character(*), intent(in), optional:: range
16244  logical, intent(in), optional:: quiet
16245  logical, intent(in), optional:: flag_mpi_split
16246  real(DP), intent(out), optional:: returned_time
16247  logical, intent(out), optional:: flag_time_exist
16248  logical, intent(out), optional:: err
16249  real(SP), pointer :: array(:,:,:,:,:)
16250  end subroutine historygetreal5pointer
16251  end interface
16252  interface
16253  subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
16254  character(*), intent(in):: file
16255  character(*), intent(in):: varname
16256  character(*), intent(out):: url
16257  character(*), intent(in), optional:: range
16258  logical, intent(out), optional:: flag_time_exist
16259  character(*), intent(out), optional:: time_name
16260  logical, intent(out), optional:: err
16261  end subroutine lookup_growable_url
16262  end interface
16263  interface
16264  function file_rename_mpi( file ) result(result)
16265  use dc_types, only: string
16266  character(*), intent(in):: file
16267  character(STRING):: result
16268  end function file_rename_mpi
16269  end interface
16270  continue
16271  file_work = file
16272  if ( present_and_true( flag_mpi_split ) ) &
16273  & file_work = file_rename_mpi( file_work )
16274  call lookup_growable_url(file = file_work, varname = varname, &
16275  & url = url, &
16276  & flag_time_exist = flag_time_exist, time_name = tname, err = err)
16277  call url_chop_iorange( &
16278  & fullname = url, iorange = iorange, remainder = remainder )
16279  call split( str = iorange, carray = carray, sep = gt_equal )
16280  timevar_name = carray(1)
16281  deallocate( carray )
16282  time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
16283  call historygetreal5pointer( file = file, &
16284  & varname = varname, array = array, &
16285  & range = time_range, quiet = quiet, &
16286  & flag_mpi_split = flag_mpi_split, &
16287  & returned_time = returned_time, &
16288  & flag_time_exist = flag_time_exist, &
16289  & err = err )
16290 end subroutine historygetreal5pointertimei
16291 subroutine historygetreal6pointertimei( &
16292  & file, varname, array, time, &
16293  & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
16294  use dc_string, only: tochar, split
16295  use dc_types, only: string, dp, sp
16296  use dc_trace, only: dbgmessage
16297  use dc_url, only: url_chop_iorange, gt_equal
16298  use dc_present, only: present_and_true
16299  implicit none
16300  character(*), intent(in):: file, varname
16301  integer, intent(in):: time
16302  logical, intent(in), optional:: quiet
16303  real(SP), pointer :: array(:,:,:,:,:,:)
16304  logical, intent(in), optional:: flag_mpi_split
16305  real(DP), intent(out), optional:: returned_time
16306  logical, intent(out), optional:: flag_time_exist
16307  logical, intent(out), optional:: err
16308  character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
16309  character(STRING), pointer:: carray (:)
16310  character(STRING):: tname
16311  character(*), parameter :: subname = "HistoryGetReal6TimeI"
16312  interface
16313  subroutine historygetreal6pointer(&
16314  & file, varname, array, range, quiet, &
16315  & flag_mpi_split, returned_time, flag_time_exist, err)
16316  use dc_types, only: dp, sp
16317  character(*), intent(in):: file
16318  character(*), intent(in):: varname
16319  character(*), intent(in), optional:: range
16320  logical, intent(in), optional:: quiet
16321  logical, intent(in), optional:: flag_mpi_split
16322  real(DP), intent(out), optional:: returned_time
16323  logical, intent(out), optional:: flag_time_exist
16324  logical, intent(out), optional:: err
16325  real(SP), pointer :: array(:,:,:,:,:,:)
16326  end subroutine historygetreal6pointer
16327  end interface
16328  interface
16329  subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
16330  character(*), intent(in):: file
16331  character(*), intent(in):: varname
16332  character(*), intent(out):: url
16333  character(*), intent(in), optional:: range
16334  logical, intent(out), optional:: flag_time_exist
16335  character(*), intent(out), optional:: time_name
16336  logical, intent(out), optional:: err
16337  end subroutine lookup_growable_url
16338  end interface
16339  interface
16340  function file_rename_mpi( file ) result(result)
16341  use dc_types, only: string
16342  character(*), intent(in):: file
16343  character(STRING):: result
16344  end function file_rename_mpi
16345  end interface
16346  continue
16347  file_work = file
16348  if ( present_and_true( flag_mpi_split ) ) &
16349  & file_work = file_rename_mpi( file_work )
16350  call lookup_growable_url(file = file_work, varname = varname, &
16351  & url = url, &
16352  & flag_time_exist = flag_time_exist, time_name = tname, err = err)
16353  call url_chop_iorange( &
16354  & fullname = url, iorange = iorange, remainder = remainder )
16355  call split( str = iorange, carray = carray, sep = gt_equal )
16356  timevar_name = carray(1)
16357  deallocate( carray )
16358  time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
16359  call historygetreal6pointer( file = file, &
16360  & varname = varname, array = array, &
16361  & range = time_range, quiet = quiet, &
16362  & flag_mpi_split = flag_mpi_split, &
16363  & returned_time = returned_time, &
16364  & flag_time_exist = flag_time_exist, &
16365  & err = err )
16366 end subroutine historygetreal6pointertimei
16367 subroutine historygetreal7pointertimei( &
16368  & file, varname, array, time, &
16369  & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
16370  use dc_string, only: tochar, split
16371  use dc_types, only: string, dp, sp
16372  use dc_trace, only: dbgmessage
16373  use dc_url, only: url_chop_iorange, gt_equal
16374  use dc_present, only: present_and_true
16375  implicit none
16376  character(*), intent(in):: file, varname
16377  integer, intent(in):: time
16378  logical, intent(in), optional:: quiet
16379  real(SP), pointer :: array(:,:,:,:,:,:,:)
16380  logical, intent(in), optional:: flag_mpi_split
16381  real(DP), intent(out), optional:: returned_time
16382  logical, intent(out), optional:: flag_time_exist
16383  logical, intent(out), optional:: err
16384  character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
16385  character(STRING), pointer:: carray (:)
16386  character(STRING):: tname
16387  character(*), parameter :: subname = "HistoryGetReal7TimeI"
16388  interface
16389  subroutine historygetreal7pointer(&
16390  & file, varname, array, range, quiet, &
16391  & flag_mpi_split, returned_time, flag_time_exist, err)
16392  use dc_types, only: dp, sp
16393  character(*), intent(in):: file
16394  character(*), intent(in):: varname
16395  character(*), intent(in), optional:: range
16396  logical, intent(in), optional:: quiet
16397  logical, intent(in), optional:: flag_mpi_split
16398  real(DP), intent(out), optional:: returned_time
16399  logical, intent(out), optional:: flag_time_exist
16400  logical, intent(out), optional:: err
16401  real(SP), pointer :: array(:,:,:,:,:,:,:)
16402  end subroutine historygetreal7pointer
16403  end interface
16404  interface
16405  subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
16406  character(*), intent(in):: file
16407  character(*), intent(in):: varname
16408  character(*), intent(out):: url
16409  character(*), intent(in), optional:: range
16410  logical, intent(out), optional:: flag_time_exist
16411  character(*), intent(out), optional:: time_name
16412  logical, intent(out), optional:: err
16413  end subroutine lookup_growable_url
16414  end interface
16415  interface
16416  function file_rename_mpi( file ) result(result)
16417  use dc_types, only: string
16418  character(*), intent(in):: file
16419  character(STRING):: result
16420  end function file_rename_mpi
16421  end interface
16422  continue
16423  file_work = file
16424  if ( present_and_true( flag_mpi_split ) ) &
16425  & file_work = file_rename_mpi( file_work )
16426  call lookup_growable_url(file = file_work, varname = varname, &
16427  & url = url, &
16428  & flag_time_exist = flag_time_exist, time_name = tname, err = err)
16429  call url_chop_iorange( &
16430  & fullname = url, iorange = iorange, remainder = remainder )
16431  call split( str = iorange, carray = carray, sep = gt_equal )
16432  timevar_name = carray(1)
16433  deallocate( carray )
16434  time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
16435  call historygetreal7pointer( file = file, &
16436  & varname = varname, array = array, &
16437  & range = time_range, quiet = quiet, &
16438  & flag_mpi_split = flag_mpi_split, &
16439  & returned_time = returned_time, &
16440  & flag_time_exist = flag_time_exist, &
16441  & err = err )
16442 end subroutine historygetreal7pointertimei
16443 subroutine historygetint0timei( &
16444  & file, varname, array, time, &
16445  & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
16446  use dc_string, only: tochar, split
16447  use dc_types, only: string, dp
16448  use dc_trace, only: dbgmessage
16449  use dc_url, only: url_chop_iorange, gt_equal
16450  use dc_present, only: present_and_true
16451  implicit none
16452  character(*), intent(in):: file, varname
16453  integer, intent(in):: time
16454  logical, intent(in), optional:: quiet
16455  integer, intent(out) :: array
16456  logical, intent(in), optional:: flag_mpi_split
16457  real(DP), intent(out), optional:: returned_time
16458  logical, intent(out), optional:: flag_time_exist
16459  logical, intent(out), optional:: err
16460  character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
16461  character(STRING), pointer:: carray (:)
16462  character(STRING):: tname
16463  character(*), parameter :: subname = "HistoryGetInt0TimeI"
16464  interface
16465  subroutine historygetint0(&
16466  & file, varname, array, range, quiet, &
16467  & flag_mpi_split, returned_time, flag_time_exist, err)
16468  use dc_types, only: dp
16469  character(*), intent(in):: file
16470  character(*), intent(in):: varname
16471  character(*), intent(in), optional:: range
16472  logical, intent(in), optional:: quiet
16473  logical, intent(in), optional:: flag_mpi_split
16474  real(DP), intent(out), optional:: returned_time
16475  logical, intent(out), optional:: flag_time_exist
16476  logical, intent(out), optional:: err
16477  integer, intent(out) :: array
16478  end subroutine historygetint0
16479  end interface
16480  interface
16481  subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
16482  character(*), intent(in):: file
16483  character(*), intent(in):: varname
16484  character(*), intent(out):: url
16485  character(*), intent(in), optional:: range
16486  logical, intent(out), optional:: flag_time_exist
16487  character(*), intent(out), optional:: time_name
16488  logical, intent(out), optional:: err
16489  end subroutine lookup_growable_url
16490  end interface
16491  interface
16492  function file_rename_mpi( file ) result(result)
16493  use dc_types, only: string
16494  character(*), intent(in):: file
16495  character(STRING):: result
16496  end function file_rename_mpi
16497  end interface
16498  continue
16499  file_work = file
16500  if ( present_and_true( flag_mpi_split ) ) &
16501  & file_work = file_rename_mpi( file_work )
16502  call lookup_growable_url(file = file_work, varname = varname, &
16503  & url = url, &
16504  & flag_time_exist = flag_time_exist, time_name = tname, err = err)
16505  call url_chop_iorange( &
16506  & fullname = url, iorange = iorange, remainder = remainder )
16507  call split( str = iorange, carray = carray, sep = gt_equal )
16508  timevar_name = carray(1)
16509  deallocate( carray )
16510  time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
16511  call historygetint0( file = file, &
16512  & varname = varname, array = array, &
16513  & range = time_range, quiet = quiet, &
16514  & flag_mpi_split = flag_mpi_split, &
16515  & returned_time = returned_time, &
16516  & flag_time_exist = flag_time_exist, &
16517  & err = err )
16518 end subroutine historygetint0timei
16519 subroutine historygetint1timei( &
16520  & file, varname, array, time, &
16521  & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
16522  use dc_string, only: tochar, split
16523  use dc_types, only: string, dp
16524  use dc_trace, only: dbgmessage
16525  use dc_url, only: url_chop_iorange, gt_equal
16526  use dc_present, only: present_and_true
16527  implicit none
16528  character(*), intent(in):: file, varname
16529  integer, intent(in):: time
16530  logical, intent(in), optional:: quiet
16531  integer, intent(out) :: array(:)
16532  logical, intent(in), optional:: flag_mpi_split
16533  real(DP), intent(out), optional:: returned_time
16534  logical, intent(out), optional:: flag_time_exist
16535  logical, intent(out), optional:: err
16536  character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
16537  character(STRING), pointer:: carray (:)
16538  character(STRING):: tname
16539  character(*), parameter :: subname = "HistoryGetInt1TimeI"
16540  interface
16541  subroutine historygetint1(&
16542  & file, varname, array, range, quiet, &
16543  & flag_mpi_split, returned_time, flag_time_exist, err)
16544  use dc_types, only: dp
16545  character(*), intent(in):: file
16546  character(*), intent(in):: varname
16547  character(*), intent(in), optional:: range
16548  logical, intent(in), optional:: quiet
16549  logical, intent(in), optional:: flag_mpi_split
16550  real(DP), intent(out), optional:: returned_time
16551  logical, intent(out), optional:: flag_time_exist
16552  logical, intent(out), optional:: err
16553  integer, intent(out) :: array(:)
16554  end subroutine historygetint1
16555  end interface
16556  interface
16557  subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
16558  character(*), intent(in):: file
16559  character(*), intent(in):: varname
16560  character(*), intent(out):: url
16561  character(*), intent(in), optional:: range
16562  logical, intent(out), optional:: flag_time_exist
16563  character(*), intent(out), optional:: time_name
16564  logical, intent(out), optional:: err
16565  end subroutine lookup_growable_url
16566  end interface
16567  interface
16568  function file_rename_mpi( file ) result(result)
16569  use dc_types, only: string
16570  character(*), intent(in):: file
16571  character(STRING):: result
16572  end function file_rename_mpi
16573  end interface
16574  continue
16575  file_work = file
16576  if ( present_and_true( flag_mpi_split ) ) &
16577  & file_work = file_rename_mpi( file_work )
16578  call lookup_growable_url(file = file_work, varname = varname, &
16579  & url = url, &
16580  & flag_time_exist = flag_time_exist, time_name = tname, err = err)
16581  call url_chop_iorange( &
16582  & fullname = url, iorange = iorange, remainder = remainder )
16583  call split( str = iorange, carray = carray, sep = gt_equal )
16584  timevar_name = carray(1)
16585  deallocate( carray )
16586  time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
16587  call historygetint1( file = file, &
16588  & varname = varname, array = array, &
16589  & range = time_range, quiet = quiet, &
16590  & flag_mpi_split = flag_mpi_split, &
16591  & returned_time = returned_time, &
16592  & flag_time_exist = flag_time_exist, &
16593  & err = err )
16594 end subroutine historygetint1timei
16595 subroutine historygetint2timei( &
16596  & file, varname, array, time, &
16597  & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
16598  use dc_string, only: tochar, split
16599  use dc_types, only: string, dp
16600  use dc_trace, only: dbgmessage
16601  use dc_url, only: url_chop_iorange, gt_equal
16602  use dc_present, only: present_and_true
16603  implicit none
16604  character(*), intent(in):: file, varname
16605  integer, intent(in):: time
16606  logical, intent(in), optional:: quiet
16607  integer, intent(out) :: array(:,:)
16608  logical, intent(in), optional:: flag_mpi_split
16609  real(DP), intent(out), optional:: returned_time
16610  logical, intent(out), optional:: flag_time_exist
16611  logical, intent(out), optional:: err
16612  character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
16613  character(STRING), pointer:: carray (:)
16614  character(STRING):: tname
16615  character(*), parameter :: subname = "HistoryGetInt2TimeI"
16616  interface
16617  subroutine historygetint2(&
16618  & file, varname, array, range, quiet, &
16619  & flag_mpi_split, returned_time, flag_time_exist, err)
16620  use dc_types, only: dp
16621  character(*), intent(in):: file
16622  character(*), intent(in):: varname
16623  character(*), intent(in), optional:: range
16624  logical, intent(in), optional:: quiet
16625  logical, intent(in), optional:: flag_mpi_split
16626  real(DP), intent(out), optional:: returned_time
16627  logical, intent(out), optional:: flag_time_exist
16628  logical, intent(out), optional:: err
16629  integer, intent(out) :: array(:,:)
16630  end subroutine historygetint2
16631  end interface
16632  interface
16633  subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
16634  character(*), intent(in):: file
16635  character(*), intent(in):: varname
16636  character(*), intent(out):: url
16637  character(*), intent(in), optional:: range
16638  logical, intent(out), optional:: flag_time_exist
16639  character(*), intent(out), optional:: time_name
16640  logical, intent(out), optional:: err
16641  end subroutine lookup_growable_url
16642  end interface
16643  interface
16644  function file_rename_mpi( file ) result(result)
16645  use dc_types, only: string
16646  character(*), intent(in):: file
16647  character(STRING):: result
16648  end function file_rename_mpi
16649  end interface
16650  continue
16651  file_work = file
16652  if ( present_and_true( flag_mpi_split ) ) &
16653  & file_work = file_rename_mpi( file_work )
16654  call lookup_growable_url(file = file_work, varname = varname, &
16655  & url = url, &
16656  & flag_time_exist = flag_time_exist, time_name = tname, err = err)
16657  call url_chop_iorange( &
16658  & fullname = url, iorange = iorange, remainder = remainder )
16659  call split( str = iorange, carray = carray, sep = gt_equal )
16660  timevar_name = carray(1)
16661  deallocate( carray )
16662  time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
16663  call historygetint2( file = file, &
16664  & varname = varname, array = array, &
16665  & range = time_range, quiet = quiet, &
16666  & flag_mpi_split = flag_mpi_split, &
16667  & returned_time = returned_time, &
16668  & flag_time_exist = flag_time_exist, &
16669  & err = err )
16670 end subroutine historygetint2timei
16671 subroutine historygetint3timei( &
16672  & file, varname, array, time, &
16673  & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
16674  use dc_string, only: tochar, split
16675  use dc_types, only: string, dp
16676  use dc_trace, only: dbgmessage
16677  use dc_url, only: url_chop_iorange, gt_equal
16678  use dc_present, only: present_and_true
16679  implicit none
16680  character(*), intent(in):: file, varname
16681  integer, intent(in):: time
16682  logical, intent(in), optional:: quiet
16683  integer, intent(out) :: array(:,:,:)
16684  logical, intent(in), optional:: flag_mpi_split
16685  real(DP), intent(out), optional:: returned_time
16686  logical, intent(out), optional:: flag_time_exist
16687  logical, intent(out), optional:: err
16688  character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
16689  character(STRING), pointer:: carray (:)
16690  character(STRING):: tname
16691  character(*), parameter :: subname = "HistoryGetInt3TimeI"
16692  interface
16693  subroutine historygetint3(&
16694  & file, varname, array, range, quiet, &
16695  & flag_mpi_split, returned_time, flag_time_exist, err)
16696  use dc_types, only: dp
16697  character(*), intent(in):: file
16698  character(*), intent(in):: varname
16699  character(*), intent(in), optional:: range
16700  logical, intent(in), optional:: quiet
16701  logical, intent(in), optional:: flag_mpi_split
16702  real(DP), intent(out), optional:: returned_time
16703  logical, intent(out), optional:: flag_time_exist
16704  logical, intent(out), optional:: err
16705  integer, intent(out) :: array(:,:,:)
16706  end subroutine historygetint3
16707  end interface
16708  interface
16709  subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
16710  character(*), intent(in):: file
16711  character(*), intent(in):: varname
16712  character(*), intent(out):: url
16713  character(*), intent(in), optional:: range
16714  logical, intent(out), optional:: flag_time_exist
16715  character(*), intent(out), optional:: time_name
16716  logical, intent(out), optional:: err
16717  end subroutine lookup_growable_url
16718  end interface
16719  interface
16720  function file_rename_mpi( file ) result(result)
16721  use dc_types, only: string
16722  character(*), intent(in):: file
16723  character(STRING):: result
16724  end function file_rename_mpi
16725  end interface
16726  continue
16727  file_work = file
16728  if ( present_and_true( flag_mpi_split ) ) &
16729  & file_work = file_rename_mpi( file_work )
16730  call lookup_growable_url(file = file_work, varname = varname, &
16731  & url = url, &
16732  & flag_time_exist = flag_time_exist, time_name = tname, err = err)
16733  call url_chop_iorange( &
16734  & fullname = url, iorange = iorange, remainder = remainder )
16735  call split( str = iorange, carray = carray, sep = gt_equal )
16736  timevar_name = carray(1)
16737  deallocate( carray )
16738  time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
16739  call historygetint3( file = file, &
16740  & varname = varname, array = array, &
16741  & range = time_range, quiet = quiet, &
16742  & flag_mpi_split = flag_mpi_split, &
16743  & returned_time = returned_time, &
16744  & flag_time_exist = flag_time_exist, &
16745  & err = err )
16746 end subroutine historygetint3timei
16747 subroutine historygetint4timei( &
16748  & file, varname, array, time, &
16749  & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
16750  use dc_string, only: tochar, split
16751  use dc_types, only: string, dp
16752  use dc_trace, only: dbgmessage
16753  use dc_url, only: url_chop_iorange, gt_equal
16754  use dc_present, only: present_and_true
16755  implicit none
16756  character(*), intent(in):: file, varname
16757  integer, intent(in):: time
16758  logical, intent(in), optional:: quiet
16759  integer, intent(out) :: array(:,:,:,:)
16760  logical, intent(in), optional:: flag_mpi_split
16761  real(DP), intent(out), optional:: returned_time
16762  logical, intent(out), optional:: flag_time_exist
16763  logical, intent(out), optional:: err
16764  character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
16765  character(STRING), pointer:: carray (:)
16766  character(STRING):: tname
16767  character(*), parameter :: subname = "HistoryGetInt4TimeI"
16768  interface
16769  subroutine historygetint4(&
16770  & file, varname, array, range, quiet, &
16771  & flag_mpi_split, returned_time, flag_time_exist, err)
16772  use dc_types, only: dp
16773  character(*), intent(in):: file
16774  character(*), intent(in):: varname
16775  character(*), intent(in), optional:: range
16776  logical, intent(in), optional:: quiet
16777  logical, intent(in), optional:: flag_mpi_split
16778  real(DP), intent(out), optional:: returned_time
16779  logical, intent(out), optional:: flag_time_exist
16780  logical, intent(out), optional:: err
16781  integer, intent(out) :: array(:,:,:,:)
16782  end subroutine historygetint4
16783  end interface
16784  interface
16785  subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
16786  character(*), intent(in):: file
16787  character(*), intent(in):: varname
16788  character(*), intent(out):: url
16789  character(*), intent(in), optional:: range
16790  logical, intent(out), optional:: flag_time_exist
16791  character(*), intent(out), optional:: time_name
16792  logical, intent(out), optional:: err
16793  end subroutine lookup_growable_url
16794  end interface
16795  interface
16796  function file_rename_mpi( file ) result(result)
16797  use dc_types, only: string
16798  character(*), intent(in):: file
16799  character(STRING):: result
16800  end function file_rename_mpi
16801  end interface
16802  continue
16803  file_work = file
16804  if ( present_and_true( flag_mpi_split ) ) &
16805  & file_work = file_rename_mpi( file_work )
16806  call lookup_growable_url(file = file_work, varname = varname, &
16807  & url = url, &
16808  & flag_time_exist = flag_time_exist, time_name = tname, err = err)
16809  call url_chop_iorange( &
16810  & fullname = url, iorange = iorange, remainder = remainder )
16811  call split( str = iorange, carray = carray, sep = gt_equal )
16812  timevar_name = carray(1)
16813  deallocate( carray )
16814  time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
16815  call historygetint4( file = file, &
16816  & varname = varname, array = array, &
16817  & range = time_range, quiet = quiet, &
16818  & flag_mpi_split = flag_mpi_split, &
16819  & returned_time = returned_time, &
16820  & flag_time_exist = flag_time_exist, &
16821  & err = err )
16822 end subroutine historygetint4timei
16823 subroutine historygetint5timei( &
16824  & file, varname, array, time, &
16825  & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
16826  use dc_string, only: tochar, split
16827  use dc_types, only: string, dp
16828  use dc_trace, only: dbgmessage
16829  use dc_url, only: url_chop_iorange, gt_equal
16830  use dc_present, only: present_and_true
16831  implicit none
16832  character(*), intent(in):: file, varname
16833  integer, intent(in):: time
16834  logical, intent(in), optional:: quiet
16835  integer, intent(out) :: array(:,:,:,:,:)
16836  logical, intent(in), optional:: flag_mpi_split
16837  real(DP), intent(out), optional:: returned_time
16838  logical, intent(out), optional:: flag_time_exist
16839  logical, intent(out), optional:: err
16840  character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
16841  character(STRING), pointer:: carray (:)
16842  character(STRING):: tname
16843  character(*), parameter :: subname = "HistoryGetInt5TimeI"
16844  interface
16845  subroutine historygetint5(&
16846  & file, varname, array, range, quiet, &
16847  & flag_mpi_split, returned_time, flag_time_exist, err)
16848  use dc_types, only: dp
16849  character(*), intent(in):: file
16850  character(*), intent(in):: varname
16851  character(*), intent(in), optional:: range
16852  logical, intent(in), optional:: quiet
16853  logical, intent(in), optional:: flag_mpi_split
16854  real(DP), intent(out), optional:: returned_time
16855  logical, intent(out), optional:: flag_time_exist
16856  logical, intent(out), optional:: err
16857  integer, intent(out) :: array(:,:,:,:,:)
16858  end subroutine historygetint5
16859  end interface
16860  interface
16861  subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
16862  character(*), intent(in):: file
16863  character(*), intent(in):: varname
16864  character(*), intent(out):: url
16865  character(*), intent(in), optional:: range
16866  logical, intent(out), optional:: flag_time_exist
16867  character(*), intent(out), optional:: time_name
16868  logical, intent(out), optional:: err
16869  end subroutine lookup_growable_url
16870  end interface
16871  interface
16872  function file_rename_mpi( file ) result(result)
16873  use dc_types, only: string
16874  character(*), intent(in):: file
16875  character(STRING):: result
16876  end function file_rename_mpi
16877  end interface
16878  continue
16879  file_work = file
16880  if ( present_and_true( flag_mpi_split ) ) &
16881  & file_work = file_rename_mpi( file_work )
16882  call lookup_growable_url(file = file_work, varname = varname, &
16883  & url = url, &
16884  & flag_time_exist = flag_time_exist, time_name = tname, err = err)
16885  call url_chop_iorange( &
16886  & fullname = url, iorange = iorange, remainder = remainder )
16887  call split( str = iorange, carray = carray, sep = gt_equal )
16888  timevar_name = carray(1)
16889  deallocate( carray )
16890  time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
16891  call historygetint5( file = file, &
16892  & varname = varname, array = array, &
16893  & range = time_range, quiet = quiet, &
16894  & flag_mpi_split = flag_mpi_split, &
16895  & returned_time = returned_time, &
16896  & flag_time_exist = flag_time_exist, &
16897  & err = err )
16898 end subroutine historygetint5timei
16899 subroutine historygetint6timei( &
16900  & file, varname, array, time, &
16901  & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
16902  use dc_string, only: tochar, split
16903  use dc_types, only: string, dp
16904  use dc_trace, only: dbgmessage
16905  use dc_url, only: url_chop_iorange, gt_equal
16906  use dc_present, only: present_and_true
16907  implicit none
16908  character(*), intent(in):: file, varname
16909  integer, intent(in):: time
16910  logical, intent(in), optional:: quiet
16911  integer, intent(out) :: array(:,:,:,:,:,:)
16912  logical, intent(in), optional:: flag_mpi_split
16913  real(DP), intent(out), optional:: returned_time
16914  logical, intent(out), optional:: flag_time_exist
16915  logical, intent(out), optional:: err
16916  character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
16917  character(STRING), pointer:: carray (:)
16918  character(STRING):: tname
16919  character(*), parameter :: subname = "HistoryGetInt6TimeI"
16920  interface
16921  subroutine historygetint6(&
16922  & file, varname, array, range, quiet, &
16923  & flag_mpi_split, returned_time, flag_time_exist, err)
16924  use dc_types, only: dp
16925  character(*), intent(in):: file
16926  character(*), intent(in):: varname
16927  character(*), intent(in), optional:: range
16928  logical, intent(in), optional:: quiet
16929  logical, intent(in), optional:: flag_mpi_split
16930  real(DP), intent(out), optional:: returned_time
16931  logical, intent(out), optional:: flag_time_exist
16932  logical, intent(out), optional:: err
16933  integer, intent(out) :: array(:,:,:,:,:,:)
16934  end subroutine historygetint6
16935  end interface
16936  interface
16937  subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
16938  character(*), intent(in):: file
16939  character(*), intent(in):: varname
16940  character(*), intent(out):: url
16941  character(*), intent(in), optional:: range
16942  logical, intent(out), optional:: flag_time_exist
16943  character(*), intent(out), optional:: time_name
16944  logical, intent(out), optional:: err
16945  end subroutine lookup_growable_url
16946  end interface
16947  interface
16948  function file_rename_mpi( file ) result(result)
16949  use dc_types, only: string
16950  character(*), intent(in):: file
16951  character(STRING):: result
16952  end function file_rename_mpi
16953  end interface
16954  continue
16955  file_work = file
16956  if ( present_and_true( flag_mpi_split ) ) &
16957  & file_work = file_rename_mpi( file_work )
16958  call lookup_growable_url(file = file_work, varname = varname, &
16959  & url = url, &
16960  & flag_time_exist = flag_time_exist, time_name = tname, err = err)
16961  call url_chop_iorange( &
16962  & fullname = url, iorange = iorange, remainder = remainder )
16963  call split( str = iorange, carray = carray, sep = gt_equal )
16964  timevar_name = carray(1)
16965  deallocate( carray )
16966  time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
16967  call historygetint6( file = file, &
16968  & varname = varname, array = array, &
16969  & range = time_range, quiet = quiet, &
16970  & flag_mpi_split = flag_mpi_split, &
16971  & returned_time = returned_time, &
16972  & flag_time_exist = flag_time_exist, &
16973  & err = err )
16974 end subroutine historygetint6timei
16975 subroutine historygetint7timei( &
16976  & file, varname, array, time, &
16977  & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
16978  use dc_string, only: tochar, split
16979  use dc_types, only: string, dp
16980  use dc_trace, only: dbgmessage
16981  use dc_url, only: url_chop_iorange, gt_equal
16982  use dc_present, only: present_and_true
16983  implicit none
16984  character(*), intent(in):: file, varname
16985  integer, intent(in):: time
16986  logical, intent(in), optional:: quiet
16987  integer, intent(out) :: array(:,:,:,:,:,:,:)
16988  logical, intent(in), optional:: flag_mpi_split
16989  real(DP), intent(out), optional:: returned_time
16990  logical, intent(out), optional:: flag_time_exist
16991  logical, intent(out), optional:: err
16992  character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
16993  character(STRING), pointer:: carray (:)
16994  character(STRING):: tname
16995  character(*), parameter :: subname = "HistoryGetInt7TimeI"
16996  interface
16997  subroutine historygetint7(&
16998  & file, varname, array, range, quiet, &
16999  & flag_mpi_split, returned_time, flag_time_exist, err)
17000  use dc_types, only: dp
17001  character(*), intent(in):: file
17002  character(*), intent(in):: varname
17003  character(*), intent(in), optional:: range
17004  logical, intent(in), optional:: quiet
17005  logical, intent(in), optional:: flag_mpi_split
17006  real(DP), intent(out), optional:: returned_time
17007  logical, intent(out), optional:: flag_time_exist
17008  logical, intent(out), optional:: err
17009  integer, intent(out) :: array(:,:,:,:,:,:,:)
17010  end subroutine historygetint7
17011  end interface
17012  interface
17013  subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
17014  character(*), intent(in):: file
17015  character(*), intent(in):: varname
17016  character(*), intent(out):: url
17017  character(*), intent(in), optional:: range
17018  logical, intent(out), optional:: flag_time_exist
17019  character(*), intent(out), optional:: time_name
17020  logical, intent(out), optional:: err
17021  end subroutine lookup_growable_url
17022  end interface
17023  interface
17024  function file_rename_mpi( file ) result(result)
17025  use dc_types, only: string
17026  character(*), intent(in):: file
17027  character(STRING):: result
17028  end function file_rename_mpi
17029  end interface
17030  continue
17031  file_work = file
17032  if ( present_and_true( flag_mpi_split ) ) &
17033  & file_work = file_rename_mpi( file_work )
17034  call lookup_growable_url(file = file_work, varname = varname, &
17035  & url = url, &
17036  & flag_time_exist = flag_time_exist, time_name = tname, err = err)
17037  call url_chop_iorange( &
17038  & fullname = url, iorange = iorange, remainder = remainder )
17039  call split( str = iorange, carray = carray, sep = gt_equal )
17040  timevar_name = carray(1)
17041  deallocate( carray )
17042  time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
17043  call historygetint7( file = file, &
17044  & varname = varname, array = array, &
17045  & range = time_range, quiet = quiet, &
17046  & flag_mpi_split = flag_mpi_split, &
17047  & returned_time = returned_time, &
17048  & flag_time_exist = flag_time_exist, &
17049  & err = err )
17050 end subroutine historygetint7timei
17051 subroutine historygetint0pointertimei( &
17052  & file, varname, array, time, &
17053  & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
17054  use dc_string, only: tochar, split
17055  use dc_types, only: string, dp
17056  use dc_trace, only: dbgmessage
17057  use dc_url, only: url_chop_iorange, gt_equal
17058  use dc_present, only: present_and_true
17059  implicit none
17060  character(*), intent(in):: file, varname
17061  integer, intent(in):: time
17062  logical, intent(in), optional:: quiet
17063  integer, pointer :: array
17064  logical, intent(in), optional:: flag_mpi_split
17065  real(DP), intent(out), optional:: returned_time
17066  logical, intent(out), optional:: flag_time_exist
17067  logical, intent(out), optional:: err
17068  character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
17069  character(STRING), pointer:: carray (:)
17070  character(STRING):: tname
17071  character(*), parameter :: subname = "HistoryGetInt0TimeI"
17072  interface
17073  subroutine historygetint0pointer(&
17074  & file, varname, array, range, quiet, &
17075  & flag_mpi_split, returned_time, flag_time_exist, err)
17076  use dc_types, only: dp
17077  character(*), intent(in):: file
17078  character(*), intent(in):: varname
17079  character(*), intent(in), optional:: range
17080  logical, intent(in), optional:: quiet
17081  logical, intent(in), optional:: flag_mpi_split
17082  real(DP), intent(out), optional:: returned_time
17083  logical, intent(out), optional:: flag_time_exist
17084  logical, intent(out), optional:: err
17085  integer, pointer :: array
17086  end subroutine historygetint0pointer
17087  end interface
17088  interface
17089  subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
17090  character(*), intent(in):: file
17091  character(*), intent(in):: varname
17092  character(*), intent(out):: url
17093  character(*), intent(in), optional:: range
17094  logical, intent(out), optional:: flag_time_exist
17095  character(*), intent(out), optional:: time_name
17096  logical, intent(out), optional:: err
17097  end subroutine lookup_growable_url
17098  end interface
17099  interface
17100  function file_rename_mpi( file ) result(result)
17101  use dc_types, only: string
17102  character(*), intent(in):: file
17103  character(STRING):: result
17104  end function file_rename_mpi
17105  end interface
17106  continue
17107  file_work = file
17108  if ( present_and_true( flag_mpi_split ) ) &
17109  & file_work = file_rename_mpi( file_work )
17110  call lookup_growable_url(file = file_work, varname = varname, &
17111  & url = url, &
17112  & flag_time_exist = flag_time_exist, time_name = tname, err = err)
17113  call url_chop_iorange( &
17114  & fullname = url, iorange = iorange, remainder = remainder )
17115  call split( str = iorange, carray = carray, sep = gt_equal )
17116  timevar_name = carray(1)
17117  deallocate( carray )
17118  time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
17119  call historygetint0pointer( file = file, &
17120  & varname = varname, array = array, &
17121  & range = time_range, quiet = quiet, &
17122  & flag_mpi_split = flag_mpi_split, &
17123  & returned_time = returned_time, &
17124  & flag_time_exist = flag_time_exist, &
17125  & err = err )
17126 end subroutine historygetint0pointertimei
17127 subroutine historygetint1pointertimei( &
17128  & file, varname, array, time, &
17129  & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
17130  use dc_string, only: tochar, split
17131  use dc_types, only: string, dp
17132  use dc_trace, only: dbgmessage
17133  use dc_url, only: url_chop_iorange, gt_equal
17134  use dc_present, only: present_and_true
17135  implicit none
17136  character(*), intent(in):: file, varname
17137  integer, intent(in):: time
17138  logical, intent(in), optional:: quiet
17139  integer, pointer :: array(:)
17140  logical, intent(in), optional:: flag_mpi_split
17141  real(DP), intent(out), optional:: returned_time
17142  logical, intent(out), optional:: flag_time_exist
17143  logical, intent(out), optional:: err
17144  character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
17145  character(STRING), pointer:: carray (:)
17146  character(STRING):: tname
17147  character(*), parameter :: subname = "HistoryGetInt1TimeI"
17148  interface
17149  subroutine historygetint1pointer(&
17150  & file, varname, array, range, quiet, &
17151  & flag_mpi_split, returned_time, flag_time_exist, err)
17152  use dc_types, only: dp
17153  character(*), intent(in):: file
17154  character(*), intent(in):: varname
17155  character(*), intent(in), optional:: range
17156  logical, intent(in), optional:: quiet
17157  logical, intent(in), optional:: flag_mpi_split
17158  real(DP), intent(out), optional:: returned_time
17159  logical, intent(out), optional:: flag_time_exist
17160  logical, intent(out), optional:: err
17161  integer, pointer :: array(:)
17162  end subroutine historygetint1pointer
17163  end interface
17164  interface
17165  subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
17166  character(*), intent(in):: file
17167  character(*), intent(in):: varname
17168  character(*), intent(out):: url
17169  character(*), intent(in), optional:: range
17170  logical, intent(out), optional:: flag_time_exist
17171  character(*), intent(out), optional:: time_name
17172  logical, intent(out), optional:: err
17173  end subroutine lookup_growable_url
17174  end interface
17175  interface
17176  function file_rename_mpi( file ) result(result)
17177  use dc_types, only: string
17178  character(*), intent(in):: file
17179  character(STRING):: result
17180  end function file_rename_mpi
17181  end interface
17182  continue
17183  file_work = file
17184  if ( present_and_true( flag_mpi_split ) ) &
17185  & file_work = file_rename_mpi( file_work )
17186  call lookup_growable_url(file = file_work, varname = varname, &
17187  & url = url, &
17188  & flag_time_exist = flag_time_exist, time_name = tname, err = err)
17189  call url_chop_iorange( &
17190  & fullname = url, iorange = iorange, remainder = remainder )
17191  call split( str = iorange, carray = carray, sep = gt_equal )
17192  timevar_name = carray(1)
17193  deallocate( carray )
17194  time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
17195  call historygetint1pointer( file = file, &
17196  & varname = varname, array = array, &
17197  & range = time_range, quiet = quiet, &
17198  & flag_mpi_split = flag_mpi_split, &
17199  & returned_time = returned_time, &
17200  & flag_time_exist = flag_time_exist, &
17201  & err = err )
17202 end subroutine historygetint1pointertimei
17203 subroutine historygetint2pointertimei( &
17204  & file, varname, array, time, &
17205  & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
17206  use dc_string, only: tochar, split
17207  use dc_types, only: string, dp
17208  use dc_trace, only: dbgmessage
17209  use dc_url, only: url_chop_iorange, gt_equal
17210  use dc_present, only: present_and_true
17211  implicit none
17212  character(*), intent(in):: file, varname
17213  integer, intent(in):: time
17214  logical, intent(in), optional:: quiet
17215  integer, pointer :: array(:,:)
17216  logical, intent(in), optional:: flag_mpi_split
17217  real(DP), intent(out), optional:: returned_time
17218  logical, intent(out), optional:: flag_time_exist
17219  logical, intent(out), optional:: err
17220  character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
17221  character(STRING), pointer:: carray (:)
17222  character(STRING):: tname
17223  character(*), parameter :: subname = "HistoryGetInt2TimeI"
17224  interface
17225  subroutine historygetint2pointer(&
17226  & file, varname, array, range, quiet, &
17227  & flag_mpi_split, returned_time, flag_time_exist, err)
17228  use dc_types, only: dp
17229  character(*), intent(in):: file
17230  character(*), intent(in):: varname
17231  character(*), intent(in), optional:: range
17232  logical, intent(in), optional:: quiet
17233  logical, intent(in), optional:: flag_mpi_split
17234  real(DP), intent(out), optional:: returned_time
17235  logical, intent(out), optional:: flag_time_exist
17236  logical, intent(out), optional:: err
17237  integer, pointer :: array(:,:)
17238  end subroutine historygetint2pointer
17239  end interface
17240  interface
17241  subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
17242  character(*), intent(in):: file
17243  character(*), intent(in):: varname
17244  character(*), intent(out):: url
17245  character(*), intent(in), optional:: range
17246  logical, intent(out), optional:: flag_time_exist
17247  character(*), intent(out), optional:: time_name
17248  logical, intent(out), optional:: err
17249  end subroutine lookup_growable_url
17250  end interface
17251  interface
17252  function file_rename_mpi( file ) result(result)
17253  use dc_types, only: string
17254  character(*), intent(in):: file
17255  character(STRING):: result
17256  end function file_rename_mpi
17257  end interface
17258  continue
17259  file_work = file
17260  if ( present_and_true( flag_mpi_split ) ) &
17261  & file_work = file_rename_mpi( file_work )
17262  call lookup_growable_url(file = file_work, varname = varname, &
17263  & url = url, &
17264  & flag_time_exist = flag_time_exist, time_name = tname, err = err)
17265  call url_chop_iorange( &
17266  & fullname = url, iorange = iorange, remainder = remainder )
17267  call split( str = iorange, carray = carray, sep = gt_equal )
17268  timevar_name = carray(1)
17269  deallocate( carray )
17270  time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
17271  call historygetint2pointer( file = file, &
17272  & varname = varname, array = array, &
17273  & range = time_range, quiet = quiet, &
17274  & flag_mpi_split = flag_mpi_split, &
17275  & returned_time = returned_time, &
17276  & flag_time_exist = flag_time_exist, &
17277  & err = err )
17278 end subroutine historygetint2pointertimei
17279 subroutine historygetint3pointertimei( &
17280  & file, varname, array, time, &
17281  & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
17282  use dc_string, only: tochar, split
17283  use dc_types, only: string, dp
17284  use dc_trace, only: dbgmessage
17285  use dc_url, only: url_chop_iorange, gt_equal
17286  use dc_present, only: present_and_true
17287  implicit none
17288  character(*), intent(in):: file, varname
17289  integer, intent(in):: time
17290  logical, intent(in), optional:: quiet
17291  integer, pointer :: array(:,:,:)
17292  logical, intent(in), optional:: flag_mpi_split
17293  real(DP), intent(out), optional:: returned_time
17294  logical, intent(out), optional:: flag_time_exist
17295  logical, intent(out), optional:: err
17296  character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
17297  character(STRING), pointer:: carray (:)
17298  character(STRING):: tname
17299  character(*), parameter :: subname = "HistoryGetInt3TimeI"
17300  interface
17301  subroutine historygetint3pointer(&
17302  & file, varname, array, range, quiet, &
17303  & flag_mpi_split, returned_time, flag_time_exist, err)
17304  use dc_types, only: dp
17305  character(*), intent(in):: file
17306  character(*), intent(in):: varname
17307  character(*), intent(in), optional:: range
17308  logical, intent(in), optional:: quiet
17309  logical, intent(in), optional:: flag_mpi_split
17310  real(DP), intent(out), optional:: returned_time
17311  logical, intent(out), optional:: flag_time_exist
17312  logical, intent(out), optional:: err
17313  integer, pointer :: array(:,:,:)
17314  end subroutine historygetint3pointer
17315  end interface
17316  interface
17317  subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
17318  character(*), intent(in):: file
17319  character(*), intent(in):: varname
17320  character(*), intent(out):: url
17321  character(*), intent(in), optional:: range
17322  logical, intent(out), optional:: flag_time_exist
17323  character(*), intent(out), optional:: time_name
17324  logical, intent(out), optional:: err
17325  end subroutine lookup_growable_url
17326  end interface
17327  interface
17328  function file_rename_mpi( file ) result(result)
17329  use dc_types, only: string
17330  character(*), intent(in):: file
17331  character(STRING):: result
17332  end function file_rename_mpi
17333  end interface
17334  continue
17335  file_work = file
17336  if ( present_and_true( flag_mpi_split ) ) &
17337  & file_work = file_rename_mpi( file_work )
17338  call lookup_growable_url(file = file_work, varname = varname, &
17339  & url = url, &
17340  & flag_time_exist = flag_time_exist, time_name = tname, err = err)
17341  call url_chop_iorange( &
17342  & fullname = url, iorange = iorange, remainder = remainder )
17343  call split( str = iorange, carray = carray, sep = gt_equal )
17344  timevar_name = carray(1)
17345  deallocate( carray )
17346  time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
17347  call historygetint3pointer( file = file, &
17348  & varname = varname, array = array, &
17349  & range = time_range, quiet = quiet, &
17350  & flag_mpi_split = flag_mpi_split, &
17351  & returned_time = returned_time, &
17352  & flag_time_exist = flag_time_exist, &
17353  & err = err )
17354 end subroutine historygetint3pointertimei
17355 subroutine historygetint4pointertimei( &
17356  & file, varname, array, time, &
17357  & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
17358  use dc_string, only: tochar, split
17359  use dc_types, only: string, dp
17360  use dc_trace, only: dbgmessage
17361  use dc_url, only: url_chop_iorange, gt_equal
17362  use dc_present, only: present_and_true
17363  implicit none
17364  character(*), intent(in):: file, varname
17365  integer, intent(in):: time
17366  logical, intent(in), optional:: quiet
17367  integer, pointer :: array(:,:,:,:)
17368  logical, intent(in), optional:: flag_mpi_split
17369  real(DP), intent(out), optional:: returned_time
17370  logical, intent(out), optional:: flag_time_exist
17371  logical, intent(out), optional:: err
17372  character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
17373  character(STRING), pointer:: carray (:)
17374  character(STRING):: tname
17375  character(*), parameter :: subname = "HistoryGetInt4TimeI"
17376  interface
17377  subroutine historygetint4pointer(&
17378  & file, varname, array, range, quiet, &
17379  & flag_mpi_split, returned_time, flag_time_exist, err)
17380  use dc_types, only: dp
17381  character(*), intent(in):: file
17382  character(*), intent(in):: varname
17383  character(*), intent(in), optional:: range
17384  logical, intent(in), optional:: quiet
17385  logical, intent(in), optional:: flag_mpi_split
17386  real(DP), intent(out), optional:: returned_time
17387  logical, intent(out), optional:: flag_time_exist
17388  logical, intent(out), optional:: err
17389  integer, pointer :: array(:,:,:,:)
17390  end subroutine historygetint4pointer
17391  end interface
17392  interface
17393  subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
17394  character(*), intent(in):: file
17395  character(*), intent(in):: varname
17396  character(*), intent(out):: url
17397  character(*), intent(in), optional:: range
17398  logical, intent(out), optional:: flag_time_exist
17399  character(*), intent(out), optional:: time_name
17400  logical, intent(out), optional:: err
17401  end subroutine lookup_growable_url
17402  end interface
17403  interface
17404  function file_rename_mpi( file ) result(result)
17405  use dc_types, only: string
17406  character(*), intent(in):: file
17407  character(STRING):: result
17408  end function file_rename_mpi
17409  end interface
17410  continue
17411  file_work = file
17412  if ( present_and_true( flag_mpi_split ) ) &
17413  & file_work = file_rename_mpi( file_work )
17414  call lookup_growable_url(file = file_work, varname = varname, &
17415  & url = url, &
17416  & flag_time_exist = flag_time_exist, time_name = tname, err = err)
17417  call url_chop_iorange( &
17418  & fullname = url, iorange = iorange, remainder = remainder )
17419  call split( str = iorange, carray = carray, sep = gt_equal )
17420  timevar_name = carray(1)
17421  deallocate( carray )
17422  time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
17423  call historygetint4pointer( file = file, &
17424  & varname = varname, array = array, &
17425  & range = time_range, quiet = quiet, &
17426  & flag_mpi_split = flag_mpi_split, &
17427  & returned_time = returned_time, &
17428  & flag_time_exist = flag_time_exist, &
17429  & err = err )
17430 end subroutine historygetint4pointertimei
17431 subroutine historygetint5pointertimei( &
17432  & file, varname, array, time, &
17433  & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
17434  use dc_string, only: tochar, split
17435  use dc_types, only: string, dp
17436  use dc_trace, only: dbgmessage
17437  use dc_url, only: url_chop_iorange, gt_equal
17438  use dc_present, only: present_and_true
17439  implicit none
17440  character(*), intent(in):: file, varname
17441  integer, intent(in):: time
17442  logical, intent(in), optional:: quiet
17443  integer, pointer :: array(:,:,:,:,:)
17444  logical, intent(in), optional:: flag_mpi_split
17445  real(DP), intent(out), optional:: returned_time
17446  logical, intent(out), optional:: flag_time_exist
17447  logical, intent(out), optional:: err
17448  character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
17449  character(STRING), pointer:: carray (:)
17450  character(STRING):: tname
17451  character(*), parameter :: subname = "HistoryGetInt5TimeI"
17452  interface
17453  subroutine historygetint5pointer(&
17454  & file, varname, array, range, quiet, &
17455  & flag_mpi_split, returned_time, flag_time_exist, err)
17456  use dc_types, only: dp
17457  character(*), intent(in):: file
17458  character(*), intent(in):: varname
17459  character(*), intent(in), optional:: range
17460  logical, intent(in), optional:: quiet
17461  logical, intent(in), optional:: flag_mpi_split
17462  real(DP), intent(out), optional:: returned_time
17463  logical, intent(out), optional:: flag_time_exist
17464  logical, intent(out), optional:: err
17465  integer, pointer :: array(:,:,:,:,:)
17466  end subroutine historygetint5pointer
17467  end interface
17468  interface
17469  subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
17470  character(*), intent(in):: file
17471  character(*), intent(in):: varname
17472  character(*), intent(out):: url
17473  character(*), intent(in), optional:: range
17474  logical, intent(out), optional:: flag_time_exist
17475  character(*), intent(out), optional:: time_name
17476  logical, intent(out), optional:: err
17477  end subroutine lookup_growable_url
17478  end interface
17479  interface
17480  function file_rename_mpi( file ) result(result)
17481  use dc_types, only: string
17482  character(*), intent(in):: file
17483  character(STRING):: result
17484  end function file_rename_mpi
17485  end interface
17486  continue
17487  file_work = file
17488  if ( present_and_true( flag_mpi_split ) ) &
17489  & file_work = file_rename_mpi( file_work )
17490  call lookup_growable_url(file = file_work, varname = varname, &
17491  & url = url, &
17492  & flag_time_exist = flag_time_exist, time_name = tname, err = err)
17493  call url_chop_iorange( &
17494  & fullname = url, iorange = iorange, remainder = remainder )
17495  call split( str = iorange, carray = carray, sep = gt_equal )
17496  timevar_name = carray(1)
17497  deallocate( carray )
17498  time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
17499  call historygetint5pointer( file = file, &
17500  & varname = varname, array = array, &
17501  & range = time_range, quiet = quiet, &
17502  & flag_mpi_split = flag_mpi_split, &
17503  & returned_time = returned_time, &
17504  & flag_time_exist = flag_time_exist, &
17505  & err = err )
17506 end subroutine historygetint5pointertimei
17507 subroutine historygetint6pointertimei( &
17508  & file, varname, array, time, &
17509  & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
17510  use dc_string, only: tochar, split
17511  use dc_types, only: string, dp
17512  use dc_trace, only: dbgmessage
17513  use dc_url, only: url_chop_iorange, gt_equal
17514  use dc_present, only: present_and_true
17515  implicit none
17516  character(*), intent(in):: file, varname
17517  integer, intent(in):: time
17518  logical, intent(in), optional:: quiet
17519  integer, pointer :: array(:,:,:,:,:,:)
17520  logical, intent(in), optional:: flag_mpi_split
17521  real(DP), intent(out), optional:: returned_time
17522  logical, intent(out), optional:: flag_time_exist
17523  logical, intent(out), optional:: err
17524  character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
17525  character(STRING), pointer:: carray (:)
17526  character(STRING):: tname
17527  character(*), parameter :: subname = "HistoryGetInt6TimeI"
17528  interface
17529  subroutine historygetint6pointer(&
17530  & file, varname, array, range, quiet, &
17531  & flag_mpi_split, returned_time, flag_time_exist, err)
17532  use dc_types, only: dp
17533  character(*), intent(in):: file
17534  character(*), intent(in):: varname
17535  character(*), intent(in), optional:: range
17536  logical, intent(in), optional:: quiet
17537  logical, intent(in), optional:: flag_mpi_split
17538  real(DP), intent(out), optional:: returned_time
17539  logical, intent(out), optional:: flag_time_exist
17540  logical, intent(out), optional:: err
17541  integer, pointer :: array(:,:,:,:,:,:)
17542  end subroutine historygetint6pointer
17543  end interface
17544  interface
17545  subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
17546  character(*), intent(in):: file
17547  character(*), intent(in):: varname
17548  character(*), intent(out):: url
17549  character(*), intent(in), optional:: range
17550  logical, intent(out), optional:: flag_time_exist
17551  character(*), intent(out), optional:: time_name
17552  logical, intent(out), optional:: err
17553  end subroutine lookup_growable_url
17554  end interface
17555  interface
17556  function file_rename_mpi( file ) result(result)
17557  use dc_types, only: string
17558  character(*), intent(in):: file
17559  character(STRING):: result
17560  end function file_rename_mpi
17561  end interface
17562  continue
17563  file_work = file
17564  if ( present_and_true( flag_mpi_split ) ) &
17565  & file_work = file_rename_mpi( file_work )
17566  call lookup_growable_url(file = file_work, varname = varname, &
17567  & url = url, &
17568  & flag_time_exist = flag_time_exist, time_name = tname, err = err)
17569  call url_chop_iorange( &
17570  & fullname = url, iorange = iorange, remainder = remainder )
17571  call split( str = iorange, carray = carray, sep = gt_equal )
17572  timevar_name = carray(1)
17573  deallocate( carray )
17574  time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
17575  call historygetint6pointer( file = file, &
17576  & varname = varname, array = array, &
17577  & range = time_range, quiet = quiet, &
17578  & flag_mpi_split = flag_mpi_split, &
17579  & returned_time = returned_time, &
17580  & flag_time_exist = flag_time_exist, &
17581  & err = err )
17582 end subroutine historygetint6pointertimei
17583 subroutine historygetint7pointertimei( &
17584  & file, varname, array, time, &
17585  & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
17586  use dc_string, only: tochar, split
17587  use dc_types, only: string, dp
17588  use dc_trace, only: dbgmessage
17589  use dc_url, only: url_chop_iorange, gt_equal
17590  use dc_present, only: present_and_true
17591  implicit none
17592  character(*), intent(in):: file, varname
17593  integer, intent(in):: time
17594  logical, intent(in), optional:: quiet
17595  integer, pointer :: array(:,:,:,:,:,:,:)
17596  logical, intent(in), optional:: flag_mpi_split
17597  real(DP), intent(out), optional:: returned_time
17598  logical, intent(out), optional:: flag_time_exist
17599  logical, intent(out), optional:: err
17600  character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
17601  character(STRING), pointer:: carray (:)
17602  character(STRING):: tname
17603  character(*), parameter :: subname = "HistoryGetInt7TimeI"
17604  interface
17605  subroutine historygetint7pointer(&
17606  & file, varname, array, range, quiet, &
17607  & flag_mpi_split, returned_time, flag_time_exist, err)
17608  use dc_types, only: dp
17609  character(*), intent(in):: file
17610  character(*), intent(in):: varname
17611  character(*), intent(in), optional:: range
17612  logical, intent(in), optional:: quiet
17613  logical, intent(in), optional:: flag_mpi_split
17614  real(DP), intent(out), optional:: returned_time
17615  logical, intent(out), optional:: flag_time_exist
17616  logical, intent(out), optional:: err
17617  integer, pointer :: array(:,:,:,:,:,:,:)
17618  end subroutine historygetint7pointer
17619  end interface
17620  interface
17621  subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
17622  character(*), intent(in):: file
17623  character(*), intent(in):: varname
17624  character(*), intent(out):: url
17625  character(*), intent(in), optional:: range
17626  logical, intent(out), optional:: flag_time_exist
17627  character(*), intent(out), optional:: time_name
17628  logical, intent(out), optional:: err
17629  end subroutine lookup_growable_url
17630  end interface
17631  interface
17632  function file_rename_mpi( file ) result(result)
17633  use dc_types, only: string
17634  character(*), intent(in):: file
17635  character(STRING):: result
17636  end function file_rename_mpi
17637  end interface
17638  continue
17639  file_work = file
17640  if ( present_and_true( flag_mpi_split ) ) &
17641  & file_work = file_rename_mpi( file_work )
17642  call lookup_growable_url(file = file_work, varname = varname, &
17643  & url = url, &
17644  & flag_time_exist = flag_time_exist, time_name = tname, err = err)
17645  call url_chop_iorange( &
17646  & fullname = url, iorange = iorange, remainder = remainder )
17647  call split( str = iorange, carray = carray, sep = gt_equal )
17648  timevar_name = carray(1)
17649  deallocate( carray )
17650  time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
17651  call historygetint7pointer( file = file, &
17652  & varname = varname, array = array, &
17653  & range = time_range, quiet = quiet, &
17654  & flag_mpi_split = flag_mpi_split, &
17655  & returned_time = returned_time, &
17656  & flag_time_exist = flag_time_exist, &
17657  & err = err )
17658 end subroutine historygetint7pointertimei
17659 subroutine lookup_growable_url( &
17660  & file, varname, & ! (in)
17661  & url, & ! (out)
17662  & range, & ! (in) optional
17663  & flag_time_exist, time_name, err) ! (out) optional
17664  !
17665  ! file の変数 varname が依存する次元の内, 時間の次元
17666  ! (growable == .TRUE. のもの, つまり無制限次元) の変数名,
17667  ! およびその最後の値を取得し, gtool 変数化
17668  ! ("file@varname,time=10.5" みたいな) して返す.
17669  !
17670  ! * もしも varname が次元変数である場合は「time=」を付けずに返す.
17671  ! * range を与えた場合, 以下のチェックを行った後, それを gtool4
17672  ! 変数の iorange 部分に付加する.
17673  ! * range に空文字が与えられた場合, range が与えられない場合と
17674  ! 同じ動作をする.
17675  ! * range 内に時間次元が設定されていない場合は, 自動的に
17676  ! 時間次元に関する iorange ("time=0.5") が指定される.
17677  ! * 数値のみの文字列 (例: "20", "10.354") が与えられる場合,
17678  ! エラーを生じる.
17679  !
17680  ! *flag_time_exist* が与えられる場合には, 得られるデータに
17681  ! 時刻次元が含まれる場合には .true. を, 含まれない場合は
17682  ! .false. を返す.
17683  ! *time_name* が与えられる場合には, 得られるデータに
17684  ! 時刻次元が含まれる場合にはその時刻次元変数名を,
17685  ! 含まれない場合には空文字を返す.
17686  !
17687  use gtdata_types, only: gt_variable
17688  use gtdata_generic, only: open, close, inquire
17690  use dc_string, only: tochar
17692  & nf90_einval, gt_enotvar, gt_ebadgt4commagraphy
17693  use dc_url, only: gt_circumflex, gt_comma, gt_equal
17695  use dc_regex, only: match
17696  use dc_types, only: dp, string
17697  use dc_trace, only: beginsub, endsub, dbgmessage
17698  character(*), intent(in) :: file ! ファイル名
17699  character(*), intent(in) :: varname ! 変数名
17700  character(*), intent(out) :: url ! gtool変数化した文字列
17701  character(*), intent(in), optional:: range ! 範囲限定や一点切り出し指定
17702  logical, intent(out), optional:: flag_time_exist ! 時刻次元の存在の有無
17703  character(*), intent(out), optional:: time_name ! 時刻次元の名称
17704  logical, intent(out), optional :: err ! エラーのフラグ
17705  !
17706  type(gt_variable) :: var
17707  type(gt_variable), allocatable :: dimvar(:)
17708  character(STRING) :: time_url, tname, time_iorange
17709  character(STRING) :: iorange, cause_c
17710  logical:: growable, nounlimited
17711  integer:: allcount, timecount, nd, i, stat
17712  integer:: regex_stat, regex_len
17713  character(*), parameter :: subname = "lookup_growable_url"
17714 continue
17715  call beginsub(subname, '<file=%c varname=%c range=%c>', &
17716  & c1=trim(file), c2=trim(varname), &
17717  & c3=trim(present_select('', 'no-range', range)))
17718  stat = dc_noerr
17719  cause_c = ""
17720  url = ""
17721  ! 引数の正当性をチェック
17722  if (.not. present_and_not_empty(file)) then
17723  stat = nf90_einval
17724  cause_c = '"file" is not specified'
17725  goto 999
17726  elseif (.not. present_and_not_empty(varname)) then
17727  stat = nf90_einval
17728  cause_c = '"varname" is not specified'
17729  goto 999
17730  end if
17731  ! 時刻次元の変数名, およびその最終時刻の
17732  ! 探査のために file@varname を open (まだデータを取得しない)
17733  call open(var, urlmerge(file, varname), err = err)
17734  if ( present_and_true(err) ) then
17735  stat = gt_enotvar
17736  goto 999
17737  end if
17738  ! 次元の数を取得
17739  call inquire(var=var, alldims=nd)
17740  call dbgmessage('@ alldims = %d', i=(/nd/))
17741  if (allocated(dimvar)) then
17742  deallocate(dimvar)
17743  end if
17744  allocate(dimvar(nd))
17745  !
17746  ! 変数が無制限変数を持たない場合, もしくは変数自体が
17747  ! 無制限次元変数である場合には, それに関する iorange を
17748  ! 付けないで返すよう, フラグを立てる.
17749  ! それ以外は .false. にする.
17750  nounlimited = .true.
17751  !
17752  ! 各次元毎に情報を取得し, growable == .TRUE. のもの (つまりは時間)
17753  ! の変数名 (tname) を取得する.
17754  call dbgmessage('[%c: growable-dim-search]', c1=trim(subname))
17755  tname = ''
17756  do, i = 1, nd
17757  call open(var = dimvar(i), & ! (out)
17758  & source_var = var, dimord = i, & ! (in)
17759  & count_compact = .true., & ! (in)
17760  & err = err) ! (out) optional
17761  ! まずは変数入り gtool4 変数を time_url に取得
17762  call inquire(var = dimvar(i), & ! (in)
17763  & growable = growable, & ! (out)
17764  & allcount = allcount, url = time_url) ! (out)
17765  call dbgmessage(' [dim=d>: growable=<%y>: url=<%c>]', &
17766  & i = (/i/), l = (/growable/), c1 = trim(time_url))
17767  ! 変数部分だけ分離
17768  call urlsplit( fullname = time_url, & ! (in)
17769  & var = tname) ! (out)
17770  ! 無制限次元で, かつ開こうとする変数自体が無制限次元でない場合
17771  !
17772  if ( growable .and. trim(tname) /= trim(varname) ) then
17773  ! 総数 = 最後の数を timecount に
17774  !
17775  timecount = allcount
17776  nounlimited = .false.
17777  endif
17778  call close(dimvar(i))
17779  ! 時刻次元が見つかった場合にはループを抜ける
17780  !
17781  if ( .not. nounlimited ) then
17782  exit
17783  ! 時刻次元ではない場合, tname を空に
17784  !
17785  else
17786  tname = ''
17787  end if
17788  end do
17789  ! 探査を終了したので閉じる
17790  call close(var)
17791  if (stat /= dc_noerr) then
17792  goto 999
17793  end if
17794  ! 時刻次元名を返す
17795  !
17796  if ( present(time_name) ) time_name = tname
17797  ! 時刻部分の iorange を作成しておく.
17798  ! 格子点情報で取得されているので, 頭に "^" を付加する.
17799  if (nounlimited) then
17800  time_iorange = ''
17801  if ( present(flag_time_exist) ) flag_time_exist = .false.
17802 !!$ if ( present(returned_time) ) returned_time = 0.
17803  else
17804  time_iorange = trim(tname) // gt_equal // &
17805  & gt_circumflex // adjustl(tochar(timecount))
17806  if ( present(flag_time_exist) ) flag_time_exist = .true.
17807 !!$ if ( present(returned_time) ) then
17808 !!$ returned_time =
17809 !!$ end if
17810  end if
17811  ! iorange を指定する.
17812  ! 時刻に関しては, range が存在しない場合には
17813  ! 自動取得した最後の時刻を付加する.
17814  ! range が存在する場合, "=" が含まれなければ, gtool4 のコンマ記法
17815  ! として不適切としてエラーを生じる.
17816  ! "=" が含まれる場合, iorange としてそのまま iorange になる.
17817  ! ただし, その iorange に時刻次元が含まれない場合,
17818  ! やはり先ほど自動取得した値が付加される.
17819  ! 当然, 時刻次元が存在しない場合には付加しない.
17820  if (.not. present_and_not_empty(range)) then
17821  iorange = time_iorange
17822  else
17823  ! range がコンマ記法になっているか, "=" があるかどうかで調べる
17824  call match(gt_equal, range, regex_len, regex_stat)
17825  ! コンマ記法になってない場合は無制限次元の値と判定
17826  if (regex_stat < 0) then
17827  cause_c = range
17828  stat = gt_ebadgt4commagraphy
17829  goto 999
17830 !!$ iorange = trim(tname) // GT_EQUAL // adjustl(range)
17831  else
17832  ! コンマ記法になっている場合, まずその中に無制限次元が
17833  ! 存在しているか調べ, 存在してない場合のみ time_iorange を
17834  ! 付加する.
17835  if (trim(urlsearchiorange(range, tname)) /= "") then
17836  iorange = range
17837  else
17838  if (trim(time_iorange) /= "") then
17839  iorange = range // gt_comma // time_iorange
17840  else
17841  iorange = range
17842  end if
17843  end if
17844  end if
17845  endif
17846  call dbgmessage('@ iorange=%c', c1=trim(iorange))
17847  ! file, varname, iorange を gtool変数化
17848  ! (「file@varname,time=10.5」のように)
17849  url = urlmerge(file, varname, '', iorange)
17850 999 continue
17851  call storeerror(stat, subname, err, cause_c)
17852  call endsub(subname, '<url=%c>', c1=trim(url))
17853 end subroutine lookup_growable_url
17854 subroutine actual_iorange_dump( url, & ! (in)
17855  & actual_url, returned_time, & ! (out) optional
17856  & time_name, & ! (in) optional
17857  & err ) ! (out) optional
17858  !
17859  ! 変数 URL *url* に対応するファイル, 変数からデータを取り出す際,
17860  ! 入出力範囲指定によって切り出される値の本当の位置を
17861  ! 標準出力に出力する. *actual_url* が与えられる場合には
17862  ! その引数に値を返し, 標準出力には出力しない.
17863  !
17864  ! HistoryGet, HistoryGetPointer が下層で呼び出している
17865  ! gtdata_generic#Get は, 入出力範囲が次元データに正確に一致しない
17866  ! 場合, 最も近い値を自動的に選択して切り出す. しかしその結果,
17867  ! 「本当はどこのデータを入力したか」がわからない場合があるため,
17868  ! このサブルーチンによって正確な位置をユーザに知らせる.
17869  !
17870  ! *time_name* と *returned_time* が与えられる場合には,
17871  ! *returned_time* に時刻の数値を返す.
17872  ! *returned_time* のみ与えられる場合には 0 を返す.
17873  !
17874  use dc_types, only: dp, string
17875  use dc_string, only: split, joinchar, tochar, roundnum
17877  use dc_url, only: gt_comma, gt_equal, gt_colon
17878  use dc_message, only: messagenotify
17879  use dc_trace, only: dbgmessage
17880  use dc_regex, only: match
17881  use gtdata_types, only: gt_variable
17882  use gtdata_generic, only: open, close, get
17883  use dc_error, only: storeerror, dc_noerr
17884  character(*), intent(in):: url ! 変数 URL
17885  character(*), intent(out), optional:: actual_url
17886  ! 正確な入出力範囲指定に修正
17887  ! された変数 URL
17888  real(DP), intent(out), optional:: returned_time ! データの時刻
17889  character(*), intent(in), optional:: time_name ! 時刻次元の名称
17890  logical, intent(out), optional:: err ! エラーのフラグ
17891  character(STRING), pointer :: iorange_each(:) =>null()
17892  character(STRING), pointer :: range_values(:) =>null()
17893  character(STRING), pointer :: new_iorange_each(:) =>null()
17894  character(STRING), pointer :: new_range_values(:) =>null()
17895  character(STRING):: new_url, new_iorange, url_tmp, dimname
17896  character(STRING):: file, varname, range, cause_c
17897  type(gt_variable):: var
17898  real :: iorange_value(1)
17899  integer :: i, j, regex_len, regex_stat, stat
17900  character(*), parameter :: subname = "actual_iorange_dump"
17901  continue
17902  new_iorange = ''
17903  cause_c = ''
17904  stat = dc_noerr
17905  if ( present(returned_time) ) then
17906  returned_time = 0.
17907  end if
17908  call urlsplit(url, file, varname, iorange=range)
17909  call split(range, iorange_each, gt_comma)
17910  allocate(new_iorange_each(size(iorange_each)))
17911  do i = 1, size(iorange_each)
17912  call match(gt_equal, iorange_each(i), regex_len, regex_stat)
17913  if (regex_stat < 0 .or. regex_len < 2) then
17914  new_iorange_each(i) = trim(iorange_each(i))
17915  else
17916  dimname = iorange_each(i)(:regex_len-1)
17917  call split(iorange_each(i)(regex_len+1:), range_values, gt_colon)
17918  allocate(new_range_values(size(range_values)))
17919  do j = 1, size(range_values)
17920  url_tmp = urlmerge(file, dimname, '', &
17921  & iorange=trim(dimname) // gt_equal // trim(range_values(j)))
17922  call open(var, url_tmp)
17923  call get(var, iorange_value, 1)
17924  call close(var)
17925  if ( present(time_name) .and. present(returned_time) ) then
17926  if ( trim(time_name) == trim(dimname) ) then
17927  returned_time = iorange_value(1)
17928  end if
17929  end if
17930  new_range_values(j) = roundnum( tochar(iorange_value) )
17931  end do
17932  new_iorange_each(i) = &
17933  & trim(dimname) // gt_equal // joinchar(new_range_values, gt_colon)
17934  deallocate(new_range_values)
17935  deallocate(range_values)
17936  end if
17937  end do
17938  new_iorange = joinchar(new_iorange_each, gt_comma)
17939  deallocate(new_iorange_each)
17940  deallocate(iorange_each)
17941  new_url = urlmerge(file, varname, '', new_iorange)
17942  if (present(actual_url)) then
17943  actual_url = new_url
17944  else
17945  call messagenotify('M', subname, 'Input %c', c1=trim(new_url))
17946  end if
17947 999 continue
17948  call storeerror(stat, subname, err, cause_c)
17949 end subroutine actual_iorange_dump
17950 function file_rename_mpi( file ) result(result)
17951  use dc_types, only: string, token
17952  use dc_string, only: cprintf, lchar
17953  implicit none
17954  character(*), intent(in):: file
17955  character(STRING):: result
17956  continue
17957  result = file
17958  return
17959 end function file_rename_mpi
subroutine historygetdouble4timer(file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
subroutine historygetdouble0pointertimer(file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
subroutine historygetdouble5timer(file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
subroutine historygetreal0pointer(file, varname, array, range, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
subroutine historygetreal2(file, varname, array, range, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
subroutine historygetint6timer(file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
subroutine historygetdouble1timed(file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
subroutine historygetint4timei(file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
subroutine historygetint7(file, varname, array, range, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
subroutine historygetdouble0(file, varname, array, range, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
Definition: historyget.f90:93
subroutine historygetreal6pointertimer(file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
subroutine historygetreal0pointertimei(file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
subroutine historygetint2pointertimei(file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
subroutine historygetdouble4pointertimed(file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
character, parameter, public gt_comma
Definition: dc_url.f90:85
subroutine historygetint4(file, varname, array, range, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
subroutine historygetdouble3pointer(file, varname, array, range, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
subroutine historygetdouble3pointertimed(file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
subroutine historygetdouble0pointertimed(file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
subroutine historygetdouble5(file, varname, array, range, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
subroutine historygetreal1pointertimer(file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
subroutine historygetint4pointertimei(file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
subroutine historygetdouble7timed(file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
subroutine historygetdouble6timer(file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
subroutine historygetdouble1timei(file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
subroutine historygetreal4pointertimer(file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
subroutine historygetdouble2pointertimed(file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
subroutine historygetint5pointertimed(file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
subroutine historygetreal5timer(file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
subroutine historygetdouble5timed(file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
subroutine historygetint7pointertimed(file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
subroutine historygetdouble5pointer(file, varname, array, range, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
subroutine historygetreal5pointertimei(file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
subroutine historygetint2pointertimer(file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
subroutine historygetreal2pointer(file, varname, array, range, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
subroutine historygetdouble3pointertimei(file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
subroutine historygetdouble4pointer(file, varname, array, range, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
subroutine historygetreal7timei(file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
subroutine historygetint2pointer(file, varname, array, range, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
subroutine historygetint1timed(file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
subroutine historygetdouble3timed(file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
subroutine historygetreal2timei(file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
subroutine historygetdouble7pointertimed(file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
integer, parameter, public gt_ebadgt4commagraphy
Definition: dc_error.f90:547
integer, parameter, public gt_enotvar
Definition: dc_error.f90:533
subroutine historygetreal1timei(file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
integer, parameter, public token
単語やキーワードを保持する文字型変数の種別型パラメタ
Definition: dc_types.f90:109
subroutine historygetreal6timei(file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
subroutine historygetint3timer(file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
subroutine historygetint4pointertimed(file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
subroutine historygetdouble6timed(file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
subroutine historygetreal7pointertimed(file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
subroutine historygetreal5(file, varname, array, range, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
character, parameter, public gt_equal
Definition: dc_url.f90:87
subroutine historygetreal7timed(file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
integer, parameter, public gt_erankmismatch
Definition: dc_error.f90:545
subroutine historygetreal4pointertimei(file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
subroutine historygetint1pointertimed(file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
logical function, public present_and_true(arg)
Definition: dc_present.f90:80
subroutine historygetreal3pointertimer(file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
subroutine historygetdouble1pointer(file, varname, array, range, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
subroutine historygetdouble7timei(file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
subroutine historygetint1(file, varname, array, range, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
subroutine historygetreal3timei(file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
subroutine historygetint1timei(file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
subroutine historygetdouble6pointer(file, varname, array, range, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
subroutine historygetreal4timed(file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
subroutine historygetreal2pointertimer(file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
subroutine historygetreal3pointertimed(file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
subroutine historygetint2timed(file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
subroutine actual_iorange_dump(url, actual_url, returned_time, time_name, err)
subroutine historygetreal7timer(file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
subroutine historygetdouble0pointertimei(file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
character, parameter, public gt_atmark
Definition: dc_url.f90:79
subroutine historygetreal6timed(file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
subroutine historygetint0pointertimer(file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
subroutine historygetint4timer(file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
subroutine historygetreal2pointertimed(file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
subroutine historygetdouble1pointertimer(file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
subroutine historygetdouble0timei(file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
subroutine historygetreal5pointer(file, varname, array, range, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
subroutine historygetint3timei(file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
subroutine historygetint1pointertimei(file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
subroutine historygetint1timer(file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
subroutine historygetdouble2timer(file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
subroutine, public storeerror(number, where, err, cause_c, cause_i)
Definition: dc_error.f90:830
subroutine historygetreal0(file, varname, array, range, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
integer, parameter, public dc_noerr
Definition: dc_error.f90:509
シンプルな正規表現関数 &#39;match&#39; を提供します.
Definition: dc_regex.f90:16
subroutine historygetdouble0timer(file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
subroutine historygetint5pointertimer(file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
subroutine historygetint6timed(file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
subroutine historygetreal2timer(file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
subroutine historygetdouble3pointertimer(file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
subroutine historygetint5timei(file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
subroutine historygetdouble5pointertimer(file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
subroutine historygetdouble6(file, varname, array, range, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
integer, parameter, public gt_enoturl
Definition: dc_error.f90:546
subroutine historygetdouble7timer(file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
subroutine historygetint6(file, varname, array, range, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
subroutine historygetreal5timed(file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
subroutine historygetreal6pointer(file, varname, array, range, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
subroutine historygetdouble0pointer(file, varname, array, range, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
subroutine historygetdouble3timei(file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
subroutine historygetreal2timed(file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
subroutine historygetreal1timer(file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
character(string) function, public joinchar(carray, expr)
Definition: dc_string.f90:861
subroutine historygetint3(file, varname, array, range, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
subroutine historygetint5pointer(file, varname, array, range, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
subroutine historygetreal4pointertimed(file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
subroutine historygetint7timer(file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
subroutine historygetreal0timer(file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
subroutine historygetdouble2pointertimei(file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
subroutine historygetdouble2pointertimer(file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
subroutine historygetdouble5timei(file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
subroutine historygetdouble4(file, varname, array, range, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
Definition: historyget.f90:798
subroutine historygetreal7pointer(file, varname, array, range, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
subroutine historygetint2timer(file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
subroutine historygetdouble1pointertimed(file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
subroutine historygetreal0timed(file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
subroutine historygetreal7pointertimer(file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
integer, parameter, public dp
倍精度実数型変数
Definition: dc_types.f90:83
subroutine historygetint3pointertimei(file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
subroutine, public match(pattern, text, start, length)
Definition: dc_regex.f90:267
subroutine, public url_chop_iorange(fullname, iorange, remainder)
Definition: dc_url.f90:201
subroutine historygetdouble5pointertimed(file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
subroutine historygetint3pointertimer(file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
subroutine, public dbgmessage(fmt, i, r, d, L, n, c1, c2, c3, ca)
Definition: dc_trace.f90:509
subroutine historygetint3timed(file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
subroutine historygetint5pointertimei(file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
logical function, public present_and_not_empty(arg)
Definition: dc_present.f90:276
subroutine historygetreal5timei(file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
subroutine, public beginsub(name, fmt, i, r, d, L, n, c1, c2, c3, ca, version)
Definition: dc_trace.f90:351
subroutine historygetreal4pointer(file, varname, array, range, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
subroutine historygetdouble7pointertimei(file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
subroutine historygetdouble7(file, varname, array, range, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
subroutine historygetreal3pointer(file, varname, array, range, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
subroutine historygetdouble5pointertimei(file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
subroutine historygetint0timed(file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
subroutine historygetint0pointertimed(file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
subroutine historygetint7timei(file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
subroutine historygetdouble6pointertimei(file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
subroutine historygetreal1pointertimed(file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
subroutine historygetreal6pointertimei(file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
subroutine historygetint7pointer(file, varname, array, range, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
character, parameter, public gt_circumflex
Definition: dc_url.f90:89
subroutine historygetint1pointertimer(file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
subroutine historygetint7pointertimer(file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
character, parameter, public gt_colon
Definition: dc_url.f90:83
subroutine historygetdouble3(file, varname, array, range, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
Definition: historyget.f90:601
subroutine historygetdouble6pointertimer(file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
subroutine historygetreal1pointer(file, varname, array, range, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
subroutine historygetdouble0timed(file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
subroutine historygetreal5pointertimed(file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
subroutine historygetint3pointer(file, varname, array, range, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
subroutine historygetreal6(file, varname, array, range, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
subroutine historygetint6pointertimei(file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
文字型変数の操作.
Definition: dc_string.f90:24
integer, parameter, public gt_eargsizemismatch
Definition: dc_error.f90:536
subroutine historygetdouble1(file, varname, array, range, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
Definition: historyget.f90:231
種別型パラメタを提供します。
Definition: dc_types.f90:49
character(string) function file_rename_mpi(file)
subroutine historygetreal3timed(file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
subroutine historygetdouble4pointertimer(file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
subroutine historygetint2pointertimed(file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
subroutine historygetreal3timer(file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
subroutine historygetdouble7pointertimer(file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
subroutine historygetreal4(file, varname, array, range, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
subroutine historygetint0pointertimei(file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
integer, parameter, public sp
単精度実数型変数
Definition: dc_types.f90:73
subroutine historygetdouble7pointer(file, varname, array, range, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
subroutine historygetreal3pointertimei(file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
subroutine historygetint1pointer(file, varname, array, range, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
subroutine historygetreal6pointertimed(file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
subroutine historygetreal0pointertimer(file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
subroutine historygetint5timed(file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
subroutine historygetint6pointertimed(file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
subroutine historygetreal4timer(file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
subroutine historygetreal2pointertimei(file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
subroutine historygetint2timei(file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
subroutine historygetint0timei(file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
subroutine historygetdouble4timei(file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
subroutine historygetint0timer(file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
subroutine historygetint0(file, varname, array, range, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
subroutine historygetint7timed(file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
subroutine historygetint4timed(file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
subroutine historygetint6pointer(file, varname, array, range, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
subroutine historygetreal0pointertimed(file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
subroutine historygetint6timei(file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
subroutine historygetdouble6timei(file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
subroutine historygetdouble1timer(file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
subroutine historygetreal5pointertimer(file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
subroutine historygetreal1timed(file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
subroutine historygetint3pointertimed(file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
subroutine historygetreal7pointertimei(file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
subroutine historygetdouble4pointertimei(file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
subroutine historygetreal0timei(file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
subroutine historygetreal6timer(file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
subroutine historygetreal4timei(file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
subroutine historygetdouble2(file, varname, array, range, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
Definition: historyget.f90:412
subroutine historygetint6pointertimer(file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
subroutine historygetdouble2timei(file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
subroutine historygetdouble2pointer(file, varname, array, range, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
subroutine historygetreal1pointertimei(file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
subroutine historygetint5(file, varname, array, range, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
subroutine, public endsub(name, fmt, i, r, d, L, n, c1, c2, c3, ca)
Definition: dc_trace.f90:446
subroutine historygetreal7(file, varname, array, range, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
subroutine historygetint7pointertimei(file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
subroutine historygetdouble3timer(file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
subroutine historygetreal3(file, varname, array, range, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
subroutine historygetint4pointer(file, varname, array, range, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
subroutine historygetdouble2timed(file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
subroutine historygetint4pointertimer(file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
subroutine historygetdouble6pointertimed(file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
subroutine historygetint2(file, varname, array, range, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
integer, parameter, public gt_enounlimitdim
Definition: dc_error.f90:541
subroutine historygetdouble4timed(file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
subroutine historygetdouble1pointertimei(file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
subroutine historygetint0pointer(file, varname, array, range, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
subroutine historygetint5timer(file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
subroutine historygetreal1(file, varname, array, range, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
integer, parameter, public string
文字列を保持する 文字型変数の種別型パラメタ
Definition: dc_types.f90:118