座標軸は '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 ENDPROGRAM UXYZ7
座標軸をウインドウ・ビューポートの境界線以外のところへ描きたいときには,
場所をあらわす引数としてユーザー指定の座標軸 '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)' と陽に指定し ました.