%表題   基本グラフィックルーチンライブラリ
%
%履歴
%\Drireki{
%         91/05/20 酒井 敏
%         91/09/05 林祥介
%         92/03/21 塩谷雅人
%         92/04/22 林祥介   (4.1版)
%         94/04/05 酒井敏, 塩谷雅人
%         95/04/21 塩谷雅人
%        }
%
\section{サブルーチンの説明 : コントロールルーチン}

\subsection{SWDOPN/SWDCLS}
\begin{enumerate}
  \item 機能
      \begin{quote}
      デバイスをオープン/クローズする.
      \end{quote}

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

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

  \item 備考
      \begin{quote}
      \begin{enumerate}
        \item \SWPSET {\tt (SW}{\it p}{\tt STX)}, {\tt SWCSET(SWCSTX)} をのぞく
               すべてのSWPACKルーチンはこの2つのルーチンの間で呼ばれる.
        \item 座標系の回転は STPACK が行う.
        \item {\tt SWDOPN}を呼ぶ前に \SWPGETSET が管理する
              内部変数{\tt 'IWS'}を設定しておかなければならない.
              この設定はふつう {\tt SGOPN} の中でおこなわれる.
      \end{enumerate}
      \end{quote}

\end{enumerate}

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

\subsection{SWPOPN/SWPCLS}
\begin{enumerate}
  \item 機能
      \begin{quote}
      ページををオープン/クローズする.
      \end{quote}

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

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

  \item 備考
      \begin{quote}
      \begin{enumerate}
        \item CALCOMP系プロットルーチンの様にページの概念のない
              処理系では, 原点移動などにより仮想的にページの概念が
              導入される.
        \item ページのクローズとオープンが
              "改ページ"として常にセットで行われる様な処理系では,
              どちらかのルーチンがDUMMYになる場合もある.
      \end{enumerate}
      \end{quote}

\end{enumerate}

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

\subsection{SWOOPN/SWOCLS}
\begin{enumerate}
  \item 機能
      \begin{quote}
      オブジェクトをオープン/クローズする.
      \end{quote}

  \item 呼び出し方法
      \begin{quote}
      {\tt CALL SWOOPN(COBJ,COMM)}\\
      {\tt CALL SWOCLS(COBJ)}
      \end{quote}

  \item 引数の説明
      \begin{quote}
      \begin{tabular}{llp{10cm}}
      {\tt COBJ} & {\tt (C*(*))} & オブジェクト名. \\
      {\tt COMM} & {\tt (C*(*))} & コメント.
      \end{tabular}
      \end{quote}

  \item 備考
      \begin{quote}
      \begin{enumerate}
        \item オブジェクトとは, 同じ属性を持つ一まとまりの図形要素である.
	\item これらのルーチンは,
		SZPACK の上位インターフェイスルーチンの
		オープン/クローズのタイミングで呼ばれる.
        \item オブジェクトの概念のないデバイスではダミールーチンとなる.
      \end{enumerate}
      \end{quote}

\end{enumerate}

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

\section{サブルーチンの説明 : 描画ルーチン}

\subsection{SWSWDI/SWSCLI}
\label{swpack.swswdi}
\begin{enumerate}
  \item 機能
      \begin{quote}
      描く線分の属性(線幅と色)を指定する.
      \end{quote}

  \item 呼び出し方法
      \begin{quote}
      {\tt CALL SWSWDI(IWDIDX)} \\
      {\tt CALL SWSCLI(ICLIDX)}
      \end{quote}

  \item 引数の説明
      \begin{quote}
      \begin{tabular}{llp{10cm}}
      {\tt IWDIDX} & {\tt (I)} & 線分の太さに関するインデクス.
                                 SGPACK (\ref{gaiyou.lindex}節)参照. \\
      {\tt ICLIDX} & {\tt (I)} & 線分の色に関するインデクス.
                                 SGPACK (\ref{gaiyou.lindex}節)参照.
      \end{tabular}

      \end{quote}

  \item 備考
      \begin{quote}
      \begin{enumerate}
      \item これらのルーチンは実際に描画するルーチンの前に
            呼ばなければならない.
      \item {\tt IWDIDX}, {\tt ICLIDX} が0の時は, 1と見なして処理する.
      \item GRPH1で指定できる線幅は0から9までであるが,
            色が指定できないデバイスの場合には,
            線色のインデクス{\tt ICLIDX}を線幅のインデクス{\tt IWDIDX}
            に読み変えてSWPACKに渡す場合があるので,
            このようなシステムにおいてはIWDIDXが99までの値をとる.
      \item 実際に線がどのような色になるか,
            また, どの程度の太さになるかは, システムに依存する.
%           色の指定に関しては\ref{colormap}節を参照のこと.
      \end{enumerate}
      \end{quote}

\end{enumerate}

