gtool4/Fortran 90 リファレンス - ライブラリ概観
2000年11月26日 豊田英司
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つのサブルーチンが提供するのであるといっています。上の例をコンパイルすると、単に Open と書いてあるところでコンパイラが引数リストに合う GTVarOpen を選択してくれるのです。GTVarOpen については別に書いたのでそちらを見てくださいね。
Fortran 90 言語では Open のような interface 文に書かれている名前を総称名、GTVarOpen などのような本当の名前を個別名といいます。引数の型の違うサブルーチンは同じ総称名を持つことができます。同様に、引数の型の違う関数は同じ総称名を持つことができます。gtool4/Fortran 90 ではこの総称名というメカニズムを使って多数のサブルーチンや引数を整理しています。
ライブラリのユーザが目にする可能性のある構造型は以下のとおりです。
層 | 型名 | 内容 |
---|---|---|
gtgraph | GT_DEVICE | 図形出力デバイス |
GT_OBJECT | GT_FRAME, GT_FIGURE, GT_CONTOURS, GT_LINE, GT_AXIS, GT_VARIABLE を包含する「もの」 | |
GT_FRAME | 枠 (印刷時のページや画面表示時のウィンドウをあらわす) | |
GT_FIGURE | 図 | |
GT_CONTOURS | 等値線群 | |
GT_LINE | 線グラフ | |
GT_AXIS | 座標軸 | |
gtdata | GT_VARIABLE | 変数 (ユーザ向けのインターフェイス、現状では AN_VARIABLE しか包含していないが、拡張される予定) |
AN_VARIABLE | netCDF 変数 | |
GR_VARIABLE | GrADS 格子点形式の変数 (サポート予定) | |
dc-isovst | STRING_LIST | 可変長の文字列の可変長のリスト |
VARYING_STRING | 可変長の文字列 |
総称名 | 関数結果の型 空欄は サブルーチン |
機能 |
---|---|---|
Attr_Next | 変数属性の列挙 | |
Attr_Rewind | 変数属性列挙の初期化 | |
Attr_True | logical | 変数属性を論理型として読み取り |
Bind | オブジェクト(第二引数)をオブジェクト(第一引数)の一部にする | |
Clear | 初期化 | |
Close | Open したものの終了処理 | |
Del | 変数の削除 (実装予定) | |
Del_Attr | 変数属性の削除 | |
Get, Get_Line | 入力、第1引数から第2引数へ | |
Get_Attr | 変数属性の読み取り | |
Inquire | 変数または属性の外部型の問い合わせ | |
Name | VARYING_STRING | ファイル名を含まない変数名 |
Open | 初期化、Close をしなければならない | |
Option | オブジェクトに何らかのメッセージを伝える | |
Put_Attr | 変数属性の書き出し | |
Put, Put_Line | 出力、第2引数から第1引数へ | |
Type | VARYING_STRING | オブジェクトとしての変数の種別 |
URL | VARYING_STRING | Open に使える変数名 |