%表題   GRPH1 基本グラフィックルーチンライブラリ
%
%履歴
%\Drireki{
%         90/03/22 塩谷雅人
%         91/09/05 林祥介
%         91/12/06 塩谷雅人
%         92/02/07 塩谷雅人
%         92/03/14 塩谷雅人
%         92/04/22 林祥介   (4.1版)
%         94/04/04 塩谷雅人
%         94/09/29 酒井敏   (5.z版)
%         95/04/21 塩谷雅人
%        }
%
\section{サブルーチンの説明 : コントロール}
\label{sgpack.cntl}

GRPH1において図形出力の初期化処理・終了処理・作画領域の設定・
内部変数の管理をおこなうサブルーチン群.
以下, 特に断らない限り, 単に「内部変数」というのは,
\SGPGETSET (\ref{sgpack.cntl.sgpget}節参照)の管理する内部変数の
ことを指す.

\subsection{SGOPN}
\label{sgpack.cntl.sgopn}
\begin{enumerate}
  \item 機能
  \begin{quote}
    図形出力装置をオープンする(初期化処理をおこなう).
  \end{quote}
  \item 呼び出し方法
  \begin{quote}
    {\tt CALL SGOPN(IWS)}
  \end{quote}
  \item パラメーターの説明
  \begin{quote}
    \begin{tabular}{llp{11cm}}
      {\tt IWS} & {\tt (I)} & ワークステーション番号を指定する. \\
      & & {\tt IWS}$>$0 のときは画面を横長に使い図形出力は正立, \\
      & & {\tt IWS}$<$0 のときは画面を縦長に使い図形出力は
          90度回転して表示される.
    \end{tabular}
  \end{quote}
  \item 備考
  \begin{enumerate}
    \item すべてのGRPH1サブルーチンコールに先だって1回だけ呼ぶこと.
    \item 実際の初期化作業は {\tt SGINIT} がおこなっている.
      {\tt SGINIT} は内部変数 {\tt 'IWS'} を見て各装置に対する
      初期化をおこなう.
      {\tt SGOPN} は 内部変数 {\tt 'IWS'} を設定して
      {\tt SGINIT} を実行している.
    \item このルーチンはレイアウトサブルーチンパッケージ(SLPACK)を
      初期化して, 第1レベルのワークステーションビューポートを設定する
      (第\ref{layout}章参照).
      したがって, SLPACKの各ルーチンは{\tt SGOPN}の後に呼ばなければならない.
    \item 指定できるワークステーション番号とワークステーション名のリストは
      {\tt SGPWSN}によってプリントできる(\ref{sgpack.cntl.sgpwsn}節参照).
      標準ライブラリにおいては,
      1:X (Xサーバー), 2:PS (ポストスクリプト), 3:Tek (テクトロ端末),
      4:Gtk (GtkによるXへの描画)
      となっている.
  \end{enumerate}
\end{enumerate}

\subsection{SGFRM}
\label{sgpack.cntl.sgfrm}
\begin{enumerate}
  \item 機能
  \begin{quote}
    新しい作画領域を設定する.
  \end{quote}
  \item 呼び出し方法
  \begin{quote}
    {\tt CALL SGFRM}
  \end{quote}
  \item パラメーターの説明
  \begin{quote}
    なし.
  \end{quote}
  \item 備考
  \begin{enumerate}
    \item 内部変数{\tt 'LFULL'}が{\tt .TRUE.}のとき,
      作画領域(SLPACKが設定するワークステーションビューポート)を
      いっぱいに使うようにワークステーション変換が設定される.
      このときR座標系におけるワークステーションウインドウは
      ワークステーションビューポートの縦・横比に応じて,
      短辺が変更される.
      {\tt 'LFULL'}が{\tt .FALSE.}のとき,
      ワークステーションウインドウは$[0,1] \times [0,1]$と設定され,
      ワークステーションビューポートもこの縦・横比を保ちながら
      作画領域に最大内接するように再設定される.
      このとき{\tt 'WORKSTATION VIEWPORT WAS MODIFIED.'}という
      メッセージが出力されるが, 実際の作画に影響はない.
      しかし, SLPACKを
      用いてマージン部分にタイトルを書こうとしているときは,
      タイトルの文字高が意図したようにならないことがあるので, あらかじめ
      {\tt SLRAT} (\ref{slpack.sub.slrat}節参照)などを用いて縦横比を
      1:1に設定しておくこと.
      {\tt 'LFULL'}の初期値は{\tt .FALSE.}
      (\ref{sgpack.cntl.sgpget}節参照)である.
    \item このルーチンによって正規化変換が初期化され,
      恒等変換を設定する.
      したがって正規化変換は
      {\tt SGFMR}を呼んだあと毎回再設定すること.
  \end{enumerate}
