!--
! *** Caution!! ***
!
! This file is generated from "gtdata_generic.rb2f90" by Ruby 1.8.2.
! Please do not edit this file directly.
!
! [JAPANESE]
!
! ※※※ 注意!!! ※※※
!
! このファイルは "gtdata_generic.rb2f90" から Ruby 1.8.2
! によって自動生成されたファイルです.
! このファイルを直接編集しませんようお願い致します.
!
!
!++
!
!= gtdata_variable.f90 - gtool 変数の手続総称宣言
!
! Authors:: Yasuhiro MORIKAWA, Eizi TOYODA
! Version:: $Id: gtdata_generic.f90,v 1.19 2006/07/17 15:46:47 morikawa Exp $
! Tag Name:: $Name: gt4f90io-20061009 $
! Copyright:: Copyright (C) GFD Dennou Club, 2000-2005. All rights reserved.
! License:: See COPYRIGHT[link:../../COPYRIGHT]
!
! This file provides gtdata_generic
!
module gtdata_generic
!
!== GT_VARIABLE 型変数の手続総称宣言
!
! ファイルの形式に依存しない多次元データである GT_VARIABLE 型変数
! の操作に関する手続きの全てはここで総称宣言されて公開されます。
!
! 以降に一覧される手続は、第 1 引数が主な操作対象になるようなスタイルで
! 設計されています。 第 1 引数から gtool4 の手続であることがわかるので、
! 名前にわざわざ GT とはつけていません。
!
!== 種類別手続き一覧
!
! ASCII 順の手続き一覧は下記の "Methods" を参照してください。
!
!=== 変数の作成・初期化・終了
!
! Create :: 変数の作成
! Open :: 変数の初期化
! Close :: 変数の終了処理
!
!=== 問い合わせ
!
! Inquire :: 変数または属性に関する問い合わせ
!
!=== データの入出力
!
! Get :: ファイル入力
! Put, Put_Line :: ファイル出力
!
!=== 次元順序番号の問い合わせ・変更
!
! Dimname_To_Dimord :: 次元相対名から次元順序番号の問い合わせ
! Exch_dim :: 次元順序番号の交換
!
!=== 変数構成写像機能(リミット、次元の加除)
!
! 変数 (GT_VARIABLE 型) は順序の決まった次元集合をもちます。それぞれ
! の次元には決まった長さがあり、1から長さまでの番号で識別される格子から
! なっています。しかしながら、必要に応じて変数がもつ次元の順序を入れ替え
! たり、次元が存在しないようにみせかけたり、各々の次元の長さを変えたり格
! 子番号を付け替えたりできます。
!
! Limit :: 入出力範囲を拘束
! Add_Dim :: 変数に次元を追加
! Del_Dim :: 変数から次元を隠蔽
! Transform :: 2 つの変数の次元配置の共通化
!
!=== 入出力範囲限定機能(スライス)
!
! Slice :: 入出力範囲を限定
! Slice_Next :: 入出力範囲を移動
! Get_Slice :: 変数入出力範囲限定情報を問い合わせ
!
!=== 属性関係
!
! 属性名は英字、数字、下線から構成されます。先頭の文字は英字または
! "+" でなければなりません。
! "+" から始まる属性名は内部的に使用されるもの
! で、netCDF 実装では大域変数に対応します。
!
! Attr_Rewind :: 変数属性列挙の初期化
! Attr_Next :: 変数属性の列挙
! Attr_True :: 変数属性を論理型として読み取り
! Get_Attr :: 変数属性の読み取り
! Put_Attr :: 変数属性の書き出し
! Copy_Attr :: 属性のコピー
! Del_Attr :: 変数属性の削除
!
!=== その他
!
! GTVarSearch :: ファイルの中の変数名の列挙
! GTVarSync :: ファイル入出力の同期
! GTDataTmpNam :: 変数名の自動作成
! GTVarDel :: ファイルの中の変数の削除 (作成中)
! operator(.equivalent.) [link:#M000133] :: 同値判定
implicit none
!
! 基本開閉動作
!
interface Open
subroutine GTVarOpenByDimOrd(var, source_var, dimord, &
count_compact, err)
use gtdata_types, only: GT_VARIABLE
type(GT_VARIABLE), intent(out):: var
type(GT_VARIABLE), intent(in):: source_var
integer, intent(in):: dimord
logical, intent(in), optional:: count_compact
logical, intent(out), optional:: err
end subroutine GTVarOpenByDimOrd
subroutine GTVarOpen(var, url, writable, err)
use gtdata_types, only: GT_VARIABLE
type(GT_VARIABLE), intent(out):: var
character(*), intent(in):: url
logical, intent(in), optional:: writable
logical, intent(out), optional:: err
end subroutine GTVarOpen
end interface
interface Create
subroutine GTVarCreate(var, url, dims, xtype, long_name, overwrite, err)
use gtdata_types, only: GT_VARIABLE
type(GT_VARIABLE), intent(out):: var
character(len = *), intent(in):: url
type(GT_VARIABLE), intent(in), optional:: dims(:)
character(len = *), intent(in), optional:: xtype
character(len = *), intent(in), optional:: long_name
logical, intent(in), optional:: overwrite
logical, intent(out), optional:: err
end subroutine GTVarCreate
subroutine GTVarCreateD(var, url, length, xtype, long_name, overwrite, err)
use gtdata_types, only: GT_VARIABLE
type(GT_VARIABLE), intent(out):: var
character(len = *), intent(in):: url
integer, intent(in):: length
character(len = *), intent(in), optional:: xtype
character(len = *), intent(in), optional:: long_name
logical, intent(in), optional:: overwrite
logical, intent(out), optional:: err
end subroutine GTVarCreateD
end interface
interface Close
subroutine GTVarClose(var, err)
use gtdata_types, only: GT_VARIABLE
type(GT_VARIABLE), intent(in):: var
logical, intent(out), optional:: err
end subroutine GTVarClose
end interface
!
! --- 属性関係 ---
!
interface Attr_Rewind
subroutine GTVarAttrRewind(var)
use gtdata_types, only: GT_VARIABLE
type(GT_VARIABLE), intent(inout):: var
end subroutine GTVarAttrRewind
end interface
interface Attr_Next
subroutine GTVarAttrNext(var, name, end)
use gtdata_types, only: GT_VARIABLE
type(GT_VARIABLE), intent(inout):: var
character(*), intent(out):: name
logical, intent(out), optional:: end
end subroutine GTVarAttrNext
end interface
! 論理型読み取りは関数インターフェイスも提供
interface Attr_True
logical function GTVarAttrTrue(var, name, default)
use gtdata_types, only: GT_VARIABLE
type(GT_VARIABLE), intent(in):: var
character(len = *), intent(in):: name
logical, intent(in), optional:: default
end function GTVarAttrTrue
end interface
interface Get_Attr
! スカラで受け取るのが一番簡単。解釈可能な値がとられ、残りは捨てられる。
subroutine GTVarGetAttrI(var, name, value, default)
use gtdata_types, only: GT_VARIABLE
type(GT_VARIABLE), intent(in):: var
character(len = *), intent(in):: name
integer, intent(out):: value
integer, intent(in), optional:: default
end subroutine GTVarGetAttrI
subroutine GTVarGetAttrR(var, name, value, default)
use gtdata_types, only: GT_VARIABLE
type(GT_VARIABLE), intent(in):: var
character(len = *), intent(in):: name
real, intent(out):: value
real, intent(in), optional:: default
end subroutine GTVarGetAttrR
subroutine GTVarGetAttrD(var, name, value, default)
use gtdata_types, only: GT_VARIABLE
use dc_types, only: DP
type(GT_VARIABLE), intent(in):: var
character(len = *), intent(in):: name
real(DP), intent(out):: value
real(DP), intent(in), optional:: default
end subroutine GTVarGetAttrD
! ポインタ配列を使って受け取る場合は解釈可能な数だけ実体が割り付けられる。
subroutine GTVarGetAttrIP(var, name, value)
use gtdata_types, only: GT_VARIABLE
type(GT_VARIABLE), intent(in):: var
character(len = *), intent(in):: name
integer, pointer:: value(:)
end subroutine GTVarGetAttrIP
subroutine GTVarGetAttrRP(var, name, value)
use gtdata_types, only: GT_VARIABLE
type(GT_VARIABLE), intent(in):: var
character(len = *), intent(in):: name
real, pointer:: value(:)
end subroutine GTVarGetAttrRP
subroutine GTVarGetAttrDP(var, name, value)
use gtdata_types, only: GT_VARIABLE
use dc_types, only: DP
type(GT_VARIABLE), intent(in):: var
character(len = *), intent(in):: name
real(DP), pointer:: value(:)
end subroutine GTVarGetAttrDP
! integer 配列, real 配列として受け取る
! 場合は属性長があまっている場合には切り捨てられ、
! 属性長が足りない場合は default 値 (ポインタと違い必須) を埋める。
subroutine GTVarGetAttrIA(var, name, value, default)
use gtdata_types, only: GT_VARIABLE
type(GT_VARIABLE), intent(in):: var
character(len = *), intent(in):: name
integer, intent(out):: value(:)
integer, intent(in):: default
end subroutine GTVarGetAttrIA
subroutine GTVarGetAttrRA(var, name, value, default)
use gtdata_types, only: GT_VARIABLE
type(GT_VARIABLE), intent(in):: var
character(len = *), intent(in):: name
real, intent(out):: value(:)
real, intent(in):: default
end subroutine GTVarGetAttrRA
subroutine GTVarGetAttrDA(var, name, value, default)
use gtdata_types, only: GT_VARIABLE
use dc_types, only: DP
type(GT_VARIABLE), intent(in):: var
character(len = *), intent(in):: name
real(DP), intent(out):: value(:)
real(DP), intent(in):: default
end subroutine GTVarGetAttrDA
! character 型で受け取る場合は通常の文字型代入と同様、
! 受け側変数の長さに合わせて切り捨て・空白埋めを行う。
! 属性が存在しない場合 default 値を使う。
subroutine GTVarGetAttrCC(var, name, value, default)
use gtdata_types, only: GT_VARIABLE
type(GT_VARIABLE), intent(in):: var
character(len = *), intent(in):: name
character(len = *), intent(out):: value
character(len = *), intent(in), optional:: default
end subroutine GTVarGetAttrCC
! 文字列として読み取る場合は元の長さは正確に受け取られる。
! 属性が存在しない場合 default 値を使う。
! subroutine GTVarGetAttrSC(var, name, value, default)
! use dc_string, only: VSTRING
! use gtdata_types, only: GT_VARIABLE
! type(GT_VARIABLE), intent(in):: var
! character(len = *), intent(in):: name
! type(VSTRING), intent(out):: value
! character(len = *), intent(in), optional:: default
! end subroutine GTVarGetAttrSC
end interface
interface Put_Attr
subroutine GTVarPutAttrLogical(var, name, value, err)
use gtdata_types, only: GT_VARIABLE
type(GT_VARIABLE), intent(inout):: var
character(len = *), intent(in):: name
logical, intent(in):: value
real, intent(out), optional:: err
end subroutine GTVarPutAttrLogical
! subroutine GTVarPutAttrString(var, name, value, err)
! use dc_string, only: VSTRING
! use gtdata_types, only: GT_VARIABLE
! type(GT_VARIABLE), intent(inout):: var
! character(len = *), intent(in):: name
! type(VSTRING), intent(in):: value
! logical, intent(out), optional:: err
! end subroutine GTVarPutAttrString
subroutine GTVarPutAttrInt(var, name, value, err)
use gtdata_types, only: GT_VARIABLE
type(GT_VARIABLE), intent(inout):: var
character(len = *), intent(in):: name
integer, intent(in):: value(:)
real, intent(out), optional:: err
end subroutine GTVarPutAttrInt
subroutine GTVarPutAttrReal(var, name, value, err)
use gtdata_types, only: GT_VARIABLE
type(GT_VARIABLE), intent(inout):: var
character(len = *), intent(in):: name
real, intent(in):: value(:)
real, intent(out), optional:: err
end subroutine GTVarPutAttrReal
subroutine GTVarPutAttrDouble(var, name, value, err)
use gtdata_types, only: GT_VARIABLE
use dc_types, only: DP
type(GT_VARIABLE), intent(inout):: var
character(len = *), intent(in):: name
real(DP), intent(in):: value(:)
real, intent(out), optional:: err
end subroutine GTVarPutAttrDouble
subroutine GTVarPutAttrChar(var, name, value, xtype, err)
use gtdata_types, only: GT_VARIABLE
type(GT_VARIABLE), intent(inout):: var
character(len = *), intent(in):: name
character(len = *), intent(in):: value
character(len = *), intent(in), optional:: xtype
logical, intent(out), optional:: err
end subroutine GTVarPutAttrChar
end interface
interface Del_Attr
subroutine GTVarDelAttr(var, name, err)
use gtdata_types, only: GT_VARIABLE
type(GT_VARIABLE), intent(inout):: var
character(len = *), intent(in):: name
logical, intent(out), optional:: err
end subroutine GTVarDelAttr
end interface
interface Copy_Attr
subroutine GTVarCopyAttr(to, attrname, from, err)
use gtdata_types, only: GT_VARIABLE
type(GT_VARIABLE), intent(inout):: to
character(len = *), intent(in):: attrname
type(GT_VARIABLE), intent(in):: from
logical, intent(out), optional:: err
end subroutine GTVarCopyAttr
subroutine GTVarCopyAttrAll(to, from, err, global)
use gtdata_types, only: GT_VARIABLE
type(GT_VARIABLE), intent(inout):: to
type(GT_VARIABLE), intent(inout):: from
logical, intent(out), optional:: err
logical, intent(in), optional:: global
end subroutine GTVarCopyAttrAll
end interface
!
! --- 次元関係 ---
!
! 現在の入出力範囲の大きさは inquire(var, size=) で取得できる
interface Slice
! おまかせ指示
! compatible を指定するとまったく同じに指定
subroutine GTVarSliceAuto(var, compatible)
use gtdata_types, only: GT_VARIABLE
type(GT_VARIABLE), intent(inout):: var
type(GT_VARIABLE), intent(in), optional:: compatible
end subroutine GTVarSliceAuto
! 次元を指定した指示
subroutine GTVarSlice(var, dimord, start, count, stride)
use gtdata_types, only: GT_VARIABLE
type(GT_VARIABLE), intent(in):: var
integer, intent(in):: dimord
integer, intent(in), optional:: start
integer, intent(in), optional:: count
integer, intent(in), optional:: stride
end subroutine GTVarSlice
! もじれつによるしじ
subroutine GTVarSliceC(var, string, err)
use gtdata_types, only: GT_VARIABLE
type(GT_VARIABLE), intent(inout):: var
character(len = *), intent(in):: string
logical, intent(out):: err
end subroutine GTVarSliceC
end interface
interface Get_Slice
! 次元順番を指定して取得
subroutine GTVarGetSlice(var, dimord, start, count, stride, count_compact)
use gtdata_types, only: GT_VARIABLE
type(GT_VARIABLE), intent(in):: var
integer, intent(in):: dimord
integer, intent(out), optional:: start
integer, intent(out), optional:: count
integer, intent(out), optional:: stride
logical, intent(in), optional:: count_compact
end subroutine GTVarGetSlice
! 全次元について一括取得
! あらかじめ inquire(var, alldims) して配列を確保する。
subroutine GTVarGetSliceAll(var, start, count, stride)
use gtdata_types, only: GT_VARIABLE
type(GT_VARIABLE), intent(in):: var
integer, intent(out), optional:: start(:), count(:), stride(:)
end subroutine GTVarGetSliceAll
end interface
interface Dimname_to_Dimord
integer function gtdim_name2ord(var, name)
use gtdata_types, only: GT_VARIABLE
type(GT_VARIABLE), intent(in):: var
character(len = *), intent(in):: name
end function gtdim_name2ord
end interface
! limit: 空間変換器機能のセットアップ
!
interface Limit
subroutine GTVarLimit(var, string, err)
use gtdata_types, only: GT_VARIABLE
type(GT_VARIABLE), intent(inout) :: var
character(len = *), intent(in) :: string
logical, intent(out), optional :: err
end subroutine GTVarLimit
subroutine GTVarLimit_iiii(var, dimord, start, count, stride, err)
use gtdata_types, only: GT_VARIABLE
type(GT_VARIABLE), intent(inout):: var
integer, intent(in) :: dimord
integer, intent(in) , optional :: start, count, stride
logical, intent(out), optional :: err
end subroutine GTVarLimit_iiii
end interface
interface Transform
subroutine GTVarXformBinary(var1, var2, err)
use gtdata_types, only: GT_VARIABLE
type(GT_VARIABLE), intent(inout):: var1, var2
logical, intent(out), optional:: err
end subroutine GTVarXformBinary
end interface
! 明示的空間変換機能
! 変数ハンドル var の dimord 番目の位置に次元
! dimvar を追加する。dimord 番目以降の次元は一つ後ろにずれる。
! もし dimord が var の有効次元数より大きければ (有効次元数 + 1)
! が与えられたものとみなされる。
interface Add_dim
subroutine GTVarAddDim(var, dimord, dimvar, err)
use gtdata_types, only: GT_VARIABLE
type(GT_VARIABLE), intent(in):: var
type(GT_VARIABLE), intent(in):: dimvar
integer, intent(in):: dimord
logical, intent(out):: err
end subroutine gtvaradddim
end interface
! 変数ハンドルから次元を「除去」する。実際には、
! 次元対応表の順位を下げ有効次元数をデクリメントするだけなので、
! 入出力に支障はない。
interface Del_dim
subroutine GTVarDelDim(var, dimord, err)
use gtdata_types, only: GT_VARIABLE
type(GT_VARIABLE), intent(in):: var
integer, intent(in):: dimord
logical, intent(out):: err
end subroutine gtvardeldim
end interface
! 次元対応表の順位の交換
interface Exch_dim
subroutine GTVarExchDim(var, dimord1, dimord2, count_compact, err)
use gtdata_types, only: GT_VARIABLE
type(GT_VARIABLE), intent(in):: var
integer, intent(in):: dimord1, dimord2
logical, intent(in), optional:: count_compact
logical, intent(out):: err
end subroutine gtvarexchdim
end interface
!
! --- 問い合わせ ---
!
interface Inquire
subroutine GTVarInquire(var, growable, &
& rank, alldims, allcount, size, &
& xtype, name, url)
use gtdata_types, only: GT_VARIABLE
type(GT_VARIABLE), intent(in):: var
character(len=*), intent(out), optional:: xtype
character(len=*), intent(out), optional:: name
character(len=*), intent(out), optional:: url
integer, intent(out), optional:: rank
integer, intent(out), optional:: alldims
integer, intent(out), optional:: allcount
integer, intent(out), optional:: size
logical, intent(out), optional:: growable
end subroutine GTVarInquire
subroutine GTVarInquire2(var, allcount)
use gtdata_types, only: GT_VARIABLE
type(GT_VARIABLE), intent(in):: var
integer, intent(out):: allcount(:)
end subroutine GTVarInquire2
subroutine GTVarInquireD(var, dimord, url, allcount)
use gtdata_types, only: GT_VARIABLE
type(GT_VARIABLE), intent(in):: var
integer, intent(in):: dimord
character(len=*), intent(out), optional:: url
integer, intent(out), optional:: allcount
end subroutine GTVarInquireD
subroutine GTVarInquireA(var, attrname, xtype)
use gtdata_types, only: GT_VARIABLE
type(GT_VARIABLE), intent(in):: var
character(len=*), intent(in):: attrname
character(len=*), intent(out), optional:: xtype
end subroutine GTVarInquireA
end interface
! 総なめ用イテレータ
interface Slice_Next
subroutine GTVarSliceNext(var, dimord, err, stat)
use gtdata_types, only: GT_VARIABLE
type(GT_VARIABLE), intent(in out):: var
integer, intent(in), optional:: dimord
logical, intent(out), optional:: err
integer, intent(out), optional:: stat
end subroutine GTVarSliceNext
end interface
! 同値判定
interface operator(.equivalent.)
logical function gtvarequivalent(var1, var2)
use gtdata_types, only: GT_VARIABLE
type(GT_VARIABLE), intent(in):: var1, var2
end function gtvarequivalent
end interface
!
!== 入出力
!
!=== 入力
!
! Get(var, value, nvalue, [err])
! 1次元配列に現在の入出力範囲を取得する。
! nvalue は利用者が配列長を格納しなければならない。
! 個別名 GTVarGetReal を用いると多次元配列に入力
! することもできるが、入出力範囲との関係に注意が必要。
!
! Get(var, value, [err]) は 1〜 7 次元のポインタをとる。
! 入出力範囲をポインタ次元数に限定し、配列を確保し、
! 値を入れて返す。通常はこれを用いることになろう。
!
interface Get
subroutine GTVarGetPointerDouble1(var, value, err)
use dc_types, only: DP
use gtdata_types, only: GT_VARIABLE
type(GT_VARIABLE),intent(inout):: var
real(DP) ,pointer :: value(:)
logical ,intent(out), optional:: err
end subroutine GTVarGetPointerDouble1
subroutine GTVarGetPointerDouble2(var, value, err)
use dc_types, only: DP
use gtdata_types, only: GT_VARIABLE
type(GT_VARIABLE),intent(inout):: var
real(DP) ,pointer :: value(:,:)
logical ,intent(out), optional:: err
end subroutine GTVarGetPointerDouble2
subroutine GTVarGetPointerDouble3(var, value, err)
use dc_types, only: DP
use gtdata_types, only: GT_VARIABLE
type(GT_VARIABLE),intent(inout):: var
real(DP) ,pointer :: value(:,:,:)
logical ,intent(out), optional:: err
end subroutine GTVarGetPointerDouble3
subroutine GTVarGetPointerDouble4(var, value, err)
use dc_types, only: DP
use gtdata_types, only: GT_VARIABLE
type(GT_VARIABLE),intent(inout):: var
real(DP) ,pointer :: value(:,:,:,:)
logical ,intent(out), optional:: err
end subroutine GTVarGetPointerDouble4
subroutine GTVarGetPointerDouble5(var, value, err)
use dc_types, only: DP
use gtdata_types, only: GT_VARIABLE
type(GT_VARIABLE),intent(inout):: var
real(DP) ,pointer :: value(:,:,:,:,:)
logical ,intent(out), optional:: err
end subroutine GTVarGetPointerDouble5
subroutine GTVarGetPointerDouble6(var, value, err)
use dc_types, only: DP
use gtdata_types, only: GT_VARIABLE
type(GT_VARIABLE),intent(inout):: var
real(DP) ,pointer :: value(:,:,:,:,:,:)
logical ,intent(out), optional:: err
end subroutine GTVarGetPointerDouble6
subroutine GTVarGetPointerDouble7(var, value, err)
use dc_types, only: DP
use gtdata_types, only: GT_VARIABLE
type(GT_VARIABLE),intent(inout):: var
real(DP) ,pointer :: value(:,:,:,:,:,:,:)
logical ,intent(out), optional:: err
end subroutine GTVarGetPointerDouble7
subroutine GTVarGetPointerReal1(var, value, err)
use dc_types, only: DP
use gtdata_types, only: GT_VARIABLE
type(GT_VARIABLE),intent(inout):: var
real ,pointer :: value(:)
logical ,intent(out), optional:: err
end subroutine GTVarGetPointerReal1
subroutine GTVarGetPointerReal2(var, value, err)
use dc_types, only: DP
use gtdata_types, only: GT_VARIABLE
type(GT_VARIABLE),intent(inout):: var
real ,pointer :: value(:,:)
logical ,intent(out), optional:: err
end subroutine GTVarGetPointerReal2
subroutine GTVarGetPointerReal3(var, value, err)
use dc_types, only: DP
use gtdata_types, only: GT_VARIABLE
type(GT_VARIABLE),intent(inout):: var
real ,pointer :: value(:,:,:)
logical ,intent(out), optional:: err
end subroutine GTVarGetPointerReal3
subroutine GTVarGetPointerReal4(var, value, err)
use dc_types, only: DP
use gtdata_types, only: GT_VARIABLE
type(GT_VARIABLE),intent(inout):: var
real ,pointer :: value(:,:,:,:)
logical ,intent(out), optional:: err
end subroutine GTVarGetPointerReal4
subroutine GTVarGetPointerReal5(var, value, err)
use dc_types, only: DP
use gtdata_types, only: GT_VARIABLE
type(GT_VARIABLE),intent(inout):: var
real ,pointer :: value(:,:,:,:,:)
logical ,intent(out), optional:: err
end subroutine GTVarGetPointerReal5
subroutine GTVarGetPointerReal6(var, value, err)
use dc_types, only: DP
use gtdata_types, only: GT_VARIABLE
type(GT_VARIABLE),intent(inout):: var
real ,pointer :: value(:,:,:,:,:,:)
logical ,intent(out), optional:: err
end subroutine GTVarGetPointerReal6
subroutine GTVarGetPointerReal7(var, value, err)
use dc_types, only: DP
use gtdata_types, only: GT_VARIABLE
type(GT_VARIABLE),intent(inout):: var
real ,pointer :: value(:,:,:,:,:,:,:)
logical ,intent(out), optional:: err
end subroutine GTVarGetPointerReal7
subroutine GTVarGetDouble(var, value, nvalue, err)
use gtdata_types, only: GT_VARIABLE
use dc_types, only: DP
type(GT_VARIABLE), intent(inout):: var
real(DP), intent(out):: value(*)
integer, intent(in):: nvalue
logical, intent(out), optional:: err
end subroutine GTVarGetDouble
subroutine GTVarGetReal(var, value, nvalue, err)
use gtdata_types, only: GT_VARIABLE
type(GT_VARIABLE), intent(inout):: var
real, intent(out):: value(*)
integer, intent(in):: nvalue
logical, intent(out), optional:: err
end subroutine GTVarGetReal
end interface
!
! --- 印字 ---
!
! 印字というのは変数にしてみれば入力だしファイルにしてみれば出力だ。
! だから put と get を兼営しているようなものでまことにあやしいのだが、
! いちおう dc_string の手続名を継承して put_line にしておく。
interface Put_Line
subroutine GTVarPutLine(var, err)
use gtdata_types, only: GT_VARIABLE
type(GT_VARIABLE), intent(inout):: var
logical, intent(out), optional:: err
end subroutine GTVarPutLine
end interface
!
! --- 出力 ---
!
interface Put
subroutine GTVarPutDouble1(var, value, err)
use gtdata_types, only: GT_VARIABLE
use dc_types, only: DP
type(GT_VARIABLE),intent(in):: var
real(DP) ,intent(in) :: value(:)
logical ,intent(out), optional:: err
end subroutine GTVarPutDouble1
subroutine GTVarPutDouble2(var, value, err)
use gtdata_types, only: GT_VARIABLE
use dc_types, only: DP
type(GT_VARIABLE),intent(in):: var
real(DP) ,intent(in) :: value(:,:)
logical ,intent(out), optional:: err
end subroutine GTVarPutDouble2
subroutine GTVarPutDouble3(var, value, err)
use gtdata_types, only: GT_VARIABLE
use dc_types, only: DP
type(GT_VARIABLE),intent(in):: var
real(DP) ,intent(in) :: value(:,:,:)
logical ,intent(out), optional:: err
end subroutine GTVarPutDouble3
subroutine GTVarPutDouble4(var, value, err)
use gtdata_types, only: GT_VARIABLE
use dc_types, only: DP
type(GT_VARIABLE),intent(in):: var
real(DP) ,intent(in) :: value(:,:,:,:)
logical ,intent(out), optional:: err
end subroutine GTVarPutDouble4
subroutine GTVarPutDouble5(var, value, err)
use gtdata_types, only: GT_VARIABLE
use dc_types, only: DP
type(GT_VARIABLE),intent(in):: var
real(DP) ,intent(in) :: value(:,:,:,:,:)
logical ,intent(out), optional:: err
end subroutine GTVarPutDouble5
subroutine GTVarPutDouble6(var, value, err)
use gtdata_types, only: GT_VARIABLE
use dc_types, only: DP
type(GT_VARIABLE),intent(in):: var
real(DP) ,intent(in) :: value(:,:,:,:,:,:)
logical ,intent(out), optional:: err
end subroutine GTVarPutDouble6
subroutine GTVarPutDouble7(var, value, err)
use gtdata_types, only: GT_VARIABLE
use dc_types, only: DP
type(GT_VARIABLE),intent(in):: var
real(DP) ,intent(in) :: value(:,:,:,:,:,:,:)
logical ,intent(out), optional:: err
end subroutine GTVarPutDouble7
subroutine GTVarPutReal1(var, value, err)
use gtdata_types, only: GT_VARIABLE
use dc_types, only: DP
type(GT_VARIABLE),intent(in):: var
real ,intent(in) :: value(:)
logical ,intent(out), optional:: err
end subroutine GTVarPutReal1
subroutine GTVarPutReal2(var, value, err)
use gtdata_types, only: GT_VARIABLE
use dc_types, only: DP
type(GT_VARIABLE),intent(in):: var
real ,intent(in) :: value(:,:)
logical ,intent(out), optional:: err
end subroutine GTVarPutReal2
subroutine GTVarPutReal3(var, value, err)
use gtdata_types, only: GT_VARIABLE
use dc_types, only: DP
type(GT_VARIABLE),intent(in):: var
real ,intent(in) :: value(:,:,:)
logical ,intent(out), optional:: err
end subroutine GTVarPutReal3
subroutine GTVarPutReal4(var, value, err)
use gtdata_types, only: GT_VARIABLE
use dc_types, only: DP
type(GT_VARIABLE),intent(in):: var
real ,intent(in) :: value(:,:,:,:)
logical ,intent(out), optional:: err
end subroutine GTVarPutReal4
subroutine GTVarPutReal5(var, value, err)
use gtdata_types, only: GT_VARIABLE
use dc_types, only: DP
type(GT_VARIABLE),intent(in):: var
real ,intent(in) :: value(:,:,:,:,:)
logical ,intent(out), optional:: err
end subroutine GTVarPutReal5
subroutine GTVarPutReal6(var, value, err)
use gtdata_types, only: GT_VARIABLE
use dc_types, only: DP
type(GT_VARIABLE),intent(in):: var
real ,intent(in) :: value(:,:,:,:,:,:)
logical ,intent(out), optional:: err
end subroutine GTVarPutReal6
subroutine GTVarPutReal7(var, value, err)
use gtdata_types, only: GT_VARIABLE
use dc_types, only: DP
type(GT_VARIABLE),intent(in):: var
real ,intent(in) :: value(:,:,:,:,:,:,:)
logical ,intent(out), optional:: err
end subroutine GTVarPutReal7
subroutine GTVarPutDouble(var, value, nvalue, err)
use gtdata_types, only: GT_VARIABLE
use dc_types, only: DP
type(GT_VARIABLE), intent(in):: var
real(DP), intent(in):: value(nvalue)
integer, intent(in):: nvalue
logical, intent(out), optional:: err
end subroutine GTVarPutDouble
subroutine GTVarPutReal(var, value, nvalue, err)
use gtdata_types, only: GT_VARIABLE
type(GT_VARIABLE), intent(in):: var
real, intent(in):: value(nvalue)
integer, intent(in):: nvalue
logical, intent(out), optional:: err
end subroutine GTVarPutReal
end interface
!
! === 変数とファイルの関係 ===
!
interface GTVarSearch
subroutine GTVarSearchNext(url, end)
character(len = *), intent(out):: url
logical, intent(out):: end
end subroutine GTVarSearchNext
subroutine GTVarSearchInit(urlBase)
character(len = *), intent(in):: urlBase
end subroutine GTVarSearchInit
end interface
!
! === 安全のための脱出口 ===
!
! SysDepAbort が呼び出すので、StoreError を呼んではならない
!
interface
subroutine GTVarSync(var, stat)
use gtdata_types, only: GT_VARIABLE
type(GT_VARIABLE), intent(inout), optional:: var
integer, intent(out), optional:: stat
end subroutine GTVarSync
end interface
!
! === ユーティリティ ===
!
! gtdata 層だけで書かれたライブラリ。
interface Create
subroutine GTVarCreateCopyC(var, url, copyfrom, copyvalue, &
& overwrite, err)
use gtdata_types, only: GT_VARIABLE
implicit none
type(GT_VARIABLE), intent(out):: var
character(len = *), intent(in):: url
type(GT_VARIABLE), intent(inout):: copyfrom
logical, intent(in), optional:: copyvalue
logical, intent(in), optional:: overwrite
logical, intent(out), optional:: err
end subroutine GTVarCreateCopyC
end interface
!
! 変数の削除 (作成中)
!
interface GTVarDel
subroutine GTVarDel1(varname, err)
character(len = *), intent(in):: varname
logical, intent(out):: err
end subroutine GTVarDel1
end interface
!
! --- 構造体関係 ---
!
interface Add_member
subroutine GTVarAddMember(var, url, link_name)
use gtdata_types, only: GT_VARIABLE
type(GT_VARIABLE), intent(inout):: var
character(len = *), intent(in):: url
character(len = *), intent(in), optional:: link_name
end subroutine GTVarAddMember
end interface
! 一意な変数名の自動作成
interface
subroutine GTDataTmpNam(file, base, result)
character(len = *), intent(in):: file
character(len = *), intent(in):: base
character(len = *), intent(out):: result
end subroutine GTDataTmpNam
end interface
end module gtdata_generic
!--
! vi:set readonly sw=4 ts=8:
!
!Local Variables:
!mode: f90
!buffer-read-only: t
!End:
!
!++