%表題   GRPH2 図形処理上位パッケージ
%
%履歴
%\Drireki{
%         90/03/22 塩谷雅人
%         91/09/05 林祥介
%         91/12/10 林祥介
%         92/02/05 塩谷雅人
%         92/04/22 林祥介   (4.1版)
%         94/03/18 塩谷雅人
%        }
%
\section{サブルーチンのリスト}

  \begin{tabular}{lp{10cm}}
    {\tt ULXLOG(CSIDE,NLBL,NTICKS)} & 対数座標軸を描く. \\
    {\tt ULYLOG(CSIDE,NLBL,NTICKS)} &                   \\
    {\tt ULXSFM(CFMT)} & フォーマットを設定する. \\
    {\tt ULYSFM(CFMT)} &                         \\
    {\tt ULSXBL(BL,NBL)} & ラベルを描く位置を指定する. \\
    {\tt ULSYBL(BL,NBL)} &                             \\
    {\tt \ULPGET (CP,IPARA)} & 内部変数を参照する. \\
    {\tt \ULPSET (CP,IPARA)} & 内部変数を設定する. \\
    {\tt \ULPSTX (CP,IPARA)} & 内部変数を設定する.
                             (実行時オプションによる変更を許す).
  \end{tabular}

\section{サブルーチンの説明}
\label{ulpack.reful}

\subsection{ULXLOG/ULYLOG}
\label{ulpack.reful.ulxlog}
\begin{enumerate}
  \item 機能
  \begin{quote}
    対数座標軸を描く.
  \end{quote}
  \item 呼び出し方法
  \begin{quote}
    {\tt CALL ULXLOG(CSIDE,NLBL,NTICKS)}\\
    {\tt CALL ULYLOG(CSIDE,NLBL,NTICKS)}
  \end{quote}
  \item パラメーターの説明
  \begin{quote}
    \begin{tabular}{llp{10cm}}
      {\tt CSIDE}  & {\tt (C*1)} & 座標軸を描く場所を指定する
             (\ref{uxyzpack.struct.basho}節参照). \\
      {\tt NLBL}   & {\tt (I)}   & 1桁の範囲に描くラベルの数.
             1から4までの整数値を指定する. \\
       & & \hspace{1em} 1: 10$^n$のみにラベルを描く. \\
       & & \hspace{1em} 2: 10$^n$と2$\cdot$10$^n$にラベルを描く. \\
       & & \hspace{1em} 3: 10$^n$, 2$\cdot$10$^n$と5$\cdot$10$^n$に
             ラベルを描く. \\
       & & \hspace{1em} 4: ユーザーが指定した場所にラベルを描く. \\
      {\tt NTICKS} & {\tt (I)}   & 1桁の範囲に描く目盛の数.
             1$\leq${\tt NTICKS}$\leq$9の範囲で指定する.
             9より小さな値を指定した場合には,
             目盛間隔の狭いところから省かれる.
    \end{tabular}
  \end{quote}
  \item 備考
  \begin{enumerate}
    \item {\tt ULXLOG/}{\tt ULYLOG}はそれぞれ
      {\tt UXPAXS/}{\tt UYPAXS} ({\tt ISLCT=2})で軸を描いている;
      {\tt UXPTMK/}{\tt UYPTMK} ({\tt ISLCT=1})で10$^n$以外の小さめの
        目盛を描いている;
      {\tt UXPTMK/}{\tt UYPTMK} ({\tt ISLCT=2})で10$^n$の大きめの
        目盛を描いている;
      {\tt UXPLBL/}{\tt UYPLBL} ({\tt ISLCT=1})でラベルを描いている.
      したがって, これら座標軸の構成要素の属性は,
      \UZPGETSET によって参照/変更することができる.
      くわしくは第\ref{uxyzpack}章を参照のこと.
    \item このルーチンは小さめの目盛を打つ場所を内部で生成して
      {\tt UXPTMK/}{\tt UYPTMK}を呼んでいる.
      この作業用配列の制約から目盛を打つ最大数は
      200以下でなければならない.
    \item このルーチンはラベルを描く場所を内部で生成して
      {\tt UXPLBL/}{\tt UYPLBL}を呼んでいる.
      この作業用配列の制約から描くラベルの最大数は
      50以下でなければならない.
    \item {\tt NLBL}として4を指定する場合は,
      あらかじめ{\tt ULSXBL/ULSYBL}によって
      ラベルを描く位置が指定されてなければならない.
    \item ラベルのフォーマットは, \ULPGETSET が管理する内部変数
      {\tt 'IXTYPE'}, {\tt 'IYTYPE'}
      (それぞれX軸, Y軸のフォーマット)で指定する
      (初期値はそれぞれ1: すべてのラベルに指数部をつける).
  \end{enumerate}
