# 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  
    END   
     
program 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)を指定するとテクトロ端末で描画ができます.