No.87-01 |
データの変わり目に横罫線を引きたい | 待場 純 | 1998年12月 No.203 |
質問箱No.87(1998年11月号)の回答-01
- 前回の例会で、多少の話題提供にと、以前から使用しているオートのリストを持参したところ、編集者から、回答箱に投稿する様にとの依頼がありました。入川さんから「エレガントな」とクギをさされていたことから、迷ってしまいましたが、参考になればと思い投稿することにしました。
- キーブレイク毎に線を引く方法として、ここではDRL指令複数列指定を利用しました。まず、FOR〜NEXTでSORT済みの列をH行目から順番に調べてブレイクの位置を上下のデータの違いから検出します。検出位置をV変数に格納するとともに/を後に付けていきます。
- 検出作業が終了したら、DRL指令でV変数の指定どおりに横罫線を引くというもので、IR指令にも応用ができます。
なお、V変数の最後に"/"が余計についていても、正常に機能します。
- この方法では、ブレイクの回数が余裕行数を越えられないという制約があり、又、画面上だけで、バインダー対象の処理方法とはなっていません。
そこで、拙作のオート「コンパクトな印刷」を応用して、この制約を受けずに且つ、ワークバインダーも不必要な、処理ルーチンを作成したいと考えているところです。
- 蛇足ですが、かつてこのような場合で、ブレイク毎にPRTのCODEでアンダーラインを引くというオートを組んだことがあり、質問箱の趣旨から離れますが、参考にしていただければ幸いです。
1<LINE>
2 ACCEPT “BREAK 毎にラインを引きます! ライン=L,空白行=B”,V5;
3 IF V5<>"L" AND V5<>"B" THEN STOP;
4 C; ESC; ACCEPT “LINE MAKER 分類済みの列は?",X1;
5 IF X1<1 OR X1>C THEN STOP; IF H>=T THEN STOP;
6 LET V3="";
7 FOR X2=H TO T-1;
8 IF [X2,X1]=[X2+1,X1] THEN CONTINUE; LET V3=V3+NUM$(X2+1)+"/";
9 NEXT;
10 IF V5="L" THEN GOTO $LINE; IR; S;%V3;; ESC; STOP;
11$LINE: DRL; R;%V3; ESC; STOP;
■
|
|