前のページ |
次のページ |
2000年11月14日 豊田英司
本文書は gtool4/Fortran 90 ライブラリの構成と保守に必要な知識を概観します。
gtool4/Fortran 90 ライブラリは多次元数値データの抽象的インターフェイスや、関連ツールを作成するのに必要な機能を提供します。
図1: gtool4/Fortran 90 の概観
gtool4/Fortran 90 ライブラリは図形表示アプリケーションとその他のコマンドラインツールをサポートします。
図形表示アプリケーションは DCL によって提供される描画機能を gtgraph クラスライブラリを通じてアクセスします。gtgraph は下位層 gtdata が提供するデータアクセスを用いて高水準の作図機能を提供します。すべての図形情報はプログラム内でオブジェクトと呼ばれる構造型変数に格納され、これを簡単なサブルーチン呼び出しでディスクファイルに書き込んだり、それを読み戻したりすることができます。
データアクセスを提供する gtdata 層は各種のデータ形式を抽象化した多次元数値データアクセスライブラリです。いかなるデータ形式も、多次元数値配列である変数と、それに付随する属性の集合としてアクセスできます。それ以外のデータ形式に依存した情報はすべてライブラリ内部で管理されます。
ライブラリにはこのほかにエラー処理ルーチン、処理系依存事項ラッパーなどが含まれています。
これらの機能を実現するために、gtool4/Fortran 90 ライブラリは以下のものに依存しています。
DCL: 描画機能、処理系依存事項
ISO_VARYING_STRING: 文字列処理 (ISO/IEC 1539-2:1994 で規定)
UNIDATA の netCDF ライブラリ
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) と呼ぶことにします。
ライブラリのユーザが目にする可能性のある構造型は以下のとおりです。
前のページ |
次のページ |