回答箱No.87-1: データの変わり目に横罫線を引きたい

質問箱目次へ戻る       質問箱 No.87へ戻る
No.87-01 データの変わり目に横罫線を引きたい待場 純1998年12月 No.203
質問箱No.87(1998年11月号)の回答-01
  1. 前回の例会で、多少の話題提供にと、以前から使用しているオートのリストを持参したところ、編集者から、回答箱に投稿する様にとの依頼がありました。入川さんから「エレガントな」とクギをさされていたことから、迷ってしまいましたが、参考になればと思い投稿することにしました。
  2. キーブレイク毎に線を引く方法として、ここではDRL指令複数列指定を利用しました。まず、FOR〜NEXTでSORT済みの列をH行目から順番に調べてブレイクの位置を上下のデータの違いから検出します。検出位置をV変数に格納するとともに/を後に付けていきます。
  3. 検出作業が終了したら、DRL指令でV変数の指定どおりに横罫線を引くというもので、IR指令にも応用ができます。 なお、V変数の最後に"/"が余計についていても、正常に機能します。
  4. この方法では、ブレイクの回数が余裕行数を越えられないという制約があり、又、画面上だけで、バインダー対象の処理方法とはなっていません。 そこで、拙作のオート「コンパクトな印刷」を応用して、この制約を受けずに且つ、ワークバインダーも不必要な、処理ルーチンを作成したいと考えているところです。
  5. 蛇足ですが、かつてこのような場合で、ブレイク毎に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;
    

戻る