%-----------------------------------------------------------------------
\subsection{SWGOPN/SWGCLS}
\begin{enumerate}
  \item 機能
      \begin{quote}
      線分をオープン/クローズする.
      \end{quote}

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

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

  \item 備考
      \begin{quote}
      \begin{enumerate}
        \item CALCOMP 系の処理系では,
              どちらもDUMMYルーチンとなる.
      \end{enumerate}
      \end{quote}

\end{enumerate}

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

\subsection{SWGMOV/SWGPLT}
\begin{enumerate}
  \item 機能
      \begin{quote}
      ペンアップ/ペンダウンで移動する.
      \end{quote}

  \item 呼び出し方法
      \begin{quote}
      {\tt CALL SWGMOV(WX,WY)} \\
      {\tt CALL SWGPLT(WX,WY)}
      \end{quote}

  \item 引数の説明
      \begin{quote}
      \begin{tabular}{llp{10cm}}
      {\tt WX,WY} & {\tt (R)}    & ワークステーション座標. {\tt (i)}
      \end{tabular}

      \end{quote}

  \item 備考
      \begin{quote}
      \begin{enumerate}
%       \item 座標系は任意であるが,
%             X方向とY方向の長さの単位は同じでなければならない.
%             単位や描画可能範囲はSWQRCTで取得可能である.
        \item プリミティブの中にこの2つのルーチンは任意の回数
              出現するが, プリミティブがオープンされた直後に呼ばれる
              ルーチンは {\tt SWGMOV} でなければならない.
              {\tt SWGOPN}の直後に{\tt SWGPLT}を呼んだ場合の動作は
              保証されない.
      \end{enumerate}
      \end{quote}

\end{enumerate}

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

\subsection{SWGTON}
\begin{enumerate}
  \item 機能
      \begin{quote}
      ハードフィルを行う.
      \end{quote}

  \item 呼び出し方法
      \begin{quote}
      {\tt CALL SWGTON(NP,WPX,WPY,ITPAT) }
      \end{quote}

  \item 引数の説明
      \begin{quote}
      \begin{tabular}{llp{10cm}}
      {\tt NP  } & {\tt (I)} & 配列{\tt WPX,WPY}の大きさ.   {\tt (i)}  \\
      {\tt WPX } & {\tt (R)} & 塗りつぶす領域の境界のX座標. {\tt (i)}  \\
      {\tt WPY } & {\tt (R)} & 塗りつぶす領域の境界のY座標. {\tt (i)}  \\
      {\tt IPAT} & {\tt (I)} & 塗りつぶしパターン番号.      {\tt (i)}  \\
      \end{tabular}
      \end{quote}

  \item 備考
      \begin{quote}
      \begin{enumerate}
        \item  パターン番号は5桁の番号で,
              上位2桁が色,
              3桁目がパターンの種類(点または線),
              4桁目が点または線の太さ, 最下位桁が点または線の密度
              に対応する.
      \end{enumerate}
      \end{quote}

\end{enumerate}

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

\subsection{SWIOPN/SWIDAT/SWICLS}
\begin{enumerate}
  \item 機能
      \begin{quote}
      イメージデータを描画する.
      \end{quote}

  \item 呼び出し方法
      \begin{quote}
      {\tt CALL SWIOPN(IWX,IWY,IMW,IMH) } \\
      {\tt CALL SWIDAT(IMAGE,NLEN) } \\
      {\tt CALL SWICLS }
      \end{quote}

  \item 引数の説明
      \begin{quote}
      \begin{tabular}{llp{10cm}}
      {\tt IWX,IWY } & {\tt (I)}& イメージの左上の座標. {\tt (i)}  \\
      {\tt IMW,IMH } & {\tt (I)}& イメージの大きさ.     {\tt (i)}  \\
      {\tt IMAGE   } & {\tt (I)}& イメージデータ.       {\tt (i)}  \\
      {\tt NLEN    } & {\tt (I)}& イメージデータの長さ. {\tt (i)}  \\
      \end{tabular}
      \end{quote}

  \item 備考
      \begin{quote}
      \begin{enumerate}
        \item  イメージの位置, および大きさはイメージ座標で指定する.
        \item  イメージデータは色番号 (パレット番号) を4バイトの整数
		で指定する.
        \item  {\tt SWIOPN} と {\tt SWICLS} の間で, {\tt SWIDAT} を
		複数回呼ぶことができる.
		すなわち, データを分割して指定することができる.
        \item  一回に指定するデータの長さは任意であるが,
		{\tt SWICLS } が呼ばれるまでに {\tt SWIOPN} で指定した
		イメージの大きさ分だけのデータを指定しなければならない.
		それより, 多いか少い場合の動作は不定である.
      \end{enumerate}
      \end{quote}

