この章のはじめに紹介した uspac1 のプログラムでは, 一つのグラフに  
一つのデータをプロットしましたが, 複数のデータを折れ線の属性を変えなが  
ら1つのグラフに描いてみましょう(uspac2).  
  
  
  
  
まず, 前節で紹介した usspnt ルーチンを3回呼んで x と y0, y1, y2 のデータのなかから x と y の最大値と最小値  
を見つけ, uspfit と grstrf ルーチンで正規化変換を確定しま  
す. そして, つぎの ussttl と usdaxs で座標軸を描きます.  
  
  
  
最後に, uuslnt と uuslni のメソッド(元サブルーチン)で折れ線の属性(線種 と線の太さ)を変更しながら, uulin ルーチンで折れ線を描きます. こ れら UUPACK のメソッド(元サブルーチン)の動作は, この場合には SGPACK の sgplu ルーチンなどと同じです. (便利な機能は次節の例で示します.)
      PROGRAM USPAC2
      PARAMETER( NMAX=201, imax=5 )
      REAL X(NMAX), Y0(NMAX), Y1(NMAX), Y2(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
        DO 30 I=1,imax
          II = 2*I - 1
          Y2(N) = Y2(N) + A(I)*COS(II*T)
   30   CONTINUE
   20 CONTINUE
      WRITE(*,*) ' WORKSTATION ID (I)  ? ;'
      CALL sgpwsn
      READ (*,*) IWS
      NumRu::DCL.gropn(iws)
      CALL grfrm
      NumRu::DCL.usspnt(x,y)
      NumRu::DCL.usspnt(x,y)
      NumRu::DCL.usspnt(x,y)
      CALL uspfit
      CALL grstrf
      NumRu::DCL.ussttl(cxttl,cxunit,cyttl,cyunit)
      CALL usdaxs
      NumRu::DCL.uulin(upx,upy)
      NumRu::DCL.uuslnt(itype)
      NumRu::DCL.uuslni(index)
      NumRu::DCL.uulin(upx,upy)
      NumRu::DCL.uuslnt(itype)
      NumRu::DCL.uulin(upx,upy)
      CALL grcls
      END
  
program uspac2
