前のページ

次のページ


gtool4/Fortran 90 リファレンス

gtool4/Fortran 90 ライブラリの構成

2000年11月14日 豊田英司


本文書は gtool4/Fortran 90 ライブラリの構成と保守に必要な知識を概観します。

概観

gtool4/Fortran 90 ライブラリは多次元数値データの抽象的インターフェイスや、関連ツールを作成するのに必要な機能を提供します。

図1: gtool4/Fortran 90 の概観

gtool4/Fortran 90 ライブラリは図形表示アプリケーションとその他のコマンドラインツールをサポートします。

図形表示アプリケーションは DCL によって提供される描画機能を gtgraph クラスライブラリを通じてアクセスします。gtgraph は下位層 gtdata が提供するデータアクセスを用いて高水準の作図機能を提供します。すべての図形情報はプログラム内でオブジェクトと呼ばれる構造型変数に格納され、これを簡単なサブルーチン呼び出しでディスクファイルに書き込んだり、それを読み戻したりすることができます。

データアクセスを提供する gtdata 層は各種のデータ形式を抽象化した多次元数値データアクセスライブラリです。いかなるデータ形式も、多次元数値配列である変数と、それに付随する属性の集合としてアクセスできます。それ以外のデータ形式に依存した情報はすべてライブラリ内部で管理されます。

ライブラリにはこのほかにエラー処理ルーチン、処理系依存事項ラッパーなどが含まれています。

これらの機能を実現するために、gtool4/Fortran 90 ライブラリは以下のものに依存しています。

オブジェクト指向スタイル

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) と呼ぶことにします。

構造型のリスト

ライブラリのユーザが目にする可能性のある構造型は以下のとおりです。

VARYING STRING
可変長の文字列 (ISO_VARYING_STRING モジュールにて定義)
STRING_LIST
可変長の文字列の可変長のリスト
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
座標軸
GT_VARIABLE
gtool 変数、これは現状では netCDF 変数にしかなれないが、いずれ多種のファイル形式に対応する予定。
AN_VARIABLE
netCDF 変数
GR_VARIABLE
GrADS 格子点形式の変数

総称名のリスト

Attr_Rewind
属性列挙の初期化
function Attr_Next
属性列挙
function Attr_Trule
属性を真偽値として評価
Clear
オブジェクトを開かれていない状態にする初期化命令
Close
オブジェクトを閉じる
Del_Attr
属性削除
Display
オブジェクトをデバイスに出力する
Get([装置番号], 文字列)
文字列をファイルから読み込む
Get(gtool変数, 数値変数)
数値データ本体の入力
Get_Attr
属性入力
Load
gtool 変数からオブジェクトを読み込む
function Name
Open
開く (初期化)、開いたものは必ず閉じなければならない
Option
オブジェクトに何らかの操作をする
Put(オブジェクト1, オブジェクト2)
オブジェクト2 を オブジェクト1 の持ち物にする。オブジェクト1 を Close すると オブジェクト2 は自動的に Close されるようになる。
Put([装置番号], 文字列)
文字列をファイルに出力する
Put(gtool変数, 数値)
数値データ本体を gtool 変数に出力する
Put_Attr
属性出力
Put_Line
文字列ファイル出力(最期に改行がつく点が Put と異なる)
Save
オブジェクトを gtool 変数に格納
function Type
オブジェクトの種別
function Url

前のページ

次のページ