7.1 フレームの分割

同じ様な図形を沢山並べたい時, GROPN のあとで SLDIVルーチン を呼ぶと, 第1レベルめ(用紙全体)のフレームが分割され, 次のレベルのフレー ムが定義されます. 分割されたフレームをあたかも1枚の紙のように扱って, GRFRM の実行により, 次のフレームに自動的に移っていきます.

次のプログラム LAY1 では, DO 20 のループの中で, 普通に改 ページをしながら描画するのと同じように, GRFRMUSGRPH を 呼んで折れ線グラフを描いています. 21行めの SLDIV ルーチンでは 3×2=6分割していますから, 7番めの図は自動的に次のページに移って います. また, 第5.2節の出力結果と比較して, 文字の大きさが 分割されたフレームの大きさに応じて小さくなっていることにも注意して下さ い.

      PROGRAM LAY1 
 
      PARAMETER( NMAX=401, JMAX=51 ) 
      REAL Y(NMAX), YY(JMAX) 
  
*- データ -- 
      Y0 = 0.5 
      DO 10 N=1,NMAX 
        Y(N) = 5.*Y0 + 10. 
        Y0   = 3.7*Y0*(1.-Y0) 
   10 CONTINUE 
 
      CALL GLRGET( 'RUNDEF', RUNDEF ) 

*- グラフ -- 
      WRITE(*,*) ' WORKSTATION ID (I)  ? ;' 
      CALL SGPWSN 
      READ (*,*) IWS 
  
      CALL GROPN( IWS ) 
      CALL SLDIV( 'Y', 3, 2 ) 
  
      DO 20 I=1,8 
        CALL GRFRM 
 
      IJMIN = (I-1)*(JMAX-1) + 1 
      IJ = IJMIN 
      DO 30 J=1,JMAX 
        IJ = IJ + 1 
        YY(J) = Y(IJ) 
 30   CONTINUE 
      XMIN = IJMIN + 1599 
      XMAX =  XMIN + JMAX - 1 
  
      CALL GRSWND( XMIN, XMAX, RUNDEF, RUNDEF ) 
      CALL USSTTL( 'TIME', 'YEAR', 'TEMPERATURE', 'DEG' ) 
      CALL USGRPH( JMAX, RUNDEF, YY ) 
 20   CONTINUE 
 
    CALL GRCLS 
 
    END 
 
PROGRAM LAY1

\resizebox{10cm}{!}{\includegraphics{layout/lay1_001.eps}}
lay1.f: page1

\resizebox{10cm}{!}{\includegraphics{layout/lay1_002.eps}}
lay1.f: page2