座標軸は 'B', 'T', 'L', 'R' で指定する 以外のところにも描くことができます. また, 軸の表現もいろいろ変えられま す(UXYZ7).
PROGRAM UXYZ7
WRITE(*,*) ' WORKSTATION ID (I) ? ;'
CALL SGPWSN
READ (*,*) IWS
CALL GROPN( IWS )
CALL GRFRM
CALL GRSWND( 1990., 1995., -2.0, 2.0 )
CALL GRSVPT( 0.2, 0.8, 0.3, 0.7 )
CALL GRSTRN( 1 )
CALL GRSTRF
CALL UZRSET( 'UYUSER', 0. )
CALL UZLSET( 'LBTWN', .TRUE. )
CALL UXSFMT( '(I4)' )
CALL UXAXDV( 'U', 0.25, 1. )
CALL UZLSET( 'LBTWN', .FALSE. )
CALL UXSTTL( 'U', 'YEAR', 1. )
CALL UZISET( 'INNER', -1 )
CALL UYSFMT( '(F4.1)' )
CALL UYAXDV( 'L', 0.25, 1. )
CALL UYSTTL( 'L', 'S.O.Index', 0. )
CALL UXMTTL( 'T', 'UXAXDV/UYAXDV', 0. )
CALL GRCLS
END
座標軸をウインドウ・ビューポートの境界線以外のところへ描きたいときには,
場所をあらわす引数としてユーザー指定の座標軸 'U' を指定します.
この例では UXAXDV と UXSTTL のサブルーチンで 'U' を
指定して, 座標軸とタイトルを描いています. 具体的にどこに軸を描くかは,
UZRSET ルーチンを用いて, x軸については内部変数 'UYUSER'
の値を, y軸については内部変数 'UXUSER' の値を指定ます. この例
の場合, 'UYUSER' を0.0と指定することによって, U-座標系でみたy座標の値が0.0のところにユーザー指定のx軸を描きます.
また, この例のx軸では, 目盛と目盛の間にラベルを描いてみました. UZLSET ルーチンで内部変数 'LBTWN' を .TRUE. とすれば, 目
盛と目盛の間にラベルを描きます. ただし, 注意すべきことは, ほかの座標軸
を描くときにもこの設定が影響しますので, ラベルを描き終ったら .FALSE.(初期値)に戻しておく必要があります.
さらに, 17行めの UXSFMT ルーチンによってフォーマットを '(I4)' と陽に指定しています. これは, デフォルトでは有効数字3桁で数値
を表現するフォーマットとなっているためで, 4桁目までちゃんと表現する必
要があるときには, このようにユーザーがフォーマットを指定しなければなり
ません.
y軸では, UZISET で内部変数 'INNER' を-1に設定して, 目 盛を外向きにつけました. (初期値は1で, 内向きに目盛をつけます.) また, UYSFMT ルーチンによってフォーマットを '(F4.1)' と陽に指定し ました.