%表題   gtool3 利用の手引(ggtool)
%
%履歴   90/09/24 沼口  敦
%       95/05/31 竹広真一 for dcl-5.0
%
\chapter{描画モジュール群}

  地球流体電脳ライブラリを用いた,
  描画に関するモジュールが用意されている.

\section{基本描画モジュール}

  描画のためには,
  各描画モジュールを
  次のような順番で呼ばなくてはならない.

  \begin{quote}
  \begin{verbatim}
  GGOPEN
  GGLAY1, GGLAY2, GGLAY3
  GGAXES, GGAXIS
  GGCNTR, GGTONE, GGVECT, GGCURV, GGMARK
  GGCLSE
  \end{verbatim}
  \end{quote}

  何枚も図を描く場合には,
  {\tt GGOPEN}と{\tt GGCLSE}は最初と最後に1回づつ呼ぶだけでよい.
  {\tt GGLAY1} etc. において改ページが行なわれる.
  {\tt GGCNTR}などで描画した後も設定を記憶しているので,
  例えばコンターとベクトルを重ねて表示することは,
  {\tt GGCNTR}の直後に{\tt GGVECT}を呼ぶことで実現できる.
  折れ線を複数本描く場合も同様に{\tt GGCURV}を続けて呼べばよい.

  1枚の図にコンターと折れ線を同居させるような場合等,
  レイアウトを変更したい場合には,
  {\tt GGLAY1}を書き直したものを作成して
  {\tt GGLAY1}の代わりに用いればよい.

  \subsection{GGOPEN  [S]  グラフィック開始 }
    \entry{GGOPEN}

    % GGOPEN.FOR 9:  1990/09/23 (日) 19:15:06
    \begin{verbatim}
          SUBROUTINE GGOPEN
         I         ( IWS   )
    *
          INTEGER    IWS                     ! ワークステーションNo.
    \end{verbatim}

    \begin{setumei}
    描画の初期化を行なう.
    全ての他の描画モジュール呼び出しに先だって
    1回だけ呼ぶ必要がある.
    IWSについては, {\rm SGPACK}のマニュアルを参照のこと.
    \end{setumei}

  \subsection{GGCLSE  [S]  グラフィック終了 }
    \entry{GGCLSE}

    % GGOPEN.FOR 27:  1990/09/23 (日) 19:15:06
    \begin{verbatim}
          SUBROUTINE GGCLSE
    \end{verbatim}

    \begin{setumei}
    描画の最終処理を行なう.
    全ての他の描画モジュール呼び出しが終った後に
    1回だけ呼ぶ必要がある.
    \end{setumei}

  \subsection{GGLAY1  [S]  レイアウト, 題名表示 }
    \entry{GGLAY1}

    % GGLAY1.FOR 9:  1990/09/23 (日) 19:14:34
    \begin{verbatim}
          SUBROUTINE GGLAY1
         I         ( HHEAD )
    *
          CHARACTER  HHEAD ( * )*(*)         ! ヘッダー
    \end{verbatim}

    \begin{setumei}
    枠のレイアウトを行ない,
    ヘッダーから必要な情報を取ってきて書き出す.

    まず\モジラ{GGPGET}{GGPSET}の管理するパラメータ
    VXMIN, VXMAX, VYMIN, VYMAXに従って
    ビューポートを設定する.

    次にビューポートの上に,
    上からタイトルTITL1,TITL2とデータセット名DEST,
    単位UNITと時刻TIME
    (\モジラ{GTPGET}{GTPSET}の管理する
    \パラ{UITM}{'DAY'}の単位に直したもの),
    識別名称ITEMと編集略記号のEDITxの並びと
    ファイル番号FNUMとデータ番号DNUMを連ねたものを記す.
    文字の高さは
    \モジラ{GGPGET}{GGPSET}の管理する
    \パラ{STITL}{0.02}および
    \パラ{SEDIT}{0.013}に従う.

    さらに, ビューポートの右に
    上から順に編集タイトルETITLx,
    データ時刻DATE,
    横軸の格子識別名称AITM1,
    横軸の格子範囲ASTR1, AEND1,
    縦軸の格子識別名称AITM2,
    縦軸の格子範囲ASTR2, AEND2,
    レンジ最小値DMIN,
    レンジ最大値DMAX,
    間隔(小)DIVS,
    間隔(大)DIVL,
    データ変更日付MDATE,
    データ変更者MSIGNの順に記す.
    文字の高さは
    \モジラ{GGPGET}{GGPSET}の管理する
    \パラ{SDESC}{0.01}に従う.

    他のレイアウト・題名表示サブルーチンとして
    {\tt GGLAY2},{\tt GGLAY3} が用意されている. 
    サブルーチンの呼び方は {\tt GGLAY1} と同じである. 
    \end{setumei}

  \subsection{GGAXES  [S]  軸のセット X-Y }
    \entry{GGAXES}

    % GGAXES.FOR 9:  1990/09/23 (日) 19:13:14
    \begin{verbatim}
          SUBROUTINE GGAXES
         I         ( HHEAD )
    *
          CHARACTER  HHEAD ( * )*(*)         ! ヘッダー
    \end{verbatim}

    \begin{setumei}
    コンター(GGCNTR), トーン(GGTONE),
    ベクトル(GGVECT)を描くための
    座標を設定し, 座標軸を描く.
    これに先だって\モジ{GGLAY1}
    が呼ばれている必要がある.

    まず格子位置ファイルを読み込み,
    {\rm USPACK}を利用して
    ウインドウを設定し, 座標軸を描く.
    軸の範囲はヘッダーの記述子ASTR1, ASTR2に準拠し,
    さらにヘッダーの記述子DMIN, DMAX, DIVS, DIVLを参考にする.
    これらに欠損値以外が設定されている場合には,
    DIVSごとに目盛を打ち,
    DIVLごとにラベルを付ける.
    しかも軸の全体を用いる場合には,
    DMINからDMAXまでのウィンドウを設定するようにする.
    それ以外のときは格子点の位置を用いて,
    {\rm USPACK}によって適当に決める.

    軸に付けるラベルの文字の高さ,
    および軸に付けるタイトルの文字の高さは
    \モジラ{GGPGET}{GGPSET}の管理する
    \パラ{SAXSL}{0.015}および\パラ{SAXST}{0.015}に従う.

    軸の向き, および通常の軸か対数軸かは
    記述子STYP(\ref{スケーリングタイプ}参照)に従う
    \end{setumei}


  \subsection{GGAXIS  [S]  軸のセット X or Y 軸のみ }
    \entry{GGAXIS}

    % GGAXIS.FOR 9:  1990/09/23 (日) 19:13:28
    \begin{verbatim}
          SUBROUTINE GGAXIS
         I         ( HHEAD , HPOS   )
    *
          CHARACTER  HHEAD ( * )*(*)         ! ヘッダー
          CHARACTER  HPOS *(*)               ! セットする軸 ('X' or 'Y')
    \end{verbatim}

    \begin{setumei}
    折れ線(GGCURV), マーカー(GGMARK)を描くための
    座標を設定し, 座標軸を描く.
    これに先だって\モジ{GGLAY1}
    が呼ばれている必要がある.

    HPOS='X'の時は横軸のみ,
    HPOS='Y'の時は縦軸のみ設定する.
    もう一つの軸の座標設定は,
    \モジ{GGCURV}, \モジ{GGMARK}の中で行なわれる.

    そのほかは\モジ{GGAXES}と同様である.
    \end{setumei}

  \subsection{GGAXRR  [ES]  X or Y 軸のリセット}
    \entry{GGAXRR}

    \begin{verbatim}
          ENTRY      GGAXRR
         I           ( HPOS )
          CHARACTER  HPOS *(*)               !" セットする軸 ('X' or 'Y')
    \end{verbatim}

  \subsection{GGCNTR  [S]  コンター描画 }
    \entry{GGCNTR}

    % GGCNTR.FOR 9:  1990/09/23 (日) 19:14:05
    \begin{verbatim}
          SUBROUTINE GGCNTR
         I         ( HHEAD, GDATA )
    *
          CHARACTER  HHEAD ( * )*(*)         ! ヘッダー
          REAL       GDATA ( * )             ! データ
    \end{verbatim}

    \begin{setumei}
    {\rm UPACK}のUDCNTRを用いてコンターを描画する.
    これに先だって\モジ{GGAXES}
    が呼ばれている必要がある.

    コンターレベルを決める際は,
    ヘッダーの記述子DMIN, DMAX, DIVS, DIVLを参考にする.
    これらに欠損値以外が設定されている場合には,
    DMINからDMAXまで,
    DIVSごとにコンターを引き,
    DIVLごとにラベルを付ける.
    それ以外のときは
    UDCNTRの内部で適当に決める.
    ただしこの場合,
    コンターに何本おきにラベルを付けるかの指定
    ICYCLEは
    \モジラ{GGPGET}{GGPSET}の管理する
    \パラ{ICYCLE}{4}に従う.

    DIVSごとにコンターを引いた場合に
    コンターの数が
    \モジラ{GGPGET}{GGPSET}の管理する
    \パラ{NCONMAX}{50}本以上になる場合には,
    \パラ{CONRFCT}{0.5}を参照してコンターレベルを設定し直す.
    CONRFCT=0.の時は大きな値のコンターを省き,
    CONRFCT=1.の時は小さな値のコンターを省く
    CONRFCT=0.5の時は大きな値と小さな値を均等に省く.
    ただし, 指定したDMINが欠損値でなく, DMAXが欠損値の場合は
    CONRFCT=0.の場合と同じ扱い,
    ただし, 指定したDMINが欠損値で, DMAXが欠損値でない場合は
    CONRFCT=1.の場合と同じ扱いとなる.

    コンターに付けるラベルの文字の高さ,
    および図の下部に入れるコンター間隔の注記の文字の高さは
    \モジラ{GGPGET}{GGPSET}の管理する
    \パラ{SCONL}{0.01}および
    \パラ{SREMK}{0.008}に従う.

    UDPGET/UDPSETの管理する
    {\rm UDPACK}のパラメータは,
    ICYCLE, RSIZEL, RSIZETを除いて有効であり,
    GGCNTRを呼ぶ前にUDPSETで指定できる.
    \end{setumei}

  \subsection{GGMAPS [S] 地図描画}
    \entry{GGMAPS}

    \begin{verbatim}
          SUBROUTINE GGMAPS
         I           ( MFILES )
          CHARACTER  MFILES * (NFILN)        !" 地図情報ファイル名
    \end{verbatim}

    \begin{setumei}
    電脳ライブラリ {\rm UMPACK} を用いて地図情報を出力する. 
    これに先だって, {\tt GGAXES} により
    しかるべく地図座標変換が設定されている必要がある. 

    ファイル名 {\ MFILES} には ',' を区切り子として
    複数の地図情報ファイルを指定できる. 
    出力可能な地図ファイルについては電脳ライブラリの
    マニュアルを参照のこと. 
    \end{setumei}

  \subsection{GGTONE  [S]  トーン描画 }
    \entry{GGTONE}

    % GGTONE.FOR 9:  1990/09/23 (日) 19:15:53
    \begin{verbatim}
          SUBROUTINE GGTONE
         I         ( HHEAD, GDATA,
         I           TONL , ITON , NTON )
    *
          CHARACTER  HHEAD ( * )*(*)         ! ヘッダー
          REAL       GDATA ( * )             ! データ
          REAL       TONL  ( NTON+1 )        ! トーン境界値
          INTEGER    ITON  ( NTON )          ! トーン番号
    *     INTEGER    NTON                    ! トーンの数
    \end{verbatim}

    \begin{setumei}
    {\rm UEPACK}のUETONEを用いてハーフトーンのぬりわけを行なう.
    これに先だって\モジ{GGAXES}
    が呼ばれている必要がある.

    ITON(I)は,
    値がTONL(I)とTONL(I+1)の間である領域に
    ぬる濃淡パターンの番号を示す.
    境界のデータレベルは小さい順(TONL(I)<TONL(I+1))
    に指定しなければならない.
    また, TONL(1)に欠損値を入れておくと,
    TONL(2)以下のデータの領域を全てITON(1)のパターンでぬる.
    同様にTONL(NTON+1)に欠損値を入れておくと,
    TONL(NTON)以上のデータの領域を全てITON(NTON)のパターンでぬる.

    \モジラ{GGPGET}{GGPSET}の管理する
    \パラ{LTONS}{.TRUE.}が.TRUE.の場合には,
    パラメータTXSLOC, TXYLOC の位置に,
    パラメータTXSWDH, TXYWDH の幅でトーンのスケールを表示する.
    スケールにつく文字の大きさは
    \パラ{SREMK}{0.008}に従う.
    \end{setumei}

  \subsection{GGCTON [S]  トーン段彩 }
    \entry{GGCTON}

    \begin{verbatim}
          SUBROUTINE GGCTON
         I         ( HHEAD , GDATA  )
    *
          CHARACTER  HHEAD ( * )*(*)         !" ヘッダー
          REAL       GDATA ( * )             !" データ
    \end{verbatim}
    \begin{setumei}
      カラーで 2 次元等値線図を色塗りする. 
      内部で {\tt GGSTON} を呼んでトーン設定を行い, 
      {\tt GGTONE} を呼んで塗り分ける. 
    \end{setumei}

  \subsection{GGSTON  [S] トーン段彩設定 }
    \entry{GGSTON}

    \begin{verbatim}
          SUBROUTINE GGSTON
         I         ( HHEAD , GDATA  )
    *
          CHARACTER  HHEAD ( * )*(*)         !" ヘッダー
          REAL       GDATA ( * )             !" データ
    \end{verbatim}

  \subsection{GGTONS [S] トーンスケール }
    \begin{verbatim}
          SUBROUTINE GGTONS
         I         ( HHEAD )
    *
          CHARACTER  HHEAD ( * )*(*)         !" ヘッダー
    \end{verbatim}

  \subsection{GGVECT  [S]  ベクトル描画 }
    \entry{GGVECT}

    % GGVECT.FOR 9:  1990/09/23 (日) 19:16:07
    \begin{verbatim}
          SUBROUTINE GGVECT
         I         ( HHEADU, GDATAU,
         I           HHEADV, GDATAV )
    *
          CHARACTER  HHEADU ( * )*(*)        ! ヘッダー(u成分)
          CHARACTER  HHEADV ( * )*(*)        ! ヘッダー(v成分)
          REAL       GDATAU ( * )            ! データ(u成分)
          REAL       GDATAV ( * )            ! データ(v成分)
    \end{verbatim}

    \begin{setumei}
    {\rm UPACK}のUGVECTを用いてベクトル図を描画する.
    これに先だって\モジ{GGAXES}
    が呼ばれている必要がある.

    ベクトルの大きさのスケーリングは,
    ヘッダーのDMIN, DMAXと,
    \モジラ{GGPGET}{GGPSET}の管理する
    \パラ{VECFCT}{1.0}を参照して決められる.
    ヘッダーのDMIN, DMAXのうち絶対値の大きな方が
    図上での格子点間隔のVECFCT倍に当るように設定される.
    \モジラ{GGPGET}{GGPSET}の管理する
    \パラ{LEQRAT}{.FALSE.}が
    .TRUE.の場合は,
    {\rm X}方向と{\rm Y}方向のスケーリングファクターを同じにする.

    DMIN, DMAXが欠損値の場合は,
    UGVECTの内部で適当に決める.

    \モジラ{GGPGET}{GGPSET}の管理する
    \パラ{VXINT}{1}, \パラ{VYINT}{1}が1以外のときには,
    それぞれベクトルを描く格子点を
    {\rm X}方向にVXINT格子おき,
    {\rm Y}方向にVYINT格子おきとして間引いて描く.

    \モジラ{GGPGET}{GGPSET}の管理する
    \パラ{LUNIT}{.TRUE.}が
    .TRUE.の場合にはユニットベクトルを描く.
    その位置は
    \モジラ{GGPGET}{GGPSET}の管理する
    \パラ{VXULOC}{0.12}および
    \パラ{VYULOC}{0.12}で指定する.
    図の下部に入れるユニットベクトルの単位の注記の文字の高さは
    \モジラ{GGPGET}{GGPSET}の管理する
    \パラ{SREMK}{0.008}に従う.

    UGPGET/UGPSETの管理する
    {\rm UGPACK}のパラメータは,
    LNRMAL, XFACT1, XFACT2, LUNITを除いて有効であり,
    GGVECTを呼ぶ前にUGPSETで指定できる.
    \end{setumei}

  \subsection{GGSCAT  [S]  散布図描画}
    \entry{GGSCAT}

    \begin{verbatim}
          SUBROUTINE GGSCAT
         I         ( HHEADX, GDATAX,
         I           HHEADY, GDATAY, HPOS   )
    *
          CHARACTER  HHEADX( * )*(*)         !" ヘッダー
          REAL       GDATAX( * )             !" データ
          CHARACTER  HHEADY( * )*(*)         !" ヘッダー
          REAL       GDATAY( * )             !" データ
          CHARACTER  HPOS       *(*)         !" データ軸 ('X' or 'Y')
    \end{verbatim}

  \subsection{GGCURV  [S]  折れ線描画 }
    \entry{GGCURV}

    % GGCURV.FOR 9:  1990/09/23 (日) 19:14:19
    \begin{verbatim}
          SUBROUTINE GGCURV
         I         ( HHEAD , GDATA , HPOS  )
    *
          CHARACTER  HHEAD ( * )*(*)         ! ヘッダー
          REAL       GDATA ( * )             ! データ
          CHARACTER  HPOS       *(*)         ! データ軸 ('X' or 'Y')
    \end{verbatim}

    \begin{setumei}
    {\rm SGPACK}のポリラインプリミティブ
    SGPLUを用いて折れ線図を描画する.
    これに先だって\モジ{GGAXIS}
    が呼ばれている必要がある.

    HPOS='X'の時は横軸をデータ軸として,
    HPOS='Y'の時は縦軸をデータ軸としてプロットする.

    {\rm USPACK}を利用して
    データ軸のウインドウを設定し, 座標軸を描く.
    軸の範囲はヘッダーの記述子ASTR1, ASTR2に準拠し,
    さらに, ヘッダーの記述子DMIN, DMAX, DIVS, DIVLを参考にする.
    これらに欠損値以外が設定されている場合には,
    DMINからDMAXまでのウィンドウを設定し,
    DIVSごとに目盛を打ち,
    DIVLごとにラベルを付ける.
    それ以外のときは
    {\rm USPACK}によって適当に決める.

    軸に付けるラベルの文字の高さ,
    および軸に付けるタイトルの文字の高さは
    \モジラ{GGPGET}{GGPSET}の管理する
    \パラ{SAXSL}{0.015}および\パラ{SAXST}{0.015}に従う.

    軸の向き, および通常の軸か対数軸かは
    記述子STYP(\ref{スケーリングタイプ}参照)に従う

    折れ線の属性, すなわちラインタイプ(実線か点線かなど),
    ラインインデックス(太さあるいは色)は,
    それぞれ{\rm SGPACK}のモジュールSGSPLT, SGSPLI で,
    GGCURVを呼ぶ前に設定する.

    複数の折れ線を1枚の図に描く場合には
    連続してGGCURVを呼べばよい.
    2本目以降はウインドウは変化しない.
    全ての折れ線が図に入るようにウィンドウを
    スケーリングするためには,
    あらかじめ全てのデータに対して\モジ{GGRANG}を呼んでおく必要がある.
    \end{setumei}

  \subsection{GGMARK  [S]  マーク描画 }
    \entry{GGMARK}

    % GGMARK.FOR 9:  1990/09/23 (日) 19:15:39
    \begin{verbatim}
          SUBROUTINE GGMARK
         I         ( HHEAD , GDATA , HPOS  )
    *
          CHARACTER  HHEAD ( * )*(*)         ! ヘッダー
          REAL       GDATA ( * )             ! データ
          CHARACTER  HPOS       *(*)         ! データ軸 ('X' or 'Y')
    \end{verbatim}

    \begin{setumei}
    {\rm SGPACK}のポリマーカープリミティブ
    SGPMUを用いてマーカー図を描画する.
    これに先だって\モジ{GGAXIS}
    が呼ばれている必要がある.

    HPOS='X'の時は横軸をデータ軸として,
    HPOS='Y'の時は縦軸をデータ軸としてプロットする.

    {\rm USPACK}を利用して
    データ軸のウインドウを設定し, 座標軸を描く.
    軸の範囲はヘッダーの記述子ASTR1, ASTR2に準拠し,
    さらに, ヘッダーの記述子DMIN, DMAX, DIVS, DIVLを参考にする.
    これらに欠損値以外が設定されている場合には,
    DIVSごとに目盛を打ち,
    DIVLごとにラベルを付ける.
    それ以外のときは
    {\rm USPACK}によって適当に決める.

    軸に付けるラベルの文字の高さ,
    および軸に付けるタイトルの文字の高さは
    \モジラ{GGPGET}{GGPSET}の管理する
    \パラ{SAXSL}{0.015}および\パラ{SAXST}{0.015}に従う.

    軸の向き, および通常の軸か対数軸かは
    記述子STYP(\ref{スケーリングタイプ}参照)に従う

    マーカーの属性, すなわちマーカータイプ(マークの種類),
    マーカーインデックス(太さあるいは色),
    マーカーの大きさは,
    それぞれ{\rm SGPACK}のモジュールSGSPMT, SGSPMI, SGSPMSで,
    GGMARKを呼ぶ前に設定する.

    複数のデータのマーカーを1枚の図に描く場合には
    連続してGGMARKを呼べばよい.
    2本目以降はウインドウは変化しない.
    全てのマーカーが図に入るようにウィンドウを
    スケーリングするためには,
    あらかじめ全てのデータに対して\モジ{GGRANG}を呼んでおく必要がある.
    \end{setumei}

  \subsection{ GGLINT [S]  線種タイトル表示 }
    \entry{GGLINT}

    \begin{verbatim}
          SUBROUTINE GGLINT
         I         ( HHEAD , HTYPE )
    *
          CHARACTER  HHEAD ( * )*(*)         !" ヘッダー
          CHARACTER  HTYPE      *(*)         !" 種類(CURV/MARK)
    \end{verbatim}

  \subsection{GGRANG  [ES]  軸の座標範囲の設定}
    \entry{GGRANG}

    % GGAXSZ.FOR 160:  1990/09/23 (日) 19:13:41
    \begin{verbatim}
          ENTRY      GGRANG
         I         ( HHEAD , GDATA , HPOS  )
    *
          CHARACTER  HHEAD ( * )*(*)         ! ヘッダー
          REAL       GDATA ( * )             ! データ
          CHARACTER  HPOS *(*)               ! セットする軸 ('X' or 'Y')
    \end{verbatim}

    \begin{setumei}
    折れ線あるいはマーカー図を
    1つの枠に複数重ねて描く場合に,
    全ての折れ線(またはマーカー)が図の中に入るように
    あらかじめデータ軸のスケーリングの範囲
    (データの最大値,最小値)を設定するのに用いる.
    \モジ{GGLAY1}を呼んだ後, かつ
    \モジ{GGCURV}あるいは\モジ{GGMARK}を呼ぶ前に呼ぶこと.
    前の呼び出しの結果の最大値,最小値を含めて
    最大,最小を求めて値を設定するので,
    何度も続けて呼べば一連のデータの中の
    最大値, 最小値が記憶される.
    \モジ{GGAXRS}(GGLAY1の中で呼ばれる)
    でこの設定はキャンセルされる.

    例えば 2 本の折れ線を描くには次のようにする.

    \begin{verbatim}
          CALL GGLAY1 ( HHEAD1 )
          CALL GGAXIS ( HHEAD1, 'X' )
          CALL GGRANG ( HHEAD1, GDATA1, 'Y' )
          CALL GGRANG ( HHEAD1, GDATA2, 'Y' )
          CALL SGSPLI ( 1 )                     ! ラインインデックス 1
          CALL GGCURV ( HHEAD1, GDATA1, 'Y' )
          CALL SGSPLI ( 2 )                     ! ラインインデックス 2
          CALL GGCURV ( HHEAD2, GDATA2, 'Y' )
    \end{verbatim}
    \end{setumei}

