%表題   GRPH2 図形処理上位パッケージ
%
%履歴
%\Drireki{
%         90/04/02 酒井敏
%         91/09/05 林祥介
%         91/12/10 林祥介
%         91/03/07 酒井敏
%         92/04/22 林祥介   (4.1版)
%         94/03/28 酒井敏   (5.y版)
%         94/05/10 酒井敏   (5.z版)
%        }
%
%-----------------------------------------------------------------------
\section{サブルーチンの説明 (パラメータ管理)}

\subsection{US{\it p}GET/US{\it p}SET(US{\it p}STX)}
\begin{enumerate}
  \item 機能
      \begin{quote}
      実数, 整数, 論理内部変数を参照/設定する.
      ({\tt US{\it p}STX} は実行時オプションによる変更が可能.)
      \end{quote}

  \item 呼び出し方法
      \begin{quote}
      {\tt CALL \USPGET (CP, IPARA)} \\
      {\tt CALL \USPSET (CP, IPARA)} \\
      {\tt CALL \USPSTX (CP, IPARA)} 
      \end{quote}

  \item 引数
      \begin{quote}
      \begin{tabular}{llp{8cm}}
      {\tt CP   } & {\tt (C*(*)) } & パラメータ名 {\tt (i)} \\
      {\tt IPARA} & {\tt (I/R/L) } & パラメータ値 {\tt (i/o)}
      \end{tabular}
      \end{quote}

  \item パラメータリスト

   \begin{quote}

   \begin{tabular}{p{1.6cm}lp{10.5cm}}
      {\tt IRESET} & {\tt (I)} & {\tt USINIT}で自動的にパラメータを
                       リセットすることを指定する変数. 初期値は1.
                                                                \newline
         0: スケーリングパラメタなど ({\tt *} 印のついた変数)
            のリセットのみ行なう. \newline
         1: {\tt IRESET=0} に加えてタイトルのリセットをする.    \newline
         2: \USPSET のすべてのパラメタを
						リセットする.   \newline
            {\tt USINIT}は通常{\tt GRFRM}から呼ばれる.          \\
   \end{tabular}

   \begin{tabular}{p{1.6cm}lp{10.5cm}}
      {\tt XDTMIN*}, {\tt XDTMAX*} & {\tt (R)} & USSPNT で設定された
			X 座標の最大最小値. \\
      {\tt YDTMIN*}, {\tt YDTMAX*} & {\tt (R)} & USSPNT で設定された
			Y 座標の最大最小値. \\
   \end{tabular}

   \begin{tabular}{p{1.6cm}lp{10.5cm}}
      {\tt LXINV}  & {\tt (L)} & {\tt .TRUE.}の時,
                                 X軸の左右を逆にする.  \\
      {\tt LYINV}  & {\tt (L)} & {\tt .TRUE.}の時,
                                 Y軸の上下を逆にする.  \\
      {\tt LMATCH} & {\tt (L)} & {\tt .TRUE.}の時,
                                 X軸とY軸のラベル間隔及び
                                 文字間隔を同じにする. \\
      {\tt RMRGN } & {\tt (R)} & マージンの幅. 単位は文字幅. (9.524) \\
   \end{tabular}

   \begin{tabular}{p{1.6cm}lp{10.5cm}}
      {\tt XFAC*} & {\tt (R)} & X座標のファクター値 (999.) \\
      {\tt YFAC*} & {\tt (R)} & Y座標のファクター値 (999.) \\
      {\tt XOFF*} & {\tt (R)} & 一様X座標のオフセット値 (999.) \\
      {\tt YOFF*} & {\tt (R)} & 一様Y座標のオフセット値 (999.) \\
   \end{tabular}

   \begin{tabular}{p{1.6cm}lp{10.5cm}}
      {\tt DXT*} & {\tt (R)} & 一様X座標の目盛の間隔 (999.) \\
      {\tt DYT*} & {\tt (R)} & 一様Y座標の目盛の間隔 (999.) \\
      {\tt DXL*} & {\tt (R)} & 一様X座標のラベルの間隔 (999.) \\
      {\tt DYL*} & {\tt (R)} & 一様Y座標のラベルの間隔 (999.) \\
   \end{tabular}

   \begin{tabular}{p{1.6cm}lp{10.5cm}}
      {\tt TFACT } & {\tt (R)} & 一様座標の目盛間隔の目安 (2) \newline
                     これらの値に文字幅 ({\tt RSIZEL1}) を掛けた幅よりも
                     小さな間隔で, 切りのよい値をDUTとして設定する.\\
      {\tt MXDGTX} & {\tt (I)} & 一様X座標のラベルの最大桁数 (4)\\
      {\tt MXDGTY} & {\tt (I)} & 一様Y座標のラベルの最大桁数 (4)\newline
                     ラベルの桁数がこれらの値よりも大きくなるとき,
                     {\tt UOFF}, {\tt UFAC} を設定して
                     これらの桁数以内におさまるように試みる.\\
   \end{tabular}

   \begin{tabular}{p{1.6cm}lp{10.5cm}}
      {\tt NBLANK1} & {\tt (I)} & ラベルが座標軸と平行な場合の,
                      ラベル間の最小空白数. (一様座標)  (1) \\
      {\tt NBLANK2} & {\tt (I)} & ラベルが座標軸と直角な場合の,
                      ラベル間の最小空白数. (一様座標)  (2) \\
   \end{tabular}

   \begin{tabular}{p{1.6cm}lp{10.5cm}}
      {\tt NLBLX* } & {\tt (I)} & 対数X座標のラベル形式 (999) \\
      {\tt NLBLY* } & {\tt (I)} & 対数Y座標のラベル形式 (999) \\
      {\tt NTICKSX*}& {\tt (I)} & 対数X座標の一桁の間の目盛の数 (999) \\
      {\tt NTICKSY*}& {\tt (I)} & 対数Y座標の一桁の間の目盛の数 (999) \\
      {\tt ITYPEX*} & {\tt (I)} & 対数X座標のタイプ (999) \\
      {\tt ITYPEY*} & {\tt (I)} & 対数Y座標のタイプ (999) \\
   \end{tabular}

   \begin{tabular}{p{1.6cm}lp{10.5cm}}
      {\tt MXDGTSX } & {\tt (I)} & X軸のサブラベルが水平方向の場合,
                       {\tt MXSDGTX}で指定された文字数のラベルの範囲を
                       越えないようにサブラベルを描く. \\
      {\tt MXDGTSY } & {\tt (I)} & Y軸のサブラベルが垂直方向の場合,
                       {\tt MXDGTSY}で指定された文字数のラベルの範囲を
                       越えないようにサブラベルを描く. \\
      {\tt LPRTCT  } & {\tt (L)} & サブラベルを他方の軸のラベル領域に
                       まで描かないことを指定する.
                       これが {\tt .TRUE.}の時には{\tt MXDGTSX/MXDGTSY}
                       の指定は無視される. \\
   \end{tabular}

   \begin{tabular}{p{1.6cm}lp{10.5cm}}
      {\tt SOFFX}{\it sp}{\tt *} & {\tt (R)} & X軸のサブラベルのオフセット値.
                   {\it sp}={\tt 'TR', 'TL', 'BR', 'BL', 'UR', 'UL'}. \\
      {\tt SOFFY}{\it sp}{\tt *} & {\tt (R)} & X軸のサブラベルのオフセット値.
                   {\it sp}={\tt 'RT', 'RB', 'LT', 'LB', 'UT', 'UB'.} \\
      {\tt ROFFX}{\it s}{\tt *}  & {\tt (R)} & Y軸のサブラベルがX軸のラベル
                       領域に侵入したときのX軸のオフセット値.
                       {\it s}{\tt = 'T', 'B'}.  \\
      {\tt ROFFY}{\it s}{\tt *}  & {\tt (R)} & X軸のサブラベルがY軸のラベル
                       領域に侵入したときのY軸のオフセット値.
                       {\it s}{\tt = 'L', 'R'}.  \\
   \end{tabular}

   {\tt *} がついた変数は常にリセットされる.

   \end{quote}

  \item 備考
  \begin{enumerate}
    \item 内部変数を管理するための下請けルーチンとして
      以下のものがある.
      \begin{quote}
      \begin{tabular}{lp{8cm}}
        {\tt USPQNP(NCP)}       &
          内部変数の総数{\tt NCP}を求める. \\
        {\tt USPQID(CP,IDX)}    &
          内部変数{\tt CP}の位置{\tt IDX}を求める.  \\
        {\tt USPQCP(IDX,CP)}    &
          {\tt IDX}の位置にある内部変数の名前{\tt CP}を参照する.  \\
        {\tt USPQVL(IDX,IPARA)} &
          {\tt IDX}の位置にある内部変数の値{\tt IPARA}を参照する.  \\
        {\tt USPSVL(IDX,IPARA)} &
          {\tt IDX}の位置にある内部変数の値{\tt IPARA}を変更する.  \\
      \end{tabular}
      \end{quote}
    \item \USPGET は上に述べた{\tt USPQID}を呼んで
      内部変数の位置を求め, {\tt USPQVL}によって値を参照する;
      \USPSET は{\tt USPQID}を呼んで内部変数の位置を求め,
      {\tt USPSVL}によって値を設定する.
      したがって指定した内部変数名が見つからないとき,
      エラーメッセージは{\tt USPQID}が出力する.
    \item {\tt ITYPE}としては適切な型の定数または変数を指定すること.
  \end{enumerate}

