【 質問箱 No.98 回答 】その2. ⇒⇒⇒⇒ 質問箱 No.98(99年 7月号)の趣旨 質問者:野 崎 武 治 <DMで特定列をWindowsプリンターに倍角で出力したい> 【プログラム】 回答者:待 場 純 <ラベル印刷> 1999.8.12 BY J.MAT ACCEPT /P"バインダーは?",V9; LET X22=BINDER(V9); /* ラベル様式のセット ---------------------------------------------------*/ SET;S;M;1;180;;Y; O; LABEL-FMT-作業様式;ESC; LET L1="$S";LET L2="$E"; S; G;★LABEL-FMT/1; /* 2連に設定 */; CPC;1;1; S; CPR;SA;2; P;★LABEL-FMT-WORK/1; /* ラベルは、2連5枚でX26=10ピース */; LET X26=10; /* 倍角にする対象列は、3列目 */; LET X39=4; /*------------------------------------------------------------------------*/ /* 10行単位で処理をするルーチン部 */ G;%V9/1; /* 行の初期位相☆X4 */; LET X4=H; /* 初期値 DATA COUNTER X5,複写開始行 X23 */; LET X5=1; LET X23=X4; /* ----- 受皿フォーマットの作成 -----*/ DR;A;; /* 新たに設定する横幅設定→ */; INFO;S; 500; IR;S;H;%X26; S; /* DATA COUNTER */; LET X17=0; FOR X1=1 TO X22; G;%V9/%X1; IF STATUS(1,1)=1 THEN LET X17=X17+T-H+1; /* 次頁を呼出す */; IF X1T) THEN CONTINUE; /* 最終P処理 */; IF X1=X22 AND (STATUS(1,1)=0 OR H>T) THEN GOTO $処理; /* 正常頁 X24開始行*/;LET X23=H;IF STATUS(1,1)=1 AND H<=T THEN GOTO $反復; /* 最終PにDATAがないときは印刷して終了する */ IF (X5-1)MOD(X26)>0 THEN GOTO $反復 ELSE CONTINUE; $反復: /*頁の最終行 X6 */; LET X6=T; /* 複写先行 X27 */; LET X27=(X5-1)MOD(X26)+X4; /* 余り行数の比較 M=X13 */; LET X13=T-X23+1; /* S=X14 */; LET X14={T}-X27+1; /* コピー行数 X30元の表の余行 > 受皿の残行なら受皿残行分のみ複写 */; IF X13>=X14 THEN LET X30=X14 ELSE LET X30=T-X23+1; /* 複写終了行 X25 */; LET X25=X23+X30-1; /*-- メインルーチン CPB M-->S --*/; CPB; %X23,1; %X25,T; S%X27,1; /* 次の通算番号 X5 */; LET X5=X5+X30; /* 次の開始行 X23 */; IF X13=X14 OR X25=X6 THEN LET X23=X4 ELSE LET X23=X23+X30; $処理:/*- 受皿が満杯かDATAがなければサブ画面を印刷する -*/; IF (X1=X22 AND X25=X6) OR (X5-1)MOD(X26)=0 THEN GOTO $LABEL印刷; /*- 受皿が満杯になるまで複写作業を反復継続する -*/; GOTO $反復CK; /*- ラベル印刷処理 -------------------------------------------------------*/ $LABEL: FOR X1=H TO T; LET V3=[X1,X39]; IF V3="=*-*" THEN CONTINUE; LET [X1,X39]=FORM$(V3,8); NEXT; P;★WORK/1; G; ★LABEL-FMT-WORK/1; DM; G;★WORK/1; /*-------------------------------------------------------------------------*/ LET X31=X31+1; S; IF X1=X22 AND X25=X6 THEN CONTINUE; /*受皿のクリアと再セット */; FILL;;A;A;; S; $反復CK: IF X25