%表題   GTOOL3 利用の手引 (gutool)
%
%履歴   90/09/24 沼口  敦
%       95/06/03 竹広真一
%

\chapter{ユーティリティーモジュール群}


下請け処理を行なうモジュール群である.

\section{データのサイズの参照等のモジュール}

  ヘッダーからデータのサイズを参照する
  モジュールが用意されている.

  \subsection{GUQSIZ  [S]  データサイズの取得 }
    \entry{GUQSIZ}

    % GUQSIZ.FOR 9:  1990/09/25 (火) 10:11:41
    \begin{verbatim}
          SUBROUTINE GUQSIZ
         I         ( HHEAD ,
         O           IXSTR , IXEND , IXDIM ,
         O           IYSTR , IYEND , IYDIM ,
         O           IZSTR , IZEND , IZDIM  )
    *
          CHARACTER  HHEAD ( * )*(*)         ! ヘッダー
          INTEGER    IXSTR , IXEND , IXDIM   ! 軸1の始め 終り 寸法
          INTEGER    IYSTR , IYEND , IYDIM   ! 軸2の始め 終り 寸法
          INTEGER    IZSTR , IZEND , IZDIM   ! 軸3の始め 終り 寸法
    \end{verbatim}

    \begin{setumei}
    ヘッダーから, データのサイズを読み取る.
    ここでIXSTR, IXEND等は,
    それぞれヘッダーの記述子ASTR1, AEND1等の内容であり,
    IXDIM = IXEND-IXSTR+1である.

    格子番号(格子位置データとの対応を示す)
    IXSTRからIXENDまでの
    データが入っていることを示す.
    \end{setumei}

  \subsection{GUCSIZ  [S]  データサイズの比較 }
    \entry{GUCSIZ}

    % GUCSIZ.FOR 9:  1990/09/25 (火) 10:10:56
    \begin{verbatim}
          SUBROUTINE GUCSIZ
         I         ( HHEAD1, HHEAD2,
         O           IXSTR1, IXDIM1, IXSTR2, IXDIM2,
         O           IYSTR1, IYDIM1, IYSTR2, IYDIM2,
         O           IZSTR1, IZDIM1, IZSTR2, IZDIM2,
         O           IXSTRC, IXENDC, IXDIMC,
         O           IYSTRC, IYENDC, IYDIMC,
         O           IZSTRC, IZENDC, IZDIMC         )
    *
          CHARACTER  HHEAD1 ( * )*(*)        ! ヘッダー１
          CHARACTER  HHEAD2 ( * )*(*)        ! ヘッダー２
          INTEGER    IXSTR1, IXDIM1          ! 軸１の始めと大きさ
          INTEGER    IXSTR2, IXDIM2          !  〃 （ヘッダー２）
          INTEGER    IYSTR1, IYDIM1          ! 軸２の始めと大きさ
          INTEGER    IYSTR2, IYDIM2          !  〃 （ヘッダー２）
          INTEGER    IZSTR1, IZDIM1          ! 軸３の始めと大きさ
          INTEGER    IZSTR2, IZDIM2          !  〃 （ヘッダー２）
          INTEGER    IXSTRC, IXENDC, IXDIMC  ! 軸１の共通部分
          INTEGER    IYSTRC, IYENDC, IYDIMC  ! 軸２の共通部分
          INTEGER    IZSTRC, IZENDC, IZDIMC  ! 軸３の共通部分
    \end{verbatim}

    \begin{setumei}
    ヘッダーから, 2つのデータのサイズを読み取り,
    共通部分を抽出する.
    ここでIXSTR1, IXDIM1は,
    それぞれヘッダー1の記述子ASTR1等の内容, 
    および((AEND1の内容)-(ASTR1の内容)+1)である.
    格子番号(格子位置データとの対応を示す)
    IXSTRからIXDIM個の
    データが入っていることを示す.
    IXSTR2, IXDIM2は同様に
    ヘッダー2に対応するものである.

    IXSTRC, IXENDC, IXDIMC は,
    ヘッダー1とヘッダー2から取得される
    データ領域の重なりの範囲を示す.
    格子番号IXSTRCからIXENDCまで
    IXDIMC個のデータは,
    ヘッダー1とヘッダー2に対応するデータに
    共通して存在することを示す.
    \end{setumei}

  \subsection{GUAXCK  [S]  格子名称のチェック }
    \entry{GUAXCK}

    % GUAXCK.FOR 9:  1990/09/25 (火) 10:10:51
    \begin{verbatim}
          SUBROUTINE GUAXCK
         I         ( HHEAD1, HHEAD2,
         O           ICHK            )
    *
          CHARACTER  HHEAD1 ( * )*(*)        ! ヘッダー1
          CHARACTER  HHEAD2 ( * )*(*)        ! ヘッダー1
          INTEGER    ICHK                    ! 格子名が合致していれば0
    \end{verbatim}

    \begin{setumei}
    ヘッダー1とヘッダー2の
    3つの軸の格子識別名称が対応しているかどうか調べる.
    全て合致している場合のみICHKとして0を返す.
    そうでない場合は,
    軸1が違っている場合は1を,
    軸2が違っている場合は2を,
    軸3が違っている場合は4を,
    2つ以上の軸が違っていればその和を返す.
    \end{setumei}

