次のプログラム例 u1d1 では, x 方向には [1945, 1995] の範囲で等 間隔に点をとり, y 方向には配列yで与えられた座標値を結んで折れ 線を描きます. 25行めの usgrph ルーチンで x を指定するかわ りに rundef を指定する(つまり, x は定義されていないと宣言 する)と, usgrph は x 座標値がウインドウの幅いっぱいに等間隔に ならんでいるものと解釈してグラフを描きます. このとき, usgrph が 呼ばれる前に x 方向のウインドウは決まっていないといけませんから, grswnd ルーチンで x 方向だけを陽に与えています. ここでも, y 方向は未定義にして, 正規化変換の確定は usgrph におまかせします. なお, rundef の値は, 13行めの glrgetルーチンで参照していま す.
# u1d1.rb require "narray" require "numru/dcl" include NumRu include Math nmax = 51 xmin = 1945 xmax = 1995 y = NArray.sfloat(nmax) #-- data ---- y0 = 0.5 for n in 0..nmax-1 y[n] = 5.0*y0 + 10.0 y0 = 3.7*y0*(1.0-y0) end rundef = DCL::glrget('RUNDEF') #-- graph ---- iws = (ARGV[0] || (puts ' WORKSTATION ID (I) ? ;'; DCL::sgpwsn; gets)).to_i DCL::gropn iws DCL::grfrm DCL::grswnd(xmin, xmax, rundef, rundef) DCL::ussttl('TIME', 'YEAR', 'TEMPERATURE', 'DEG') DCL::usgrph(rundef, y) DCL::grclsprogram u1d1