%表題   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 UCXACL(CSIDE,JD0,ND)} & 日・月・年に関する座標軸を描く. \\
    {\tt UCYACL(CSIDE,JD0,ND)} &                                 \\
    {\tt UCXADY(CSIDE,JD0,ND)} & 日に関する座標軸を描く. \\
    {\tt UCYADY(CSIDE,JD0,ND)} &                         \\
    {\tt UCXAMN(CSIDE,JD0,ND)} & 月に関する座標軸を描く. \\
    {\tt UCYAMN(CSIDE,JD0,ND)} &                         \\
    {\tt UCXAYR(CSIDE,JD0,ND)} & 年に関する座標軸を描く. \\
    {\tt UCYAYR(CSIDE,JD0,ND)} &                         \\
    {\tt \UCPGET (CP,IPARA)} & 内部変数を参照する. \\
    {\tt \UCPSET (CP,IPARA)} & 内部変数を設定する. \\
    {\tt \UCPSTX (CP,IPARA)} & 内部変数を設定する.
                             (実行時オプションによる変更を許す).
  \end{tabular}

\section{サブルーチンの説明}
\label{ucpack.refuc}

\subsection{UCXACL/UCYACL}
%\label{ucpack.refuc.ucxacl}

\begin{enumerate}
  \item 機能
  \begin{quote}
    日・月・年に関する座標軸を描く.
  \end{quote}
  \item 呼び出し方法
  \begin{quote}
    {\tt CALL UCXACL(CSIDE,JD0,ND)} \\
    {\tt CALL UCYACL(CSIDE,JD0,ND)}
  \end{quote}
  \item パラメーターの説明
  \begin{quote}
    \begin{tabular}{llp{10cm}}
      {\tt CSIDE} & {\tt (C*1)} & 座標軸を書く場所を指定する. \\
      {\tt JD0} & {\tt (I)} & UCで0に相当する場所の日付を指定する. \\
      {\tt ND} & {\tt (I)} & 作画する日数を指定する.
    \end{tabular}
  \end{quote}
  \item 備考
  \begin{enumerate}
    \item {\tt UCXACL}は{\tt UCXADY}, {\tt UCXAMN}, {\tt UCXAYR}
      (以下の節参照)を続けて呼んでいる.
    \item {\tt UCYACL}は{\tt UCYADY}, {\tt UCYAMN}, {\tt UCYAYR}
      (以下の節参照)を続けて呼んでいる.
  \end{enumerate}
\end{enumerate}

\subsection{UCXADY/UCYADY}
%\label{ucpack.refuc.ucxady}
\begin{enumerate}
  \item 機能
  \begin{quote}
    日に関する座標軸を描く.
  \end{quote}
  \item 呼び出し方法
  \begin{quote}
    {\tt CALL UCXADY(CSIDE,JD0,ND)} \\
    {\tt CALL UCYADY(CSIDE,JD0,ND)}
  \end{quote}
  \item パラメーターの説明
  \begin{quote}
    \begin{tabular}{llp{10cm}}
      {\tt CSIDE} & {\tt (C*1)} & 座標軸を書く場所を指定する. \\
      {\tt JD0} & {\tt (I)} & UCで0に相当する場所の日付を指定する. \\
      {\tt ND} & {\tt (I)} & 作画する日数を指定する.
    \end{tabular}
  \end{quote}
  \item 備考
  \begin{enumerate}
    \item 何日ごとに目盛と日付を描くかは,
      関数{\tt NUCDAY}を通して内部変数{\tt 'NDAY'}が決める.
      {\tt 'NDAY'}が不定なら0, 1, 2, 5, 10, 15の中から適当な値が
      選ばれる(0以下のときは軸を描くだけで目盛と日付は描かない);
      陽に与えられていればその値を使う(初期値は不定).
    \item 目盛と日付を描くための情報を保持するために
      内部で配列を用意している.
      その配列の大きさに関する制限から,
      描きうる目盛と日付は最大100個である.
    \item {\tt UCXADY/}{\tt UCYADY}はそれぞれ
      {\tt UXPAXS/}{\tt UYPAXS} ({\tt ISLCT=2})で軸を描いている;
      {\tt UXPTMK/}{\tt UYPTMK} ({\tt ISLCT=1})で目盛を描いている;
      {\tt UXPLBL/}{\tt UYPLBL} ({\tt ISLCT=1})で日のラベルを描いている.
      したがって, これら座標軸の構成要素の属性は,
      \UZPGETSET によって参照/変更することができる.
      ただし, {\tt 'ICENT}{\it zs}{\tt '}は0とする;
      {\tt 'IROTL}{\it zs}{\tt '}は{\tt 'IROTC}{\it zs}{\tt '}を
      参照して用いる; {\tt 'LBTWN'}は{\tt .FALSE.}とする.
      くわしくは第\ref{uxyzpack}章を参照のこと.
  \end{enumerate}