\section{格子情報に関するモジュール}

  格子情報を扱うモジュールが用意されている.

  \subsection{GUQAXV  [S]  格子情報の取得 }
    \entry{GUQAXV}

    % GUQAXV.FOR 9:  1990/09/25 (火) 10:11:25
    \begin{verbatim}
          SUBROUTINE GUQAXV
         I         ( HHEAD , ID    , HKIND ,
         O           HHEADA, AXIS  , IEOD  )
    *
          CHARACTER  HHEAD ( * )*(*)             ! ヘッダー
          INTEGER    ID                          ! 何次元目の軸か
          CHARACTER  HKIND      *(*)             ! LOC/WGT
          CHARACTER  HHEADA( * )*(*)             ! ヘッダー
          REAL       AXIS  ( * )                 ! 位置/重み
          INTEGER    IEOD                        ! データなしフラグ
    \end{verbatim}

    \begin{setumei}
    ヘッダーHHEADの
    ID次元めの軸に対応する格子情報を取得する.

    HKINDが'LOC'の場合は格子位置を,
    HKINDが'WGT'の場合は格子重みを取得する.

    取得される格子位置/重みデータの範囲は,
    ヘッダーHHEADのASTRx, AENDx
    (xはIDの内容)に従う.

    該当する軸の格子識別名称が文字'@'で始まっているときは,
    内部設定格子であると判断する.

    該当する格子情報が存在しない場合
    あるいは格子識別名称として空白を指定した場合には,
    IEOD$\neq$0を返す.
    正常終了の場合はIEOD=0を返す.

    内部で\モジ{GUQAXS}を呼んでいる.
    \end{setumei}

  \subsection{GUQAXD  [S]  格子のサイズの参照 }
    \entry{GUQAXD}

    % GUQAXD.FOR 9:  1990/09/25 (火) 10:11:16
    \begin{verbatim}
          SUBROUTINE GUQAXD
         I         ( HAXIS ,
         O           IADIM , OCYCL  )
    *
          CHARACTER  HAXIS      *(*)             ! 格子識別名称
          INTEGER    IADIM                       ! 格子のサイズ
          LOGICAL    OCYCL                       ! サイクリックか？
    \end{verbatim}

    \begin{setumei}
    格子識別名称HAXISの
    格子情報から,
    全格子数とサイクリックな座標軸であるかどうかを参照する.

    格子識別名称が文字'@'で始まっているときは,
    内部設定格子であると判断する.

    全格子数は格子情報ヘッダーの記述子AEND1の内容である.
    サイクリックな座標軸であるかどうかは,
    記述子DSETの内容の1文字目が'C'であるかどうかによって
    判断する.
    \end{setumei}

  \subsection{GUQAXS  [S]  格子情報ファイルの読み込み }
    \entry{GUQAXS}

    % GUQAXS.FOR 9:  1990/09/25 (火) 10:11:20
    \begin{verbatim}
          SUBROUTINE GUQAXS
         I         ( HAXIS , HKIND ,
         O           HHEAD , AXIS  , IEOD  )
    *
          CHARACTER  HAXIS *(*)                  ! 格子識別名称
          CHARACTER  HKIND *(*)                  ! LOC/WGT
          CHARACTER  HHEAD ( * )*(*)             ! ヘッダー
          REAL       AXIS  ( * )                 ! 位置/重み
          INTEGER    IEOD                        ! データなしフラグ
    \end{verbatim}

    \begin{setumei}
    格子識別名称HAXISの
    格子情報を取得する.

    HKINDが'LOC'の場合は格子位置を,
    HKINDが'WGT'の場合は格子重みを取得する.

    取得される格子位置/重みデータの範囲は,
    設定されている格子情報全体である.

    格子識別名称が文字'@'で始まっているときは
    内部設定格子であると判断し,
    \モジ{GUQIAX}を呼んでいる.

    該当する格子情報が存在しない場合
    あるいは格子識別名称として空白を指定した場合には,
    IEOD$\neq$0を返す.
    正常終了の場合はIEOD=0を返す.
    \end{setumei}

  \subsection{GUEAXN  [S]  軸編集記述を作成  }
    \entry{GUEAXN}

    % GUEAXN.FOR 9:  1990/09/25 (火) 10:11:11
    \begin{verbatim}
          SUBROUTINE GUEAXN
         I         ( HAXIS , HED   , HET   ,
         I           ISTR  , IEND  ,
         O           HEDIT , HETTL           )
    *
          CHARACTER  HAXIS         *(*)          ! 格子識別名称
          CHARACTER  HED           *(*)          ! 編集記述子接頭
          CHARACTER  HET           *(*)          ! 編集タイトル接尾
          INTEGER    ISTR                        ! 格子番号始め
          INTEGER    IEND                        ! 格子番号終り
          CHARACTER  HEDIT         *(*)          ! 編集記述子
          CHARACTER  HETTL         *(*)          ! 編集タイトル
    \end{verbatim}

    \begin{setumei}
    ある軸に対する操作の編集記述文字列を作成する.
    \モジ{GPXRDC}等で呼ばれる.

    ISTR$\neq$IENDの時は
    編集略記号としてHEDの内容とISTRとIENDの
    内容を連接したもの(ISTRとIENDの間に'-'が入る)が,
    編集タイトルとして
    `(HAXISの内容)=(格子番号ISTRの位置)-(格子番号IENDの位置)'
    (例えばGLON128=30.-60.)が作成される.

    ISTR=IENDの時は
    編集略記号としてHEDの内容とISTRの
    内容を連接したものが,
    編集タイトルとして
    `(HAXISの内容)=(格子番号ISTRの位置)'
    (例えばGLON128=30.)が作成される.

    該当する格子情報が存在しない場合,
    あるいは格子識別名称として空白を指定した場合には,
    編集タイトルは
    HAXISの内容にHETの内容を連接されたものになる.

    内部で\モジ{GUQAXV}が呼ばれ,
    格子位置情報が参照される.
    \end{setumei}

