%表題   gtool3 利用の手引 (intro)
%
%履歴   90/08/14 沼口  敦
%       95/05/29 竹広真一
%
\chapter{概要}

\section{はじめに}

格子点データ解析ツール\GTOOL3は,
格子点によって表されたデータを加工し,
更にそれを図化するための一連の道具である.
小さな道具（以後モジュールと呼ぶ）を
組み合わせることによって,
さまざまな解析・図化ができるようになることを目指している.

  \subsection{GTOOL3の特徴}

    \GTOOL3の特徴として, 次のような点を挙げることができる.

    \begin{enumerate}
    \item ヘッダーによる情報管理

          データの加工・図化に必要なさまざまな情報,
          例えばデータの名称, 寸法, 座標軸に関する情報などを,
          一つの文字型配列(ヘッダー配列)に入れて管理する.
          それによってデータに関する情報の管理と
          受け渡しが非常に簡単になっている.
          それらの情報は各モジュールにおいて自動的に参照・変更されるので,
          あらかじめ正しくセットされていれば
          ユーザーがあまり気を使う必要はない.

    \item ファイル形式の統一

          データはファイル上には,
          ヘッダーと共に特定の形式(\GTOOL3標準形式)で書かれる.
          データ毎に読み取りルーチンを変更する必要はない.
          データの加工に必要な情報の大部分が
          ファイルに書かれているので,
          一つのプログラムでさまざまなデータを扱うことが
          可能になる.

    \item 格子情報ファイルによる格子位置の情報管理

          格子点データにとって, 格子の位置(座標)は重要な情報である.
          \GTOOL3では,
          標準的に用いる格子情報(位置および平均をとる際の重みの)を
          あらかじめファイル(格子情報ファイル)として作成しておき,
          随時それを読み出して利用する.
          現在のところ, 3次元までの,
          一般には不等間隔で刻まれた軸によって張られるような
          直交格子空間のみを扱うことができる.
                            　　
    \item 電脳ライブラリーが基本

          電脳ライブラリー\footnotemark を下位ルーチンとして用いており,
          欠損値処理等が可能となっている.

          \footnotetext{文献{\tt [1]}}

    \end{enumerate}

  \subsection{GTOOL3の構成}

    \GTOOL3は次のような機能をもつモジュール群に分かれる.

    \begin{description}
    \item[{\gtfnt GTTOOL}] 全体を統括するパラメータを参照/設定する.
    \item[{\gtfnt GHTOOL}] ヘッダーを参照/設定する.
    \item[{\gtfnt GFTOOL}] 標準形式のファイルを読み書きする.
    \item[{\gtfnt GPTOOL}] データの加工を行なう.
    \item[{\gtfnt GGTOOL}] データの図化を行なう.
    \item[{\gtfnt GUTOOL}] 下請け処理モジュールの集まり.
    \end{description}

    \begin{enumerate}
    \item {\gtfnt GTTOOL}は,
          ファイル名称のきまりなど全体にかかわるパラメータを
          管理する.

    \item {\gtfnt GHTOOL}には,
          ヘッダー配列を操作するためのモジュールが
          いくつか用意されている.

    \item {\gtfnt GFTOOL}には,
          データをヘッダーと共に\GTOOL3フォーマットで
          読み書きするモジュール及び
          ファイルのオープンなどの操作を行なう
          モジュールが用意されている.

    \item {\gtfnt GPTOOL}には,
          データの切り出し, データの平均, データ同士の四則演算など
          基本的なモジュールが用意されている.
          それらをパイプライン的に組み合せることによって
          さまざまのデータ加工が可能である.
          SUBFUNCライブラリを下位ルーチンとして用いている.

    \item {\gtfnt GGTOOL}には,
          モニター的な
          (必ずしも見た目には整ってはいないが,
          必要な情報が多く盛り込まれた)
          出力が簡単に出せるようなモジュールが用意されている.
          ファイルに書かれたヘッダーが
          自動的に出力されるようになっている.
          コンター間隔など, 図化に必要なパラメーターも
          ヘッダーの中に記述され,
          図化モジュールに渡されるしくみになっている
          (もちろん内部で適当に決めさせることもできる).
          UPACK/SGKSを下位ルーチンとして用いている.

    \item {\gtfnt GUTOOL}は,
          他のモジュールから呼び出される
          下請けモジュールの集まりである.
          中にはユーザーが直接使えるようなものも
          含まれている.

    \end{enumerate}

