4月例会での「質問の説明」で、結構煩わしい仕事を根気よくやっているなあ…と思いました。しかし、PIPSで前処理すれぱ簡単そうに見えて、いざやってみると意外にステップ数が多かったので、驚いています。元の表をそのままExcellに変換して、一太郎で差込印刷に使えれば、それが一番よい方法でしょうね。
元の表は右の表のように縦罫線はないものとします。そして、項目名と列番号も右表の通りとします。また、列桁数は任意で、頁サイズは十分余裕があるものとします。
プログラム<SK1>を実行すると下の表のようになります。
6列目の名前の前にあるは頭にスペースを空けるための仕掛けです。指令WPのグラフィックを使っています。
プログラム<SK2>を実行すると右の表のようになります。
アペンドしてつないだだけですから、グラフィックもまだ残っています。
さらに<SK3>を実行すると左下の表になります。属性を解除してからCUでグラフィックをスペースに置き換えました。
そして項目行も罫線も取り去って「裸」にしてからテキストファイルに変換してあります。
プログラムは3っに分けてありますが、深い意味はありません。一体にして一気に処理すれぱ気楽ですね。
プログラムを作るのは少し面倒でも、一度作れば後は楽を出来るので、これをヒントにして頑張って作りましよう。プログラムは次頁にあります。
差込AUTO
1 <SK1>
2 G;差込印刷/1;
3 $準備1: IC/C;@名前;2;;N;4;T;ESC; /* 2列挿入 */
4 FILL/C;%(STRING$(128,2));A;@;Y;様;A;@T;Y;ESC;
5 NF;J;%(CN("@ ")),%(CN("@名前"));
6 CJ;P;R;A;@名前;
7 NF;J;%(CN("@名前")),T;
8 FILL;名前;2;T;Y;
9 CJ;P;L;A;T;
10 CF;A;?; /* 列桁数を統一 */
11 $準備2: IC;S;A;3;A;B;C; /* データに番号を付ける */
12 NUM/C;M;C;@A;H;1;3; /* 1,4,7,・・・ */
13 M;C;@B;H;2;3; /* 2,5,8,・・・ */
14 M;C;@C;H;3;3;ESC; /* 3,6,9,・・・ */
15 P;差込印刷1;
16 STOP;
17
18 <SK2>
19 G;差込印刷1/1;
20 $1列化: DC;3,T;Y; /* 左の2列 */
21 INFO;S;36; /* 頁横桁数を36桁に */
22 W;2;;B;所属/肩書;ESC; /* 項目名を次の列に合せる */
23 CT;差込印刷2;
24 P;差込印刷2; /* 一旦登録する */
25 APD;差込印刷1;差込印刷2;Y; /* 次の列を追加 */
26 W;2;;C;名前;ESC; /* 項目名を次の列に合せる */
27 P;差込印刷2/1; /* 一旦登録する */
28 APD;差込印刷1;差込印刷2;Y; /* 最後の列を追加 */
29 STOP;
30
31 <SK3>
32 $仕上: SORT;差込印刷2;@C ;A/N;;差込印刷3;
33 ATR/P;差込印刷3;差込印刷3;R;A;Y; /* 属性を解除 */
34 CU;差込印刷3;@名前:"";" ";;Y;
35 DC/P;差込印刷3;差込印刷3;1;Y;Y;
36 DR/P;差込印刷3;差込印刷3;1,H-1/T+1;Y;Y;
37 $TXT: CTXT;W;差込印刷3;F:\TMP\ATENA.TXT;
38 STOP;
39
【追記】
実は、こういうケースはいわゆる「指令」を使うよりも、まともなオートプログラムで処理した方が簡単なのです。なぜなら、全て繰り返し処理であり、要素が少ないからです。一例として、同じ処理をするための「オート的」オートプログラムを次に掲げます。
元の名簿の表の形式や項目は同じで、データはメイン画面にあるものとします。
<SK>
1: S;
2: CLM;差込印刷データ;Y;
3: INFO;S;36;
4: LET X1=1;
5: FOR X2={H} TO {T};
6: LET L%X1={X2,@会社 }; LET X1=X1+1;
7: LET L%X1={X2,@所属/肩書 }; LET X1=X1+1;
8: LET L%X1=" "+{X2,@名前 }+" 様"; LET X1=X1+1;
9: NEXT;
10: STOP;
データが何件あっても同じです。36桁以内のデータ132件までなら上のオートをそのまま使えます。名前に「様」を付けたり、頭に2桁スペースを入れたりがごく簡単に出来てしまいます。
CTXTでテキストファイルに落すのですから、PIPS上では自由形式でよいのです。‘L%X1’は自由形式の画面に書き込むためにあります。 (勿論読み込む時にも使えます)
こういう所にPIPSの"自由闊達さ"があると思います。PIPSを上手に使いましょう。
□