\end{enumerate}

\subsection{UCXAMN/UCYAMN}
%\label{ucpack.refuc.ucxamn}
\begin{enumerate}
  \item 機能
  \begin{quote}
    月に関する座標軸を描く.
  \end{quote}
  \item 呼び出し方法
  \begin{quote}
    {\tt CALL UCXAMN(CSIDE,JD0,ND)} \\
    {\tt CALL UCYAMN(CSIDE,JD0,ND)}
  \end{quote}
  \item パラメーターの説明
  \begin{quote}
    \begin{tabular}{llp{10cm}}
      {\tt CSIDE} & {\tt (C*1)} & 座標軸を書く場所を指定する. \\
      {\tt JD0} & {\tt (I)} & UCで0に相当する場所の日付を指定する. \\
      {\tt ND} & {\tt (I)} & 作画する日数を指定する.
    \end{tabular}
  \end{quote}
  \item 備考
  \begin{enumerate}
    \item 月名を何文字描くかは,
      関数{\tt NUCCHR}を通して内部変数{\tt 'NCHAR'}が決める.
      {\tt 'NCHAR'}が不定なら0, 1, 2, 3, 9の中から適当な値が
      選ばれる(0のときは軸を描くだけで目盛と月名は描かない);
      陽に与えられていればその値を使う(初期値は不定).
      {\tt 'NCHAR'}の値が負のときはその絶対値の長さの月名を書き,
      さらに2文字目以降を小文字にする.
    \item 目盛と月名を描くための情報を保持するために
      内部で配列を用意している.
      その配列の大きさに関する制限から,
      描きうる目盛と月名は最大50個である.
    \item {\tt UCXAMN/}{\tt UCYAMN}はそれぞれ
      {\tt UXPAXS/}{\tt UYPAXS} ({\tt ISLCT=2})で軸を描いている;
      {\tt UXPTMK/}{\tt UYPTMK} ({\tt ISLCT=2})で目盛を描いている;
      {\tt UXPLBL/}{\tt UYPLBL} ({\tt ISLCT=2})で月のラベルを描いている.
      したがって, これら座標軸の構成要素の属性は,
      \UZPGETSET によって参照/変更することができる.
      ただし, {\tt 'ICENT}{\it zs}{\tt '}は0とする;
      {\tt 'IROTL}{\it zs}{\tt '}は{\tt 'IROTC}{\it zs}{\tt '}を
      参照して用いる; {\tt 'LBTWN'}は{\tt .TRUE.}とする.
      くわしくは第\ref{uxyzpack}章を参照のこと.
  \end{enumerate}
\end{enumerate}

\subsection{UCXAYR/UCYAYR}
%\label{ucpack.refuc.ucxayr}
\begin{enumerate}
  \item 機能
  \begin{quote}
    年に関する座標軸を描く.
  \end{quote}
  \item 呼び出し方法
  \begin{quote}
    {\tt CALL UCXAYR(CSIDE,JD0,ND)} \\
    {\tt CALL UCYAYR(CSIDE,JD0,ND)}
  \end{quote}
  \item パラメーターの説明
  \begin{quote}
    \begin{tabular}{llp{10cm}}
      {\tt CSIDE} & {\tt (C*1)} & 座標軸を書く場所を指定する. \\
      {\tt JD0} & {\tt (I)} & UCで0に相当する場所の日付を指定する. \\
      {\tt ND} & {\tt (I)} & 作画する日数を指定する.
    \end{tabular}
  \end{quote}
  \item 備考
  \begin{enumerate}
    \item 目盛と年を表す数字を描くための情報を保持するために
      内部で配列を用意している.
      その配列の大きさに関する制限から,
      描きうる目盛と数字は最大50個である.
    \item {\tt UCXAYR/}{\tt UCYAYR}はそれぞれ
      {\tt UXPAXS/}{\tt UYPAXS} ({\tt ISLCT=2})で軸を描いている;
      {\tt UXPTMK/}{\tt UYPTMK} ({\tt ISLCT=2})で目盛を描いている;
      {\tt UXPLBL/}{\tt UYPLBL} ({\tt ISLCT=2})で年のラベルを描いている.
      したがって, これら座標軸の構成要素の属性は,
      \UZPGETSET によって参照/変更することができる.
      ただし, {\tt 'ICENT}{\it zs}{\tt '}は0とする;
      {\tt 'IROTL}{\it zs}{\tt '}は{\tt 'IROTC}{\it zs}{\tt '}を
      参照して用いる; {\tt 'LBTWN'}は{\tt .TRUE.}とする;
      {\tt 'RSIZET2'}は1.5倍している.
      くわしくは第\ref{uxyzpack}章を参照のこと.
  \end{enumerate}
