No.82-1 |
DOS/Vあるいは95 PIPSで4連用紙でラベル印刷したい |
回答者 高橋 周助 |
1998年10月 201号 P.12 |
◆ No.82(1998年8月号)の回答-1
-
B-Aブロック.データ読み込み:バインダの項目名を適切に指定してください。
-
B-Bブロック.印刷用データの編集:項目にあわせて、ご希望どうりの編集をしてください。
サンプルプログラムでは、最低のエッセンスだけにしてありますが、いくらでも複雑な編集ができます。凝り性の元山さんのことですから、深みにはまらないか心配です。
-
サブプログラムでは、LFの行数を適正にきめて、縦方向の行位置を調整してください。
なお、ESC/Pモードで、縦倍角・4倍角を印刷すると、行ピッチにズレが生じます。適正な補正をしてください。詳細が必要なら、ご相談ください。
1 <4連ラベル> 1998.8.19
2 /******* A.準備 *****************************************************/
3 LET V40=";顧客名簿";; /*バインダ名*/
4 LET X10= 0; /*ラベル番号初期化。 左側から 1 → 2 → 3 → 4 */
5 LET X26= 0; /*印刷済みレコード件数*/
6 LET X27=10; /*左余白桁数 */
7 LET X28=40; /*ラベル横間隔 */
8 /******* B.実行 *****************************************************/
9 DISP OPEN,[18,3],";◆ ◆ ◆ 宛名ラベル 印刷中 ◆ ◆ ◆";;
10 FOR X1=1 TO BINDER(V40);
11 G;%V40/%X1;
12 IF T<H THEN CONTINUE;
13 FOR X2=H TO T;
14 /*** B-A.データ読み込み *************************************/
15 CLEAR V11,19;
16 LET V11=[X2,@郵便番号 ];
17 LET V12=[X2,@住所1 ]; IF V12=";"; THEN CONTINUE;
18 LET V13=[X2,@住所2 ];
19 LET V14=[X2,@氏名 ]; IF V14=";"; THEN CONTINUE;
20 LET V15=[X2,@敬称 ];
21 LET X10=X10+1; IF X10=5 THEN LET X10=1;
22 /*** B-B.印刷用データ編集 *************************************/
23 IF X10=1 THEN CLEAR V21,29;
24 LET X11=X28-LEN(V11); LET V21=V21+V11+STRING$(32,X11);
25 LET X12=X28-LEN(V12); LET V22=V22+V12+STRING$(32,X12);
26 LET X13=X28-LEN(V13); LET V23=V23+V13+STRING$(32,X13);
27 LET X14=X28-LEN(V14)-1-LEN(V15);
28 LET V24=V24+V14+"; ";+V15+STRING$(32,X14);
29 /*** B-C.ラベル印刷 *****************************************/
30 IF X10=4 THEN GOSUB 4連ラベルSUB;
31 NEXT;
32 NEXT;
33 /******* B-D.未印刷データが 残った場合の 最終印刷 ***************/
34 IF X10<>0 AND <>4 THEN GOSUB 4連ラベルSUB;
35 /******* Z.終わり ***************************************************/
36 $終:CLOSE; STOP;
37
38 <4連ラベルSUB>
39 PRINT LF2;
40 PRINT SP%X27,V21,LF;
41 PRINT SP%X27,V22,LF;
42 PRINT SP%X27,V23,LF;
43 PRINT SP%X27,V24,LF4;
44 LET X26=X26+X10;
45 DISP CLR,[18,3],";印刷済みラベル枚数: ";,X26,"; 枚";;
46 RETURN;
|
|
|