ここで, プログラム USPAC1 で呼んだ USGRPH サブルーチンがどのようなルーチンで構成されているか, 見てみましょう. 実は,
CALL USGRPH( N, X, Y )というサブルーチン・コールは, 次の5つのサブルーチンを順に呼ぶことと同 じなのです.
CALL USSPNT( N, X, Y )データを自動的にスケーリングするためには, まず, 描きたいデータすべての なかから最大値と最小値を見つける必要があります. サブルーチン USSPNT がこれを行ないます. つぎの USPFIT ルーチンでは, これらの データの最大値・最小値を切りの良い数値に丸めてウインドウを決め, ほかの 正規化変換のパラメータも「おまかせ」で決めます. そして, GRSTRF ルーチンで正規化変換を確定します.
CALL USPFIT
CALL GRSTRF
CALL USDAXS
CALL UULIN( N, X, Y )
ここで, 「おまかせ」の中身を見てみましょう.
まず, MATH1 の SYSLIB パッケージが管理する内部変数 RUNDEF のお話
です. これはDCL全体で使用する内部変数のひとつで, GLRGET/GLRSETルー
チンによって参照/変更できます. RUNDEF は「ユーザーが陽に指定し
ていない」ことを表す実数値で, 「未定義値」と呼びます. 初期値は-999.です.
さて, この未定義値 RUNDEF ですが, GRFRM ルーチンで新しい作 画領域を設定する際に使われます. GRFRM を呼ぶと, ウインドウ, ビュー ポート, および変換関数番号の正規化変換に関する変数に RUNDEF が代 入され, これらが未定義状態になります. ここで, USSPNT と USPFIT を呼ぶと, ウインドウについては最大値・最小値を切りの良い数値に 丸めて設定し, それ以外の未定義状態にある変数には次の初期値を設定します:
ビューポート: (0.2, 0.8, 0.2, 0.8)当然ながら, USPFIT ルーチンの前に GRSWND, GRSVPT, ま たは GRSTRN でこれらの変数を設定していると, それは未定義状態では なくなっているので, その値のまま GRSTRF ルーチンで確定されます.
変換関数番号: 1 (直角一様座標)
GRSTRF ルーチンの次の USDAXS は「おまかせ」で座標軸を描く
ルーチンです. 次章以降で説明する座標軸ルーチンを使っているのですが, す
でに見たように座標軸ラベルがデータに合わせて自動的に付けられます(第
2.1節, quick2.f).
折れ線を描いているのは, UUPACK の UULIN ルーチンです. 基本的には, SGPACK のポリラインプリミティブに対応するものですが, 次節以降で具体的に 見るように別の機能が付け加えられています.