\section{内部設定格子情報に関するモジュール}

  内部設定格子情報を扱うモジュールが用意されている.

  \subsection{GUSIAX  [ES]  内部設定格子の設定 }
    \entry{GUSIAX}

    % GUQIAX.FOR 102:  1990/09/25 (火) 10:11:30
    \begin{verbatim}
          ENTRY      GUSIAX
         I         ( HHEAD , AXLOC , AXWGT ,
         I           INUM                   )
    *
          CHARACTER  HHEAD ( * )*(*)         ! ヘッダー
          REAL       AXLOC ( * )             ! 位置
          REAL       AXWGT ( * )             ! 重み
          INTEGER    INUM                    ! 内部設定格子番号
    \end{verbatim}

    \begin{setumei}
    内部設定格子情報をメモリー上に記憶させる.
    格子位置情報および格子重み情報を対で同時に登録する.
    ヘッダーの中の格子識別名称ITEMとしては,
    文字'@'で始まるものを指定すること.
    本来は格子情報のヘッダーは,
    格子位置情報と格子重み情報とで記述子DSETが違うはずであるが,
    入力するHHEADはどちらに対応するものでもよい.

    内部設定格子は複数登録できる.
    標準では10個までである.
    INUMで, いくつめの格子情報として登録するかを指定する.
    \end{setumei}

  \subsection{GUAIAX  [ES]  内部設定格子位置の付加設定 }
    \entry{GUAIAX}

    % GUQIAX.FOR 128:  1990/09/25 (火) 10:11:30
    \begin{verbatim}
          ENTRY      GUAIAX
         I         ( HAXIS , AXLOC1, AXWGT1,
         I           IZ                      )
    *
          CHARACTER  HAXIS      *(*)         ! 格子識別名称
          REAL       AXLOC1                  ! 位置
          REAL       AXWGT1                  ! 重み
          INTEGER    IZ                      ! 格子番号
    \end{verbatim}

    \begin{setumei}
    格子識別名称HAXISの
    内部設定格子情報の1つの格子の位置と重みを変更する.
    格子位置情報および格子重み情報を対で同時に指定する.
    HAXISとしては,
    文字'@'で始まるものを指定すること.
    これに先だって, 同じ格子識別名称で
    \モジ{GUSIAX}が呼ばれている必要がある.

    IZとして,
    現在設定されているサイズよりも大きな値を指定した場合には,
    サイズがIZに変更される.
    また, IZ=0を指定した場合には,
    IZに
    (現在設定されているサイズ+1)が指定されたものとして扱う.
    \end{setumei}

  \subsection{GUAIAH  [ES]  内部設定格子位置の付加設定(2) }
    \entry{GUAIAH}

    \begin{verbatim}
          SUBROUTINE GUAIAH
         I         ( HHEAD , ID    ,
         I           AXLOC1, AXWGT1,
         I           IZ                      )
    *
          CHARACTER  HHEAD ( * )*(*)         ! ヘッダー
          INTEGER    ID                      ! 何次元目の軸か
          REAL       AXLOC1                  ! 位置
          REAL       AXWGT1                  ! 重み
          INTEGER    IZ                      ! 格子番号
    \end{verbatim}

    \begin{setumei}
    ヘッダーHHEADの
    ID次元めの軸に対応する
    内部設定格子情報の1つの格子の位置と重みを変更する.
    格子位置情報および格子重み情報を対で同時に指定する.
    これに先だって, 同じ格子識別名称で
    \モジ{GUSIAX}が呼ばれている必要がある.

    そのほかは\モジ{GUAIAX}と同様.
    \end{setumei}


  \subsection{GUQIAX  [S]  内部設定格子の参照 }
    \entry{GUQIAX}

    % GUQIAX.FOR 9:  1990/09/25 (火) 10:11:30
    \begin{verbatim}
          SUBROUTINE GUQIAX
         I         ( HAXIS , HKIND ,
         O           HHEAD , AXIS  , IEOD   )
    *
          CHARACTER  HAXIS      *(*)         ! 格子識別名称
          CHARACTER  HKIND *(*)              ! LOC/WGT
          CHARACTER  HHEAD ( * )*(*)         ! ヘッダー
          REAL       AXIS  ( * )             ! 位置/重み
          INTEGER    IEOD                    ! データなしフラグ
    \end{verbatim}

    \begin{setumei}
    格子識別名称HAXISの
    内部設定格子情報を取得する.

    HKINDが'LOC'の場合は格子位置を,
    HKINDが'WGT'の場合は格子重みを取得する.

    取得される格子位置/重みデータの範囲は,
    設定されている格子情報全体である.

    該当する格子情報が存在しない場合
    あるいは格子識別名称として空白を指定した場合には,
    IEOD$\neq$0を返す.
    正常終了の場合はIEOD=0を返す.

    このモジュールは,
    格子識別名称HAXISが文字'@'で始まっているときに
    \モジ{GUQAXS}から呼ばれる.
    ユーザーがこのモジュールを直接呼ぶ必要はない.
    \end{setumei}

  \subsection{GUQIAH  [ES]  内部設定格子ヘッダーの参照 }
    \entry{GUQIAH}

    % GUQIAX.FOR 81:  1990/09/25 (火) 10:11:30
    \begin{verbatim}
          ENTRY      GUQIAH
         I         ( HAXIS ,
         O           HHEAD , IEOD   )
    *
          CHARACTER  HAXIS      *(*)         ! 格子識別名称
          CHARACTER  HHEAD ( * )*(*)         ! ヘッダー
          INTEGER    IEOD                    ! データなしフラグ
    \end{verbatim}

    \begin{setumei}
    格子識別名称HAXISの
    内部設定格子情報のヘッダー部分を取得する.

    該当する格子情報が存在しない場合
    あるいは格子識別名称として空白を指定した場合には,
    IEOD$\neq$0を返す.
    正常終了の場合はIEOD=0を返す.
    \end{setumei}