\section{描画パラメーター管理モジュール}

  次のような描画に関する内部パラメータを管理している.
  \vspace{3mm}

  \begin{tt}
  \begin{tabular}{|l|l|l|l|l|} \hline
  パラメーター名 & 種類 & 既定値 &  関係モジュール & 説明 \\ \hline
  レイアウト & &      &        & \\
  VRATIO  & R & 0.70  & GGLAY1 & 全体の縦横比    \\
  VXMIN   & R & 0.20  & GGLAY1 & ビューポート Xmin \\
  VXMAX   & R & 0.80  & GGLAY1 & ビューポート Xmax \\
  VYMIN   & R & 0.20  & GGLAY1 & ビューポート Ymin \\
  VYMAX   & R & 0.50  & GGLAY1 & ビューポート Xmax \\
  STITL   & R & 0.02  & GGLAY1 & タイトルの文字高 \\
  SEDIT   & R & 0.013 & GGLAY1 & 編集略記述の文字高 \\
  SDESC   & R & 0.01  & GGLAY1 & そのほかの記述の文字高 \\
  SAXSL   & R & 0.015 & GGAXES等(*)  & 軸ラベルの文字高 \\
  SAXST   & R & 0.015 & GGAXES等(*)  & 軸タイトル文字高 \\
  SREMK   & R & 0.008 & GGCNTR等(**) & 下部注記の文字高 \\
  等値線  &   &       &        & \\
  SCONL   & R & 0.01  & GGCNTR & コンターラベルの文字高 \\
  ICYCLE  & I & 4     & GGCNTR & コンターラベルをつける間隔 \\
  NCONMAX & I & 50    & GGCNTR & コンターの最大本数 \\
  CONRFCT & R & 0.5   & GGCNTR & コンターが多すぎる場合の
                                 省略用ファクター \\ \hline
  ベクトル場& &       &        & \\
  VXINT   & I & 1     & GGVECT & ベクトルの間引き間隔(X方向) \\
  VYINT   & I & 1     & GGVECT & ベクトルの間引き間隔(Y方向) \\
  VECFCT  & R & 1.0   & GGVECT & ベクトルのスケーリングのファクター \\
  LEQRAT  & L &.FALSE.& GGVECT & ベクトルのスケーリングを
                                 縦横同じにするか否か \\
  LUNIT   & L &.TRUE. & GGVECT & ユニットベクトルを描くか否か \\
  VXULOC  & R & 0.10  & GGVECT & ユニットベクトルの位置(X) \\
  VYULOC  & R & 0.20  & GGVECT & ユニットベクトルの位置(Y) \\ \hline
  トーン  &   &      &        & \\
  LTONS   & L &.TRUE. & GGTONE &トーンスケール描画スイッチ\\
  TXSLOC  & R & 0.05  & GGTONE & トーンスケールの位置(X) \\
  TYSLOC  & R & 0.1   & GGTONE & トーンスケールの位置(Y) \\
  TXSWDH  & R & 0.25  & GGTONE & トーンスケールの幅(X) \\
  TYSWDH  & R & 0.05  & GGTONE & トーンスケールの幅(Y) \\ 
  TLNUM   & I & 4     & GGTONS & トーンラベルの数\\
  LLINT   & L &.TRUE. & GGCURV等(***) &線種コメント\\
  LTVX1   & R & 0.22  & GGLINT & 〃 位置：ｘ(1)\\
  LTVX2   & R & 0.55  & GGLINT & 〃 位置：ｘ(2)\\
  LTWDH   & R & 0.08  & GGLINT & 〃 幅\\
  INNER   & I & -1    & GGAXSZ &目盛位置\\
  CONTSET & I & 0     & GGCNTR &コンターレベルセット\\
  TONESET & I & 0     & GGTONE等 &トーンレベルセット\\
  NTONE   & I & 50    & GGTONE等 &トーンレベル数\\
  TONEPAT & I & 11999 & GGSTON &トーンレベル開始\\
  TONEINC & I & 1000  & GGSTON &トーンレベル間隔\\
  地図投影 &  &      &         & \\
  MAPPRJ  & I & 0     & GGAXES &投影法\\
  MAPLON  & R & 180  &  GGAXES &投影中心経度\\
  MAPLAT  & R & 0.0  &  GGAXES &投影中心緯度\\
  MAPROT  & R & 0.0  &  GGAXES &投影回転角度\\
  MAPFAC  & R & 1.0  &  GGAXES &投影拡大率 \\ \hline
  \end{tabular}
  \end{tt}

  {\tt (*) : GGAXES, GGAXIS, GGCURV, GGMARK} \hspace{10mm}
  {\tt (**): GGCNTR, GGVECT, GGTONE}
  {\tt (***): GGCURV, GGMARK, GGLAY3}
  \vspace{3mm}

  数字/論理パラメータに関しては
  \モジラ{GGPGET}{GGPSET}で,
  文字パラメータに関しては
  \モジラ{GGCGET}{GGCSET}で,
  それぞれ参照/設定できる.

  \subsection{GGPGET  [S]  描画パラメータ（数）を参照 }
    \entry{GGPGET}

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

    \begin{setumei}
    パラメーターHPの内容をIPARAに入れる.
    IPARAの実引数としては, 適当な型の変数を用いること
    (\ref{モジュールの使用法}参照).
    \end{setumei}

  \subsection{GGPSET  [ES]  描画パラメータ（数）を設定 }
    \entry{GGPSET}

    % GGPGET.FOR 64:  1990/09/23 (日) 19:15:18
    \begin{verbatim}
          ENTRY GGPSET
         I         ( HP, IPARA )
    *
          CHARACTER HP   *(*)                ! パラメーターの名前
    *    (INTEGER)  IPARA                    ! パラメーターの内容：数字
    \end{verbatim}

    \begin{setumei}
    IPARAをパラメーターHPに入れる.
    IPARAの実引数としては, 適当な型の変数/定数を用いること
    (\ref{モジュールの使用法}参照).
    \end{setumei}

  \subsection{GGCGET  [ES]  描画パラメータ（文字）を参照 }
    \entry{GGCGET}

    % GGPGET.FOR 82:  1990/09/23 (日) 19:15:18
    \begin{verbatim}
          ENTRY GGCGET
         I         ( HP,
         O           HPARA )
    *
          CHARACTER HP   *(*)                ! パラメーターの名前
          CHARACTER HPARA*(*)                ! パラメーターの内容：文字
    \end{verbatim}

    \begin{setumei}
    パラメーターHPの内容をHPARAに入れる.
    \end{setumei}

  \subsection{GGCSET  [ES]  描画パラメーター（文字）を設定 }
    \entry{GGCSET}

    % GGPGET.FOR 101:  1990/09/23 (日) 19:15:18
    \begin{verbatim}
          ENTRY GGCSET
         I         ( HP, HPARA )
    *
          CHARACTER HP   *(*)                ! パラメーターの名前
          CHARACTER HPARA*(*)                ! パラメーターの内容：文字
    \end{verbatim}

    \begin{setumei}
    HPARAをパラメーターHPに入れる.
    \end{setumei}

