回答箱 No.108-2: 一太郎の差込印刷でPIPSのデータを利用したい

    ◆ 質問箱 No.108  質問者: 元山 よし子  2000年04月 219号 P.16
        ◆ 質問箱 目次へ
No.108-2 一太郎の差込印刷でPIPSのデータを利用したい 回答者
   入川 精二
2000年05月
220号 P.15
   ◆ No.108(2000年 04月号)の回答-2
   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を上手に使いましょう。


このページのTOPへ戻る