gtool4/Fortran 90 リファレンス - ライブラリ概観
2000年11月17日 豊田英司
gtgraph, gtdata ライブラリは独自のオブジェクト指向スタイルで記述されています。
クラスは構造型として表現されます。
メソッドはサブルーチンで、名前の衝突を避けるために総称宣言されています。
実例を示しましょう。
データアクセスをするには必ず変数を開かなくてはなりません。変数を開くというのを Fortran ではどう書くかというと、たとえば
use gtool type(GT_VARIABLE):: var type(VARYING_STRING):: filename ... filename = "gtool.nc" call Open(var, filename)
のようになります。ある gtool 変数というのは type(GT_VARIABLE) 型の (Fortran の) 変数であらわされます。これを Open というサブルーチンに突っ込むと、変数が開かれるわけです。ではこの Open の実体はどこにあるかというと、gtdata_generic モジュールにその手がかりが書かれています。
! 一部省略があります interface open subroutine GTVarOpen(var, url, writable, err) type(GT_VARIABLE), intent(inout):: var type(VARYING_STRING), intent(in):: url logical, intent(in), optional:: writable logical, intent(out), optional:: err end subroutine subroutine GTVarOpenByDimOrd(dimvar, var, dimord, ount_compact, err) type(GT_VARIABLE), intent(inout):: dimvar type(GT_VARIABLE), intent(in):: var integer, intent(in):: dimord logical, intent(in), optional:: count_compact logical, intent(out), optional:: err end subroutine end interface
ここで open というインターフェイスは GTVarOpen と GTVarOpenByDimOrd という2つのサブルーチンが提供するのであるといっています。上の例をコンパイルすると、コンパイラが引数リストに合う GTVarOpen を選択してくれます。GTVarOpen については別に書いたのでそちらを見てください。
実は上記の2つだけではなく、gtool4/Fortran 90 にはさまざまな型に対する数多くの Open サブルーチンが存在します。これらを総称して Open サブルーチンと呼ぶことにします。Open に限らず、総称サブルーチンは多くの場合先頭引数の型が異なっています。多くのサブルーチンは先頭引数を操作するものだと考えられるように設計されているので、GT_VARIABLE に対する Open を区別する場合は Open(GT_VARIABLE) と呼ぶことにします。
gtool4/Fortran 90 では設計上のオブジェクトを構造型で表現しています。ライブラリのユーザが目にする可能性のある構造型は以下のとおりです。