!--
! *** Caution!! ***
! 
! This file is generated from "historyget.rb2f90" by Ruby 1.8.2.
! Please do not edit this file directly.
!
! [JAPANESE]
!
! ※※※ 注意!!! ※※※
!
! このファイルは "historyget.rb2f90" から Ruby 1.8.2
! によって自動生成されたファイルです.
! このファイルを直接編集しませんようお願い致します.
!
!
!++
!
!== Input gtool4 netCDF data
!
! Authors::   Yasuhiro MORIKAWA
! Version::   $Id: historyget.f90,v 1.2 2006/06/16 01:26:40 morikawa Exp $
! Tag Name::  $Name: gt4f90io-20061009 $
! Copyright:: Copyright (C) GFD Dennou Club, 2006. All rights reserved.
! License::   See COPYRIGHT[link:../../COPYRIGHT]
!
! 以下のサブルーチン、関数は gt4_history から gt4_history#HistoryGet
! もしくは gt4_history#HistoryGetPointer として提供されます。


subroutine HistoryGetDoubleEx(file, varname, array, range)
  !
  ! 入力用内部サブルーチン (Double の固定長配列用).
  ! *file* にファイル名を, *varname* に変数名を与える.
  ! 外部には提供されず, その他の外部に提供される入力用
  ! サブルーチンが内部的に呼び出すことを想定している.
  ! *array* には 1 次元配列を与える.
  ! *range* には gtool4 のコンマ記法を与えることで,
  ! 入力先のデータの一部を切り出して入力を行うことが
  ! 可能である. なお, range に数値のみが代入される場合,
  ! それは時刻の次元 (正確には netCDF の無制限次元) の値として
  ! 受け取られる.
  !
  use gtdata_types, only: GT_VARIABLE
  use gtdata_generic, only: Open, Inquire, Close, Get
  use dc_string, only: toChar, Split, JoinChar, StoA
  use dc_url, only: GT_ATMARK, GT_COMMA, GT_EQUAL, UrlSplit, UrlMerge
  use dc_present, only: present_select, present_and_not_empty
  use regex,      only: match
  use dc_types, only: DP, STRING
  use dc_message, only: MessageNotify
  use dc_trace, only: Beginsub, Endsub, DbgMessage
  character(*), intent(in):: file    ! ファイル名
  character(*), intent(in):: varname ! 変数名
  character(*), intent(in), optional:: range 
                                     ! スライス用オプション.
                                     ! gtool4 変数のコンマ記法で記述
                                     ! {(例: time=100.0,x=10:20,y=30.5)}
  real(DP), intent(out):: array(*) ! データ

  type(GT_VARIABLE)             :: var
  character(STRING)             :: url, actual_url
  integer:: domain   ! 変数の入出力領域の大きさ
                           ! (= 変数が依存する各次元サイズの積)
  character(*), parameter :: subname = "HistoryGetDoubleEx"
  interface
    subroutine lookup_growable_url(file, varname, url, range, err)
      character(*), intent(in) :: file           ! ファイル名
      character(*), intent(in) :: varname        ! 変数名
      character(*), intent(out) :: url           ! gtool変数化した文字列
      character(*), intent(in), optional:: range ! 範囲限定や一点切り出し指定
      logical, intent(out), optional :: err      ! エラーのフラグ
    end subroutine lookup_growable_url
  end interface
  interface
    subroutine actual_iorange_dump(url, actual_url, err)
      character(*), intent(in) :: url            ! 変数 URL
      character(*), intent(out), optional :: actual_url
                                                 ! 正確な入出力範囲指定
      logical, intent(out), optional :: err      ! エラーのフラグ
    end subroutine actual_iorange_dump
  end interface
continue
  call BeginSub(subname, 'file=%c varname=%c range=%c', &
    & c1=trim(file), c2=trim(varname), &
    & c3=trim(present_select('', 'no-range', range)))

  call lookup_growable_url(file, varname, url, range)
  ! いよいよデータ取得
  call Open(var, url)
  call Inquire(var=var, size=domain)
  call Get(var, array, domain)
  call Close(var)
  call actual_iorange_dump(url, actual_url)
  call MessageNotify('M', subname, 'Input %c', c1=trim(actual_url))
  call EndSub(subname)
end subroutine HistoryGetDoubleEx


subroutine HistoryGetRealEx(file, varname, array, range)
  !
  ! 入力用内部サブルーチン (Real の固定長配列用).
  ! *file* にファイル名を, *varname* に変数名を与える.
  ! 外部には提供されず, その他の外部に提供される入力用
  ! サブルーチンが内部的に呼び出すことを想定している.
  ! *array* には 1 次元配列を与える.
  ! *range* には gtool4 のコンマ記法を与えることで,
  ! 入力先のデータの一部を切り出して入力を行うことが
  ! 可能である. なお, range に数値のみが代入される場合,
  ! それは時刻の次元 (正確には netCDF の無制限次元) の値として
  ! 受け取られる.
  !
  use gtdata_types, only: GT_VARIABLE
  use gtdata_generic, only: Open, Inquire, Close, Get
  use dc_string, only: toChar, Split, JoinChar, StoA
  use dc_url, only: GT_ATMARK, GT_COMMA, GT_EQUAL, UrlSplit, UrlMerge
  use dc_present, only: present_select, present_and_not_empty
  use regex,      only: match
  use dc_types, only: DP, STRING
  use dc_message, only: MessageNotify
  use dc_trace, only: Beginsub, Endsub, DbgMessage
  character(*), intent(in):: file    ! ファイル名
  character(*), intent(in):: varname ! 変数名
  character(*), intent(in), optional:: range 
                                     ! スライス用オプション.
                                     ! gtool4 変数のコンマ記法で記述
                                     ! {(例: time=100.0,x=10:20,y=30.5)}
  real, intent(out):: array(*) ! データ

  type(GT_VARIABLE)             :: var
  character(STRING)             :: url, actual_url
  integer:: domain   ! 変数の入出力領域の大きさ
                           ! (= 変数が依存する各次元サイズの積)
  character(*), parameter :: subname = "HistoryGetRealEx"
  interface
    subroutine lookup_growable_url(file, varname, url, range, err)
      character(*), intent(in) :: file           ! ファイル名
      character(*), intent(in) :: varname        ! 変数名
      character(*), intent(out) :: url           ! gtool変数化した文字列
      character(*), intent(in), optional:: range ! 範囲限定や一点切り出し指定
      logical, intent(out), optional :: err      ! エラーのフラグ
    end subroutine lookup_growable_url
  end interface
  interface
    subroutine actual_iorange_dump(url, actual_url, err)
      character(*), intent(in) :: url            ! 変数 URL
      character(*), intent(out), optional :: actual_url
                                                 ! 正確な入出力範囲指定
      logical, intent(out), optional :: err      ! エラーのフラグ
    end subroutine actual_iorange_dump
  end interface
continue
  call BeginSub(subname, 'file=%c varname=%c range=%c', &
    & c1=trim(file), c2=trim(varname), &
    & c3=trim(present_select('', 'no-range', range)))

  call lookup_growable_url(file, varname, url, range)
  ! いよいよデータ取得
  call Open(var, url)
  call Inquire(var=var, size=domain)
  call Get(var, array, domain)
  call Close(var)
  call actual_iorange_dump(url, actual_url)
  call MessageNotify('M', subname, 'Input %c', c1=trim(actual_url))
  call EndSub(subname)
end subroutine HistoryGetRealEx