\section{配列処理のためのユーティリティーモジュール}

  \subsection{GUSZCK  [S]  配列の大きさのチェック }
    \entry{GUSZCK}

    % GUSZCK.FOR 9:  1990/09/25 (火) 10:11:53
    \begin{verbatim}
          SUBROUTINE GUSZCK
         I         ( HHEAD , ISIZEO  )
    *
          CHARACTER  HHEAD ( * )*(*)             ! ヘッダー
          INTEGER    ISIZEO                      ! 出力の大きさ
    \end{verbatim}

    \begin{setumei}
    配列の大きさをチェックする.
    HHEADの中の記述子SIZEに設定されているサイズが
    ISIZEOよりも小さい場合に
    エラーを表示して停止する.
    ただし,
    \モジラ{GTPGET}{GTPSET}の管理する
    \パラ{SUBCHK}{.FALSE.}が
    .TRUE.の場合にのみ有効である.
    \ref{サイズチェック機能}を参照のこと.
    \end{setumei}

  \subsection{GUSZCZ  [S]  大きさのチェック }
    \entry{GUSZCZ}

    % GUSZCK.FOR 28:  1990/09/25 (火) 10:11:53
    \begin{verbatim}
          SUBROUTINE GUSZCZ
         I         ( ISIZEA, ISIZEO )
    *
          INTEGER    ISIZEA                      ! 領域の大きさ
          INTEGER    ISIZEO                      ! 出力の大きさ
    \end{verbatim}

    \begin{setumei}
    配列の大きさをチェックする.
    ISIZEAがISIZEOよりも小さい場合に
    エラーを表示して停止する.
    \end{setumei}

  \subsection{GUSMIS  [S]  欠損値を指定 }
    \entry{GUSMIS}

    % GUSMIS.FOR 9:  1990/09/25 (火) 10:11:49
    \begin{verbatim}
          SUBROUTINE GUSMIS
         I         ( HHEAD  )
    *
          CHARACTER  HHEAD  ( * )*(*)        ! ヘッダー
    \end{verbatim}

    \begin{setumei}
    HHEADの記述子MISVに書かれている欠損値の値を
    GLPGET/GLPSETの管理する{\rm SUBFUNC}の
    パラメータRMISSに設定し,
    あわせてLMISSを.TRUE.に設定して
    欠損値処理を有効にする.
    \end{setumei}