\end{enumerate}

\subsection{SGSCMN}
%\label{sgpack.cntl.sgscmn}
\begin{enumerate}
  \item 機能
  \begin{quote}
    カラーマップを変更する.
  \end{quote}
  \item 呼び出し方法
  \begin{quote}
    {\tt CALL SGSCMN(ICLRMAP)}
  \end{quote}
  \item パラメーターの説明
  \begin{quote}
    \begin{tabular}{llp{11cm}}
      {\tt ICLRMAP} & {\tt (I)} & カラーマップ番号を指定する.
    \end{tabular}
  \end{quote}
  \item 備考
  \begin{enumerate}
    \item  カラーマップの番号は {\tt \$BINDIR/dclcmap} で表示できる.
    \item  使用できるカラーマップの最大値は
      \begin{quote}
        {\tt CALL SGQCMN(NMAX)}
      \end{quote}
      によって参照できる.
    \item  {\tt SWCMLL}を呼び.{\tt SW\_ICLRMAP}を変更することと等価, コマンドライン引数で{\tt sw\_iclrmap}を指定することもできる.
  \end{enumerate}
\end{enumerate}

\subsection{SGCLS}
%\label{sgpack.cntl.sgcls}
\begin{enumerate}
  \item 機能
  \begin{quote}
    図形出力装置をクローズする(終了処理をおこなう).
  \end{quote}
  \item 呼び出し方法
  \begin{quote}
    {\tt CALL SGCLS}
  \end{quote}
  \item パラメーターの説明
  \begin{quote}
    なし.
  \end{quote}
  \item 備考
  \begin{enumerate}
    \item すべてのGRPH1サブルーチンコールのあとで1回だけ呼ぶこと.
  \end{enumerate}
\end{enumerate}

