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