5.2 f(ix)

次のプログラム例 U1D1 では, x 方向には [1945, 1995] の範囲で等 間隔に点をとり, y 方向には配列Yで与えられた座標値を結んで折れ 線を描きます. 25行めの USGRPH ルーチンで X を指定するかわ りに RUNDEF を指定する(つまり, X は定義されていないと宣言 する)と, USGRPHx 座標値がウインドウの幅いっぱいに等間隔に ならんでいるものと解釈してグラフを描きます. このとき, USGRPH が 呼ばれる前に x 方向のウインドウは決まっていないといけませんから, GRSWND ルーチンで x 方向だけを陽に与えています. ここでも, y 方向は未定義にして, 正規化変換の確定は USGRPH におまかせします. なお, RUNDEF の値は, 13行めの GLRGETルーチンで参照していま す.

      PROGRAM U1D1

      PARAMETER( NMAX=51, XMIN=1945, XMAX=1995 )
      REAL Y(NMAX)

*- データ --
      Y0 = 0.5
      DO 10 N=1,NMAX
        Y(N) = 5.*Y0 + 10.
        Y0   = 3.7*Y0*(1.-Y0)
   10 CONTINUE

      CALL GLRGET( 'RUNDEF', RUNDEF )

*- グラフ --
      WRITE(*,*) ' WORKSTATION ID (I)  ? ;'
      CALL SGPWSN
      READ (*,*) IWS

      CALL GROPN( IWS )
      CALL GRFRM

      CALL GRSWND( XMIN, XMAX, RUNDEF, RUNDEF )
      CALL USSTTL( 'TIME', 'YEAR', 'TEMPERATURE', 'DEG' )
      CALL USGRPH( NMAX, RUNDEF, Y )

      CALL GRCLS

      END
PROGRAM U1D1

\resizebox{10cm}{!}{\includegraphics{u1d/u1d1.eps}}
u1d1.f: frame1