【 質問箱 No.61 の 回答 】 ⇒⇒⇒⇒ 質問箱 No.61(97年 09月号)の趣旨 質問者: 藤 原 良 允 <宛名ラベルの無駄を排除したい> 【プログラム】(P-4G)「自問自答」 回答者:  藤 原 良 允 <ラベル> /* サブバッファーに、左1件、右1件のデータを配置し印字 */ DISP OPEN,SCLR; LETV1="顧客管理"; LETX13=BINDER(V1);LETV2=NUM$(X13); $スタート1: DISP [01,01]"=========================================="; DISP [01,02]"ラベルに宛名をプリントするプログラムです。"; DISP [01,03]"顧客管理バインダーの頁を指定して下さい。 "; DISP [01,04]"1頁に29件の顧客が登録されています。 "; DISP [01,05]" 現在頁数 1 〜 "+V2+" です。 "; DISP [01,06]"=========================================="; DISP [01,20]" 中止は「SSキー」+「F1キー」+HOMEキー」です。"; $INP1: DISP [05,07]"開始ページは? [ ] "; DISP [05,08]"終了ページは? [ ] "; INPUT [23,07]X11 USING NNN; DISP [23,07]Xl11 USING >>>>; IF X11<=0 THEN GOTO INP1; IF X11>X13 THEN GOTO INP1; INPUT[23,08]X12 USING NNN; DISP [23,08]X12 USING >>>; IF X11>X12 THEN GOTO INP1; IF X12>X13 THEN GOTO INP1 ELSE GOTO INP2; $INP2: DISPCLR; DISP [01,01]"==========================================="; DISP [01,02]"ラベルに宛名をプリントするプログラムです。 "; DISP [01,04]"8吋(巾)×10吋(ミシン目からミシン目迄)で、 "; DISP [01,05]"6面2列の宛名ラベル用紙をセットして下さい。 "; DISP [01,07]"==========================================="; DISP [01,20]" 中止は「SSキー」+「F1キー」+「HOMEキー」です。"; $セット: DISP [01,08]"セットしましたか? Y/N [ ] "; INPUT[27,08]V30 USING R; IF V30="Y"THEN GOTO 印字 ELSE GOTO セット; $印字: LETV29="左";LETX3=1;LETX21=4;PRT;9121415C;/*10吋 紙送り */ G;ラベル印字FMT/2; SB; FOR X1=X11 TO X12; G;顧客管理/%X1; CJ;A;H;A;14;F;L;A;14;HOME; /* 顧客名の全角文字を半角に変換 */ FOR X2=H TO T; LETV11="";LETV12="";LETV13="";LETV14="";LETV15=""; LETV11=[X2,@〒 ]; LETV12=[X2,@住所 (1) ]; LETV13=[X2,@住所 (2) ]; LETV14=[X2,@顧客名 ]; LETV15=[X2,@敬称 ]; LETV14=V14+" "+V15; IF V29="左" THEN GOTO 左 ELSE GOTO 右; $左: GOSUB左カク; GOTO次1; $右: GOSUB右カク; GOTO次1; $次1: LETX3=X3+1;IF X3=3 THEN GOTO プリント ELSE GOTO 次2; $プリント:DISP CLR; DISP [01.01]"========================================"; DISP [01,02]"只今プリントしているのは下記の顧客です。"; DISP [01,03]"========================================"; DISP [01,20]" 中止は「SSキー」+「F1キー」+「HOMEキー」です。"; LETV16={07,01}; LETV17=[07,03}; DISP [01,05]"左列のラベル → ",V16; DISP [01,07]"右列のラベル → ",V17; SB; CJ;A;Z;4;1/3;F;L;4;1/3;HOME; PRT;9B3138303B2047; L;D;N;N;N;4,7;A;180;77;A;0;1;A;0;0;G;; FILL;4,7;1,3; ; PRT;9B34383065; LETX3=1; SB; $次2: NEXT; NEXT; $終了: LETV16={07,01}; IF V16<>"" THEN GOTO 終P; $終P: SB; DISP CLR; DISP [01,01]"========================================"; DISP [01,02]"只今プリントしているのは下記の顧客です。"; DISP [01,03]"========================================"; DISP [01,20]" 中止は「SSキー」+「F1キー」+「HOMEキー」です。"; DISP [01,05]"左列のラベル → ",V16; CJ;A;Z;4;1/3;F;L;4;1/3;HOME; PRT;9B3138303B2047; L;D;N;N;Y;4,7,A,180;77;A;0;1;A;0;0;G;; SB; $ケイカ: DISP CLR; DISP [01,01]"============================================"; DISP [01,02]X11,"頁から",X12,"頁までのプリント完了しました。"; DISP [01,03]"============================================"; $INP3: DISP [01,04]"終了は Y です [ ]"; INPUT[19,04]V30 USING R; IF V30="Y" THEN GOTO E ELSE GOTO INP3; $E: O; ; PRT;0C; PRT;1B63; /*プリンター初期状態に復帰*/ STOP; <左カク> /*左列に書き込む*/ LET{X21+0,01}=V11; LET{X21+1,01}=V12; LET{X21+2,01}=V13; LET{X21+3,01}=V14; LETV29="右"; RETURN; <右カク> /*右列に書き込む*/ LET{X21+0,03}=V11; LET{X21+1,03}=V12; LET{X21+2,03}=V13; LET{X21+3,03}=V14; LETV29="左"; RETURN;