\end{enumerate}

\subsection{UC{\it p}GET/UC{\it p}SET(UC{\it p}STX)}
%\label{ucpack.refuc.ucpget}
\begin{enumerate}
  \item 機能
  \begin{quote}
    UCPACKで使う内部変数を参照/変更する.
    (\UCPSTX は実行時オプションによる変更を許す. )
  \end{quote}
  \item 呼び出し方法
  \begin{quote}
    {\tt CALL \UCPGET (CP,IPARA)} \\
    {\tt CALL \UCPSET (CP,IPARA)} \\
    {\tt CALL \UCPSTX (CP,IPARA)}
  \end{quote}
  \item パラメーターの説明
  \begin{quote}
    \begin{tabular}{llp{10cm}}
      {\tt CP} & {\tt (C*8)} & 内部変数の名前. \\
      {\tt IPARA} & {\tt (I,R,L)} & 内部変数の値.
    \end{tabular}

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

    \vspace{1em}
    \begin{tabbing}
      123456789 \= 1234 \=                                         \kill
      {\tt 'NDAY'} \> {\tt (I)} \>
        \parbox[t]{10cm}
        {{\tt UCXADY/}{\tt UCYADY}を使うとき,
        何日ごとに目盛と日付を描くかを指定する.
        {\tt 'NDAY'}が不定なら0, 1, 2, 5, 10, 15の中から適当な値が
        選ばれる(0以下のときは軸を描くだけで目盛と日付は描かない);
        陽に与えられていればその値を使う(初期値は不定).
        これは関数{\tt NUCDAY}が決める.
        \rule[-1ex]{0ex}{1ex}} \\
      {\tt 'NCHAR'} \> {\tt (I)} \>
        \parbox[t]{10cm}
        {{\tt UCXAMN/}{\tt UCYAMN}を使うとき,
        月名を何文字描くかを指定する.
        {\tt 'NCHAR'}が不定なら0, 1, 2, 3, 9の中から適当な値が
        選ばれる(0のときは軸を描くだけで目盛と月名は描かない);
        陽に与えられていればその値を使う(初期値は不定).
        これは関数{\tt NUCCHR}が決める.
        \rule[-1ex]{0ex}{1ex}} \\
      {\tt 'LOWER'} \> {\tt (L)} \>
        \parbox[t]{10cm}
        {{\tt UCXADY/}{\tt UCYADY}で描く月名の
        2文字目以下を小文字にするかどうかを指定する.
        {\tt .TRUE.}なら小文字にする;
        {\tt .FALSE.}なら大文字のままにする(初期値は{\tt .FALSE}).
        \rule[-1ex]{0ex}{1ex}} \\
      {\tt 'IUNDEF'} \> {\tt (I)} \>
        \parbox[t]{10cm}
        {値が不定であることを示す内部変数
        (初期値は-999).
        \rule[-1ex]{0ex}{1ex}}
     \end{tabbing}
  \end{quote}
  \item 備考
  \begin{enumerate}
    \item 内部変数を管理するための下請けルーチンとして
      以下のものがある.
      \begin{quote}
      \begin{tabular}{lp{8cm}}
        {\tt UCPQNP(NCP)}       &
          内部変数の総数{\tt NCP}を求める. \\
        {\tt UCPQID(CP,IDX)}    &
          内部変数{\tt CP}の位置{\tt IDX}を求める.  \\
        {\tt UCPQCP(IDX,CP)}    &
          {\tt IDX}の位置にある内部変数の名前{\tt CP}を参照する.  \\
        {\tt UCPQVL(IDX,IPARA)} &
          {\tt IDX}の位置にある内部変数の値{\tt IPARA}を参照する.  \\
        {\tt UCPSVL(IDX,IPARA)} &
          {\tt IDX}の位置にある内部変数の値{\tt IPARA}を変更する.  \\
      \end{tabular}
      \end{quote}
    \item \UCPGET は上に述べた{\tt UCPQID}を呼んで
      内部変数の位置を求め, {\tt UCPQVL}によって値を参照する;
      \UCPSET は{\tt UCPQID}を呼んで内部変数の位置を求め,
      {\tt UCPSVL}によって値を設定する.
      したがって指定した内部変数名が見つからないとき,
      エラーメッセージは{\tt UCPQID}が出力する.
    \item 内部変数の型に応じ, {\tt IPARA}として適切な型の
      定数あるいは変数を指定すること.
  \end{enumerate}
\end{enumerate}

\subsection{その他の関数}

このパッケージにはこのほかに以下の下位関数がある.
ここではその名前をあげるにとどめる.

\vspace{1em}
\begin{quote}
\begin{tabular}{ll}
  {\tt NUCCHR} & {\tt NUCDAY}
\end{tabular}
\end{quote}
