!--
! *** Caution!! ***
!
! This file is generated from "gtool_history_generic.rb2f90" by Ruby 2.3.3.
! Please do not edit this file directly.
!
! [JAPANESE]
!
! ※※※ 注意!!! ※※※
!
! このファイルは "gtool_history_generic.rb2f90" から Ruby 2.3.3
! によって自動生成されたファイルです.
! このファイルを直接編集しませんようお願い致します.
!
!
!++
!
!= gtool_history より提供される手続の引用仕様宣言
!= Interfaces of procedures provided from "gtool_history"
!
! Authors::   Yasuhiro MORIKAWA, Eizi TOYODA
! Version::   $Id: gtool_history_generic.rb2f90,v 1.9 2010-06-17 00:56:25 morikawa Exp $
! Tag Name::  $Name:  $
! Copyright:: Copyright (C) GFD Dennou Club, 2000-2009. All rights reserved.
! License::   See COPYRIGHT[link:../../../COPYRIGHT]
!

module gtool_history_generic
  !
  != gtool_history より提供される手続の引用仕様宣言
  != Interfaces of procedures provided from "gtool_history"
  !
  ! <b>Note that Japanese and English are described in parallel.</b>
  !
  ! モジュールの概要や使用方法については, gtool_history
  ! を参照ください.
  !
  ! See "gtool_history" for brief and usage of this module.
  !
  !== Procedures List
  !
  ! 【出力用】
  !
  ! HistoryCreate       :: gtool4 データ出力用初期設定
  ! HistoryAddVariable  :: 変数定義
  ! HistoryCopyVariable :: 変数定義 (別ファイルの変数コピー)
  ! HistoryPut          :: データ出力
  ! HistoryAddAttr      :: 変数に属性付加
  ! HistoryClose        :: 終了処理
  ! HistorySetTime      :: 時刻指定
  ! HistoryPutAxisMPI   :: 領域全体の座標データ指定 (MPI 使用時のみ有効)
  !
  ! 【入力用】
  !
  ! HistoryGet          :: データ入力 (固定長配列用)
  ! HistoryGetPointer   :: データ入力 (ポインタ配列用)
  ! HistoryGetAttr      :: 属性入力
  !
  ! 【その他】
  !
  ! HistoryInquire      :: gtool_history_types#GT_HISTORY 型変数への問い合わせ
  ! HistoryCopy         :: gtool_history_types#GT_HISTORY 型変数のコピー
  ! HistoryPutLine      :: gtool_history_types#GT_HISTORY 型変数の印字
  ! HistoryInitialized  :: gtool_history_types#GT_HISTORY 型変数の初期設定をチェック
  !
  ! * gtool_history_types#GT_HISTORY_AXIS 関連
  !
  !   HistoryAxisCreate     :: 作成 (初期設定)
  !   HistoryAxisCopy       :: コピー
  !   HistoryAxisAddAttr    :: 属性付加
  !   HistoryAxisInquire    :: 問い合わせ
  !   HistoryAxisClear      :: 終了処理
  !
  ! * gtool_history_types#GT_HISTORY_VARINFO 関連
  !
  !   HistoryVarinfoCreate      :: 作成 (初期設定)
  !   HistoryVarinfoCopy        :: コピー
  !   HistoryVarinfoAddAttr     :: 属性付加
  !   HistoryVarinfoInquire     :: 問い合わせ
  !   HistoryVarinfoClear       :: 終了処理
  !   HistoryVarinfoInitialized :: 初期設定チェック
  !

  use gtdata_types, only: GT_VARIABLE
  use dc_types, only: STRING, TOKEN, DP, STDERR
  use dc_trace, only: BeginSub, EndSub, DbgMessage
  use dc_date_types, only: DC_DIFFTIME, UNIT_SYMBOL_ERR
  implicit none

  private
  public:: HistoryInitialized
  public:: Create, Copy, Inquire, Put_Attr
  public:: HistoryCreate, HistoryClose, HistoryAxisClear, HistoryVarinfoClear
  public:: HistoryAxisCreate
  public:: HistoryVarinfoCreate
  public:: HistoryInquire, HistoryAxisInquire, HistoryVarinfoInquire
  public:: HistoryCopy, HistoryAxisCopy, HistoryVarinfoCopy, HistoryVarinfoInitialized
  public:: HistoryPutLine
  public:: HistoryAddVariable, HistoryCopyVariable
  public:: HistoryPut
  public:: HistoryAddAttr, HistoryAxisAddAttr, HistoryVarinfoAddAttr
  public:: HistorySetTime
  public:: HistoryGet, HistoryGetPointer
  public:: HistoryGetAttr
  public:: HistoryPutAxisMPI

  public:: initialized
                    ! 後方互換用.
                    ! For backward compatibility.

  interface initialized
    logical function HistoryInitialized1( history ) result(result)
      use gtool_history_types, only: GT_HISTORY
      type(GT_HISTORY), intent(in):: history
    end function HistoryInitialized1
  end interface

  interface HistoryInitialized
    logical function HistoryInitialized0( history ) result(result)
      use gtool_history_types, only: GT_HISTORY
      type(GT_HISTORY), intent(in):: history
    end function HistoryInitialized0
  end interface

  interface HistoryCreate
    subroutine HistoryCreate1( &
      & file, title, source, institution, &
      & dims, dimsizes, longnames, units, origin, interval, &
      & xtypes, history, origind, intervald, conventions, gt_version, overwrite, quiet, &
      & flag_mpi_gather, flag_mpi_split, err )  !:doc-priority 20:

      use gtool_history_types, only: GT_HISTORY
      use dc_types, only: DP
      character(*), intent(in):: file, title, source, institution, dims(:)
      integer, intent(in):: dimsizes (:)
      character(*), intent(in):: longnames (:)
      character(*), intent(in):: units(:)
      real, intent(in), optional:: origin, interval
      character(*), intent(in),  optional:: xtypes(:)
      type(GT_HISTORY), intent(out), optional, target:: history
      real(DP), intent(in), optional:: origind, intervald
      character(*), intent(in), optional:: conventions, gt_version
      logical, intent(in), optional:: overwrite, quiet, flag_mpi_gather, flag_mpi_split
      logical, intent(out), optional:: err
    end subroutine HistoryCreate1

    subroutine HistoryCreate2( &
      & file, title, source, institution, &
      & dims, dimsizes, longnames, units, origin, interval, &
      & xtypes, history, conventions, gt_version, overwrite, quiet, &
      & flag_mpi_gather, flag_mpi_split, err ) !:doc-priority 40:

      use gtool_history_types, only: GT_HISTORY
      use dc_date_types, only: DC_DIFFTIME
      character(*), intent(in):: file, title, source, institution, dims(:)
      integer, intent(in):: dimsizes (:)
      character(*), intent(in):: longnames (:)
      character(*), intent(in):: units(:)
      type(DC_DIFFTIME), intent(in):: origin
      type(DC_DIFFTIME), intent(in), optional:: interval
      character(*), intent(in),  optional:: xtypes(:)
      type(GT_HISTORY), intent(out), optional, target:: history
      character(*), intent(in), optional:: conventions, gt_version
      logical, intent(in), optional:: overwrite, quiet, flag_mpi_gather, flag_mpi_split
      logical, intent(out), optional:: err
    end subroutine HistoryCreate2

    subroutine HistoryCreate3(file, title, source, institution, &
      & axes, origin, interval, history, origind, intervald, conventions, gt_version, &
      & overwrite, quiet, flag_mpi_gather, flag_mpi_split, err ) !:doc-priority 30:
      use gtool_history_types, only: GT_HISTORY, GT_HISTORY_AXIS
      use dc_types, only: DP
      character(*), intent(in):: file, title, source, institution
      type(GT_HISTORY_AXIS), intent(in):: axes(:)
      real, intent(in), optional:: origin, interval
      type(GT_HISTORY), intent(out), optional, target:: history
      real(DP), intent(in), optional:: origind, intervald
      character(*), intent(in), optional:: conventions, gt_version
      logical, intent(in), optional:: overwrite, quiet, flag_mpi_gather, flag_mpi_split
      logical, intent(out), optional:: err
    end subroutine HistoryCreate3

  end interface

  interface HistoryAxisCreate
    subroutine HistoryAxisCreate1( axis, &
      & name, size, longname, units, xtype)
      use gtool_history_types, only: GT_HISTORY_AXIS
      type(GT_HISTORY_AXIS),intent(out) :: axis
      character(*) , intent(in):: name     ! 次元変数名
      integer, intent(in):: size     ! 次元長 (配列サイズ)
      character(*) , intent(in):: longname ! 次元変数の記述的名称
      character(*) , intent(in):: units    ! 次元変数の単位
      character(*) , intent(in):: xtype    ! 次元変数の型
    end subroutine HistoryAxisCreate1
  end interface

  interface HistoryVarinfoCreate
    subroutine HistoryVarinfoCreate1( varinfo, & ! (out)
      & name, dims, longname, units, xtype, &    ! (in)
      & time_average, average, err &            ! (in) optional
      & )
      use gtool_history_types, only: GT_HISTORY_VARINFO
      implicit none
      type(GT_HISTORY_VARINFO),intent(inout) :: varinfo
      character(*), intent(in):: name     ! 変数名
      character(*), intent(in):: dims(:)  ! 依存する次元
      character(*), intent(in):: longname ! 変数の記述的名称
      character(*), intent(in):: units    ! 変数の単位
      character(*), intent(in), optional:: xtype
                                           ! 変数の型
      logical, intent(in), optional:: time_average
                                           ! 時間平均
      logical, intent(in), optional:: average
                                           ! 時間平均 (後方互換用)
      logical, intent(out), optional:: err
    end subroutine HistoryVarinfoCreate1
  end interface

  interface Create
    subroutine HistoryAxisCreate2( axis, &
      & name, size, longname, units, xtype)
      use gtool_history_types, only: GT_HISTORY_AXIS
      type(GT_HISTORY_AXIS),intent(out) :: axis
      character(*) , intent(in):: name     ! 次元変数名
      integer, intent(in):: size     ! 次元長 (配列サイズ)
      character(*) , intent(in):: longname ! 次元変数の記述的名称
      character(*) , intent(in):: units    ! 次元変数の単位
      character(*) , intent(in):: xtype    ! 次元変数の型
    end subroutine HistoryAxisCreate2

    subroutine HistoryVarinfoCreate2( varinfo, & ! (out)
      & name, dims, longname, units, xtype, &    ! (in)
      & time_average, average, err &            ! (in) optional
      & )
      use gtool_history_types, only: GT_HISTORY_VARINFO
      implicit none
      type(GT_HISTORY_VARINFO),intent(inout) :: varinfo
      character(*), intent(in):: name     ! 変数名
      character(*), intent(in):: dims(:)  ! 依存する次元
      character(*), intent(in):: longname ! 変数の記述的名称
      character(*), intent(in):: units    ! 変数の単位
      character(*), intent(in), optional:: xtype
                                           ! 変数の型
      logical, intent(in), optional:: time_average
                                           ! 時間平均
      logical, intent(in), optional:: average
                                           ! 時間平均 (後方互換用)
      logical, intent(out), optional:: err
    end subroutine HistoryVarinfoCreate2
  end interface

  interface HistoryAddVariable
    recursive subroutine HistoryAddVariable1( &
      & varname, dims, longname, units, &
      & xtype, time_average, average, history, err )
      use gtool_history_types, only: GT_HISTORY
      character(len = *), intent(in):: varname, dims(:), longname, units
      character(len = *), intent(in), optional:: xtype
      logical, intent(in), optional:: time_average, average
      type(GT_HISTORY), intent(inout), optional, target:: history
      logical, intent(out), optional:: err
    end subroutine HistoryAddVariable1

    subroutine HistoryAddVariable2( &
      & varinfo, history, err )
      use gtool_history_types, only: GT_HISTORY, GT_HISTORY_VARINFO
      type(GT_HISTORY_VARINFO), intent(in)             :: varinfo
      type(GT_HISTORY),         intent(inout), optional:: history
      logical, intent(out), optional:: err
    end subroutine HistoryAddVariable2
  end interface

  interface HistoryCopy
    subroutine HistoryCopy1(hist_dest, file, hist_src, &
      & title, source, institution, &
      & origin, interval, &
      & conventions, gt_version)
      use gtool_history_types, only: GT_HISTORY
      type(GT_HISTORY), intent(out), target:: hist_dest
      character(*), intent(in):: file
      type(GT_HISTORY), intent(in), optional, target:: hist_src
      character(*), intent(in), optional:: title, source, institution
      real, intent(in), optional:: origin, interval
      character(*), intent(in), optional:: conventions, gt_version
    end subroutine HistoryCopy1
  end interface

  interface HistoryAxisCopy
    subroutine HistoryAxisCopy1(axis_dest, axis_src, err, &
      & name, length, longname, units, xtype)
      use gtool_history_types, only: GT_HISTORY_AXIS
      type(GT_HISTORY_AXIS),intent(out) :: axis_dest ! コピー先 GT_HISTORY_AXIS
      type(GT_HISTORY_AXIS),intent(in)  :: axis_src  ! コピー元 GT_HISTORY_AXIS
      logical, intent(out), optional :: err
      character(*) , intent(in), optional:: name     ! 次元変数名
      integer, intent(in), optional:: length         ! 次元長 (配列サイズ)
      character(*) , intent(in), optional:: longname ! 次元変数の記述的名称
      character(*) , intent(in), optional:: units    ! 次元変数の単位
      character(*) , intent(in), optional:: xtype    ! 次元変数の型
    end subroutine HistoryAxisCopy1
  end interface

  interface HistoryVarinfoCopy
    subroutine HistoryVarinfoCopy1(varinfo_dest, varinfo_src, err, &
      & name, dims, longname, units, xtype )
      use gtool_history_types, only: GT_HISTORY_VARINFO
      type(GT_HISTORY_VARINFO),intent(out):: varinfo_dest
      type(GT_HISTORY_VARINFO),intent(in):: varinfo_src
      logical, intent(out), optional:: err
      character(*) , intent(in), optional:: name     ! 次元変数名
      character(*) , intent(in), optional, target:: dims(:)  ! 依存する次元
      character(*) , intent(in), optional:: longname ! 次元変数の記述的名称
      character(*) , intent(in), optional:: units    ! 次元変数の単位
      character(*) , intent(in), optional:: xtype    ! 次元変数の型
    end subroutine HistoryVarinfoCopy1
  end interface

  interface Copy
    subroutine HistoryCopy2(hist_dest, file, hist_src, &
      & title, source, institution, &
      & origin, interval, &
      & conventions, gt_version)
      use gtool_history_types, only: GT_HISTORY
      type(GT_HISTORY), intent(out), target:: hist_dest
      character(*), intent(in):: file
      type(GT_HISTORY), intent(in), optional, target:: hist_src
      character(*), intent(in), optional:: title, source, institution
      real, intent(in), optional:: origin, interval
      character(*), intent(in), optional:: conventions, gt_version
    end subroutine HistoryCopy2

    subroutine HistoryAxisCopy2(axis_dest, axis_src, err, &
      & name, length, longname, units, xtype)
      use gtool_history_types, only: GT_HISTORY_AXIS
      type(GT_HISTORY_AXIS),intent(out) :: axis_dest ! コピー先 GT_HISTORY_AXIS
      type(GT_HISTORY_AXIS),intent(in)  :: axis_src  ! コピー元 GT_HISTORY_AXIS
      logical, intent(out), optional :: err
      character(*) , intent(in), optional:: name     ! 次元変数名
      integer, intent(in), optional:: length         ! 次元長 (配列サイズ)
      character(*) , intent(in), optional:: longname ! 次元変数の記述的名称
      character(*) , intent(in), optional:: units    ! 次元変数の単位
      character(*) , intent(in), optional:: xtype    ! 次元変数の型
    end subroutine HistoryAxisCopy2

    subroutine HistoryVarinfoCopy2(varinfo_dest, varinfo_src, err, &
      & name, dims, longname, units, xtype )
      use gtool_history_types, only: GT_HISTORY_VARINFO
      type(GT_HISTORY_VARINFO),intent(out):: varinfo_dest
      type(GT_HISTORY_VARINFO),intent(in):: varinfo_src
      logical, intent(out), optional:: err
      character(*) , intent(in), optional:: name     ! 次元変数名
      character(*) , intent(in), optional, target:: dims(:)  ! 依存する次元
      character(*) , intent(in), optional:: longname ! 次元変数の記述的名称
      character(*) , intent(in), optional:: units    ! 次元変数の単位
      character(*) , intent(in), optional:: xtype    ! 次元変数の型
    end subroutine HistoryVarinfoCopy2
  end interface

  interface HistoryCopyVariable
    subroutine HistoryCopyVariable1(file, varname, history, overwrite)
      use gtool_history_types, only: GT_HISTORY
      character(len = *), intent(in):: file, varname
      type(GT_HISTORY), intent(inout), optional, target:: history
      logical, intent(in), optional:: overwrite
    end subroutine HistoryCopyVariable1
  end interface

  interface HistoryInquire
    subroutine HistoryInquire1(history, err, file, title, source, &
      & dims, dimsizes, longnames, units, xtypes, &
      & institution, origin, interval, newest, oldest, &
      & conventions, gt_version, &
      & axes, varinfo )
      use gtool_history_types, only: GT_HISTORY, GT_HISTORY_AXIS, GT_HISTORY_VARINFO
      type(GT_HISTORY), intent(in):: history
      logical, intent(out), optional :: err
      character(*), intent(out), optional:: file, title, source, institution
      real,intent(out), optional:: origin, interval
      real,intent(out), optional:: newest ! 最新の時刻
      real,intent(out), optional:: oldest ! 最初の時刻
      character(*), intent(out), optional:: conventions, gt_version
      character(*), pointer, optional:: dims(:) ! (out)
      integer,pointer, optional:: dimsizes(:) ! (out)
      character(*), pointer, optional:: longnames(:) ! (out)
      character(*), pointer, optional:: units(:) ! (out)
      character(*), pointer, optional:: xtypes(:) ! (out)
      type(GT_HISTORY_AXIS), pointer, optional :: axes(:) ! (out)
      type(GT_HISTORY_VARINFO), pointer, optional :: varinfo(:) ! (out)
    end subroutine HistoryInquire1

    subroutine HistoryInquire2(history, err, file, title, source, &
      & dims, dimsizes, longnames, units, xtypes, &
      & institution, origin, interval, newest, oldest, &
      & conventions, gt_version, &
      & axes, varinfo )
      use gtool_history_types, only: GT_HISTORY, GT_HISTORY_AXIS, GT_HISTORY_VARINFO
      character(*), intent(in):: history
      logical, intent(out), optional :: err
      character(*), intent(out), optional:: file, title, source, institution
      real,intent(out), optional:: origin, interval, newest, oldest
      character(*), intent(out), optional:: conventions, gt_version
      character(*), pointer, optional:: dims(:) ! (out)
      integer,pointer, optional:: dimsizes(:) ! (out)
      character(*), pointer, optional:: longnames(:) ! (out)
      character(*), pointer, optional:: units(:) ! (out)
      character(*), pointer, optional:: xtypes(:) ! (out)
      type(GT_HISTORY_AXIS), pointer, optional :: axes(:) ! (out)
      type(GT_HISTORY_VARINFO), pointer, optional :: varinfo(:) ! (out)
    end subroutine HistoryInquire2

  end interface

  interface HistoryAxisInquire
    subroutine HistoryAxisInquire1( axis, &
      & name, size, longname, units, xtype)
      use gtool_history_types, only: GT_HISTORY_AXIS
      type(GT_HISTORY_AXIS),intent(in) :: axis
      character(*) , intent(out), optional:: name     ! 次元変数名
      integer, intent(out), optional:: size     ! 次元長 (配列サイズ)
      character(*) , intent(out), optional:: longname ! 次元変数の記述的名称
      character(*) , intent(out), optional:: units    ! 次元変数の単位
      character(*) , intent(out), optional:: xtype    ! 次元変数の型
    end subroutine HistoryAxisInquire1
  end interface

  interface HistoryVarinfoInquire
    subroutine HistoryVarinfoInquire1( varinfo, & ! (in)
      & name, dims, longname, units, xtype, &     ! (out) optional
      & time_average, average, err )              ! (out) optional
      use gtool_history_types, only: GT_HISTORY_VARINFO
      type(GT_HISTORY_VARINFO),intent(in) :: varinfo
      character(*), intent(out), optional:: name     ! 変数名
      character(*), pointer,     optional:: dims(:)  !(out) 依存する次元
      character(*), intent(out), optional:: longname ! 変数の記述的名称
      character(*), intent(out), optional:: units    ! 変数の単位
      character(*), intent(out), optional:: xtype    ! 変数の型
      logical, intent(out), optional:: time_average  ! 時間平均
      logical, intent(out), optional:: average       ! 時間平均 (後方互換用)
      logical, intent(out), optional:: err
    end subroutine HistoryVarinfoInquire1
  end interface

  interface Inquire
    subroutine HistoryInquire3(history, err, file, title, source, &
      & dims, dimsizes, longnames, units, xtypes, &
      & institution, origin, interval, newest, oldest, &
      & conventions, gt_version, &
      & axes, varinfo )
      use gtool_history_types, only: GT_HISTORY, GT_HISTORY_AXIS, GT_HISTORY_VARINFO
      type(GT_HISTORY), intent(in):: history
      logical, intent(out), optional :: err
      character(*), intent(out), optional:: file, title, source, institution
      real,intent(out), optional:: origin, interval
      real,intent(out), optional:: newest ! 最新の時刻
      real,intent(out), optional:: oldest ! 最初の時刻
      character(*), intent(out), optional:: conventions, gt_version
      character(*), pointer, optional:: dims(:) ! (out)
      integer,pointer, optional:: dimsizes(:) ! (out)
      character(*), pointer, optional:: longnames(:) ! (out)
      character(*), pointer, optional:: units(:) ! (out)
      character(*), pointer, optional:: xtypes(:) ! (out)
      type(GT_HISTORY_AXIS), pointer, optional :: axes(:) ! (out)
      type(GT_HISTORY_VARINFO), pointer, optional :: varinfo(:) ! (out)
    end subroutine HistoryInquire3

    subroutine HistoryInquire4(history, err, file, title, source, &
      & dims, dimsizes, longnames, units, xtypes, &
      & institution, origin, interval, newest, oldest, &
      & conventions, gt_version, &
      & axes, varinfo )
      use gtool_history_types, only: GT_HISTORY_AXIS, GT_HISTORY_VARINFO
      character(*), intent(in):: history
      logical, intent(out), optional :: err
      character(*), intent(out), optional:: file, title, source, institution
      real,intent(out), optional:: origin, interval, newest, oldest
      character(*), intent(out), optional:: conventions, gt_version
      character(*), pointer, optional:: dims(:) ! (out)
      integer,pointer, optional:: dimsizes(:) ! (out)
      character(*), pointer, optional:: longnames(:) ! (out)
      character(*), pointer, optional:: units(:) ! (out)
      character(*), pointer, optional:: xtypes(:) ! (out)
      type(GT_HISTORY_AXIS), pointer, optional :: axes(:) ! (out)
      type(GT_HISTORY_VARINFO), pointer, optional :: varinfo(:) ! (out)
    end subroutine HistoryInquire4

    subroutine HistoryAxisInquire2( axis, &
      & name, size, longname, units, xtype)
      use gtool_history_types, only: GT_HISTORY_AXIS
      type(GT_HISTORY_AXIS),intent(in) :: axis
      character(*) , intent(out), optional:: name     ! 次元変数名
      integer, intent(out), optional:: size     ! 次元長 (配列サイズ)
      character(*) , intent(out), optional:: longname ! 次元変数の記述的名称
      character(*) , intent(out), optional:: units    ! 次元変数の単位
      character(*) , intent(out), optional:: xtype    ! 次元変数の型
    end subroutine HistoryAxisInquire2

    subroutine HistoryVarinfoInquire2( varinfo, & ! (in)
      & name, dims, longname, units, xtype, &     ! (out) optional
      & time_average, average, err )              ! (out) optional
      use gtool_history_types, only: GT_HISTORY_VARINFO
      type(GT_HISTORY_VARINFO),intent(in) :: varinfo
      character(*), intent(out), optional:: name     ! 変数名
      character(*), pointer,     optional:: dims(:)  !(out) 依存する次元
      character(*), intent(out), optional:: longname ! 変数の記述的名称
      character(*), intent(out), optional:: units    ! 変数の単位
      character(*), intent(out), optional:: xtype    ! 変数の型
      logical, intent(out), optional:: time_average  ! 時間平均
      logical, intent(out), optional:: average       ! 時間平均 (後方互換用)
      logical, intent(out), optional:: err
    end subroutine HistoryVarinfoInquire2
  end interface

  interface
    subroutine HistoryAxisClear(axis)
      use gtool_history_types, only: GT_HISTORY_AXIS
      type(GT_HISTORY_AXIS),intent(inout) :: axis
    end subroutine HistoryAxisClear
  end interface

  interface HistoryVarinfoClear
    subroutine HistoryVarinfoClear0(varinfo, err)
      use gtool_history_types, only: GT_HISTORY_VARINFO
      type(GT_HISTORY_VARINFO),intent(inout) :: varinfo
      logical, intent(out), optional:: err
    end subroutine HistoryVarinfoClear0
  end interface

  interface HistoryVarinfoInitialized
    logical function HistoryVarinfoInitialized0( varinfo ) result(result)
      use gtool_history_types, only: GT_HISTORY_VARINFO
      type(GT_HISTORY_VARINFO),intent(in) :: varinfo
    end function HistoryVarinfoInitialized0
  end interface

  interface HistoryPutLine
    subroutine HistoryPutLine( history, unit, indent, err )
      use gtool_history_types, only: GT_HISTORY
      type(GT_HISTORY), intent(in), target, optional:: history
      integer, intent(in), optional:: unit
      character(*), intent(in), optional:: indent
      logical, intent(out), optional:: err
    end subroutine HistoryPutLine
  end interface

  interface
    subroutine HistorySetTime(time, history, difftime, timed)
      use gtool_history_types, only: GT_HISTORY
      use dc_date_types, only: DC_DIFFTIME
      use dc_types, only: DP
      real, intent(in), optional:: time
      type(GT_HISTORY), intent(inout), optional, target:: history
      type(DC_DIFFTIME), intent(in), optional:: difftime
      real(DP), intent(in), optional:: timed
    end subroutine HistorySetTime
  end interface

  interface
    subroutine HistoryClose( history, quiet, err )
      use gtool_history_types, only: GT_HISTORY
      type(GT_HISTORY), intent(inout), optional, target:: history
      logical, intent(in), optional:: quiet
      logical, intent(out), optional:: err
    end subroutine HistoryClose
  end interface

  interface HistoryPut


    subroutine HistoryPutDouble0( varname, value, &
      & history, range, time, quiet, &
      & difftime, timed, time_average_store, err )  !:doc-priority 30: 
      use gtool_history_types, only: GT_HISTORY
      use dc_date_types, only: DC_DIFFTIME
      use dc_types, only: DP
      character(*), intent(in):: varname
      real(DP), intent(in):: value
      type(GT_HISTORY), intent(inout), optional, target:: history
      character(*), intent(in), optional:: range
      real, intent(in), optional:: time
      logical, intent(in), optional:: quiet
      type(DC_DIFFTIME), intent(in), optional:: difftime
      real(DP), intent(in), optional:: timed
      logical, intent(in), optional:: time_average_store
      logical, intent(out), optional:: err
    end subroutine HistoryPutDouble0


    subroutine HistoryPutDouble1( varname, array, &
      & history, range, time, quiet, &
      & difftime, timed, time_average_store, err )  !:doc-priority 40: 
      use gtool_history_types, only: GT_HISTORY
      use dc_date_types, only: DC_DIFFTIME
      use dc_types, only: DP
      character(*), intent(in):: varname
      real(DP), intent(in):: array(:)
      type(GT_HISTORY), intent(inout), optional, target:: history
      character(*), intent(in), optional:: range
      real, intent(in), optional:: time
      logical, intent(in), optional:: quiet
      type(DC_DIFFTIME), intent(in), optional:: difftime
      real(DP), intent(in), optional:: timed
      logical, intent(in), optional:: time_average_store
      logical, intent(out), optional:: err
    end subroutine HistoryPutDouble1


    subroutine HistoryPutDouble2( varname, array, &
      & history, range, time, quiet, &
      & difftime, timed, time_average_store, err )  !:doc-priority 40: 
      use gtool_history_types, only: GT_HISTORY
      use dc_date_types, only: DC_DIFFTIME
      use dc_types, only: DP
      character(*), intent(in):: varname
      real(DP), intent(in):: array(:,:)
      type(GT_HISTORY), intent(inout), optional, target:: history
      character(*), intent(in), optional:: range
      real, intent(in), optional:: time
      logical, intent(in), optional:: quiet
      type(DC_DIFFTIME), intent(in), optional:: difftime
      real(DP), intent(in), optional:: timed
      logical, intent(in), optional:: time_average_store
      logical, intent(out), optional:: err
    end subroutine HistoryPutDouble2


    subroutine HistoryPutDouble3( varname, array, &
      & history, range, time, quiet, &
      & difftime, timed, time_average_store, err )  !:doc-priority 40: 
      use gtool_history_types, only: GT_HISTORY
      use dc_date_types, only: DC_DIFFTIME
      use dc_types, only: DP
      character(*), intent(in):: varname
      real(DP), intent(in):: array(:,:,:)
      type(GT_HISTORY), intent(inout), optional, target:: history
      character(*), intent(in), optional:: range
      real, intent(in), optional:: time
      logical, intent(in), optional:: quiet
      type(DC_DIFFTIME), intent(in), optional:: difftime
      real(DP), intent(in), optional:: timed
      logical, intent(in), optional:: time_average_store
      logical, intent(out), optional:: err
    end subroutine HistoryPutDouble3


    subroutine HistoryPutDouble4( varname, array, &
      & history, range, time, quiet, &
      & difftime, timed, time_average_store, err )  !:doc-priority 40: 
      use gtool_history_types, only: GT_HISTORY
      use dc_date_types, only: DC_DIFFTIME
      use dc_types, only: DP
      character(*), intent(in):: varname
      real(DP), intent(in):: array(:,:,:,:)
      type(GT_HISTORY), intent(inout), optional, target:: history
      character(*), intent(in), optional:: range
      real, intent(in), optional:: time
      logical, intent(in), optional:: quiet
      type(DC_DIFFTIME), intent(in), optional:: difftime
      real(DP), intent(in), optional:: timed
      logical, intent(in), optional:: time_average_store
      logical, intent(out), optional:: err
    end subroutine HistoryPutDouble4


    subroutine HistoryPutDouble5( varname, array, &
      & history, range, time, quiet, &
      & difftime, timed, time_average_store, err )  !:doc-priority 40: 
      use gtool_history_types, only: GT_HISTORY
      use dc_date_types, only: DC_DIFFTIME
      use dc_types, only: DP
      character(*), intent(in):: varname
      real(DP), intent(in):: array(:,:,:,:,:)
      type(GT_HISTORY), intent(inout), optional, target:: history
      character(*), intent(in), optional:: range
      real, intent(in), optional:: time
      logical, intent(in), optional:: quiet
      type(DC_DIFFTIME), intent(in), optional:: difftime
      real(DP), intent(in), optional:: timed
      logical, intent(in), optional:: time_average_store
      logical, intent(out), optional:: err
    end subroutine HistoryPutDouble5


    subroutine HistoryPutDouble6( varname, array, &
      & history, range, time, quiet, &
      & difftime, timed, time_average_store, err )  !:doc-priority 40: 
      use gtool_history_types, only: GT_HISTORY
      use dc_date_types, only: DC_DIFFTIME
      use dc_types, only: DP
      character(*), intent(in):: varname
      real(DP), intent(in):: array(:,:,:,:,:,:)
      type(GT_HISTORY), intent(inout), optional, target:: history
      character(*), intent(in), optional:: range
      real, intent(in), optional:: time
      logical, intent(in), optional:: quiet
      type(DC_DIFFTIME), intent(in), optional:: difftime
      real(DP), intent(in), optional:: timed
      logical, intent(in), optional:: time_average_store
      logical, intent(out), optional:: err
    end subroutine HistoryPutDouble6


    subroutine HistoryPutDouble7( varname, array, &
      & history, range, time, quiet, &
      & difftime, timed, time_average_store, err )  !:doc-priority 40: 
      use gtool_history_types, only: GT_HISTORY
      use dc_date_types, only: DC_DIFFTIME
      use dc_types, only: DP
      character(*), intent(in):: varname
      real(DP), intent(in):: array(:,:,:,:,:,:,:)
      type(GT_HISTORY), intent(inout), optional, target:: history
      character(*), intent(in), optional:: range
      real, intent(in), optional:: time
      logical, intent(in), optional:: quiet
      type(DC_DIFFTIME), intent(in), optional:: difftime
      real(DP), intent(in), optional:: timed
      logical, intent(in), optional:: time_average_store
      logical, intent(out), optional:: err
    end subroutine HistoryPutDouble7


    subroutine HistoryPutReal0( varname, value, &
      & history, range, time, quiet, &
      & difftime, timed, time_average_store, err )  !:doc-priority 30: 
      use gtool_history_types, only: GT_HISTORY
      use dc_date_types, only: DC_DIFFTIME
      use dc_types, only: DP
      character(*), intent(in):: varname
      real, intent(in):: value
      type(GT_HISTORY), intent(inout), optional, target:: history
      character(*), intent(in), optional:: range
      real, intent(in), optional:: time
      logical, intent(in), optional:: quiet
      type(DC_DIFFTIME), intent(in), optional:: difftime
      real(DP), intent(in), optional:: timed
      logical, intent(in), optional:: time_average_store
      logical, intent(out), optional:: err
    end subroutine HistoryPutReal0


    subroutine HistoryPutReal1( varname, array, &
      & history, range, time, quiet, &
      & difftime, timed, time_average_store, err )  !:doc-priority 40: 
      use gtool_history_types, only: GT_HISTORY
      use dc_date_types, only: DC_DIFFTIME
      use dc_types, only: DP
      character(*), intent(in):: varname
      real, intent(in):: array(:)
      type(GT_HISTORY), intent(inout), optional, target:: history
      character(*), intent(in), optional:: range
      real, intent(in), optional:: time
      logical, intent(in), optional:: quiet
      type(DC_DIFFTIME), intent(in), optional:: difftime
      real(DP), intent(in), optional:: timed
      logical, intent(in), optional:: time_average_store
      logical, intent(out), optional:: err
    end subroutine HistoryPutReal1


    subroutine HistoryPutReal2( varname, array, &
      & history, range, time, quiet, &
      & difftime, timed, time_average_store, err )  !:doc-priority 40: 
      use gtool_history_types, only: GT_HISTORY
      use dc_date_types, only: DC_DIFFTIME
      use dc_types, only: DP
      character(*), intent(in):: varname
      real, intent(in):: array(:,:)
      type(GT_HISTORY), intent(inout), optional, target:: history
      character(*), intent(in), optional:: range
      real, intent(in), optional:: time
      logical, intent(in), optional:: quiet
      type(DC_DIFFTIME), intent(in), optional:: difftime
      real(DP), intent(in), optional:: timed
      logical, intent(in), optional:: time_average_store
      logical, intent(out), optional:: err
    end subroutine HistoryPutReal2


    subroutine HistoryPutReal3( varname, array, &
      & history, range, time, quiet, &
      & difftime, timed, time_average_store, err )  !:doc-priority 40: 
      use gtool_history_types, only: GT_HISTORY
      use dc_date_types, only: DC_DIFFTIME
      use dc_types, only: DP
      character(*), intent(in):: varname
      real, intent(in):: array(:,:,:)
      type(GT_HISTORY), intent(inout), optional, target:: history
      character(*), intent(in), optional:: range
      real, intent(in), optional:: time
      logical, intent(in), optional:: quiet
      type(DC_DIFFTIME), intent(in), optional:: difftime
      real(DP), intent(in), optional:: timed
      logical, intent(in), optional:: time_average_store
      logical, intent(out), optional:: err
    end subroutine HistoryPutReal3


    subroutine HistoryPutReal4( varname, array, &
      & history, range, time, quiet, &
      & difftime, timed, time_average_store, err )  !:doc-priority 40: 
      use gtool_history_types, only: GT_HISTORY
      use dc_date_types, only: DC_DIFFTIME
      use dc_types, only: DP
      character(*), intent(in):: varname
      real, intent(in):: array(:,:,:,:)
      type(GT_HISTORY), intent(inout), optional, target:: history
      character(*), intent(in), optional:: range
      real, intent(in), optional:: time
      logical, intent(in), optional:: quiet
      type(DC_DIFFTIME), intent(in), optional:: difftime
      real(DP), intent(in), optional:: timed
      logical, intent(in), optional:: time_average_store
      logical, intent(out), optional:: err
    end subroutine HistoryPutReal4


    subroutine HistoryPutReal5( varname, array, &
      & history, range, time, quiet, &
      & difftime, timed, time_average_store, err )  !:doc-priority 40: 
      use gtool_history_types, only: GT_HISTORY
      use dc_date_types, only: DC_DIFFTIME
      use dc_types, only: DP
      character(*), intent(in):: varname
      real, intent(in):: array(:,:,:,:,:)
      type(GT_HISTORY), intent(inout), optional, target:: history
      character(*), intent(in), optional:: range
      real, intent(in), optional:: time
      logical, intent(in), optional:: quiet
      type(DC_DIFFTIME), intent(in), optional:: difftime
      real(DP), intent(in), optional:: timed
      logical, intent(in), optional:: time_average_store
      logical, intent(out), optional:: err
    end subroutine HistoryPutReal5


    subroutine HistoryPutReal6( varname, array, &
      & history, range, time, quiet, &
      & difftime, timed, time_average_store, err )  !:doc-priority 40: 
      use gtool_history_types, only: GT_HISTORY
      use dc_date_types, only: DC_DIFFTIME
      use dc_types, only: DP
      character(*), intent(in):: varname
      real, intent(in):: array(:,:,:,:,:,:)
      type(GT_HISTORY), intent(inout), optional, target:: history
      character(*), intent(in), optional:: range
      real, intent(in), optional:: time
      logical, intent(in), optional:: quiet
      type(DC_DIFFTIME), intent(in), optional:: difftime
      real(DP), intent(in), optional:: timed
      logical, intent(in), optional:: time_average_store
      logical, intent(out), optional:: err
    end subroutine HistoryPutReal6


    subroutine HistoryPutReal7( varname, array, &
      & history, range, time, quiet, &
      & difftime, timed, time_average_store, err )  !:doc-priority 40: 
      use gtool_history_types, only: GT_HISTORY
      use dc_date_types, only: DC_DIFFTIME
      use dc_types, only: DP
      character(*), intent(in):: varname
      real, intent(in):: array(:,:,:,:,:,:,:)
      type(GT_HISTORY), intent(inout), optional, target:: history
      character(*), intent(in), optional:: range
      real, intent(in), optional:: time
      logical, intent(in), optional:: quiet
      type(DC_DIFFTIME), intent(in), optional:: difftime
      real(DP), intent(in), optional:: timed
      logical, intent(in), optional:: time_average_store
      logical, intent(out), optional:: err
    end subroutine HistoryPutReal7


    subroutine HistoryPutInt0( varname, value, &
      & history, range, time, quiet, &
      & difftime, timed, time_average_store, err )  !:doc-priority 30: 
      use gtool_history_types, only: GT_HISTORY
      use dc_date_types, only: DC_DIFFTIME
      use dc_types, only: DP
      character(*), intent(in):: varname
      integer, intent(in):: value
      type(GT_HISTORY), intent(inout), optional, target:: history
      character(*), intent(in), optional:: range
      real, intent(in), optional:: time
      logical, intent(in), optional:: quiet
      type(DC_DIFFTIME), intent(in), optional:: difftime
      real(DP), intent(in), optional:: timed
      logical, intent(in), optional:: time_average_store
      logical, intent(out), optional:: err
    end subroutine HistoryPutInt0


    subroutine HistoryPutInt1( varname, array, &
      & history, range, time, quiet, &
      & difftime, timed, time_average_store, err )  !:doc-priority 40: 
      use gtool_history_types, only: GT_HISTORY
      use dc_date_types, only: DC_DIFFTIME
      use dc_types, only: DP
      character(*), intent(in):: varname
      integer, intent(in):: array(:)
      type(GT_HISTORY), intent(inout), optional, target:: history
      character(*), intent(in), optional:: range
      real, intent(in), optional:: time
      logical, intent(in), optional:: quiet
      type(DC_DIFFTIME), intent(in), optional:: difftime
      real(DP), intent(in), optional:: timed
      logical, intent(in), optional:: time_average_store
      logical, intent(out), optional:: err
    end subroutine HistoryPutInt1


    subroutine HistoryPutInt2( varname, array, &
      & history, range, time, quiet, &
      & difftime, timed, time_average_store, err )  !:doc-priority 40: 
      use gtool_history_types, only: GT_HISTORY
      use dc_date_types, only: DC_DIFFTIME
      use dc_types, only: DP
      character(*), intent(in):: varname
      integer, intent(in):: array(:,:)
      type(GT_HISTORY), intent(inout), optional, target:: history
      character(*), intent(in), optional:: range
      real, intent(in), optional:: time
      logical, intent(in), optional:: quiet
      type(DC_DIFFTIME), intent(in), optional:: difftime
      real(DP), intent(in), optional:: timed
      logical, intent(in), optional:: time_average_store
      logical, intent(out), optional:: err
    end subroutine HistoryPutInt2


    subroutine HistoryPutInt3( varname, array, &
      & history, range, time, quiet, &
      & difftime, timed, time_average_store, err )  !:doc-priority 40: 
      use gtool_history_types, only: GT_HISTORY
      use dc_date_types, only: DC_DIFFTIME
      use dc_types, only: DP
      character(*), intent(in):: varname
      integer, intent(in):: array(:,:,:)
      type(GT_HISTORY), intent(inout), optional, target:: history
      character(*), intent(in), optional:: range
      real, intent(in), optional:: time
      logical, intent(in), optional:: quiet
      type(DC_DIFFTIME), intent(in), optional:: difftime
      real(DP), intent(in), optional:: timed
      logical, intent(in), optional:: time_average_store
      logical, intent(out), optional:: err
    end subroutine HistoryPutInt3


    subroutine HistoryPutInt4( varname, array, &
      & history, range, time, quiet, &
      & difftime, timed, time_average_store, err )  !:doc-priority 40: 
      use gtool_history_types, only: GT_HISTORY
      use dc_date_types, only: DC_DIFFTIME
      use dc_types, only: DP
      character(*), intent(in):: varname
      integer, intent(in):: array(:,:,:,:)
      type(GT_HISTORY), intent(inout), optional, target:: history
      character(*), intent(in), optional:: range
      real, intent(in), optional:: time
      logical, intent(in), optional:: quiet
      type(DC_DIFFTIME), intent(in), optional:: difftime
      real(DP), intent(in), optional:: timed
      logical, intent(in), optional:: time_average_store
      logical, intent(out), optional:: err
    end subroutine HistoryPutInt4


    subroutine HistoryPutInt5( varname, array, &
      & history, range, time, quiet, &
      & difftime, timed, time_average_store, err )  !:doc-priority 40: 
      use gtool_history_types, only: GT_HISTORY
      use dc_date_types, only: DC_DIFFTIME
      use dc_types, only: DP
      character(*), intent(in):: varname
      integer, intent(in):: array(:,:,:,:,:)
      type(GT_HISTORY), intent(inout), optional, target:: history
      character(*), intent(in), optional:: range
      real, intent(in), optional:: time
      logical, intent(in), optional:: quiet
      type(DC_DIFFTIME), intent(in), optional:: difftime
      real(DP), intent(in), optional:: timed
      logical, intent(in), optional:: time_average_store
      logical, intent(out), optional:: err
    end subroutine HistoryPutInt5


    subroutine HistoryPutInt6( varname, array, &
      & history, range, time, quiet, &
      & difftime, timed, time_average_store, err )  !:doc-priority 40: 
      use gtool_history_types, only: GT_HISTORY
      use dc_date_types, only: DC_DIFFTIME
      use dc_types, only: DP
      character(*), intent(in):: varname
      integer, intent(in):: array(:,:,:,:,:,:)
      type(GT_HISTORY), intent(inout), optional, target:: history
      character(*), intent(in), optional:: range
      real, intent(in), optional:: time
      logical, intent(in), optional:: quiet
      type(DC_DIFFTIME), intent(in), optional:: difftime
      real(DP), intent(in), optional:: timed
      logical, intent(in), optional:: time_average_store
      logical, intent(out), optional:: err
    end subroutine HistoryPutInt6


    subroutine HistoryPutInt7( varname, array, &
      & history, range, time, quiet, &
      & difftime, timed, time_average_store, err )  !:doc-priority 40: 
      use gtool_history_types, only: GT_HISTORY
      use dc_date_types, only: DC_DIFFTIME
      use dc_types, only: DP
      character(*), intent(in):: varname
      integer, intent(in):: array(:,:,:,:,:,:,:)
      type(GT_HISTORY), intent(inout), optional, target:: history
      character(*), intent(in), optional:: range
      real, intent(in), optional:: time
      logical, intent(in), optional:: quiet
      type(DC_DIFFTIME), intent(in), optional:: difftime
      real(DP), intent(in), optional:: timed
      logical, intent(in), optional:: time_average_store
      logical, intent(out), optional:: err
    end subroutine HistoryPutInt7


    subroutine HistoryPutChar0( varname, value, &
      & history, range, time, quiet, &
      & difftime, timed, time_average_store, err ) !:doc-priority 35:
      use gtool_history_types, only: GT_HISTORY
      use dc_date_types, only: DC_DIFFTIME
      use dc_types, only: DP
      character(*), intent(in):: varname
      character(*), intent(in):: value
      type(GT_HISTORY), intent(inout), optional, target:: history
      character(*), intent(in), optional:: range
      real, intent(in), optional:: time
      logical, intent(in), optional:: quiet
      type(DC_DIFFTIME), intent(in), optional:: difftime
      real(DP), intent(in), optional:: timed
      logical, intent(in), optional:: time_average_store
      logical, intent(out), optional:: err
    end subroutine HistoryPutChar0

  end interface

  interface HistoryPutAxisMPI


    subroutine HistoryPutAxisMPIReal( varname, array, &
      & history, err )
      use gtool_history_types, only: GT_HISTORY
      use dc_types, only: DP
      character(*), intent(in):: varname
      real, intent(in):: array(:)
      type(GT_HISTORY), intent(inout), optional, target:: history
      logical, intent(out), optional:: err
    end subroutine HistoryPutAxisMPIReal


    subroutine HistoryPutAxisMPIDouble( varname, array, &
      & history, err )
      use gtool_history_types, only: GT_HISTORY
      use dc_types, only: DP
      character(*), intent(in):: varname
      real(DP), intent(in):: array(:)
      type(GT_HISTORY), intent(inout), optional, target:: history
      logical, intent(out), optional:: err
    end subroutine HistoryPutAxisMPIDouble


    subroutine HistoryPutAxisMPIInt( varname, array, &
      & history, err )
      use gtool_history_types, only: GT_HISTORY
      use dc_types, only: DP
      character(*), intent(in):: varname
      integer, intent(in):: array(:)
      type(GT_HISTORY), intent(inout), optional, target:: history
      logical, intent(out), optional:: err
    end subroutine HistoryPutAxisMPIInt


  end interface

  interface HistoryAddAttr


  subroutine HistoryAddAttrChar0( &
    & varname, attrname, value, history, err)
    use gtool_history_types, only: GT_HISTORY
    use dc_types, only: DP
    character(*), intent(in):: varname
    character(*), intent(in):: attrname
    character(*), intent(in):: value
    type(GT_HISTORY), intent(inout), target, optional:: history
    logical, intent(out), optional:: err
  end subroutine HistoryAddAttrChar0


  subroutine HistoryAddAttrLogical0( &
    & varname, attrname, value, history, err)
    use gtool_history_types, only: GT_HISTORY
    use dc_types, only: DP
    character(*), intent(in):: varname
    character(*), intent(in):: attrname
    logical, intent(in):: value
    type(GT_HISTORY), intent(inout), target, optional:: history
    logical, intent(out), optional:: err
  end subroutine HistoryAddAttrLogical0


  subroutine HistoryAddAttrInt0( &
    & varname, attrname, value, history, err)
    use gtool_history_types, only: GT_HISTORY
    use dc_types, only: DP
    character(*), intent(in):: varname
    character(*), intent(in):: attrname
    integer, intent(in):: value
    type(GT_HISTORY), intent(inout), target, optional:: history
    logical, intent(out), optional:: err
  end subroutine HistoryAddAttrInt0


  subroutine HistoryAddAttrInt1( &
    & varname, attrname, value, history, err)
    use gtool_history_types, only: GT_HISTORY
    use dc_types, only: DP
    character(*), intent(in):: varname
    character(*), intent(in):: attrname
    integer, intent(in):: value(:)
    type(GT_HISTORY), intent(inout), target, optional:: history
    logical, intent(out), optional:: err
  end subroutine HistoryAddAttrInt1


  subroutine HistoryAddAttrReal0( &
    & varname, attrname, value, history, err)
    use gtool_history_types, only: GT_HISTORY
    use dc_types, only: DP
    character(*), intent(in):: varname
    character(*), intent(in):: attrname
    real, intent(in):: value
    type(GT_HISTORY), intent(inout), target, optional:: history
    logical, intent(out), optional:: err
  end subroutine HistoryAddAttrReal0


  subroutine HistoryAddAttrReal1( &
    & varname, attrname, value, history, err)
    use gtool_history_types, only: GT_HISTORY
    use dc_types, only: DP
    character(*), intent(in):: varname
    character(*), intent(in):: attrname
    real, intent(in):: value(:)
    type(GT_HISTORY), intent(inout), target, optional:: history
    logical, intent(out), optional:: err
  end subroutine HistoryAddAttrReal1


  subroutine HistoryAddAttrDouble0( &
    & varname, attrname, value, history, err)
    use gtool_history_types, only: GT_HISTORY
    use dc_types, only: DP
    character(*), intent(in):: varname
    character(*), intent(in):: attrname
    real(DP), intent(in):: value
    type(GT_HISTORY), intent(inout), target, optional:: history
    logical, intent(out), optional:: err
  end subroutine HistoryAddAttrDouble0


  subroutine HistoryAddAttrDouble1( &
    & varname, attrname, value, history, err)
    use gtool_history_types, only: GT_HISTORY
    use dc_types, only: DP
    character(*), intent(in):: varname
    character(*), intent(in):: attrname
    real(DP), intent(in):: value(:)
    type(GT_HISTORY), intent(inout), target, optional:: history
    logical, intent(out), optional:: err
  end subroutine HistoryAddAttrDouble1


  end interface

  interface HistoryAxisAddAttr


    subroutine HistoryAxisAddAttrChar0( &
      & axis, attrname, value)
      use gtool_history_types, only: GT_HISTORY_AXIS
      use dc_types, only: DP
      type(GT_HISTORY_AXIS),intent(inout) :: axis
      character(*), intent(in):: attrname ! 属性の名前
      character(*), intent(in):: value
    end subroutine HistoryAxisAddAttrChar0


    subroutine HistoryAxisAddAttrLogical0( &
      & axis, attrname, value)
      use gtool_history_types, only: GT_HISTORY_AXIS
      use dc_types, only: DP
      type(GT_HISTORY_AXIS),intent(inout) :: axis
      character(*), intent(in):: attrname ! 属性の名前
      logical, intent(in):: value
    end subroutine HistoryAxisAddAttrLogical0


    subroutine HistoryAxisAddAttrInt0( &
      & axis, attrname, value)
      use gtool_history_types, only: GT_HISTORY_AXIS
      use dc_types, only: DP
      type(GT_HISTORY_AXIS),intent(inout) :: axis
      character(*), intent(in):: attrname ! 属性の名前
      integer, intent(in):: value
    end subroutine HistoryAxisAddAttrInt0


    subroutine HistoryAxisAddAttrInt1( &
      & axis, attrname, value)
      use gtool_history_types, only: GT_HISTORY_AXIS
      use dc_types, only: DP
      type(GT_HISTORY_AXIS),intent(inout) :: axis
      character(*), intent(in):: attrname ! 属性の名前
      integer, intent(in):: value(:)
    end subroutine HistoryAxisAddAttrInt1


    subroutine HistoryAxisAddAttrReal0( &
      & axis, attrname, value)
      use gtool_history_types, only: GT_HISTORY_AXIS
      use dc_types, only: DP
      type(GT_HISTORY_AXIS),intent(inout) :: axis
      character(*), intent(in):: attrname ! 属性の名前
      real, intent(in):: value
    end subroutine HistoryAxisAddAttrReal0


    subroutine HistoryAxisAddAttrReal1( &
      & axis, attrname, value)
      use gtool_history_types, only: GT_HISTORY_AXIS
      use dc_types, only: DP
      type(GT_HISTORY_AXIS),intent(inout) :: axis
      character(*), intent(in):: attrname ! 属性の名前
      real, intent(in):: value(:)
    end subroutine HistoryAxisAddAttrReal1


    subroutine HistoryAxisAddAttrDouble0( &
      & axis, attrname, value)
      use gtool_history_types, only: GT_HISTORY_AXIS
      use dc_types, only: DP
      type(GT_HISTORY_AXIS),intent(inout) :: axis
      character(*), intent(in):: attrname ! 属性の名前
      real(DP), intent(in):: value
    end subroutine HistoryAxisAddAttrDouble0


    subroutine HistoryAxisAddAttrDouble1( &
      & axis, attrname, value)
      use gtool_history_types, only: GT_HISTORY_AXIS
      use dc_types, only: DP
      type(GT_HISTORY_AXIS),intent(inout) :: axis
      character(*), intent(in):: attrname ! 属性の名前
      real(DP), intent(in):: value(:)
    end subroutine HistoryAxisAddAttrDouble1


  end interface

  interface HistoryVarinfoAddAttr


    subroutine HistoryVarinfoAddAttrChar0( &
      & varinfo, attrname, value, err )
      use gtool_history_types, only: GT_HISTORY_VARINFO
      use dc_types, only: DP
      type(GT_HISTORY_VARINFO),intent(inout) :: varinfo
      character(*), intent(in):: attrname ! 属性の名前
      character(*), intent(in):: value
      logical, intent(out), optional:: err
    end subroutine HistoryVarinfoAddAttrChar0


    subroutine HistoryVarinfoAddAttrLogical0( &
      & varinfo, attrname, value, err )
      use gtool_history_types, only: GT_HISTORY_VARINFO
      use dc_types, only: DP
      type(GT_HISTORY_VARINFO),intent(inout) :: varinfo
      character(*), intent(in):: attrname ! 属性の名前
      logical, intent(in):: value
      logical, intent(out), optional:: err
    end subroutine HistoryVarinfoAddAttrLogical0


    subroutine HistoryVarinfoAddAttrInt0( &
      & varinfo, attrname, value, err )
      use gtool_history_types, only: GT_HISTORY_VARINFO
      use dc_types, only: DP
      type(GT_HISTORY_VARINFO),intent(inout) :: varinfo
      character(*), intent(in):: attrname ! 属性の名前
      integer, intent(in):: value
      logical, intent(out), optional:: err
    end subroutine HistoryVarinfoAddAttrInt0


    subroutine HistoryVarinfoAddAttrInt1( &
      & varinfo, attrname, value, err )
      use gtool_history_types, only: GT_HISTORY_VARINFO
      use dc_types, only: DP
      type(GT_HISTORY_VARINFO),intent(inout) :: varinfo
      character(*), intent(in):: attrname ! 属性の名前
      integer, intent(in):: value(:)
      logical, intent(out), optional:: err
    end subroutine HistoryVarinfoAddAttrInt1


    subroutine HistoryVarinfoAddAttrReal0( &
      & varinfo, attrname, value, err )
      use gtool_history_types, only: GT_HISTORY_VARINFO
      use dc_types, only: DP
      type(GT_HISTORY_VARINFO),intent(inout) :: varinfo
      character(*), intent(in):: attrname ! 属性の名前
      real, intent(in):: value
      logical, intent(out), optional:: err
    end subroutine HistoryVarinfoAddAttrReal0


    subroutine HistoryVarinfoAddAttrReal1( &
      & varinfo, attrname, value, err )
      use gtool_history_types, only: GT_HISTORY_VARINFO
      use dc_types, only: DP
      type(GT_HISTORY_VARINFO),intent(inout) :: varinfo
      character(*), intent(in):: attrname ! 属性の名前
      real, intent(in):: value(:)
      logical, intent(out), optional:: err
    end subroutine HistoryVarinfoAddAttrReal1


    subroutine HistoryVarinfoAddAttrDouble0( &
      & varinfo, attrname, value, err )
      use gtool_history_types, only: GT_HISTORY_VARINFO
      use dc_types, only: DP
      type(GT_HISTORY_VARINFO),intent(inout) :: varinfo
      character(*), intent(in):: attrname ! 属性の名前
      real(DP), intent(in):: value
      logical, intent(out), optional:: err
    end subroutine HistoryVarinfoAddAttrDouble0


    subroutine HistoryVarinfoAddAttrDouble1( &
      & varinfo, attrname, value, err )
      use gtool_history_types, only: GT_HISTORY_VARINFO
      use dc_types, only: DP
      type(GT_HISTORY_VARINFO),intent(inout) :: varinfo
      character(*), intent(in):: attrname ! 属性の名前
      real(DP), intent(in):: value(:)
      logical, intent(out), optional:: err
    end subroutine HistoryVarinfoAddAttrDouble1


  end interface

  interface Put_Attr


    subroutine HistoryAxisAddAttr2Char0( &
      & axis, attrname, value)
      use gtool_history_types, only: GT_HISTORY_AXIS
      use dc_types, only: DP
      type(GT_HISTORY_AXIS),intent(inout) :: axis
      character(*), intent(in):: attrname ! 属性の名前
      character(*), intent(in):: value
    end subroutine HistoryAxisAddAttr2Char0

    subroutine HistoryVarinfoAddAttr2Char0( &
      & varinfo, attrname, value, err )
      use gtool_history_types, only: GT_HISTORY_VARINFO
      use dc_types, only: DP
      type(GT_HISTORY_VARINFO),intent(inout) :: varinfo
      character(*), intent(in):: attrname ! 属性の名前
      character(*), intent(in):: value
      logical, intent(out), optional:: err
    end subroutine HistoryVarinfoAddAttr2Char0


    subroutine HistoryAxisAddAttr2Logical0( &
      & axis, attrname, value)
      use gtool_history_types, only: GT_HISTORY_AXIS
      use dc_types, only: DP
      type(GT_HISTORY_AXIS),intent(inout) :: axis
      character(*), intent(in):: attrname ! 属性の名前
      logical, intent(in):: value
    end subroutine HistoryAxisAddAttr2Logical0

    subroutine HistoryVarinfoAddAttr2Logical0( &
      & varinfo, attrname, value, err )
      use gtool_history_types, only: GT_HISTORY_VARINFO
      use dc_types, only: DP
      type(GT_HISTORY_VARINFO),intent(inout) :: varinfo
      character(*), intent(in):: attrname ! 属性の名前
      logical, intent(in):: value
      logical, intent(out), optional:: err
    end subroutine HistoryVarinfoAddAttr2Logical0


    subroutine HistoryAxisAddAttr2Int0( &
      & axis, attrname, value)
      use gtool_history_types, only: GT_HISTORY_AXIS
      use dc_types, only: DP
      type(GT_HISTORY_AXIS),intent(inout) :: axis
      character(*), intent(in):: attrname ! 属性の名前
      integer, intent(in):: value
    end subroutine HistoryAxisAddAttr2Int0

    subroutine HistoryVarinfoAddAttr2Int0( &
      & varinfo, attrname, value, err )
      use gtool_history_types, only: GT_HISTORY_VARINFO
      use dc_types, only: DP
      type(GT_HISTORY_VARINFO),intent(inout) :: varinfo
      character(*), intent(in):: attrname ! 属性の名前
      integer, intent(in):: value
      logical, intent(out), optional:: err
    end subroutine HistoryVarinfoAddAttr2Int0


    subroutine HistoryAxisAddAttr2Int1( &
      & axis, attrname, value)
      use gtool_history_types, only: GT_HISTORY_AXIS
      use dc_types, only: DP
      type(GT_HISTORY_AXIS),intent(inout) :: axis
      character(*), intent(in):: attrname ! 属性の名前
      integer, intent(in):: value(:)
    end subroutine HistoryAxisAddAttr2Int1

    subroutine HistoryVarinfoAddAttr2Int1( &
      & varinfo, attrname, value, err )
      use gtool_history_types, only: GT_HISTORY_VARINFO
      use dc_types, only: DP
      type(GT_HISTORY_VARINFO),intent(inout) :: varinfo
      character(*), intent(in):: attrname ! 属性の名前
      integer, intent(in):: value(:)
      logical, intent(out), optional:: err
    end subroutine HistoryVarinfoAddAttr2Int1


    subroutine HistoryAxisAddAttr2Real0( &
      & axis, attrname, value)
      use gtool_history_types, only: GT_HISTORY_AXIS
      use dc_types, only: DP
      type(GT_HISTORY_AXIS),intent(inout) :: axis
      character(*), intent(in):: attrname ! 属性の名前
      real, intent(in):: value
    end subroutine HistoryAxisAddAttr2Real0

    subroutine HistoryVarinfoAddAttr2Real0( &
      & varinfo, attrname, value, err )
      use gtool_history_types, only: GT_HISTORY_VARINFO
      use dc_types, only: DP
      type(GT_HISTORY_VARINFO),intent(inout) :: varinfo
      character(*), intent(in):: attrname ! 属性の名前
      real, intent(in):: value
      logical, intent(out), optional:: err
    end subroutine HistoryVarinfoAddAttr2Real0


    subroutine HistoryAxisAddAttr2Real1( &
      & axis, attrname, value)
      use gtool_history_types, only: GT_HISTORY_AXIS
      use dc_types, only: DP
      type(GT_HISTORY_AXIS),intent(inout) :: axis
      character(*), intent(in):: attrname ! 属性の名前
      real, intent(in):: value(:)
    end subroutine HistoryAxisAddAttr2Real1

    subroutine HistoryVarinfoAddAttr2Real1( &
      & varinfo, attrname, value, err )
      use gtool_history_types, only: GT_HISTORY_VARINFO
      use dc_types, only: DP
      type(GT_HISTORY_VARINFO),intent(inout) :: varinfo
      character(*), intent(in):: attrname ! 属性の名前
      real, intent(in):: value(:)
      logical, intent(out), optional:: err
    end subroutine HistoryVarinfoAddAttr2Real1


    subroutine HistoryAxisAddAttr2Double0( &
      & axis, attrname, value)
      use gtool_history_types, only: GT_HISTORY_AXIS
      use dc_types, only: DP
      type(GT_HISTORY_AXIS),intent(inout) :: axis
      character(*), intent(in):: attrname ! 属性の名前
      real(DP), intent(in):: value
    end subroutine HistoryAxisAddAttr2Double0

    subroutine HistoryVarinfoAddAttr2Double0( &
      & varinfo, attrname, value, err )
      use gtool_history_types, only: GT_HISTORY_VARINFO
      use dc_types, only: DP
      type(GT_HISTORY_VARINFO),intent(inout) :: varinfo
      character(*), intent(in):: attrname ! 属性の名前
      real(DP), intent(in):: value
      logical, intent(out), optional:: err
    end subroutine HistoryVarinfoAddAttr2Double0


    subroutine HistoryAxisAddAttr2Double1( &
      & axis, attrname, value)
      use gtool_history_types, only: GT_HISTORY_AXIS
      use dc_types, only: DP
      type(GT_HISTORY_AXIS),intent(inout) :: axis
      character(*), intent(in):: attrname ! 属性の名前
      real(DP), intent(in):: value(:)
    end subroutine HistoryAxisAddAttr2Double1

    subroutine HistoryVarinfoAddAttr2Double1( &
      & varinfo, attrname, value, err )
      use gtool_history_types, only: GT_HISTORY_VARINFO
      use dc_types, only: DP
      type(GT_HISTORY_VARINFO),intent(inout) :: varinfo
      character(*), intent(in):: attrname ! 属性の名前
      real(DP), intent(in):: value(:)
      logical, intent(out), optional:: err
    end subroutine HistoryVarinfoAddAttr2Double1


  end interface

  interface HistoryGetAttr


    subroutine HistoryGettAttrChar0( &
      & file, varname, attrname, & ! (in)
      & value, &                   ! (out)
      & flag_mpi_split, &          ! (in) optional
      & err )                      ! (out) optional

      use dc_types, only: DP
      character(*), intent(in):: file
      character(*), intent(in):: varname
      character(*), intent(in):: attrname
      character(*), intent(out):: value
      logical, intent(in), optional:: flag_mpi_split
      logical, intent(out), optional:: err

    end subroutine HistoryGettAttrChar0


    subroutine HistoryGettAttrInt0( &
      & file, varname, attrname, & ! (in)
      & value, &                   ! (out)
      & flag_mpi_split, &          ! (in) optional
      & err )                      ! (out) optional

      use dc_types, only: DP
      character(*), intent(in):: file
      character(*), intent(in):: varname
      character(*), intent(in):: attrname
      integer, intent(out):: value
      logical, intent(in), optional:: flag_mpi_split
      logical, intent(out), optional:: err

    end subroutine HistoryGettAttrInt0


    subroutine HistoryGettAttrInt1( &
      & file, varname, attrname, & ! (in)
      & value, &                   ! (out)
      & flag_mpi_split, &          ! (in) optional
      & err )                      ! (out) optional

      use dc_types, only: DP
      character(*), intent(in):: file
      character(*), intent(in):: varname
      character(*), intent(in):: attrname
      integer, intent(out):: value(:)
      logical, intent(in), optional:: flag_mpi_split
      logical, intent(out), optional:: err

    end subroutine HistoryGettAttrInt1


    subroutine HistoryGettAttrReal0( &
      & file, varname, attrname, & ! (in)
      & value, &                   ! (out)
      & flag_mpi_split, &          ! (in) optional
      & err )                      ! (out) optional

      use dc_types, only: DP
      character(*), intent(in):: file
      character(*), intent(in):: varname
      character(*), intent(in):: attrname
      real, intent(out):: value
      logical, intent(in), optional:: flag_mpi_split
      logical, intent(out), optional:: err

    end subroutine HistoryGettAttrReal0


    subroutine HistoryGettAttrReal1( &
      & file, varname, attrname, & ! (in)
      & value, &                   ! (out)
      & flag_mpi_split, &          ! (in) optional
      & err )                      ! (out) optional

      use dc_types, only: DP
      character(*), intent(in):: file
      character(*), intent(in):: varname
      character(*), intent(in):: attrname
      real, intent(out):: value(:)
      logical, intent(in), optional:: flag_mpi_split
      logical, intent(out), optional:: err

    end subroutine HistoryGettAttrReal1


    subroutine HistoryGettAttrDouble0( &
      & file, varname, attrname, & ! (in)
      & value, &                   ! (out)
      & flag_mpi_split, &          ! (in) optional
      & err )                      ! (out) optional

      use dc_types, only: DP
      character(*), intent(in):: file
      character(*), intent(in):: varname
      character(*), intent(in):: attrname
      real(DP), intent(out):: value
      logical, intent(in), optional:: flag_mpi_split
      logical, intent(out), optional:: err

    end subroutine HistoryGettAttrDouble0


    subroutine HistoryGettAttrDouble1( &
      & file, varname, attrname, & ! (in)
      & value, &                   ! (out)
      & flag_mpi_split, &          ! (in) optional
      & err )                      ! (out) optional

      use dc_types, only: DP
      character(*), intent(in):: file
      character(*), intent(in):: varname
      character(*), intent(in):: attrname
      real(DP), intent(out):: value(:)
      logical, intent(in), optional:: flag_mpi_split
      logical, intent(out), optional:: err

    end subroutine HistoryGettAttrDouble1


  end interface


                        !--------------------------
  !  固定長配列用
  !  For fixed length array
  interface HistoryGet
                      


    subroutine HistoryGetDouble0( &
      & file, varname, array, range, quiet, &
      & flag_mpi_split, returned_time, flag_time_exist, err)

      use dc_types, only: DP
      character(*), intent(in):: file, varname
      character(*), intent(in), optional:: range
      logical, intent(in), optional:: quiet
                              real(DP), intent(out):: array
                        
      logical, intent(in), optional:: flag_mpi_split
      real(DP), intent(out), optional:: returned_time
      logical, intent(out), optional:: flag_time_exist
      logical, intent(out), optional:: err
    end subroutine HistoryGetDouble0


    subroutine HistoryGetDouble0TimeD( &
      & file, varname, array, time, quiet, &
      & flag_mpi_split, returned_time, flag_time_exist, err)

      use dc_types, only: DP
      character(*), intent(in):: file, varname
      real(DP), intent(in):: time
      logical, intent(in), optional:: quiet
                              real(DP), intent(out):: array
                        
      logical, intent(in), optional:: flag_mpi_split
      real(DP), intent(out), optional:: returned_time
      logical, intent(out), optional:: flag_time_exist
      logical, intent(out), optional:: err
    end subroutine HistoryGetDouble0TimeD


    subroutine HistoryGetDouble0TimeR( &
      & file, varname, array, time, quiet, &
      & flag_mpi_split, returned_time, flag_time_exist, err)

      use dc_types, only: DP
      character(*), intent(in):: file, varname
      real, intent(in):: time
      logical, intent(in), optional:: quiet
                              real(DP), intent(out):: array
                        
      logical, intent(in), optional:: flag_mpi_split
      real(DP), intent(out), optional:: returned_time
      logical, intent(out), optional:: flag_time_exist
      logical, intent(out), optional:: err
    end subroutine HistoryGetDouble0TimeR


    subroutine HistoryGetDouble0TimeI( &
      & file, varname, array, time, quiet, &
      & flag_mpi_split, returned_time, flag_time_exist, err)

      use dc_types, only: DP
      character(*), intent(in):: file, varname
      integer, intent(in):: time
      logical, intent(in), optional:: quiet
                              real(DP), intent(out):: array
                        
      logical, intent(in), optional:: flag_mpi_split
      real(DP), intent(out), optional:: returned_time
      logical, intent(out), optional:: flag_time_exist
      logical, intent(out), optional:: err
    end subroutine HistoryGetDouble0TimeI


    subroutine HistoryGetDouble1( &
      & file, varname, array, range, quiet, &
      & flag_mpi_split, returned_time, flag_time_exist, err)

      use dc_types, only: DP
      character(*), intent(in):: file, varname
      character(*), intent(in), optional:: range
      logical, intent(in), optional:: quiet
                              real(DP), intent(out):: array(:)
                        
      logical, intent(in), optional:: flag_mpi_split
      real(DP), intent(out), optional:: returned_time
      logical, intent(out), optional:: flag_time_exist
      logical, intent(out), optional:: err
    end subroutine HistoryGetDouble1


    subroutine HistoryGetDouble1TimeD( &
      & file, varname, array, time, quiet, &
      & flag_mpi_split, returned_time, flag_time_exist, err)

      use dc_types, only: DP
      character(*), intent(in):: file, varname
      real(DP), intent(in):: time
      logical, intent(in), optional:: quiet
                              real(DP), intent(out):: array(:)
                        
      logical, intent(in), optional:: flag_mpi_split
      real(DP), intent(out), optional:: returned_time
      logical, intent(out), optional:: flag_time_exist
      logical, intent(out), optional:: err
    end subroutine HistoryGetDouble1TimeD


    subroutine HistoryGetDouble1TimeR( &
      & file, varname, array, time, quiet, &
      & flag_mpi_split, returned_time, flag_time_exist, err)

      use dc_types, only: DP
      character(*), intent(in):: file, varname
      real, intent(in):: time
      logical, intent(in), optional:: quiet
                              real(DP), intent(out):: array(:)
                        
      logical, intent(in), optional:: flag_mpi_split
      real(DP), intent(out), optional:: returned_time
      logical, intent(out), optional:: flag_time_exist
      logical, intent(out), optional:: err
    end subroutine HistoryGetDouble1TimeR


    subroutine HistoryGetDouble1TimeI( &
      & file, varname, array, time, quiet, &
      & flag_mpi_split, returned_time, flag_time_exist, err)

      use dc_types, only: DP
      character(*), intent(in):: file, varname
      integer, intent(in):: time
      logical, intent(in), optional:: quiet
                              real(DP), intent(out):: array(:)
                        
      logical, intent(in), optional:: flag_mpi_split
      real(DP), intent(out), optional:: returned_time
      logical, intent(out), optional:: flag_time_exist
      logical, intent(out), optional:: err
    end subroutine HistoryGetDouble1TimeI


    subroutine HistoryGetDouble2( &
      & file, varname, array, range, quiet, &
      & flag_mpi_split, returned_time, flag_time_exist, err)

      use dc_types, only: DP
      character(*), intent(in):: file, varname
      character(*), intent(in), optional:: range
      logical, intent(in), optional:: quiet
                              real(DP), intent(out):: array(:,:)
                        
      logical, intent(in), optional:: flag_mpi_split
      real(DP), intent(out), optional:: returned_time
      logical, intent(out), optional:: flag_time_exist
      logical, intent(out), optional:: err
    end subroutine HistoryGetDouble2


    subroutine HistoryGetDouble2TimeD( &
      & file, varname, array, time, quiet, &
      & flag_mpi_split, returned_time, flag_time_exist, err)

      use dc_types, only: DP
      character(*), intent(in):: file, varname
      real(DP), intent(in):: time
      logical, intent(in), optional:: quiet
                              real(DP), intent(out):: array(:,:)
                        
      logical, intent(in), optional:: flag_mpi_split
      real(DP), intent(out), optional:: returned_time
      logical, intent(out), optional:: flag_time_exist
      logical, intent(out), optional:: err
    end subroutine HistoryGetDouble2TimeD


    subroutine HistoryGetDouble2TimeR( &
      & file, varname, array, time, quiet, &
      & flag_mpi_split, returned_time, flag_time_exist, err)

      use dc_types, only: DP
      character(*), intent(in):: file, varname
      real, intent(in):: time
      logical, intent(in), optional:: quiet
                              real(DP), intent(out):: array(:,:)
                        
      logical, intent(in), optional:: flag_mpi_split
      real(DP), intent(out), optional:: returned_time
      logical, intent(out), optional:: flag_time_exist
      logical, intent(out), optional:: err
    end subroutine HistoryGetDouble2TimeR


    subroutine HistoryGetDouble2TimeI( &
      & file, varname, array, time, quiet, &
      & flag_mpi_split, returned_time, flag_time_exist, err)

      use dc_types, only: DP
      character(*), intent(in):: file, varname
      integer, intent(in):: time
      logical, intent(in), optional:: quiet
                              real(DP), intent(out):: array(:,:)
                        
      logical, intent(in), optional:: flag_mpi_split
      real(DP), intent(out), optional:: returned_time
      logical, intent(out), optional:: flag_time_exist
      logical, intent(out), optional:: err
    end subroutine HistoryGetDouble2TimeI


    subroutine HistoryGetDouble3( &
      & file, varname, array, range, quiet, &
      & flag_mpi_split, returned_time, flag_time_exist, err)

      use dc_types, only: DP
      character(*), intent(in):: file, varname
      character(*), intent(in), optional:: range
      logical, intent(in), optional:: quiet
                              real(DP), intent(out):: array(:,:,:)
                        
      logical, intent(in), optional:: flag_mpi_split
      real(DP), intent(out), optional:: returned_time
      logical, intent(out), optional:: flag_time_exist
      logical, intent(out), optional:: err
    end subroutine HistoryGetDouble3


    subroutine HistoryGetDouble3TimeD( &
      & file, varname, array, time, quiet, &
      & flag_mpi_split, returned_time, flag_time_exist, err)

      use dc_types, only: DP
      character(*), intent(in):: file, varname
      real(DP), intent(in):: time
      logical, intent(in), optional:: quiet
                              real(DP), intent(out):: array(:,:,:)
                        
      logical, intent(in), optional:: flag_mpi_split
      real(DP), intent(out), optional:: returned_time
      logical, intent(out), optional:: flag_time_exist
      logical, intent(out), optional:: err
    end subroutine HistoryGetDouble3TimeD


    subroutine HistoryGetDouble3TimeR( &
      & file, varname, array, time, quiet, &
      & flag_mpi_split, returned_time, flag_time_exist, err)

      use dc_types, only: DP
      character(*), intent(in):: file, varname
      real, intent(in):: time
      logical, intent(in), optional:: quiet
                              real(DP), intent(out):: array(:,:,:)
                        
      logical, intent(in), optional:: flag_mpi_split
      real(DP), intent(out), optional:: returned_time
      logical, intent(out), optional:: flag_time_exist
      logical, intent(out), optional:: err
    end subroutine HistoryGetDouble3TimeR


    subroutine HistoryGetDouble3TimeI( &
      & file, varname, array, time, quiet, &
      & flag_mpi_split, returned_time, flag_time_exist, err)

      use dc_types, only: DP
      character(*), intent(in):: file, varname
      integer, intent(in):: time
      logical, intent(in), optional:: quiet
                              real(DP), intent(out):: array(:,:,:)
                        
      logical, intent(in), optional:: flag_mpi_split
      real(DP), intent(out), optional:: returned_time
      logical, intent(out), optional:: flag_time_exist
      logical, intent(out), optional:: err
    end subroutine HistoryGetDouble3TimeI


    subroutine HistoryGetDouble4( &
      & file, varname, array, range, quiet, &
      & flag_mpi_split, returned_time, flag_time_exist, err)

      use dc_types, only: DP
      character(*), intent(in):: file, varname
      character(*), intent(in), optional:: range
      logical, intent(in), optional:: quiet
                              real(DP), intent(out):: array(:,:,:,:)
                        
      logical, intent(in), optional:: flag_mpi_split
      real(DP), intent(out), optional:: returned_time
      logical, intent(out), optional:: flag_time_exist
      logical, intent(out), optional:: err
    end subroutine HistoryGetDouble4


    subroutine HistoryGetDouble4TimeD( &
      & file, varname, array, time, quiet, &
      & flag_mpi_split, returned_time, flag_time_exist, err)

      use dc_types, only: DP
      character(*), intent(in):: file, varname
      real(DP), intent(in):: time
      logical, intent(in), optional:: quiet
                              real(DP), intent(out):: array(:,:,:,:)
                        
      logical, intent(in), optional:: flag_mpi_split
      real(DP), intent(out), optional:: returned_time
      logical, intent(out), optional:: flag_time_exist
      logical, intent(out), optional:: err
    end subroutine HistoryGetDouble4TimeD


    subroutine HistoryGetDouble4TimeR( &
      & file, varname, array, time, quiet, &
      & flag_mpi_split, returned_time, flag_time_exist, err)

      use dc_types, only: DP
      character(*), intent(in):: file, varname
      real, intent(in):: time
      logical, intent(in), optional:: quiet
                              real(DP), intent(out):: array(:,:,:,:)
                        
      logical, intent(in), optional:: flag_mpi_split
      real(DP), intent(out), optional:: returned_time
      logical, intent(out), optional:: flag_time_exist
      logical, intent(out), optional:: err
    end subroutine HistoryGetDouble4TimeR


    subroutine HistoryGetDouble4TimeI( &
      & file, varname, array, time, quiet, &
      & flag_mpi_split, returned_time, flag_time_exist, err)

      use dc_types, only: DP
      character(*), intent(in):: file, varname
      integer, intent(in):: time
      logical, intent(in), optional:: quiet
                              real(DP), intent(out):: array(:,:,:,:)
                        
      logical, intent(in), optional:: flag_mpi_split
      real(DP), intent(out), optional:: returned_time
      logical, intent(out), optional:: flag_time_exist
      logical, intent(out), optional:: err
    end subroutine HistoryGetDouble4TimeI


    subroutine HistoryGetDouble5( &
      & file, varname, array, range, quiet, &
      & flag_mpi_split, returned_time, flag_time_exist, err)

      use dc_types, only: DP
      character(*), intent(in):: file, varname
      character(*), intent(in), optional:: range
      logical, intent(in), optional:: quiet
                              real(DP), intent(out):: array(:,:,:,:,:)
                        
      logical, intent(in), optional:: flag_mpi_split
      real(DP), intent(out), optional:: returned_time
      logical, intent(out), optional:: flag_time_exist
      logical, intent(out), optional:: err
    end subroutine HistoryGetDouble5


    subroutine HistoryGetDouble5TimeD( &
      & file, varname, array, time, quiet, &
      & flag_mpi_split, returned_time, flag_time_exist, err)

      use dc_types, only: DP
      character(*), intent(in):: file, varname
      real(DP), intent(in):: time
      logical, intent(in), optional:: quiet
                              real(DP), intent(out):: array(:,:,:,:,:)
                        
      logical, intent(in), optional:: flag_mpi_split
      real(DP), intent(out), optional:: returned_time
      logical, intent(out), optional:: flag_time_exist
      logical, intent(out), optional:: err
    end subroutine HistoryGetDouble5TimeD


    subroutine HistoryGetDouble5TimeR( &
      & file, varname, array, time, quiet, &
      & flag_mpi_split, returned_time, flag_time_exist, err)

      use dc_types, only: DP
      character(*), intent(in):: file, varname
      real, intent(in):: time
      logical, intent(in), optional:: quiet
                              real(DP), intent(out):: array(:,:,:,:,:)
                        
      logical, intent(in), optional:: flag_mpi_split
      real(DP), intent(out), optional:: returned_time
      logical, intent(out), optional:: flag_time_exist
      logical, intent(out), optional:: err
    end subroutine HistoryGetDouble5TimeR


    subroutine HistoryGetDouble5TimeI( &
      & file, varname, array, time, quiet, &
      & flag_mpi_split, returned_time, flag_time_exist, err)

      use dc_types, only: DP
      character(*), intent(in):: file, varname
      integer, intent(in):: time
      logical, intent(in), optional:: quiet
                              real(DP), intent(out):: array(:,:,:,:,:)
                        
      logical, intent(in), optional:: flag_mpi_split
      real(DP), intent(out), optional:: returned_time
      logical, intent(out), optional:: flag_time_exist
      logical, intent(out), optional:: err
    end subroutine HistoryGetDouble5TimeI


    subroutine HistoryGetDouble6( &
      & file, varname, array, range, quiet, &
      & flag_mpi_split, returned_time, flag_time_exist, err)

      use dc_types, only: DP
      character(*), intent(in):: file, varname
      character(*), intent(in), optional:: range
      logical, intent(in), optional:: quiet
                              real(DP), intent(out):: array(:,:,:,:,:,:)
                        
      logical, intent(in), optional:: flag_mpi_split
      real(DP), intent(out), optional:: returned_time
      logical, intent(out), optional:: flag_time_exist
      logical, intent(out), optional:: err
    end subroutine HistoryGetDouble6


    subroutine HistoryGetDouble6TimeD( &
      & file, varname, array, time, quiet, &
      & flag_mpi_split, returned_time, flag_time_exist, err)

      use dc_types, only: DP
      character(*), intent(in):: file, varname
      real(DP), intent(in):: time
      logical, intent(in), optional:: quiet
                              real(DP), intent(out):: array(:,:,:,:,:,:)
                        
      logical, intent(in), optional:: flag_mpi_split
      real(DP), intent(out), optional:: returned_time
      logical, intent(out), optional:: flag_time_exist
      logical, intent(out), optional:: err
    end subroutine HistoryGetDouble6TimeD


    subroutine HistoryGetDouble6TimeR( &
      & file, varname, array, time, quiet, &
      & flag_mpi_split, returned_time, flag_time_exist, err)

      use dc_types, only: DP
      character(*), intent(in):: file, varname
      real, intent(in):: time
      logical, intent(in), optional:: quiet
                              real(DP), intent(out):: array(:,:,:,:,:,:)
                        
      logical, intent(in), optional:: flag_mpi_split
      real(DP), intent(out), optional:: returned_time
      logical, intent(out), optional:: flag_time_exist
      logical, intent(out), optional:: err
    end subroutine HistoryGetDouble6TimeR


    subroutine HistoryGetDouble6TimeI( &
      & file, varname, array, time, quiet, &
      & flag_mpi_split, returned_time, flag_time_exist, err)

      use dc_types, only: DP
      character(*), intent(in):: file, varname
      integer, intent(in):: time
      logical, intent(in), optional:: quiet
                              real(DP), intent(out):: array(:,:,:,:,:,:)
                        
      logical, intent(in), optional:: flag_mpi_split
      real(DP), intent(out), optional:: returned_time
      logical, intent(out), optional:: flag_time_exist
      logical, intent(out), optional:: err
    end subroutine HistoryGetDouble6TimeI


    subroutine HistoryGetDouble7( &
      & file, varname, array, range, quiet, &
      & flag_mpi_split, returned_time, flag_time_exist, err)

      use dc_types, only: DP
      character(*), intent(in):: file, varname
      character(*), intent(in), optional:: range
      logical, intent(in), optional:: quiet
                              real(DP), intent(out):: array(:,:,:,:,:,:,:)
                        
      logical, intent(in), optional:: flag_mpi_split
      real(DP), intent(out), optional:: returned_time
      logical, intent(out), optional:: flag_time_exist
      logical, intent(out), optional:: err
    end subroutine HistoryGetDouble7


    subroutine HistoryGetDouble7TimeD( &
      & file, varname, array, time, quiet, &
      & flag_mpi_split, returned_time, flag_time_exist, err)

      use dc_types, only: DP
      character(*), intent(in):: file, varname
      real(DP), intent(in):: time
      logical, intent(in), optional:: quiet
                              real(DP), intent(out):: array(:,:,:,:,:,:,:)
                        
      logical, intent(in), optional:: flag_mpi_split
      real(DP), intent(out), optional:: returned_time
      logical, intent(out), optional:: flag_time_exist
      logical, intent(out), optional:: err
    end subroutine HistoryGetDouble7TimeD


    subroutine HistoryGetDouble7TimeR( &
      & file, varname, array, time, quiet, &
      & flag_mpi_split, returned_time, flag_time_exist, err)

      use dc_types, only: DP
      character(*), intent(in):: file, varname
      real, intent(in):: time
      logical, intent(in), optional:: quiet
                              real(DP), intent(out):: array(:,:,:,:,:,:,:)
                        
      logical, intent(in), optional:: flag_mpi_split
      real(DP), intent(out), optional:: returned_time
      logical, intent(out), optional:: flag_time_exist
      logical, intent(out), optional:: err
    end subroutine HistoryGetDouble7TimeR


    subroutine HistoryGetDouble7TimeI( &
      & file, varname, array, time, quiet, &
      & flag_mpi_split, returned_time, flag_time_exist, err)

      use dc_types, only: DP
      character(*), intent(in):: file, varname
      integer, intent(in):: time
      logical, intent(in), optional:: quiet
                              real(DP), intent(out):: array(:,:,:,:,:,:,:)
                        
      logical, intent(in), optional:: flag_mpi_split
      real(DP), intent(out), optional:: returned_time
      logical, intent(out), optional:: flag_time_exist
      logical, intent(out), optional:: err
    end subroutine HistoryGetDouble7TimeI


    subroutine HistoryGetReal0( &
      & file, varname, array, range, quiet, &
      & flag_mpi_split, returned_time, flag_time_exist, err)

      use dc_types, only: DP
      character(*), intent(in):: file, varname
      character(*), intent(in), optional:: range
      logical, intent(in), optional:: quiet
                              real, intent(out):: array
                        
      logical, intent(in), optional:: flag_mpi_split
      real(DP), intent(out), optional:: returned_time
      logical, intent(out), optional:: flag_time_exist
      logical, intent(out), optional:: err
    end subroutine HistoryGetReal0


    subroutine HistoryGetReal0TimeD( &
      & file, varname, array, time, quiet, &
      & flag_mpi_split, returned_time, flag_time_exist, err)

      use dc_types, only: DP
      character(*), intent(in):: file, varname
      real(DP), intent(in):: time
      logical, intent(in), optional:: quiet
                              real, intent(out):: array
                        
      logical, intent(in), optional:: flag_mpi_split
      real(DP), intent(out), optional:: returned_time
      logical, intent(out), optional:: flag_time_exist
      logical, intent(out), optional:: err
    end subroutine HistoryGetReal0TimeD


    subroutine HistoryGetReal0TimeR( &
      & file, varname, array, time, quiet, &
      & flag_mpi_split, returned_time, flag_time_exist, err)

      use dc_types, only: DP
      character(*), intent(in):: file, varname
      real, intent(in):: time
      logical, intent(in), optional:: quiet
                              real, intent(out):: array
                        
      logical, intent(in), optional:: flag_mpi_split
      real(DP), intent(out), optional:: returned_time
      logical, intent(out), optional:: flag_time_exist
      logical, intent(out), optional:: err
    end subroutine HistoryGetReal0TimeR


    subroutine HistoryGetReal0TimeI( &
      & file, varname, array, time, quiet, &
      & flag_mpi_split, returned_time, flag_time_exist, err)

      use dc_types, only: DP
      character(*), intent(in):: file, varname
      integer, intent(in):: time
      logical, intent(in), optional:: quiet
                              real, intent(out):: array
                        
      logical, intent(in), optional:: flag_mpi_split
      real(DP), intent(out), optional:: returned_time
      logical, intent(out), optional:: flag_time_exist
      logical, intent(out), optional:: err
    end subroutine HistoryGetReal0TimeI


    subroutine HistoryGetReal1( &
      & file, varname, array, range, quiet, &
      & flag_mpi_split, returned_time, flag_time_exist, err)

      use dc_types, only: DP
      character(*), intent(in):: file, varname
      character(*), intent(in), optional:: range
      logical, intent(in), optional:: quiet
                              real, intent(out):: array(:)
                        
      logical, intent(in), optional:: flag_mpi_split
      real(DP), intent(out), optional:: returned_time
      logical, intent(out), optional:: flag_time_exist
      logical, intent(out), optional:: err
    end subroutine HistoryGetReal1


    subroutine HistoryGetReal1TimeD( &
      & file, varname, array, time, quiet, &
      & flag_mpi_split, returned_time, flag_time_exist, err)

      use dc_types, only: DP
      character(*), intent(in):: file, varname
      real(DP), intent(in):: time
      logical, intent(in), optional:: quiet
                              real, intent(out):: array(:)
                        
      logical, intent(in), optional:: flag_mpi_split
      real(DP), intent(out), optional:: returned_time
      logical, intent(out), optional:: flag_time_exist
      logical, intent(out), optional:: err
    end subroutine HistoryGetReal1TimeD


    subroutine HistoryGetReal1TimeR( &
      & file, varname, array, time, quiet, &
      & flag_mpi_split, returned_time, flag_time_exist, err)

      use dc_types, only: DP
      character(*), intent(in):: file, varname
      real, intent(in):: time
      logical, intent(in), optional:: quiet
                              real, intent(out):: array(:)
                        
      logical, intent(in), optional:: flag_mpi_split
      real(DP), intent(out), optional:: returned_time
      logical, intent(out), optional:: flag_time_exist
      logical, intent(out), optional:: err
    end subroutine HistoryGetReal1TimeR


    subroutine HistoryGetReal1TimeI( &
      & file, varname, array, time, quiet, &
      & flag_mpi_split, returned_time, flag_time_exist, err)

      use dc_types, only: DP
      character(*), intent(in):: file, varname
      integer, intent(in):: time
      logical, intent(in), optional:: quiet
                              real, intent(out):: array(:)
                        
      logical, intent(in), optional:: flag_mpi_split
      real(DP), intent(out), optional:: returned_time
      logical, intent(out), optional:: flag_time_exist
      logical, intent(out), optional:: err
    end subroutine HistoryGetReal1TimeI


    subroutine HistoryGetReal2( &
      & file, varname, array, range, quiet, &
      & flag_mpi_split, returned_time, flag_time_exist, err)

      use dc_types, only: DP
      character(*), intent(in):: file, varname
      character(*), intent(in), optional:: range
      logical, intent(in), optional:: quiet
                              real, intent(out):: array(:,:)
                        
      logical, intent(in), optional:: flag_mpi_split
      real(DP), intent(out), optional:: returned_time
      logical, intent(out), optional:: flag_time_exist
      logical, intent(out), optional:: err
    end subroutine HistoryGetReal2


    subroutine HistoryGetReal2TimeD( &
      & file, varname, array, time, quiet, &
      & flag_mpi_split, returned_time, flag_time_exist, err)

      use dc_types, only: DP
      character(*), intent(in):: file, varname
      real(DP), intent(in):: time
      logical, intent(in), optional:: quiet
                              real, intent(out):: array(:,:)
                        
      logical, intent(in), optional:: flag_mpi_split
      real(DP), intent(out), optional:: returned_time
      logical, intent(out), optional:: flag_time_exist
      logical, intent(out), optional:: err
    end subroutine HistoryGetReal2TimeD


    subroutine HistoryGetReal2TimeR( &
      & file, varname, array, time, quiet, &
      & flag_mpi_split, returned_time, flag_time_exist, err)

      use dc_types, only: DP
      character(*), intent(in):: file, varname
      real, intent(in):: time
      logical, intent(in), optional:: quiet
                              real, intent(out):: array(:,:)
                        
      logical, intent(in), optional:: flag_mpi_split
      real(DP), intent(out), optional:: returned_time
      logical, intent(out), optional:: flag_time_exist
      logical, intent(out), optional:: err
    end subroutine HistoryGetReal2TimeR


    subroutine HistoryGetReal2TimeI( &
      & file, varname, array, time, quiet, &
      & flag_mpi_split, returned_time, flag_time_exist, err)

      use dc_types, only: DP
      character(*), intent(in):: file, varname
      integer, intent(in):: time
      logical, intent(in), optional:: quiet
                              real, intent(out):: array(:,:)
                        
      logical, intent(in), optional:: flag_mpi_split
      real(DP), intent(out), optional:: returned_time
      logical, intent(out), optional:: flag_time_exist
      logical, intent(out), optional:: err
    end subroutine HistoryGetReal2TimeI


    subroutine HistoryGetReal3( &
      & file, varname, array, range, quiet, &
      & flag_mpi_split, returned_time, flag_time_exist, err)

      use dc_types, only: DP
      character(*), intent(in):: file, varname
      character(*), intent(in), optional:: range
      logical, intent(in), optional:: quiet
                              real, intent(out):: array(:,:,:)
                        
      logical, intent(in), optional:: flag_mpi_split
      real(DP), intent(out), optional:: returned_time
      logical, intent(out), optional:: flag_time_exist
      logical, intent(out), optional:: err
    end subroutine HistoryGetReal3


    subroutine HistoryGetReal3TimeD( &
      & file, varname, array, time, quiet, &
      & flag_mpi_split, returned_time, flag_time_exist, err)

      use dc_types, only: DP
      character(*), intent(in):: file, varname
      real(DP), intent(in):: time
      logical, intent(in), optional:: quiet
                              real, intent(out):: array(:,:,:)
                        
      logical, intent(in), optional:: flag_mpi_split
      real(DP), intent(out), optional:: returned_time
      logical, intent(out), optional:: flag_time_exist
      logical, intent(out), optional:: err
    end subroutine HistoryGetReal3TimeD


    subroutine HistoryGetReal3TimeR( &
      & file, varname, array, time, quiet, &
      & flag_mpi_split, returned_time, flag_time_exist, err)

      use dc_types, only: DP
      character(*), intent(in):: file, varname
      real, intent(in):: time
      logical, intent(in), optional:: quiet
                              real, intent(out):: array(:,:,:)
                        
      logical, intent(in), optional:: flag_mpi_split
      real(DP), intent(out), optional:: returned_time
      logical, intent(out), optional:: flag_time_exist
      logical, intent(out), optional:: err
    end subroutine HistoryGetReal3TimeR


    subroutine HistoryGetReal3TimeI( &
      & file, varname, array, time, quiet, &
      & flag_mpi_split, returned_time, flag_time_exist, err)

      use dc_types, only: DP
      character(*), intent(in):: file, varname
      integer, intent(in):: time
      logical, intent(in), optional:: quiet
                              real, intent(out):: array(:,:,:)
                        
      logical, intent(in), optional:: flag_mpi_split
      real(DP), intent(out), optional:: returned_time
      logical, intent(out), optional:: flag_time_exist
      logical, intent(out), optional:: err
    end subroutine HistoryGetReal3TimeI


    subroutine HistoryGetReal4( &
      & file, varname, array, range, quiet, &
      & flag_mpi_split, returned_time, flag_time_exist, err)

      use dc_types, only: DP
      character(*), intent(in):: file, varname
      character(*), intent(in), optional:: range
      logical, intent(in), optional:: quiet
                              real, intent(out):: array(:,:,:,:)
                        
      logical, intent(in), optional:: flag_mpi_split
      real(DP), intent(out), optional:: returned_time
      logical, intent(out), optional:: flag_time_exist
      logical, intent(out), optional:: err
    end subroutine HistoryGetReal4


    subroutine HistoryGetReal4TimeD( &
      & file, varname, array, time, quiet, &
      & flag_mpi_split, returned_time, flag_time_exist, err)

      use dc_types, only: DP
      character(*), intent(in):: file, varname
      real(DP), intent(in):: time
      logical, intent(in), optional:: quiet
                              real, intent(out):: array(:,:,:,:)
                        
      logical, intent(in), optional:: flag_mpi_split
      real(DP), intent(out), optional:: returned_time
      logical, intent(out), optional:: flag_time_exist
      logical, intent(out), optional:: err
    end subroutine HistoryGetReal4TimeD


    subroutine HistoryGetReal4TimeR( &
      & file, varname, array, time, quiet, &
      & flag_mpi_split, returned_time, flag_time_exist, err)

      use dc_types, only: DP
      character(*), intent(in):: file, varname
      real, intent(in):: time
      logical, intent(in), optional:: quiet
                              real, intent(out):: array(:,:,:,:)
                        
      logical, intent(in), optional:: flag_mpi_split
      real(DP), intent(out), optional:: returned_time
      logical, intent(out), optional:: flag_time_exist
      logical, intent(out), optional:: err
    end subroutine HistoryGetReal4TimeR


    subroutine HistoryGetReal4TimeI( &
      & file, varname, array, time, quiet, &
      & flag_mpi_split, returned_time, flag_time_exist, err)

      use dc_types, only: DP
      character(*), intent(in):: file, varname
      integer, intent(in):: time
      logical, intent(in), optional:: quiet
                              real, intent(out):: array(:,:,:,:)
                        
      logical, intent(in), optional:: flag_mpi_split
      real(DP), intent(out), optional:: returned_time
      logical, intent(out), optional:: flag_time_exist
      logical, intent(out), optional:: err
    end subroutine HistoryGetReal4TimeI


    subroutine HistoryGetReal5( &
      & file, varname, array, range, quiet, &
      & flag_mpi_split, returned_time, flag_time_exist, err)

      use dc_types, only: DP
      character(*), intent(in):: file, varname
      character(*), intent(in), optional:: range
      logical, intent(in), optional:: quiet
                              real, intent(out):: array(:,:,:,:,:)
                        
      logical, intent(in), optional:: flag_mpi_split
      real(DP), intent(out), optional:: returned_time
      logical, intent(out), optional:: flag_time_exist
      logical, intent(out), optional:: err
    end subroutine HistoryGetReal5


    subroutine HistoryGetReal5TimeD( &
      & file, varname, array, time, quiet, &
      & flag_mpi_split, returned_time, flag_time_exist, err)

      use dc_types, only: DP
      character(*), intent(in):: file, varname
      real(DP), intent(in):: time
      logical, intent(in), optional:: quiet
                              real, intent(out):: array(:,:,:,:,:)
                        
      logical, intent(in), optional:: flag_mpi_split
      real(DP), intent(out), optional:: returned_time
      logical, intent(out), optional:: flag_time_exist
      logical, intent(out), optional:: err
    end subroutine HistoryGetReal5TimeD


    subroutine HistoryGetReal5TimeR( &
      & file, varname, array, time, quiet, &
      & flag_mpi_split, returned_time, flag_time_exist, err)

      use dc_types, only: DP
      character(*), intent(in):: file, varname
      real, intent(in):: time
      logical, intent(in), optional:: quiet
                              real, intent(out):: array(:,:,:,:,:)
                        
      logical, intent(in), optional:: flag_mpi_split
      real(DP), intent(out), optional:: returned_time
      logical, intent(out), optional:: flag_time_exist
      logical, intent(out), optional:: err
    end subroutine HistoryGetReal5TimeR


    subroutine HistoryGetReal5TimeI( &
      & file, varname, array, time, quiet, &
      & flag_mpi_split, returned_time, flag_time_exist, err)

      use dc_types, only: DP
      character(*), intent(in):: file, varname
      integer, intent(in):: time
      logical, intent(in), optional:: quiet
                              real, intent(out):: array(:,:,:,:,:)
                        
      logical, intent(in), optional:: flag_mpi_split
      real(DP), intent(out), optional:: returned_time
      logical, intent(out), optional:: flag_time_exist
      logical, intent(out), optional:: err
    end subroutine HistoryGetReal5TimeI


    subroutine HistoryGetReal6( &
      & file, varname, array, range, quiet, &
      & flag_mpi_split, returned_time, flag_time_exist, err)

      use dc_types, only: DP
      character(*), intent(in):: file, varname
      character(*), intent(in), optional:: range
      logical, intent(in), optional:: quiet
                              real, intent(out):: array(:,:,:,:,:,:)
                        
      logical, intent(in), optional:: flag_mpi_split
      real(DP), intent(out), optional:: returned_time
      logical, intent(out), optional:: flag_time_exist
      logical, intent(out), optional:: err
    end subroutine HistoryGetReal6


    subroutine HistoryGetReal6TimeD( &
      & file, varname, array, time, quiet, &
      & flag_mpi_split, returned_time, flag_time_exist, err)

      use dc_types, only: DP
      character(*), intent(in):: file, varname
      real(DP), intent(in):: time
      logical, intent(in), optional:: quiet
                              real, intent(out):: array(:,:,:,:,:,:)
                        
      logical, intent(in), optional:: flag_mpi_split
      real(DP), intent(out), optional:: returned_time
      logical, intent(out), optional:: flag_time_exist
      logical, intent(out), optional:: err
    end subroutine HistoryGetReal6TimeD


    subroutine HistoryGetReal6TimeR( &
      & file, varname, array, time, quiet, &
      & flag_mpi_split, returned_time, flag_time_exist, err)

      use dc_types, only: DP
      character(*), intent(in):: file, varname
      real, intent(in):: time
      logical, intent(in), optional:: quiet
                              real, intent(out):: array(:,:,:,:,:,:)
                        
      logical, intent(in), optional:: flag_mpi_split
      real(DP), intent(out), optional:: returned_time
      logical, intent(out), optional:: flag_time_exist
      logical, intent(out), optional:: err
    end subroutine HistoryGetReal6TimeR


    subroutine HistoryGetReal6TimeI( &
      & file, varname, array, time, quiet, &
      & flag_mpi_split, returned_time, flag_time_exist, err)

      use dc_types, only: DP
      character(*), intent(in):: file, varname
      integer, intent(in):: time
      logical, intent(in), optional:: quiet
                              real, intent(out):: array(:,:,:,:,:,:)
                        
      logical, intent(in), optional:: flag_mpi_split
      real(DP), intent(out), optional:: returned_time
      logical, intent(out), optional:: flag_time_exist
      logical, intent(out), optional:: err
    end subroutine HistoryGetReal6TimeI


    subroutine HistoryGetReal7( &
      & file, varname, array, range, quiet, &
      & flag_mpi_split, returned_time, flag_time_exist, err)

      use dc_types, only: DP
      character(*), intent(in):: file, varname
      character(*), intent(in), optional:: range
      logical, intent(in), optional:: quiet
                              real, intent(out):: array(:,:,:,:,:,:,:)
                        
      logical, intent(in), optional:: flag_mpi_split
      real(DP), intent(out), optional:: returned_time
      logical, intent(out), optional:: flag_time_exist
      logical, intent(out), optional:: err
    end subroutine HistoryGetReal7


    subroutine HistoryGetReal7TimeD( &
      & file, varname, array, time, quiet, &
      & flag_mpi_split, returned_time, flag_time_exist, err)

      use dc_types, only: DP
      character(*), intent(in):: file, varname
      real(DP), intent(in):: time
      logical, intent(in), optional:: quiet
                              real, intent(out):: array(:,:,:,:,:,:,:)
                        
      logical, intent(in), optional:: flag_mpi_split
      real(DP), intent(out), optional:: returned_time
      logical, intent(out), optional:: flag_time_exist
      logical, intent(out), optional:: err
    end subroutine HistoryGetReal7TimeD


    subroutine HistoryGetReal7TimeR( &
      & file, varname, array, time, quiet, &
      & flag_mpi_split, returned_time, flag_time_exist, err)

      use dc_types, only: DP
      character(*), intent(in):: file, varname
      real, intent(in):: time
      logical, intent(in), optional:: quiet
                              real, intent(out):: array(:,:,:,:,:,:,:)
                        
      logical, intent(in), optional:: flag_mpi_split
      real(DP), intent(out), optional:: returned_time
      logical, intent(out), optional:: flag_time_exist
      logical, intent(out), optional:: err
    end subroutine HistoryGetReal7TimeR


    subroutine HistoryGetReal7TimeI( &
      & file, varname, array, time, quiet, &
      & flag_mpi_split, returned_time, flag_time_exist, err)

      use dc_types, only: DP
      character(*), intent(in):: file, varname
      integer, intent(in):: time
      logical, intent(in), optional:: quiet
                              real, intent(out):: array(:,:,:,:,:,:,:)
                        
      logical, intent(in), optional:: flag_mpi_split
      real(DP), intent(out), optional:: returned_time
      logical, intent(out), optional:: flag_time_exist
      logical, intent(out), optional:: err
    end subroutine HistoryGetReal7TimeI


    subroutine HistoryGetInt0( &
      & file, varname, array, range, quiet, &
      & flag_mpi_split, returned_time, flag_time_exist, err)

      use dc_types, only: DP
      character(*), intent(in):: file, varname
      character(*), intent(in), optional:: range
      logical, intent(in), optional:: quiet
                              integer, intent(out):: array
                        
      logical, intent(in), optional:: flag_mpi_split
      real(DP), intent(out), optional:: returned_time
      logical, intent(out), optional:: flag_time_exist
      logical, intent(out), optional:: err
    end subroutine HistoryGetInt0


    subroutine HistoryGetInt0TimeD( &
      & file, varname, array, time, quiet, &
      & flag_mpi_split, returned_time, flag_time_exist, err)

      use dc_types, only: DP
      character(*), intent(in):: file, varname
      real(DP), intent(in):: time
      logical, intent(in), optional:: quiet
                              integer, intent(out):: array
                        
      logical, intent(in), optional:: flag_mpi_split
      real(DP), intent(out), optional:: returned_time
      logical, intent(out), optional:: flag_time_exist
      logical, intent(out), optional:: err
    end subroutine HistoryGetInt0TimeD


    subroutine HistoryGetInt0TimeR( &
      & file, varname, array, time, quiet, &
      & flag_mpi_split, returned_time, flag_time_exist, err)

      use dc_types, only: DP
      character(*), intent(in):: file, varname
      real, intent(in):: time
      logical, intent(in), optional:: quiet
                              integer, intent(out):: array
                        
      logical, intent(in), optional:: flag_mpi_split
      real(DP), intent(out), optional:: returned_time
      logical, intent(out), optional:: flag_time_exist
      logical, intent(out), optional:: err
    end subroutine HistoryGetInt0TimeR


    subroutine HistoryGetInt0TimeI( &
      & file, varname, array, time, quiet, &
      & flag_mpi_split, returned_time, flag_time_exist, err)

      use dc_types, only: DP
      character(*), intent(in):: file, varname
      integer, intent(in):: time
      logical, intent(in), optional:: quiet
                              integer, intent(out):: array
                        
      logical, intent(in), optional:: flag_mpi_split
      real(DP), intent(out), optional:: returned_time
      logical, intent(out), optional:: flag_time_exist
      logical, intent(out), optional:: err
    end subroutine HistoryGetInt0TimeI


    subroutine HistoryGetInt1( &
      & file, varname, array, range, quiet, &
      & flag_mpi_split, returned_time, flag_time_exist, err)

      use dc_types, only: DP
      character(*), intent(in):: file, varname
      character(*), intent(in), optional:: range
      logical, intent(in), optional:: quiet
                              integer, intent(out):: array(:)
                        
      logical, intent(in), optional:: flag_mpi_split
      real(DP), intent(out), optional:: returned_time
      logical, intent(out), optional:: flag_time_exist
      logical, intent(out), optional:: err
    end subroutine HistoryGetInt1


    subroutine HistoryGetInt1TimeD( &
      & file, varname, array, time, quiet, &
      & flag_mpi_split, returned_time, flag_time_exist, err)

      use dc_types, only: DP
      character(*), intent(in):: file, varname
      real(DP), intent(in):: time
      logical, intent(in), optional:: quiet
                              integer, intent(out):: array(:)
                        
      logical, intent(in), optional:: flag_mpi_split
      real(DP), intent(out), optional:: returned_time
      logical, intent(out), optional:: flag_time_exist
      logical, intent(out), optional:: err
    end subroutine HistoryGetInt1TimeD


    subroutine HistoryGetInt1TimeR( &
      & file, varname, array, time, quiet, &
      & flag_mpi_split, returned_time, flag_time_exist, err)

      use dc_types, only: DP
      character(*), intent(in):: file, varname
      real, intent(in):: time
      logical, intent(in), optional:: quiet
                              integer, intent(out):: array(:)
                        
      logical, intent(in), optional:: flag_mpi_split
      real(DP), intent(out), optional:: returned_time
      logical, intent(out), optional:: flag_time_exist
      logical, intent(out), optional:: err
    end subroutine HistoryGetInt1TimeR


    subroutine HistoryGetInt1TimeI( &
      & file, varname, array, time, quiet, &
      & flag_mpi_split, returned_time, flag_time_exist, err)

      use dc_types, only: DP
      character(*), intent(in):: file, varname
      integer, intent(in):: time
      logical, intent(in), optional:: quiet
                              integer, intent(out):: array(:)
                        
      logical, intent(in), optional:: flag_mpi_split
      real(DP), intent(out), optional:: returned_time
      logical, intent(out), optional:: flag_time_exist
      logical, intent(out), optional:: err
    end subroutine HistoryGetInt1TimeI


    subroutine HistoryGetInt2( &
      & file, varname, array, range, quiet, &
      & flag_mpi_split, returned_time, flag_time_exist, err)

      use dc_types, only: DP
      character(*), intent(in):: file, varname
      character(*), intent(in), optional:: range
      logical, intent(in), optional:: quiet
                              integer, intent(out):: array(:,:)
                        
      logical, intent(in), optional:: flag_mpi_split
      real(DP), intent(out), optional:: returned_time
      logical, intent(out), optional:: flag_time_exist
      logical, intent(out), optional:: err
    end subroutine HistoryGetInt2


    subroutine HistoryGetInt2TimeD( &
      & file, varname, array, time, quiet, &
      & flag_mpi_split, returned_time, flag_time_exist, err)

      use dc_types, only: DP
      character(*), intent(in):: file, varname
      real(DP), intent(in):: time
      logical, intent(in), optional:: quiet
                              integer, intent(out):: array(:,:)
                        
      logical, intent(in), optional:: flag_mpi_split
      real(DP), intent(out), optional:: returned_time
      logical, intent(out), optional:: flag_time_exist
      logical, intent(out), optional:: err
    end subroutine HistoryGetInt2TimeD


    subroutine HistoryGetInt2TimeR( &
      & file, varname, array, time, quiet, &
      & flag_mpi_split, returned_time, flag_time_exist, err)

      use dc_types, only: DP
      character(*), intent(in):: file, varname
      real, intent(in):: time
      logical, intent(in), optional:: quiet
                              integer, intent(out):: array(:,:)
                        
      logical, intent(in), optional:: flag_mpi_split
      real(DP), intent(out), optional:: returned_time
      logical, intent(out), optional:: flag_time_exist
      logical, intent(out), optional:: err
    end subroutine HistoryGetInt2TimeR


    subroutine HistoryGetInt2TimeI( &
      & file, varname, array, time, quiet, &
      & flag_mpi_split, returned_time, flag_time_exist, err)

      use dc_types, only: DP
      character(*), intent(in):: file, varname
      integer, intent(in):: time
      logical, intent(in), optional:: quiet
                              integer, intent(out):: array(:,:)
                        
      logical, intent(in), optional:: flag_mpi_split
      real(DP), intent(out), optional:: returned_time
      logical, intent(out), optional:: flag_time_exist
      logical, intent(out), optional:: err
    end subroutine HistoryGetInt2TimeI


    subroutine HistoryGetInt3( &
      & file, varname, array, range, quiet, &
      & flag_mpi_split, returned_time, flag_time_exist, err)

      use dc_types, only: DP
      character(*), intent(in):: file, varname
      character(*), intent(in), optional:: range
      logical, intent(in), optional:: quiet
                              integer, intent(out):: array(:,:,:)
                        
      logical, intent(in), optional:: flag_mpi_split
      real(DP), intent(out), optional:: returned_time
      logical, intent(out), optional:: flag_time_exist
      logical, intent(out), optional:: err
    end subroutine HistoryGetInt3


    subroutine HistoryGetInt3TimeD( &
      & file, varname, array, time, quiet, &
      & flag_mpi_split, returned_time, flag_time_exist, err)

      use dc_types, only: DP
      character(*), intent(in):: file, varname
      real(DP), intent(in):: time
      logical, intent(in), optional:: quiet
                              integer, intent(out):: array(:,:,:)
                        
      logical, intent(in), optional:: flag_mpi_split
      real(DP), intent(out), optional:: returned_time
      logical, intent(out), optional:: flag_time_exist
      logical, intent(out), optional:: err
    end subroutine HistoryGetInt3TimeD


    subroutine HistoryGetInt3TimeR( &
      & file, varname, array, time, quiet, &
      & flag_mpi_split, returned_time, flag_time_exist, err)

      use dc_types, only: DP
      character(*), intent(in):: file, varname
      real, intent(in):: time
      logical, intent(in), optional:: quiet
                              integer, intent(out):: array(:,:,:)
                        
      logical, intent(in), optional:: flag_mpi_split
      real(DP), intent(out), optional:: returned_time
      logical, intent(out), optional:: flag_time_exist
      logical, intent(out), optional:: err
    end subroutine HistoryGetInt3TimeR


    subroutine HistoryGetInt3TimeI( &
      & file, varname, array, time, quiet, &
      & flag_mpi_split, returned_time, flag_time_exist, err)

      use dc_types, only: DP
      character(*), intent(in):: file, varname
      integer, intent(in):: time
      logical, intent(in), optional:: quiet
                              integer, intent(out):: array(:,:,:)
                        
      logical, intent(in), optional:: flag_mpi_split
      real(DP), intent(out), optional:: returned_time
      logical, intent(out), optional:: flag_time_exist
      logical, intent(out), optional:: err
    end subroutine HistoryGetInt3TimeI


    subroutine HistoryGetInt4( &
      & file, varname, array, range, quiet, &
      & flag_mpi_split, returned_time, flag_time_exist, err)

      use dc_types, only: DP
      character(*), intent(in):: file, varname
      character(*), intent(in), optional:: range
      logical, intent(in), optional:: quiet
                              integer, intent(out):: array(:,:,:,:)
                        
      logical, intent(in), optional:: flag_mpi_split
      real(DP), intent(out), optional:: returned_time
      logical, intent(out), optional:: flag_time_exist
      logical, intent(out), optional:: err
    end subroutine HistoryGetInt4


    subroutine HistoryGetInt4TimeD( &
      & file, varname, array, time, quiet, &
      & flag_mpi_split, returned_time, flag_time_exist, err)

      use dc_types, only: DP
      character(*), intent(in):: file, varname
      real(DP), intent(in):: time
      logical, intent(in), optional:: quiet
                              integer, intent(out):: array(:,:,:,:)
                        
      logical, intent(in), optional:: flag_mpi_split
      real(DP), intent(out), optional:: returned_time
      logical, intent(out), optional:: flag_time_exist
      logical, intent(out), optional:: err
    end subroutine HistoryGetInt4TimeD


    subroutine HistoryGetInt4TimeR( &
      & file, varname, array, time, quiet, &
      & flag_mpi_split, returned_time, flag_time_exist, err)

      use dc_types, only: DP
      character(*), intent(in):: file, varname
      real, intent(in):: time
      logical, intent(in), optional:: quiet
                              integer, intent(out):: array(:,:,:,:)
                        
      logical, intent(in), optional:: flag_mpi_split
      real(DP), intent(out), optional:: returned_time
      logical, intent(out), optional:: flag_time_exist
      logical, intent(out), optional:: err
    end subroutine HistoryGetInt4TimeR


    subroutine HistoryGetInt4TimeI( &
      & file, varname, array, time, quiet, &
      & flag_mpi_split, returned_time, flag_time_exist, err)

      use dc_types, only: DP
      character(*), intent(in):: file, varname
      integer, intent(in):: time
      logical, intent(in), optional:: quiet
                              integer, intent(out):: array(:,:,:,:)
                        
      logical, intent(in), optional:: flag_mpi_split
      real(DP), intent(out), optional:: returned_time
      logical, intent(out), optional:: flag_time_exist
      logical, intent(out), optional:: err
    end subroutine HistoryGetInt4TimeI


    subroutine HistoryGetInt5( &
      & file, varname, array, range, quiet, &
      & flag_mpi_split, returned_time, flag_time_exist, err)

      use dc_types, only: DP
      character(*), intent(in):: file, varname
      character(*), intent(in), optional:: range
      logical, intent(in), optional:: quiet
                              integer, intent(out):: array(:,:,:,:,:)
                        
      logical, intent(in), optional:: flag_mpi_split
      real(DP), intent(out), optional:: returned_time
      logical, intent(out), optional:: flag_time_exist
      logical, intent(out), optional:: err
    end subroutine HistoryGetInt5


    subroutine HistoryGetInt5TimeD( &
      & file, varname, array, time, quiet, &
      & flag_mpi_split, returned_time, flag_time_exist, err)

      use dc_types, only: DP
      character(*), intent(in):: file, varname
      real(DP), intent(in):: time
      logical, intent(in), optional:: quiet
                              integer, intent(out):: array(:,:,:,:,:)
                        
      logical, intent(in), optional:: flag_mpi_split
      real(DP), intent(out), optional:: returned_time
      logical, intent(out), optional:: flag_time_exist
      logical, intent(out), optional:: err
    end subroutine HistoryGetInt5TimeD


    subroutine HistoryGetInt5TimeR( &
      & file, varname, array, time, quiet, &
      & flag_mpi_split, returned_time, flag_time_exist, err)

      use dc_types, only: DP
      character(*), intent(in):: file, varname
      real, intent(in):: time
      logical, intent(in), optional:: quiet
                              integer, intent(out):: array(:,:,:,:,:)
                        
      logical, intent(in), optional:: flag_mpi_split
      real(DP), intent(out), optional:: returned_time
      logical, intent(out), optional:: flag_time_exist
      logical, intent(out), optional:: err
    end subroutine HistoryGetInt5TimeR


    subroutine HistoryGetInt5TimeI( &
      & file, varname, array, time, quiet, &
      & flag_mpi_split, returned_time, flag_time_exist, err)

      use dc_types, only: DP
      character(*), intent(in):: file, varname
      integer, intent(in):: time
      logical, intent(in), optional:: quiet
                              integer, intent(out):: array(:,:,:,:,:)
                        
      logical, intent(in), optional:: flag_mpi_split
      real(DP), intent(out), optional:: returned_time
      logical, intent(out), optional:: flag_time_exist
      logical, intent(out), optional:: err
    end subroutine HistoryGetInt5TimeI


    subroutine HistoryGetInt6( &
      & file, varname, array, range, quiet, &
      & flag_mpi_split, returned_time, flag_time_exist, err)

      use dc_types, only: DP
      character(*), intent(in):: file, varname
      character(*), intent(in), optional:: range
      logical, intent(in), optional:: quiet
                              integer, intent(out):: array(:,:,:,:,:,:)
                        
      logical, intent(in), optional:: flag_mpi_split
      real(DP), intent(out), optional:: returned_time
      logical, intent(out), optional:: flag_time_exist
      logical, intent(out), optional:: err
    end subroutine HistoryGetInt6


    subroutine HistoryGetInt6TimeD( &
      & file, varname, array, time, quiet, &
      & flag_mpi_split, returned_time, flag_time_exist, err)

      use dc_types, only: DP
      character(*), intent(in):: file, varname
      real(DP), intent(in):: time
      logical, intent(in), optional:: quiet
                              integer, intent(out):: array(:,:,:,:,:,:)
                        
      logical, intent(in), optional:: flag_mpi_split
      real(DP), intent(out), optional:: returned_time
      logical, intent(out), optional:: flag_time_exist
      logical, intent(out), optional:: err
    end subroutine HistoryGetInt6TimeD


    subroutine HistoryGetInt6TimeR( &
      & file, varname, array, time, quiet, &
      & flag_mpi_split, returned_time, flag_time_exist, err)

      use dc_types, only: DP
      character(*), intent(in):: file, varname
      real, intent(in):: time
      logical, intent(in), optional:: quiet
                              integer, intent(out):: array(:,:,:,:,:,:)
                        
      logical, intent(in), optional:: flag_mpi_split
      real(DP), intent(out), optional:: returned_time
      logical, intent(out), optional:: flag_time_exist
      logical, intent(out), optional:: err
    end subroutine HistoryGetInt6TimeR


    subroutine HistoryGetInt6TimeI( &
      & file, varname, array, time, quiet, &
      & flag_mpi_split, returned_time, flag_time_exist, err)

      use dc_types, only: DP
      character(*), intent(in):: file, varname
      integer, intent(in):: time
      logical, intent(in), optional:: quiet
                              integer, intent(out):: array(:,:,:,:,:,:)
                        
      logical, intent(in), optional:: flag_mpi_split
      real(DP), intent(out), optional:: returned_time
      logical, intent(out), optional:: flag_time_exist
      logical, intent(out), optional:: err
    end subroutine HistoryGetInt6TimeI


    subroutine HistoryGetInt7( &
      & file, varname, array, range, quiet, &
      & flag_mpi_split, returned_time, flag_time_exist, err)

      use dc_types, only: DP
      character(*), intent(in):: file, varname
      character(*), intent(in), optional:: range
      logical, intent(in), optional:: quiet
                              integer, intent(out):: array(:,:,:,:,:,:,:)
                        
      logical, intent(in), optional:: flag_mpi_split
      real(DP), intent(out), optional:: returned_time
      logical, intent(out), optional:: flag_time_exist
      logical, intent(out), optional:: err
    end subroutine HistoryGetInt7


    subroutine HistoryGetInt7TimeD( &
      & file, varname, array, time, quiet, &
      & flag_mpi_split, returned_time, flag_time_exist, err)

      use dc_types, only: DP
      character(*), intent(in):: file, varname
      real(DP), intent(in):: time
      logical, intent(in), optional:: quiet
                              integer, intent(out):: array(:,:,:,:,:,:,:)
                        
      logical, intent(in), optional:: flag_mpi_split
      real(DP), intent(out), optional:: returned_time
      logical, intent(out), optional:: flag_time_exist
      logical, intent(out), optional:: err
    end subroutine HistoryGetInt7TimeD


    subroutine HistoryGetInt7TimeR( &
      & file, varname, array, time, quiet, &
      & flag_mpi_split, returned_time, flag_time_exist, err)

      use dc_types, only: DP
      character(*), intent(in):: file, varname
      real, intent(in):: time
      logical, intent(in), optional:: quiet
                              integer, intent(out):: array(:,:,:,:,:,:,:)
                        
      logical, intent(in), optional:: flag_mpi_split
      real(DP), intent(out), optional:: returned_time
      logical, intent(out), optional:: flag_time_exist
      logical, intent(out), optional:: err
    end subroutine HistoryGetInt7TimeR


    subroutine HistoryGetInt7TimeI( &
      & file, varname, array, time, quiet, &
      & flag_mpi_split, returned_time, flag_time_exist, err)

      use dc_types, only: DP
      character(*), intent(in):: file, varname
      integer, intent(in):: time
      logical, intent(in), optional:: quiet
                              integer, intent(out):: array(:,:,:,:,:,:,:)
                        
      logical, intent(in), optional:: flag_mpi_split
      real(DP), intent(out), optional:: returned_time
      logical, intent(out), optional:: flag_time_exist
      logical, intent(out), optional:: err
    end subroutine HistoryGetInt7TimeI


  end interface


                        !--------------------------
  !  ポインタ配列用
  !  For pointer array
  interface HistoryGetPointer
                      


    subroutine HistoryGetDouble0Pointer( &
      & file, varname, array, range, quiet, &
      & flag_mpi_split, returned_time, flag_time_exist, err)

      use dc_types, only: DP
      character(*), intent(in):: file, varname
      character(*), intent(in), optional:: range
      logical, intent(in), optional:: quiet
                              real(DP), pointer:: array ! (out)
                        
      logical, intent(in), optional:: flag_mpi_split
      real(DP), intent(out), optional:: returned_time
      logical, intent(out), optional:: flag_time_exist
      logical, intent(out), optional:: err
    end subroutine HistoryGetDouble0Pointer


    subroutine HistoryGetDouble0PointerTimeD( &
      & file, varname, array, time, quiet, &
      & flag_mpi_split, returned_time, flag_time_exist, err)

      use dc_types, only: DP
      character(*), intent(in):: file, varname
      real(DP), intent(in):: time
      logical, intent(in), optional:: quiet
                              real(DP), pointer:: array ! (out)
                        
      logical, intent(in), optional:: flag_mpi_split
      real(DP), intent(out), optional:: returned_time
      logical, intent(out), optional:: flag_time_exist
      logical, intent(out), optional:: err
    end subroutine HistoryGetDouble0PointerTimeD


    subroutine HistoryGetDouble0PointerTimeR( &
      & file, varname, array, time, quiet, &
      & flag_mpi_split, returned_time, flag_time_exist, err)

      use dc_types, only: DP
      character(*), intent(in):: file, varname
      real, intent(in):: time
      logical, intent(in), optional:: quiet
                              real(DP), pointer:: array ! (out)
                        
      logical, intent(in), optional:: flag_mpi_split
      real(DP), intent(out), optional:: returned_time
      logical, intent(out), optional:: flag_time_exist
      logical, intent(out), optional:: err
    end subroutine HistoryGetDouble0PointerTimeR


    subroutine HistoryGetDouble0PointerTimeI( &
      & file, varname, array, time, quiet, &
      & flag_mpi_split, returned_time, flag_time_exist, err)

      use dc_types, only: DP
      character(*), intent(in):: file, varname
      integer, intent(in):: time
      logical, intent(in), optional:: quiet
                              real(DP), pointer:: array ! (out)
                        
      logical, intent(in), optional:: flag_mpi_split
      real(DP), intent(out), optional:: returned_time
      logical, intent(out), optional:: flag_time_exist
      logical, intent(out), optional:: err
    end subroutine HistoryGetDouble0PointerTimeI


    subroutine HistoryGetDouble1Pointer( &
      & file, varname, array, range, quiet, &
      & flag_mpi_split, returned_time, flag_time_exist, err)

      use dc_types, only: DP
      character(*), intent(in):: file, varname
      character(*), intent(in), optional:: range
      logical, intent(in), optional:: quiet
                              real(DP), pointer:: array(:) ! (out)
                        
      logical, intent(in), optional:: flag_mpi_split
      real(DP), intent(out), optional:: returned_time
      logical, intent(out), optional:: flag_time_exist
      logical, intent(out), optional:: err
    end subroutine HistoryGetDouble1Pointer


    subroutine HistoryGetDouble1PointerTimeD( &
      & file, varname, array, time, quiet, &
      & flag_mpi_split, returned_time, flag_time_exist, err)

      use dc_types, only: DP
      character(*), intent(in):: file, varname
      real(DP), intent(in):: time
      logical, intent(in), optional:: quiet
                              real(DP), pointer:: array(:) ! (out)
                        
      logical, intent(in), optional:: flag_mpi_split
      real(DP), intent(out), optional:: returned_time
      logical, intent(out), optional:: flag_time_exist
      logical, intent(out), optional:: err
    end subroutine HistoryGetDouble1PointerTimeD


    subroutine HistoryGetDouble1PointerTimeR( &
      & file, varname, array, time, quiet, &
      & flag_mpi_split, returned_time, flag_time_exist, err)

      use dc_types, only: DP
      character(*), intent(in):: file, varname
      real, intent(in):: time
      logical, intent(in), optional:: quiet
                              real(DP), pointer:: array(:) ! (out)
                        
      logical, intent(in), optional:: flag_mpi_split
      real(DP), intent(out), optional:: returned_time
      logical, intent(out), optional:: flag_time_exist
      logical, intent(out), optional:: err
    end subroutine HistoryGetDouble1PointerTimeR


    subroutine HistoryGetDouble1PointerTimeI( &
      & file, varname, array, time, quiet, &
      & flag_mpi_split, returned_time, flag_time_exist, err)

      use dc_types, only: DP
      character(*), intent(in):: file, varname
      integer, intent(in):: time
      logical, intent(in), optional:: quiet
                              real(DP), pointer:: array(:) ! (out)
                        
      logical, intent(in), optional:: flag_mpi_split
      real(DP), intent(out), optional:: returned_time
      logical, intent(out), optional:: flag_time_exist
      logical, intent(out), optional:: err
    end subroutine HistoryGetDouble1PointerTimeI


    subroutine HistoryGetDouble2Pointer( &
      & file, varname, array, range, quiet, &
      & flag_mpi_split, returned_time, flag_time_exist, err)

      use dc_types, only: DP
      character(*), intent(in):: file, varname
      character(*), intent(in), optional:: range
      logical, intent(in), optional:: quiet
                              real(DP), pointer:: array(:,:) ! (out)
                        
      logical, intent(in), optional:: flag_mpi_split
      real(DP), intent(out), optional:: returned_time
      logical, intent(out), optional:: flag_time_exist
      logical, intent(out), optional:: err
    end subroutine HistoryGetDouble2Pointer


    subroutine HistoryGetDouble2PointerTimeD( &
      & file, varname, array, time, quiet, &
      & flag_mpi_split, returned_time, flag_time_exist, err)

      use dc_types, only: DP
      character(*), intent(in):: file, varname
      real(DP), intent(in):: time
      logical, intent(in), optional:: quiet
                              real(DP), pointer:: array(:,:) ! (out)
                        
      logical, intent(in), optional:: flag_mpi_split
      real(DP), intent(out), optional:: returned_time
      logical, intent(out), optional:: flag_time_exist
      logical, intent(out), optional:: err
    end subroutine HistoryGetDouble2PointerTimeD


    subroutine HistoryGetDouble2PointerTimeR( &
      & file, varname, array, time, quiet, &
      & flag_mpi_split, returned_time, flag_time_exist, err)

      use dc_types, only: DP
      character(*), intent(in):: file, varname
      real, intent(in):: time
      logical, intent(in), optional:: quiet
                              real(DP), pointer:: array(:,:) ! (out)
                        
      logical, intent(in), optional:: flag_mpi_split
      real(DP), intent(out), optional:: returned_time
      logical, intent(out), optional:: flag_time_exist
      logical, intent(out), optional:: err
    end subroutine HistoryGetDouble2PointerTimeR


    subroutine HistoryGetDouble2PointerTimeI( &
      & file, varname, array, time, quiet, &
      & flag_mpi_split, returned_time, flag_time_exist, err)

      use dc_types, only: DP
      character(*), intent(in):: file, varname
      integer, intent(in):: time
      logical, intent(in), optional:: quiet
                              real(DP), pointer:: array(:,:) ! (out)
                        
      logical, intent(in), optional:: flag_mpi_split
      real(DP), intent(out), optional:: returned_time
      logical, intent(out), optional:: flag_time_exist
      logical, intent(out), optional:: err
    end subroutine HistoryGetDouble2PointerTimeI


    subroutine HistoryGetDouble3Pointer( &
      & file, varname, array, range, quiet, &
      & flag_mpi_split, returned_time, flag_time_exist, err)

      use dc_types, only: DP
      character(*), intent(in):: file, varname
      character(*), intent(in), optional:: range
      logical, intent(in), optional:: quiet
                              real(DP), pointer:: array(:,:,:) ! (out)
                        
      logical, intent(in), optional:: flag_mpi_split
      real(DP), intent(out), optional:: returned_time
      logical, intent(out), optional:: flag_time_exist
      logical, intent(out), optional:: err
    end subroutine HistoryGetDouble3Pointer


    subroutine HistoryGetDouble3PointerTimeD( &
      & file, varname, array, time, quiet, &
      & flag_mpi_split, returned_time, flag_time_exist, err)

      use dc_types, only: DP
      character(*), intent(in):: file, varname
      real(DP), intent(in):: time
      logical, intent(in), optional:: quiet
                              real(DP), pointer:: array(:,:,:) ! (out)
                        
      logical, intent(in), optional:: flag_mpi_split
      real(DP), intent(out), optional:: returned_time
      logical, intent(out), optional:: flag_time_exist
      logical, intent(out), optional:: err
    end subroutine HistoryGetDouble3PointerTimeD


    subroutine HistoryGetDouble3PointerTimeR( &
      & file, varname, array, time, quiet, &
      & flag_mpi_split, returned_time, flag_time_exist, err)

      use dc_types, only: DP
      character(*), intent(in):: file, varname
      real, intent(in):: time
      logical, intent(in), optional:: quiet
                              real(DP), pointer:: array(:,:,:) ! (out)
                        
      logical, intent(in), optional:: flag_mpi_split
      real(DP), intent(out), optional:: returned_time
      logical, intent(out), optional:: flag_time_exist
      logical, intent(out), optional:: err
    end subroutine HistoryGetDouble3PointerTimeR


    subroutine HistoryGetDouble3PointerTimeI( &
      & file, varname, array, time, quiet, &
      & flag_mpi_split, returned_time, flag_time_exist, err)

      use dc_types, only: DP
      character(*), intent(in):: file, varname
      integer, intent(in):: time
      logical, intent(in), optional:: quiet
                              real(DP), pointer:: array(:,:,:) ! (out)
                        
      logical, intent(in), optional:: flag_mpi_split
      real(DP), intent(out), optional:: returned_time
      logical, intent(out), optional:: flag_time_exist
      logical, intent(out), optional:: err
    end subroutine HistoryGetDouble3PointerTimeI


    subroutine HistoryGetDouble4Pointer( &
      & file, varname, array, range, quiet, &
      & flag_mpi_split, returned_time, flag_time_exist, err)

      use dc_types, only: DP
      character(*), intent(in):: file, varname
      character(*), intent(in), optional:: range
      logical, intent(in), optional:: quiet
                              real(DP), pointer:: array(:,:,:,:) ! (out)
                        
      logical, intent(in), optional:: flag_mpi_split
      real(DP), intent(out), optional:: returned_time
      logical, intent(out), optional:: flag_time_exist
      logical, intent(out), optional:: err
    end subroutine HistoryGetDouble4Pointer


    subroutine HistoryGetDouble4PointerTimeD( &
      & file, varname, array, time, quiet, &
      & flag_mpi_split, returned_time, flag_time_exist, err)

      use dc_types, only: DP
      character(*), intent(in):: file, varname
      real(DP), intent(in):: time
      logical, intent(in), optional:: quiet
                              real(DP), pointer:: array(:,:,:,:) ! (out)
                        
      logical, intent(in), optional:: flag_mpi_split
      real(DP), intent(out), optional:: returned_time
      logical, intent(out), optional:: flag_time_exist
      logical, intent(out), optional:: err
    end subroutine HistoryGetDouble4PointerTimeD


    subroutine HistoryGetDouble4PointerTimeR( &
      & file, varname, array, time, quiet, &
      & flag_mpi_split, returned_time, flag_time_exist, err)

      use dc_types, only: DP
      character(*), intent(in):: file, varname
      real, intent(in):: time
      logical, intent(in), optional:: quiet
                              real(DP), pointer:: array(:,:,:,:) ! (out)
                        
      logical, intent(in), optional:: flag_mpi_split
      real(DP), intent(out), optional:: returned_time
      logical, intent(out), optional:: flag_time_exist
      logical, intent(out), optional:: err
    end subroutine HistoryGetDouble4PointerTimeR


    subroutine HistoryGetDouble4PointerTimeI( &
      & file, varname, array, time, quiet, &
      & flag_mpi_split, returned_time, flag_time_exist, err)

      use dc_types, only: DP
      character(*), intent(in):: file, varname
      integer, intent(in):: time
      logical, intent(in), optional:: quiet
                              real(DP), pointer:: array(:,:,:,:) ! (out)
                        
      logical, intent(in), optional:: flag_mpi_split
      real(DP), intent(out), optional:: returned_time
      logical, intent(out), optional:: flag_time_exist
      logical, intent(out), optional:: err
    end subroutine HistoryGetDouble4PointerTimeI


    subroutine HistoryGetDouble5Pointer( &
      & file, varname, array, range, quiet, &
      & flag_mpi_split, returned_time, flag_time_exist, err)

      use dc_types, only: DP
      character(*), intent(in):: file, varname
      character(*), intent(in), optional:: range
      logical, intent(in), optional:: quiet
                              real(DP), pointer:: array(:,:,:,:,:) ! (out)
                        
      logical, intent(in), optional:: flag_mpi_split
      real(DP), intent(out), optional:: returned_time
      logical, intent(out), optional:: flag_time_exist
      logical, intent(out), optional:: err
    end subroutine HistoryGetDouble5Pointer


    subroutine HistoryGetDouble5PointerTimeD( &
      & file, varname, array, time, quiet, &
      & flag_mpi_split, returned_time, flag_time_exist, err)

      use dc_types, only: DP
      character(*), intent(in):: file, varname
      real(DP), intent(in):: time
      logical, intent(in), optional:: quiet
                              real(DP), pointer:: array(:,:,:,:,:) ! (out)
                        
      logical, intent(in), optional:: flag_mpi_split
      real(DP), intent(out), optional:: returned_time
      logical, intent(out), optional:: flag_time_exist
      logical, intent(out), optional:: err
    end subroutine HistoryGetDouble5PointerTimeD


    subroutine HistoryGetDouble5PointerTimeR( &
      & file, varname, array, time, quiet, &
      & flag_mpi_split, returned_time, flag_time_exist, err)

      use dc_types, only: DP
      character(*), intent(in):: file, varname
      real, intent(in):: time
      logical, intent(in), optional:: quiet
                              real(DP), pointer:: array(:,:,:,:,:) ! (out)
                        
      logical, intent(in), optional:: flag_mpi_split
      real(DP), intent(out), optional:: returned_time
      logical, intent(out), optional:: flag_time_exist
      logical, intent(out), optional:: err
    end subroutine HistoryGetDouble5PointerTimeR


    subroutine HistoryGetDouble5PointerTimeI( &
      & file, varname, array, time, quiet, &
      & flag_mpi_split, returned_time, flag_time_exist, err)

      use dc_types, only: DP
      character(*), intent(in):: file, varname
      integer, intent(in):: time
      logical, intent(in), optional:: quiet
                              real(DP), pointer:: array(:,:,:,:,:) ! (out)
                        
      logical, intent(in), optional:: flag_mpi_split
      real(DP), intent(out), optional:: returned_time
      logical, intent(out), optional:: flag_time_exist
      logical, intent(out), optional:: err
    end subroutine HistoryGetDouble5PointerTimeI


    subroutine HistoryGetDouble6Pointer( &
      & file, varname, array, range, quiet, &
      & flag_mpi_split, returned_time, flag_time_exist, err)

      use dc_types, only: DP
      character(*), intent(in):: file, varname
      character(*), intent(in), optional:: range
      logical, intent(in), optional:: quiet
                              real(DP), pointer:: array(:,:,:,:,:,:) ! (out)
                        
      logical, intent(in), optional:: flag_mpi_split
      real(DP), intent(out), optional:: returned_time
      logical, intent(out), optional:: flag_time_exist
      logical, intent(out), optional:: err
    end subroutine HistoryGetDouble6Pointer


    subroutine HistoryGetDouble6PointerTimeD( &
      & file, varname, array, time, quiet, &
      & flag_mpi_split, returned_time, flag_time_exist, err)

      use dc_types, only: DP
      character(*), intent(in):: file, varname
      real(DP), intent(in):: time
      logical, intent(in), optional:: quiet
                              real(DP), pointer:: array(:,:,:,:,:,:) ! (out)
                        
      logical, intent(in), optional:: flag_mpi_split
      real(DP), intent(out), optional:: returned_time
      logical, intent(out), optional:: flag_time_exist
      logical, intent(out), optional:: err
    end subroutine HistoryGetDouble6PointerTimeD


    subroutine HistoryGetDouble6PointerTimeR( &
      & file, varname, array, time, quiet, &
      & flag_mpi_split, returned_time, flag_time_exist, err)

      use dc_types, only: DP
      character(*), intent(in):: file, varname
      real, intent(in):: time
      logical, intent(in), optional:: quiet
                              real(DP), pointer:: array(:,:,:,:,:,:) ! (out)
                        
      logical, intent(in), optional:: flag_mpi_split
      real(DP), intent(out), optional:: returned_time
      logical, intent(out), optional:: flag_time_exist
      logical, intent(out), optional:: err
    end subroutine HistoryGetDouble6PointerTimeR


    subroutine HistoryGetDouble6PointerTimeI( &
      & file, varname, array, time, quiet, &
      & flag_mpi_split, returned_time, flag_time_exist, err)

      use dc_types, only: DP
      character(*), intent(in):: file, varname
      integer, intent(in):: time
      logical, intent(in), optional:: quiet
                              real(DP), pointer:: array(:,:,:,:,:,:) ! (out)
                        
      logical, intent(in), optional:: flag_mpi_split
      real(DP), intent(out), optional:: returned_time
      logical, intent(out), optional:: flag_time_exist
      logical, intent(out), optional:: err
    end subroutine HistoryGetDouble6PointerTimeI


    subroutine HistoryGetDouble7Pointer( &
      & file, varname, array, range, quiet, &
      & flag_mpi_split, returned_time, flag_time_exist, err)

      use dc_types, only: DP
      character(*), intent(in):: file, varname
      character(*), intent(in), optional:: range
      logical, intent(in), optional:: quiet
                              real(DP), pointer:: array(:,:,:,:,:,:,:) ! (out)
                        
      logical, intent(in), optional:: flag_mpi_split
      real(DP), intent(out), optional:: returned_time
      logical, intent(out), optional:: flag_time_exist
      logical, intent(out), optional:: err
    end subroutine HistoryGetDouble7Pointer


    subroutine HistoryGetDouble7PointerTimeD( &
      & file, varname, array, time, quiet, &
      & flag_mpi_split, returned_time, flag_time_exist, err)

      use dc_types, only: DP
      character(*), intent(in):: file, varname
      real(DP), intent(in):: time
      logical, intent(in), optional:: quiet
                              real(DP), pointer:: array(:,:,:,:,:,:,:) ! (out)
                        
      logical, intent(in), optional:: flag_mpi_split
      real(DP), intent(out), optional:: returned_time
      logical, intent(out), optional:: flag_time_exist
      logical, intent(out), optional:: err
    end subroutine HistoryGetDouble7PointerTimeD


    subroutine HistoryGetDouble7PointerTimeR( &
      & file, varname, array, time, quiet, &
      & flag_mpi_split, returned_time, flag_time_exist, err)

      use dc_types, only: DP
      character(*), intent(in):: file, varname
      real, intent(in):: time
      logical, intent(in), optional:: quiet
                              real(DP), pointer:: array(:,:,:,:,:,:,:) ! (out)
                        
      logical, intent(in), optional:: flag_mpi_split
      real(DP), intent(out), optional:: returned_time
      logical, intent(out), optional:: flag_time_exist
      logical, intent(out), optional:: err
    end subroutine HistoryGetDouble7PointerTimeR


    subroutine HistoryGetDouble7PointerTimeI( &
      & file, varname, array, time, quiet, &
      & flag_mpi_split, returned_time, flag_time_exist, err)

      use dc_types, only: DP
      character(*), intent(in):: file, varname
      integer, intent(in):: time
      logical, intent(in), optional:: quiet
                              real(DP), pointer:: array(:,:,:,:,:,:,:) ! (out)
                        
      logical, intent(in), optional:: flag_mpi_split
      real(DP), intent(out), optional:: returned_time
      logical, intent(out), optional:: flag_time_exist
      logical, intent(out), optional:: err
    end subroutine HistoryGetDouble7PointerTimeI


    subroutine HistoryGetReal0Pointer( &
      & file, varname, array, range, quiet, &
      & flag_mpi_split, returned_time, flag_time_exist, err)

      use dc_types, only: DP
      character(*), intent(in):: file, varname
      character(*), intent(in), optional:: range
      logical, intent(in), optional:: quiet
                              real, pointer:: array ! (out)
                        
      logical, intent(in), optional:: flag_mpi_split
      real(DP), intent(out), optional:: returned_time
      logical, intent(out), optional:: flag_time_exist
      logical, intent(out), optional:: err
    end subroutine HistoryGetReal0Pointer


    subroutine HistoryGetReal0PointerTimeD( &
      & file, varname, array, time, quiet, &
      & flag_mpi_split, returned_time, flag_time_exist, err)

      use dc_types, only: DP
      character(*), intent(in):: file, varname
      real(DP), intent(in):: time
      logical, intent(in), optional:: quiet
                              real, pointer:: array ! (out)
                        
      logical, intent(in), optional:: flag_mpi_split
      real(DP), intent(out), optional:: returned_time
      logical, intent(out), optional:: flag_time_exist
      logical, intent(out), optional:: err
    end subroutine HistoryGetReal0PointerTimeD


    subroutine HistoryGetReal0PointerTimeR( &
      & file, varname, array, time, quiet, &
      & flag_mpi_split, returned_time, flag_time_exist, err)

      use dc_types, only: DP
      character(*), intent(in):: file, varname
      real, intent(in):: time
      logical, intent(in), optional:: quiet
                              real, pointer:: array ! (out)
                        
      logical, intent(in), optional:: flag_mpi_split
      real(DP), intent(out), optional:: returned_time
      logical, intent(out), optional:: flag_time_exist
      logical, intent(out), optional:: err
    end subroutine HistoryGetReal0PointerTimeR


    subroutine HistoryGetReal0PointerTimeI( &
      & file, varname, array, time, quiet, &
      & flag_mpi_split, returned_time, flag_time_exist, err)

      use dc_types, only: DP
      character(*), intent(in):: file, varname
      integer, intent(in):: time
      logical, intent(in), optional:: quiet
                              real, pointer:: array ! (out)
                        
      logical, intent(in), optional:: flag_mpi_split
      real(DP), intent(out), optional:: returned_time
      logical, intent(out), optional:: flag_time_exist
      logical, intent(out), optional:: err
    end subroutine HistoryGetReal0PointerTimeI


    subroutine HistoryGetReal1Pointer( &
      & file, varname, array, range, quiet, &
      & flag_mpi_split, returned_time, flag_time_exist, err)

      use dc_types, only: DP
      character(*), intent(in):: file, varname
      character(*), intent(in), optional:: range
      logical, intent(in), optional:: quiet
                              real, pointer:: array(:) ! (out)
                        
      logical, intent(in), optional:: flag_mpi_split
      real(DP), intent(out), optional:: returned_time
      logical, intent(out), optional:: flag_time_exist
      logical, intent(out), optional:: err
    end subroutine HistoryGetReal1Pointer


    subroutine HistoryGetReal1PointerTimeD( &
      & file, varname, array, time, quiet, &
      & flag_mpi_split, returned_time, flag_time_exist, err)

      use dc_types, only: DP
      character(*), intent(in):: file, varname
      real(DP), intent(in):: time
      logical, intent(in), optional:: quiet
                              real, pointer:: array(:) ! (out)
                        
      logical, intent(in), optional:: flag_mpi_split
      real(DP), intent(out), optional:: returned_time
      logical, intent(out), optional:: flag_time_exist
      logical, intent(out), optional:: err
    end subroutine HistoryGetReal1PointerTimeD


    subroutine HistoryGetReal1PointerTimeR( &
      & file, varname, array, time, quiet, &
      & flag_mpi_split, returned_time, flag_time_exist, err)

      use dc_types, only: DP
      character(*), intent(in):: file, varname
      real, intent(in):: time
      logical, intent(in), optional:: quiet
                              real, pointer:: array(:) ! (out)
                        
      logical, intent(in), optional:: flag_mpi_split
      real(DP), intent(out), optional:: returned_time
      logical, intent(out), optional:: flag_time_exist
      logical, intent(out), optional:: err
    end subroutine HistoryGetReal1PointerTimeR


    subroutine HistoryGetReal1PointerTimeI( &
      & file, varname, array, time, quiet, &
      & flag_mpi_split, returned_time, flag_time_exist, err)

      use dc_types, only: DP
      character(*), intent(in):: file, varname
      integer, intent(in):: time
      logical, intent(in), optional:: quiet
                              real, pointer:: array(:) ! (out)
                        
      logical, intent(in), optional:: flag_mpi_split
      real(DP), intent(out), optional:: returned_time
      logical, intent(out), optional:: flag_time_exist
      logical, intent(out), optional:: err
    end subroutine HistoryGetReal1PointerTimeI


    subroutine HistoryGetReal2Pointer( &
      & file, varname, array, range, quiet, &
      & flag_mpi_split, returned_time, flag_time_exist, err)

      use dc_types, only: DP
      character(*), intent(in):: file, varname
      character(*), intent(in), optional:: range
      logical, intent(in), optional:: quiet
                              real, pointer:: array(:,:) ! (out)
                        
      logical, intent(in), optional:: flag_mpi_split
      real(DP), intent(out), optional:: returned_time
      logical, intent(out), optional:: flag_time_exist
      logical, intent(out), optional:: err
    end subroutine HistoryGetReal2Pointer


    subroutine HistoryGetReal2PointerTimeD( &
      & file, varname, array, time, quiet, &
      & flag_mpi_split, returned_time, flag_time_exist, err)

      use dc_types, only: DP
      character(*), intent(in):: file, varname
      real(DP), intent(in):: time
      logical, intent(in), optional:: quiet
                              real, pointer:: array(:,:) ! (out)
                        
      logical, intent(in), optional:: flag_mpi_split
      real(DP), intent(out), optional:: returned_time
      logical, intent(out), optional:: flag_time_exist
      logical, intent(out), optional:: err
    end subroutine HistoryGetReal2PointerTimeD


    subroutine HistoryGetReal2PointerTimeR( &
      & file, varname, array, time, quiet, &
      & flag_mpi_split, returned_time, flag_time_exist, err)

      use dc_types, only: DP
      character(*), intent(in):: file, varname
      real, intent(in):: time
      logical, intent(in), optional:: quiet
                              real, pointer:: array(:,:) ! (out)
                        
      logical, intent(in), optional:: flag_mpi_split
      real(DP), intent(out), optional:: returned_time
      logical, intent(out), optional:: flag_time_exist
      logical, intent(out), optional:: err
    end subroutine HistoryGetReal2PointerTimeR


    subroutine HistoryGetReal2PointerTimeI( &
      & file, varname, array, time, quiet, &
      & flag_mpi_split, returned_time, flag_time_exist, err)

      use dc_types, only: DP
      character(*), intent(in):: file, varname
      integer, intent(in):: time
      logical, intent(in), optional:: quiet
                              real, pointer:: array(:,:) ! (out)
                        
      logical, intent(in), optional:: flag_mpi_split
      real(DP), intent(out), optional:: returned_time
      logical, intent(out), optional:: flag_time_exist
      logical, intent(out), optional:: err
    end subroutine HistoryGetReal2PointerTimeI


    subroutine HistoryGetReal3Pointer( &
      & file, varname, array, range, quiet, &
      & flag_mpi_split, returned_time, flag_time_exist, err)

      use dc_types, only: DP
      character(*), intent(in):: file, varname
      character(*), intent(in), optional:: range
      logical, intent(in), optional:: quiet
                              real, pointer:: array(:,:,:) ! (out)
                        
      logical, intent(in), optional:: flag_mpi_split
      real(DP), intent(out), optional:: returned_time
      logical, intent(out), optional:: flag_time_exist
      logical, intent(out), optional:: err
    end subroutine HistoryGetReal3Pointer


    subroutine HistoryGetReal3PointerTimeD( &
      & file, varname, array, time, quiet, &
      & flag_mpi_split, returned_time, flag_time_exist, err)

      use dc_types, only: DP
      character(*), intent(in):: file, varname
      real(DP), intent(in):: time
      logical, intent(in), optional:: quiet
                              real, pointer:: array(:,:,:) ! (out)
                        
      logical, intent(in), optional:: flag_mpi_split
      real(DP), intent(out), optional:: returned_time
      logical, intent(out), optional:: flag_time_exist
      logical, intent(out), optional:: err
    end subroutine HistoryGetReal3PointerTimeD


    subroutine HistoryGetReal3PointerTimeR( &
      & file, varname, array, time, quiet, &
      & flag_mpi_split, returned_time, flag_time_exist, err)

      use dc_types, only: DP
      character(*), intent(in):: file, varname
      real, intent(in):: time
      logical, intent(in), optional:: quiet
                              real, pointer:: array(:,:,:) ! (out)
                        
      logical, intent(in), optional:: flag_mpi_split
      real(DP), intent(out), optional:: returned_time
      logical, intent(out), optional:: flag_time_exist
      logical, intent(out), optional:: err
    end subroutine HistoryGetReal3PointerTimeR


    subroutine HistoryGetReal3PointerTimeI( &
      & file, varname, array, time, quiet, &
      & flag_mpi_split, returned_time, flag_time_exist, err)

      use dc_types, only: DP
      character(*), intent(in):: file, varname
      integer, intent(in):: time
      logical, intent(in), optional:: quiet
                              real, pointer:: array(:,:,:) ! (out)
                        
      logical, intent(in), optional:: flag_mpi_split
      real(DP), intent(out), optional:: returned_time
      logical, intent(out), optional:: flag_time_exist
      logical, intent(out), optional:: err
    end subroutine HistoryGetReal3PointerTimeI


    subroutine HistoryGetReal4Pointer( &
      & file, varname, array, range, quiet, &
      & flag_mpi_split, returned_time, flag_time_exist, err)

      use dc_types, only: DP
      character(*), intent(in):: file, varname
      character(*), intent(in), optional:: range
      logical, intent(in), optional:: quiet
                              real, pointer:: array(:,:,:,:) ! (out)
                        
      logical, intent(in), optional:: flag_mpi_split
      real(DP), intent(out), optional:: returned_time
      logical, intent(out), optional:: flag_time_exist
      logical, intent(out), optional:: err
    end subroutine HistoryGetReal4Pointer


    subroutine HistoryGetReal4PointerTimeD( &
      & file, varname, array, time, quiet, &
      & flag_mpi_split, returned_time, flag_time_exist, err)

      use dc_types, only: DP
      character(*), intent(in):: file, varname
      real(DP), intent(in):: time
      logical, intent(in), optional:: quiet
                              real, pointer:: array(:,:,:,:) ! (out)
                        
      logical, intent(in), optional:: flag_mpi_split
      real(DP), intent(out), optional:: returned_time
      logical, intent(out), optional:: flag_time_exist
      logical, intent(out), optional:: err
    end subroutine HistoryGetReal4PointerTimeD


    subroutine HistoryGetReal4PointerTimeR( &
      & file, varname, array, time, quiet, &
      & flag_mpi_split, returned_time, flag_time_exist, err)

      use dc_types, only: DP
      character(*), intent(in):: file, varname
      real, intent(in):: time
      logical, intent(in), optional:: quiet
                              real, pointer:: array(:,:,:,:) ! (out)
                        
      logical, intent(in), optional:: flag_mpi_split
      real(DP), intent(out), optional:: returned_time
      logical, intent(out), optional:: flag_time_exist
      logical, intent(out), optional:: err
    end subroutine HistoryGetReal4PointerTimeR


    subroutine HistoryGetReal4PointerTimeI( &
      & file, varname, array, time, quiet, &
      & flag_mpi_split, returned_time, flag_time_exist, err)

      use dc_types, only: DP
      character(*), intent(in):: file, varname
      integer, intent(in):: time
      logical, intent(in), optional:: quiet
                              real, pointer:: array(:,:,:,:) ! (out)
                        
      logical, intent(in), optional:: flag_mpi_split
      real(DP), intent(out), optional:: returned_time
      logical, intent(out), optional:: flag_time_exist
      logical, intent(out), optional:: err
    end subroutine HistoryGetReal4PointerTimeI


    subroutine HistoryGetReal5Pointer( &
      & file, varname, array, range, quiet, &
      & flag_mpi_split, returned_time, flag_time_exist, err)

      use dc_types, only: DP
      character(*), intent(in):: file, varname
      character(*), intent(in), optional:: range
      logical, intent(in), optional:: quiet
                              real, pointer:: array(:,:,:,:,:) ! (out)
                        
      logical, intent(in), optional:: flag_mpi_split
      real(DP), intent(out), optional:: returned_time
      logical, intent(out), optional:: flag_time_exist
      logical, intent(out), optional:: err
    end subroutine HistoryGetReal5Pointer


    subroutine HistoryGetReal5PointerTimeD( &
      & file, varname, array, time, quiet, &
      & flag_mpi_split, returned_time, flag_time_exist, err)

      use dc_types, only: DP
      character(*), intent(in):: file, varname
      real(DP), intent(in):: time
      logical, intent(in), optional:: quiet
                              real, pointer:: array(:,:,:,:,:) ! (out)
                        
      logical, intent(in), optional:: flag_mpi_split
      real(DP), intent(out), optional:: returned_time
      logical, intent(out), optional:: flag_time_exist
      logical, intent(out), optional:: err
    end subroutine HistoryGetReal5PointerTimeD


    subroutine HistoryGetReal5PointerTimeR( &
      & file, varname, array, time, quiet, &
      & flag_mpi_split, returned_time, flag_time_exist, err)

      use dc_types, only: DP
      character(*), intent(in):: file, varname
      real, intent(in):: time
      logical, intent(in), optional:: quiet
                              real, pointer:: array(:,:,:,:,:) ! (out)
                        
      logical, intent(in), optional:: flag_mpi_split
      real(DP), intent(out), optional:: returned_time
      logical, intent(out), optional:: flag_time_exist
      logical, intent(out), optional:: err
    end subroutine HistoryGetReal5PointerTimeR


    subroutine HistoryGetReal5PointerTimeI( &
      & file, varname, array, time, quiet, &
      & flag_mpi_split, returned_time, flag_time_exist, err)

      use dc_types, only: DP
      character(*), intent(in):: file, varname
      integer, intent(in):: time
      logical, intent(in), optional:: quiet
                              real, pointer:: array(:,:,:,:,:) ! (out)
                        
      logical, intent(in), optional:: flag_mpi_split
      real(DP), intent(out), optional:: returned_time
      logical, intent(out), optional:: flag_time_exist
      logical, intent(out), optional:: err
    end subroutine HistoryGetReal5PointerTimeI


    subroutine HistoryGetReal6Pointer( &
      & file, varname, array, range, quiet, &
      & flag_mpi_split, returned_time, flag_time_exist, err)

      use dc_types, only: DP
      character(*), intent(in):: file, varname
      character(*), intent(in), optional:: range
      logical, intent(in), optional:: quiet
                              real, pointer:: array(:,:,:,:,:,:) ! (out)
                        
      logical, intent(in), optional:: flag_mpi_split
      real(DP), intent(out), optional:: returned_time
      logical, intent(out), optional:: flag_time_exist
      logical, intent(out), optional:: err
    end subroutine HistoryGetReal6Pointer


    subroutine HistoryGetReal6PointerTimeD( &
      & file, varname, array, time, quiet, &
      & flag_mpi_split, returned_time, flag_time_exist, err)

      use dc_types, only: DP
      character(*), intent(in):: file, varname
      real(DP), intent(in):: time
      logical, intent(in), optional:: quiet
                              real, pointer:: array(:,:,:,:,:,:) ! (out)
                        
      logical, intent(in), optional:: flag_mpi_split
      real(DP), intent(out), optional:: returned_time
      logical, intent(out), optional:: flag_time_exist
      logical, intent(out), optional:: err
    end subroutine HistoryGetReal6PointerTimeD


    subroutine HistoryGetReal6PointerTimeR( &
      & file, varname, array, time, quiet, &
      & flag_mpi_split, returned_time, flag_time_exist, err)

      use dc_types, only: DP
      character(*), intent(in):: file, varname
      real, intent(in):: time
      logical, intent(in), optional:: quiet
                              real, pointer:: array(:,:,:,:,:,:) ! (out)
                        
      logical, intent(in), optional:: flag_mpi_split
      real(DP), intent(out), optional:: returned_time
      logical, intent(out), optional:: flag_time_exist
      logical, intent(out), optional:: err
    end subroutine HistoryGetReal6PointerTimeR


    subroutine HistoryGetReal6PointerTimeI( &
      & file, varname, array, time, quiet, &
      & flag_mpi_split, returned_time, flag_time_exist, err)

      use dc_types, only: DP
      character(*), intent(in):: file, varname
      integer, intent(in):: time
      logical, intent(in), optional:: quiet
                              real, pointer:: array(:,:,:,:,:,:) ! (out)
                        
      logical, intent(in), optional:: flag_mpi_split
      real(DP), intent(out), optional:: returned_time
      logical, intent(out), optional:: flag_time_exist
      logical, intent(out), optional:: err
    end subroutine HistoryGetReal6PointerTimeI


    subroutine HistoryGetReal7Pointer( &
      & file, varname, array, range, quiet, &
      & flag_mpi_split, returned_time, flag_time_exist, err)

      use dc_types, only: DP
      character(*), intent(in):: file, varname
      character(*), intent(in), optional:: range
      logical, intent(in), optional:: quiet
                              real, pointer:: array(:,:,:,:,:,:,:) ! (out)
                        
      logical, intent(in), optional:: flag_mpi_split
      real(DP), intent(out), optional:: returned_time
      logical, intent(out), optional:: flag_time_exist
      logical, intent(out), optional:: err
    end subroutine HistoryGetReal7Pointer


    subroutine HistoryGetReal7PointerTimeD( &
      & file, varname, array, time, quiet, &
      & flag_mpi_split, returned_time, flag_time_exist, err)

      use dc_types, only: DP
      character(*), intent(in):: file, varname
      real(DP), intent(in):: time
      logical, intent(in), optional:: quiet
                              real, pointer:: array(:,:,:,:,:,:,:) ! (out)
                        
      logical, intent(in), optional:: flag_mpi_split
      real(DP), intent(out), optional:: returned_time
      logical, intent(out), optional:: flag_time_exist
      logical, intent(out), optional:: err
    end subroutine HistoryGetReal7PointerTimeD


    subroutine HistoryGetReal7PointerTimeR( &
      & file, varname, array, time, quiet, &
      & flag_mpi_split, returned_time, flag_time_exist, err)

      use dc_types, only: DP
      character(*), intent(in):: file, varname
      real, intent(in):: time
      logical, intent(in), optional:: quiet
                              real, pointer:: array(:,:,:,:,:,:,:) ! (out)
                        
      logical, intent(in), optional:: flag_mpi_split
      real(DP), intent(out), optional:: returned_time
      logical, intent(out), optional:: flag_time_exist
      logical, intent(out), optional:: err
    end subroutine HistoryGetReal7PointerTimeR


    subroutine HistoryGetReal7PointerTimeI( &
      & file, varname, array, time, quiet, &
      & flag_mpi_split, returned_time, flag_time_exist, err)

      use dc_types, only: DP
      character(*), intent(in):: file, varname
      integer, intent(in):: time
      logical, intent(in), optional:: quiet
                              real, pointer:: array(:,:,:,:,:,:,:) ! (out)
                        
      logical, intent(in), optional:: flag_mpi_split
      real(DP), intent(out), optional:: returned_time
      logical, intent(out), optional:: flag_time_exist
      logical, intent(out), optional:: err
    end subroutine HistoryGetReal7PointerTimeI


    subroutine HistoryGetInt0Pointer( &
      & file, varname, array, range, quiet, &
      & flag_mpi_split, returned_time, flag_time_exist, err)

      use dc_types, only: DP
      character(*), intent(in):: file, varname
      character(*), intent(in), optional:: range
      logical, intent(in), optional:: quiet
                              integer, pointer:: array ! (out)
                        
      logical, intent(in), optional:: flag_mpi_split
      real(DP), intent(out), optional:: returned_time
      logical, intent(out), optional:: flag_time_exist
      logical, intent(out), optional:: err
    end subroutine HistoryGetInt0Pointer


    subroutine HistoryGetInt0PointerTimeD( &
      & file, varname, array, time, quiet, &
      & flag_mpi_split, returned_time, flag_time_exist, err)

      use dc_types, only: DP
      character(*), intent(in):: file, varname
      real(DP), intent(in):: time
      logical, intent(in), optional:: quiet
                              integer, pointer:: array ! (out)
                        
      logical, intent(in), optional:: flag_mpi_split
      real(DP), intent(out), optional:: returned_time
      logical, intent(out), optional:: flag_time_exist
      logical, intent(out), optional:: err
    end subroutine HistoryGetInt0PointerTimeD


    subroutine HistoryGetInt0PointerTimeR( &
      & file, varname, array, time, quiet, &
      & flag_mpi_split, returned_time, flag_time_exist, err)

      use dc_types, only: DP
      character(*), intent(in):: file, varname
      real, intent(in):: time
      logical, intent(in), optional:: quiet
                              integer, pointer:: array ! (out)
                        
      logical, intent(in), optional:: flag_mpi_split
      real(DP), intent(out), optional:: returned_time
      logical, intent(out), optional:: flag_time_exist
      logical, intent(out), optional:: err
    end subroutine HistoryGetInt0PointerTimeR


    subroutine HistoryGetInt0PointerTimeI( &
      & file, varname, array, time, quiet, &
      & flag_mpi_split, returned_time, flag_time_exist, err)

      use dc_types, only: DP
      character(*), intent(in):: file, varname
      integer, intent(in):: time
      logical, intent(in), optional:: quiet
                              integer, pointer:: array ! (out)
                        
      logical, intent(in), optional:: flag_mpi_split
      real(DP), intent(out), optional:: returned_time
      logical, intent(out), optional:: flag_time_exist
      logical, intent(out), optional:: err
    end subroutine HistoryGetInt0PointerTimeI


    subroutine HistoryGetInt1Pointer( &
      & file, varname, array, range, quiet, &
      & flag_mpi_split, returned_time, flag_time_exist, err)

      use dc_types, only: DP
      character(*), intent(in):: file, varname
      character(*), intent(in), optional:: range
      logical, intent(in), optional:: quiet
                              integer, pointer:: array(:) ! (out)
                        
      logical, intent(in), optional:: flag_mpi_split
      real(DP), intent(out), optional:: returned_time
      logical, intent(out), optional:: flag_time_exist
      logical, intent(out), optional:: err
    end subroutine HistoryGetInt1Pointer


    subroutine HistoryGetInt1PointerTimeD( &
      & file, varname, array, time, quiet, &
      & flag_mpi_split, returned_time, flag_time_exist, err)

      use dc_types, only: DP
      character(*), intent(in):: file, varname
      real(DP), intent(in):: time
      logical, intent(in), optional:: quiet
                              integer, pointer:: array(:) ! (out)
                        
      logical, intent(in), optional:: flag_mpi_split
      real(DP), intent(out), optional:: returned_time
      logical, intent(out), optional:: flag_time_exist
      logical, intent(out), optional:: err
    end subroutine HistoryGetInt1PointerTimeD


    subroutine HistoryGetInt1PointerTimeR( &
      & file, varname, array, time, quiet, &
      & flag_mpi_split, returned_time, flag_time_exist, err)

      use dc_types, only: DP
      character(*), intent(in):: file, varname
      real, intent(in):: time
      logical, intent(in), optional:: quiet
                              integer, pointer:: array(:) ! (out)
                        
      logical, intent(in), optional:: flag_mpi_split
      real(DP), intent(out), optional:: returned_time
      logical, intent(out), optional:: flag_time_exist
      logical, intent(out), optional:: err
    end subroutine HistoryGetInt1PointerTimeR


    subroutine HistoryGetInt1PointerTimeI( &
      & file, varname, array, time, quiet, &
      & flag_mpi_split, returned_time, flag_time_exist, err)

      use dc_types, only: DP
      character(*), intent(in):: file, varname
      integer, intent(in):: time
      logical, intent(in), optional:: quiet
                              integer, pointer:: array(:) ! (out)
                        
      logical, intent(in), optional:: flag_mpi_split
      real(DP), intent(out), optional:: returned_time
      logical, intent(out), optional:: flag_time_exist
      logical, intent(out), optional:: err
    end subroutine HistoryGetInt1PointerTimeI


    subroutine HistoryGetInt2Pointer( &
      & file, varname, array, range, quiet, &
      & flag_mpi_split, returned_time, flag_time_exist, err)

      use dc_types, only: DP
      character(*), intent(in):: file, varname
      character(*), intent(in), optional:: range
      logical, intent(in), optional:: quiet
                              integer, pointer:: array(:,:) ! (out)
                        
      logical, intent(in), optional:: flag_mpi_split
      real(DP), intent(out), optional:: returned_time
      logical, intent(out), optional:: flag_time_exist
      logical, intent(out), optional:: err
    end subroutine HistoryGetInt2Pointer


    subroutine HistoryGetInt2PointerTimeD( &
      & file, varname, array, time, quiet, &
      & flag_mpi_split, returned_time, flag_time_exist, err)

      use dc_types, only: DP
      character(*), intent(in):: file, varname
      real(DP), intent(in):: time
      logical, intent(in), optional:: quiet
                              integer, pointer:: array(:,:) ! (out)
                        
      logical, intent(in), optional:: flag_mpi_split
      real(DP), intent(out), optional:: returned_time
      logical, intent(out), optional:: flag_time_exist
      logical, intent(out), optional:: err
    end subroutine HistoryGetInt2PointerTimeD


    subroutine HistoryGetInt2PointerTimeR( &
      & file, varname, array, time, quiet, &
      & flag_mpi_split, returned_time, flag_time_exist, err)

      use dc_types, only: DP
      character(*), intent(in):: file, varname
      real, intent(in):: time
      logical, intent(in), optional:: quiet
                              integer, pointer:: array(:,:) ! (out)
                        
      logical, intent(in), optional:: flag_mpi_split
      real(DP), intent(out), optional:: returned_time
      logical, intent(out), optional:: flag_time_exist
      logical, intent(out), optional:: err
    end subroutine HistoryGetInt2PointerTimeR


    subroutine HistoryGetInt2PointerTimeI( &
      & file, varname, array, time, quiet, &
      & flag_mpi_split, returned_time, flag_time_exist, err)

      use dc_types, only: DP
      character(*), intent(in):: file, varname
      integer, intent(in):: time
      logical, intent(in), optional:: quiet
                              integer, pointer:: array(:,:) ! (out)
                        
      logical, intent(in), optional:: flag_mpi_split
      real(DP), intent(out), optional:: returned_time
      logical, intent(out), optional:: flag_time_exist
      logical, intent(out), optional:: err
    end subroutine HistoryGetInt2PointerTimeI


    subroutine HistoryGetInt3Pointer( &
      & file, varname, array, range, quiet, &
      & flag_mpi_split, returned_time, flag_time_exist, err)

      use dc_types, only: DP
      character(*), intent(in):: file, varname
      character(*), intent(in), optional:: range
      logical, intent(in), optional:: quiet
                              integer, pointer:: array(:,:,:) ! (out)
                        
      logical, intent(in), optional:: flag_mpi_split
      real(DP), intent(out), optional:: returned_time
      logical, intent(out), optional:: flag_time_exist
      logical, intent(out), optional:: err
    end subroutine HistoryGetInt3Pointer


    subroutine HistoryGetInt3PointerTimeD( &
      & file, varname, array, time, quiet, &
      & flag_mpi_split, returned_time, flag_time_exist, err)

      use dc_types, only: DP
      character(*), intent(in):: file, varname
      real(DP), intent(in):: time
      logical, intent(in), optional:: quiet
                              integer, pointer:: array(:,:,:) ! (out)
                        
      logical, intent(in), optional:: flag_mpi_split
      real(DP), intent(out), optional:: returned_time
      logical, intent(out), optional:: flag_time_exist
      logical, intent(out), optional:: err
    end subroutine HistoryGetInt3PointerTimeD


    subroutine HistoryGetInt3PointerTimeR( &
      & file, varname, array, time, quiet, &
      & flag_mpi_split, returned_time, flag_time_exist, err)

      use dc_types, only: DP
      character(*), intent(in):: file, varname
      real, intent(in):: time
      logical, intent(in), optional:: quiet
                              integer, pointer:: array(:,:,:) ! (out)
                        
      logical, intent(in), optional:: flag_mpi_split
      real(DP), intent(out), optional:: returned_time
      logical, intent(out), optional:: flag_time_exist
      logical, intent(out), optional:: err
    end subroutine HistoryGetInt3PointerTimeR


    subroutine HistoryGetInt3PointerTimeI( &
      & file, varname, array, time, quiet, &
      & flag_mpi_split, returned_time, flag_time_exist, err)

      use dc_types, only: DP
      character(*), intent(in):: file, varname
      integer, intent(in):: time
      logical, intent(in), optional:: quiet
                              integer, pointer:: array(:,:,:) ! (out)
                        
      logical, intent(in), optional:: flag_mpi_split
      real(DP), intent(out), optional:: returned_time
      logical, intent(out), optional:: flag_time_exist
      logical, intent(out), optional:: err
    end subroutine HistoryGetInt3PointerTimeI


    subroutine HistoryGetInt4Pointer( &
      & file, varname, array, range, quiet, &
      & flag_mpi_split, returned_time, flag_time_exist, err)

      use dc_types, only: DP
      character(*), intent(in):: file, varname
      character(*), intent(in), optional:: range
      logical, intent(in), optional:: quiet
                              integer, pointer:: array(:,:,:,:) ! (out)
                        
      logical, intent(in), optional:: flag_mpi_split
      real(DP), intent(out), optional:: returned_time
      logical, intent(out), optional:: flag_time_exist
      logical, intent(out), optional:: err
    end subroutine HistoryGetInt4Pointer


    subroutine HistoryGetInt4PointerTimeD( &
      & file, varname, array, time, quiet, &
      & flag_mpi_split, returned_time, flag_time_exist, err)

      use dc_types, only: DP
      character(*), intent(in):: file, varname
      real(DP), intent(in):: time
      logical, intent(in), optional:: quiet
                              integer, pointer:: array(:,:,:,:) ! (out)
                        
      logical, intent(in), optional:: flag_mpi_split
      real(DP), intent(out), optional:: returned_time
      logical, intent(out), optional:: flag_time_exist
      logical, intent(out), optional:: err
    end subroutine HistoryGetInt4PointerTimeD


    subroutine HistoryGetInt4PointerTimeR( &
      & file, varname, array, time, quiet, &
      & flag_mpi_split, returned_time, flag_time_exist, err)

      use dc_types, only: DP
      character(*), intent(in):: file, varname
      real, intent(in):: time
      logical, intent(in), optional:: quiet
                              integer, pointer:: array(:,:,:,:) ! (out)
                        
      logical, intent(in), optional:: flag_mpi_split
      real(DP), intent(out), optional:: returned_time
      logical, intent(out), optional:: flag_time_exist
      logical, intent(out), optional:: err
    end subroutine HistoryGetInt4PointerTimeR


    subroutine HistoryGetInt4PointerTimeI( &
      & file, varname, array, time, quiet, &
      & flag_mpi_split, returned_time, flag_time_exist, err)

      use dc_types, only: DP
      character(*), intent(in):: file, varname
      integer, intent(in):: time
      logical, intent(in), optional:: quiet
                              integer, pointer:: array(:,:,:,:) ! (out)
                        
      logical, intent(in), optional:: flag_mpi_split
      real(DP), intent(out), optional:: returned_time
      logical, intent(out), optional:: flag_time_exist
      logical, intent(out), optional:: err
    end subroutine HistoryGetInt4PointerTimeI


    subroutine HistoryGetInt5Pointer( &
      & file, varname, array, range, quiet, &
      & flag_mpi_split, returned_time, flag_time_exist, err)

      use dc_types, only: DP
      character(*), intent(in):: file, varname
      character(*), intent(in), optional:: range
      logical, intent(in), optional:: quiet
                              integer, pointer:: array(:,:,:,:,:) ! (out)
                        
      logical, intent(in), optional:: flag_mpi_split
      real(DP), intent(out), optional:: returned_time
      logical, intent(out), optional:: flag_time_exist
      logical, intent(out), optional:: err
    end subroutine HistoryGetInt5Pointer


    subroutine HistoryGetInt5PointerTimeD( &
      & file, varname, array, time, quiet, &
      & flag_mpi_split, returned_time, flag_time_exist, err)

      use dc_types, only: DP
      character(*), intent(in):: file, varname
      real(DP), intent(in):: time
      logical, intent(in), optional:: quiet
                              integer, pointer:: array(:,:,:,:,:) ! (out)
                        
      logical, intent(in), optional:: flag_mpi_split
      real(DP), intent(out), optional:: returned_time
      logical, intent(out), optional:: flag_time_exist
      logical, intent(out), optional:: err
    end subroutine HistoryGetInt5PointerTimeD


    subroutine HistoryGetInt5PointerTimeR( &
      & file, varname, array, time, quiet, &
      & flag_mpi_split, returned_time, flag_time_exist, err)

      use dc_types, only: DP
      character(*), intent(in):: file, varname
      real, intent(in):: time
      logical, intent(in), optional:: quiet
                              integer, pointer:: array(:,:,:,:,:) ! (out)
                        
      logical, intent(in), optional:: flag_mpi_split
      real(DP), intent(out), optional:: returned_time
      logical, intent(out), optional:: flag_time_exist
      logical, intent(out), optional:: err
    end subroutine HistoryGetInt5PointerTimeR


    subroutine HistoryGetInt5PointerTimeI( &
      & file, varname, array, time, quiet, &
      & flag_mpi_split, returned_time, flag_time_exist, err)

      use dc_types, only: DP
      character(*), intent(in):: file, varname
      integer, intent(in):: time
      logical, intent(in), optional:: quiet
                              integer, pointer:: array(:,:,:,:,:) ! (out)
                        
      logical, intent(in), optional:: flag_mpi_split
      real(DP), intent(out), optional:: returned_time
      logical, intent(out), optional:: flag_time_exist
      logical, intent(out), optional:: err
    end subroutine HistoryGetInt5PointerTimeI


    subroutine HistoryGetInt6Pointer( &
      & file, varname, array, range, quiet, &
      & flag_mpi_split, returned_time, flag_time_exist, err)

      use dc_types, only: DP
      character(*), intent(in):: file, varname
      character(*), intent(in), optional:: range
      logical, intent(in), optional:: quiet
                              integer, pointer:: array(:,:,:,:,:,:) ! (out)
                        
      logical, intent(in), optional:: flag_mpi_split
      real(DP), intent(out), optional:: returned_time
      logical, intent(out), optional:: flag_time_exist
      logical, intent(out), optional:: err
    end subroutine HistoryGetInt6Pointer


    subroutine HistoryGetInt6PointerTimeD( &
      & file, varname, array, time, quiet, &
      & flag_mpi_split, returned_time, flag_time_exist, err)

      use dc_types, only: DP
      character(*), intent(in):: file, varname
      real(DP), intent(in):: time
      logical, intent(in), optional:: quiet
                              integer, pointer:: array(:,:,:,:,:,:) ! (out)
                        
      logical, intent(in), optional:: flag_mpi_split
      real(DP), intent(out), optional:: returned_time
      logical, intent(out), optional:: flag_time_exist
      logical, intent(out), optional:: err
    end subroutine HistoryGetInt6PointerTimeD


    subroutine HistoryGetInt6PointerTimeR( &
      & file, varname, array, time, quiet, &
      & flag_mpi_split, returned_time, flag_time_exist, err)

      use dc_types, only: DP
      character(*), intent(in):: file, varname
      real, intent(in):: time
      logical, intent(in), optional:: quiet
                              integer, pointer:: array(:,:,:,:,:,:) ! (out)
                        
      logical, intent(in), optional:: flag_mpi_split
      real(DP), intent(out), optional:: returned_time
      logical, intent(out), optional:: flag_time_exist
      logical, intent(out), optional:: err
    end subroutine HistoryGetInt6PointerTimeR


    subroutine HistoryGetInt6PointerTimeI( &
      & file, varname, array, time, quiet, &
      & flag_mpi_split, returned_time, flag_time_exist, err)

      use dc_types, only: DP
      character(*), intent(in):: file, varname
      integer, intent(in):: time
      logical, intent(in), optional:: quiet
                              integer, pointer:: array(:,:,:,:,:,:) ! (out)
                        
      logical, intent(in), optional:: flag_mpi_split
      real(DP), intent(out), optional:: returned_time
      logical, intent(out), optional:: flag_time_exist
      logical, intent(out), optional:: err
    end subroutine HistoryGetInt6PointerTimeI


    subroutine HistoryGetInt7Pointer( &
      & file, varname, array, range, quiet, &
      & flag_mpi_split, returned_time, flag_time_exist, err)

      use dc_types, only: DP
      character(*), intent(in):: file, varname
      character(*), intent(in), optional:: range
      logical, intent(in), optional:: quiet
                              integer, pointer:: array(:,:,:,:,:,:,:) ! (out)
                        
      logical, intent(in), optional:: flag_mpi_split
      real(DP), intent(out), optional:: returned_time
      logical, intent(out), optional:: flag_time_exist
      logical, intent(out), optional:: err
    end subroutine HistoryGetInt7Pointer


    subroutine HistoryGetInt7PointerTimeD( &
      & file, varname, array, time, quiet, &
      & flag_mpi_split, returned_time, flag_time_exist, err)

      use dc_types, only: DP
      character(*), intent(in):: file, varname
      real(DP), intent(in):: time
      logical, intent(in), optional:: quiet
                              integer, pointer:: array(:,:,:,:,:,:,:) ! (out)
                        
      logical, intent(in), optional:: flag_mpi_split
      real(DP), intent(out), optional:: returned_time
      logical, intent(out), optional:: flag_time_exist
      logical, intent(out), optional:: err
    end subroutine HistoryGetInt7PointerTimeD


    subroutine HistoryGetInt7PointerTimeR( &
      & file, varname, array, time, quiet, &
      & flag_mpi_split, returned_time, flag_time_exist, err)

      use dc_types, only: DP
      character(*), intent(in):: file, varname
      real, intent(in):: time
      logical, intent(in), optional:: quiet
                              integer, pointer:: array(:,:,:,:,:,:,:) ! (out)
                        
      logical, intent(in), optional:: flag_mpi_split
      real(DP), intent(out), optional:: returned_time
      logical, intent(out), optional:: flag_time_exist
      logical, intent(out), optional:: err
    end subroutine HistoryGetInt7PointerTimeR


    subroutine HistoryGetInt7PointerTimeI( &
      & file, varname, array, time, quiet, &
      & flag_mpi_split, returned_time, flag_time_exist, err)

      use dc_types, only: DP
      character(*), intent(in):: file, varname
      integer, intent(in):: time
      logical, intent(in), optional:: quiet
                              integer, pointer:: array(:,:,:,:,:,:,:) ! (out)
                        
      logical, intent(in), optional:: flag_mpi_split
      real(DP), intent(out), optional:: returned_time
      logical, intent(out), optional:: flag_time_exist
      logical, intent(out), optional:: err
    end subroutine HistoryGetInt7PointerTimeI


  end interface


  character(*), parameter:: version = &
    & '$Name:  $' // &
    & '$Id: gtool_history_generic.rb2f90,v 1.9 2010-06-17 00:56:25 morikawa Exp $'

end module gtool_history_generic

!--
! vi:set readonly sw=4 ts=8:
!
!Local Variables:
!mode: f90
!buffer-read-only: t
!End:
!
!++