\section{時刻に関するユーティリティーモジュール}

  \subsection{GUQTIM  [S]  時刻の参照 }
    \entry{GUQTIM}

    % GUQTIM.FOR 9:  1990/09/25 (火) 10:11:45
    \begin{verbatim}
          SUBROUTINE GUQTIM
         I         ( HHEAD ,
         O           RT    , HUTIM )
    *
          CHARACTER  HHEAD ( * )*(*)         ! ヘッダー
          REAL       RT                      ! 時刻
          CHARACTER  HUTIM      *(*)         ! 時刻単位
    \end{verbatim}

    \begin{setumei}
    HHEADの記述子TIMEに書かれている時刻を
    \モジラ{GTCGET}{GTCSET}の管理する
    \パラ{UTIM}{'DAY'}の単位の実数に直してRTにセットする.
    HUTIMにはパラメータUTIMの内容が入る.
    \end{setumei}

  \subsection{GUCTIM  [S]  時間単位の変換 HUNIT → HUNITY }
    \entry{GUCTIM}

    % GUCTIM.FOR 10:  1990/09/25 (火) 10:11:01
    \begin{verbatim}
          SUBROUTINE GUCTIM
         I         ( KT    , HUNIT  , HUNITY, IDELT  ,
         O           RT                                )
    *
          INTEGER    KT                ! 入力時刻：単位 HUNIT
          CHARACTER  HUNIT *(*)        ! 入力 KT の単位
          CHARACTER  HUNITY*(*)        ! 変換すべき単位
          INTEGER    IDELT             ! １ステップの秒数
          REAL       RT                ! 出力時刻：単位 HUNITY
    \end{verbatim}

    \begin{setumei}
    単位HUNITの整数で表された時刻KTを
    HUNITYで指定する単位の実数に直して
    RTにセットする.

    HUNITYの内容が'STEP'の場合には,
    KTを秒に変換したものを
    IDELTで割ったものを
    RTとする.
    \end{setumei}

  \subsection{GUQNOW  [S]  現在の日付・時刻 yyyymmddhhmmss }
    \entry{GUQNOW}

    % GUQNOW.FOR 9:  1990/09/25 (火) 10:11:37
    \begin{verbatim}
          SUBROUTINE GUQNOW
         O         ( HTIME )
    *
          CHARACTER  HTIME  *(*)             ! 時刻(yyyymmddhhmmss)
    \end{verbatim}

    \begin{setumei}
    現在の日付・時刻を(yyyymmddhhmmss)の形で参照する.
    \end{setumei}


  \subsection{GUSNOW  [S]  現在の時刻を作成時刻に設定 }
    \entry{GUSNOW}

    % GUSNOW.FOR 9:  1990/09/23 (日) 19:20:17
    \begin{verbatim}
          SUBROUTINE GUSNOW
         M         ( HHEAD ,
         I           HP     )
    *
          CHARACTER  HHEAD  ( * )*(*)        ! ヘッダー
          CHARACTER  HP          *(*)        ! 記述子名
    \end{verbatim}

    \begin{setumei}
    現在の日付,時刻を HHEADの記述子HPに設定する.
    \end{setumei}

  \subsection{GUTPAC  [S]  時刻をパック }
    \entry{GUTPAC}

    % GUTPAC.FOR 9:  1990/09/25 (火) 10:11:58
    \begin{verbatim}
          SUBROUTINE GUTPAC
         I         ( IYEAR , IMONTH, IDAY  ,
         I           IHOUR , IMIN  , ISEC  ,
         O           HDATE                  )
    *
          INTEGER    IYEAR                        ! 年
          INTEGER    IMONTH                       ! 月
          INTEGER    IDAY                         ! 日
          INTEGER    IHOUR                        ! 時
          INTEGER    IMIN                         ! 分
          INTEGER    ISEC                         ! 秒
          CHARACTER  HDATE *(*)                   ! 時刻(yyyymmddhhmmss)
    \end{verbatim}

    \begin{setumei}
    IYEAR〜ISECで指定される日付・時刻を
    (yyyymmddhhmmss)の形にして
    HDATEに入れる.
    \end{setumei}


  \subsection{GUTUPC  [ES]  時刻をアンパック }
    \entry{GUTUPC}

    % GUTPAC.FOR 39:  1990/09/25 (火) 10:11:58
    \begin{verbatim}
          ENTRY      GUTUPC
         O         ( IYEAR , IMONTH, IDAY  ,
         O           IHOUR , IMIN  , ISEC  ,
         I           HDATE                  )
    *
          INTEGER    IYEAR                        ! 年
          INTEGER    IMONTH                       ! 月
          INTEGER    IDAY                         ! 日
          INTEGER    IHOUR                        ! 時
          INTEGER    IMIN                         ! 分
          INTEGER    ISEC                         ! 秒
          CHARACTER  HDATE *(*)                   ! 時刻(yyyymmddhhmmss)
    \end{verbatim}

    \begin{setumei}
    (yyyymmddhhmmss)の形で表された日付・時刻
    HDATEを
    IYEAR〜ISECにばらして取り出す.
    \end{setumei}

