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

module gtool_historyauto_generic
  !
  != gtool_historyauto より提供される手続の引用仕様宣言
  != Interface of procedures provided from gtool_historyauto
  !
  ! <b>Note that Japanese and English are described in parallel.</b>
  !
  ! モジュールの概要や使用方法については, gtool_historyauto 
  ! を参照ください. 
  !
  ! See "gtool_historyauto" for brief and usage of this module. 
  !
  !== Procedures list
  !
  ! HistoryAutoCreate          :: 初期化
  ! HistoryAutoAddVariable     :: 変数追加
  ! HistoryAutoPut             :: データ出力
  ! HistoryAutoClose           :: 終了処理
  ! HistoryAutoPutAxis         :: 座標データ追加
  ! HistoryAutoAddWeight       :: 座標重み追加
  ! HistoryAutoAddAttr         :: 属性追加
  ! HistoryAutoAllVarFix       :: 登録変数の確定
  ! HistoryAutoPutAxisMPI      :: 領域全体の座標データ指定 (MPI 使用時のみ有効)
  ! HistoryAutoChkOutput       :: 変数の出力設定の確認
  ! HistoryAutoChkOutputTiming :: 変数の出力設定の確認 (経過時間指定)
  ! ---------------------      :: ---------------------
  ! HistoryAutoCreate          :: Initialization
  ! HistoryAutoAddVariable     :: Addition of variables
  ! HistoryAutoPut             :: Output of data
  ! HistoryAutoClose           :: Termination
  ! HistoryAutoPutAxis         :: Addition of data of axes
  ! HistoryAutoAddWeight       :: Addition of weights of axes
  ! HistoryAutoAddAttr         :: Addition of attributes
  ! HistoryAutoAllVarFix       :: Fix register of variables
  ! HistoryAutoPutAxisMPI      :: Specify data of axes in whole area (This is valid when MPI is used)
  ! HistoryAutoChkOutput       :: Check output setting of a variable
  ! HistoryAutoChkOutputTiming :: Check output setting of a variable (with elapsed time)
  !

  implicit none
  private
  public:: HistoryAutoCreate
  public:: HistoryAutoClose
  public:: HistoryAutoAddWeight
  public:: HistoryAutoPutAxis
  public:: HistoryAutoPutAxisMPI
  public:: HistoryAutoAddVariable
  public:: HistoryAutoPut
  public:: HistoryAutoAddAttr
  public:: HistoryAutoAllVarFix
  public:: HistoryAutoChkOutput
  public:: HistoryAutoChkOutputTiming

  interface HistoryAutoCreate

    subroutine HistoryAutoCreate1( &
      & title, source, institution, &           ! (in)
      & dims, dimsizes, longnames, units, &     ! (in)
      & origin, terminus, &                     ! (in)
      & xtypes, conventions, gt_version, &      ! (in) optional
      & all_output, &                           ! (in) optional
      & file_prefix, &                          ! (in) optional
      & namelist_filename, &                    ! (in) optional
      & interval, &                             ! (in) optional
      & slice_start, slice_end, slice_stride, & ! (in) optional
      & space_average, &                        ! (in) optional
      & time_average, &                         ! (in) optional
      & newfile_interval, &                     ! (in) optional
      & rank, &                                 ! (in) optional
      & origin_date, origin_date_invalid, &     ! (in) optional
      & start_date,  cal, &                     ! (in) optional
      & flag_mpi_gather, flag_mpi_split &       ! (in) optional
      & ) !:doc-priority 40:
      use dc_types, only: DP
      use dc_date_types, only: DC_DATETIME
      use dc_calendar, only: DC_CAL, DC_CAL_DATE

      character(*), intent(in):: title
      character(*), intent(in):: source
      character(*), intent(in):: institution
      character(*), intent(in):: dims(:)
      integer, intent(in):: dimsizes (:)
      character(*), intent(in):: longnames (:)
      character(*), intent(in):: units(:)
      real(DP), intent(in):: origin
      real(DP), intent(in):: terminus
      character(*), intent(in),  optional:: xtypes(:)
      character(*), intent(in), optional:: conventions
      character(*), intent(in), optional:: gt_version
      logical, intent(in), optional:: all_output
      character(*), intent(in), optional:: file_prefix
      character(*), intent(in), optional:: namelist_filename
      real(DP), intent(in), optional:: interval
      integer, intent(in), optional:: slice_start(:)
      integer, intent(in), optional:: slice_end(:)
      integer, intent(in), optional:: slice_stride(:)
      logical, intent(in), optional:: space_average(:)
      logical, intent(in), optional:: time_average
      integer, intent(in), optional:: newfile_interval
      character(*), intent(in), optional:: rank
      type(DC_DATETIME), intent(in), optional:: origin_date
      logical, intent(in), optional:: origin_date_invalid
      type(DC_CAL_DATE), intent(in), optional:: start_date
      type(DC_CAL), intent(in), optional:: cal
      logical, intent(in), optional:: flag_mpi_gather
      logical, intent(in), optional:: flag_mpi_split

    end subroutine HistoryAutoCreate1

    subroutine HistoryAutoCreate2( &
      & title, source, institution, &           ! (in)
      & dims, dimsizes, longnames, units, &     ! (in)
      & xtypes, conventions, gt_version,&       ! (in) optional
      & all_output, &                           ! (in) optional
      & file_prefix, &                          ! (in) optional
      & namelist_filename, &                    ! (in) optional
      & interval, origin, terminus, &           ! (in) optional
      & slice_start, slice_end, slice_stride, & ! (in) optional
      & space_average, &                        ! (in) optional
      & time_average, &                         ! (in) optional
      & newfile_interval, &                     ! (in) optional
      & rank, &                                 ! (in) optional
      & origin_date, origin_date_invalid, &     ! (in) optional
      & start_date, cal, &                      ! (in) optional
      & flag_mpi_gather, flag_mpi_split &       ! (in) optional
      & ) !:doc-priority 60:
      use dc_date_types, only: DC_DATETIME, DC_DIFFTIME
      use dc_calendar, only: DC_CAL, DC_CAL_DATE

      character(*), intent(in):: title
      character(*), intent(in):: source
      character(*), intent(in):: institution
      character(*), intent(in):: dims(:)
      integer, intent(in):: dimsizes (:)
      character(*), intent(in):: longnames (:)
      character(*), intent(in):: units(:)
      character(*), intent(in),  optional:: xtypes(:)
      character(*), intent(in), optional:: conventions
      character(*), intent(in), optional:: gt_version
      logical, intent(in), optional:: all_output
      character(*), intent(in), optional:: file_prefix
      character(*), intent(in), optional:: namelist_filename
      real, intent(in), optional:: interval
      real, intent(in), optional:: origin
      real, intent(in), optional:: terminus
      integer, intent(in), optional:: slice_start(:)
      integer, intent(in), optional:: slice_end(:)
      integer, intent(in), optional:: slice_stride(:)
      logical, intent(in), optional:: space_average(:)
      logical, intent(in), optional:: time_average
      integer, intent(in), optional:: newfile_interval
      character(*), intent(in), optional:: rank
      type(DC_DATETIME), intent(in), optional:: origin_date
      logical, intent(in), optional:: origin_date_invalid
      type(DC_CAL_DATE), intent(in), optional:: start_date
      type(DC_CAL), intent(in), optional:: cal
      logical, intent(in), optional:: flag_mpi_gather
      logical, intent(in), optional:: flag_mpi_split

    end subroutine HistoryAutoCreate2

    subroutine HistoryAutoCreate3( &
      & title, source, institution, &           ! (in)
      & dims, dimsizes, longnames, units, &     ! (in)
      & origin, terminus, &                     ! (in)
      & xtypes, conventions, gt_version, &      ! (in) optional
      & all_output, &                           ! (in) optional
      & file_prefix, &                          ! (in) optional
      & namelist_filename, &                    ! (in) optional
      & interval, &                             ! (in) optional
      & slice_start, slice_end, slice_stride, & ! (in) optional
      & space_average, &                        ! (in) optional
      & time_average, &                         ! (in) optional
      & newfile_interval, &                     ! (in) optional
      & rank, &                                 ! (in) optional
      & origin_date, origin_date_invalid, &     ! (in) optional
      & start_date,  cal, &                     ! (in) optional
      & flag_mpi_gather, flag_mpi_split &       ! (in) optional
      & ) !:doc-priority 70:
      use dc_date_types, only: DC_DATETIME, DC_DIFFTIME
      use dc_calendar, only: DC_CAL, DC_CAL_DATE

      character(*), intent(in):: title
      character(*), intent(in):: source
      character(*), intent(in):: institution
      character(*), intent(in):: dims(:)
      integer, intent(in):: dimsizes (:)
      character(*), intent(in):: longnames (:)
      character(*), intent(in):: units(:)
      type(DC_DIFFTIME), intent(in):: origin
      type(DC_DIFFTIME), intent(in):: terminus
      character(*), intent(in),  optional:: xtypes(:)
      character(*), intent(in), optional:: conventions
      character(*), intent(in), optional:: gt_version
      logical, intent(in), optional:: all_output
      character(*), intent(in), optional:: file_prefix
      character(*), intent(in), optional:: namelist_filename
      type(DC_DIFFTIME), intent(in), optional:: interval
      integer, intent(in), optional:: slice_start(:)
      integer, intent(in), optional:: slice_end(:)
      integer, intent(in), optional:: slice_stride(:)
      logical, intent(in), optional:: space_average(:)
      logical, intent(in), optional:: time_average
      integer, intent(in), optional:: newfile_interval
      character(*), intent(in), optional:: rank
      type(DC_DATETIME), intent(in), optional:: origin_date
      logical, intent(in), optional:: origin_date_invalid
      type(DC_CAL_DATE), intent(in), optional:: start_date
      type(DC_CAL), intent(in), optional:: cal
      logical, intent(in), optional:: flag_mpi_gather
      logical, intent(in), optional:: flag_mpi_split

    end subroutine HistoryAutoCreate3

  end interface

  interface HistoryAutoClose
    subroutine HistoryAutoClose1
    end subroutine HistoryAutoClose1
  end interface

  interface HistoryAutoAddWeight


    subroutine HistoryAutoAddWeightReal( &
      & dim, weight, &  ! (in)
      & units, xtype &  ! (in) optional
      & )
      use dc_types, only: DP

      character(*), intent(in):: dim
      real, intent(in):: weight(:)
      character(*), intent(in), optional:: units
      character(*), intent(in),  optional:: xtype
    end subroutine HistoryAutoAddWeightReal


    subroutine HistoryAutoAddWeightDouble( &
      & dim, weight, &  ! (in)
      & units, xtype &  ! (in) optional
      & )
      use dc_types, only: DP

      character(*), intent(in):: dim
      real(DP), intent(in):: weight(:)
      character(*), intent(in), optional:: units
      character(*), intent(in),  optional:: xtype
    end subroutine HistoryAutoAddWeightDouble


    subroutine HistoryAutoAddWeightInt( &
      & dim, weight, &  ! (in)
      & units, xtype &  ! (in) optional
      & )
      use dc_types, only: DP

      character(*), intent(in):: dim
      integer, intent(in):: weight(:)
      character(*), intent(in), optional:: units
      character(*), intent(in),  optional:: xtype
    end subroutine HistoryAutoAddWeightInt


  end interface

  interface HistoryAutoPutAxis


    subroutine HistoryAutoPutAxisReal( &
      & dim, array &  ! (in)
      & )
      use dc_types, only: DP

      character(*), intent(in):: dim
      real, intent(in):: array(:)
    end subroutine HistoryAutoPutAxisReal


    subroutine HistoryAutoPutAxisDouble( &
      & dim, array &  ! (in)
      & )
      use dc_types, only: DP

      character(*), intent(in):: dim
      real(DP), intent(in):: array(:)
    end subroutine HistoryAutoPutAxisDouble


    subroutine HistoryAutoPutAxisInt( &
      & dim, array &  ! (in)
      & )
      use dc_types, only: DP

      character(*), intent(in):: dim
      integer, intent(in):: array(:)
    end subroutine HistoryAutoPutAxisInt


  end interface

  interface HistoryAutoPutAxisMPI


    subroutine HistoryAutoPutAxisMPIReal( dim, array )
      use dc_types, only: DP

      character(*), intent(in):: dim
      real, intent(in):: array(:)
    end subroutine HistoryAutoPutAxisMPIReal


    subroutine HistoryAutoPutAxisMPIDouble( dim, array )
      use dc_types, only: DP

      character(*), intent(in):: dim
      real(DP), intent(in):: array(:)
    end subroutine HistoryAutoPutAxisMPIDouble


    subroutine HistoryAutoPutAxisMPIInt( dim, array )
      use dc_types, only: DP

      character(*), intent(in):: dim
      integer, intent(in):: array(:)
    end subroutine HistoryAutoPutAxisMPIInt


  end interface

  interface HistoryAutoAddVariable

    subroutine HistoryAutoAddVariable1( &
      & varname, dims, longname, units, &      ! (in)
      & xtype, time_units, time_average, &     ! (in) optional
      & file, &                                ! (in) optional
      & origin, terminus, interval, &           ! (in) optional
      & slice_start, slice_end, slice_stride, & ! (in) optional
      & space_average, &                        ! (in) optional
      & newfile_interval &                      ! (in) optional
      & ) !:doc-priority 40:
      use dc_types, only: DP

      character(*), intent(in):: varname
      character(*), intent(in):: dims(:)
      character(*), intent(in):: longname
      character(*), intent(in):: units
      character(*), intent(in), optional:: xtype
      character(*), intent(in), optional:: time_units
      logical, intent(in), optional:: time_average
      character(*), intent(in), optional:: file
      real(DP), intent(in), optional:: origin
      real(DP), intent(in), optional:: terminus
      real(DP), intent(in), optional:: interval
      integer, intent(in), optional:: slice_start(:)
      integer, intent(in), optional:: slice_end(:)
      integer, intent(in), optional:: slice_stride(:)
      logical, intent(in), optional:: space_average(:)
      integer, intent(in), optional:: newfile_interval

    end subroutine HistoryAutoAddVariable1

    subroutine HistoryAutoAddVariable2( &
      & varname, dims, longname, units, &       ! (in)
      & xtype, time_units, time_average, &      ! (in) optional
      & file, &                                 ! (in) optional
      & origin, terminus, interval, &           ! (in) optional
      & slice_start, slice_end, slice_stride, & ! (in) optional
      & space_average, &                        ! (in) optional
      & newfile_interval &                      ! (in) optional
      & ) !:doc-priority 60:
      use dc_date_types, only: DC_DIFFTIME

      character(*), intent(in):: varname
      character(*), intent(in):: dims(:)
      character(*), intent(in):: longname
      character(*), intent(in):: units
      type(DC_DIFFTIME), intent(in):: origin
      type(DC_DIFFTIME), intent(in):: terminus
      type(DC_DIFFTIME), intent(in), optional:: interval
      character(*), intent(in), optional:: xtype
      character(*), intent(in), optional:: time_units
      logical, intent(in), optional:: time_average
      character(*), intent(in), optional:: file
      integer, intent(in), optional:: slice_start(:)
      integer, intent(in), optional:: slice_end(:)
      integer, intent(in), optional:: slice_stride(:)
      logical, intent(in), optional:: space_average(:)
      integer, intent(in), optional:: newfile_interval

    end subroutine HistoryAutoAddVariable2

  end interface

  interface HistoryAutoAddAttr


    subroutine HistoryAutoAddAttrChar0( &
      & varname, attrname, value &                 ! (in)
      & )
      use dc_types, only: DP

      character(*), intent(in):: varname
      character(*), intent(in):: attrname
      character(*), intent(in):: value
    end subroutine HistoryAutoAddAttrChar0


    subroutine HistoryAutoAddAttrLogical0( &
      & varname, attrname, value &                 ! (in)
      & )
      use dc_types, only: DP

      character(*), intent(in):: varname
      character(*), intent(in):: attrname
      logical, intent(in):: value
    end subroutine HistoryAutoAddAttrLogical0


    subroutine HistoryAutoAddAttrInt0( &
      & varname, attrname, value &                 ! (in)
      & )
      use dc_types, only: DP

      character(*), intent(in):: varname
      character(*), intent(in):: attrname
      integer, intent(in):: value
    end subroutine HistoryAutoAddAttrInt0


    subroutine HistoryAutoAddAttrInt1( &
      & varname, attrname, value &                 ! (in)
      & )
      use dc_types, only: DP

      character(*), intent(in):: varname
      character(*), intent(in):: attrname
      integer, intent(in):: value(:)
    end subroutine HistoryAutoAddAttrInt1


    subroutine HistoryAutoAddAttrReal0( &
      & varname, attrname, value &                 ! (in)
      & )
      use dc_types, only: DP

      character(*), intent(in):: varname
      character(*), intent(in):: attrname
      real, intent(in):: value
    end subroutine HistoryAutoAddAttrReal0


    subroutine HistoryAutoAddAttrReal1( &
      & varname, attrname, value &                 ! (in)
      & )
      use dc_types, only: DP

      character(*), intent(in):: varname
      character(*), intent(in):: attrname
      real, intent(in):: value(:)
    end subroutine HistoryAutoAddAttrReal1


    subroutine HistoryAutoAddAttrDouble0( &
      & varname, attrname, value &                 ! (in)
      & )
      use dc_types, only: DP

      character(*), intent(in):: varname
      character(*), intent(in):: attrname
      real(DP), intent(in):: value
    end subroutine HistoryAutoAddAttrDouble0


    subroutine HistoryAutoAddAttrDouble1( &
      & varname, attrname, value &                 ! (in)
      & )
      use dc_types, only: DP

      character(*), intent(in):: varname
      character(*), intent(in):: attrname
      real(DP), intent(in):: value(:)
    end subroutine HistoryAutoAddAttrDouble1


  end interface

  interface HistoryAutoPut


    subroutine HistoryAutoPutDouble0( &
      & time, varname, value, &  ! (in)
      & err &                                   ! (out) optional
      & )  !:doc-priority 30:   
      use dc_date_types, only: DC_DIFFTIME
      use dc_types, only: DP

      real(DP), intent(in):: time
      character(*), intent(in):: varname
      real(DP), intent(in), target:: value
      logical, intent(out), optional:: err
    end subroutine HistoryAutoPutDouble0


    subroutine HistoryAutoPutDouble1( &
      & time, varname, array, &  ! (in)
      & err &                                   ! (out) optional
      & )  !:doc-priority 40:   
      use dc_date_types, only: DC_DIFFTIME
      use dc_types, only: DP

      real(DP), intent(in):: time
      character(*), intent(in):: varname
      real(DP), intent(in), target:: array(:)
      logical, intent(out), optional:: err
    end subroutine HistoryAutoPutDouble1


    subroutine HistoryAutoPutDouble2( &
      & time, varname, array, &  ! (in)
      & err &                                   ! (out) optional
      & )  !:doc-priority 40:   
      use dc_date_types, only: DC_DIFFTIME
      use dc_types, only: DP

      real(DP), intent(in):: time
      character(*), intent(in):: varname
      real(DP), intent(in), target:: array(:,:)
      logical, intent(out), optional:: err
    end subroutine HistoryAutoPutDouble2


    subroutine HistoryAutoPutDouble3( &
      & time, varname, array, &  ! (in)
      & err &                                   ! (out) optional
      & )  !:doc-priority 40:   
      use dc_date_types, only: DC_DIFFTIME
      use dc_types, only: DP

      real(DP), intent(in):: time
      character(*), intent(in):: varname
      real(DP), intent(in), target:: array(:,:,:)
      logical, intent(out), optional:: err
    end subroutine HistoryAutoPutDouble3


    subroutine HistoryAutoPutDouble4( &
      & time, varname, array, &  ! (in)
      & err &                                   ! (out) optional
      & )  !:doc-priority 40:   
      use dc_date_types, only: DC_DIFFTIME
      use dc_types, only: DP

      real(DP), intent(in):: time
      character(*), intent(in):: varname
      real(DP), intent(in), target:: array(:,:,:,:)
      logical, intent(out), optional:: err
    end subroutine HistoryAutoPutDouble4


    subroutine HistoryAutoPutDouble5( &
      & time, varname, array, &  ! (in)
      & err &                                   ! (out) optional
      & )  !:doc-priority 40:   
      use dc_date_types, only: DC_DIFFTIME
      use dc_types, only: DP

      real(DP), intent(in):: time
      character(*), intent(in):: varname
      real(DP), intent(in), target:: array(:,:,:,:,:)
      logical, intent(out), optional:: err
    end subroutine HistoryAutoPutDouble5


    subroutine HistoryAutoPutDouble6( &
      & time, varname, array, &  ! (in)
      & err &                                   ! (out) optional
      & )  !:doc-priority 40:   
      use dc_date_types, only: DC_DIFFTIME
      use dc_types, only: DP

      real(DP), intent(in):: time
      character(*), intent(in):: varname
      real(DP), intent(in), target:: array(:,:,:,:,:,:)
      logical, intent(out), optional:: err
    end subroutine HistoryAutoPutDouble6


    subroutine HistoryAutoPutDouble7( &
      & time, varname, array, &  ! (in)
      & err &                                   ! (out) optional
      & )  !:doc-priority 40:   
      use dc_date_types, only: DC_DIFFTIME
      use dc_types, only: DP

      real(DP), intent(in):: time
      character(*), intent(in):: varname
      real(DP), intent(in), target:: array(:,:,:,:,:,:,:)
      logical, intent(out), optional:: err
    end subroutine HistoryAutoPutDouble7


    subroutine HistoryAutoPutReal0( &
      & time, varname, value, &  ! (in)
      & err &                                   ! (out) optional
      & )  !:doc-priority 30:   
      use dc_date_types, only: DC_DIFFTIME
      use dc_types, only: DP

      real(DP), intent(in):: time
      character(*), intent(in):: varname
      real, intent(in), target:: value
      logical, intent(out), optional:: err
    end subroutine HistoryAutoPutReal0


    subroutine HistoryAutoPutReal1( &
      & time, varname, array, &  ! (in)
      & err &                                   ! (out) optional
      & )  !:doc-priority 40:   
      use dc_date_types, only: DC_DIFFTIME
      use dc_types, only: DP

      real(DP), intent(in):: time
      character(*), intent(in):: varname
      real, intent(in), target:: array(:)
      logical, intent(out), optional:: err
    end subroutine HistoryAutoPutReal1


    subroutine HistoryAutoPutReal2( &
      & time, varname, array, &  ! (in)
      & err &                                   ! (out) optional
      & )  !:doc-priority 40:   
      use dc_date_types, only: DC_DIFFTIME
      use dc_types, only: DP

      real(DP), intent(in):: time
      character(*), intent(in):: varname
      real, intent(in), target:: array(:,:)
      logical, intent(out), optional:: err
    end subroutine HistoryAutoPutReal2


    subroutine HistoryAutoPutReal3( &
      & time, varname, array, &  ! (in)
      & err &                                   ! (out) optional
      & )  !:doc-priority 40:   
      use dc_date_types, only: DC_DIFFTIME
      use dc_types, only: DP

      real(DP), intent(in):: time
      character(*), intent(in):: varname
      real, intent(in), target:: array(:,:,:)
      logical, intent(out), optional:: err
    end subroutine HistoryAutoPutReal3


    subroutine HistoryAutoPutReal4( &
      & time, varname, array, &  ! (in)
      & err &                                   ! (out) optional
      & )  !:doc-priority 40:   
      use dc_date_types, only: DC_DIFFTIME
      use dc_types, only: DP

      real(DP), intent(in):: time
      character(*), intent(in):: varname
      real, intent(in), target:: array(:,:,:,:)
      logical, intent(out), optional:: err
    end subroutine HistoryAutoPutReal4


    subroutine HistoryAutoPutReal5( &
      & time, varname, array, &  ! (in)
      & err &                                   ! (out) optional
      & )  !:doc-priority 40:   
      use dc_date_types, only: DC_DIFFTIME
      use dc_types, only: DP

      real(DP), intent(in):: time
      character(*), intent(in):: varname
      real, intent(in), target:: array(:,:,:,:,:)
      logical, intent(out), optional:: err
    end subroutine HistoryAutoPutReal5


    subroutine HistoryAutoPutReal6( &
      & time, varname, array, &  ! (in)
      & err &                                   ! (out) optional
      & )  !:doc-priority 40:   
      use dc_date_types, only: DC_DIFFTIME
      use dc_types, only: DP

      real(DP), intent(in):: time
      character(*), intent(in):: varname
      real, intent(in), target:: array(:,:,:,:,:,:)
      logical, intent(out), optional:: err
    end subroutine HistoryAutoPutReal6


    subroutine HistoryAutoPutReal7( &
      & time, varname, array, &  ! (in)
      & err &                                   ! (out) optional
      & )  !:doc-priority 40:   
      use dc_date_types, only: DC_DIFFTIME
      use dc_types, only: DP

      real(DP), intent(in):: time
      character(*), intent(in):: varname
      real, intent(in), target:: array(:,:,:,:,:,:,:)
      logical, intent(out), optional:: err
    end subroutine HistoryAutoPutReal7


    subroutine HistoryAutoPutInt0( &
      & time, varname, value, &  ! (in)
      & err &                                   ! (out) optional
      & )  !:doc-priority 30:   
      use dc_date_types, only: DC_DIFFTIME
      use dc_types, only: DP

      real(DP), intent(in):: time
      character(*), intent(in):: varname
      integer, intent(in), target:: value
      logical, intent(out), optional:: err
    end subroutine HistoryAutoPutInt0


    subroutine HistoryAutoPutInt1( &
      & time, varname, array, &  ! (in)
      & err &                                   ! (out) optional
      & )  !:doc-priority 40:   
      use dc_date_types, only: DC_DIFFTIME
      use dc_types, only: DP

      real(DP), intent(in):: time
      character(*), intent(in):: varname
      integer, intent(in), target:: array(:)
      logical, intent(out), optional:: err
    end subroutine HistoryAutoPutInt1


    subroutine HistoryAutoPutInt2( &
      & time, varname, array, &  ! (in)
      & err &                                   ! (out) optional
      & )  !:doc-priority 40:   
      use dc_date_types, only: DC_DIFFTIME
      use dc_types, only: DP

      real(DP), intent(in):: time
      character(*), intent(in):: varname
      integer, intent(in), target:: array(:,:)
      logical, intent(out), optional:: err
    end subroutine HistoryAutoPutInt2


    subroutine HistoryAutoPutInt3( &
      & time, varname, array, &  ! (in)
      & err &                                   ! (out) optional
      & )  !:doc-priority 40:   
      use dc_date_types, only: DC_DIFFTIME
      use dc_types, only: DP

      real(DP), intent(in):: time
      character(*), intent(in):: varname
      integer, intent(in), target:: array(:,:,:)
      logical, intent(out), optional:: err
    end subroutine HistoryAutoPutInt3


    subroutine HistoryAutoPutInt4( &
      & time, varname, array, &  ! (in)
      & err &                                   ! (out) optional
      & )  !:doc-priority 40:   
      use dc_date_types, only: DC_DIFFTIME
      use dc_types, only: DP

      real(DP), intent(in):: time
      character(*), intent(in):: varname
      integer, intent(in), target:: array(:,:,:,:)
      logical, intent(out), optional:: err
    end subroutine HistoryAutoPutInt4


    subroutine HistoryAutoPutInt5( &
      & time, varname, array, &  ! (in)
      & err &                                   ! (out) optional
      & )  !:doc-priority 40:   
      use dc_date_types, only: DC_DIFFTIME
      use dc_types, only: DP

      real(DP), intent(in):: time
      character(*), intent(in):: varname
      integer, intent(in), target:: array(:,:,:,:,:)
      logical, intent(out), optional:: err
    end subroutine HistoryAutoPutInt5


    subroutine HistoryAutoPutInt6( &
      & time, varname, array, &  ! (in)
      & err &                                   ! (out) optional
      & )  !:doc-priority 40:   
      use dc_date_types, only: DC_DIFFTIME
      use dc_types, only: DP

      real(DP), intent(in):: time
      character(*), intent(in):: varname
      integer, intent(in), target:: array(:,:,:,:,:,:)
      logical, intent(out), optional:: err
    end subroutine HistoryAutoPutInt6


    subroutine HistoryAutoPutInt7( &
      & time, varname, array, &  ! (in)
      & err &                                   ! (out) optional
      & )  !:doc-priority 40:   
      use dc_date_types, only: DC_DIFFTIME
      use dc_types, only: DP

      real(DP), intent(in):: time
      character(*), intent(in):: varname
      integer, intent(in), target:: array(:,:,:,:,:,:,:)
      logical, intent(out), optional:: err
    end subroutine HistoryAutoPutInt7


    subroutine HistoryAutoPutOld1Double0( &
      & time, varname, value, &  ! (in)
      & err &                                   ! (out) optional
      & )  !:doc-priority 60:
      use dc_date_types, only: DC_DIFFTIME
      use dc_types, only: DP

      type(DC_DIFFTIME), intent(in):: time
      character(*), intent(in):: varname
      real(DP), intent(in), target:: value
      logical, intent(out), optional:: err
    end subroutine HistoryAutoPutOld1Double0


    subroutine HistoryAutoPutOld1Double1( &
      & time, varname, array, &  ! (in)
      & err &                                   ! (out) optional
      & )  !:doc-priority 60:
      use dc_date_types, only: DC_DIFFTIME
      use dc_types, only: DP

      type(DC_DIFFTIME), intent(in):: time
      character(*), intent(in):: varname
      real(DP), intent(in), target:: array(:)
      logical, intent(out), optional:: err
    end subroutine HistoryAutoPutOld1Double1


    subroutine HistoryAutoPutOld1Double2( &
      & time, varname, array, &  ! (in)
      & err &                                   ! (out) optional
      & )  !:doc-priority 60:
      use dc_date_types, only: DC_DIFFTIME
      use dc_types, only: DP

      type(DC_DIFFTIME), intent(in):: time
      character(*), intent(in):: varname
      real(DP), intent(in), target:: array(:,:)
      logical, intent(out), optional:: err
    end subroutine HistoryAutoPutOld1Double2


    subroutine HistoryAutoPutOld1Double3( &
      & time, varname, array, &  ! (in)
      & err &                                   ! (out) optional
      & )  !:doc-priority 60:
      use dc_date_types, only: DC_DIFFTIME
      use dc_types, only: DP

      type(DC_DIFFTIME), intent(in):: time
      character(*), intent(in):: varname
      real(DP), intent(in), target:: array(:,:,:)
      logical, intent(out), optional:: err
    end subroutine HistoryAutoPutOld1Double3


    subroutine HistoryAutoPutOld1Double4( &
      & time, varname, array, &  ! (in)
      & err &                                   ! (out) optional
      & )  !:doc-priority 60:
      use dc_date_types, only: DC_DIFFTIME
      use dc_types, only: DP

      type(DC_DIFFTIME), intent(in):: time
      character(*), intent(in):: varname
      real(DP), intent(in), target:: array(:,:,:,:)
      logical, intent(out), optional:: err
    end subroutine HistoryAutoPutOld1Double4


    subroutine HistoryAutoPutOld1Double5( &
      & time, varname, array, &  ! (in)
      & err &                                   ! (out) optional
      & )  !:doc-priority 60:
      use dc_date_types, only: DC_DIFFTIME
      use dc_types, only: DP

      type(DC_DIFFTIME), intent(in):: time
      character(*), intent(in):: varname
      real(DP), intent(in), target:: array(:,:,:,:,:)
      logical, intent(out), optional:: err
    end subroutine HistoryAutoPutOld1Double5


    subroutine HistoryAutoPutOld1Double6( &
      & time, varname, array, &  ! (in)
      & err &                                   ! (out) optional
      & )  !:doc-priority 60:
      use dc_date_types, only: DC_DIFFTIME
      use dc_types, only: DP

      type(DC_DIFFTIME), intent(in):: time
      character(*), intent(in):: varname
      real(DP), intent(in), target:: array(:,:,:,:,:,:)
      logical, intent(out), optional:: err
    end subroutine HistoryAutoPutOld1Double6


    subroutine HistoryAutoPutOld1Double7( &
      & time, varname, array, &  ! (in)
      & err &                                   ! (out) optional
      & )  !:doc-priority 60:
      use dc_date_types, only: DC_DIFFTIME
      use dc_types, only: DP

      type(DC_DIFFTIME), intent(in):: time
      character(*), intent(in):: varname
      real(DP), intent(in), target:: array(:,:,:,:,:,:,:)
      logical, intent(out), optional:: err
    end subroutine HistoryAutoPutOld1Double7


    subroutine HistoryAutoPutOld1Real0( &
      & time, varname, value, &  ! (in)
      & err &                                   ! (out) optional
      & )  !:doc-priority 60:
      use dc_date_types, only: DC_DIFFTIME
      use dc_types, only: DP

      type(DC_DIFFTIME), intent(in):: time
      character(*), intent(in):: varname
      real, intent(in), target:: value
      logical, intent(out), optional:: err
    end subroutine HistoryAutoPutOld1Real0


    subroutine HistoryAutoPutOld1Real1( &
      & time, varname, array, &  ! (in)
      & err &                                   ! (out) optional
      & )  !:doc-priority 60:
      use dc_date_types, only: DC_DIFFTIME
      use dc_types, only: DP

      type(DC_DIFFTIME), intent(in):: time
      character(*), intent(in):: varname
      real, intent(in), target:: array(:)
      logical, intent(out), optional:: err
    end subroutine HistoryAutoPutOld1Real1


    subroutine HistoryAutoPutOld1Real2( &
      & time, varname, array, &  ! (in)
      & err &                                   ! (out) optional
      & )  !:doc-priority 60:
      use dc_date_types, only: DC_DIFFTIME
      use dc_types, only: DP

      type(DC_DIFFTIME), intent(in):: time
      character(*), intent(in):: varname
      real, intent(in), target:: array(:,:)
      logical, intent(out), optional:: err
    end subroutine HistoryAutoPutOld1Real2


    subroutine HistoryAutoPutOld1Real3( &
      & time, varname, array, &  ! (in)
      & err &                                   ! (out) optional
      & )  !:doc-priority 60:
      use dc_date_types, only: DC_DIFFTIME
      use dc_types, only: DP

      type(DC_DIFFTIME), intent(in):: time
      character(*), intent(in):: varname
      real, intent(in), target:: array(:,:,:)
      logical, intent(out), optional:: err
    end subroutine HistoryAutoPutOld1Real3


    subroutine HistoryAutoPutOld1Real4( &
      & time, varname, array, &  ! (in)
      & err &                                   ! (out) optional
      & )  !:doc-priority 60:
      use dc_date_types, only: DC_DIFFTIME
      use dc_types, only: DP

      type(DC_DIFFTIME), intent(in):: time
      character(*), intent(in):: varname
      real, intent(in), target:: array(:,:,:,:)
      logical, intent(out), optional:: err
    end subroutine HistoryAutoPutOld1Real4


    subroutine HistoryAutoPutOld1Real5( &
      & time, varname, array, &  ! (in)
      & err &                                   ! (out) optional
      & )  !:doc-priority 60:
      use dc_date_types, only: DC_DIFFTIME
      use dc_types, only: DP

      type(DC_DIFFTIME), intent(in):: time
      character(*), intent(in):: varname
      real, intent(in), target:: array(:,:,:,:,:)
      logical, intent(out), optional:: err
    end subroutine HistoryAutoPutOld1Real5


    subroutine HistoryAutoPutOld1Real6( &
      & time, varname, array, &  ! (in)
      & err &                                   ! (out) optional
      & )  !:doc-priority 60:
      use dc_date_types, only: DC_DIFFTIME
      use dc_types, only: DP

      type(DC_DIFFTIME), intent(in):: time
      character(*), intent(in):: varname
      real, intent(in), target:: array(:,:,:,:,:,:)
      logical, intent(out), optional:: err
    end subroutine HistoryAutoPutOld1Real6


    subroutine HistoryAutoPutOld1Real7( &
      & time, varname, array, &  ! (in)
      & err &                                   ! (out) optional
      & )  !:doc-priority 60:
      use dc_date_types, only: DC_DIFFTIME
      use dc_types, only: DP

      type(DC_DIFFTIME), intent(in):: time
      character(*), intent(in):: varname
      real, intent(in), target:: array(:,:,:,:,:,:,:)
      logical, intent(out), optional:: err
    end subroutine HistoryAutoPutOld1Real7


    subroutine HistoryAutoPutOld1Int0( &
      & time, varname, value, &  ! (in)
      & err &                                   ! (out) optional
      & )  !:doc-priority 60:
      use dc_date_types, only: DC_DIFFTIME
      use dc_types, only: DP

      type(DC_DIFFTIME), intent(in):: time
      character(*), intent(in):: varname
      integer, intent(in), target:: value
      logical, intent(out), optional:: err
    end subroutine HistoryAutoPutOld1Int0


    subroutine HistoryAutoPutOld1Int1( &
      & time, varname, array, &  ! (in)
      & err &                                   ! (out) optional
      & )  !:doc-priority 60:
      use dc_date_types, only: DC_DIFFTIME
      use dc_types, only: DP

      type(DC_DIFFTIME), intent(in):: time
      character(*), intent(in):: varname
      integer, intent(in), target:: array(:)
      logical, intent(out), optional:: err
    end subroutine HistoryAutoPutOld1Int1


    subroutine HistoryAutoPutOld1Int2( &
      & time, varname, array, &  ! (in)
      & err &                                   ! (out) optional
      & )  !:doc-priority 60:
      use dc_date_types, only: DC_DIFFTIME
      use dc_types, only: DP

      type(DC_DIFFTIME), intent(in):: time
      character(*), intent(in):: varname
      integer, intent(in), target:: array(:,:)
      logical, intent(out), optional:: err
    end subroutine HistoryAutoPutOld1Int2


    subroutine HistoryAutoPutOld1Int3( &
      & time, varname, array, &  ! (in)
      & err &                                   ! (out) optional
      & )  !:doc-priority 60:
      use dc_date_types, only: DC_DIFFTIME
      use dc_types, only: DP

      type(DC_DIFFTIME), intent(in):: time
      character(*), intent(in):: varname
      integer, intent(in), target:: array(:,:,:)
      logical, intent(out), optional:: err
    end subroutine HistoryAutoPutOld1Int3


    subroutine HistoryAutoPutOld1Int4( &
      & time, varname, array, &  ! (in)
      & err &                                   ! (out) optional
      & )  !:doc-priority 60:
      use dc_date_types, only: DC_DIFFTIME
      use dc_types, only: DP

      type(DC_DIFFTIME), intent(in):: time
      character(*), intent(in):: varname
      integer, intent(in), target:: array(:,:,:,:)
      logical, intent(out), optional:: err
    end subroutine HistoryAutoPutOld1Int4


    subroutine HistoryAutoPutOld1Int5( &
      & time, varname, array, &  ! (in)
      & err &                                   ! (out) optional
      & )  !:doc-priority 60:
      use dc_date_types, only: DC_DIFFTIME
      use dc_types, only: DP

      type(DC_DIFFTIME), intent(in):: time
      character(*), intent(in):: varname
      integer, intent(in), target:: array(:,:,:,:,:)
      logical, intent(out), optional:: err
    end subroutine HistoryAutoPutOld1Int5


    subroutine HistoryAutoPutOld1Int6( &
      & time, varname, array, &  ! (in)
      & err &                                   ! (out) optional
      & )  !:doc-priority 60:
      use dc_date_types, only: DC_DIFFTIME
      use dc_types, only: DP

      type(DC_DIFFTIME), intent(in):: time
      character(*), intent(in):: varname
      integer, intent(in), target:: array(:,:,:,:,:,:)
      logical, intent(out), optional:: err
    end subroutine HistoryAutoPutOld1Int6


    subroutine HistoryAutoPutOld1Int7( &
      & time, varname, array, &  ! (in)
      & err &                                   ! (out) optional
      & )  !:doc-priority 60:
      use dc_date_types, only: DC_DIFFTIME
      use dc_types, only: DP

      type(DC_DIFFTIME), intent(in):: time
      character(*), intent(in):: varname
      integer, intent(in), target:: array(:,:,:,:,:,:,:)
      logical, intent(out), optional:: err
    end subroutine HistoryAutoPutOld1Int7


  end interface

  interface HistoryAutoAllVarFix
    subroutine HistoryAutoAllVarFix
    end subroutine HistoryAutoAllVarFix
  end interface

  interface HistoryAutoChkOutput
    logical function HistoryAutoChkOutput( varname ) result(result)
      character(*), intent(in):: varname
    end function HistoryAutoChkOutput
  end interface

  interface HistoryAutoChkOutputTiming
    logical function HistoryAutoChkOutputTiming( time, varname ) result(result)
      use dc_types, only: DP
      real(DP), intent(in):: time
      character(*), intent(in):: varname
    end function HistoryAutoChkOutputTiming
  end interface

end module gtool_historyauto_generic

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