\subsection{SG{\it p}GET/SG{\it p}SET(SG{\it p}STX)}
\label{sgpack.cntl.sgpget}
\begin{enumerate}
  \item 機能
  \begin{quote}
    GRPH1で使用する内部変数を参照/変更する.
    ({\tt SG}{\it p}{\tt STX} は実行時オプションによる変更を許す. )
     {\it p} は {\tt R/I/L} で, それぞれ実数, 整数, 論理変数用.
  \end{quote}
  \item 呼び出し方法
  \begin{quote}
    {\tt CALL SG}{\it p}{\tt GET(CP,IPARA)} \\
    {\tt CALL SG}{\it p}{\tt SET(CP,IPARA)} \\
    {\tt CALL SG}{\it p}{\tt STX(CP,IPARA)}
  \end{quote}
  \item パラメーターの説明
  \begin{quote}
    \begin{tabular}{llp{11cm}}
      {\tt CP} & {\tt (C*8)} & 内部変数の名前.  \\
      {\tt IPARA} & {\tt (I,R,L)} & 内部変数の値.
    \end{tabular}

    \vspace{1em}
    以下に{\tt CP}として指定できる名前のリストを記す. \\

    \vspace{1em}
    {\bf [全般的な制御に関するパラメーター]}

    \vspace{1em}
    \begin{tabbing}
      123456789 \= 1234 \=                                         \kill
      {\tt 'IWS'} \> {\tt (I)} \>
        \parbox[t]{11cm}{オープンする装置番号(初期値は0).
        この番号は {\tt SGOPN} が設定する. GRPH1 の範囲では
        この値を実行時オプションによって変更することはできない
        (GRPH2 の GRPACK を用いれば変更可能である).
        \rule[-1ex]{0ex}{1ex}} \\
      {\tt 'LFULL'} \> {\tt (L)} \>
        \parbox[t]{11cm}{{\tt SGFRM}
        (\ref{sgpack.cntl.sgfrm}節参照)で設定する
        ワークステーションビューポートを作画可能な範囲いっぱいに
        とるかどうかを指定する.
        {\tt .TRUE.}のときいっぱいにとる;
        {\tt .FALSE.}のとき最大内接する正方形にとる
        (初期値は{\tt .FALSE.}). \rule[-1ex]{0ex}{1ex}} \\
      {\tt 'IBGCLI'} \> {\tt (I)} \>
        \parbox[t]{11cm}{背景色のカラー番号(初期値は999).
        \rule[-1ex]{0ex}{1ex}} \\
    \end{tabbing}

    \vspace{1em}
    {\bf [ポリラインプリミティブに関するパラメーター]}

    \vspace{1em}
    \begin{tabbing}
      123456789 \= 1234 \=                                         \kill
      {\tt 'NBITS'} \> {\tt (R)} \>
        \parbox[t]{11cm}{ポリラインプリミティブの描く折れ線の
        ラインタイプをビットパターンで設定するとき,
        下位何ビットを使うか指定する(初期値は16).
        \rule[-1ex]{0ex}{1ex}} \\
      {\tt 'BITLEN'} \> {\tt (R)} \>
        \parbox[t]{11cm}{ポリラインプリミティブの描く折れ線の
        ラインタイプをビットパターンで設定するとき,
        1ビットがVC上でどれだけの長さに相当するかを指定する
        (初期値は0.003). \rule[-1ex]{0ex}{1ex}} \\
      {\tt 'MOVE'} \> {\tt (I)} \>
        \parbox[t]{11cm}{SZPACKの下位ルーチンが破線等のパターンで
        線を引くときpen-up moveの後のパターンのサイクルについて指定する
        (初期値は1). \rule[-1ex]{0ex}{1ex}} \\
      \> \> \makebox[1cm][r]{ 1 :}
          \makebox[8.5cm][l]{pen-upの間も作図を続けたものと見なす. } \\
      \> \> \makebox[1cm][r]{ 0 :}
          \makebox[8.5cm][l]{最後にpen-downで移動した状態を保つ. } \\
      \> \> \makebox[1cm][r]{$-$1 :}
          \makebox[8.5cm][l]{pen-upで移動した後, 新しいサイクルを始める.
          \rule[-1ex]{0ex}{1ex}} \\
      {\tt 'LCHAR'} \> {\tt (L)} \>
        \parbox[t]{11cm}{ポリラインプリミティブで折れ線を描くとき,
        ラベルつき折れ線とするかどうかを指定する
        {\tt .TRUE.}のときはラベルつき折れ線とする;
        {\tt .FALSE.}のときはラベルなし折れ線とする
        (初期値は{\tt .FALSE.}).
        以下はこのラベルつき線分に関するパラメーターである.
        \rule[-1ex]{0ex}{1ex}} \\
      {\tt 'LROT'} \> {\tt (L)} \>
        \parbox[t]{11cm}
        {ラベルとして付ける文字列を一定の回転角で描くか,
        あるいは線分に沿って描くかを指定する.
        {\tt .TRUE.}のとき一定の回転角で描く;
        {\tt .FALSE.}のとき線分に沿って描く(初期値は{\tt .FALSE.}).
        \rule[-1ex]{0ex}{1ex}} \\
      {\tt 'IROT'} \> {\tt (I)} \>
        \parbox[t]{11cm}
        {ラベルとしてつける文字列を一定の回転角で描くとき
        ({\tt 'LROT'}が{\tt .TRUE.}のとき)の
        回転角を指定する(単位は度;初期値は0).
        \rule[-1ex]{0ex}{1ex}} \\
      {\tt 'FWC'} \> {\tt (R)} \>
        \parbox[t]{11cm}
        {文字列を描くための空白域の幅を
        全文字幅を単位としてどれだけとるかを指定する係数
        (初期値は1.25).
        \rule[-1ex]{0ex}{1ex}} \\
      {\tt 'CWL'} \> {\tt (R)} \>
        \parbox[t]{11cm}
        {1サイクルあたり, 線分部分の長さを文字高を単位として何文字分
        とるかを指定する係数
        (初期値は30.0).
        \rule[-1ex]{0ex}{1ex}} \\
      {\tt 'FFCT'} \> {\tt (R)} \>
        \parbox[t]{11cm}
        {ラベル付き折れ線を描くにあったて,
        線分部分を1単位としてどれだけ進んだところから
        描き始めるかを指定する(初期値は0.5).
        \rule[-1ex]{0ex}{1ex}} \\
      {\tt 'INDEXC'} \> {\tt (I)} \>
        \parbox[t]{11cm}
        {ラベルとして描く文字列のラインインデクスを指定する
        (初期値は0).
        値が0のとき, 線分部分を描くために現在設定されている
        ラインインデクスと同じ値をとる.
        \rule[-1ex]{0ex}{1ex}} \\
      {\tt 'LBUFF'} \> {\tt (L)} \>
        \parbox[t]{11cm}
        {折れ線の終りが文字列を描くべき空白部分であるとき
        そこを線分で結ぶためのバッファリングをするかどうかを指定する.
        {\tt .TRUE.}のときバッファリングをする;
        {\tt .FALSE.}のときバッファリングしない(初期値は{\tt .TRUE.}).
        \rule[-1ex]{0ex}{1ex}} \\
      {\tt 'NBUFF'} \> {\tt (I)} \>
        \parbox[t]{11cm}
        {バッファリングをするときその長さを指定する.
        (初期値は200).
        \rule[-1ex]{0ex}{1ex}} \\
      {\tt 'RBUFF'} \> {\tt (R)} \>
        \parbox[t]{11cm}
        {バッファリングした内容を書き出した後, ラベルつき折れ線の
        サイクルの位置を指定する. 0と1の間の値を指定すること.
        (初期値は0.99).
        \rule[-1ex]{0ex}{1ex}} \\
      {\tt 'LCURV'} \> {\tt (L)} \>
        \parbox[t]{11cm}
        {折れ線のなす角が大きなところなどではラベルを書かないことを
        指定する. 正確には, 文字を書くべきスペースが
        次のパラメータ{\tt 'RCURV'}の係数以下のとき
        ラベルを書かない.
        {\tt .TRUE.}のときラベルを書かない;
        {\tt .FALSE.}のときラベルを書く(初期値は{\tt .TRUE.}).
        \rule[-1ex]{0ex}{1ex}} \\
      {\tt 'RCURV'} \> {\tt (R)} \>
        \parbox[t]{11cm}
        {{\tt 'LCURV'}が{\tt .TRUE.}で,
        ラベルを書くべきスペースがこの係数以下のときラベルを書かない.
        (初期値は1.0).
        \rule[-1ex]{0ex}{1ex}} \\
    \end{tabbing}

    \vspace{1em}
    {\bf [ポリマーカープリミティブに関するパラメーター]}

    \vspace{1em}
    \begin{tabbing}
      123456789 \= 1234 \=                                         \kill
      {\tt 'PMFACT'} \> {\tt (R)} \>
        \parbox[t]{11cm}{ポリマーカープリミティブが描く
        マーカーの大きさを調整する係数(初期値は2.0).
        ポリマーカープリミティブはテキストプリミティブを用いてマーカーを描く.
        このとき, 描くマーカーは標準的な文字高に比べて小さい
        (フォントテーブル\ref{append.table.sgfont1},
        \ref{append.table.sgfont2}節参照).
        この内部変数はマーカーが標準的な文字高を持つようにするため
        使われる拡大係数である. \rule[-1ex]{0ex}{1ex}} \\
      {\tt 'NPMSKIP'} \> {\tt (I)} \>
        \parbox[t]{11cm}{ポリマーカープリミティブでマーカーを描くとき,
        何個に1個の割合で描くかを指定する
        (初期値は1;すべてマーカーを描く. {\tt SGPMZU}が
        バッファリングする最大個数50以下でなければならない).
        \rule[-1ex]{0ex}{1ex}}\\
    \end{tabbing}

    \vspace{1em}
    {\bf [テキストプリミティブに関するパラメーター]}

    \vspace{1em}
    \begin{tabbing}
      123456789 \= 1234 \=                                         \kill
      {\tt 'IFONT'} \> {\tt (I)} \>
        \parbox[t]{11cm}{フォント番号
        (初期値は1). \rule[-1ex]{0ex}{1ex}} \\
      {\tt 'LFPROP'} \> {\tt (I)} \>
        \parbox[t]{11cm}{文字はプロポーショナルで描くか
        (初期値は{\tt .TRUE.}プロポーショナルで書く). \rule[-1ex]{0ex}{1ex}} \\
      {\tt 'LCNTL'} \> {\tt (L)} \>
        \parbox[t]{11cm}{テキストプリミティブで文字を描くとき,
        制御文字({\tt 'ISUP'}, {\tt 'ISUB'}, {\tt 'IRST'}参照)
        を有効とするかどうかを指定する
        {\tt .TRUE.}のときは有効とする;
        {\tt .FALSE.}のときは有効としない(初期値は{\tt .FALSE.}).
        \rule[-1ex]{0ex}{1ex}} \\
      {\tt 'SMALL'} \> {\tt (R)} \>
        \parbox[t]{11cm}{上付および下付添え字の
        標準文字高に対する比率(初期値は0.7). \rule[-1ex]{0ex}{1ex}} \\
      {\tt 'SHIFT'} \> {\tt (R)} \>
        \parbox[t]{11cm}{上付および下付添え字の中心を
        標準文字の中心からどれだけはなすかを標準文字高に対する比率で指定する
        (初期値は0.3). \rule[-1ex]{0ex}{1ex}} \\
      {\tt 'ISUP'} \> {\tt (I)} \>
        \parbox[t]{11cm}{上付添え字のモードの始まりをしめす
        制御文字の文字番号.
        初期値は124;これは{\tt '|'}に対応する. \rule[-1ex]{0ex}{1ex}} \\
      {\tt 'ISUB'} \> {\tt (I)} \>
        \parbox[t]{11cm}{下付添え字のモードの始まりをしめす
        制御文字の文字番号.
        初期値は95;これは{\tt '\_'}に対応する. \rule[-1ex]{0ex}{1ex}} \\
      {\tt 'IRST'} \> {\tt (I)} \>
        \parbox[t]{11cm}{上付および下付添え字のモードの終わりをしめす
        制御文字の文字番号.
        初期値は34;これは{\tt '"'}に対応する. \rule[-1ex]{0ex}{1ex}} \\
      {\tt 'LMRKFNT'} \> {\tt (L)} \>
        \parbox[t]{11cm}{システムフォント使用時に，マーカーを専用の同梱フォント
         DCLMarker を使用して描画するかどうかを示す．
         {\tt .FALSE.}の場合，マーカーは従来のストロークフォントで描画する．
         (初期値は{\tt .TRUE.}) \rule[-1ex]{0ex}{1ex}} \\

    \end{tabbing}

    \vspace{1em}
    {\bf [トーンプリミティブに関するパラメーター]}

    \vspace{1em}
    \begin{tabbing}
      123456789 \= 1234 \=                                         \kill
      {\tt 'LSOFTF'} \> {\tt (L)} \>
        \parbox[t]{11cm}{トーンプリミティブで塗りつぶしをおこなうとき
        soft fillをおこなうかhard fillをおこなうかを指定する.
        {\tt .TRUE.}のときはsoft fillをおこなう;
        {\tt .FALSE.}のときはhard fillをおこなう
        (初期値は{\tt .FALSE.}).
        ただし, hard fillを指定してもその能力がない場合は
        soft fillとなる. \rule[-1ex]{0ex}{1ex}}\\
      {\tt 'LCL2TN'} \> {\tt (L)} \>
        \parbox[t]{11cm}{色を用いたべた塗りによる塗りわけを
        おこなうとき, 色番号をドットなどのパターン番号として
        読みかえるかどうかを指定する.
        {\tt .TRUE.}のときは読みかえる;
        {\tt .FALSE.}のときは読みかえない
        (初期値は{\tt .FALSE.}).
        ただし, 色を用いた塗りわけができないような装置では,
        {\tt .FALSE.} と設定されていてもパターン番号による
        読みかえをおこなおうとする.
        \rule[-1ex]{0ex}{1ex}}\\
      {\tt 'TNBLEN'} \> {\tt (R)} \>
        \parbox[t]{11cm}{トーンプリミティブで
        ドットパターンによるsoft fillをおこなう場合,
        フィルエリアサブプリミティブの下位ルーチンを用い点線の集合として
        表現する.
        このとき点線のラインタイプはビットパターンで設定されるが,
        その1ビットがRC上でどれだけの長さに相当するかを指定する
        (初期値は0.001). \rule[-1ex]{0ex}{1ex}}\\
      {\tt 'IRMODE'} \> {\tt (I)} \>
        \parbox[t]{11cm}{トーンプリミティブで指定された閉領域が
	クリッピング境界にかかる時に,
	境界線の向きを指定するパラメタ.
        0のとき反時計回り; 1のとき時計回り.
	\ref{gaiyou.tclip} 節参照のこと.
        (初期値は0). \rule[-1ex]{0ex}{1ex}}\\
    \end{tabbing}

    \vspace{1em}
    {\bf [アローサブプリミティブに関するパラメーター]}

    \vspace{1em}
    \begin{tabbing}
      123456789 \= 1234 \=                                         \kill
      {\tt 'LPROP'} \> {\tt (L)} \>
        \parbox[t]{11cm}
        {矢じり部分の線分を本体部分の線分の長さに比例させて
        描くかどうかを指定する.
        {\tt .TRUE.}なら比例させて描く;{\tt .FALSE.}なら
        内部変数{\tt 'CONST'}で指定してある一定値で,
        地図投影のときは内部変数{\tt 'CONSTM'}で指定してある
        一定値で描く
        (初期値は{\tt .TRUE.}).
        \rule[-1ex]{0ex}{1ex}} \\
      {\tt 'LUARW'} \> {\tt (L)} \>
        \parbox[t]{11cm}
        {地図投影のとき, 矢じり部分の線分も地図にへばりついたように
        描くかどうかを指定する.
        {\tt .TRUE.}なら地図上で描く;
        {\tt .FALSE.}ならVCで描く
        (初期値は{\tt .TRUE.}).
        \rule[-1ex]{0ex}{1ex}} \\
      {\tt 'AFACT'} \> {\tt (R)} \>
        \parbox[t]{11cm}
        {{\tt 'LPROP'}が{\tt .TRUE.}(比例させて描く)のときに
        用いる比例定数(初期値は0.33).
        \rule[-1ex]{0ex}{1ex}} \\
      {\tt 'CONST'} \> {\tt (R)} \>
        \parbox[t]{11cm}
        {{\tt 'LPROP'}が{\tt .FALSE.}(一定値で描く)のときに
        用いる一定値(単位はVC;初期値は0.01).
        \rule[-1ex]{0ex}{1ex}} \\
      {\tt 'CONSTM'} \> {\tt (R)} \>
        \parbox[t]{11cm}
        {{\tt 'LPROP'}が{\tt .FALSE.}(一定値で描く)で
        かつ地図投影のときに用いる一定値
        (単位は度;初期値は5.0).
        \rule[-1ex]{0ex}{1ex}} \\
      {\tt 'ANGLE'} \> {\tt (R)} \>
        \parbox[t]{11cm}
        {矢じり部分の線分と本体部分の線分のなす角
        (単位は度;初期値は20.0).
        \rule[-1ex]{0ex}{1ex}} \\
      {\tt 'LATONE'} \> {\tt (L)} \>
        \parbox[t]{11.1cm}
        {矢じり部分を定義する三角形の領域を塗りつぶすか
        どうかを指定する.
        {\tt .TRUE.}なら塗りつぶす;
        {\tt .FALSE.}なら塗りつぶさない
        (初期値は{\tt .FALSE.}).
        \rule[-1ex]{0ex}{1ex}} \\
      {\tt 'IATONE'} \> {\tt (I)} \>
        \parbox[t]{11cm}
        {{\tt 'LATONE'}が{\tt .TRUE.}
        (矢じり部分を定義する三角形の領域を塗りつぶす)のときの
        トーンパターン(初期値は999).
        3桁以下のとき, カラーインデクスは軸の部分について
        指定されているものを用いる.
        \rule[-1ex]{0ex}{1ex}} \\
    \end{tabbing}

    \vspace{1em}
    {\bf [変換関数に関するパラメタ]} -
    これらのパラメタの意味については, \ref{gaiyou.ntrf2}節,
    \ref{gaiyou.ptrf}節 を参照のこと.

    \vspace{1em}
    \begin{tabbing}
      {\tt 'VXMIN','VXMAX','VYMIN','VYMAX'} \= 12345 \=                   \kill
      {\tt 'ITR'} \> {\tt (I)} \>
        \parbox[t]{7cm}{変換関数番号
        (初期値は1). \rule[-1ex]{0ex}{1ex}} \\
      {\tt 'VXMIN','VXMAX','VYMIN','VYMAX'} \> {\tt (R)} \>
        \parbox[t]{7cm}{ビューポート
        (初期値は0.0, 1.0, 0.0, 1.0). \rule[-1ex]{0ex}{1ex}} \\
      {\tt 'UXMIN','UXMAX','UYMIN','UYMAX'} \> {\tt (R)} \>
        \parbox[t]{7cm}{ウインドウ
        (初期値は0.0, 1.0, 0.0, 1.0). \rule[-1ex]{0ex}{1ex}} \\
      {\tt 'SIMFAC','VXOFF','VYOFF'} \> {\tt (R)} \>
        \parbox[t]{7cm}{相似変換パラメタ
        (初期値は1.0, 0.0, 0.0). \rule[-1ex]{0ex}{1ex}} \\
      {\tt 'PLX','PLY','PLROT'} \> {\tt (R)} \>
        \parbox[t]{7cm}{地図座標回転パラメタ
        (初期値は0.0, 90.0, 0.0). \rule[-1ex]{0ex}{1ex}} \\
      {\tt 'STLAT1','STLAT2'} \> {\tt (R)} \>
        \parbox[t]{7cm}{標準緯度
        (初期値は0.0, 0.0). \rule[-1ex]{0ex}{1ex}} \\
      {\tt 'RSAT'} \> {\tt (R)} \>
        \parbox[t]{7cm}{衛星軌道半径
        (初期値は0.0). \rule[-1ex]{0ex}{1ex}} \\
      {\tt 'LDEG'} \> {\tt (L)} \>
        \parbox[t]{7cm}{単位系の指定. {\tt 'LDEG'}が{\tt .TRUE.}なら
        度を単位とする; {\tt .FALSE.}ならラジアンを単位とする
        (初期値は{\tt .TRUE.}). \rule[-1ex]{0ex}{1ex}} \\
      {\tt 'ITR3'} \> {\tt (I)} \>
        \parbox[t]{7cm}{変換関数番号
        (初期値は1). \rule[-1ex]{0ex}{1ex}} \\
      {\tt 'VXMIN3','VXMAX3','VYMIN3','VYMAX3'} \\
      {\tt 'VZMIN3','VZMAX3'} \> {\tt (R)} \>
        \parbox[t]{7cm}{3次元ビューポート
        (初期値は0., 1., 0., 1., 0., 1.). \rule[-1ex]{0ex}{1ex}} \\
      {\tt 'UXMIN3','UXMAX3','UYMIN3','UYMAX3'} \\
      {\tt 'UZMIN3','UZMAX3'} \> {\tt (R)} \>
        \parbox[t]{7cm}{3次元ウィンドウ
        (初期値は0., 1., 0., 1., 0., 1.). \rule[-1ex]{0ex}{1ex}} \\
      {\tt 'SIMFAC3'} \> {\tt (R)} \>
        \parbox[t]{7cm}{円筒座標と球座標のスケーリングファクター
        (初期値は1.). \rule[-1ex]{0ex}{1ex}} \\
      {\tt 'XORG3', 'YORG3', 'ZORG3'} \> {\tt (R)} \>
        \parbox[t]{7cm}{円筒座標と球座標の原点位置
        (初期値は0., 0., 0.). \rule[-1ex]{0ex}{1ex}} \\
      {\tt 'XEYE3','YEYE3','ZEYE3'} \> {\tt (R)} \>
        \parbox[t]{7cm}{視点
        (初期値は-0.8, -1.5, 1.5). \rule[-1ex]{0ex}{1ex}} \\
      {\tt 'XOBJ3','YOBJ3','ZOBJ3'} \> {\tt (R)} \>
        \parbox[t]{7cm}{焦点中心
        (初期値は0.5, 0.5, 0.0). \rule[-1ex]{0ex}{1ex}} \\
      {\tt 'ANGLE3'} \> {\tt (R)} \>
        \parbox[t]{7cm}{画角
        (初期値は30.0). \rule[-1ex]{0ex}{1ex}} \\
      {\tt 'TILT3'} \> {\tt (R)} \>
        \parbox[t]{7cm}{傾き
        (初期値は0.0). \rule[-1ex]{0ex}{1ex}} \\
      {\tt 'XOFF3','YOFF3'} \> {\tt (R)} \>
        \parbox[t]{7cm}{オフセット
        (初期値は0.0, 0.0). \rule[-1ex]{0ex}{1ex}} \\
      {\tt 'IXC3','IYC3','SEC3'} \> {\tt (I,R)} \>
        \parbox[t]{7cm}{2次元平面位置
        (初期値は1, 2, 0.0). \rule[-1ex]{0ex}{1ex}} \\
      {\tt 'L2TO3'} \> {\tt (L)} \>
        \parbox[t]{7cm}{２次元透視変換の指定.
	{\tt 'L2TO3'}が{\tt .TRUE.}なら2次元平面を3次元空間に割り付ける;
	{\tt .FALSE.}ならV座標とR座標を同一のものとして扱う.
        (初期値は{\tt .FALSE.}). \rule[-1ex]{0ex}{1ex}} \\
      {\tt 'CXMIN', 'CXMAX', 'CYMIN'}\\
      {\tt 'CYMAX'} \> {\tt (R)} \>
        \parbox[t]{7cm}{相似変換パラメタ.
        (初期値は{\tt 0.0, 1.0, 0.0, 1.0.}). \rule[-1ex]{0ex}{1ex}} \\
   \end{tabbing}

    \vspace{1em}
    {\bf [補間およびクリッピングに関するパラメタ]} -
    これらのパラメタの意味については, \ref{gaiyou.outp}節
    を参照のこと.

    \vspace{1em}
    \begin{tabbing}
      {\tt 'VXMIN','VXMAX','VYMIN','VYMAX'} \= 12345 \=                   \kill
      {\tt 'LLNINT','LGCINT'} \> {\tt (L)} \>
        \parbox[t]{7cm}{線形補間, 大円補間のフラグ
        (初期値は{\tt .FALSE.}, {\tt .TRUE.}). \rule[-1ex]{0ex}{1ex}} \\
      {\tt 'RDX','RDY'} \> {\tt (R)} \>
        \parbox[t]{7cm}{補間間隔
        (初期値は5.0, 5.0; 単位は度). \rule[-1ex]{0ex}{1ex}} \\
      {\tt 'LCLIP'} \> {\tt (L)} \>
        \parbox[t]{7cm}{ビューポートでのクリッピングのフラグ
        (初期値は{\tt .FALSE.}). \rule[-1ex]{0ex}{1ex}} \\
      {\tt 'TXMIN','TXMAX','TYMIN','TYMAX'} \> {\tt (R)} \>
        \parbox[t]{7cm}{T座標系でのクリッピング境界
        (初期値は-180.0, 180.0, -90.0, 90.0; 単位は度).
        \rule[-1ex]{0ex}{1ex}} \\
  \end{tabbing}

    \vspace{1em}
    {\bf [レイアウトに関するパラメーター]} - dcl-ver.4 まで
    {\tt SLPGET/SLPSET} が管理していたパラメーター.

    \vspace{1em}
    \begin{tabbing}
      123456789 \= 1234 \=                                         \kill
      {\tt 'INDEX'} \> {\tt (I)} \>
        \parbox[t]{11cm}{第1レベル目のマージンに描く文字列と
        コーナーマークのラインインデクス(初期値は1).
        \rule[-1ex]{0ex}{1ex}} \\
      {\tt 'LCORNER'} \> {\tt (L)} \>
        \parbox[t]{11cm}{コーナーマークを描くかどうかを指定する.
        {\tt .TRUE.}ならコーナーマークを描く;
        {\tt .FALSE.}なら描かない(初期値は{\tt .FALSE.}).
        \rule[-1ex]{0ex}{1ex}} \\
      {\tt 'CORNER'} \> {\tt (R)} \>
        \parbox[t]{11cm}{コーナーマークの長さ(初期値は0.01).
        単位は第1レベル目の長辺を1とする.
        \rule[-1ex]{0ex}{1ex}} \\
      {\tt 'LWIDE'} \> {\tt (L)} \>
        \parbox[t]{11cm}{文字列(タイトル)を描く第1レベル目の
        マージンの定義をする.
        {\tt .TRUE.}のときマージンの幅を第1レベル目のフレーム幅
        いっぱいにとる;
        {\tt .FALSE.}のとき横方向のマージンを取った残りの部分を
        マージンの幅とする(初期値は{\tt .FALSE.}).
        \rule[-1ex]{0ex}{1ex}} \\
      {\tt 'XPAD'} \> {\tt (R)} \>
        \parbox[t]{11cm}{第1レベル目のマージンに描く文字列の
        左右にとるすきまの和を文字高を単位として指定する(初期値は1.0).
        \rule[-1ex]{0ex}{1ex}} \\
      {\tt 'YPAD'} \> {\tt (R)} \>
        \parbox[t]{11cm}{第1レベル目のマージンに描く文字列の
        上下にとるすきまの和を文字高を単位として指定する(初期値は1.0).
        \rule[-1ex]{0ex}{1ex}} \\
    \end{tabbing}

  \end{quote}
  \item 備考
  \begin{enumerate}
          \item 内部変数を管理するための下請けルーチンとして
            以下のものがある.
            \begin{quote}
            \begin{tabular}{lp{8cm}}
              {\tt SGPQNP(NCP)}       &
                内部変数の総数{\tt NCP}を求める. \\
              {\tt SGPQID(CP,IDX)}    &
                内部変数{\tt CP}の位置{\tt IDX}を求める.  \\
              {\tt SGPQCP(IDX,CP)}    &
                {\tt IDX}の位置にある内部変数の名前{\tt CP}を参照する.  \\
              {\tt SGPQVL(IDX,IPARA)} &
                {\tt IDX}の位置にある内部変数の値{\tt IPARA}を参照する.  \\
              {\tt SGPSVL(IDX,IPARA)} &
                {\tt IDX}の位置にある内部変数の値{\tt IPARA}を変更する.  \\
           \end{tabular}
           \end{quote}
         \item \SGPGET は上に述べた{\tt SGPQID}を呼んで
            内部変数の位置を求め, {\tt SGPQVL}によって値を参照する;
            \SGPSET は{\tt SGPQID}を呼んで内部変数の位置を求め,
            {\tt SGPSVL}によって値を設定する.
            したがって指定した内部変数名が見つからないとき,
            エラーメッセージは{\tt SGPQID}が出力する.
    \item {\tt IPARA}としては適切な型の定数または変数を指定すること.
    \item このほかに,
          soft fillによって斜線を描こうとしたとき斜線の回転角に加える
          微小値を指定する{\tt 'RFAROT'}という内部変数や,
          レイアウトに関する{\tt 'NFRAME}, {\tt 'NPAGE'}, {\tt 'NLEVEL'},
          {\tt 'FACTOR'}などの内部変数があるが
          ユーザーは指定してはならない.
  \end{enumerate}
\end{enumerate}

\subsection{SGPWSN}
\label{sgpack.cntl.sgpwsn}
\begin{enumerate}
  \item 機能
  \begin{quote}
    利用可能なワークステーション名のリストを書き出す.
  \end{quote}
  \item 呼び出し方法
  \begin{quote}
    {\tt CALL SGPWSN}
  \end{quote}
  \item パラメーターの説明
  \begin{quote}
    なし
  \end{quote}
  \item 備考
  \begin{enumerate}
    \item リストを書き出す装置番号は \GLPGETSET の管理する
      内部変数{\tt 'IOUNIT'}が決める.
  \end{enumerate}
\end{enumerate}

\newpage