\section{その他のユーティリティーモジュール}

  \subsection{GUCTXT  [S]  エスケープシーケンス正規化 }
    \entry{GUCTXT}

    % GUCTXT.FOR 9:  1990/09/25 (火) 10:11:06
    \begin{verbatim}
          SUBROUTINE GUCTXT
         I         ( HEXT  ,
         O           HNORM  )
    *
          CHARACTER HEXT  *(*)           ! エスケープ入り文字列
          CHARACTER HNORM *(*)           ! 正規化された文字列
    \end{verbatim}

    \begin{setumei}
    HEXTの中の'\verb!\!'+3桁の数字を
    文字CSGI(n)(nは3桁の数字が10進数として表す数)
    に置き換えたものをHNORMに入れる.
    \verb!\! 以外の文字はそのままコピーされる.
    \verb!\! 自身を表すときは '\verb!\! \verb!\!' のように
    2つ続けて入れておく.

    例えば, '\verb!\!170=\verb!\! \verb!\!100. \verb!\! 016' は,
    CSGI(170)//'=\verb!\! 100. '//CSGI(16)となる.

    \end{setumei}

\section{既存パッケージへの追加}

  \GTOOL3 の機能実現のために,
  MATH1レベルに相当する次のようなモジュールが
  追加されている.

  \subsection{GUVINT/GUVDIN/GUVOUT [S] ベクトルデータの重みつき平均}
    \entry{GUVINT}

    \begin{verbatim}
          SUBROUTINE GUVINT(WZ,WW,IX)
          ENTRY      GUVDIN(WZ,WW,IX,X,WT)
          ENTRY      GUVOUT(WZ,WW,IX)
    *
          REAL      WZ(IX)  ! 出力用配列
          REAL      X (IX)  ! 入力データ
          REAL      WW(IX)  ! 重みを足したものを入れておく配列
          REAL      WT      ! 重み
    \end{verbatim}

    \begin{setumei}
    1種類のベクトルデータを, 
    重みを指定して連続的に読み込んで荷重平均を求める. 
    GUVINTは初期化を行なう.
    GUVDINはデータを読み込む.
    GUVOUTは結果を求める.
    \end{setumei}

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