\end{enumerate}
%-----------------------------------------------------------------------
\section{サブルーチンの説明 : フォント}
\subsection{SWSLFT}
\begin{enumerate}
  \item 機能
      \begin{quote}
      フォント一覧をダイアログで表示し, 選択したフォント名を
      取得する.
      \end{quote}

  \item 呼び出し方法
      \begin{quote}
      {\tt CALL SWSLFT(FNAME)} \\
      \end{quote}

  \item 引数の説明
      \begin{quote}
      \begin{tabular}{llp{10cm}}
      {\tt FNAME}   & {\tt (C)}  & ダイアログで選択されたフォント名 \\
      \end{tabular}

      \end{quote}

  \item 備考
      \begin{quote}
      \begin{enumerate}
        \item 親画面が必要なためIFL=1 を除くFILESでは使用出来ない.
        \item 取得したフォント名を, FONTNAMEにSWCSET
              して使用するシステムフォントを設定する.
      \end{enumerate}
      \end{quote}

\end{enumerate}

%-----------------------------------------------------------------------
\subsection{SWLSFT}
\begin{enumerate}
  \item 機能
      \begin{quote}
      利用可能なフォントのリストを標準出力に表示する.
      \end{quote}

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

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

  \item 備考
      \begin{quote}
      \begin{enumerate}
        \item なし.
      \end{enumerate}
      \end{quote}
\end{enumerate}

%-----------------------------------------------------------------------
\section{サブルーチンの説明 : マウス}
\subsection{SWQPNT}
\begin{enumerate}
  \item 機能
      \begin{quote}
      マウスポイントの位置を返す.
      \end{quote}

  \item 呼び出し方法
      \begin{quote}
      {\tt CALL SWQPNT(WX,WY,MB)}
      \end{quote}

  \item 引数の説明
      \begin{quote}
      \begin{tabular}{llp{10cm}}
      {\tt WX,WY} & {\tt (R)}  & マウスポイントの位置. {\tt (o)} \\
      {\tt MB}    & {\tt (I)}  & ボタンの種類. {\tt (o)} \\
      \end{tabular}

      \end{quote}

  \item 備考
      \begin{quote}
      \begin{enumerate}
        \item X ウインドウシステムにおいて {\tt MB} としては
          次のような値を返す.
          {\tt Button1} が押されたら1,
          {\tt Button2} が押されたら2,
          {\tt Button3} が押されたら3,
          その他の場合は0を返す.
      \end{enumerate}
      \end{quote}

\end{enumerate}

%-----------------------------------------------------------------------
\section{サブルーチンの説明 : 座標変換}
\subsection{SWFINT/SWIINT}
\begin{enumerate}
  \item 機能
      \begin{quote}
      ワークステーション座標とイメージ座標の変換をする.
      \end{quote}

  \item 呼び出し方法
      \begin{quote}
      {\tt CALL SWFINT(WX,WY,IWX,IWY)} \\
      {\tt CALL SWIINT(IWX,IWY,WX,WY)} \\
      \end{quote}

  \item 引数の説明
      \begin{quote}
      \begin{tabular}{llp{10cm}}
      {\tt WX,WY}   & {\tt (R)}  & ワークステーション座標. {\tt (i/o)} \\
      {\tt IWX,IWY} & {\tt (I)}  & イメージ座標. {\tt (i/o)} \\
      \end{tabular}

      \end{quote}

  \item 備考
      \begin{quote}
      \begin{enumerate}
        \item なし.
      \end{enumerate}
      \end{quote}

\end{enumerate}

%-----------------------------------------------------------------------
\section{サブルーチンの説明 : 問い合わせルーチン}
\subsection{SWQWDC/SWQCLC/SWQTNC/SWQIMC/SWQPTC}
\begin{enumerate}
  \item 機能
      \begin{quote}
      SWPACKのルーチンが持つ能力を問い合わせる.
      \end{quote}

  \item 呼び出し方法
      \begin{quote}
      {\tt CALL SWQWDC(LWD)} \\
      {\tt CALL SWQCLC(LCL)} \\
      {\tt CALL SWQTNC(LTN)} \\
      {\tt CALL SWQIMC(LIM)} \\
      {\tt CALL SWQPTC(LPT)}
      \end{quote}

  \item 引数の説明
      \begin{quote}
      \begin{tabular}{llp{10cm}}
      {\tt LWD} & {\tt (L)} & 線幅を変える能力がある時
                              {\tt .TRUE. (o)} \\
      {\tt LCL} & {\tt (L)} & 線色を変える能力がある時
                              {\tt .TRUE. (o)} \\
      {\tt LTN} & {\tt (L)} & ハードフィルを行う能力がある時
                              {\tt .TRUE. (o)} \\
      {\tt LIM} & {\tt (L)} & イメージ描画を行う能力がある時
                              {\tt .TRUE. (o)} \\
      {\tt LIM} & {\tt (L)} & マウスポイントの位置を調べる能力がある時
                              {\tt .TRUE. (o)}
      \end{tabular}
      \end{quote}

  \item 備考
      \begin{quote}
      \begin{enumerate}
        \item 線幅または線色が変化できない機種では,
              特に指定されない限り上位ルーチンが, 線分属性の情報を
              その機種で区別可能な属性に変換する.
        \item ハードフィルができない機種では,
              上位ルーチンがソフトフィルを行う.
      \end{enumerate}
      \end{quote}

