次のプログラム STEP1 では, UULIN サブルーチンを用いて4種類       
の折れ線を一枚の図に重ね書きしてみましょう. まず, USSPNTルーチン       
を4回呼んで X と Y0, Y1, Y2, Y3 のデータ       
のなかから x と y の最大値と最小値を見つけ, 「おまかせ」で正規化変       
換を確定して, 座標軸も描きます.       
       
       
       
       
さて, 折れ線の描画ですが, 折れ線には, 線種と線の太さの2つの属性があり       
ます. UUSLNT と UUSLNI のサブルーチンでこれらの属性を変更       
でき, UULIN ルーチンで折れ線を描きます. 属性を陽に変更しなければ,        
それぞれの初期値(デフォルト)がそのまま使われます.       
       
       
       
このプログラム例では, まず初期値のまま (X,Y0) の折れ線を描き, 次 に少し線を太くして, 破線で (X,Y1) を, 点線で (X,Y2) を, そ して1点鎖線で (X,Y3) を描いています.
N (整数型) データ数. X, Y (実数型) 折れ線を結ぶ点の(x,y)座標値 を与える配列. 
ITYPE (整数型) 折れ線の線種. 1:実線, 2:破線, 3:点線, 4:1点鎖線. (初期値は1) 
INDEX (整数型) 折れ線の太さ. 1から大きくなるにつれて太くなる. (初期値は1) 
これらは, 個々のルーチンで属性を決めてから UULIN で折れ線を描く, 「根回し型」のルーチン群です. これに対して, ひとつのサブルーチンで属性 も同時に指定して折れ線を描く, 「上意下達型」のルーチン UULINZ も 用意されています. 好みの方を使って下さい.
  
  
step1.f: frame1      
      
  
      PROGRAM STEP1  
  
      PARAMETER( NMAX=201, IMAX=5 )  
      REAL X(NMAX), Y0(NMAX), Y1(NMAX), Y2(NMAX), Y3(NMAX), A(IMAX)  
  
*- データ --  
      PI = 3.14159  
      DO 10 I=1,IMAX  
        II = 2*I - 1  
        A(I) = (-1)**I *2./(II*PI)  
   10 CONTINUE  
  
      DO 20 N=1,NMAX  
        X(N)  = 1.*(N-1)/(NMAX-1)  
        T     = 2.*PI*X(N)  
        IF(T.LT.PI/2. .OR. T.GE.PI*3./2.) THEN  
          Y0(N) = 0.  
        ELSE  
          Y0(N) = 1.  
        END IF  
        Y1(N) = 0.5 + A(1)*COS(T)   
        Y2(N) = 0.5  
        Y3(N) = 0.5  
        DO 30 I=1,IMAX  
          II = 2*I - 1  
          IF(I .LE. 3) Y2(N) = Y2(N) + A(I)*COS(II*T)  
          Y3(N) = Y3(N) + A(I)*COS(II*T)  
   30   CONTINUE  
   20 CONTINUE  
  
*- グラフ --  
      WRITE(*,*) ' WORKSTATION ID (I)  ? ;'  
      CALL SGPWSN  
      READ (*,*) IWS  
  
      CALL GROPN( IWS )  
      CALL GRFRM  
  
      CALL USSPNT( NMAX, X, Y0 )  
      CALL USSPNT( NMAX, X, Y1 )  
      CALL USSPNT( NMAX, X, Y2 )  
      CALL USSPNT( NMAX, X, Y3 )  
      CALL USPFIT  
      CALL GRSTRF  
  
      CALL USSTTL( 'FREQUENCY', '/DAY', 'RESPONSE', '' )  
      CALL USDAXS  
  
      CALL UULIN( NMAX, X, Y0 )  
  
      CALL UUSLNT( 2 )  
      CALL UUSLNI( 3 )  
      CALL UULIN( NMAX, X, Y1 )  
  
      CALL UUSLNT( 3 )  
      CALL UULIN( NMAX, X, Y2 )  
  
      CALL UUSLNT( 4 )  
      CALL UULIN( NMAX, X, Y3 )  
  
      CALL GRCLS  
   
      END  
 
PROGRAM STEP1