%表題   らくらくDCL
%
%履歴
%\Drireki{
%         95/04/13 余田 成男
%        }
%

\begin{center}
\fbox{\parbox{14.75cm}{
\fbox{\parbox{14.5 cm}{
\vspace{1em}
\begin{center}
\parbox{13cm}{

{\bf DCLのしくみ 3}

\begin{center}
{\large \bf 根回し型ルーチンと上意下達型ルーチン}
\end{center}

SGPACK の各出力プリミティブにはそれぞれ2種類の描画ルーチンがあります. 
\vspace{1em}

例えば, ポリラインプリミティブでは, {\tt SGPLV}, {\tt SGPLU} ルーチン
で折れ線を描くように説明しました. ポリラインの属性は {\tt SGSPLT},
{\tt SGSPLI} などのルーチンで前もって設定しておきました. これらは, い
ろいろ属性を決めておいてから描画ルーチンを呼ぶという「根回し型」のルー
チンです.
\vspace{1em}

これに対して, 属性も同時に指定してポリラインを描画するルーチンも用意さ
れています. 呼び出し方法は, それぞれ,
\begin{quote}
   {\tt CALL SGPLZV(N,VPX,VPY,ITYPE,INDEX)} \\
   {\tt CALL SGPLZU(N,UPX,UPY,ITYPE,INDEX)} 
\end{quote}
です. 引数の {\tt ITYPE} でラインタイプを与え, {\tt INDEX} でラインイ
ンデクスを与えます. これらは, サブルーチンひとつで一度に描いてしまう
「上意下達型」のルーチンです. 
\vspace{1em}

同様に, 他の出力プリミティブも上意下達型のルーチンが用意されています. 
引数の説明は省きますが, 次のように呼び出します. 
\begin{quote} 
   {\tt CALL SGPMZV(N,VPX,VPY,ITYPE,INDEX,RSIZE)} \\ 
   {\tt CALL SGPMZU(N,UPX,UPY,ITYPE,INDEX,RSIZE)} \\ 
   {\tt CALL SGTXZV(VX,VY,CHARS,RSIZE,IROTA,ICENT,INDEX)} \\ 
   {\tt CALL SGTXZU(UX,UY,CHARS,RSIZE,IROTA,ICENT,INDEX)} \\ 
   {\tt CALL SGTNZV(N,VPX,VPY,ITPAT)} \\ 
   {\tt CALL SGTNZU(N,UPX,UPY,ITPAT)} \\ 
   {\tt CALL SGLAZV(VX1,VY1,VX2,VY2,ITYPE,INDEX)} \\ 
   {\tt CALL SGLAZU(UX1,UY1,UX2,UY2,ITYPE,INDEX)} \\ 
   {\tt CALL SGLNZV(VX1,VY1,VX2,VY2,INDEX)} \\ 
   {\tt CALL SGLNZU(UX1,UY1,UX2,UY2,INDEX)}
\end{quote}
\vspace{1em}

他のグラフィクスパッケージでも, GKS の流れは前者の型で, CALCOMP 系のも
のは後者の型です. これまでにどちらかの型に馴染んでいるユーザーは, 好み
の方をお使い下さい.


}
\end{center}
\vspace{1em}
}}
}}
\end{center}
