# hop.rb require "narray" require "numru/dcl" include NumRu include NMath nmax = 400 dt = 2*PI/(nmax-1) t = NArray.sfloat(nmax).indgen! * dt x = 1e2*sin(4*t) y = 1e-3*cos(5*t)+6 iws = (ARGV[0] || (puts ' WORKSTATION ID (I) ? ;'; DCL::sgpwsn; gets)).to_i DCL::gropn iws DCL::grfrm DCL::ussttl('X-TITLE', 'x-unit', 'Y-TITLE', 'y-unit') DCL::usgrph(x, y) DCL::grcls T = DT*(N-1)
X(N) = 1.E 2*SIN(4.*T) Y(N) = 1.E-3*COS(5.*T) + 6.
10 CONTINUE
*- グラフ -- WRITE(*,*) ' WORKSTATION ID (I) ? ;' CALL sgpwsn READ (*,*) IWS NumRu::DCL.gropn(iws) CALL grfrm NumRu::DCL.ussttl(cxttl,cxunit,cyttl,cyunit) NumRu::DCL.usgrph(x,y) CALL grcls ENDprogram hop
コマンドラインで
% ruby hop.rbといれると,
WORKSTATION ID (I) ? ;ときいてきます. プログラムの17行めでメソッド(元サブルーチン) sgpwsn を呼んだ ので, このように今の環境で利用可能な図形出力装置のリストが書き出されま す.
1:X, 2:PS, 3:Tek ;
この場合, 3つの出力先が可能です. X ウインドウシステムが起動されている
状態で1を入力すると, ウインドウがひとつ現れます. マウスクリックでウイ
ンドウの位置を確定すると, 描画がはじまり下のようなグラフが得られます.
このとき, 次の警告メッセージが出ると思いますが, 特に気にする必要はあり
ません. 図形表示の終了はまたマウスクリックで行ないます.
*** WARNING (stswtr) *** WORKSTATION VIEWPORT WAS MODIFIED.
一方, 2 (PS)を指定すると, カレントディレクトリに dcl.ps というポストス
クリプトファイルができます. そこで,
% lpr dcl.psと入力すれば, ポストスクリプトプリンタに結果が出力されます. また, 3 (Tek)を指定するとテクトロ端末で描画ができます.