一刻も早く計算結果のグラフが見たい!!
そんな時 USGRPH は,
たったの 1 行 (GROPN等を含めて 4 行)
でデータをグラフ化してくれる.
しかも, uspk01.f の様に意地の悪いデータが与えられても,
Y 軸に 1.00005 等という不細工なラベルを付けて,
ラベルが描画範囲を越えてしまう様なことはない.
USGRPH は与えられたデータから適当な目盛間隔や
ラベルの間隔を求めて座標軸を描くが,
この時のラベルの文字数が大きすぎる場合には,
この例のようにファクター値やオフセット値を適当に選んで軸の端に表示し,
ラベルが適当な文字数におさまるようにする.
この最大文字数は
USpGET/USpSET
が管理する内部変数 'MXDGTX'/'MXDGTY'
により設定できる.
この例では, GRPH1/GRPH2 を使う時のお作法である変換関数の設定に
関するルーチン群が見あたらない.
というのは, USGRPH がその内部で,
与えられたデータから適当な変換関数を設定しているからである.
(具体的に, 内部でおこなわれている動作に関しては,
次節以降でおりにふれ説明する. )
なお, 添字には少し小さな字を使うので,
分解能の低いワークステーションではこの添字が識別できないことがあるが,
そのような時には GROPNの後に
CALL SGLSET('LCNTL', .FALSE.)
を入れると, 添字を使わない表現になる.
この内部変数 'LCNTL'は,
SGTXU などで上つき下つきなどの
制御コードを有効にするかどうかを指定するものであるが,
USGRPH はこの内部変数 'LCNTL'
を調べて適切な表現をする.
なお, 'LCNTL' の標準値は .FALSE.であるが,
GROPNの内部で.TRUE.に設定されている.
また, データの変化がデータ自身の大きさに比べて小さすぎて,
計算誤差程度しかない時は, これを定数と見なし,
この定数と 0 を含む様にスケーリングする.
(この計算誤差は,
GLpGET/GLpSET
が管理する内部変数 'REPSL' をもとに判断する.)
さらに, データが全て 0 の場合には最大値・最小値をそれぞれ
-1, 1 とする.