同じ様な図形を沢山並べたい時, SLPACK を使うと非常に簡単にできる.
このプログラムでは横長の用紙を想定して,
SGOPN
で縦位置を選択し,
SLMGN (Sgpack/Layout MarGiN)
でその用紙全体のフレームでマージンをとるように指定している.
さらにマージンを除いた部分を
SLDIV (SL DIVide)
を用いて横3, 縦5に分割し,
その分割された領域のなかでさらにマージンをとる.
分割された領域は縦横比が1ではないので,
SLRAT (SL RATio)
を呼んでマージンをとったあとの領域に最大内接するように
1:1のフレームを設定する.
(このプログラムではSLRAT
を呼ばなくても
SGFRM
が1:1のフレームをとってくれるが,
いつもそのような好運に恵まれるわけではない.
思わぬ結果になることを避けるために,
SLPACK
のルーチンを使う時には常に SLRAT
で縦横比を
指定するようにしていただきたい. )
このように分割されたフレームを GRPH1 ではあたかも1枚の紙のように扱い,
SGFRM
の実行により, 次のフレームに自動的に移っていく.
プログラムの DO ループの中は,
普通に改ページをしながら描画するのと全く同じである.
SLPWWR (SL Plot Workstation Window Rectangular)
はワークステーションウインドを描くユーティリティーであるが,
これが分割されたフレームの中に描かれていることを見れば,
GRPH1 がこの小さなフレームをワークステーションウインドと
見なしていることがわかる.
また SGSVPT
でビューポートを設定しなおした時と違って,
文字の大きさも分割されたフレームの大きさに応じて小さくなっている
ことに注意されたい.
このように,
同じ図形を規則的に並べるのは SLPACK を使うと非常に簡単にできる.
しかし, 大きな図形の横に小さな図形を並べるというようなことは,
SLPACK を使うより SGSVPT
で ビューポート
の設定をしなおした方がよいだろう.
なお, SLDIV
は2回まで呼ぶことができて,
分割されたフレームをさらにもう一度分割することが可能である.
SLPACK では 最初の SLDIV
で分割される前の大きなフレームを第1レベル,
SLDIV
で1度分割された小さなフレームを第2レベル,
さらにSLDIV
で細かく分割されたフレームを第3レベル のフレームと呼ぶ.