\end{enumerate}

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

\subsection{SWCMLL}
\begin{enumerate}
  \item 機能
      \begin{quote}
      デフォルト以外のカラーマップリストを読み込む.
      \end{quote}

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

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

  \item 備考
      \begin{quote}
      \begin{enumerate}
        \item なし.
      \end{enumerate}
      \end{quote}

\end{enumerate}

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

\subsection{SWQFNM}
\begin{enumerate}
  \item 機能
      \begin{quote}
      各種データベースファイル名を得る.
      \end{quote}

  \item 呼び出し方法
      \begin{quote}
      {\tt CALL SWQFNM(CPARA,CFNAME) }
      \end{quote}

  \item 引数の説明
      \begin{quote}
      \begin{tabular}{llp{10cm}}
      {\tt CPARA}  & {\tt (C*(*))} & データベース名を示す内部変数の
                                     名前(\ref{swpack.swpget}節参照). \\
      {\tt CFNAME} & {\tt (C*(*))} & データベースファイル名.
      \end{tabular}
      \end{quote}

  \item 備考
      \begin{quote}
      \begin{enumerate}
        \item どのようなルールでファイル名を探すかはシステムに依存する.
        \item 標準ライブラリではまずカレントディレクトリを探す.
              次に {\tt GLCGET/}{\tt GLCSET}が管理する内部変数
              {\tt 'DUPATH'}のさすディレクトリを探す.
              最後に内部変数{\tt 'DSPATH'}のさすディレクトリを探す.
      \end{enumerate}
      \end{quote}

\end{enumerate}

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

\subsection{SWQRCT}
\begin{enumerate}
  \item 機能
      \begin{quote}
      最大作画領域を通知する.
      \end{quote}

  \item 呼び出し方法
      \begin{quote}
      {\tt CALL SWQRCT(WXMIN,WXMAX,WYMIN,WYMAX,FACT) }
      \end{quote}

  \item 引数の説明
      \begin{quote}
      \begin{tabular}{llp{10cm}}
      {\tt WXMIN} & {\tt (R)} & 作画領域の左下のX座標.   {\tt (o)} \\
      {\tt WXMAX} & {\tt (R)} & 作画領域の右上のX座標.   {\tt (o)} \\
      {\tt WYMIN} & {\tt (R)} & 作画領域の左下のY座標.   {\tt (o)} \\
      {\tt WYMAX} & {\tt (R)} & 作画領域の右上のY座標.   {\tt (o)} \\
      {\tt FACT} & {\tt (R)} & 座標系の1単位の長さ(cm).  {\tt (o)}
      \end{tabular}
      \end{quote}

  \item 備考
      \begin{quote}
      \begin{enumerate}
        \item ディスプレイの様な大きさのはっきりしない
              デバイスに対しては,
              描画領域の大きさがほぼA4程度の紙の大きさであると考えて
              {\tt FACT}を設定する.
      \end{enumerate}
      \end{quote}

\end{enumerate}

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

\subsection{SWSROT}
\begin{enumerate}
  \item 機能
      \begin{quote}
      画面の回転方向を指定する.
      \end{quote}

  \item 呼び出し方法
      \begin{quote}
      {\tt CALL SWSROT(IWTROT) }
      \end{quote}

  \item 引数の説明
      \begin{quote}
      \begin{tabular}{llp{10cm}}
      {\tt IWTROT} & {\tt (I)} & 1 のとき正立; 2 のとき90度回転して
                                 いることをあらわす. {\tt (i)}
      \end{tabular}
      \end{quote}

  \item 備考
      \begin{quote}
      \begin{enumerate}
        \item 通常SWPACKは上位ルーチンがどのような向きに図形を
              描画しているか関知しないが,
              ハードフィルの際には図形の向きとデバイスの向きの関係が
              問題になるので,
              それを通知するためのルーチンである.
              したがって, この情報はハードフィルルーチンのみが使用する.
      \end{enumerate}
      \end{quote}

\end{enumerate}

%-----------------------------------------------------------------------
\section{サブルーチンの説明 : 内部変数管理ルーチン}
\label{swpack.swpget}

