APDでデータを転送すると罫線のあった行は空白行となります(元のデータには空白行はなかったものとします)。取り敢えず1列目でチェックすることにします。
ここに横罫線を引くわけですが、指令'DRL'を使うと罫線が「挿入」されて行が増えることになります。APDしたときは、行を追加する余地がないと考えるべきでしょうから、この手は使えません。それなら先に空白行を削除しておけば・・・・これなら大丈夫です。
さて、空白行を削除した後に罫線を引く方法ですが、常識的には'DTL'、次に思い付くのは項目行の罫線(H-1行目)を'CPR'で複写する方法です。
<罫線復活1> /* D R L を 使 う */
FOR X1=H TO T;
IF [X1,1]<>"" THEN CONTINUE; /* 空白行でなければスキップ */
DR;%X1;Y; /* 空白行を削除する
*/
DRL;R;%X1;
/* 罫線を引く
*/ NEXT; STOP;
<罫線復活2> /* H - 1 行 を 複 写 す る */
FOR X1=H TO T;
IF [X1,1]<>"" THEN CONTINUE; /* 空白行でなければスキップ */
DR;%X1;Y; /* 空白行を削除する
*/
CPR;H-1;%X1; /* H-1行目を複写する */
NEXT;
STOP;
何れも処理速度があまり速くないので、もう少し何とかならないかと考えた結果が次の方法です。これは空白行を削除しないで罫線を上書きするので、その分少し速くなります。
<罫線復活3> /* L E T 文 で 罫 線 を 書 き 込 む */
LET V1=L%(H-1); /* H-1行目を変数(V1)に取り込んでおく */
FOR X1=H TO T;
IF [X1,1]<>"" THEN CONTINUE; /* 空白行でなければスキップ */
LET L%X1=V1; /* 空白行なら V1 を上書する */
NEXT;
NF;N;;;;; /* 表のフォーマットを正してく */
STOP;
|