\section{描画下請けモジュール}

  以下のモジュールは,
  基本描画モジュールから呼ばれるもので
  通常ユーザーが直接呼ぶ必要はない.

  \subsection{GGPDSC  [S]  ヘッダーの内容(実数)を文字化して描く }
    \entry{GGPDSC}

    % GGpdsc.for 9:  1990/09/25 (火) 09:36:12
    \begin{verbatim}
          SUBROUTINE GGPDSC
         I         ( HHEAD, HP   , VX   , VY    )
    *
          CHARACTER  HHEAD ( * )*(*)             ! ヘッダー
          CHARACTER  HP         *(*)             ! 記述子の名称
          REAL       VX                          ! X座標(NDC)
          REAL       VY                          ! Y座標(NDC)
    \end{verbatim}

    \begin{setumei}
    位置(VX,VY)に, ヘッダーの実数の記述子HPの内容を
    文字化して描く.
    文字化の形式は{\rm UTIL1}のモジュールCHVALの
    'D'フォーマットに従う.
    \end{setumei}

  \subsection{GGCDSC  [ES]  ヘッダーの内容(文字)を描く }
    \entry{GGCDSC}

    % GGpdsc.for 30:  1990/09/25 (火) 09:36:12
    \begin{verbatim}
          ENTRY      GGCDSC
         I         ( HHEAD, HP   , VX   , VY    )
    *
          CHARACTER  HHEAD ( * )*(*)             ! ヘッダー
          CHARACTER  HP         *(*)             ! 記述子の名称
          REAL       VX                          ! X座標(NDC)
          REAL       VY                          ! Y座標(NDC)
    \end{verbatim}

    \begin{setumei}
    位置(VX,VY)に, ヘッダーの文字の記述子HPの内容を描く.
    \end{setumei}

  \subsection{GGAXSZ  [S]  1つの軸を描き座標設定 }
    \entry{GGAXSZ}

    % GGAXSZ.FOR 9:  1990/09/23 (日) 19:13:41
    \begin{verbatim}
          SUBROUTINE GGAXSZ
         I         ( HHEAD , AXISZ , HPOS   )
    *
          CHARACTER  HHEAD ( * )*(*)         ! ヘッダー
          REAL       AXISZ ( * )             ! 格子位置
          CHARACTER  HPOS *(*)               ! セットする軸 ('X' or 'Y')
    \end{verbatim}

    \begin{setumei}
    座標を設定し, 座標軸を描く.
    これに先だって\モジ{GGLAY1}
    が呼ばれている必要がある.

    HPOS='X'の時は横軸のみ,
    HPOS='Y'の時は縦軸のみ設定する.

    {\rm USPACK}を利用して
    ウインドウを設定し, 座標軸を描く.
    軸の範囲はヘッダーの記述子ASTR1, ASTR2に準拠し,
    さらに, ヘッダーの記述子DMIN, DMAX, DIVS, DIVLを参考にする.
    これらに欠損値以外が設定されている場合には,
    DMINからDMAXまでのウィンドウを設定し,
    DIVSごとに目盛を打ち,
    DIVLごとにラベルを付ける.
    それ以外のときは
    {\rm USPACK}によって適当に決める.

    軸に付けるラベルの文字の高さ,
    および軸に付けるタイトルの文字の高さは
    \モジラ{GGPGET}{GGPSET}の管理する
    \パラ{SAXSL}{0.015}および\パラ{SAXST}{0.015}に従う.

    軸の向き, および通常の軸か対数軸かは
    記述子STYP(\ref{スケーリングタイプ}参照)に従う
    \end{setumei}

  \subsection{GGAXRS  [ES]  軸描画のリセット}
    \entry{GGAXRS}

    % GGAXSZ.FOR 194:  1990/09/23 (日) 19:13:41
    \begin{verbatim}
          ENTRY      GGAXRS
    \end{verbatim}

    \begin{setumei}
    軸描画\モジ{GGAXSZ}の内部パラメータをリセットする.
    \モジ{GGLAY1}で呼ばれているのでユーザーが通常使用することはないが,
    \モジ{GGLAY1}に相当するモジュールをユーザーが作成する場合は,
    ウィンンドウを設定し直す度に入れること.
    \end{setumei}

  \subsection{GGAXLZ [S]   軸ラベルの描画フラグ }
    \begin{verbatim}
          SUBROUTINE GGAXLZ ( HPOS )
    *
          CHARACTER  HPOS   * 1
    \end{verbatim}

  \subsection{GGAXIX [S]  軸のセット X or Y 軸のみ : 拡張}
    \entry{GGAXIX}
    \begin{verbatim}
          SUBROUTINE GGAXIX
         I         ( HHEAD , HPOS  ,
         I           DMIN  , DMAX  , DIVS  , DIVL  )
    *
          CHARACTER  HHEAD ( * )*(*)         !" ヘッダー
          CHARACTER  HPOS *(*)               !" セットする軸 ('X' or 'Y')
    \end{verbatim}

  \subsection{PORAXZ [S]  外枠囲み(極座標)}
    \entry{PORAXZ}

    \begin{verbatim}
          SUBROUTINE PORAXZ                  !" 外枠囲み(極座標)
         I             ( HHEADX , AXISX ,
         I               HHEADY , AXISY   )
    *
          CHARACTER  HHEADX( NDC )*(NCC)     !" 動径軸ヘッダーファイル
          CHARACTER  HHEADY( NDC )*(NCC)     !" 方位角軸ヘッダーファイル
    *
          REAL       AXISX(*)                !" X 座標値
          REAL       AXISY(*)                !" Y 座標値
    \end{verbatim}


  \subsection{GGLTRS  [ES]   線種タイトル表示リセット}
    \entry{GGLTRS}

    \begin{verbatim}
          ENTRY      GGLTRS
    \end{verbatim}

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