\subsection{SW{\it p}GET/SW{\it p}SET(SW{\it p}STX)/SWCGET/SWCSET(SWCSTX)}
\begin{enumerate}
  \item 機能
      \begin{quote}
      \SWPGETSET {\tt (SW}{\it p}{\tt STX)} は整数・実数・論理型の
      内部変数について,
      {\tt SWCGET/SWCSET(SWCSTX)} は文字型の内部変数について
      参照/変更する.
      ({\tt SW}{\it p}{\tt STX/SWCSTX} は実行時オプションによる変更を許す. )
      \end{quote}

  \item 呼び出し方法
      \begin{quote}
      {\tt CALL SW}{\it p}{\tt GET(CP,IPARA)} \\
      {\tt CALL SW}{\it p}{\tt SET(CP,IPARA)} \\
      {\tt CALL SW}{\it p}{\tt STX(CP,IPARA)} \\
      {\tt CALL SWCGET(CP,CPARA)} \\
      {\tt CALL SWCSET(CP,CPARA)} \\
      {\tt CALL SWCSTX(CP,CPARA)}
      \end{quote}

  \item 引数の説明
      \begin{quote}
      \begin{tabular}{llp{10cm}}
      {\tt CP   }& {\tt (C*8)}   & 内部変数の名前. \\
      {\tt IPARA}& {\tt (I,R,L)} & (整数・実数・論理型の)内部変数の値. \\
      {\tt CPARA}& {\tt (C*(*))} & (文字型の)内部変数の値.
      \end{tabular}

    \vspace{1em}
    以下に, 電脳ライブラリが標準的に提供する図形出力装置
    (Xサーバー, ポストスクリプト, テクトロ端末)に対し,
    {\tt CP}として指定できる名前のリストを記す.
    値が整数・実数・論理型のものは \SWPGETSET {\tt (SW}{\it p}{\tt STX)}で
    指定する;
    値が文字型のものは {\tt SWCGET/SWCSET(SWCSTX)}で
    指定する.

    \vspace{1em}
    {\tt 'FONT1'}, {\tt 'CL2TN'} などデータベースファイル名を示す
    内部変数は, その内部変数の値がファイル名としてそのまま
    利用されるとは限らない.
    実際に利用されるファイル名は {\tt SWQFNM} が決める.
    その時のヒントとして
    これらのパラメータ名は定義されていなければならない.
    標準ライブラリではまずカレントディレクトリを探す.
    次に{\tt GLCGET/}{\tt GLCSET}が管理する内部変数
    {\tt 'DUPATH'}(ユーザーの指定するパス名)のさすディレクトリを探す.
    最後に内部変数{\tt 'DSPATH'}(システムがあらかじめ用意するパス名)の
    さすディレクトリを探す.

    \vspace{1em}
    また, 出力装置に依存して{\tt .x11}, {\tt .psx}などのサフィックスの
    ついたものを優先的に探したりする.
    たとえば, 標準ライブラリにおいて {\tt 'CLRMAP'} の示すファイル名を
    探すときに, 出力装置として X サーバーを選んでいれば,
    まず {\tt .x11} のサフィックスのついたものが探される;
    次にサフィックスなしのものが探される;
    最後に {\tt .psx} のサフィックスのついたものが探される.
    いっぽう, 出力装置として ポストスクリプトを選んでいれば,
    まず {\tt .psx} のサフィックスのついたものが探される;
    次にサフィックスなしのものが探される;
    最後に {\tt .x11} のサフィックスのついたものが探される.

    \vspace{1em}
    {\bf [すべての出力装置に共通なパラメーター]}
    - SWPACK がどのような出力装置を実現していても,
      これらの内部変数名は定義されていなければならない.

    \vspace{1em}
    \begin{tabbing}
      1234567890 \= 1234 \=                                         \kill
      {\tt 'MAXWNU'} \> {\tt (I)} \>
        \parbox[t]{11cm}{
        SWPACK が実現している出力装置の数.
        標準ライブラリにおける値は2 (DISP, FILES) である.
        \rule[-1ex]{0ex}{1ex}} \\
      {\tt 'IWS'} \> {\tt (I)} \>
        \parbox[t]{11cm}{
        オープンする装置番号.
        1から{\tt 'MAXWNU'}の間の値を指定する(初期値は0).
        この番号は {\tt SGOPN} が設定する.
        \rule[-1ex]{0ex}{1ex}} \\
      {\tt 'IFL'} \> {\tt (I)} \>
        \parbox[t]{11cm}{
        出力するファイルフォーマット番号.
        1から4の間の値を指定する(初期値は4).
        それぞれのフォーマットは(1:png,2:eps,3:SVG,4:PDF)である．
        この番号は {\tt SGOPN} が設定する.
        \rule[-1ex]{0ex}{1ex}} \\
      {\tt 'LSTDOT'} \> {\tt (L)} \>
        \parbox[t]{11cm}{
        pngを出力する場合には出力先をファイルではなく，
        標準出力に切り替えるかを指定する．
        初期値は出力しない {\tt .FALSE.}である．
        標準出力には他に何も出力してはいけない.
        {\tt WRITE}文などは取り除く必要がある．
        \rule[-1ex]{0ex}{1ex}} \\
      {\tt 'WSNAME{\it nn}'} \> {\tt (C)} \>
        \parbox[t]{11cm}{
        ワークステーション名($1 \leq nn \leq ${\tt 'MAXWNU'}).
        標準ライブラリにおける値は,
        {\tt 'WSNAME01'='DISP'} (ディスプレイ),
        {\tt 'WSNAME02'='FILES'} (ファイル),
      となっている.
        \rule[-1ex]{0ex}{1ex}} \\
      {\tt 'FONT{\it n}'} \> {\tt (C)} \>
        \parbox[t]{11cm}{
        フォントファイル名($n=1,2$).
        標準ライブラリにおける値は,
        {\tt 'FONT1'=}{\tt 'font1u'}, {\tt 'FONT2'=}{\tt 'font2u'},
        \rule[-1ex]{0ex}{1ex}} \\
      {\tt 'CL2TN'} \> {\tt (C)} \>
        \parbox[t]{11cm}{
        カラー番号をトーンパターン番号に読みかえるためのファイル名.
        標準ライブラリにおける値は{\tt 'cl2tnmap'}.
        \rule[-1ex]{0ex}{1ex}}
    \end{tabbing}

    \vspace{1em}
    {\bf [DISP,FILESに共通なパラメーター]}

    \vspace{1em}
    \begin{tabbing}
      1234567890 \= 1234 \=                                         \kill
      {\tt 'IWIDTH'} \> {\tt (I)} \>
        \parbox[t]{11cm}{
        イメージウインドウの横方向のサイズ
        (省略値は900).
        \rule[-1ex]{0ex}{1ex}} \\
      {\tt 'IHEIGHT'} \> {\tt (I)} \>
        \parbox[t]{11cm}{
        イメージウインドウの縦方向のサイズ
        (省略値は650).
        X では, {\tt 'IWIDTH'}, $\times$ {\tt 'IHEIGHT'} のウインドウが
        オープンされる.
        PDF では, 縦横比が {\tt 'IHEIGHT':'IWIDTH'} の描画領域が
        最大描画領域に最大内接するように用意される.
        \rule[-1ex]{0ex}{1ex}} \\
      {\tt 'FNAME'} \> {\tt (C)} \>
        \parbox[t]{11cm}{
        出力ファイル名(省略値は{\tt 'dcl'}).
        この値が{\tt '*'} あるいは空白のとき, 現在実行中の
        プログラム名が用いられる.
        X のダンプファイル名, PS の複数ページ出力のための
        ファイル名として用いられるとき, この名前に
        {\tt '\_}{\it nnnn}{\tt '} ({\it nnnn}はページ番号)を付けたものとなる.
        さらに ダンプファイル名の場合は{\tt '.png'} の
        サフィックスがつく; ファイルの場合は指定したフォーマットに応じて
        サフィックスがつく.
        \rule[-1ex]{0ex}{1ex}} \\
      {\tt 'TITLE'} \> {\tt (C)} \>
        \parbox[t]{11cm}{
        タイトル名(省略値は{\tt '*'}).
        この値が{\tt '*'} あるいは空白のとき, {\tt DCLVNM}
        (MISC1/MISCLIB参照)が返すバージョン名となる.
        X の場合, このタイトル名はウインドウのタイトル名として用いられる;
        PS の場合, このタイトル名はコメント部分の Creator 部分に
        書かれる.
        \rule[-1ex]{0ex}{1ex}} \\
      {\tt 'CLRMAP'} \> {\tt (C)} \>
        \parbox[t]{11cm}{
        カラーマップを収めたファイル名.
        標準ライブラリにおける値は{\tt 'colormap'}.
        \rule[-1ex]{0ex}{1ex}} \\
      {\tt 'ICLRMAP'} \> {\tt (I)} \>
        \parbox[t]{11cm}{
        使用するカラーマップファイル番号.
        初期値は{\tt 1}.
        \rule[-1ex]{0ex}{1ex}}\\
      {\tt 'LFGBG'} \> {\tt (L)} \>
        \parbox[t]{11cm}{
        カラーマップの描画色と背景色を入れ替える.
        初期値は{\tt .FALSE.}.
        \rule[-1ex]{0ex}{1ex}}\\
      {\tt 'IBGPAGE'} \> {\tt (I)} \>
        \parbox[t]{11cm}{
        ファイル出力時の最初のページ番号を指定する
        初期値は{\tt 1}.
        \rule[-1ex]{0ex}{1ex}}\\
      {\tt 'IDMPDGT'} \> {\tt (I)} \>
        \parbox[t]{11cm}{
        ファイル出力時のページ番号の桁数を指定する
        初期値は{\tt 4}.
        \rule[-1ex]{0ex}{1ex}}\\
      {\tt 'LSYSFNT'} \> {\tt (L)} \>
        \parbox[t]{11cm}{システムフォントを使用するか
        どうかを示す(初期値は{\tt .FALSE.}：使用しない) 使用するフォントはFONTNAMEを
        設定することで指定出来る．指定しない場合，ストロークフォント用の
        {\tt IFONT,LFPROP}を参考に割り当てられる．\rule[-1ex]{0ex}{1ex}} \\
      {\tt 'FONTNAME'} \> {\tt (C)} \>
        \parbox[t]{11cm}{使用するシステムフォントの名前．{\tt Sans Bold}のように指定する．
        {\tt Sans}と{\tt Serif}と {\tt Monospace}はすべてのシステムで用意されている
        標準的なフォントへの別名．本当に使用されるフォントはシステムに依存する．
        (初期値は{\tt Sans Regular}) \rule[-1ex]{0ex}{1ex}} \\
    \end{tabbing}

    \vspace{1em}
    {\bf [ディスプレイ(DISP)に関するパラメーター]}

    \vspace{1em}
    \begin{tabbing}
      1234567890 \= 1234 \=                                         \kill
      {\tt 'IPOSX'} \> {\tt (I)} \>
        \parbox[t]{11cm}{
        ウインドウの位置を示すX座標.
        (省略値は-999).
        \rule[-1ex]{0ex}{1ex}} \\
      {\tt 'IPOSY'} \> {\tt (I)} \>
        \parbox[t]{11cm}{
        ウインドウの位置を示すY座標.
        (省略値は-999).
        {\tt (IPOSX,IPOSY)}$=(-999,-999)$のときユーザーが
        マウスで指定する.
        \rule[-1ex]{0ex}{1ex}} \\
      {\tt 'LWAIT'} \> {\tt (L)} \>
        \parbox[t]{11cm}{
        改ページのタイミングで一時停止するかどうかを指定する.
        {\tt .TRUE.}なら一時停止する;
        {\tt .FALSE.}なら一時停止しない
        (省略値は {\tt .TRUE.}).
        \rule[-1ex]{0ex}{1ex}} \\
      {\tt 'LWAIT0'} \> {\tt (L)} \>
        \parbox[t]{11cm}{
        デバイスをオープンするタイミングで一時停止するかどうかを指定する.
        {\tt .TRUE.}なら一時停止する;
        {\tt .FALSE.}なら一時停止しない
        (省略値は {\tt .FALSE.}).
        \rule[-1ex]{0ex}{1ex}} \\
      {\tt 'LWAIT1'} \> {\tt (L)} \>
        \parbox[t]{11cm}{
        デバイスをクローズするタイミングで一時停止するかどうかを指定する.
        {\tt .TRUE.}なら一時停止する;
        {\tt .FALSE.}なら一時停止しない
        (省略値は {\tt .TRUE.}).
        \rule[-1ex]{0ex}{1ex}} \\
     {\tt 'LDUMP'} \> {\tt (L)} \>
        \parbox[t]{11cm}{
        ダンプファイル(png)を作成するかどうか指定する.
        {\tt .TRUE.}なら作成する;
        {\tt .FALSE.}なら作成しない
        (省略値は {\tt .FALSE.}).
        \rule[-1ex]{0ex}{1ex}} \\
     {\tt 'LALT'} \> {\tt (L)} \>
        \parbox[t]{11cm}{
        裏画面で描画するかどうかを指定する.
        {\tt .TRUE.}なら裏画面で描画する;
        {\tt .FALSE.}なら裏画面で描画しない
        (省略値は {\tt .FALSE.}).
        \rule[-1ex]{0ex}{1ex}} \\
     {\tt 'LKEY'} \> {\tt (L)} \>
        \parbox[t]{11cm}{
        一時停止しているときに, キーボードからの指定を有効にするか
        どうかを指定する.
        {\tt .TRUE.}なら有効にする;
        {\tt .FALSE.}なら有効にしない
        (省略値は {\tt .TRUE.}).
        \rule[-1ex]{0ex}{1ex}} \\
      \> \> \makebox[3cm][r]{ SP, RETURN :}
          \makebox[6.5cm][l]{次ページに進む. } \\
      \> \> \makebox[3cm][r]{ {\tt s} :}
          \makebox[6.5cm][l]{{\tt 'LWAIT'を.FALSE.} にする.} \\
      \> \> \makebox[3cm][r]{ {\tt w} :}
          \makebox[6.5cm][l]{{\tt 'LWAIT'を.TRUE.} にする.} \\
      \> \> \makebox[3cm][r]{ {\tt d} :}
          \makebox[6.5cm][l]{ダンプファイルを作成する.} \\
      \> \> \makebox[3cm][r]{ {\tt q} :}
          \makebox[6.5cm][l]{実行を中止する.
        \rule[-1ex]{0ex}{1ex}} \\
      {\tt 'BITMAP'} \> {\tt (C)} \>
        \parbox[t]{11cm}{
        ビットマップを収めたファイル名.
        標準ライブラリにおける値は{\tt 'bitmap'}.
        \rule[-1ex]{0ex}{1ex}}
    \end{tabbing}

    \vspace{1em}
    {\bf [ポータブルドキュメントファイル(PDF)に関するパラメーター]}

    \vspace{1em}
    \begin{tabbing}
      1234567890 \= 1234 \=                                         \kill
      {\tt 'LSEP'} \> {\tt (L)} \>
        \parbox[t]{11cm}{
        出力ファイルを1ページごとに分割して出力するかどうかを指定する.
        {\tt .TRUE.}なら分割する;
        {\tt .FALSE.}なら分割しない
        (省略値は {\tt .FALSE.}).
        \rule[-1ex]{0ex}{1ex}} \\
      {\tt 'RLWFACT'} \> {\tt (R)} \>
        \parbox[t]{11cm}{
        PDF出力時の線の太さに掛けるファクタ．
        {\tt 999.}は，特殊な指定で，紙面のサイズに対してDISPの線の太さと同じ太さ比率になるように
        自動的にファクタを設定する．
        (省略値は {\tt 0.2}).
        \rule[-1ex]{0ex}{1ex}} \\
    \end{tabbing}
    \end{quote}

  \item 備考
    \begin{enumerate}
       \item 内部変数を管理するための下請けルーチンとして
             以下のものがある.
             ここではサブルーチン名をあげるにとどめる.
         \begin{quote}
           \begin{tabular}{lllll}
              {\tt SWPQNP} & {\tt SWPQID} & {\tt SWPQCP} &
              {\tt SWPQVL} & {\tt SWPSVL} \\
              {\tt SWCQNP} & {\tt SWCQID} & {\tt SWCQCP} &
              {\tt SWCQVL} & {\tt SWCSVL}
           \end{tabular}
           \end{quote}
         \item \SWPGET は上に述べた{\tt SWPQID}を呼んで
            内部変数の位置を求め, {\tt SWPQVL}によって値を参照する;
            \SWPSET は{\tt SWPQID}を呼んで内部変数の位置を求め,
            {\tt SWPSVL}によって値を設定する.
            したがって指定した内部変数名が見つからないとき,
            エラーメッセージは{\tt SWPQID}が出力する.
         \item {\tt SWCGET} は上に述べた{\tt SWCQID}を呼んで
            内部変数の位置を求め, {\tt SWCQVL}によって値を参照する;
            {\tt SWCSET}は{\tt SWCQID}を呼んで内部変数の位置を求め,
            {\tt SWCSVL}によって値を設定する.
            したがって指定した内部変数名が見つからないとき,
            エラーメッセージは{\tt SWCQID}が出力する.
    \item {\tt IPARA}としては適切な型の定数または変数を指定すること.
    \end{enumerate}

