No.61-2 |
宛名ラベルの無駄を排除したい |
回答者 藤原 良允 |
1997年12月 191号 P.20 |
◆ No.61(1997年 09月号)の回答-02 (P-4G)(自問自答)
高橋周助さんが、11月号に回答を寄せて下さいました。有り難うございました。私の希望事項がすべて満たされておりまして、感謝しております。実は、私もなんとかしなければと思って、辿り着いた結論は、ほとんど同じでした。違う点は、私の場合、左ラベルに印字するデータを書き込む列と、右ラベルに印字するデータを書き込む列を持ったフォーマットを、あらかじめ用意し、そのフォーマットに書き込んで、Lコマンドで印字するというところです。
その、スーパーPIPS用の自作のプログラムを掲げさせて頂きます。
1 <ラベル> /* サブバッファーに、左1件、右1件のデータを配置し印字 */
2 DISP OPEN,SCLR;
3 LETV1="顧客管理"; LETX13=BINDER(V1);LETV2=NUM$(X13);
4 $スタート1: DISP [01,01]"==========================================";
5 DISP [01,02]"ラベルに宛名をプリントするプログラムです。";
6 DISP [01,03]"顧客管理バインダーの頁を指定して下さい。 ";
7 DISP [01,04]"1頁に29件の顧客が登録されています。 ";
8 DISP [01,05]" 現在頁数 1 〜 "+V2+" です。 ";
9 DISP [01,06]"==========================================";
10 DISP [01,20]" 中止は「SSキー」+「F1キー」+HOMEキー」です。";
11 $INP1: DISP [05,07]"開始ページは? [ ] ";
12 DISP [05,08]"終了ページは? [ ] ";
13 INPUT [23,07]X11 USING NNN; DISP [23,07]Xl11 USING >>>>;
14 IF X11<=0 THEN GOTO INP1; IF X11>X13 THEN GOTO INP1;
15 INPUT[23,08]X12 USING NNN; DISP [23,08]X12 USING >>>;
16 IF X11>X12 THEN GOTO INP1;
17 IF X12>X13 THEN GOTO INP1 ELSE GOTO INP2;
18 $INP2: DISPCLR;
19 DISP [01,01]"===========================================";
20 DISP [01,02]"ラベルに宛名をプリントするプログラムです。 ";
21 DISP [01,04]"8吋(巾)×10吋(ミシン目からミシン目迄)で、 ";
22 DISP [01,05]"6面2列の宛名ラベル用紙をセットして下さい。 ";
23 DISP [01,07]"===========================================";
24 DISP [01,20]" 中止は「SSキー」+「F1キー」+「HOMEキー」です。";
25 $セット: DISP [01,08]"セットしましたか? Y/N [ ] ";
26 INPUT[27,08]V30 USING R;
27 IF V30="Y"THEN GOTO 印字 ELSE GOTO セット;
28 $印字: LETV29="左";LETX3=1;LETX21=4;PRT;9121415C;/*10吋 紙送り */
29 G;ラベル印字FMT/2;
30 SB;
31 FOR X1=X11 TO X12;
32 G;顧客管理/%X1;
33 CJ;A;H;A;14;F;L;A;14;HOME; /* 顧客名の全角文字を半角に変換 */
34 FOR X2=H TO T;
35 LETV11="";LETV12="";LETV13="";LETV14="";LETV15="";
36 LETV11=[X2,@〒 ]; LETV12=[X2,@住所 (1) ];
37 LETV13=[X2,@住所 (2) ];
38 LETV14=[X2,@顧客名 ]; LETV15=[X2,@敬称 ];
39 LETV14=V14+" "+V15;
40 IF V29="左" THEN GOTO 左 ELSE GOTO 右;
41 $左: GOSUB左カク; GOTO次1;
42 $右: GOSUB右カク; GOTO次1;
43 $次1: LETX3=X3+1;IF X3=3 THEN GOTO プリント ELSE GOTO 次2;
44 $プリント:DISP CLR;
45 DISP [01.01]"========================================";
46 DISP [01,02]"只今プリントしているのは下記の顧客です。";
47 DISP [01,03]"========================================";
48 DISP [01,20]" 中止は「SSキー」+「F1キー」+「HOMEキー」です。";
49 LETV16={07,01}; LETV17=[07,03};
50 DISP [01,05]"左列のラベル → ",V16;
51 DISP [01,07]"右列のラベル → ",V17;
52 SB;
53 CJ;A;Z;4;1/3;F;L;4;1/3;HOME;
54 PRT;9B3138303B2047; L;D;N;N;N;4,7;A;180;77;A;0;1;A;0;0;G;;
55 FILL;4,7;1,3; ; PRT;9B34383065; LETX3=1;
56 SB;
57 $次2: NEXT;
58 NEXT;
59 $終了: LETV16={07,01}; IF V16 <>"" THEN GOTO 終P;
60 $終P: SB;
61 DISP CLR;
62 DISP [01,01]"========================================";
63 DISP [01,02]"只今プリントしているのは下記の顧客です。";
64 DISP [01,03]"========================================";
65 DISP [01,20]" 中止は「SSキー」+「F1キー」+「HOMEキー」です。";
66 DISP [01,05]"左列のラベル → ",V16;
67 CJ;A;Z;4;1/3;F;L;4;1/3;HOME;
68 PRT;9B3138303B2047; L;D;N;N;Y;4,7,A,180;77;A;0;1;A;0;0;G;;
69 SB;
70 $ケイカ: DISP CLR;
71 DISP [01,01]"============================================";
72 DISP [01,02]X11,"頁から",X12,"頁までのプリント完了しました。";
73 DISP [01,03]"============================================";
74 $INP3: DISP [01,04]"終了は Y です [ ]";
75 INPUT[19,04]V30 USING R;
76 IF V30="Y" THEN GOTO E ELSE GOTO INP3;
77 $E: O; ; PRT;0C;
78 PRT;1B63; /*プリンター初期状態に復帰*/
79 STOP;
80 <左カク> /*左列に書き込む*/
81 LET{X21+0,01}=V11; LET{X21+1,01}=V12; LET{X21+2,01}=V13;
82 LET{X21+3,01}=V14; LETV29="右";
83 RETURN;
84 <右カク> /*右列に書き込む*/
85 LET{X21+0,03}=V11; LET{X21+1,03}=V12; LET{X21+2,03}=V13;
86 LET{X21+3,03}=V14; LETV29="左";
87 RETURN;
|
|
| |