subroutine HistoryGetDouble0(file, varname, array, range)
  !
                      !
  !== データ入力 (固定長配列用)
  !
  ! 既存の gtool4 データ内の変数のデータを取得します。
  !
  ! ポインタの配列へデータを入力を行う場合は、
  ! HistoryGetPointer を利用してください。
  !
  ! デフォルトでは、gtool4 データ内の変数データのうち、
  ! 最も新しい時刻のデータを入力します。その他の時刻データを
  ! 入力したい場合には、下記の *range* オプションを利用してください。
  !
  ! *range* には gtool4 のコンマ記法
  ! ({gtool4 netCDF 規約}[link:../xref.htm#label-6] 参照) 
  ! を与えることで,
  ! 入力先のデータの一部を切り出して入力を行うことが可能です。
  !
  ! *HistoryGet* は複数のサブルーチンの総称名です。*array* には
  ! 0 〜 7 次元のデータを与えることが可能です。
  ! 下記のサブルーチンを参照ください。
  !
                    
  !
  use dc_string, only: toChar
  use dc_present, only: present_select, present_and_not_empty
  use dc_types, only: DP, STRING
  use dc_trace, only: Beginsub, Endsub, DbgMessage
  character(*), intent(in):: file
                                                          ! 取得するデータが格納された
                                      ! netCDF ファイル名
                                      ! 
                    
  character(*), intent(in):: varname
                                                          ! 取得しようとするデータの変数名
                                      !
                                      ! ここで指定する変数名は、 *file*
                                      ! で指定されるファイル内に含
                                      ! まれていなければなりません。
                                      ! 
                    
  character(*), intent(in), optional:: range
                                                          ! gtool4 のコンマ記法による
                                      ! データの切り出し指定
                                      !
                                      ! 詳しくは
                                      ! {gtool4 netCDF 規約}[link:../xref.htm#label-6]
                                      ! の「5.4 コンマ記法」を参照して
                                      ! ください。
                                      ! 
                                      ! 数値のみが与えられる場合
                                      ! (※ 引数の型は常に文字型です。
                                      ! すなわち
                                      ! "<b><tt>10.0</tt></b>"
                                      ! のような文字列が与えられた場合
                                      ! を指します)、それは時刻の値
                                      ! として受け取られます。
                                      ! この場合、"<b><tt>^</tt></b>" を
                                      ! 先頭に付加することで、
                                      ! 時間のステップ数で指定する
                                      ! ことも可能です。 (例えば
                                      ! "<b><tt>^10</tt></b>"ならば
                                      ! 10 ステップ目のデータを取得します)。
                                      ! 
                    
  real(DP), intent(out) :: array
                                                          ! 取得するデータを格納する配列
                                      !
                                      ! 型は単精度実数型か倍精度実数型
                                      ! かのどちらかです。
                                      ! 取得するデータの空間次元の
                                      ! サイズと配列のサイズとが一
                                      ! 致している必要があります。
                                      ! *varname* のデータ型と *array*
                                      ! の型が異なる場合は、自動的
                                      ! に *array* の型に変換されます。
                                      ! 
                    
  real(DP) :: array_tmp(1)
  character(*), parameter :: subname = "HistoryGetDouble0"
  interface
    subroutine HistoryGetDoubleEx(file, varname, array, range)
      use dc_types, only: DP
      character(*), intent(in):: file    ! ファイル名
      character(*), intent(in):: varname ! 変数名
      character(*), intent(in), optional:: range  
      real(DP), intent(out):: array(*) ! データ
    end subroutine HistoryGetDoubleEx
  end interface
continue
  call BeginSub(subname, 'file=%c varname=%c range=%c', &
    & c1=trim(file), c2=trim(varname), &
    & c3=trim(present_select('', 'no-range', range)))
  if (present_and_not_empty(range)) then
    call HistoryGetDoubleEx(file=file, varname=varname, &
      & array=array_tmp, range=range)
  else
    call HistoryGetDoubleEx(file=file, varname=varname, array=array_tmp)
  end if
  array = array_tmp(1)
  call EndSub(subname)
end subroutine HistoryGetDouble0


subroutine HistoryGetReal0(file, varname, array, range)
  !
                    
  !
  use dc_string, only: toChar
  use dc_present, only: present_select, present_and_not_empty
  use dc_types, only: DP, STRING
  use dc_trace, only: Beginsub, Endsub, DbgMessage
  character(*), intent(in):: file
                    
  character(*), intent(in):: varname
                    
  character(*), intent(in), optional:: range
                    
  real, intent(out) :: array
                    
  real :: array_tmp(1)
  character(*), parameter :: subname = "HistoryGetReal0"
  interface
    subroutine HistoryGetRealEx(file, varname, array, range)
      use dc_types, only: DP
      character(*), intent(in):: file    ! ファイル名
      character(*), intent(in):: varname ! 変数名
      character(*), intent(in), optional:: range  
      real, intent(out):: array(*) ! データ
    end subroutine HistoryGetRealEx
  end interface
continue
  call BeginSub(subname, 'file=%c varname=%c range=%c', &
    & c1=trim(file), c2=trim(varname), &
    & c3=trim(present_select('', 'no-range', range)))
  if (present_and_not_empty(range)) then
    call HistoryGetRealEx(file=file, varname=varname, &
      & array=array_tmp, range=range)
  else
    call HistoryGetRealEx(file=file, varname=varname, array=array_tmp)
  end if
  array = array_tmp(1)
  call EndSub(subname)
end subroutine HistoryGetReal0


subroutine HistoryGetDouble1(file, varname, array, range)
  !
  ! Double 型固定配列用 1 次元配列用データ入力サブルーチン
  !
  !--
  ! file にファイル名を, varname に変数名を与える.
  ! array には 1 次元配列を与える.
  ! range には gtool4 のコンマ記法を与えることで,
  ! 入力先のデータの一部を切り出して入力を行うことが
  ! 可能である. なお, range に数値のみが代入される場合,
  ! それは時刻の次元 (正確には netCDF の無制限次元) の値として
  ! 受け取られる.
  !++
  use dc_string, only: toChar
  use dc_present,only: present_select, present_and_not_empty
  use dc_types, only: DP, STRING
  use dc_trace, only: Beginsub, Endsub, DbgMessage
  character(*), intent(in):: file
  character(*), intent(in):: varname
  character(*), intent(in), optional:: range
  real(DP), intent(out) :: array(:)
  character(*), parameter :: subname = "HistoryGetDouble1"
  interface
    subroutine HistoryGetDoubleEx(file, varname, array, range)
      use dc_types, only: DP
      character(*), intent(in):: file    ! ファイル名
      character(*), intent(in):: varname ! 変数名
      character(*), intent(in), optional:: range  
      real(DP), intent(out):: array(*) ! データ
    end subroutine HistoryGetDoubleEx
  end interface
continue
  call BeginSub(subname, 'file=%c varname=%c range=%c', &
    & c1=trim(file), c2=trim(varname), &
    & c3=trim(present_select('', 'no-range', range)))
  if (present_and_not_empty(range)) then
    call HistoryGetDoubleEx(file=file, varname=varname, &
      & array=array, range=range)
  else
    call HistoryGetDoubleEx(file=file, varname=varname, array=array)
  endif
  call EndSub(subname)
end subroutine HistoryGetDouble1


subroutine HistoryGetDouble2(file, varname, array, range)
  !
  ! Double 型固定配列用 2 次元配列用データ入力サブルーチン
  !
  !--
  ! file にファイル名を, varname に変数名を与える.
  ! array には 2 次元配列を与える.
  ! range には gtool4 のコンマ記法を与えることで,
  ! 入力先のデータの一部を切り出して入力を行うことが
  ! 可能である. なお, range に数値のみが代入される場合,
  ! それは時刻の次元 (正確には netCDF の無制限次元) の値として
  ! 受け取られる.
  !++
  use dc_string, only: toChar
  use dc_present,only: present_select, present_and_not_empty
  use dc_types, only: DP, STRING
  use dc_trace, only: Beginsub, Endsub, DbgMessage
  character(*), intent(in):: file
  character(*), intent(in):: varname
  character(*), intent(in), optional:: range
  real(DP), intent(out) :: array(:,:)
  character(*), parameter :: subname = "HistoryGetDouble2"
  interface
    subroutine HistoryGetDoubleEx(file, varname, array, range)
      use dc_types, only: DP
      character(*), intent(in):: file    ! ファイル名
      character(*), intent(in):: varname ! 変数名
      character(*), intent(in), optional:: range  
      real(DP), intent(out):: array(*) ! データ
    end subroutine HistoryGetDoubleEx
  end interface
continue
  call BeginSub(subname, 'file=%c varname=%c range=%c', &
    & c1=trim(file), c2=trim(varname), &
    & c3=trim(present_select('', 'no-range', range)))
  if (present_and_not_empty(range)) then
    call HistoryGetDoubleEx(file=file, varname=varname, &
      & array=array, range=range)
  else
    call HistoryGetDoubleEx(file=file, varname=varname, array=array)
  endif
  call EndSub(subname)
end subroutine HistoryGetDouble2


subroutine HistoryGetDouble3(file, varname, array, range)
  !
  ! Double 型固定配列用 3 次元配列用データ入力サブルーチン
  !
  !--
  ! file にファイル名を, varname に変数名を与える.
  ! array には 3 次元配列を与える.
  ! range には gtool4 のコンマ記法を与えることで,
  ! 入力先のデータの一部を切り出して入力を行うことが
  ! 可能である. なお, range に数値のみが代入される場合,
  ! それは時刻の次元 (正確には netCDF の無制限次元) の値として
  ! 受け取られる.
  !++
  use dc_string, only: toChar
  use dc_present,only: present_select, present_and_not_empty
  use dc_types, only: DP, STRING
  use dc_trace, only: Beginsub, Endsub, DbgMessage
  character(*), intent(in):: file
  character(*), intent(in):: varname
  character(*), intent(in), optional:: range
  real(DP), intent(out) :: array(:,:,:)
  character(*), parameter :: subname = "HistoryGetDouble3"
  interface
    subroutine HistoryGetDoubleEx(file, varname, array, range)
      use dc_types, only: DP
      character(*), intent(in):: file    ! ファイル名
      character(*), intent(in):: varname ! 変数名
      character(*), intent(in), optional:: range  
      real(DP), intent(out):: array(*) ! データ
    end subroutine HistoryGetDoubleEx
  end interface
continue
  call BeginSub(subname, 'file=%c varname=%c range=%c', &
    & c1=trim(file), c2=trim(varname), &
    & c3=trim(present_select('', 'no-range', range)))
  if (present_and_not_empty(range)) then
    call HistoryGetDoubleEx(file=file, varname=varname, &
      & array=array, range=range)
  else
    call HistoryGetDoubleEx(file=file, varname=varname, array=array)
  endif
  call EndSub(subname)
end subroutine HistoryGetDouble3


subroutine HistoryGetDouble4(file, varname, array, range)
  !
  ! Double 型固定配列用 4 次元配列用データ入力サブルーチン
  !
  !--
  ! file にファイル名を, varname に変数名を与える.
  ! array には 4 次元配列を与える.
  ! range には gtool4 のコンマ記法を与えることで,
  ! 入力先のデータの一部を切り出して入力を行うことが
  ! 可能である. なお, range に数値のみが代入される場合,
  ! それは時刻の次元 (正確には netCDF の無制限次元) の値として
  ! 受け取られる.
  !++
  use dc_string, only: toChar
  use dc_present,only: present_select, present_and_not_empty
  use dc_types, only: DP, STRING
  use dc_trace, only: Beginsub, Endsub, DbgMessage
  character(*), intent(in):: file
  character(*), intent(in):: varname
  character(*), intent(in), optional:: range
  real(DP), intent(out) :: array(:,:,:,:)
  character(*), parameter :: subname = "HistoryGetDouble4"
  interface
    subroutine HistoryGetDoubleEx(file, varname, array, range)
      use dc_types, only: DP
      character(*), intent(in):: file    ! ファイル名
      character(*), intent(in):: varname ! 変数名
      character(*), intent(in), optional:: range  
      real(DP), intent(out):: array(*) ! データ
    end subroutine HistoryGetDoubleEx
  end interface
continue
  call BeginSub(subname, 'file=%c varname=%c range=%c', &
    & c1=trim(file), c2=trim(varname), &
    & c3=trim(present_select('', 'no-range', range)))
  if (present_and_not_empty(range)) then
    call HistoryGetDoubleEx(file=file, varname=varname, &
      & array=array, range=range)
  else
    call HistoryGetDoubleEx(file=file, varname=varname, array=array)
  endif
  call EndSub(subname)
end subroutine HistoryGetDouble4


subroutine HistoryGetDouble5(file, varname, array, range)
  !
  ! Double 型固定配列用 5 次元配列用データ入力サブルーチン
  !
  !--
  ! file にファイル名を, varname に変数名を与える.
  ! array には 5 次元配列を与える.
  ! range には gtool4 のコンマ記法を与えることで,
  ! 入力先のデータの一部を切り出して入力を行うことが
  ! 可能である. なお, range に数値のみが代入される場合,
  ! それは時刻の次元 (正確には netCDF の無制限次元) の値として
  ! 受け取られる.
  !++
  use dc_string, only: toChar
  use dc_present,only: present_select, present_and_not_empty
  use dc_types, only: DP, STRING
  use dc_trace, only: Beginsub, Endsub, DbgMessage
  character(*), intent(in):: file
  character(*), intent(in):: varname
  character(*), intent(in), optional:: range
  real(DP), intent(out) :: array(:,:,:,:,:)
  character(*), parameter :: subname = "HistoryGetDouble5"
  interface
    subroutine HistoryGetDoubleEx(file, varname, array, range)
      use dc_types, only: DP
      character(*), intent(in):: file    ! ファイル名
      character(*), intent(in):: varname ! 変数名
      character(*), intent(in), optional:: range  
      real(DP), intent(out):: array(*) ! データ
    end subroutine HistoryGetDoubleEx
  end interface
continue
  call BeginSub(subname, 'file=%c varname=%c range=%c', &
    & c1=trim(file), c2=trim(varname), &
    & c3=trim(present_select('', 'no-range', range)))
  if (present_and_not_empty(range)) then
    call HistoryGetDoubleEx(file=file, varname=varname, &
      & array=array, range=range)
  else
    call HistoryGetDoubleEx(file=file, varname=varname, array=array)
  endif
  call EndSub(subname)
end subroutine HistoryGetDouble5


subroutine HistoryGetDouble6(file, varname, array, range)
  !
  ! Double 型固定配列用 6 次元配列用データ入力サブルーチン
  !
  !--
  ! file にファイル名を, varname に変数名を与える.
  ! array には 6 次元配列を与える.
  ! range には gtool4 のコンマ記法を与えることで,
  ! 入力先のデータの一部を切り出して入力を行うことが
  ! 可能である. なお, range に数値のみが代入される場合,
  ! それは時刻の次元 (正確には netCDF の無制限次元) の値として
  ! 受け取られる.
  !++
  use dc_string, only: toChar
  use dc_present,only: present_select, present_and_not_empty
  use dc_types, only: DP, STRING
  use dc_trace, only: Beginsub, Endsub, DbgMessage
  character(*), intent(in):: file
  character(*), intent(in):: varname
  character(*), intent(in), optional:: range
  real(DP), intent(out) :: array(:,:,:,:,:,:)
  character(*), parameter :: subname = "HistoryGetDouble6"
  interface
    subroutine HistoryGetDoubleEx(file, varname, array, range)
      use dc_types, only: DP
      character(*), intent(in):: file    ! ファイル名
      character(*), intent(in):: varname ! 変数名
      character(*), intent(in), optional:: range  
      real(DP), intent(out):: array(*) ! データ
    end subroutine HistoryGetDoubleEx
  end interface
continue
  call BeginSub(subname, 'file=%c varname=%c range=%c', &
    & c1=trim(file), c2=trim(varname), &
    & c3=trim(present_select('', 'no-range', range)))
  if (present_and_not_empty(range)) then
    call HistoryGetDoubleEx(file=file, varname=varname, &
      & array=array, range=range)
  else
    call HistoryGetDoubleEx(file=file, varname=varname, array=array)
  endif
  call EndSub(subname)
end subroutine HistoryGetDouble6


subroutine HistoryGetDouble7(file, varname, array, range)
  !
  ! Double 型固定配列用 7 次元配列用データ入力サブルーチン
  !
  !--
  ! file にファイル名を, varname に変数名を与える.
  ! array には 7 次元配列を与える.
  ! range には gtool4 のコンマ記法を与えることで,
  ! 入力先のデータの一部を切り出して入力を行うことが
  ! 可能である. なお, range に数値のみが代入される場合,
  ! それは時刻の次元 (正確には netCDF の無制限次元) の値として
  ! 受け取られる.
  !++
  use dc_string, only: toChar
  use dc_present,only: present_select, present_and_not_empty
  use dc_types, only: DP, STRING
  use dc_trace, only: Beginsub, Endsub, DbgMessage
  character(*), intent(in):: file
  character(*), intent(in):: varname
  character(*), intent(in), optional:: range
  real(DP), intent(out) :: array(:,:,:,:,:,:,:)
  character(*), parameter :: subname = "HistoryGetDouble7"
  interface
    subroutine HistoryGetDoubleEx(file, varname, array, range)
      use dc_types, only: DP
      character(*), intent(in):: file    ! ファイル名
      character(*), intent(in):: varname ! 変数名
      character(*), intent(in), optional:: range  
      real(DP), intent(out):: array(*) ! データ
    end subroutine HistoryGetDoubleEx
  end interface
continue
  call BeginSub(subname, 'file=%c varname=%c range=%c', &
    & c1=trim(file), c2=trim(varname), &
    & c3=trim(present_select('', 'no-range', range)))
  if (present_and_not_empty(range)) then
    call HistoryGetDoubleEx(file=file, varname=varname, &
      & array=array, range=range)
  else
    call HistoryGetDoubleEx(file=file, varname=varname, array=array)
  endif
  call EndSub(subname)
end subroutine HistoryGetDouble7


subroutine HistoryGetReal1(file, varname, array, range)
  !
  ! Real 型固定配列用 1 次元配列用データ入力サブルーチン
  !
  !--
  ! file にファイル名を, varname に変数名を与える.
  ! array には 1 次元配列を与える.
  ! range には gtool4 のコンマ記法を与えることで,
  ! 入力先のデータの一部を切り出して入力を行うことが
  ! 可能である. なお, range に数値のみが代入される場合,
  ! それは時刻の次元 (正確には netCDF の無制限次元) の値として
  ! 受け取られる.
  !++
  use dc_string, only: toChar
  use dc_present,only: present_select, present_and_not_empty
  use dc_types, only: DP, STRING
  use dc_trace, only: Beginsub, Endsub, DbgMessage
  character(*), intent(in):: file
  character(*), intent(in):: varname
  character(*), intent(in), optional:: range
  real, intent(out) :: array(:)
  character(*), parameter :: subname = "HistoryGetReal1"
  interface
    subroutine HistoryGetRealEx(file, varname, array, range)
      use dc_types, only: DP
      character(*), intent(in):: file    ! ファイル名
      character(*), intent(in):: varname ! 変数名
      character(*), intent(in), optional:: range  
      real, intent(out):: array(*) ! データ
    end subroutine HistoryGetRealEx
  end interface
continue
  call BeginSub(subname, 'file=%c varname=%c range=%c', &
    & c1=trim(file), c2=trim(varname), &
    & c3=trim(present_select('', 'no-range', range)))
  if (present_and_not_empty(range)) then
    call HistoryGetRealEx(file=file, varname=varname, &
      & array=array, range=range)
  else
    call HistoryGetRealEx(file=file, varname=varname, array=array)
  endif
  call EndSub(subname)
end subroutine HistoryGetReal1


subroutine HistoryGetReal2(file, varname, array, range)
  !
  ! Real 型固定配列用 2 次元配列用データ入力サブルーチン
  !
  !--
  ! file にファイル名を, varname に変数名を与える.
  ! array には 2 次元配列を与える.
  ! range には gtool4 のコンマ記法を与えることで,
  ! 入力先のデータの一部を切り出して入力を行うことが
  ! 可能である. なお, range に数値のみが代入される場合,
  ! それは時刻の次元 (正確には netCDF の無制限次元) の値として
  ! 受け取られる.
  !++
  use dc_string, only: toChar
  use dc_present,only: present_select, present_and_not_empty
  use dc_types, only: DP, STRING
  use dc_trace, only: Beginsub, Endsub, DbgMessage
  character(*), intent(in):: file
  character(*), intent(in):: varname
  character(*), intent(in), optional:: range
  real, intent(out) :: array(:,:)
  character(*), parameter :: subname = "HistoryGetReal2"
  interface
    subroutine HistoryGetRealEx(file, varname, array, range)
      use dc_types, only: DP
      character(*), intent(in):: file    ! ファイル名
      character(*), intent(in):: varname ! 変数名
      character(*), intent(in), optional:: range  
      real, intent(out):: array(*) ! データ
    end subroutine HistoryGetRealEx
  end interface
continue
  call BeginSub(subname, 'file=%c varname=%c range=%c', &
    & c1=trim(file), c2=trim(varname), &
    & c3=trim(present_select('', 'no-range', range)))
  if (present_and_not_empty(range)) then
    call HistoryGetRealEx(file=file, varname=varname, &
      & array=array, range=range)
  else
    call HistoryGetRealEx(file=file, varname=varname, array=array)
  endif
  call EndSub(subname)
end subroutine HistoryGetReal2


subroutine HistoryGetReal3(file, varname, array, range)
  !
  ! Real 型固定配列用 3 次元配列用データ入力サブルーチン
  !
  !--
  ! file にファイル名を, varname に変数名を与える.
  ! array には 3 次元配列を与える.
  ! range には gtool4 のコンマ記法を与えることで,
  ! 入力先のデータの一部を切り出して入力を行うことが
  ! 可能である. なお, range に数値のみが代入される場合,
  ! それは時刻の次元 (正確には netCDF の無制限次元) の値として
  ! 受け取られる.
  !++
  use dc_string, only: toChar
  use dc_present,only: present_select, present_and_not_empty
  use dc_types, only: DP, STRING
  use dc_trace, only: Beginsub, Endsub, DbgMessage
  character(*), intent(in):: file
  character(*), intent(in):: varname
  character(*), intent(in), optional:: range
  real, intent(out) :: array(:,:,:)
  character(*), parameter :: subname = "HistoryGetReal3"
  interface
    subroutine HistoryGetRealEx(file, varname, array, range)
      use dc_types, only: DP
      character(*), intent(in):: file    ! ファイル名
      character(*), intent(in):: varname ! 変数名
      character(*), intent(in), optional:: range  
      real, intent(out):: array(*) ! データ
    end subroutine HistoryGetRealEx
  end interface
continue
  call BeginSub(subname, 'file=%c varname=%c range=%c', &
    & c1=trim(file), c2=trim(varname), &
    & c3=trim(present_select('', 'no-range', range)))
  if (present_and_not_empty(range)) then
    call HistoryGetRealEx(file=file, varname=varname, &
      & array=array, range=range)
  else
    call HistoryGetRealEx(file=file, varname=varname, array=array)
  endif
  call EndSub(subname)
end subroutine HistoryGetReal3


subroutine HistoryGetReal4(file, varname, array, range)
  !
  ! Real 型固定配列用 4 次元配列用データ入力サブルーチン
  !
  !--
  ! file にファイル名を, varname に変数名を与える.
  ! array には 4 次元配列を与える.
  ! range には gtool4 のコンマ記法を与えることで,
  ! 入力先のデータの一部を切り出して入力を行うことが
  ! 可能である. なお, range に数値のみが代入される場合,
  ! それは時刻の次元 (正確には netCDF の無制限次元) の値として
  ! 受け取られる.
  !++
  use dc_string, only: toChar
  use dc_present,only: present_select, present_and_not_empty
  use dc_types, only: DP, STRING
  use dc_trace, only: Beginsub, Endsub, DbgMessage
  character(*), intent(in):: file
  character(*), intent(in):: varname
  character(*), intent(in), optional:: range
  real, intent(out) :: array(:,:,:,:)
  character(*), parameter :: subname = "HistoryGetReal4"
  interface
    subroutine HistoryGetRealEx(file, varname, array, range)
      use dc_types, only: DP
      character(*), intent(in):: file    ! ファイル名
      character(*), intent(in):: varname ! 変数名
      character(*), intent(in), optional:: range  
      real, intent(out):: array(*) ! データ
    end subroutine HistoryGetRealEx
  end interface
continue
  call BeginSub(subname, 'file=%c varname=%c range=%c', &
    & c1=trim(file), c2=trim(varname), &
    & c3=trim(present_select('', 'no-range', range)))
  if (present_and_not_empty(range)) then
    call HistoryGetRealEx(file=file, varname=varname, &
      & array=array, range=range)
  else
    call HistoryGetRealEx(file=file, varname=varname, array=array)
  endif
  call EndSub(subname)
end subroutine HistoryGetReal4


subroutine HistoryGetReal5(file, varname, array, range)
  !
  ! Real 型固定配列用 5 次元配列用データ入力サブルーチン
  !
  !--
  ! file にファイル名を, varname に変数名を与える.
  ! array には 5 次元配列を与える.
  ! range には gtool4 のコンマ記法を与えることで,
  ! 入力先のデータの一部を切り出して入力を行うことが
  ! 可能である. なお, range に数値のみが代入される場合,
  ! それは時刻の次元 (正確には netCDF の無制限次元) の値として
  ! 受け取られる.
  !++
  use dc_string, only: toChar
  use dc_present,only: present_select, present_and_not_empty
  use dc_types, only: DP, STRING
  use dc_trace, only: Beginsub, Endsub, DbgMessage
  character(*), intent(in):: file
  character(*), intent(in):: varname
  character(*), intent(in), optional:: range
  real, intent(out) :: array(:,:,:,:,:)
  character(*), parameter :: subname = "HistoryGetReal5"
  interface
    subroutine HistoryGetRealEx(file, varname, array, range)
      use dc_types, only: DP
      character(*), intent(in):: file    ! ファイル名
      character(*), intent(in):: varname ! 変数名
      character(*), intent(in), optional:: range  
      real, intent(out):: array(*) ! データ
    end subroutine HistoryGetRealEx
  end interface
continue
  call BeginSub(subname, 'file=%c varname=%c range=%c', &
    & c1=trim(file), c2=trim(varname), &
    & c3=trim(present_select('', 'no-range', range)))
  if (present_and_not_empty(range)) then
    call HistoryGetRealEx(file=file, varname=varname, &
      & array=array, range=range)
  else
    call HistoryGetRealEx(file=file, varname=varname, array=array)
  endif
  call EndSub(subname)
end subroutine HistoryGetReal5


subroutine HistoryGetReal6(file, varname, array, range)
  !
  ! Real 型固定配列用 6 次元配列用データ入力サブルーチン
  !
  !--
  ! file にファイル名を, varname に変数名を与える.
  ! array には 6 次元配列を与える.
  ! range には gtool4 のコンマ記法を与えることで,
  ! 入力先のデータの一部を切り出して入力を行うことが
  ! 可能である. なお, range に数値のみが代入される場合,
  ! それは時刻の次元 (正確には netCDF の無制限次元) の値として
  ! 受け取られる.
  !++
  use dc_string, only: toChar
  use dc_present,only: present_select, present_and_not_empty
  use dc_types, only: DP, STRING
  use dc_trace, only: Beginsub, Endsub, DbgMessage
  character(*), intent(in):: file
  character(*), intent(in):: varname
  character(*), intent(in), optional:: range
  real, intent(out) :: array(:,:,:,:,:,:)
  character(*), parameter :: subname = "HistoryGetReal6"
  interface
    subroutine HistoryGetRealEx(file, varname, array, range)
      use dc_types, only: DP
      character(*), intent(in):: file    ! ファイル名
      character(*), intent(in):: varname ! 変数名
      character(*), intent(in), optional:: range  
      real, intent(out):: array(*) ! データ
    end subroutine HistoryGetRealEx
  end interface
continue
  call BeginSub(subname, 'file=%c varname=%c range=%c', &
    & c1=trim(file), c2=trim(varname), &
    & c3=trim(present_select('', 'no-range', range)))
  if (present_and_not_empty(range)) then
    call HistoryGetRealEx(file=file, varname=varname, &
      & array=array, range=range)
  else
    call HistoryGetRealEx(file=file, varname=varname, array=array)
  endif
  call EndSub(subname)
end subroutine HistoryGetReal6


subroutine HistoryGetReal7(file, varname, array, range)
  !
  ! Real 型固定配列用 7 次元配列用データ入力サブルーチン
  !
  !--
  ! file にファイル名を, varname に変数名を与える.
  ! array には 7 次元配列を与える.
  ! range には gtool4 のコンマ記法を与えることで,
  ! 入力先のデータの一部を切り出して入力を行うことが
  ! 可能である. なお, range に数値のみが代入される場合,
  ! それは時刻の次元 (正確には netCDF の無制限次元) の値として
  ! 受け取られる.
  !++
  use dc_string, only: toChar
  use dc_present,only: present_select, present_and_not_empty
  use dc_types, only: DP, STRING
  use dc_trace, only: Beginsub, Endsub, DbgMessage
  character(*), intent(in):: file
  character(*), intent(in):: varname
  character(*), intent(in), optional:: range
  real, intent(out) :: array(:,:,:,:,:,:,:)
  character(*), parameter :: subname = "HistoryGetReal7"
  interface
    subroutine HistoryGetRealEx(file, varname, array, range)
      use dc_types, only: DP
      character(*), intent(in):: file    ! ファイル名
      character(*), intent(in):: varname ! 変数名
      character(*), intent(in), optional:: range  
      real, intent(out):: array(*) ! データ
    end subroutine HistoryGetRealEx
  end interface
continue
  call BeginSub(subname, 'file=%c varname=%c range=%c', &
    & c1=trim(file), c2=trim(varname), &
    & c3=trim(present_select('', 'no-range', range)))
  if (present_and_not_empty(range)) then
    call HistoryGetRealEx(file=file, varname=varname, &
      & array=array, range=range)
  else
    call HistoryGetRealEx(file=file, varname=varname, array=array)
  endif
  call EndSub(subname)
end subroutine HistoryGetReal7


subroutine HistoryGetDouble0TimeR(file, varname, array, time)
  !
  ! 将来廃止予定です。*time* は *range* に置き換え、文字型で与えて下さい。
  !
  use dc_string, only: toChar
  use dc_types, only: DP, STRING
  use dc_trace, only: Beginsub, Endsub, DbgMessage
  character(*), intent(in):: file, varname
  real, intent(in)              :: time
  real(DP), intent(out) :: array
  real(DP) :: array_tmp(1)
  character(*), parameter :: subname = "HistoryGetDouble0TimeR"
  interface
    subroutine HistoryGetDoubleEx(file, varname, array, range)
      use dc_types, only: DP
      character(*), intent(in):: file    ! ファイル名
      character(*), intent(in):: varname ! 変数名
      character(*), intent(in), optional:: range  
      real(DP), intent(out):: array(*) ! データ
    end subroutine HistoryGetDoubleEx
  end interface
continue
  call BeginSub(subname, 'file=%c varname=%c time=%c', &
    & c1=trim(file), c2=trim(varname), c3=toChar(time))
  call HistoryGetDoubleEx(file=file, varname=varname, &
    & array=array_tmp, range=toChar(time))
  call EndSub(subname)
  array = array_tmp(1)
end subroutine


subroutine HistoryGetReal0TimeR(file, varname, array, time)
  !
  ! 将来廃止予定です。*time* は *range* に置き換え、文字型で与えて下さい。
  !
  use dc_string, only: toChar
  use dc_types, only: DP, STRING
  use dc_trace, only: Beginsub, Endsub, DbgMessage
  character(*), intent(in):: file, varname
  real, intent(in)              :: time
  real, intent(out) :: array
  real :: array_tmp(1)
  character(*), parameter :: subname = "HistoryGetReal0TimeR"
  interface
    subroutine HistoryGetRealEx(file, varname, array, range)
      use dc_types, only: DP
      character(*), intent(in):: file    ! ファイル名
      character(*), intent(in):: varname ! 変数名
      character(*), intent(in), optional:: range  
      real, intent(out):: array(*) ! データ
    end subroutine HistoryGetRealEx
  end interface
continue
  call BeginSub(subname, 'file=%c varname=%c time=%c', &
    & c1=trim(file), c2=trim(varname), c3=toChar(time))
  call HistoryGetRealEx(file=file, varname=varname, &
    & array=array_tmp, range=toChar(time))
  call EndSub(subname)
  array = array_tmp(1)
end subroutine


subroutine HistoryGetDouble0TimeD(file, varname, array, time)
  !
  ! 将来廃止予定です。*time* は *range* に置き換え、文字型で与えて下さい。
  !
  use dc_string, only: toChar
  use dc_types, only: DP
  use dc_trace, only: Beginsub, Endsub, DbgMessage
  character(*), intent(in):: file, varname
  real(DP), intent(in)              :: time
  real(DP), intent(out) :: array
  real(DP) :: array_tmp(1)
  character(*), parameter :: subname = "HistoryGetDouble0TimeD"
  interface
    subroutine HistoryGetDoubleEx(file, varname, array, range)
      use dc_types, only: DP
      character(*), intent(in):: file    ! ファイル名
      character(*), intent(in):: varname ! 変数名
      character(*), intent(in), optional:: range  
      real(DP), intent(out):: array(*) ! データ
    end subroutine HistoryGetDoubleEx
  end interface
continue
  call BeginSub(subname, 'file=%c varname=%c time=%c', &
    & c1=trim(file), c2=trim(varname), c3=toChar(time))
  call HistoryGetDoubleEx(file=file, varname=varname, &
    & array=array_tmp, range=toChar(time))
  call EndSub(subname)
  array = array_tmp(1)
end subroutine


subroutine HistoryGetReal0TimeD(file, varname, array, time)
  !
  ! 将来廃止予定です。*time* は *range* に置き換え、文字型で与えて下さい。
  !
  use dc_string, only: toChar
  use dc_types, only: DP
  use dc_trace, only: Beginsub, Endsub, DbgMessage
  character(*), intent(in):: file, varname
  real(DP), intent(in)              :: time
  real, intent(out) :: array
  real :: array_tmp(1)
  character(*), parameter :: subname = "HistoryGetReal0TimeD"
  interface
    subroutine HistoryGetRealEx(file, varname, array, range)
      use dc_types, only: DP
      character(*), intent(in):: file    ! ファイル名
      character(*), intent(in):: varname ! 変数名
      character(*), intent(in), optional:: range  
      real, intent(out):: array(*) ! データ
    end subroutine HistoryGetRealEx
  end interface
continue
  call BeginSub(subname, 'file=%c varname=%c time=%c', &
    & c1=trim(file), c2=trim(varname), c3=toChar(time))
  call HistoryGetRealEx(file=file, varname=varname, &
    & array=array_tmp, range=toChar(time))
  call EndSub(subname)
  array = array_tmp(1)
end subroutine


subroutine HistoryGetDouble1TimeR(file, varname, array, time)
  !
  ! 将来廃止予定です。*time* は *range* に置き換え、文字型で与えて下さい。
  !
  use dc_string, only: toChar
  use dc_types, only: DP, STRING
  use dc_trace, only: Beginsub, Endsub, DbgMessage
  character(*), intent(in):: file, varname
  real, intent(in)              :: time
  real(DP), intent(out) :: array(:)
  character(*), parameter :: subname = "HistoryGetDouble1TimeR"
  interface
    subroutine HistoryGetDoubleEx(file, varname, array, range)
      use dc_types, only: DP
      character(*), intent(in):: file    ! ファイル名
      character(*), intent(in):: varname ! 変数名
      character(*), intent(in), optional:: range  
      real(DP), intent(out):: array(*) ! データ
    end subroutine HistoryGetDoubleEx
  end interface
continue
  call BeginSub(subname, 'file=%c varname=%c time=%c', &
    & c1=trim(file), c2=trim(varname), c3=toChar(time))
  call HistoryGetDoubleEx(file=file, varname=varname, &
    & array=array, range=toChar(time))
  call EndSub(subname)
end subroutine


subroutine HistoryGetDouble2TimeR(file, varname, array, time)
  !
  ! 将来廃止予定です。*time* は *range* に置き換え、文字型で与えて下さい。
  !
  use dc_string, only: toChar
  use dc_types, only: DP, STRING
  use dc_trace, only: Beginsub, Endsub, DbgMessage
  character(*), intent(in):: file, varname
  real, intent(in)              :: time
  real(DP), intent(out) :: array(:,:)
  character(*), parameter :: subname = "HistoryGetDouble2TimeR"
  interface
    subroutine HistoryGetDoubleEx(file, varname, array, range)
      use dc_types, only: DP
      character(*), intent(in):: file    ! ファイル名
      character(*), intent(in):: varname ! 変数名
      character(*), intent(in), optional:: range  
      real(DP), intent(out):: array(*) ! データ
    end subroutine HistoryGetDoubleEx
  end interface
continue
  call BeginSub(subname, 'file=%c varname=%c time=%c', &
    & c1=trim(file), c2=trim(varname), c3=toChar(time))
  call HistoryGetDoubleEx(file=file, varname=varname, &
    & array=array, range=toChar(time))
  call EndSub(subname)
end subroutine


subroutine HistoryGetDouble3TimeR(file, varname, array, time)
  !
  ! 将来廃止予定です。*time* は *range* に置き換え、文字型で与えて下さい。
  !
  use dc_string, only: toChar
  use dc_types, only: DP, STRING
  use dc_trace, only: Beginsub, Endsub, DbgMessage
  character(*), intent(in):: file, varname
  real, intent(in)              :: time
  real(DP), intent(out) :: array(:,:,:)
  character(*), parameter :: subname = "HistoryGetDouble3TimeR"
  interface
    subroutine HistoryGetDoubleEx(file, varname, array, range)
      use dc_types, only: DP
      character(*), intent(in):: file    ! ファイル名
      character(*), intent(in):: varname ! 変数名
      character(*), intent(in), optional:: range  
      real(DP), intent(out):: array(*) ! データ
    end subroutine HistoryGetDoubleEx
  end interface
continue
  call BeginSub(subname, 'file=%c varname=%c time=%c', &
    & c1=trim(file), c2=trim(varname), c3=toChar(time))
  call HistoryGetDoubleEx(file=file, varname=varname, &
    & array=array, range=toChar(time))
  call EndSub(subname)
end subroutine


subroutine HistoryGetDouble4TimeR(file, varname, array, time)
  !
  ! 将来廃止予定です。*time* は *range* に置き換え、文字型で与えて下さい。
  !
  use dc_string, only: toChar
  use dc_types, only: DP, STRING
  use dc_trace, only: Beginsub, Endsub, DbgMessage
  character(*), intent(in):: file, varname
  real, intent(in)              :: time
  real(DP), intent(out) :: array(:,:,:,:)
  character(*), parameter :: subname = "HistoryGetDouble4TimeR"
  interface
    subroutine HistoryGetDoubleEx(file, varname, array, range)
      use dc_types, only: DP
      character(*), intent(in):: file    ! ファイル名
      character(*), intent(in):: varname ! 変数名
      character(*), intent(in), optional:: range  
      real(DP), intent(out):: array(*) ! データ
    end subroutine HistoryGetDoubleEx
  end interface
continue
  call BeginSub(subname, 'file=%c varname=%c time=%c', &
    & c1=trim(file), c2=trim(varname), c3=toChar(time))
  call HistoryGetDoubleEx(file=file, varname=varname, &
    & array=array, range=toChar(time))
  call EndSub(subname)
end subroutine


subroutine HistoryGetDouble5TimeR(file, varname, array, time)
  !
  ! 将来廃止予定です。*time* は *range* に置き換え、文字型で与えて下さい。
  !
  use dc_string, only: toChar
  use dc_types, only: DP, STRING
  use dc_trace, only: Beginsub, Endsub, DbgMessage
  character(*), intent(in):: file, varname
  real, intent(in)              :: time
  real(DP), intent(out) :: array(:,:,:,:,:)
  character(*), parameter :: subname = "HistoryGetDouble5TimeR"
  interface
    subroutine HistoryGetDoubleEx(file, varname, array, range)
      use dc_types, only: DP
      character(*), intent(in):: file    ! ファイル名
      character(*), intent(in):: varname ! 変数名
      character(*), intent(in), optional:: range  
      real(DP), intent(out):: array(*) ! データ
    end subroutine HistoryGetDoubleEx
  end interface
continue
  call BeginSub(subname, 'file=%c varname=%c time=%c', &
    & c1=trim(file), c2=trim(varname), c3=toChar(time))
  call HistoryGetDoubleEx(file=file, varname=varname, &
    & array=array, range=toChar(time))
  call EndSub(subname)
end subroutine


subroutine HistoryGetDouble6TimeR(file, varname, array, time)
  !
  ! 将来廃止予定です。*time* は *range* に置き換え、文字型で与えて下さい。
  !
  use dc_string, only: toChar
  use dc_types, only: DP, STRING
  use dc_trace, only: Beginsub, Endsub, DbgMessage
  character(*), intent(in):: file, varname
  real, intent(in)              :: time
  real(DP), intent(out) :: array(:,:,:,:,:,:)
  character(*), parameter :: subname = "HistoryGetDouble6TimeR"
  interface
    subroutine HistoryGetDoubleEx(file, varname, array, range)
      use dc_types, only: DP
      character(*), intent(in):: file    ! ファイル名
      character(*), intent(in):: varname ! 変数名
      character(*), intent(in), optional:: range  
      real(DP), intent(out):: array(*) ! データ
    end subroutine HistoryGetDoubleEx
  end interface
continue
  call BeginSub(subname, 'file=%c varname=%c time=%c', &
    & c1=trim(file), c2=trim(varname), c3=toChar(time))
  call HistoryGetDoubleEx(file=file, varname=varname, &
    & array=array, range=toChar(time))
  call EndSub(subname)
end subroutine


subroutine HistoryGetDouble7TimeR(file, varname, array, time)
  !
  ! 将来廃止予定です。*time* は *range* に置き換え、文字型で与えて下さい。
  !
  use dc_string, only: toChar
  use dc_types, only: DP, STRING
  use dc_trace, only: Beginsub, Endsub, DbgMessage
  character(*), intent(in):: file, varname
  real, intent(in)              :: time
  real(DP), intent(out) :: array(:,:,:,:,:,:,:)
  character(*), parameter :: subname = "HistoryGetDouble7TimeR"
  interface
    subroutine HistoryGetDoubleEx(file, varname, array, range)
      use dc_types, only: DP
      character(*), intent(in):: file    ! ファイル名
      character(*), intent(in):: varname ! 変数名
      character(*), intent(in), optional:: range  
      real(DP), intent(out):: array(*) ! データ
    end subroutine HistoryGetDoubleEx
  end interface
continue
  call BeginSub(subname, 'file=%c varname=%c time=%c', &
    & c1=trim(file), c2=trim(varname), c3=toChar(time))
  call HistoryGetDoubleEx(file=file, varname=varname, &
    & array=array, range=toChar(time))
  call EndSub(subname)
end subroutine


subroutine HistoryGetReal1TimeR(file, varname, array, time)
  !
  ! 将来廃止予定です。*time* は *range* に置き換え、文字型で与えて下さい。
  !
  use dc_string, only: toChar
  use dc_types, only: DP, STRING
  use dc_trace, only: Beginsub, Endsub, DbgMessage
  character(*), intent(in):: file, varname
  real, intent(in)              :: time
  real, intent(out) :: array(:)
  character(*), parameter :: subname = "HistoryGetReal1TimeR"
  interface
    subroutine HistoryGetRealEx(file, varname, array, range)
      use dc_types, only: DP
      character(*), intent(in):: file    ! ファイル名
      character(*), intent(in):: varname ! 変数名
      character(*), intent(in), optional:: range  
      real, intent(out):: array(*) ! データ
    end subroutine HistoryGetRealEx
  end interface
continue
  call BeginSub(subname, 'file=%c varname=%c time=%c', &
    & c1=trim(file), c2=trim(varname), c3=toChar(time))
  call HistoryGetRealEx(file=file, varname=varname, &
    & array=array, range=toChar(time))
  call EndSub(subname)
end subroutine


subroutine HistoryGetReal2TimeR(file, varname, array, time)
  !
  ! 将来廃止予定です。*time* は *range* に置き換え、文字型で与えて下さい。
  !
  use dc_string, only: toChar
  use dc_types, only: DP, STRING
  use dc_trace, only: Beginsub, Endsub, DbgMessage
  character(*), intent(in):: file, varname
  real, intent(in)              :: time
  real, intent(out) :: array(:,:)
  character(*), parameter :: subname = "HistoryGetReal2TimeR"
  interface
    subroutine HistoryGetRealEx(file, varname, array, range)
      use dc_types, only: DP
      character(*), intent(in):: file    ! ファイル名
      character(*), intent(in):: varname ! 変数名
      character(*), intent(in), optional:: range  
      real, intent(out):: array(*) ! データ
    end subroutine HistoryGetRealEx
  end interface
continue
  call BeginSub(subname, 'file=%c varname=%c time=%c', &
    & c1=trim(file), c2=trim(varname), c3=toChar(time))
  call HistoryGetRealEx(file=file, varname=varname, &
    & array=array, range=toChar(time))
  call EndSub(subname)
end subroutine


subroutine HistoryGetReal3TimeR(file, varname, array, time)
  !
  ! 将来廃止予定です。*time* は *range* に置き換え、文字型で与えて下さい。
  !
  use dc_string, only: toChar
  use dc_types, only: DP, STRING
  use dc_trace, only: Beginsub, Endsub, DbgMessage
  character(*), intent(in):: file, varname
  real, intent(in)              :: time
  real, intent(out) :: array(:,:,:)
  character(*), parameter :: subname = "HistoryGetReal3TimeR"
  interface
    subroutine HistoryGetRealEx(file, varname, array, range)
      use dc_types, only: DP
      character(*), intent(in):: file    ! ファイル名
      character(*), intent(in):: varname ! 変数名
      character(*), intent(in), optional:: range  
      real, intent(out):: array(*) ! データ
    end subroutine HistoryGetRealEx
  end interface
continue
  call BeginSub(subname, 'file=%c varname=%c time=%c', &
    & c1=trim(file), c2=trim(varname), c3=toChar(time))
  call HistoryGetRealEx(file=file, varname=varname, &
    & array=array, range=toChar(time))
  call EndSub(subname)
end subroutine


subroutine HistoryGetReal4TimeR(file, varname, array, time)
  !
  ! 将来廃止予定です。*time* は *range* に置き換え、文字型で与えて下さい。
  !
  use dc_string, only: toChar
  use dc_types, only: DP, STRING
  use dc_trace, only: Beginsub, Endsub, DbgMessage
  character(*), intent(in):: file, varname
  real, intent(in)              :: time
  real, intent(out) :: array(:,:,:,:)
  character(*), parameter :: subname = "HistoryGetReal4TimeR"
  interface
    subroutine HistoryGetRealEx(file, varname, array, range)
      use dc_types, only: DP
      character(*), intent(in):: file    ! ファイル名
      character(*), intent(in):: varname ! 変数名
      character(*), intent(in), optional:: range  
      real, intent(out):: array(*) ! データ
    end subroutine HistoryGetRealEx
  end interface
continue
  call BeginSub(subname, 'file=%c varname=%c time=%c', &
    & c1=trim(file), c2=trim(varname), c3=toChar(time))
  call HistoryGetRealEx(file=file, varname=varname, &
    & array=array, range=toChar(time))
  call EndSub(subname)
end subroutine


subroutine HistoryGetReal5TimeR(file, varname, array, time)
  !
  ! 将来廃止予定です。*time* は *range* に置き換え、文字型で与えて下さい。
  !
  use dc_string, only: toChar
  use dc_types, only: DP, STRING
  use dc_trace, only: Beginsub, Endsub, DbgMessage
  character(*), intent(in):: file, varname
  real, intent(in)              :: time
  real, intent(out) :: array(:,:,:,:,:)
  character(*), parameter :: subname = "HistoryGetReal5TimeR"
  interface
    subroutine HistoryGetRealEx(file, varname, array, range)
      use dc_types, only: DP
      character(*), intent(in):: file    ! ファイル名
      character(*), intent(in):: varname ! 変数名
      character(*), intent(in), optional:: range  
      real, intent(out):: array(*) ! データ
    end subroutine HistoryGetRealEx
  end interface
continue
  call BeginSub(subname, 'file=%c varname=%c time=%c', &
    & c1=trim(file), c2=trim(varname), c3=toChar(time))
  call HistoryGetRealEx(file=file, varname=varname, &
    & array=array, range=toChar(time))
  call EndSub(subname)
end subroutine


subroutine HistoryGetReal6TimeR(file, varname, array, time)
  !
  ! 将来廃止予定です。*time* は *range* に置き換え、文字型で与えて下さい。
  !
  use dc_string, only: toChar
  use dc_types, only: DP, STRING
  use dc_trace, only: Beginsub, Endsub, DbgMessage
  character(*), intent(in):: file, varname
  real, intent(in)              :: time
  real, intent(out) :: array(:,:,:,:,:,:)
  character(*), parameter :: subname = "HistoryGetReal6TimeR"
  interface
    subroutine HistoryGetRealEx(file, varname, array, range)
      use dc_types, only: DP
      character(*), intent(in):: file    ! ファイル名
      character(*), intent(in):: varname ! 変数名
      character(*), intent(in), optional:: range  
      real, intent(out):: array(*) ! データ
    end subroutine HistoryGetRealEx
  end interface
continue
  call BeginSub(subname, 'file=%c varname=%c time=%c', &
    & c1=trim(file), c2=trim(varname), c3=toChar(time))
  call HistoryGetRealEx(file=file, varname=varname, &
    & array=array, range=toChar(time))
  call EndSub(subname)
end subroutine


subroutine HistoryGetReal7TimeR(file, varname, array, time)
  !
  ! 将来廃止予定です。*time* は *range* に置き換え、文字型で与えて下さい。
  !
  use dc_string, only: toChar
  use dc_types, only: DP, STRING
  use dc_trace, only: Beginsub, Endsub, DbgMessage
  character(*), intent(in):: file, varname
  real, intent(in)              :: time
  real, intent(out) :: array(:,:,:,:,:,:,:)
  character(*), parameter :: subname = "HistoryGetReal7TimeR"
  interface
    subroutine HistoryGetRealEx(file, varname, array, range)
      use dc_types, only: DP
      character(*), intent(in):: file    ! ファイル名
      character(*), intent(in):: varname ! 変数名
      character(*), intent(in), optional:: range  
      real, intent(out):: array(*) ! データ
    end subroutine HistoryGetRealEx
  end interface
continue
  call BeginSub(subname, 'file=%c varname=%c time=%c', &
    & c1=trim(file), c2=trim(varname), c3=toChar(time))
  call HistoryGetRealEx(file=file, varname=varname, &
    & array=array, range=toChar(time))
  call EndSub(subname)
end subroutine


subroutine HistoryGetDouble1TimeD(file, varname, array, time)
  !
  ! 将来廃止予定です。*time* は *range* に置き換え、文字型で与えて下さい。
  !
  use dc_string, only: toChar
  use dc_types, only: DP, STRING
  use dc_trace, only: Beginsub, Endsub, DbgMessage
  character(*), intent(in):: file, varname
  real(DP), intent(in)              :: time
  real(DP), intent(out) :: array(:)
  character(*), parameter :: subname = "HistoryGetDouble1TimeD"
  interface
    subroutine HistoryGetDoubleEx(file, varname, array, range)
      use dc_types, only: DP
      character(*), intent(in):: file    ! ファイル名
      character(*), intent(in):: varname ! 変数名
      character(*), intent(in), optional:: range  
      real(DP), intent(out):: array(*) ! データ
    end subroutine HistoryGetDoubleEx
  end interface
continue
  call BeginSub(subname, 'file=%c varname=%c time=%c', &
    & c1=trim(file), c2=trim(varname), c3=toChar(time))
  call HistoryGetDoubleEx(file=file, varname=varname, &
    & array=array, range=toChar(time))
  call EndSub(subname)
end subroutine


subroutine HistoryGetDouble2TimeD(file, varname, array, time)
  !
  ! 将来廃止予定です。*time* は *range* に置き換え、文字型で与えて下さい。
  !
  use dc_string, only: toChar
  use dc_types, only: DP, STRING
  use dc_trace, only: Beginsub, Endsub, DbgMessage
  character(*), intent(in):: file, varname
  real(DP), intent(in)              :: time
  real(DP), intent(out) :: array(:,:)
  character(*), parameter :: subname = "HistoryGetDouble2TimeD"
  interface
    subroutine HistoryGetDoubleEx(file, varname, array, range)
      use dc_types, only: DP
      character(*), intent(in):: file    ! ファイル名
      character(*), intent(in):: varname ! 変数名
      character(*), intent(in), optional:: range  
      real(DP), intent(out):: array(*) ! データ
    end subroutine HistoryGetDoubleEx
  end interface
continue
  call BeginSub(subname, 'file=%c varname=%c time=%c', &
    & c1=trim(file), c2=trim(varname), c3=toChar(time))
  call HistoryGetDoubleEx(file=file, varname=varname, &
    & array=array, range=toChar(time))
  call EndSub(subname)
end subroutine


subroutine HistoryGetDouble3TimeD(file, varname, array, time)
  !
  ! 将来廃止予定です。*time* は *range* に置き換え、文字型で与えて下さい。
  !
  use dc_string, only: toChar
  use dc_types, only: DP, STRING
  use dc_trace, only: Beginsub, Endsub, DbgMessage
  character(*), intent(in):: file, varname
  real(DP), intent(in)              :: time
  real(DP), intent(out) :: array(:,:,:)
  character(*), parameter :: subname = "HistoryGetDouble3TimeD"
  interface
    subroutine HistoryGetDoubleEx(file, varname, array, range)
      use dc_types, only: DP
      character(*), intent(in):: file    ! ファイル名
      character(*), intent(in):: varname ! 変数名
      character(*), intent(in), optional:: range  
      real(DP), intent(out):: array(*) ! データ
    end subroutine HistoryGetDoubleEx
  end interface
continue
  call BeginSub(subname, 'file=%c varname=%c time=%c', &
    & c1=trim(file), c2=trim(varname), c3=toChar(time))
  call HistoryGetDoubleEx(file=file, varname=varname, &
    & array=array, range=toChar(time))
  call EndSub(subname)
end subroutine


subroutine HistoryGetDouble4TimeD(file, varname, array, time)
  !
  ! 将来廃止予定です。*time* は *range* に置き換え、文字型で与えて下さい。
  !
  use dc_string, only: toChar
  use dc_types, only: DP, STRING
  use dc_trace, only: Beginsub, Endsub, DbgMessage
  character(*), intent(in):: file, varname
  real(DP), intent(in)              :: time
  real(DP), intent(out) :: array(:,:,:,:)
  character(*), parameter :: subname = "HistoryGetDouble4TimeD"
  interface
    subroutine HistoryGetDoubleEx(file, varname, array, range)
      use dc_types, only: DP
      character(*), intent(in):: file    ! ファイル名
      character(*), intent(in):: varname ! 変数名
      character(*), intent(in), optional:: range  
      real(DP), intent(out):: array(*) ! データ
    end subroutine HistoryGetDoubleEx
  end interface
continue
  call BeginSub(subname, 'file=%c varname=%c time=%c', &
    & c1=trim(file), c2=trim(varname), c3=toChar(time))
  call HistoryGetDoubleEx(file=file, varname=varname, &
    & array=array, range=toChar(time))
  call EndSub(subname)
end subroutine


subroutine HistoryGetDouble5TimeD(file, varname, array, time)
  !
  ! 将来廃止予定です。*time* は *range* に置き換え、文字型で与えて下さい。
  !
  use dc_string, only: toChar
  use dc_types, only: DP, STRING
  use dc_trace, only: Beginsub, Endsub, DbgMessage
  character(*), intent(in):: file, varname
  real(DP), intent(in)              :: time
  real(DP), intent(out) :: array(:,:,:,:,:)
  character(*), parameter :: subname = "HistoryGetDouble5TimeD"
  interface
    subroutine HistoryGetDoubleEx(file, varname, array, range)
      use dc_types, only: DP
      character(*), intent(in):: file    ! ファイル名
      character(*), intent(in):: varname ! 変数名
      character(*), intent(in), optional:: range  
      real(DP), intent(out):: array(*) ! データ
    end subroutine HistoryGetDoubleEx
  end interface
continue
  call BeginSub(subname, 'file=%c varname=%c time=%c', &
    & c1=trim(file), c2=trim(varname), c3=toChar(time))
  call HistoryGetDoubleEx(file=file, varname=varname, &
    & array=array, range=toChar(time))
  call EndSub(subname)
end subroutine


subroutine HistoryGetDouble6TimeD(file, varname, array, time)
  !
  ! 将来廃止予定です。*time* は *range* に置き換え、文字型で与えて下さい。
  !
  use dc_string, only: toChar
  use dc_types, only: DP, STRING
  use dc_trace, only: Beginsub, Endsub, DbgMessage
  character(*), intent(in):: file, varname
  real(DP), intent(in)              :: time
  real(DP), intent(out) :: array(:,:,:,:,:,:)
  character(*), parameter :: subname = "HistoryGetDouble6TimeD"
  interface
    subroutine HistoryGetDoubleEx(file, varname, array, range)
      use dc_types, only: DP
      character(*), intent(in):: file    ! ファイル名
      character(*), intent(in):: varname ! 変数名
      character(*), intent(in), optional:: range  
      real(DP), intent(out):: array(*) ! データ
    end subroutine HistoryGetDoubleEx
  end interface
continue
  call BeginSub(subname, 'file=%c varname=%c time=%c', &
    & c1=trim(file), c2=trim(varname), c3=toChar(time))
  call HistoryGetDoubleEx(file=file, varname=varname, &
    & array=array, range=toChar(time))
  call EndSub(subname)
end subroutine


subroutine HistoryGetDouble7TimeD(file, varname, array, time)
  !
  ! 将来廃止予定です。*time* は *range* に置き換え、文字型で与えて下さい。
  !
  use dc_string, only: toChar
  use dc_types, only: DP, STRING
  use dc_trace, only: Beginsub, Endsub, DbgMessage
  character(*), intent(in):: file, varname
  real(DP), intent(in)              :: time
  real(DP), intent(out) :: array(:,:,:,:,:,:,:)
  character(*), parameter :: subname = "HistoryGetDouble7TimeD"
  interface
    subroutine HistoryGetDoubleEx(file, varname, array, range)
      use dc_types, only: DP
      character(*), intent(in):: file    ! ファイル名
      character(*), intent(in):: varname ! 変数名
      character(*), intent(in), optional:: range  
      real(DP), intent(out):: array(*) ! データ
    end subroutine HistoryGetDoubleEx
  end interface
continue
  call BeginSub(subname, 'file=%c varname=%c time=%c', &
    & c1=trim(file), c2=trim(varname), c3=toChar(time))
  call HistoryGetDoubleEx(file=file, varname=varname, &
    & array=array, range=toChar(time))
  call EndSub(subname)
end subroutine


subroutine HistoryGetReal1TimeD(file, varname, array, time)
  !
  ! 将来廃止予定です。*time* は *range* に置き換え、文字型で与えて下さい。
  !
  use dc_string, only: toChar
  use dc_types, only: DP, STRING
  use dc_trace, only: Beginsub, Endsub, DbgMessage
  character(*), intent(in):: file, varname
  real(DP), intent(in)              :: time
  real, intent(out) :: array(:)
  character(*), parameter :: subname = "HistoryGetReal1TimeD"
  interface
    subroutine HistoryGetRealEx(file, varname, array, range)
      use dc_types, only: DP
      character(*), intent(in):: file    ! ファイル名
      character(*), intent(in):: varname ! 変数名
      character(*), intent(in), optional:: range  
      real, intent(out):: array(*) ! データ
    end subroutine HistoryGetRealEx
  end interface
continue
  call BeginSub(subname, 'file=%c varname=%c time=%c', &
    & c1=trim(file), c2=trim(varname), c3=toChar(time))
  call HistoryGetRealEx(file=file, varname=varname, &
    & array=array, range=toChar(time))
  call EndSub(subname)
end subroutine


subroutine HistoryGetReal2TimeD(file, varname, array, time)
  !
  ! 将来廃止予定です。*time* は *range* に置き換え、文字型で与えて下さい。
  !
  use dc_string, only: toChar
  use dc_types, only: DP, STRING
  use dc_trace, only: Beginsub, Endsub, DbgMessage
  character(*), intent(in):: file, varname
  real(DP), intent(in)              :: time
  real, intent(out) :: array(:,:)
  character(*), parameter :: subname = "HistoryGetReal2TimeD"
  interface
    subroutine HistoryGetRealEx(file, varname, array, range)
      use dc_types, only: DP
      character(*), intent(in):: file    ! ファイル名
      character(*), intent(in):: varname ! 変数名
      character(*), intent(in), optional:: range  
      real, intent(out):: array(*) ! データ
    end subroutine HistoryGetRealEx
  end interface
continue
  call BeginSub(subname, 'file=%c varname=%c time=%c', &
    & c1=trim(file), c2=trim(varname), c3=toChar(time))
  call HistoryGetRealEx(file=file, varname=varname, &
    & array=array, range=toChar(time))
  call EndSub(subname)
end subroutine


subroutine HistoryGetReal3TimeD(file, varname, array, time)
  !
  ! 将来廃止予定です。*time* は *range* に置き換え、文字型で与えて下さい。
  !
  use dc_string, only: toChar
  use dc_types, only: DP, STRING
  use dc_trace, only: Beginsub, Endsub, DbgMessage
  character(*), intent(in):: file, varname
  real(DP), intent(in)              :: time
  real, intent(out) :: array(:,:,:)
  character(*), parameter :: subname = "HistoryGetReal3TimeD"
  interface
    subroutine HistoryGetRealEx(file, varname, array, range)
      use dc_types, only: DP
      character(*), intent(in):: file    ! ファイル名
      character(*), intent(in):: varname ! 変数名
      character(*), intent(in), optional:: range  
      real, intent(out):: array(*) ! データ
    end subroutine HistoryGetRealEx
  end interface
continue
  call BeginSub(subname, 'file=%c varname=%c time=%c', &
    & c1=trim(file), c2=trim(varname), c3=toChar(time))
  call HistoryGetRealEx(file=file, varname=varname, &
    & array=array, range=toChar(time))
  call EndSub(subname)
end subroutine


subroutine HistoryGetReal4TimeD(file, varname, array, time)
  !
  ! 将来廃止予定です。*time* は *range* に置き換え、文字型で与えて下さい。
  !
  use dc_string, only: toChar
  use dc_types, only: DP, STRING
  use dc_trace, only: Beginsub, Endsub, DbgMessage
  character(*), intent(in):: file, varname
  real(DP), intent(in)              :: time
  real, intent(out) :: array(:,:,:,:)
  character(*), parameter :: subname = "HistoryGetReal4TimeD"
  interface
    subroutine HistoryGetRealEx(file, varname, array, range)
      use dc_types, only: DP
      character(*), intent(in):: file    ! ファイル名
      character(*), intent(in):: varname ! 変数名
      character(*), intent(in), optional:: range  
      real, intent(out):: array(*) ! データ
    end subroutine HistoryGetRealEx
  end interface
continue
  call BeginSub(subname, 'file=%c varname=%c time=%c', &
    & c1=trim(file), c2=trim(varname), c3=toChar(time))
  call HistoryGetRealEx(file=file, varname=varname, &
    & array=array, range=toChar(time))
  call EndSub(subname)
end subroutine


subroutine HistoryGetReal5TimeD(file, varname, array, time)
  !
  ! 将来廃止予定です。*time* は *range* に置き換え、文字型で与えて下さい。
  !
  use dc_string, only: toChar
  use dc_types, only: DP, STRING
  use dc_trace, only: Beginsub, Endsub, DbgMessage
  character(*), intent(in):: file, varname
  real(DP), intent(in)              :: time
  real, intent(out) :: array(:,:,:,:,:)
  character(*), parameter :: subname = "HistoryGetReal5TimeD"
  interface
    subroutine HistoryGetRealEx(file, varname, array, range)
      use dc_types, only: DP
      character(*), intent(in):: file    ! ファイル名
      character(*), intent(in):: varname ! 変数名
      character(*), intent(in), optional:: range  
      real, intent(out):: array(*) ! データ
    end subroutine HistoryGetRealEx
  end interface
continue
  call BeginSub(subname, 'file=%c varname=%c time=%c', &
    & c1=trim(file), c2=trim(varname), c3=toChar(time))
  call HistoryGetRealEx(file=file, varname=varname, &
    & array=array, range=toChar(time))
  call EndSub(subname)
end subroutine


subroutine HistoryGetReal6TimeD(file, varname, array, time)
  !
  ! 将来廃止予定です。*time* は *range* に置き換え、文字型で与えて下さい。
  !
  use dc_string, only: toChar
  use dc_types, only: DP, STRING
  use dc_trace, only: Beginsub, Endsub, DbgMessage
  character(*), intent(in):: file, varname
  real(DP), intent(in)              :: time
  real, intent(out) :: array(:,:,:,:,:,:)
  character(*), parameter :: subname = "HistoryGetReal6TimeD"
  interface
    subroutine HistoryGetRealEx(file, varname, array, range)
      use dc_types, only: DP
      character(*), intent(in):: file    ! ファイル名
      character(*), intent(in):: varname ! 変数名
      character(*), intent(in), optional:: range  
      real, intent(out):: array(*) ! データ
    end subroutine HistoryGetRealEx
  end interface
continue
  call BeginSub(subname, 'file=%c varname=%c time=%c', &
    & c1=trim(file), c2=trim(varname), c3=toChar(time))
  call HistoryGetRealEx(file=file, varname=varname, &
    & array=array, range=toChar(time))
  call EndSub(subname)
end subroutine


subroutine HistoryGetReal7TimeD(file, varname, array, time)
  !
  ! 将来廃止予定です。*time* は *range* に置き換え、文字型で与えて下さい。
  !
  use dc_string, only: toChar
  use dc_types, only: DP, STRING
  use dc_trace, only: Beginsub, Endsub, DbgMessage
  character(*), intent(in):: file, varname
  real(DP), intent(in)              :: time
  real, intent(out) :: array(:,:,:,:,:,:,:)
  character(*), parameter :: subname = "HistoryGetReal7TimeD"
  interface
    subroutine HistoryGetRealEx(file, varname, array, range)
      use dc_types, only: DP
      character(*), intent(in):: file    ! ファイル名
      character(*), intent(in):: varname ! 変数名
      character(*), intent(in), optional:: range  
      real, intent(out):: array(*) ! データ
    end subroutine HistoryGetRealEx
  end interface
continue
  call BeginSub(subname, 'file=%c varname=%c time=%c', &
    & c1=trim(file), c2=trim(varname), c3=toChar(time))
  call HistoryGetRealEx(file=file, varname=varname, &
    & array=array, range=toChar(time))
  call EndSub(subname)
end subroutine


subroutine HistoryGetDouble0Pointer(file, varname, array, range)
  !
                      !
  ! == データ入力 (ポインタ配列用)
  !
  ! 既存の gtool4 データ内の変数のデータをポインタ配列へ取得します。
  !
  ! 固定長の配列へデータを入力を行う場合は、
  ! HistoryGet を利用してください。
  !
  ! *array* は必ず空状態で与えてください。
  ! すなわち初期値 =>null() を設定するか nullify を用いてください。
  ! 既に割り付けられている場合、もしくは不定状態の場合には
  ! エラーを返します。
  !
  ! デフォルトでは、gtool4 データ内の変数データのうち、
  ! 最も新しい時刻のデータを入力します。その他の時刻データを
  ! 入力したい場合には、下記の *range* オプションを利用してください。
  !
  ! *range* には gtool4 のコンマ記法
  ! ({gtool4 netCDF 規約}[link:../xref.htm#label-6] 参照) 
  ! を与えることで,
  ! 入力先のデータの一部を切り出して入力を行うことが可能です。
  !
  ! *HistoryGetPointer* は複数のサブルーチンの総称名です。*array* には
  ! 0 〜 7 次元のデータを与えることが可能です。
  ! 下記のサブルーチンを参照ください。
  !
                    
  !
  use gtdata_types, only: GT_VARIABLE
  use gtdata_generic, only: Open, Inquire, Close, Get
  use dc_string, only: toChar
  use dc_present, only: present_select
  use dc_types, only: DP, STRING
  use dc_message, only: MessageNotify
  use dc_trace, only: Beginsub, Endsub, DbgMessage
  character(*), intent(in):: file
                                                          ! 取得するデータが格納された
                                      ! netCDF ファイル名
                                      ! 
                    
  character(*), intent(in):: varname
                                                          ! 取得しようとするデータの変数名
                                      !
                                      ! ここで指定する変数名は、 *file*
                                      ! で指定されるファイル内に含
                                      ! まれていなければなりません。
                                      ! 
                    
  character(*), intent(in), optional:: range
                                                          ! gtool4 のコンマ記法による
                                      ! データの切り出し指定
                                      !
                                      ! 詳しくは
                                      ! {gtool4 netCDF 規約}[link:../xref.htm#label-6]
                                      ! の「5.4 コンマ記法」を参照して
                                      ! ください。
                                      ! 
                                      ! 数値のみが与えられる場合
                                      ! (※ 引数の型は常に文字型です。
                                      ! すなわち
                                      ! "<b><tt>10.0</tt></b>"
                                      ! のような文字列が与えられた場合
                                      ! を指します)、それは時刻の値
                                      ! として受け取られます。
                                      ! この場合、"<b><tt>^</tt></b>" を
                                      ! 先頭に付加することで、
                                      ! 時間のステップ数で指定する
                                      ! ことも可能です。 (例えば
                                      ! "<b><tt>^10</tt></b>"ならば
                                      !  10 ステップ目のデータを取得します)。
                                      ! 
                    
  real(DP), pointer :: array
                                                          ! (out)
                                      ! 取得するデータを格納する
                                      ! ポインタの配列
                                      !
                                      ! 必ず空状態で与えてください。
                                      ! すなわち初期値 =>null() を
                                      ! 設定するか nullify を用い
                                      ! ください。
                                      !
                                      ! 型は単精度実数型か倍精度実数型
                                      ! かのどちらかです。
                                      ! 取得するデータの空間次元の
                                      ! サイズに合わせ、配列のサイズは
                                      ! 自動的に設定されます。
                                      ! *varname* のデータ型と *array*
                                      ! の型が異なる場合は、自動的
                                      ! に *array* の型に変換されます。
                                      !
                    
  real(DP), target :: array_tmp(1)
  type(GT_VARIABLE)                    :: var
  character(STRING)                    :: url, actual_url
  integer:: domain   ! 変数の入出力領域の大きさ
                           ! (= 変数が依存する各次元サイズの積)
  character(*), parameter :: subname = "HistoryGetDouble0Pointer"
  interface
    subroutine lookup_growable_url(file, varname, url, range, err)
      character(*), intent(in) :: file           ! ファイル名
      character(*), intent(in) :: varname        ! 変数名
      character(*), intent(out) :: url           ! gtool変数化した文字列
      character(*), intent(in), optional:: range ! 範囲限定や一点切り出し指定
      logical, intent(out), optional :: err      ! エラーのフラグ
    end subroutine lookup_growable_url
  end interface
  interface
    subroutine actual_iorange_dump(url, actual_url, err)
      character(*), intent(in) :: url            ! 変数 URL
      character(*), intent(out), optional :: actual_url
                                                 ! 正確な入出力範囲指定
      logical, intent(out), optional :: err      ! エラーのフラグ
    end subroutine actual_iorange_dump
  end interface
continue
  call BeginSub(subname, 'file=%c varname=%c range=%c', &
    & c1=trim(file), c2=trim(varname), &
    & c3=trim(present_select('', 'no-range', range)))
  ! 必要な情報を gtool 変数化
  call lookup_growable_url(file, varname, url, range)
  allocate(array)
  ! いよいよデータ取得
  call Open(var, url)
  call Inquire(var=var, size=domain)
  call Get(var, array_tmp, domain)
  call Close(var)
  array = array_tmp(1)
  call actual_iorange_dump(url, actual_url)
  call MessageNotify('M', subname, 'Input %c', c1=trim(actual_url))
  call EndSub(subname)
end subroutine


subroutine HistoryGetReal0Pointer(file, varname, array, range)
  !
                    
  !
  use gtdata_types, only: GT_VARIABLE
  use gtdata_generic, only: Open, Inquire, Close, Get
  use dc_string, only: toChar
  use dc_present, only: present_select
  use dc_types, only: DP, STRING
  use dc_message, only: MessageNotify
  use dc_trace, only: Beginsub, Endsub, DbgMessage
  character(*), intent(in):: file
                    
  character(*), intent(in):: varname
                    
  character(*), intent(in), optional:: range
                    
  real, pointer :: array
                    
  real, target :: array_tmp(1)
  type(GT_VARIABLE)                    :: var
  character(STRING)                    :: url, actual_url
  integer:: domain   ! 変数の入出力領域の大きさ
                           ! (= 変数が依存する各次元サイズの積)
  character(*), parameter :: subname = "HistoryGetReal0Pointer"
  interface
    subroutine lookup_growable_url(file, varname, url, range, err)
      character(*), intent(in) :: file           ! ファイル名
      character(*), intent(in) :: varname        ! 変数名
      character(*), intent(out) :: url           ! gtool変数化した文字列
      character(*), intent(in), optional:: range ! 範囲限定や一点切り出し指定
      logical, intent(out), optional :: err      ! エラーのフラグ
    end subroutine lookup_growable_url
  end interface
  interface
    subroutine actual_iorange_dump(url, actual_url, err)
      character(*), intent(in) :: url            ! 変数 URL
      character(*), intent(out), optional :: actual_url
                                                 ! 正確な入出力範囲指定
      logical, intent(out), optional :: err      ! エラーのフラグ
    end subroutine actual_iorange_dump
  end interface
continue
  call BeginSub(subname, 'file=%c varname=%c range=%c', &
    & c1=trim(file), c2=trim(varname), &
    & c3=trim(present_select('', 'no-range', range)))
  ! 必要な情報を gtool 変数化
  call lookup_growable_url(file, varname, url, range)
  allocate(array)
  ! いよいよデータ取得
  call Open(var, url)
  call Inquire(var=var, size=domain)
  call Get(var, array_tmp, domain)
  call Close(var)
  array = array_tmp(1)
  call actual_iorange_dump(url, actual_url)
  call MessageNotify('M', subname, 'Input %c', c1=trim(actual_url))
  call EndSub(subname)
end subroutine


subroutine HistoryGetDouble0PointerTimeR(file, varname, array, time)
  !
  ! 将来廃止予定です。*time* は *range* に置き換え、文字型で与えて下さい。
  !
  use gt4_history, only: HistoryGetPointer
  use dc_string, only: toChar
  use dc_types, only: DP, STRING
  use dc_trace, only: Beginsub, Endsub, DbgMessage
  character(*), intent(in) :: file, varname
  real, intent(in)               :: time
  real(DP), pointer :: array ! (out)
  character(*), parameter :: subname = "HistoryGetDouble0PointerTimeR"
continue
  call BeginSub(subname, 'file=%c varname=%c time=%c', &
    & c1=trim(file), c2=trim(varname), c3=toChar(time))
  call HistoryGetPointer(file=file, &
    & varname=varname, array=array, range=toChar(time))
  call EndSub(subname)
end subroutine


subroutine HistoryGetReal0PointerTimeR(file, varname, array, time)
  !
  ! 将来廃止予定です。*time* は *range* に置き換え、文字型で与えて下さい。
  !
  use gt4_history, only: HistoryGetPointer
  use dc_string, only: toChar
  use dc_types, only: DP, STRING
  use dc_trace, only: Beginsub, Endsub, DbgMessage
  character(*), intent(in) :: file, varname
  real, intent(in)               :: time
  real, pointer :: array ! (out)
  character(*), parameter :: subname = "HistoryGetReal0PointerTimeR"
continue
  call BeginSub(subname, 'file=%c varname=%c time=%c', &
    & c1=trim(file), c2=trim(varname), c3=toChar(time))
  call HistoryGetPointer(file=file, &
    & varname=varname, array=array, range=toChar(time))
  call EndSub(subname)
end subroutine


subroutine HistoryGetDouble0PointerTimeD(file, varname, array, time)
  !
  ! 将来廃止予定です。*time* は *range* に置き換え、文字型で与えて下さい。
  !
  use gt4_history, only: HistoryGetPointer
  use dc_string, only: toChar
  use dc_types, only: DP, STRING
  use dc_trace, only: Beginsub, Endsub, DbgMessage
  character(*), intent(in) :: file, varname
  real(DP), intent(in)               :: time
  real(DP), pointer :: array ! (out)
  character(*), parameter :: subname = "HistoryGetDouble0PointerTimeD"
continue
  call BeginSub(subname, 'file=%c varname=%c time=%c', &
    & c1=trim(file), c2=trim(varname), c3=toChar(time))
  call HistoryGetPointer(file=file, &
    & varname=varname, array=array, range=toChar(time))
  call EndSub(subname)
end subroutine


subroutine HistoryGetReal0PointerTimeD(file, varname, array, time)
  !
  ! 将来廃止予定です。*time* は *range* に置き換え、文字型で与えて下さい。
  !
  use gt4_history, only: HistoryGetPointer
  use dc_string, only: toChar
  use dc_types, only: DP, STRING
  use dc_trace, only: Beginsub, Endsub, DbgMessage
  character(*), intent(in) :: file, varname
  real(DP), intent(in)               :: time
  real, pointer :: array ! (out)
  character(*), parameter :: subname = "HistoryGetReal0PointerTimeD"
continue
  call BeginSub(subname, 'file=%c varname=%c time=%c', &
    & c1=trim(file), c2=trim(varname), c3=toChar(time))
  call HistoryGetPointer(file=file, &
    & varname=varname, array=array, range=toChar(time))
  call EndSub(subname)
end subroutine


subroutine HistoryGetDouble1Pointer(file, varname, array, range)
  !
  ! Double 型ポインタ配列用 1 次元配列用データ入力サブルーチン
  !
  use gtdata_types, only: GT_VARIABLE
  use gtdata_generic, only: Open, Inquire, Close, Get
  use dc_string, only: toChar
  use dc_present,only: present_select
  use dc_types, only: DP, STRING
  use dc_message, only: MessageNotify
  use dc_trace, only: Beginsub, Endsub, DbgMessage
  character(*), intent(in):: file, varname
  character(*), intent(in), optional:: range
  real(DP), pointer :: array(:) ! (out)
  type(GT_VARIABLE)                  :: var
  character(STRING)                  :: url, actual_url
  character(*), parameter :: subname = "HistoryGetDouble1Pointer"
  interface
    subroutine lookup_growable_url(file, varname, url, range, err)
      character(*), intent(in) :: file           ! ファイル名
      character(*), intent(in) :: varname        ! 変数名
      character(*), intent(out) :: url           ! gtool変数化した文字列
      character(*), intent(in), optional:: range ! 範囲限定や一点切り出し指定
      logical, intent(out), optional :: err      ! エラーのフラグ
    end subroutine lookup_growable_url
  end interface
  interface
    subroutine actual_iorange_dump(url, actual_url, err)
      character(*), intent(in) :: url            ! 変数 URL
      character(*), intent(out), optional :: actual_url
                                                 ! 正確な入出力範囲指定
      logical, intent(out), optional :: err      ! エラーのフラグ
    end subroutine actual_iorange_dump
  end interface
continue
  call BeginSub(subname, 'file=%c varname=%c range=%c', &
    & c1=trim(file), c2=trim(varname), &
    & c3=trim(present_select('', 'no-range', range)))
  ! 必要な情報を gtool 変数化
  call lookup_growable_url(file, varname, url, range)
  call DbgMessage('@ url =%c', c1=trim(url))
  ! いよいよデータ取得
  call Open(var, url)
  call Get(var, array)
  call Close(var)
  call actual_iorange_dump(url, actual_url)
  call MessageNotify('M', subname, 'Input %c', c1=trim(actual_url))
  call EndSub(subname)
end subroutine


subroutine HistoryGetDouble2Pointer(file, varname, array, range)
  !
  ! Double 型ポインタ配列用 2 次元配列用データ入力サブルーチン
  !
  use gtdata_types, only: GT_VARIABLE
  use gtdata_generic, only: Open, Inquire, Close, Get
  use dc_string, only: toChar
  use dc_present,only: present_select
  use dc_types, only: DP, STRING
  use dc_message, only: MessageNotify
  use dc_trace, only: Beginsub, Endsub, DbgMessage
  character(*), intent(in):: file, varname
  character(*), intent(in), optional:: range
  real(DP), pointer :: array(:,:) ! (out)
  type(GT_VARIABLE)                  :: var
  character(STRING)                  :: url, actual_url
  character(*), parameter :: subname = "HistoryGetDouble2Pointer"
  interface
    subroutine lookup_growable_url(file, varname, url, range, err)
      character(*), intent(in) :: file           ! ファイル名
      character(*), intent(in) :: varname        ! 変数名
      character(*), intent(out) :: url           ! gtool変数化した文字列
      character(*), intent(in), optional:: range ! 範囲限定や一点切り出し指定
      logical, intent(out), optional :: err      ! エラーのフラグ
    end subroutine lookup_growable_url
  end interface
  interface
    subroutine actual_iorange_dump(url, actual_url, err)
      character(*), intent(in) :: url            ! 変数 URL
      character(*), intent(out), optional :: actual_url
                                                 ! 正確な入出力範囲指定
      logical, intent(out), optional :: err      ! エラーのフラグ
    end subroutine actual_iorange_dump
  end interface
continue
  call BeginSub(subname, 'file=%c varname=%c range=%c', &
    & c1=trim(file), c2=trim(varname), &
    & c3=trim(present_select('', 'no-range', range)))
  ! 必要な情報を gtool 変数化
  call lookup_growable_url(file, varname, url, range)
  call DbgMessage('@ url =%c', c1=trim(url))
  ! いよいよデータ取得
  call Open(var, url)
  call Get(var, array)
  call Close(var)
  call actual_iorange_dump(url, actual_url)
  call MessageNotify('M', subname, 'Input %c', c1=trim(actual_url))
  call EndSub(subname)
end subroutine


subroutine HistoryGetDouble3Pointer(file, varname, array, range)
  !
  ! Double 型ポインタ配列用 3 次元配列用データ入力サブルーチン
  !
  use gtdata_types, only: GT_VARIABLE
  use gtdata_generic, only: Open, Inquire, Close, Get
  use dc_string, only: toChar
  use dc_present,only: present_select
  use dc_types, only: DP, STRING
  use dc_message, only: MessageNotify
  use dc_trace, only: Beginsub, Endsub, DbgMessage
  character(*), intent(in):: file, varname
  character(*), intent(in), optional:: range
  real(DP), pointer :: array(:,:,:) ! (out)
  type(GT_VARIABLE)                  :: var
  character(STRING)                  :: url, actual_url
  character(*), parameter :: subname = "HistoryGetDouble3Pointer"
  interface
    subroutine lookup_growable_url(file, varname, url, range, err)
      character(*), intent(in) :: file           ! ファイル名
      character(*), intent(in) :: varname        ! 変数名
      character(*), intent(out) :: url           ! gtool変数化した文字列
      character(*), intent(in), optional:: range ! 範囲限定や一点切り出し指定
      logical, intent(out), optional :: err      ! エラーのフラグ
    end subroutine lookup_growable_url
  end interface
  interface
    subroutine actual_iorange_dump(url, actual_url, err)
      character(*), intent(in) :: url            ! 変数 URL
      character(*), intent(out), optional :: actual_url
                                                 ! 正確な入出力範囲指定
      logical, intent(out), optional :: err      ! エラーのフラグ
    end subroutine actual_iorange_dump
  end interface
continue
  call BeginSub(subname, 'file=%c varname=%c range=%c', &
    & c1=trim(file), c2=trim(varname), &
    & c3=trim(present_select('', 'no-range', range)))
  ! 必要な情報を gtool 変数化
  call lookup_growable_url(file, varname, url, range)
  call DbgMessage('@ url =%c', c1=trim(url))
  ! いよいよデータ取得
  call Open(var, url)
  call Get(var, array)
  call Close(var)
  call actual_iorange_dump(url, actual_url)
  call MessageNotify('M', subname, 'Input %c', c1=trim(actual_url))
  call EndSub(subname)
end subroutine


subroutine HistoryGetDouble4Pointer(file, varname, array, range)
  !
  ! Double 型ポインタ配列用 4 次元配列用データ入力サブルーチン
  !
  use gtdata_types, only: GT_VARIABLE
  use gtdata_generic, only: Open, Inquire, Close, Get
  use dc_string, only: toChar
  use dc_present,only: present_select
  use dc_types, only: DP, STRING
  use dc_message, only: MessageNotify
  use dc_trace, only: Beginsub, Endsub, DbgMessage
  character(*), intent(in):: file, varname
  character(*), intent(in), optional:: range
  real(DP), pointer :: array(:,:,:,:) ! (out)
  type(GT_VARIABLE)                  :: var
  character(STRING)                  :: url, actual_url
  character(*), parameter :: subname = "HistoryGetDouble4Pointer"
  interface
    subroutine lookup_growable_url(file, varname, url, range, err)
      character(*), intent(in) :: file           ! ファイル名
      character(*), intent(in) :: varname        ! 変数名
      character(*), intent(out) :: url           ! gtool変数化した文字列
      character(*), intent(in), optional:: range ! 範囲限定や一点切り出し指定
      logical, intent(out), optional :: err      ! エラーのフラグ
    end subroutine lookup_growable_url
  end interface
  interface
    subroutine actual_iorange_dump(url, actual_url, err)
      character(*), intent(in) :: url            ! 変数 URL
      character(*), intent(out), optional :: actual_url
                                                 ! 正確な入出力範囲指定
      logical, intent(out), optional :: err      ! エラーのフラグ
    end subroutine actual_iorange_dump
  end interface
continue
  call BeginSub(subname, 'file=%c varname=%c range=%c', &
    & c1=trim(file), c2=trim(varname), &
    & c3=trim(present_select('', 'no-range', range)))
  ! 必要な情報を gtool 変数化
  call lookup_growable_url(file, varname, url, range)
  call DbgMessage('@ url =%c', c1=trim(url))
  ! いよいよデータ取得
  call Open(var, url)
  call Get(var, array)
  call Close(var)
  call actual_iorange_dump(url, actual_url)
  call MessageNotify('M', subname, 'Input %c', c1=trim(actual_url))
  call EndSub(subname)
end subroutine


subroutine HistoryGetDouble5Pointer(file, varname, array, range)
  !
  ! Double 型ポインタ配列用 5 次元配列用データ入力サブルーチン
  !
  use gtdata_types, only: GT_VARIABLE
  use gtdata_generic, only: Open, Inquire, Close, Get
  use dc_string, only: toChar
  use dc_present,only: present_select
  use dc_types, only: DP, STRING
  use dc_message, only: MessageNotify
  use dc_trace, only: Beginsub, Endsub, DbgMessage
  character(*), intent(in):: file, varname
  character(*), intent(in), optional:: range
  real(DP), pointer :: array(:,:,:,:,:) ! (out)
  type(GT_VARIABLE)                  :: var
  character(STRING)                  :: url, actual_url
  character(*), parameter :: subname = "HistoryGetDouble5Pointer"
  interface
    subroutine lookup_growable_url(file, varname, url, range, err)
      character(*), intent(in) :: file           ! ファイル名
      character(*), intent(in) :: varname        ! 変数名
      character(*), intent(out) :: url           ! gtool変数化した文字列
      character(*), intent(in), optional:: range ! 範囲限定や一点切り出し指定
      logical, intent(out), optional :: err      ! エラーのフラグ
    end subroutine lookup_growable_url
  end interface
  interface
    subroutine actual_iorange_dump(url, actual_url, err)
      character(*), intent(in) :: url            ! 変数 URL
      character(*), intent(out), optional :: actual_url
                                                 ! 正確な入出力範囲指定
      logical, intent(out), optional :: err      ! エラーのフラグ
    end subroutine actual_iorange_dump
  end interface
continue
  call BeginSub(subname, 'file=%c varname=%c range=%c', &
    & c1=trim(file), c2=trim(varname), &
    & c3=trim(present_select('', 'no-range', range)))
  ! 必要な情報を gtool 変数化
  call lookup_growable_url(file, varname, url, range)
  call DbgMessage('@ url =%c', c1=trim(url))
  ! いよいよデータ取得
  call Open(var, url)
  call Get(var, array)
  call Close(var)
  call actual_iorange_dump(url, actual_url)
  call MessageNotify('M', subname, 'Input %c', c1=trim(actual_url))
  call EndSub(subname)
end subroutine


subroutine HistoryGetDouble6Pointer(file, varname, array, range)
  !
  ! Double 型ポインタ配列用 6 次元配列用データ入力サブルーチン
  !
  use gtdata_types, only: GT_VARIABLE
  use gtdata_generic, only: Open, Inquire, Close, Get
  use dc_string, only: toChar
  use dc_present,only: present_select
  use dc_types, only: DP, STRING
  use dc_message, only: MessageNotify
  use dc_trace, only: Beginsub, Endsub, DbgMessage
  character(*), intent(in):: file, varname
  character(*), intent(in), optional:: range
  real(DP), pointer :: array(:,:,:,:,:,:) ! (out)
  type(GT_VARIABLE)                  :: var
  character(STRING)                  :: url, actual_url
  character(*), parameter :: subname = "HistoryGetDouble6Pointer"
  interface
    subroutine lookup_growable_url(file, varname, url, range, err)
      character(*), intent(in) :: file           ! ファイル名
      character(*), intent(in) :: varname        ! 変数名
      character(*), intent(out) :: url           ! gtool変数化した文字列
      character(*), intent(in), optional:: range ! 範囲限定や一点切り出し指定
      logical, intent(out), optional :: err      ! エラーのフラグ
    end subroutine lookup_growable_url
  end interface
  interface
    subroutine actual_iorange_dump(url, actual_url, err)
      character(*), intent(in) :: url            ! 変数 URL
      character(*), intent(out), optional :: actual_url
                                                 ! 正確な入出力範囲指定
      logical, intent(out), optional :: err      ! エラーのフラグ
    end subroutine actual_iorange_dump
  end interface
continue
  call BeginSub(subname, 'file=%c varname=%c range=%c', &
    & c1=trim(file), c2=trim(varname), &
    & c3=trim(present_select('', 'no-range', range)))
  ! 必要な情報を gtool 変数化
  call lookup_growable_url(file, varname, url, range)
  call DbgMessage('@ url =%c', c1=trim(url))
  ! いよいよデータ取得
  call Open(var, url)
  call Get(var, array)
  call Close(var)
  call actual_iorange_dump(url, actual_url)
  call MessageNotify('M', subname, 'Input %c', c1=trim(actual_url))
  call EndSub(subname)
end subroutine


subroutine HistoryGetDouble7Pointer(file, varname, array, range)
  !
  ! Double 型ポインタ配列用 7 次元配列用データ入力サブルーチン
  !
  use gtdata_types, only: GT_VARIABLE
  use gtdata_generic, only: Open, Inquire, Close, Get
  use dc_string, only: toChar
  use dc_present,only: present_select
  use dc_types, only: DP, STRING
  use dc_message, only: MessageNotify
  use dc_trace, only: Beginsub, Endsub, DbgMessage
  character(*), intent(in):: file, varname
  character(*), intent(in), optional:: range
  real(DP), pointer :: array(:,:,:,:,:,:,:) ! (out)
  type(GT_VARIABLE)                  :: var
  character(STRING)                  :: url, actual_url
  character(*), parameter :: subname = "HistoryGetDouble7Pointer"
  interface
    subroutine lookup_growable_url(file, varname, url, range, err)
      character(*), intent(in) :: file           ! ファイル名
      character(*), intent(in) :: varname        ! 変数名
      character(*), intent(out) :: url           ! gtool変数化した文字列
      character(*), intent(in), optional:: range ! 範囲限定や一点切り出し指定
      logical, intent(out), optional :: err      ! エラーのフラグ
    end subroutine lookup_growable_url
  end interface
  interface
    subroutine actual_iorange_dump(url, actual_url, err)
      character(*), intent(in) :: url            ! 変数 URL
      character(*), intent(out), optional :: actual_url
                                                 ! 正確な入出力範囲指定
      logical, intent(out), optional :: err      ! エラーのフラグ
    end subroutine actual_iorange_dump
  end interface
continue
  call BeginSub(subname, 'file=%c varname=%c range=%c', &
    & c1=trim(file), c2=trim(varname), &
    & c3=trim(present_select('', 'no-range', range)))
  ! 必要な情報を gtool 変数化
  call lookup_growable_url(file, varname, url, range)
  call DbgMessage('@ url =%c', c1=trim(url))
  ! いよいよデータ取得
  call Open(var, url)
  call Get(var, array)
  call Close(var)
  call actual_iorange_dump(url, actual_url)
  call MessageNotify('M', subname, 'Input %c', c1=trim(actual_url))
  call EndSub(subname)
end subroutine


subroutine HistoryGetReal1Pointer(file, varname, array, range)
  !
  ! Real 型ポインタ配列用 1 次元配列用データ入力サブルーチン
  !
  use gtdata_types, only: GT_VARIABLE
  use gtdata_generic, only: Open, Inquire, Close, Get
  use dc_string, only: toChar
  use dc_present,only: present_select
  use dc_types, only: DP, STRING
  use dc_message, only: MessageNotify
  use dc_trace, only: Beginsub, Endsub, DbgMessage
  character(*), intent(in):: file, varname
  character(*), intent(in), optional:: range
  real, pointer :: array(:) ! (out)
  type(GT_VARIABLE)                  :: var
  character(STRING)                  :: url, actual_url
  character(*), parameter :: subname = "HistoryGetReal1Pointer"
  interface
    subroutine lookup_growable_url(file, varname, url, range, err)
      character(*), intent(in) :: file           ! ファイル名
      character(*), intent(in) :: varname        ! 変数名
      character(*), intent(out) :: url           ! gtool変数化した文字列
      character(*), intent(in), optional:: range ! 範囲限定や一点切り出し指定
      logical, intent(out), optional :: err      ! エラーのフラグ
    end subroutine lookup_growable_url
  end interface
  interface
    subroutine actual_iorange_dump(url, actual_url, err)
      character(*), intent(in) :: url            ! 変数 URL
      character(*), intent(out), optional :: actual_url
                                                 ! 正確な入出力範囲指定
      logical, intent(out), optional :: err      ! エラーのフラグ
    end subroutine actual_iorange_dump
  end interface
continue
  call BeginSub(subname, 'file=%c varname=%c range=%c', &
    & c1=trim(file), c2=trim(varname), &
    & c3=trim(present_select('', 'no-range', range)))
  ! 必要な情報を gtool 変数化
  call lookup_growable_url(file, varname, url, range)
  call DbgMessage('@ url =%c', c1=trim(url))
  ! いよいよデータ取得
  call Open(var, url)
  call Get(var, array)
  call Close(var)
  call actual_iorange_dump(url, actual_url)
  call MessageNotify('M', subname, 'Input %c', c1=trim(actual_url))
  call EndSub(subname)
end subroutine


subroutine HistoryGetReal2Pointer(file, varname, array, range)
  !
  ! Real 型ポインタ配列用 2 次元配列用データ入力サブルーチン
  !
  use gtdata_types, only: GT_VARIABLE
  use gtdata_generic, only: Open, Inquire, Close, Get
  use dc_string, only: toChar
  use dc_present,only: present_select
  use dc_types, only: DP, STRING
  use dc_message, only: MessageNotify
  use dc_trace, only: Beginsub, Endsub, DbgMessage
  character(*), intent(in):: file, varname
  character(*), intent(in), optional:: range
  real, pointer :: array(:,:) ! (out)
  type(GT_VARIABLE)                  :: var
  character(STRING)                  :: url, actual_url
  character(*), parameter :: subname = "HistoryGetReal2Pointer"
  interface
    subroutine lookup_growable_url(file, varname, url, range, err)
      character(*), intent(in) :: file           ! ファイル名
      character(*), intent(in) :: varname        ! 変数名
      character(*), intent(out) :: url           ! gtool変数化した文字列
      character(*), intent(in), optional:: range ! 範囲限定や一点切り出し指定
      logical, intent(out), optional :: err      ! エラーのフラグ
    end subroutine lookup_growable_url
  end interface
  interface
    subroutine actual_iorange_dump(url, actual_url, err)
      character(*), intent(in) :: url            ! 変数 URL
      character(*), intent(out), optional :: actual_url
                                                 ! 正確な入出力範囲指定
      logical, intent(out), optional :: err      ! エラーのフラグ
    end subroutine actual_iorange_dump
  end interface
continue
  call BeginSub(subname, 'file=%c varname=%c range=%c', &
    & c1=trim(file), c2=trim(varname), &
    & c3=trim(present_select('', 'no-range', range)))
  ! 必要な情報を gtool 変数化
  call lookup_growable_url(file, varname, url, range)
  call DbgMessage('@ url =%c', c1=trim(url))
  ! いよいよデータ取得
  call Open(var, url)
  call Get(var, array)
  call Close(var)
  call actual_iorange_dump(url, actual_url)
  call MessageNotify('M', subname, 'Input %c', c1=trim(actual_url))
  call EndSub(subname)
end subroutine


subroutine HistoryGetReal3Pointer(file, varname, array, range)
  !
  ! Real 型ポインタ配列用 3 次元配列用データ入力サブルーチン
  !
  use gtdata_types, only: GT_VARIABLE
  use gtdata_generic, only: Open, Inquire, Close, Get
  use dc_string, only: toChar
  use dc_present,only: present_select
  use dc_types, only: DP, STRING
  use dc_message, only: MessageNotify
  use dc_trace, only: Beginsub, Endsub, DbgMessage
  character(*), intent(in):: file, varname
  character(*), intent(in), optional:: range
  real, pointer :: array(:,:,:) ! (out)
  type(GT_VARIABLE)                  :: var
  character(STRING)                  :: url, actual_url
  character(*), parameter :: subname = "HistoryGetReal3Pointer"
  interface
    subroutine lookup_growable_url(file, varname, url, range, err)
      character(*), intent(in) :: file           ! ファイル名
      character(*), intent(in) :: varname        ! 変数名
      character(*), intent(out) :: url           ! gtool変数化した文字列
      character(*), intent(in), optional:: range ! 範囲限定や一点切り出し指定
      logical, intent(out), optional :: err      ! エラーのフラグ
    end subroutine lookup_growable_url
  end interface
  interface
    subroutine actual_iorange_dump(url, actual_url, err)
      character(*), intent(in) :: url            ! 変数 URL
      character(*), intent(out), optional :: actual_url
                                                 ! 正確な入出力範囲指定
      logical, intent(out), optional :: err      ! エラーのフラグ
    end subroutine actual_iorange_dump
  end interface
continue
  call BeginSub(subname, 'file=%c varname=%c range=%c', &
    & c1=trim(file), c2=trim(varname), &
    & c3=trim(present_select('', 'no-range', range)))
  ! 必要な情報を gtool 変数化
  call lookup_growable_url(file, varname, url, range)
  call DbgMessage('@ url =%c', c1=trim(url))
  ! いよいよデータ取得
  call Open(var, url)
  call Get(var, array)
  call Close(var)
  call actual_iorange_dump(url, actual_url)
  call MessageNotify('M', subname, 'Input %c', c1=trim(actual_url))
  call EndSub(subname)
end subroutine


subroutine HistoryGetReal4Pointer(file, varname, array, range)
  !
  ! Real 型ポインタ配列用 4 次元配列用データ入力サブルーチン
  !
  use gtdata_types, only: GT_VARIABLE
  use gtdata_generic, only: Open, Inquire, Close, Get
  use dc_string, only: toChar
  use dc_present,only: present_select
  use dc_types, only: DP, STRING
  use dc_message, only: MessageNotify
  use dc_trace, only: Beginsub, Endsub, DbgMessage
  character(*), intent(in):: file, varname
  character(*), intent(in), optional:: range
  real, pointer :: array(:,:,:,:) ! (out)
  type(GT_VARIABLE)                  :: var
  character(STRING)                  :: url, actual_url
  character(*), parameter :: subname = "HistoryGetReal4Pointer"
  interface
    subroutine lookup_growable_url(file, varname, url, range, err)
      character(*), intent(in) :: file           ! ファイル名
      character(*), intent(in) :: varname        ! 変数名
      character(*), intent(out) :: url           ! gtool変数化した文字列
      character(*), intent(in), optional:: range ! 範囲限定や一点切り出し指定
      logical, intent(out), optional :: err      ! エラーのフラグ
    end subroutine lookup_growable_url
  end interface
  interface
    subroutine actual_iorange_dump(url, actual_url, err)
      character(*), intent(in) :: url            ! 変数 URL
      character(*), intent(out), optional :: actual_url
                                                 ! 正確な入出力範囲指定
      logical, intent(out), optional :: err      ! エラーのフラグ
    end subroutine actual_iorange_dump
  end interface
continue
  call BeginSub(subname, 'file=%c varname=%c range=%c', &
    & c1=trim(file), c2=trim(varname), &
    & c3=trim(present_select('', 'no-range', range)))
  ! 必要な情報を gtool 変数化
  call lookup_growable_url(file, varname, url, range)
  call DbgMessage('@ url =%c', c1=trim(url))
  ! いよいよデータ取得
  call Open(var, url)
  call Get(var, array)
  call Close(var)
  call actual_iorange_dump(url, actual_url)
  call MessageNotify('M', subname, 'Input %c', c1=trim(actual_url))
  call EndSub(subname)
end subroutine


subroutine HistoryGetReal5Pointer(file, varname, array, range)
  !
  ! Real 型ポインタ配列用 5 次元配列用データ入力サブルーチン
  !
  use gtdata_types, only: GT_VARIABLE
  use gtdata_generic, only: Open, Inquire, Close, Get
  use dc_string, only: toChar
  use dc_present,only: present_select
  use dc_types, only: DP, STRING
  use dc_message, only: MessageNotify
  use dc_trace, only: Beginsub, Endsub, DbgMessage
  character(*), intent(in):: file, varname
  character(*), intent(in), optional:: range
  real, pointer :: array(:,:,:,:,:) ! (out)
  type(GT_VARIABLE)                  :: var
  character(STRING)                  :: url, actual_url
  character(*), parameter :: subname = "HistoryGetReal5Pointer"
  interface
    subroutine lookup_growable_url(file, varname, url, range, err)
      character(*), intent(in) :: file           ! ファイル名
      character(*), intent(in) :: varname        ! 変数名
      character(*), intent(out) :: url           ! gtool変数化した文字列
      character(*), intent(in), optional:: range ! 範囲限定や一点切り出し指定
      logical, intent(out), optional :: err      ! エラーのフラグ
    end subroutine lookup_growable_url
  end interface
  interface
    subroutine actual_iorange_dump(url, actual_url, err)
      character(*), intent(in) :: url            ! 変数 URL
      character(*), intent(out), optional :: actual_url
                                                 ! 正確な入出力範囲指定
      logical, intent(out), optional :: err      ! エラーのフラグ
    end subroutine actual_iorange_dump
  end interface
continue
  call BeginSub(subname, 'file=%c varname=%c range=%c', &
    & c1=trim(file), c2=trim(varname), &
    & c3=trim(present_select('', 'no-range', range)))
  ! 必要な情報を gtool 変数化
  call lookup_growable_url(file, varname, url, range)
  call DbgMessage('@ url =%c', c1=trim(url))
  ! いよいよデータ取得
  call Open(var, url)
  call Get(var, array)
  call Close(var)
  call actual_iorange_dump(url, actual_url)
  call MessageNotify('M', subname, 'Input %c', c1=trim(actual_url))
  call EndSub(subname)
end subroutine


subroutine HistoryGetReal6Pointer(file, varname, array, range)
  !
  ! Real 型ポインタ配列用 6 次元配列用データ入力サブルーチン
  !
  use gtdata_types, only: GT_VARIABLE
  use gtdata_generic, only: Open, Inquire, Close, Get
  use dc_string, only: toChar
  use dc_present,only: present_select
  use dc_types, only: DP, STRING
  use dc_message, only: MessageNotify
  use dc_trace, only: Beginsub, Endsub, DbgMessage
  character(*), intent(in):: file, varname
  character(*), intent(in), optional:: range
  real, pointer :: array(:,:,:,:,:,:) ! (out)
  type(GT_VARIABLE)                  :: var
  character(STRING)                  :: url, actual_url
  character(*), parameter :: subname = "HistoryGetReal6Pointer"
  interface
    subroutine lookup_growable_url(file, varname, url, range, err)
      character(*), intent(in) :: file           ! ファイル名
      character(*), intent(in) :: varname        ! 変数名
      character(*), intent(out) :: url           ! gtool変数化した文字列
      character(*), intent(in), optional:: range ! 範囲限定や一点切り出し指定
      logical, intent(out), optional :: err      ! エラーのフラグ
    end subroutine lookup_growable_url
  end interface
  interface
    subroutine actual_iorange_dump(url, actual_url, err)
      character(*), intent(in) :: url            ! 変数 URL
      character(*), intent(out), optional :: actual_url
                                                 ! 正確な入出力範囲指定
      logical, intent(out), optional :: err      ! エラーのフラグ
    end subroutine actual_iorange_dump
  end interface
continue
  call BeginSub(subname, 'file=%c varname=%c range=%c', &
    & c1=trim(file), c2=trim(varname), &
    & c3=trim(present_select('', 'no-range', range)))
  ! 必要な情報を gtool 変数化
  call lookup_growable_url(file, varname, url, range)
  call DbgMessage('@ url =%c', c1=trim(url))
  ! いよいよデータ取得
  call Open(var, url)
  call Get(var, array)
  call Close(var)
  call actual_iorange_dump(url, actual_url)
  call MessageNotify('M', subname, 'Input %c', c1=trim(actual_url))
  call EndSub(subname)
end subroutine


subroutine HistoryGetReal7Pointer(file, varname, array, range)
  !
  ! Real 型ポインタ配列用 7 次元配列用データ入力サブルーチン
  !
  use gtdata_types, only: GT_VARIABLE
  use gtdata_generic, only: Open, Inquire, Close, Get
  use dc_string, only: toChar
  use dc_present,only: present_select
  use dc_types, only: DP, STRING
  use dc_message, only: MessageNotify
  use dc_trace, only: Beginsub, Endsub, DbgMessage
  character(*), intent(in):: file, varname
  character(*), intent(in), optional:: range
  real, pointer :: array(:,:,:,:,:,:,:) ! (out)
  type(GT_VARIABLE)                  :: var
  character(STRING)                  :: url, actual_url
  character(*), parameter :: subname = "HistoryGetReal7Pointer"
  interface
    subroutine lookup_growable_url(file, varname, url, range, err)
      character(*), intent(in) :: file           ! ファイル名
      character(*), intent(in) :: varname        ! 変数名
      character(*), intent(out) :: url           ! gtool変数化した文字列
      character(*), intent(in), optional:: range ! 範囲限定や一点切り出し指定
      logical, intent(out), optional :: err      ! エラーのフラグ
    end subroutine lookup_growable_url
  end interface
  interface
    subroutine actual_iorange_dump(url, actual_url, err)
      character(*), intent(in) :: url            ! 変数 URL
      character(*), intent(out), optional :: actual_url
                                                 ! 正確な入出力範囲指定
      logical, intent(out), optional :: err      ! エラーのフラグ
    end subroutine actual_iorange_dump
  end interface
continue
  call BeginSub(subname, 'file=%c varname=%c range=%c', &
    & c1=trim(file), c2=trim(varname), &
    & c3=trim(present_select('', 'no-range', range)))
  ! 必要な情報を gtool 変数化
  call lookup_growable_url(file, varname, url, range)
  call DbgMessage('@ url =%c', c1=trim(url))
  ! いよいよデータ取得
  call Open(var, url)
  call Get(var, array)
  call Close(var)
  call actual_iorange_dump(url, actual_url)
  call MessageNotify('M', subname, 'Input %c', c1=trim(actual_url))
  call EndSub(subname)
end subroutine


subroutine HistoryGetDouble1PointerTimeR(file, varname, array, time)
  !
  ! 将来廃止予定です。*time* は *range* に置き換え、文字型で与えて下さい。
  !
  use gt4_history, only: HistoryGetPointer
  use dc_string, only: toChar
  use dc_types, only: DP, STRING
  use dc_trace, only: Beginsub, Endsub, DbgMessage
  character(*), intent(in):: file, varname
  real, intent(in)    :: time
  real(DP), pointer :: array(:) ! (out)
  character(*), parameter :: subname = "HistoryGetDouble1PointerTimeR"
continue
  call BeginSub(subname, 'file=%c varname=%c time=%c', &
    & c1=trim(file), c2=trim(varname), c3=toChar(time))
  call HistoryGetPointer( &
    & file=file, varname=varname, array=array, range=toChar(time))
  call EndSub(subname)
end subroutine


subroutine HistoryGetDouble2PointerTimeR(file, varname, array, time)
  !
  ! 将来廃止予定です。*time* は *range* に置き換え、文字型で与えて下さい。
  !
  use gt4_history, only: HistoryGetPointer
  use dc_string, only: toChar
  use dc_types, only: DP, STRING
  use dc_trace, only: Beginsub, Endsub, DbgMessage
  character(*), intent(in):: file, varname
  real, intent(in)    :: time
  real(DP), pointer :: array(:,:) ! (out)
  character(*), parameter :: subname = "HistoryGetDouble2PointerTimeR"
continue
  call BeginSub(subname, 'file=%c varname=%c time=%c', &
    & c1=trim(file), c2=trim(varname), c3=toChar(time))
  call HistoryGetPointer( &
    & file=file, varname=varname, array=array, range=toChar(time))
  call EndSub(subname)
end subroutine


subroutine HistoryGetDouble3PointerTimeR(file, varname, array, time)
  !
  ! 将来廃止予定です。*time* は *range* に置き換え、文字型で与えて下さい。
  !
  use gt4_history, only: HistoryGetPointer
  use dc_string, only: toChar
  use dc_types, only: DP, STRING
  use dc_trace, only: Beginsub, Endsub, DbgMessage
  character(*), intent(in):: file, varname
  real, intent(in)    :: time
  real(DP), pointer :: array(:,:,:) ! (out)
  character(*), parameter :: subname = "HistoryGetDouble3PointerTimeR"
continue
  call BeginSub(subname, 'file=%c varname=%c time=%c', &
    & c1=trim(file), c2=trim(varname), c3=toChar(time))
  call HistoryGetPointer( &
    & file=file, varname=varname, array=array, range=toChar(time))
  call EndSub(subname)
end subroutine


subroutine HistoryGetDouble4PointerTimeR(file, varname, array, time)
  !
  ! 将来廃止予定です。*time* は *range* に置き換え、文字型で与えて下さい。
  !
  use gt4_history, only: HistoryGetPointer
  use dc_string, only: toChar
  use dc_types, only: DP, STRING
  use dc_trace, only: Beginsub, Endsub, DbgMessage
  character(*), intent(in):: file, varname
  real, intent(in)    :: time
  real(DP), pointer :: array(:,:,:,:) ! (out)
  character(*), parameter :: subname = "HistoryGetDouble4PointerTimeR"
continue
  call BeginSub(subname, 'file=%c varname=%c time=%c', &
    & c1=trim(file), c2=trim(varname), c3=toChar(time))
  call HistoryGetPointer( &
    & file=file, varname=varname, array=array, range=toChar(time))
  call EndSub(subname)
end subroutine


subroutine HistoryGetDouble5PointerTimeR(file, varname, array, time)
  !
  ! 将来廃止予定です。*time* は *range* に置き換え、文字型で与えて下さい。
  !
  use gt4_history, only: HistoryGetPointer
  use dc_string, only: toChar
  use dc_types, only: DP, STRING
  use dc_trace, only: Beginsub, Endsub, DbgMessage
  character(*), intent(in):: file, varname
  real, intent(in)    :: time
  real(DP), pointer :: array(:,:,:,:,:) ! (out)
  character(*), parameter :: subname = "HistoryGetDouble5PointerTimeR"
continue
  call BeginSub(subname, 'file=%c varname=%c time=%c', &
    & c1=trim(file), c2=trim(varname), c3=toChar(time))
  call HistoryGetPointer( &
    & file=file, varname=varname, array=array, range=toChar(time))
  call EndSub(subname)
end subroutine


subroutine HistoryGetDouble6PointerTimeR(file, varname, array, time)
  !
  ! 将来廃止予定です。*time* は *range* に置き換え、文字型で与えて下さい。
  !
  use gt4_history, only: HistoryGetPointer
  use dc_string, only: toChar
  use dc_types, only: DP, STRING
  use dc_trace, only: Beginsub, Endsub, DbgMessage
  character(*), intent(in):: file, varname
  real, intent(in)    :: time
  real(DP), pointer :: array(:,:,:,:,:,:) ! (out)
  character(*), parameter :: subname = "HistoryGetDouble6PointerTimeR"
continue
  call BeginSub(subname, 'file=%c varname=%c time=%c', &
    & c1=trim(file), c2=trim(varname), c3=toChar(time))
  call HistoryGetPointer( &
    & file=file, varname=varname, array=array, range=toChar(time))
  call EndSub(subname)
end subroutine


subroutine HistoryGetDouble7PointerTimeR(file, varname, array, time)
  !
  ! 将来廃止予定です。*time* は *range* に置き換え、文字型で与えて下さい。
  !
  use gt4_history, only: HistoryGetPointer
  use dc_string, only: toChar
  use dc_types, only: DP, STRING
  use dc_trace, only: Beginsub, Endsub, DbgMessage
  character(*), intent(in):: file, varname
  real, intent(in)    :: time
  real(DP), pointer :: array(:,:,:,:,:,:,:) ! (out)
  character(*), parameter :: subname = "HistoryGetDouble7PointerTimeR"
continue
  call BeginSub(subname, 'file=%c varname=%c time=%c', &
    & c1=trim(file), c2=trim(varname), c3=toChar(time))
  call HistoryGetPointer( &
    & file=file, varname=varname, array=array, range=toChar(time))
  call EndSub(subname)
end subroutine


subroutine HistoryGetReal1PointerTimeR(file, varname, array, time)
  !
  ! 将来廃止予定です。*time* は *range* に置き換え、文字型で与えて下さい。
  !
  use gt4_history, only: HistoryGetPointer
  use dc_string, only: toChar
  use dc_types, only: DP, STRING
  use dc_trace, only: Beginsub, Endsub, DbgMessage
  character(*), intent(in):: file, varname
  real, intent(in)    :: time
  real, pointer :: array(:) ! (out)
  character(*), parameter :: subname = "HistoryGetReal1PointerTimeR"
continue
  call BeginSub(subname, 'file=%c varname=%c time=%c', &
    & c1=trim(file), c2=trim(varname), c3=toChar(time))
  call HistoryGetPointer( &
    & file=file, varname=varname, array=array, range=toChar(time))
  call EndSub(subname)
end subroutine


subroutine HistoryGetReal2PointerTimeR(file, varname, array, time)
  !
  ! 将来廃止予定です。*time* は *range* に置き換え、文字型で与えて下さい。
  !
  use gt4_history, only: HistoryGetPointer
  use dc_string, only: toChar
  use dc_types, only: DP, STRING
  use dc_trace, only: Beginsub, Endsub, DbgMessage
  character(*), intent(in):: file, varname
  real, intent(in)    :: time
  real, pointer :: array(:,:) ! (out)
  character(*), parameter :: subname = "HistoryGetReal2PointerTimeR"
continue
  call BeginSub(subname, 'file=%c varname=%c time=%c', &
    & c1=trim(file), c2=trim(varname), c3=toChar(time))
  call HistoryGetPointer( &
    & file=file, varname=varname, array=array, range=toChar(time))
  call EndSub(subname)
end subroutine


subroutine HistoryGetReal3PointerTimeR(file, varname, array, time)
  !
  ! 将来廃止予定です。*time* は *range* に置き換え、文字型で与えて下さい。
  !
  use gt4_history, only: HistoryGetPointer
  use dc_string, only: toChar
  use dc_types, only: DP, STRING
  use dc_trace, only: Beginsub, Endsub, DbgMessage
  character(*), intent(in):: file, varname
  real, intent(in)    :: time
  real, pointer :: array(:,:,:) ! (out)
  character(*), parameter :: subname = "HistoryGetReal3PointerTimeR"
continue
  call BeginSub(subname, 'file=%c varname=%c time=%c', &
    & c1=trim(file), c2=trim(varname), c3=toChar(time))
  call HistoryGetPointer( &
    & file=file, varname=varname, array=array, range=toChar(time))
  call EndSub(subname)
end subroutine


subroutine HistoryGetReal4PointerTimeR(file, varname, array, time)
  !
  ! 将来廃止予定です。*time* は *range* に置き換え、文字型で与えて下さい。
  !
  use gt4_history, only: HistoryGetPointer
  use dc_string, only: toChar
  use dc_types, only: DP, STRING
  use dc_trace, only: Beginsub, Endsub, DbgMessage
  character(*), intent(in):: file, varname
  real, intent(in)    :: time
  real, pointer :: array(:,:,:,:) ! (out)
  character(*), parameter :: subname = "HistoryGetReal4PointerTimeR"
continue
  call BeginSub(subname, 'file=%c varname=%c time=%c', &
    & c1=trim(file), c2=trim(varname), c3=toChar(time))
  call HistoryGetPointer( &
    & file=file, varname=varname, array=array, range=toChar(time))
  call EndSub(subname)
end subroutine


subroutine HistoryGetReal5PointerTimeR(file, varname, array, time)
  !
  ! 将来廃止予定です。*time* は *range* に置き換え、文字型で与えて下さい。
  !
  use gt4_history, only: HistoryGetPointer
  use dc_string, only: toChar
  use dc_types, only: DP, STRING
  use dc_trace, only: Beginsub, Endsub, DbgMessage
  character(*), intent(in):: file, varname
  real, intent(in)    :: time
  real, pointer :: array(:,:,:,:,:) ! (out)
  character(*), parameter :: subname = "HistoryGetReal5PointerTimeR"
continue
  call BeginSub(subname, 'file=%c varname=%c time=%c', &
    & c1=trim(file), c2=trim(varname), c3=toChar(time))
  call HistoryGetPointer( &
    & file=file, varname=varname, array=array, range=toChar(time))
  call EndSub(subname)
end subroutine


subroutine HistoryGetReal6PointerTimeR(file, varname, array, time)
  !
  ! 将来廃止予定です。*time* は *range* に置き換え、文字型で与えて下さい。
  !
  use gt4_history, only: HistoryGetPointer
  use dc_string, only: toChar
  use dc_types, only: DP, STRING
  use dc_trace, only: Beginsub, Endsub, DbgMessage
  character(*), intent(in):: file, varname
  real, intent(in)    :: time
  real, pointer :: array(:,:,:,:,:,:) ! (out)
  character(*), parameter :: subname = "HistoryGetReal6PointerTimeR"
continue
  call BeginSub(subname, 'file=%c varname=%c time=%c', &
    & c1=trim(file), c2=trim(varname), c3=toChar(time))
  call HistoryGetPointer( &
    & file=file, varname=varname, array=array, range=toChar(time))
  call EndSub(subname)
end subroutine


subroutine HistoryGetReal7PointerTimeR(file, varname, array, time)
  !
  ! 将来廃止予定です。*time* は *range* に置き換え、文字型で与えて下さい。
  !
  use gt4_history, only: HistoryGetPointer
  use dc_string, only: toChar
  use dc_types, only: DP, STRING
  use dc_trace, only: Beginsub, Endsub, DbgMessage
  character(*), intent(in):: file, varname
  real, intent(in)    :: time
  real, pointer :: array(:,:,:,:,:,:,:) ! (out)
  character(*), parameter :: subname = "HistoryGetReal7PointerTimeR"
continue
  call BeginSub(subname, 'file=%c varname=%c time=%c', &
    & c1=trim(file), c2=trim(varname), c3=toChar(time))
  call HistoryGetPointer( &
    & file=file, varname=varname, array=array, range=toChar(time))
  call EndSub(subname)
end subroutine


subroutine HistoryGetDouble1PointerTimeD(file, varname, array, time)
  !
  ! 将来廃止予定です。*time* は *range* に置き換え、文字型で与えて下さい。
  !
  use gt4_history, only: HistoryGetPointer
  use dc_string, only: toChar
  use dc_types, only: DP, STRING
  use dc_trace, only: Beginsub, Endsub, DbgMessage
  character(*), intent(in):: file, varname
  real(DP), intent(in)              :: time
  real(DP), pointer :: array(:) ! (out)
  character(*), parameter :: subname = "HistoryGetDouble1PointerTimeD"
continue
  call BeginSub(subname, 'file=%c varname=%c time=%c', &
    & c1=trim(file), c2=trim(varname), c3=toChar(time))
  call HistoryGetPointer( &
    & file=file, varname=varname, array=array, range=toChar(time))
  call EndSub(subname)
end subroutine


subroutine HistoryGetDouble2PointerTimeD(file, varname, array, time)
  !
  ! 将来廃止予定です。*time* は *range* に置き換え、文字型で与えて下さい。
  !
  use gt4_history, only: HistoryGetPointer
  use dc_string, only: toChar
  use dc_types, only: DP, STRING
  use dc_trace, only: Beginsub, Endsub, DbgMessage
  character(*), intent(in):: file, varname
  real(DP), intent(in)              :: time
  real(DP), pointer :: array(:,:) ! (out)
  character(*), parameter :: subname = "HistoryGetDouble2PointerTimeD"
continue
  call BeginSub(subname, 'file=%c varname=%c time=%c', &
    & c1=trim(file), c2=trim(varname), c3=toChar(time))
  call HistoryGetPointer( &
    & file=file, varname=varname, array=array, range=toChar(time))
  call EndSub(subname)
end subroutine


subroutine HistoryGetDouble3PointerTimeD(file, varname, array, time)
  !
  ! 将来廃止予定です。*time* は *range* に置き換え、文字型で与えて下さい。
  !
  use gt4_history, only: HistoryGetPointer
  use dc_string, only: toChar
  use dc_types, only: DP, STRING
  use dc_trace, only: Beginsub, Endsub, DbgMessage
  character(*), intent(in):: file, varname
  real(DP), intent(in)              :: time
  real(DP), pointer :: array(:,:,:) ! (out)
  character(*), parameter :: subname = "HistoryGetDouble3PointerTimeD"
continue
  call BeginSub(subname, 'file=%c varname=%c time=%c', &
    & c1=trim(file), c2=trim(varname), c3=toChar(time))
  call HistoryGetPointer( &
    & file=file, varname=varname, array=array, range=toChar(time))
  call EndSub(subname)
end subroutine


subroutine HistoryGetDouble4PointerTimeD(file, varname, array, time)
  !
  ! 将来廃止予定です。*time* は *range* に置き換え、文字型で与えて下さい。
  !
  use gt4_history, only: HistoryGetPointer
  use dc_string, only: toChar
  use dc_types, only: DP, STRING
  use dc_trace, only: Beginsub, Endsub, DbgMessage
  character(*), intent(in):: file, varname
  real(DP), intent(in)              :: time
  real(DP), pointer :: array(:,:,:,:) ! (out)
  character(*), parameter :: subname = "HistoryGetDouble4PointerTimeD"
continue
  call BeginSub(subname, 'file=%c varname=%c time=%c', &
    & c1=trim(file), c2=trim(varname), c3=toChar(time))
  call HistoryGetPointer( &
    & file=file, varname=varname, array=array, range=toChar(time))
  call EndSub(subname)
end subroutine


subroutine HistoryGetDouble5PointerTimeD(file, varname, array, time)
  !
  ! 将来廃止予定です。*time* は *range* に置き換え、文字型で与えて下さい。
  !
  use gt4_history, only: HistoryGetPointer
  use dc_string, only: toChar
  use dc_types, only: DP, STRING
  use dc_trace, only: Beginsub, Endsub, DbgMessage
  character(*), intent(in):: file, varname
  real(DP), intent(in)              :: time
  real(DP), pointer :: array(:,:,:,:,:) ! (out)
  character(*), parameter :: subname = "HistoryGetDouble5PointerTimeD"
continue
  call BeginSub(subname, 'file=%c varname=%c time=%c', &
    & c1=trim(file), c2=trim(varname), c3=toChar(time))
  call HistoryGetPointer( &
    & file=file, varname=varname, array=array, range=toChar(time))
  call EndSub(subname)
end subroutine


subroutine HistoryGetDouble6PointerTimeD(file, varname, array, time)
  !
  ! 将来廃止予定です。*time* は *range* に置き換え、文字型で与えて下さい。
  !
  use gt4_history, only: HistoryGetPointer
  use dc_string, only: toChar
  use dc_types, only: DP, STRING
  use dc_trace, only: Beginsub, Endsub, DbgMessage
  character(*), intent(in):: file, varname
  real(DP), intent(in)              :: time
  real(DP), pointer :: array(:,:,:,:,:,:) ! (out)
  character(*), parameter :: subname = "HistoryGetDouble6PointerTimeD"
continue
  call BeginSub(subname, 'file=%c varname=%c time=%c', &
    & c1=trim(file), c2=trim(varname), c3=toChar(time))
  call HistoryGetPointer( &
    & file=file, varname=varname, array=array, range=toChar(time))
  call EndSub(subname)
end subroutine


subroutine HistoryGetDouble7PointerTimeD(file, varname, array, time)
  !
  ! 将来廃止予定です。*time* は *range* に置き換え、文字型で与えて下さい。
  !
  use gt4_history, only: HistoryGetPointer
  use dc_string, only: toChar
  use dc_types, only: DP, STRING
  use dc_trace, only: Beginsub, Endsub, DbgMessage
  character(*), intent(in):: file, varname
  real(DP), intent(in)              :: time
  real(DP), pointer :: array(:,:,:,:,:,:,:) ! (out)
  character(*), parameter :: subname = "HistoryGetDouble7PointerTimeD"
continue
  call BeginSub(subname, 'file=%c varname=%c time=%c', &
    & c1=trim(file), c2=trim(varname), c3=toChar(time))
  call HistoryGetPointer( &
    & file=file, varname=varname, array=array, range=toChar(time))
  call EndSub(subname)
end subroutine


subroutine HistoryGetReal1PointerTimeD(file, varname, array, time)
  !
  ! 将来廃止予定です。*time* は *range* に置き換え、文字型で与えて下さい。
  !
  use gt4_history, only: HistoryGetPointer
  use dc_string, only: toChar
  use dc_types, only: DP, STRING
  use dc_trace, only: Beginsub, Endsub, DbgMessage
  character(*), intent(in):: file, varname
  real(DP), intent(in)              :: time
  real, pointer :: array(:) ! (out)
  character(*), parameter :: subname = "HistoryGetReal1PointerTimeD"
continue
  call BeginSub(subname, 'file=%c varname=%c time=%c', &
    & c1=trim(file), c2=trim(varname), c3=toChar(time))
  call HistoryGetPointer( &
    & file=file, varname=varname, array=array, range=toChar(time))
  call EndSub(subname)
end subroutine


subroutine HistoryGetReal2PointerTimeD(file, varname, array, time)
  !
  ! 将来廃止予定です。*time* は *range* に置き換え、文字型で与えて下さい。
  !
  use gt4_history, only: HistoryGetPointer
  use dc_string, only: toChar
  use dc_types, only: DP, STRING
  use dc_trace, only: Beginsub, Endsub, DbgMessage
  character(*), intent(in):: file, varname
  real(DP), intent(in)              :: time
  real, pointer :: array(:,:) ! (out)
  character(*), parameter :: subname = "HistoryGetReal2PointerTimeD"
continue
  call BeginSub(subname, 'file=%c varname=%c time=%c', &
    & c1=trim(file), c2=trim(varname), c3=toChar(time))
  call HistoryGetPointer( &
    & file=file, varname=varname, array=array, range=toChar(time))
  call EndSub(subname)
end subroutine


subroutine HistoryGetReal3PointerTimeD(file, varname, array, time)
  !
  ! 将来廃止予定です。*time* は *range* に置き換え、文字型で与えて下さい。
  !
  use gt4_history, only: HistoryGetPointer
  use dc_string, only: toChar
  use dc_types, only: DP, STRING
  use dc_trace, only: Beginsub, Endsub, DbgMessage
  character(*), intent(in):: file, varname
  real(DP), intent(in)              :: time
  real, pointer :: array(:,:,:) ! (out)
  character(*), parameter :: subname = "HistoryGetReal3PointerTimeD"
continue
  call BeginSub(subname, 'file=%c varname=%c time=%c', &
    & c1=trim(file), c2=trim(varname), c3=toChar(time))
  call HistoryGetPointer( &
    & file=file, varname=varname, array=array, range=toChar(time))
  call EndSub(subname)
end subroutine


subroutine HistoryGetReal4PointerTimeD(file, varname, array, time)
  !
  ! 将来廃止予定です。*time* は *range* に置き換え、文字型で与えて下さい。
  !
  use gt4_history, only: HistoryGetPointer
  use dc_string, only: toChar
  use dc_types, only: DP, STRING
  use dc_trace, only: Beginsub, Endsub, DbgMessage
  character(*), intent(in):: file, varname
  real(DP), intent(in)              :: time
  real, pointer :: array(:,:,:,:) ! (out)
  character(*), parameter :: subname = "HistoryGetReal4PointerTimeD"
continue
  call BeginSub(subname, 'file=%c varname=%c time=%c', &
    & c1=trim(file), c2=trim(varname), c3=toChar(time))
  call HistoryGetPointer( &
    & file=file, varname=varname, array=array, range=toChar(time))
  call EndSub(subname)
end subroutine


subroutine HistoryGetReal5PointerTimeD(file, varname, array, time)
  !
  ! 将来廃止予定です。*time* は *range* に置き換え、文字型で与えて下さい。
  !
  use gt4_history, only: HistoryGetPointer
  use dc_string, only: toChar
  use dc_types, only: DP, STRING
  use dc_trace, only: Beginsub, Endsub, DbgMessage
  character(*), intent(in):: file, varname
  real(DP), intent(in)              :: time
  real, pointer :: array(:,:,:,:,:) ! (out)
  character(*), parameter :: subname = "HistoryGetReal5PointerTimeD"
continue
  call BeginSub(subname, 'file=%c varname=%c time=%c', &
    & c1=trim(file), c2=trim(varname), c3=toChar(time))
  call HistoryGetPointer( &
    & file=file, varname=varname, array=array, range=toChar(time))
  call EndSub(subname)
end subroutine


subroutine HistoryGetReal6PointerTimeD(file, varname, array, time)
  !
  ! 将来廃止予定です。*time* は *range* に置き換え、文字型で与えて下さい。
  !
  use gt4_history, only: HistoryGetPointer
  use dc_string, only: toChar
  use dc_types, only: DP, STRING
  use dc_trace, only: Beginsub, Endsub, DbgMessage
  character(*), intent(in):: file, varname
  real(DP), intent(in)              :: time
  real, pointer :: array(:,:,:,:,:,:) ! (out)
  character(*), parameter :: subname = "HistoryGetReal6PointerTimeD"
continue
  call BeginSub(subname, 'file=%c varname=%c time=%c', &
    & c1=trim(file), c2=trim(varname), c3=toChar(time))
  call HistoryGetPointer( &
    & file=file, varname=varname, array=array, range=toChar(time))
  call EndSub(subname)
end subroutine


subroutine HistoryGetReal7PointerTimeD(file, varname, array, time)
  !
  ! 将来廃止予定です。*time* は *range* に置き換え、文字型で与えて下さい。
  !
  use gt4_history, only: HistoryGetPointer
  use dc_string, only: toChar
  use dc_types, only: DP, STRING
  use dc_trace, only: Beginsub, Endsub, DbgMessage
  character(*), intent(in):: file, varname
  real(DP), intent(in)              :: time
  real, pointer :: array(:,:,:,:,:,:,:) ! (out)
  character(*), parameter :: subname = "HistoryGetReal7PointerTimeD"
continue
  call BeginSub(subname, 'file=%c varname=%c time=%c', &
    & c1=trim(file), c2=trim(varname), c3=toChar(time))
  call HistoryGetPointer( &
    & file=file, varname=varname, array=array, range=toChar(time))
  call EndSub(subname)
end subroutine


subroutine lookup_growable_url(file, varname, url, range, err)
  !
  ! file の変数 varname が依存する次元の内, 時間の次元
  ! (growable == .TRUE. のもの, つまり無制限次元) の変数名,
  ! およびその最後の値を取得し, gtool変数化
  ! ("file@varname,time=10.5" みたいな) して返す.
  !
  ! * もしも varname が次元変数である場合は「time=」を付けずに返す.
  ! * range を与えた場合, 以下のチェックを行った後, それを gtool4
  !   変数の iorange 部分に付加する.
  !   * 数値のみが与えられる場合, 時間次元の値として認識され,
  !     その値を用いた url が返る.
  !   * range 内に時間次元が設定されていない場合は, 自動的に
  !     時間次元に関する iorange ("time=0.5") が指定される.
  !
  use gtdata_types, only: GT_VARIABLE
  use gtdata_generic, only: Open, Close, Inquire
  use dc_present,only: present_select, present_and_not_empty
  use dc_string, only: toChar
  use dc_error,  only: StoreError, DC_NOERR, GT_ENOUNLIMITDIM, NF_EINVAL
  use dc_url, only: GT_CIRCUMFLEX, GT_COMMA, GT_EQUAL
  use dc_url, only: UrlSplit, UrlMerge, UrlSearchIORange
  use regex, only: match
  use dc_types, only: DP, STRING
  use dc_trace, only: Beginsub, Endsub, DbgMessage
  
  character(*), intent(in) :: file           ! ファイル名
  character(*), intent(in) :: varname        ! 変数名
  character(*), intent(out) :: url           ! gtool変数化した文字列
  character(*), intent(in), optional:: range ! 範囲限定や一点切り出し指定
  logical, intent(out), optional :: err      ! エラーのフラグ
  !
  type(GT_VARIABLE)                       :: var
  type(GT_VARIABLE), allocatable          :: dimvar(:)
  character(STRING) :: time_url, time_name, time_iorange
  character(STRING) :: iorange, cause_c
  logical:: growable, nounlimited
  integer:: allcount, timecount, nd, i, stat
  integer:: regex_stat, regex_len
  character(*), parameter :: subname = "lookup_growable_url"
continue

  call BeginSub(subname, '<file=%c varname=%c range=%c>', &
    & c1=trim(file), c2=trim(varname), &
    & c3=trim(present_select('', 'no-range', range)))

  stat = DC_NOERR
  cause_c = ""
  ! 引数の正当性をチェック
  if (.not. present_and_not_empty(file)) then
    stat = NF_EINVAL
    cause_c = '"file" is not specified'
    url = ""
    goto 999
  elseif (.not. present_and_not_empty(varname)) then
    stat = NF_EINVAL
    cause_c = '"varname" is not specified'
    url = ""
    goto 999
  end if

  ! 時刻次元の変数名, およびその最終時刻の
  ! 探査のために file@varname を open (まだデータを取得しない)
  call Open(var, UrlMerge(file, varname))
  ! 次元の数を取得
  call Inquire(var=var, alldims=nd)
  call DbgMessage('@ alldims = %d', i=(/nd/))
  if (allocated(dimvar)) then
    deallocate(dimvar)
  end if
  allocate(dimvar(nd))
  !
  ! 変数が無制限変数を持たない場合には, それに関する iorange を
  ! 付けないで返すよう, フラグを立てる.
  ! 無制限次元があれば, .false. にする.
  nounlimited = .true.
  !
  ! 各次元毎に情報を取得し, growable == .TRUE. のもの (つまりは時間)
  ! の変数名 (time_name) を取得する.
  call DbgMessage('[%c: growable-dim-search]', c1=trim(subname))
  do, i = 1, nd
    call Open(var=dimvar(i), source_var=var, dimord=i, &
      & count_compact=.TRUE., err=err)
    ! まずは変数入り gtool4 変数を time_url に取得
    call Inquire(var=dimvar(i), growable=growable, &
      & allcount=allcount, url=time_url)
    call DbgMessage('  [dim=<%d>: growable=<%y>: url=<%c>]', &
      &  i=(/i/), L=(/growable/), c1=trim(time_url))
    ! 総数 = 最後の数, なので...
    if (growable) then
      ! 変数部分だけ分離
      call UrlSplit(fullname=time_url, var=time_name)
      timecount = allcount
      nounlimited = .false.
    endif
    call Close(dimvar(i))
  end do
  ! 探査を終了したので閉じる
  call Close(var)
  if (stat /= DC_NOERR) then
    goto 999
  end if

  ! 時刻部分の iorange を作成しておく.
  ! 格子点情報で取得されているので, 頭に "^" を付加する.
  if (nounlimited) then
    time_iorange = ''
  else
    time_iorange = trim(time_name) // GT_EQUAL // &
      & GT_CIRCUMFLEX // adjustl(toChar(timecount))
  end if

  ! iorange を指定する.
  ! 時刻に関しては, range が存在しない場合には
  ! 自動取得した最後の時刻を付加する.
  ! range が存在する場合, "=" が含まれなければ単に時刻の
  ! 値として取得.
  ! "=" が含まれる場合, iorange としてそのまま iorange になる.
  ! ただし, その iorange に時刻次元が含まれない場合,
  ! やはり先ほど自動取得した値が付加される.
  ! 当然, 時刻次元が存在しない場合には付加しない.
  if (.not. present_and_not_empty(range)) then
    iorange = time_iorange
  else
    ! range がコンマ記法になっているか, "=" があるかどうかで調べる
    call match(GT_EQUAL, range, regex_len, regex_stat)
    ! コンマ記法になってない場合は無制限次元の値と判定
    if (regex_stat < 0) then
      iorange = trim(time_name) // GT_EQUAL // adjustl(range)
    else
      ! コンマ記法になっている場合, まずその中に無制限次元が
      ! 存在しているか調べ, 存在してない場合のみ time_iorange を
      ! 付加する.
      if (trim(UrlSearchIORange(range, time_name)) /= "") then
        iorange = range
      else
        if (trim(time_iorange) /= "") then
          iorange = range // GT_COMMA // time_iorange
        else
          iorange = range
        end if
      end if
    end if
  endif
  call DbgMessage('@ iorange=%c', c1=trim(iorange))

  ! file, varname, iorange を gtool変数化
  ! (「file@varname,time=10.5」のように)
  url = UrlMerge(file, varname, '', iorange)

999 continue
  call StoreError(stat, subname, err, cause_c)
  call EndSub(subname, '<url=%c>', c1=trim(url))
end subroutine lookup_growable_url

subroutine actual_iorange_dump(url, actual_url, err)
  !
  ! 変数 URL *url* に対応するファイル, 変数からデータを取り出す際, 
  ! 入出力範囲指定によって切り出される値の本当の位置を
  ! 標準出力に出力する. *actual_url* が与えられる場合には
  ! その引数に値を返し, 標準出力には出力しない.
  !
  ! HistoryGet, HistoryGetPointer が下層で呼び出している
  ! gtdata_generic#Get は, 入出力範囲が次元データに正確に一致しない
  ! 場合, 最も近い値を自動的に選択して切り出す. しかしその結果,
  ! 「本当はどこのデータを入力したか」がわからない場合があるため,
  ! このサブルーチンによって正確な位置をユーザに知らせる.
  !
  use dc_types, only: DP, STRING
  use dc_string, only: Split, JoinChar, toChar
  use dc_url, only: UrlSearchIORange, UrlMerge, UrlSplit
  use dc_url, only: GT_COMMA, GT_EQUAL, GT_COLON
  use dc_message, only: MessageNotify
  use dc_trace, only: Beginsub, Endsub, DbgMessage
  use regex,      only: match
  use gtdata_types, only: GT_VARIABLE
  use gtdata_generic, only: Open, Close, Get
  use dc_error,  only: StoreError, DC_NOERR

  character(*), intent(in) :: url            ! 変数 URL
  character(*), intent(out), optional :: actual_url
                                             ! 正確な入出力範囲指定に修正
                                             ! された変数 URL
  logical, intent(out), optional :: err      ! エラーのフラグ

  character(STRING), pointer :: iorange_each(:) =>null()
  character(STRING), pointer :: range_values(:) =>null()
  character(STRING), pointer :: new_iorange_each(:) =>null()
  character(STRING), pointer :: new_range_values(:) =>null()
  character(STRING) :: new_url, new_iorange, url_tmp, dimname
  character(STRING) :: file, varname, range, cause_c
  type(GT_VARIABLE) :: var
  real :: iorange_value(1)
  integer :: i, j, regex_len, regex_stat, stat

  character(*), parameter :: subname = "actual_iorange_dump"

continue
  call BeginSub(subname, '<url=%c>', c1=trim(url))

  new_iorange = ''
  cause_c = ''
  stat = DC_NOERR
  call UrlSplit(url, file, varname, iorange=range)
  call Split(range, iorange_each, GT_COMMA)
  allocate(new_iorange_each(size(iorange_each)))
  do i = 1, size(iorange_each)
    call match(GT_EQUAL, iorange_each(i), regex_len, regex_stat)
    if (regex_stat < 0 .or. regex_len < 2) then
      new_iorange_each(i) = trim(iorange_each(i))
    else
      dimname = iorange_each(i)(:regex_len-1)
      call Split(iorange_each(i)(regex_len+1:), range_values, GT_COLON)
      allocate(new_range_values(size(range_values)))
      do j = 1, size(range_values)
        url_tmp = UrlMerge(file, dimname, '', &
          & iorange=trim(dimname) // GT_EQUAL // trim(range_values(j)))
        call Open(var, url_tmp)
        call Get(var, iorange_value, 1)
        call Close(var)
        new_range_values(j) = toChar(iorange_value)
      end do
      new_iorange_each(i) = &
        & trim(dimname) // GT_EQUAL // JoinChar(new_range_values, GT_COLON)

      deallocate(new_range_values)
      deallocate(range_values)

    end if
  end do

  new_iorange = JoinChar(new_iorange_each, GT_COMMA)
  deallocate(new_iorange_each)
  deallocate(iorange_each)

  new_url = UrlMerge(file, varname, '', new_iorange)
  if (present(actual_url)) then
    actual_url = new_url
  else
    call MessageNotify('M', subname, 'Input %c', c1=trim(new_url))
  end if

999 continue
  call StoreError(stat, subname, err, cause_c)
  call EndSub(subname, '<actual_url=%c>', c1=trim(new_url))
end subroutine actual_iorange_dump



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