\end{enumerate}

\subsection{使用例}

以下では, 電脳ライブラリが標準的に提供する図形出力装置
(DISP,FILES)に対する
使用例をいくつか紹介する.

\begin{itemize}
  \item {\bf \TeX で図を貼る:}
    \begin{quote}
	{\tt grphicx} モジュールなどで図を貼ることができる.
	{\tt PDF,eps,png} のどれでも貼ることができるが
	{\tt PDF} の場合、{tt \TeX} によっては{\tt Bounding Box}
	が決定できないエラーが出ることがある.その場合は
	{\tt --shell-escape}のオプションをつけてコンパイルすると
	うまく行くことがある.もしくはソースに{\tt bb}を指定することでも
	よいはずである.
    \end{quote}
  \item {\bf X でマウスを使わずにコントロールする:}
    \begin{quote}
	{\tt 'LKEY'=.TRUE.} を指定し, さらに,
	kterm などのターミナルエミュレータと描画ウインドウの一部が
        重なるように {\tt 'IPOSX'}, {\tt 'IPOSY'} を指定して,
        そこにあらかじめマウスカーソルを
	移動させておくと, キーボードから手を離さずに操作できる.
    \end{quote}

  \item {\bf アニメーション作成 (その1):}
    \begin{quote}
	1ページの画面が比較的短時間で用意できる場合は,
	{\tt 'LALT'=.TRUE.}, {\tt 'LWAIT'=.FALSE.} とすることで,
	アニメーション表示が可能になる.
    \end{quote}

  \item {\bf アニメーション作成 (その2):}
    \begin{quote}
	上記の方法では遅い場合,
	{\tt 'LDUMP'=.TRUE.} とするか FILESを利用して png ファイルなどを作成し,
	animate やビデオ作成ユーティリティーなどを使って
	アニメーションを作成する.
        \vspace{0.5em}
  {\tt 'LSTDOT'=.TRUE.}, {\tt 'IFL'=1} とすれば pngが標準出力に
  出力される．これをパイプで avconv などのアニメーションを作るツールで
  受け取ることで，中間ファイルを作成することなく，アニメーションを作成可能
  である．このようにすればメモリは少なくすみ，作成速度も速くなる．
  標準出力には他に何も出力してはいけない. ｛\tt WRITE｝などは取り除く必要がある．

	{\tt 'LWAIT', 'LWAIT0', 'LWAIT1'} をすべて {\tt .FALSE.}
	ば, 自動的にファイルを作成することが可能である
    \end{quote}


  \item {\bf 長時間ジョブのモニター:}
    \begin{quote}
	数値実験などの長時間ジョブのモニターとして,
	X サーバーを使うことも可能だが,
	連番ファイルに出力する方が, 常時監視する必要もなく,
	前後の比較などもできて便利である.

    \end{quote}

\end{itemize}
