始めの言葉

「プリンターから印刷できて当たり前」と、ユーザーからもSIerからも軽視されがちなプリンターの世界ですが、実際にはお困りだったり、思ったような印刷結果が得られないまま我慢してお使いの皆様のために、今までの経験が役立てばと、このブログを立ち上げました。印刷の基本から、応用情報、問題の解決方法を情報発信すると共に、PDF化など、これからどうするかについても、ご相談に乗れれば幸いです。ご質問はコメントでお寄せください。

2018年9月29日土曜日

MapDraw を使った帳票設計のテクニック 第11回 - 四則演算 - 6 -

前回までの設計の結果、サマリー表は次のようになっています。
MapF 画面のサマリー表
ちなみに鍵のマークが付いている "a" と "b" は条件です。グループ "g1" の中で条件 "a" が適用されるゾーンと、"b" が適用されるゾーンが、条件ごとに表示されています。
この後、プロジェクトの生成 → OS/400 上の Mapping メニュー "2 MapDraw フォーマットの取り込み" を行ってから、次のコマンドを実行して PDF ファイルを生成しました。
PDF ファイルを生成する MAPCPYSPLF コマンド -1
PDF ファイルを生成する MAPCPYSPLF コマンド -2
生成された PDF ファイルを Adobe Reader で表示すると、次のようになっています。
PDF ファイルの 1 ページ目
PDF ファイルの 2 ページ目
PDF ファイルの 3 ページ目
PDF ファイルの 4 ページ目
PDF ファイルの 5 ページ目
このサンプル・スプールの明細のページは 5 ページなので、5 ページの PDF ファイルが生成されました。拡大して見ないと分かりませんが、各ページの合計金額の値は、29,166 -> 74,832 -> 96,571 -> 98,149 -> 110,049 というように、累積の値となっていることが確認できます。

2018年9月24日月曜日

MapDraw を使った帳票設計のテクニック 第10回 - 四則演算 - 5 -

しばらくお休みになってしまい、申し訳ありません。実は、9月3日から7日までは、Mapping 社で開催された OS/400 版の次期バージョン (V8.2) の研修コースに参加していました。世界中の Mapping 社のビジネス・パートナー、と言っても、私の他には、US、イスラエル、オランダから 3名の方が参加していました。現行バージョンでも使用できる高機能な使い方も教えていただきましたので、回を改めてご紹介したいと思います。
今回は、前回の続きです。前回は、各行の "数量" と "単価" を掛けて "金額" を計算し、表示するところまで来ました。次は、 "金額" を合計して、"小計" を表示します。

グループ "g1" の中に、次の数値計算ゾーン "PRICEM_TOT" を作成します。
- ゾーン名 : PRICEM_TOT
- データ位置 : 桁 "1", 長さ "0"
- タイプ : メモリー, 数値計算
- ゾーン条件 : "a"
- ゾーンの後に追加する文字 : [[PRICEM]]+[[PRICEM_TOT]]
小計を計算するための数値計算ゾーンの定義
ゾーンの後に追加する文字に定義した計算式を見れば、各行の "金額" を次々と足していることが、お分かりいただけると思います。

グループ "g1" の外に、次のようなグループ "g2" を作成します。このグループの上下方向の位置によって、小計の値が表示される場所が決まります。明細の行数はページ毎に異なりますので、このグループはページの中の下寄りに配置するようにします。
- グループ名 : "g2"
- 開始行 : "1"
- 終了行 : "1"
小計を表示するためのグループ "g2" の定義

このグループ "g2" の中に、小計の値を表示するために、次のメモリー置換ゾーン "PRICE_TOT" を作成します。小計の値の左右方向の位置は、このゾーンの位置によって決まります。
- ゾーン名 : PRICE_TOT
- データ位置 : 桁 "1", 長さ "0"
- タイプ : メモリー, メモリー置換
- ゾーン条件 : "a"
- ゾーンの後に追加する文字 : [[PRICEM_TOT]] (<- 上で定義した数値計算ゾーンの名前です。)
小計を表示するためのメモリー置換ゾーンの定義

 この段階でプレビューすると、メモリー置換ゾーンに "金額" の合計が表示されていることが分かります。
小計の計算結果のプレビュー画面

ただ、これだけでは不十分で、ページ毎に合計を計算した結果をクリアする必要があります。そのために、次のように、上の数値計算ゾーンと同じ名前の数値計算ゾーンを、グループの外に単独のゾーンとして配置します。
- ゾーン名 : PRICEM_TOT
- データ位置 : 桁 "1", 長さ "0"
- タイプ : メモリー, 数値計算
- ゾーンの後に追加する文字 : "0"
計算結果をクリアするための数値計算ゾーンの定義

この数値計算ゾーンのプロパティ画面で "条件" を選択し、次の画面のように条件を "First" を指定すると、自動的に "First Page" という条件を設定したことになります。
数値計算ゾーンに "First Page" という条件を設定する
この設定によって、最初のページのみ計算値をクリアすることになり、各ページに表示される合計金額は、そのページまでの累積金額になります。ただ、MapDraw のプレビュー画面では、ページ単位の合計金額になります。実際の合計金額を確認するためには、プロジェクトの生成 -> 取り込みを行って、OS/400 上の Mapping が PDF ファイルや印刷データを生成して印刷する必要があります。

ここで強調しますが、ゾーンの定義順は非常に重要です。メモリー・ゾーン、数値計算ゾーン、メモリー置換ゾーン の順番を守ってください。順番を確認するためには、MapDraw のサマリーを使用します。違っていたら移動ボタンを使用して修正します。