\end{enumerate}

%-----------------------------------------------------------------------

\subsection{USCGET/USCSET(USCSTX)}
\begin{enumerate}
  \item 機能
      \begin{quote}
      文字パラメータを参照/設定する.
      ({\tt USCSTX} は実行時オプションによる変更可能.)
      \end{quote}

  \item 呼び出し方法
      \begin{quote}
      {\tt CALL USCGET(CP, CPARA)} \\
      {\tt CALL USCSET(CP, CPARA)} \\
      {\tt CALL USCSTX(CP, CPARA)}
      \end{quote}

  \item 引数
      \begin{quote}
      \begin{tabular}{llp{8cm}}
      {\tt CP   } & {\tt (C*(*))} & パラメータ名 {\tt (i)} \\
      {\tt CPARA} & {\tt (C*(*))} & パラメータ値 {\tt (i/o)}
      \end{tabular}
      \end{quote}

  \item パラメータリスト
      \begin{quote}
      \begin{tabular}{p{1.6cm}p{11cm}}
      {\tt CXTTL} & X軸のタイトル (32文字以内) \\
      {\tt CYTTL} & Y軸のタイトル (32文字以内) \\
      \end{tabular}

      \begin{tabular}{p{1.6cm}p{11cm}}
      {\tt CXSIDE} & X軸を書く位置. \newline
                     {\tt 'T'(Top), 'B'(Bottom), 'U'(User)} のうち
                     2文字まで指定できる.
                     2つの位置のうち最初に指定した位置に
                     サブラベルとタイトルが書かれる. (注1)\\
      {\tt CYSIDE} & Yを描く位置. \newline
                     {\tt 'R'(Right), 'L'(Left), 'U'(User)} のうち
                     2文字まで指定できる.
                     2つの位置のうち最初に指定した位置に
                     サブラベルとタイトルが書かれる. (注1)\\
      \end{tabular}

      \begin{tabular}{p{1.6cm}p{11cm}}
      {\tt CXSPOS } & X軸のサブラベルを書く位置 'R' または 'L' \\
      {\tt CYSPOS } & Y軸のサブラベルを書く位置 'T' または 'B' \\
      {\tt CXUNIT } & X軸のサブラベルに書く単位 (32文字以内) \\
      {\tt CYUNIT } & Y軸のサブラベルに書く単位 (32文字以内) \\
      {\tt CXFMT  } & X軸のラベルのフォーマット (注2)\\
      {\tt CYFMT  } & Y軸のラベルのフォーマット (注2)\\
      {\tt CBLKT  } & サブラベルに書く括弧. 初期値は'()'.
                      ブランクを指定すると括弧は書かない. \\
      \end{tabular}


      (注1) 内部変数 {\tt CXSIDE}, {\tt CYSIDE} で指定される最初の位置の
            {\tt LABEL}{\it zs}が{\tt .FALSE.}の時には,
            サブラベル, タイトルともに描かない.

      (注2) これらのフォーマットを陽に指定した場合, 
	    ラベルの間隔などにこの情報は反映されないので,
	    {\tt DXL}, {\tt DYL} も適切に指定しないと,
	    ラベルが重なる場合がある.

      \end{quote}

  \item 備考
  \begin{enumerate}
    \item 内部変数を管理するための下請けルーチンとして
      以下のものがある.
      \begin{quote}
      \begin{tabular}{lp{8cm}}
        {\tt USCQNP(NCP)}       &
          内部変数の総数{\tt NCP}を求める. \\
        {\tt USCQID(CP,IDX)}    &
          内部変数{\tt CP}の位置{\tt IDX}を求める.  \\
        {\tt USCQCP(IDX,CP)}    &
          {\tt IDX}の位置にある内部変数の名前{\tt CP}を参照する.  \\
        {\tt USCQVL(IDX,IPARA)} &
          {\tt IDX}の位置にある内部変数の値{\tt IPARA}を参照する.  \\
        {\tt USCSVL(IDX,IPARA)} &
          {\tt IDX}の位置にある内部変数の値{\tt IPARA}を変更する.  \\
      \end{tabular}
      \end{quote}
    \item {\tt USCGET} は上に述べた{\tt USCQID}を呼んで
      内部変数の位置を求め, {\tt USCQVL}によって値を参照する;
      {\tt USCSET} は{\tt USCQID}を呼んで内部変数の位置を求め,
      {\tt USCSVL}によって値を設定する.
      したがって指定した内部変数名が見つからないとき,
      エラーメッセージは{\tt USCQID}が出力する.
    \item {\tt ITYPE}としては適切な型の定数または変数を指定すること.
  \end{enumerate}

\end{enumerate}

%-----------------------------------------------------------------------

\subsection{USINIT}
\begin{enumerate}
  \item 機能
      \begin{quote}
      サブラベルに関するパラメータ{\tt (SOFFX, SOFFY, ROFFX, ROFFY)}
      を初期値に戻す.
      さらに \USPGETSET の管理する内部変数 {\tt IRESET}の値に応じて,
      その他の内部変数を初期化する.
      \end{quote}

  \item 呼び出し方法
      \begin{quote}
      {\tt CALL USINIT}
      \end{quote}

  \item 引数
      \begin{quote}
        なし.
      \end{quote}

  \item 備考
      \begin{quote}
        \begin{enumerate}
        \item
        通常このルーチンは{\tt GRFRM} {\tt GRFIG}から呼ばれるので,
        ユーザーが直接呼ぶ必要はない.
        \end{enumerate}
      \end{quote}
\end{enumerate}