\end{enumerate}

\subsection{ULXSFM/ULYSFM}
\label{ulpack.reful.ulxsfm}
\begin{enumerate}
  \item 機能
    \begin{quote}
      内部変数{\tt 'IXTYPE'/'IYTYPE'}が3または4のときに使用する
      フォーマットを設定する.
    \end{quote}
  \item 呼び出し方法
    \begin{quote}
      {\tt CALL ULXSFM(CFMT)}\\
      {\tt CALL ULYSFM(CFMT)}
    \end{quote}
  \item 引数の説明
    \begin{quote}
      \begin{tabular}{llp{10cm}}
        {\tt CFMT} & {\tt (C*(*))} & 文字書式仕様あるいは
          サブルーチン{\tt CHVAL} (「MISC1」のマニュアルFMTLIB参照)が
          解釈するオプション.
      \end{tabular}
    \end{quote}
  \item 備考
  \begin{enumerate}
    \item サブルーチン{\tt CHVAL}に渡すフォーマットは,
      {\tt ULXSFM/ULYSFM}についてはサブルーチン
      \begin{quote}
        {\tt ULXQFM(CFMT) / ULYQFM(CFMT)}
      \end{quote}
      で参照することができる.
      初期値は{\tt CHVAL}に固有のオプションである{\tt 'B'}
      (有効数字3ケタで文字化し, 小数点以下に続く後方の0は取り除く;
      さらに小数点が最下位ならそれも取り除く).
  \end{enumerate}
\end{enumerate}

\subsection{ULSXBL/ULSYBL}
\label{ulpack.reful.ulsxbl}
\begin{enumerate}
  \item 機能
    \begin{quote}
      ラベルを描く位置を指定する.
    \end{quote}
  \item 呼び出し方法
    \begin{quote}
      {\tt CALL ULSXBL(BL,NBL)}\\
      {\tt CALL ULSYBL(BL,NBL)}
    \end{quote}
  \item パラメーターの説明
    \begin{quote}
      \begin{tabular}{llp{10cm}}
        {\tt BL}   & {\tt (R)} & 1桁の範囲に描くラベルの位置.
           各要素の値は1以上で10より小さくなければならない.
           また{\tt BL(1)}は1でなければならない. \\
        {\tt NBL}  & {\tt (I)} & 配列{\tt BL}の長さ. \\
      \end{tabular}
    \end{quote}
  \item 備考
  \begin{enumerate}
    \item {\tt ULXLOG/ULYLOG}において{\tt NLBL}として4を指定する場合は,
      あらかじめ本ルーチンによって
      ラベルを描く位置を指定しなければならない.
    \item {\tt BL}の長さは9以下でなければならない.
    \item ラベルを描く位置は, X/Y軸についてサブルーチン
      \begin{quote}
        {\tt ULQXBL(BL,NBL) / ULQYBL(BL,NBL)}
      \end{quote}
      で参照することができる.
    \item 内部的に, ラベルを描く位置を得るルーチンとして
      {\tt ULXLBL/ULYLBL}がある.
  \end{enumerate}
\end{enumerate}

