GRPH2 のパッケージには USPACK, UMPACK などのように,
変換メソッド(元関数)のパラメタ (ウィンドウなど) を自動的に決める
パッケージがいくつかある.
これらのパッケージを使うと, 細かなパラメタを気にすることなく,
与えられたデータをグラフ化することができて便利であるが,
システムが決めるパラメータが全ての目的に最適である訳ではない.
パラメタの一部をユーザーが指定することで,
最終的な図の品質が各段に向上することも少なくない.
このように「一部のパラメタをユーザーが指定する」ことを
可能にするためには,
システムが「ユーザーがどのパラメタを陽に指定したか」ということを
知る必要がある.
そのために GRPH2 では, 欠損値と同様に「未定義値」を導入する.
この「未定義値」は glpget/glpsetによって管理される 'RUNDEF',
'IUNDEF' である.
具体的な手続きとしては,
1 の「未定義値」の代入は GRPACK のgrfrm, grfig を 呼ぶことで行なわれる. したがて, ユーザーは sgrfm の代りにgrfrm を呼び, オートスケーリングルーチンを呼ぶ前に, grswnd/sgswnd などによってパラメタを与えることで 一部のパラメタを陽に指定することができる. grswnd のように複数のパラメタを同時に指定するルーチンで, その中の一部のパラメタだけ陽に指定したい場合には, その他のパラメタに'RUNDEF' のあらわす値を代入しておけばよい. オートスケーリングルーチンは, 指定されているパラメタによって若干異なる動作をする場合がある.
- 1:
- 新しい図を描く前に自動決定可能なパラメタ全てに 「未定義値」を代入する.
- 2:
- オートスケーリングルーチンは, 「未定義値」になっているパラメタのみを自動的に決定する.
例えば, 全てをユーザーが指定する
(オートスケーリングルーチンを使わない) 場合には,
NumRu::DCL.gropn(iws) CALL grfrm NumRu::DCL.grstrn(itr) NumRu::DCL.grsvpt(vxmin,vxmax,vymin,vymax) NumRu::DCL.grswnd(uxmin,uxmax,uymin,uymax) CALL grstrf ........
NumRu::DCL.gropn(iws) CALL grfrm NumRu::DCL.grstrn(itr) NumRu::DCL.usspnt(x,y) CALL uspfit CALL grstrf ........ NumRu::DCL.sgplu(upx,upy) ........
NumRu::DCL.gropn(iws) CALL grfrm NumRu::DCL.grstrn(itr) NumRu::DCL.grswnd(uxmin,uxmax,uymin,uymax) NumRu::DCL.usspnt(x,y) CALL uspfit CALL grstrf ........ NumRu::DCL.sgplu(upx,upy) ........