\section{ヘッダー}
  \entry{ヘッダー}

  ヘッダーは文字型配列変数( \verb!CHARACTER(64)*16! ) の形をとる.
  その内容は以下のとおりである.
  \モジ{GHPACK}によってセットできる.

  \subsection{ヘッダー一覧}

    \begin{tt}
    \begin{tabular}{|l|l|l|l|l|} \hline
    添字  & 記述子名称 & format & 説明           & 例  \\ \hline
    1     & IDFM   & I10   & フォーマットid  & 9009 \\
    2     & DSET   & A16   & データセット名  & AP01 \\
    3     & ITEM   & A16   & 識別名称(変数名)& TMP \\
    4     & EDIT1  & A16   & 編集略記号(1)   & TM1D \\
    5     & EDIT2  & A16   & 編集略記号(2)   & XFK1 \\
    \ \ $\vdots$ & \ \ $\vdots$  &  \ \ $\vdots$  & \ \ $\vdots$  &   \\
    11    & EDIT8  & A16   & 編集略記号(8)   &   \\
    12    & FNUM   & I10   & ファイル番号    & 1 \\
    13    & DNUM   & I10   & データ番号      & 100 \\
    14    & TITL1  & A16   & タイトル        & Temperature \\
    15    & TITL2  & A16   & \ \ 〃 \ \ 続き &  \\
    16    & UNIT   & A16   & 単位            & K \\
    17    & ETTL1  & A16   & 編集タイトル(1) & Dayly mean \\
    18    & ETTL2  & A16   & 編集タイトル(2) & filter (X) \\
    \ \ $\vdots$ & \ \ $\vdots$  & \ \ $\vdots$  & \ \ $\vdots$  &   \\
    24    & ETTL8  & A16   & 編集タイトル(8) &           \\
    25    & TIME   & I10   & 時刻(通し)      & 18769650900 \\
    26    & DATE   & A16   & 時刻(yyyymmddhhmmss) & 19900813122800 \\
    27    & UTIM   & A16   & 時刻単位        & SEC \\
    28    & TDUR   & I10   & データ代表時間  & 3600 \\
    29    & AITM1  & A16   & 軸1の格子識別名称 & GLON128 \\
    30    & ASTR1  & I10   & 軸1の格子番号始め &   1 \\
    31    & AEND1  & I10   & 軸1の格子番号終り & 128 \\
    32    & AITM2  & A16   & 軸2の格子識別名称 & GGLA64 \\
    33    & ASTR2  & I10   & 軸2の格子番号始め &   1 \\
    34    & AEND2  & I10   & 軸2の格子番号終り &  64 \\
    35    & AITM3  & A16   & 軸3の格子識別名称 & SIGA12 \\
    36    & ASTR3  & I10   & 軸3の格子番号始め &   1 \\
    37    & AEND3  & I10   & 軸3の格子番号終り &  12 \\
    38    & DFMT   & A16   & データフォーマット & (32F12.5) or UR4 \\
    39    & MISS   & E15.7 & 欠損値の値      & -9999. \\
    40    & DMIN   & E15.7 & レンジ(最小)    & 100.   \\
    41    & DMAX   & E15.7 & レンジ(最大)    & 300.   \\
    42    & DIVS   & E15.7 & 間隔(小)        & 10.    \\
    43    & DIVL   & E15.7 & 間隔(大)        & 50.    \\
    44    & STYP   & I10   & スケーリングタイプ & 1   \\
    45--47& OPTNx  & A16   & 空き            & \\
    48--59& MEMOxx & A16   & メモ            & \\
    60    & CDATE  & A16   & データ作成日付  & 19900813122800 \\
    61    & CSIGN  & A16   & データ作成者    & SWAMP      \\
    62    & MDATE  & A16   & データ変更日付  & 19900926225422 \\
    63    & MSIGN  & A16   & データ変更者    & SWAMP      \\
    64    & SIZE   & I10   & 配列のサイズ    & 98304 \\ \hline
    \end{tabular}
    \end{tt}

  \subsection{ヘッダーの各記述子の説明}
    \entry{ヘッダーの各記述子の説明}

    \begin{tt}
    \begin{itemize}
    \item IDFM(1)は, 今後このヘッダーのフォーマットが変更になった時のために,
          この形式のデータを別の形式のデータと区別するための情報である.
          この表はフォーマット{\rm id}=9009に基づいている.

    \item DSET(2)は数値実験なら実験名,
          観測データならデータの名前(`GANAL'など)である.

    \item ITEM(3)は例えば変数の略称を入れる.

    \item EDITx(4$\sim$11)は, 編集操作を表す略記号である.
          はじめは全てブランクであり, データの加工をする度に
          一つづつ書き加える.

    \item 以上のDSET(2)からEDIT8(11)までで, ファイル名を構成する.

    \item FNUM(12)は, ファイルの順序番号となる.
          時系列がいくつかのファイルに分かれている場合などに用いる.

    \item DNUM(13)は, データユニットの順序番号となる.

    \item TITL1(14), TITL2(15) は図を描いたりするときの
          タイトルとなる. {\rm 2}つの欄を合わせて{\rm 32}文字が使える.

    \item UNIT(16)は, データの単位を示す.

    \item ETTLx(17$\sim$24)は,
          編集操作の内容の簡単な説明である.
          はじめは全てブランクであり, データの加工をする度に
          一つづつ書き加える.

    \item TIME(25)は, 適当な時点を原点とした通し時間である.

    \item DATE(26)は, データの時刻を(yyyymmddhhmmss)という形式で示す.

    \item UTIM(27)は, TIME(26)およびTDUR(28)の単位である.

    \item TDUR(28)は, データが代表する時間の長さである.

    \item AITM1(29)は, データの{\rm 1}次元めの軸が
          どの格子情報(\ref{格子情報}参照)に対応するかを示す.
          AITM2, AITM3 等は同様に{\rm 2}次元め,{\rm 3}次元めの指定である.

    \item ASTR1(30), AEND1(31)は,
          データの{\rm 1}次元めの軸に格子番号何番から何番までの
          格子点のデータが入っているかを示す.
          通常はASTR1は1, AEND1はその軸の全格子点数となるが,
          一部分を切り出したデータの場合はその限りではない.
          ASTR2, ASTR3 等は同様に{\rm 2}次元め,{\rm 3}次元めの指定である.

    \item DFMT(38)は,
          ファイルのデータレコードのフォーマットの指定である.
          '(32F12.5)'などは指定された書式つき,
          'UR4'などは書式なし(この場合{\rm 4}バイト実数型)を示す.

    \item MISS(39)は, 欠損値扱いするデータの値である.

    \item MIN(40), MAX(41), DIVS(42), DIVL(43) は
          図を描くための情報である.
          これらがセットされている場合,
          例えばコンターならMINからMAXまでDIVSおきにコンターを描き,
          DIVLおきにラベルをつける.
          MISS(39)で指定された欠損値が入っている場合には
          指定されないことになり, 内部で適当に決めて描くことになる.

    \item STYP(44)も図を描くための情報
          であり, スケーリングタイプと呼ぶ. \entry{スケーリングタイプ}
          折れ線図などのときに,
          この絶対値が1の時は通常の軸で, 
          絶対値が2の時は対数軸で描くことを示す.
          また, 正のときは右および上が正の方向,
          負のときは左および下が正の方向となる.

          すなわち,次のようになる.

          \vspace{3mm}
          \begin{tabular}{|l|c|c|} \hline
                           & 通常の軸  & 対数軸  \\ \hline
          右, 上が正の方向 &    1      &   2     \\ \hline
          左, 下が正の方向 &   -1      &  -2     \\ \hline
          \end{tabular}


    \item OPTNx(45$\sim$47, xは1から3まで)は
          未使用領域であり, 今後の拡張のために使用しないでおく.

    \item MEMOxx(48$\sim$59, xは1から12まで)は, 
          メモ欄であり, {\rm 192}文字の大きさがある.
          この欄のみ日本語文字を入れてもよい.

    \item CDATE(60)には, データの作成日付がDATE(26)と同じ形式で入る.

    \item CSIGN(61)は, データ作成者の署名欄である.

    \item MDATE(62)には, 
          データの最終変更日付がDATE(26)と同じ形式で入る.
          データが加工されファイルに書かれるときに,
          その時刻が入る.

    \item MSIGN(63)は, データの最終変更者の署名欄である.
          データが加工されファイルに書かれるときに,
          \モジ{GTSIGN}で設定された作業者名が入る.

    \item SIZE(64)は, 配列の大きさであり,
          多少特殊な使われかたをする.
          これが指し示すものは, ファイル上ではデータの大きさに一致するが,
          計算機上のメモリーに読み込まれてからは
          データを入れておく配列の大きさを示し,
          配列からデータがはみ出すかどうかのチェックに使われる
          (\ref{サイズチェック機能}参照).

    \end{itemize}
    \end{tt}

    今後, 各欄のことを`記述子'と呼ぶ. \entry{記述子}
    {\tt DSET}から{\tt DNUM}までの記述子によって
    データに名前が付けられる.
    これらの記述子を`識別記述子'と呼ぶ. \entry{識別記述子}
    一方, それ以降の記述子はデータの内容の説明および属性を記述する.
    これらの記述子を`属性記述子'と呼ぶ. \entry{属性記述子}
    編集略記号{\tt EDITx}および
    編集タイトル{\tt ETTLx}をまとめて特別に
    `編集記述子'と呼ぶ. \entry{編集記述子}
    編集記述子以外の記述子を
    `データ記述子'と呼ぶ. \entry{データ記述子}

\section{標準ファイル形式}
  \entry{標準ファイル形式}

  \subsection{標準ファイル形式の概要}

    \GTOOL3 標準形式のファイルは
    `データユニット'の並びで作られる. \entry{データユニット}
    1つのデータユニットは、2つのレコードからなる.
    1つめは`ヘッダーレコード'であり, \entry{ヘッダーレコード}
    そのデータのヘッダーが入る.
    2つめの`データレコード' \entry{データレコード}
    にデータの本体が入る.

    \vspace{5mm}

    \begin{tabular}{|l|l|l } \cline{1-2}
       データユニット1 & ヘッダーレコード 1 & ファイルの先頭 \\ \cline{2-2}
                       & データレコード   1 & \\  \cline{1-2}
       データユニット2 & ヘッダーレコード 2 & \\  \cline{2-2}
                       & データレコード   2 & \\  \cline{1-2}
       \ \ $\vdots$    & \ \ $\vdots$       & \\  \cline{1-2}
       データユニットN & ヘッダーレコード N & \\  \cline{2-2}
                       & データレコード   N & ファイルの終り \\  \cline{1-2}
    \end{tabular}

  \subsection{標準ファイルのフォーマット}

    標準ファイルのフォーマットを示すために,
    一つのデータユニットをファイルに書くルーチンを紹介する\footnotemark .
    ここで, {\tt IASTR1}{\em etc. }は
    ヘッダーの {\tt ASTR1}{\em etc. }の中身である.

    \vspace{5mm}

    書式なしの場合:

    \begin{verbatim}
          WRITE ( JFILE ) HHEAD
          WRITE ( JFILE ) ( ( ( DATA( I,J,K ), I=IASTR1,IAEND1 ),
         &                                     J=IASTR2,IAEND2 ),
         &                                     K=IASTR3,IAEND3 )
    \end{verbatim}

    書式ありの場合:

    \begin{verbatim}
          WRITE ( JFILE, '(A)' ) HHEAD
          WRITE ( JFILE, HDFMT ) ( ( ( DATA( I,J,K ), I=IASTR1,IAEND1 ),
         &                                            J=IASTR2,IAEND2 ),
         &                                            K=IASTR3,IAEND3 )
    \end{verbatim}

    \footnotetext{一つのファイルに
                  書式つきと書式なしを混在することができないので,
                  データが書式なしの場合はヘッダーも書式なし,
                  データが書式ありの場合はヘッダーも書式あり
                  である必要がある.}

\section{格子情報}
  \entry{格子情報}

  \subsection{格子情報の概要}

    座標軸,格子位置に関する情報は,
    あらかじめ格子情報として作成しておく.
    通常はファイルの形で作成しておくが,
    メモリー上に作成することもできる.
    各モジュールは, ヘッダーから格子の識別名称を認識し,
    自動的に格子情報を読み出して利用する.
    現在のところ, 3次元までの,
    一般には不等間隔で刻まれた軸によって張られるような
    直交格子空間のみを扱うことができ,
    2次元以上の空間にランダムに散らばるようなデータは
    正しく処理できない.

  \subsection{格子情報の種類}

    格子情報はいくつかの種類に分けられる.

    \vspace{3mm}

    \underline{データ内容による分類:}

    \begin{itemize}
    \item 格子位置情報 
    \item 格子重み情報
    \end{itemize}

    \begin{enumerate}
    \item 格子位置情報には, 各格子の座標値が入る. \entry{格子位置情報}
    \item 格子重み情報には,                       \entry{格子重み情報}
          その軸に関する平均を取る際の
          各格子の重みが入る.
          和が1になっている必要はない.
          通常は格子の間隔となるが,
          例えば緯度軸の場合には緯線の長さに比例したファクターがかかる.
    \end{enumerate}

    今後, 格子位置情報の{\tt n}番目の座標に対応する格子(データ)を,
    格子番号{\tt n}の格子(データ)と呼ぶ.  
    \entry{格子番号}

    \vspace{3mm}

    \underline{座標軸の性質による分類:}

    \begin{itemize}
    \item 周期的な座標軸
    \item 非周期的な座標軸
    \end{itemize}

    周期的な座標軸とは, 例えば経度のように
    1周するともとに戻る座標軸をいう.
    周期的な座標軸の場合, 格子番号が{\tt (全格子数+1)}の格子は
    格子番号{\tt =1}の格子と同じであると仮定される.
    \entry{周期的な座標軸}

    \vspace{3mm}

    \underline{データの形態による分類:}

    \begin{itemize}
    \item ファイル格子情報
    \item 内部設定格子情報
    \end{itemize}

    ファイル格子情報は, \GTOOL3標準形式のファイルに書かれたものである.
    通常はファイル格子情報を扱う.
    \entry{ファイル格子情報}

    時系列データの時間軸のような
    あらかじめ格子位置を特定できない座標軸の場合は,
    内部(メモリー上)に格子情報を蓄えることができる
    (\モジラ{GUQIAX}{GUSIAX}が管理する)
    これを内部設定格子情報と呼ぶ.
    \entry{内部設定格子情報}

  \subsection{格子情報の種類の略称}
    \entry{格子情報の種類の略称}

    格子情報の種類は, 次のような略称で表す.
    これは格子情報のヘッダーの欄\verb!DSET!に入る.

    \vspace{3mm}
    \begin{tt}
    \begin{tabular}{|l|l|l|l|l|} \hline
              & \multicolumn{2}{c|}{ファイル格子情報}
              & \multicolumn{2}{c|}{内部設定格子情報} \\ \hline
              & 格子位置 & 格子重み & 格子位置 & 格子重み \\ \hline
    周期的    & CAXLOC   & CAXWGT   & CIAXLOC  & CIAXWGT  \\ \hline
    非周期的  & AXLOC    & AXWGT    & IAXLOC   & IAXWGT   \\ \hline
    \end{tabular}
    \end{tt}

  \subsection{格子の識別名称}

    ファイル格子情報の
    識別名称はどのようなものを付けてもよいが,
    互いに区別可能でなければならず,
    またファイル名の一部となるため(\ref{格子情報のファイル名}参照)
    その制約を受ける(HITACなら先頭が数字でなく, 8文字以下).

    内部設定格子情報の識別名称は,
    先頭が文字{\tt '@'}ではじまるものを付ける.

  \subsection{格子情報のフォーマット}

    \GTOOL3フォーマットの標準形式で作成される必要がある.

    ヘッダーは次のようにセットする
    (注意すべき項目のみ記す).
    \entry{格子情報のヘッダー}
    これは\モジ{GHPACA}によってセットできる.

    \vspace{3mm}
    \begin{tt}
    \begin{tabular}{|l|l|l|l|l|} \hline
    添字  & 名称   & 値                & 例 \\ \hline
    2     & DSET   & (格子情報種類略称) & CAXLOC  \\
    3     & ITEM   & (格子の識別名称)  & GLON128  \\
    12    & FNUM   & 1   \ \ (*)       &     \\
    13    & DNUM   & 1   \ \ (*)       &     \\
    14    & TITL1  & (軸のタイトル)    & longitude \\
    15    & TITL2  & (\ \ 〃 \ \ 続き) &     \\
    16    & UNIT   & (軸の単位)        & deg \\
    25    & TIME   & 0   \ \ (*)       &     \\
    26    & DATE   & (作成時刻)        & 19900813122800 \\
    27    & UTIM   & SEC \ \ (*)       &     \\
    28    & TDUR   & 1   \ \ (*)       &     \\
    29    & AITM1  & (ITEMとおなじ)    & GLON128 \\
    30    & ASTR1  & 1                 &     \\
    31    & AEND1  & (格子数)または    &     \\
          &        & (格子数+1) \ \ [下記]  & 129 \\
    32    & AITM2  & (空白)            &     \\
    33    & ASTR2  & 1                 &     \\
    34    & AEND2  & 1                 &     \\
    35    & AITM3  & (空白)            &     \\
    36    & ASTR3  & 1                 &     \\
    37    & AEND3  & 1                 &     \\ 
    40    & DMIN   & (座標軸を描く際の最小値)     & 0. \\
    41    & DMAX   & (座標軸を描く際の最大値)     & 360. \\
    42    & DIVS   & (座標軸を描く際の目盛間隔)   &  10. \\
    43    & DIVL   & (座標軸を描く際のラベル間隔) &  30. \\
    44    & STYP   & (座標軸のスケーリングタイプ) &  1   \\ \hline
    \end{tabular}
    \end{tt}
    \vspace{3mm}

    周期的な座標軸(識別名称が{\tt 'C'}で始まるもの)の場合は,
    {\tt AEND1}に{\tt (格子数+1)}を設定する.
    非周期的な座標軸(識別名称が{\tt 'C'}以外で始まるもの)の場合は,
    {\tt AEND1}に格子数を設定する.

    また, このうち{\tt (*)}を付けたものは
    必ずしもこれに従う必要はないが
    慣習としてそれを用いることにするものである.
    それ以外の記述子は,
    上の表に従う必要がある.

  \subsection{格子情報のファイル名}
    \entry{格子情報のファイル名}

    ファイル格子情報の場合のファイル名は,

    格子位置情報の場合 : \\
    \vspace{-6mm}
    \begin{quote}
       格子位置ファイル接頭子
       (\モジラ{GTCGET}{GTCSET}によって管理されるパラメータ
        {\tt FAXLOC}の内容)
        に格子の識別名称をつなげたもの.
    \end{quote}

    格子重み情報の場合 :\\
    \vspace{-6mm}
    \begin{quote}
       格子重みファイル接頭子
       (\モジラ{GTCGET}{GTCSET}によって管理されるパラメータ
        {\tt FAXWGT}の内容)
        に格子の識別名称をつなげたもの.
    \end{quote}

    \noindent
    となる.

     (例えば{\tt FAXLOC}の内容が{\tt 'GTAXLOC.'},
     格子の識別名称が{\tt 'GLON128'}ならば,
     格子位置情報のファイル名は{\tt 'GTAXLOC.GLON128'}である.)

  \subsection{格子情報ファイルの生成法}

    格子情報ファイルを作成するプログラムの例が付属しているので,
    参考にされたい(プログラム{\tt  gtcrax}, 
    \ref{gtcrax}).

\section{配列サイズのチェック機能}
  \entry{サイズチェック機能}

  \subsection{チェック機能の概要}

    \GTOOL3では, データは実数型の配列に入れてやりとりする.
    実際に何個のデータが入っているかの情報は
    ヘッダーの中に記されており,
    ファイルにも書かれている.
    配列に宣言時の大きさを超えて
    値を代入しないようにするためには,
    これらに加えて宣言時の配列のサイズに関する情報を
    与える必要がある.
    \GTOOL3ではこの宣言時の配列のサイズの情報も
    ヘッダーの中に入れて扱う.
    そのための欄が, 欄{\tt SIZE(64)}である.

    宣言時の配列のサイズの設定には, \モジ{GTSIZE}を用いる.
    設定されたサイズよりも多くのデータを書き込もうとしたときには,
    エラーメッセージを表示して停止する.
    このチェックは\モジ{GUSZCK}
    によって行なわれる.
    ただしこのチェック機能は,
    \モジラ{GTPGET}{GTPSET}の管理するパラメータ{\tt SUBCHK}が
    {\tt .TRUE.}の場合のみ働く.
    {\tt SUBCHK}の既定値は{\tt .FALSE.}である.
    {\tt GTSIZE}を呼ぶと,
    {\tt SUBCHK}は{\tt .TRUE.}に設定される.

  \subsection{チェック機能に関する注意}

    この機能を有効に活用するためには, 次のような注意が必要である.

    \begin{itemize}
    \item ヘッダーを入れる文字型配列と,
          データを入れる実数型配列は
          1対1に対応させておくことが望ましい.
    \item 宣言部の直後, 最初の実行文として
          {\tt GTSIZE}を呼ぶことが望ましい.
    \item 一つの配列に関して{\tt GTSIZE}を呼んだときには,
          必ず全部の配列について呼ぶこと.
          {\tt GTSIZE}によって{\tt SIZE}が設定されていないときには,
          宣言時の配列のサイズが1であるとみなされることになるので注意.
    \end{itemize}

    ヘッダーの欄{\tt  SIZE}は,
    ファイルから読み込まれることはない.
    また, \モジ{GHCOPY}によってもコピーされない.

\section{使用するライブラリ}

  \GTOOL3 は,
  地球流体電脳倶楽部による電脳ライブラリを \entry{電脳ライブラリ}
  下位ルーチンとして用いている.
  この利用の手引は電脳ライブラリに関して
  多少の知識があることを前提として書かれている.
  電脳ライブラリに関しては文献{\tt [1]}を参照のこと.

%\GTOOL3 の利用のためには, 電脳ライブラリのうち
%SUBFUNC および UTIL1 が必要である.
%また, {\gtfnt GGTOOL}を利用するためには
%それらに加えてSGKS および UPACK が必要である.

\section{各モジュールの説明の見方と使い方}

  \subsection{モジュールの説明の見方}

    第2章から第7章までは, 各モジュールの説明にあてられる.
    そこでは, 次のような説明がある.

    \vspace{5mm}

    \begin{quote}

    {\large\bf 2.1.1 \ \ \ GTPGET  [S]  共通パラメータ（数）を参照 }

    % GTPGET.FOR 9:  1990/09/23 (日) 15:32:27
    \begin{verbatim}
          SUBROUTINE GTPGET
         I         ( HP,
         O           IPARA )
    *
          CHARACTER HP   *(*)                ! パラメーターの名前
    *    (INTEGER)  IPARA                    ! パラメーターの内容：数字
    \end{verbatim}

    \begin{setumei}
    パラメーターHPの内容をIPARAに入れる.
    IPARAの実引数としては, 適当な型の変数を用いること.
    \end{setumei}

    \end{quote}


    タイトルは, モジュール名とその簡単な説明である.
    [S] などの記号は, モジュールの種類であり,

    \vspace{3mm}
    \hspace*{20mm}
    \begin{tabular}{ll}
     [P]  & プログラム \\ \relax
     [S]  & サブルーチン \\ \relax
     [ES] & サブルーチンへのエントリー \\ \relax
     [F]  & 関数 \\ \relax
     [EF] & 関数へのエントリー \\ \relax
     [I]  & {\tt INCLUDE} で読み込まれる部分 \\
    \end{tabular}
    \vspace{3mm}

    となっている.

    \vspace{3mm}

    次に, モジュールの先頭部分
    (モジュール名, 仮引数のリスト, 宣言部のうち仮引数に関係する部分)
    を実際のプログラムからコピーしてある.
    宣言部には簡単なコメントが書いてあり,
    それによって引数の内容と型を示す.

    仮引数リストの継続行の記号は次のような意味を持っている.
    \entry{仮引数リストの継続行の記号}

    \begin{center}
        \begin{tabular}{clccl} 
        記号 & 意味      & 入力 & 出力 & 機能     \\
        O    & output    &  ×  &  ○  & 値を生成 \\
        M    & modify    &  ○  &  ○  & 入力値を加工して出力 \\
        I    & input     &  ○  &  −  & 入力値 \\
        D    & dimension &  ○  &  −  & 整合配列の大きさを決める \\
        W    & work      &  ×  &  ×  & 作業領域 \\
        \end{tabular}
    \end{center}

    \[
        入力 \left\{
        \begin{array}{ll}   
          ○ &  中で値が参照される可能性がある \\
          × &  中に何が入っているかは問わない
        \end{array}  
         \right.
    \]

    \[
        出力 \left\{
        \begin{array}{ll}   
          ○ &  中で値が変更される可能性がある \\
          − &  値は変更されない \\
          × &  何がでてくるかは保証しない
        \end{array}  
         \right.
    \]

    \vspace{3mm}

    最後にモジュールの内容についての多少くわしい説明がある.

  \subsection{モジュールの使用法}
    \entry{モジュールの使用法}

    説明に書かれた情報をもとに,
    適当な引数を用いてモジュールをCALLすればよい.

    \vspace{3mm}

    ただし, 次の記述には多少注意が必要である.

    \begin{verbatim}
    *    (INTEGER)  IPARA                    ! パラメーターの内容：数字
    \end{verbatim}

    この仮引数は, 
    モジュールの中では整数型として宣言されているが,
    実引数としては場合によって
    整型数/実数型/論理型のどれでも取りうる.
    これがどの型を取るかは, 別の引数(ここでは{\tt HP})
    によって指定されることになる.
    ( モジュールの中では{\tt EQUIVALENCE}文によって
      整型数/実数型/論理型の変数が結合されて表現されている. )
    このような引数を持つモジュールには,
    \モジラ{GTPGET}{GTPSET}
    \モジラ{GHPGET}{GHPSET}
    \モジラ{GGPGET}{GGPSET}がある.

    これらのモジュールを呼ぶ際には,
    引数の型に注意しなければならない.
    例えば, {\tt GTPGET}の場合,
    {\tt HP}が{\tt 'WFILE'}のときは{\tt IPARA}として
    整数型の変数/定数を用いるべきだが,
    {\tt HP}が{\tt 'SUBCHK'}のときは{\tt IPARA}として
    論理型の変数/定数を用いなければならない.
    また, コンパイルオプションとして
    {\tt ARGCHK}オプションを用いてデバッグを行なうときは,
    これらのモジュールについてだけは,
    {\tt NOARGCHK}オプションを用いて
    コンパイルしておかないと(本当は害のない)
    エラーが出てしまう.

% Local Variables: 
% mode: japanese-latex
% TeX-master: "gtool"
% End: 