\subsection{UL{\it p}GET/UL{\it p}SET(UL{\it p}STX)}
\label{ulpack.reful.ulpget}
\begin{enumerate}
  \item 機能
  \begin{quote}
    ULPACKサブルーチンパッケージで使用する内部変数を参照/設定する.
    ( \ULPSTX は実行時オプションによる変更を許す. )
  \end{quote}
  \item 呼び出し方法
  \begin{quote}
    {\tt CALL \ULPGET (CP,IPARA)}\\
    {\tt CALL \ULPSET (CP,IPARA)}\\
    {\tt CALL \ULPSTX (CP,IPARA)}
  \end{quote}
  \item パラメーターの説明
  \begin{quote}
    \begin{tabular}{llp{10cm}}
      {\tt CP} & {\tt (C*8)} & 内部変数の名前. \\
      {\tt IPARA} & {\tt (I)} & 内部変数の値.
    \end{tabular}

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

    \vspace{1em}
    \begin{tabbing}
      123456789 \= 1234 \=                                         \kill
      {\tt 'IXCHR'} \> {\tt (I)} \>
        \parbox[t]{10cm}
        {X軸に関する$2\cdot10^n$という形のラベルで,
         '$\cdot$'の位置に使う文字番号.
         DCL文字番号(「GRPH1」のマニュアル参照)で指定する.
         初期値は195 ($\cdot$).
        \rule[-1ex]{0ex}{1ex}} \\
      {\tt 'IYCHR'} \> {\tt (I)} \>
        \parbox[t]{10cm}
        {Y軸に関する$2\cdot10^n$という形のラベルで,
         '$\cdot$'の位置に使う文字番号.
         DCL文字番号(「GRPH1」のマニュアル参照)で指定する.
         初期値は195 ($\cdot$).
        \rule[-1ex]{0ex}{1ex}} \\
      {\tt 'IXTYPE'} \> {\tt (I)} \>
        \parbox[t]{10cm}
        {X軸に関するラベルのフォーマットを指定する.
         1から4の整数値が指定できる(初期値は1).
         それぞれの意味は次項で説明.
        \rule[-1ex]{0ex}{1ex}} \\
      {\tt 'IYTYPE'} \> {\tt (I)} \>
        \parbox[t]{10cm}
        {Y軸に関するラベルのフォーマットを指定する.
         1から4の整数値が指定できる(初期値は1). \\
         1: 全てのラベルに指数部を付ける. \\
         \hspace*{2em}例\ \ $1\cdot10^3$ \ \ $2\cdot10^3$ \ \
                        $5\cdot10^3$ \ \ $1\cdot10^4$  \\
         ただし, {\tt SGLGET/SGLSET} (「GRPH1」のマニュアル参照)が
                        管理する内部変数{\tt 'LCNTL'}が
                        {\tt .FALSE.}のときには
                        $\cdot10^n$のかわりにE$n$と表現する. \\
         2: $10^n$以外のラベルには指数部を付けない. \\
         \hspace*{2em}例\ \ $10^3$ \ \ $2$ \ \ $5$ \ \ $10^4$ \\
         3: サブルーチン{\tt CHVAL} (「MISC1」のマニュアルFMTLIB
                        参照)を使って全てのラベルを文字化する. \\
         \hspace*{2em}例\ \ $1000$ \ \ $2000$ \ \
                        $5000$ \ \ $10000$  \\
         4: $10^n$のラベルのみ{\tt CHVAL}を使う.
                        そのほかは2を指定したときと同じ. \\
         \hspace*{2em}例\ \ $1000$ \ \     $2$ \ \
                        $5$ \ \ $10000$
        \rule[-1ex]{0ex}{1ex}}
      \end{tabbing}
  \end{quote}
  \item 備考
  \begin{enumerate}
    \item 内部変数を管理するための下請けルーチンとして
      以下のものがある.
      \begin{quote}
      \begin{tabular}{lp{8cm}}
        {\tt ULPQNP(NCP)}       &
          内部変数の総数{\tt NCP}を求める. \\
        {\tt ULPQID(CP,IDX)}    &
          内部変数{\tt CP}の位置{\tt IDX}を求める.  \\
        {\tt ULPQCP(IDX,CP)}    &
          {\tt IDX}の位置にある内部変数の名前{\tt CP}を参照する.  \\
        {\tt ULPQVL(IDX,IPARA)} &
          {\tt IDX}の位置にある内部変数の値{\tt IPARA}を参照する.  \\
        {\tt ULPSVL(IDX,IPARA)} &
          {\tt IDX}の位置にある内部変数の値{\tt IPARA}を変更する.  \\
      \end{tabular}
      \end{quote}
    \item \ULPGET は上に述べた{\tt ULPQID}を呼んで
      内部変数の位置を求め, {\tt ULPQVL}によって値を参照する;
      \ULPSET は{\tt ULPQID}を呼んで内部変数の位置を求め,
      {\tt ULPSVL}によって値を設定する.
      したがって指定した内部変数名が見つからないとき,
      エラーメッセージは{\tt ULPQID}が出力する.
    \item {\tt 'IXTYPE'/'IYTYPE'}が3または4のとき,
      {\tt CHVAL}に渡すフォーマットはそれぞれ
      {\tt ULXSFM/ULYSFM} で変更することができる.
  \end{enumerate}
\end{enumerate}
