質問箱 No.61: 宛名ラベルの無駄を排除したい

      ◆ 質問箱 No.61 質問者:  藤原 良允  1997年09月 188号 P.20
          ◆ 質問箱 目次へ
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;
プログラムの部分はプログラム集に収録されています

戻る