始めの言葉

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

2018年10月27日土曜日

MapDraw を使った帳票設計のテクニック 第15回 - 条件の設定 - 4 -

今回からは、グループの中にあるゾーンに条件を設定する方法についてお話します。
今までサンプルとして使用している、ベイトップ書房の見積り書の明細のページは、条件を設定していますので、これを使ってご説明しましょう。
明細のページに要求された条件とは次のとおりです。
- 左端に 3 けたのコードが付いた行が明細の行となりますが、全体で何行になるかはページによって異なります。- それらの行の下には、点線の罫線を引きます。
- 最下段の行は、小計の行で、右端に金額のみがあります。この行には、実線の罫線を引きます。
明細ページのスプール・データ
明細ページのプレビュー画面
1. 先ず、明細行のためのグループを、次のように作成します。グループには、"固定グループ" という開始行と固定行を指定するタイプのものと、"可変グループ" という終了行を条件で決めて終了するタイプのものの 2 種類があります。明細行の行数は可変なのですが、ここでは次のように終了行に大き目の値を指定した "固定グループ" とします
- グループ名 : g1 (これは任意です。)
- 開始行 : 10
- 終了行 : 68
明細行用の固定グループ
2. このグループの中にゾーンを定義します。初めは条件を無視して、そのままスプールのデータを表示するようにゾーンを作成します。明細行の桁を全て納めるために、ゾーンの設定は次のようになります。
- ゾーン名 : z11 (これは任意です。ここではグループ g1 の 1 つ目のゾーンであることを表しています。)
- データ位置 桁 : 6, 長さ : 123
- フォント名 : MS ゴシック
- フォント・サイズ : 9
- 固定ピッチ : 18
ゾーンのデータ位置の設定
ゾーンのフォントとスタイルの設定

ここまでの設定で、プレビュー画面は次のようになります。
3 ページ目のプレビュー画面
3. では、ここで、明細行の下に点線の罫線を引きます。DrawF 側の画面で引く罫線は、本数が固定になりますから、明細行の下にのみ罫線を引くという条件を満たせません。そこで、MapF 側の画面のグループ "g1" の中に罫線を引きます。罫線を引くと、自動的に次のような画面が表示されます。この画面では、次の設定を行います。
- 名前 : L11(これは任意です。)
- 太さ、色、種類

グループ g1 内に罫線を引く
4. この状態でプレビューすると、次の画面のように、グループで定義した10行目から68行目まで全ての行に罫線が表示されていることが分かります。
プレビュー画面
5. そこで、明細行でのみ罫線を引くことを実行するための条件を指定します。明細行は、必ず左端に 3 桁のコードが付いていますので、その先頭桁の "6" 桁目にデータがあることを条件とすることにします。そこで、罫線のプロパティ画面(キーボードの F5 キーを押します。)を開いて、"条件" タブの画面で次のように設定します。
- "新規" ボタンを押して、条件名を定義します。(ここでは "a" としました。)
- "There isn't" : もし、無かったら
- in line "現在" : グループで指定した 10 行目から 68 行目まで、1 行ずつチェックします。
- between columns "6" and "6" : 6 桁目
- the value " " : ブランク 1 桁
これで、各行の6桁目にブランクが無かったら、つまり何かデータがあったら、この罫線を実行するという条件を設定したことになります。グループの中に指定したゾーンや罫線の条件設定では、行の指定が "現在" や、"+1"、"-1"、あるいは特定行といったように、グループの中の各行との相対関係を指定できる点が、単独のゾーンに設定する条件付けと大きく異なる点です。
罫線の条件設定
6. さて、この状態で、プレビューすると、どのようになっているでしょうか。次の画面のように、罫線のみが表示されてしまい、文字は消えてしまいました。この後どうするかを次回にお話しいたします。
罫線に条件付けした後のプレビュー画面



2018年10月21日日曜日

MapDraw を使った帳票設計のテクニック 第14回 - 条件の設定 - 3 -

前回までは、フォーマット全体に対する条件設定でしたが、今回はフォーマット内部のゾーンに対する条件設定についてお話します。ゾーンの条件設定と言っても、単独に存在するゾーンと、グループ内に存在するゾーンでは、後者の方が細かい注意が必要になります。
今回もサンプルには、架空のベイトップ書房の見積書を使用します。この見積書は、あるお客様の見積書のスプールやデザインを元に、サンプル用に変更を加えたものなので、基本的な考え方は共通です。これから条件付けのお話しをするために使用する消費税に関するコメントも、そのお客様では連続用紙にドット・プリンターで印刷していた時代に使用していたものと同じです。つまり、ドット・プリンターに印刷していた時のアプリケーションには変更を加えずに、Mapping を使って新しい表現方法に変わっているということです。

そのお客様では、見積り金額を表示するに当たって、消費税込みの金額を使用する場合と消費税抜きの金額を使用する場合があります。そこで、見積書の表紙の事前印刷部分に、予め "上記の御見積り金額には消費税が含まれていません。" という文言を印刷しておきます。そして、消費税込みの金額を表示する場合には、スプール・ファイルの中の該当する場所に "*" を続けて配置して、プリンターが印刷する "*" によって上からその文言を打ち消すという方法が採られていました。
Mapping を使って、見積書を PDF ファイル化するに当たっては折角なので、直接 "上記の御見積り金額には消費税が含まれています。"、若しくは、"上記の御見積り金額には消費税が含まれていません。" という文言を表示するようにしたいという、お客様のご要望がありました。
そこで、具体的には次のようなゾーンの設計を行って、ご要望を実現しました。
なお、"*" が存在する場合には、20 行目の 34 桁目から始まるものとします。

1. 先ず、消費税が含まれる場合のゾーンを設計します。その場合は、スプール・データの中に "*" が含まれています。"*" は表示しないようにするために、"*" の無い、必ずブランクとなっている、21 行目の 34 桁目から 1 桁をゾーンに対応する桁の場所として指定します。
消費税が含まれる金額の場合のゾーンのプロパティ
 2. プロパティの画面には、"ゾーンの後に追加する文字" という欄があります。ここには、スプール・データには含まれない固定の文字列を記入できます。そこで、ここに "上記の御見積り金額には消費税が含まれています。" と入力します。

3. ゾーンのプロパティ画面の "条件" タブ画面で条件設定を行います。条件の設定項目自体は、前回までにお話ししたフォーマットの場合と同じです。このサンプルでは、次のように設定しています。
- There isn't : もし、無かったら
- in line 20 : 20行目
- between columns 34 and 34 : 34桁目
- the value 1 桁のブランク : 1 桁のブランク
以上から、20 行目の 34 桁目にブランクが無ければ、つまり何かデータがあったら実行するという設定になります。
もちろん、データは "*" であることが分かっていますので、次の設定でも良いわけです。
- There is : もし、あったら
- the value * : *
ゾーンの条件設定画面
3. 次に消費税が含まれない場合のゾーンを設計します。既に定義した消費税が含まれない場合のゾーンをコピーして、それを編集するのが簡単だと思います。その場合、編集する必要があるのは、次の項目です。
- ゾーン名 :  消費税なし
- ゾーンの後に追加する文字 : 上記の御見積り金額には消費税が含まれていません。
- There is : もし、あったら
あるいは、消費税ありと同じ条件のままとして、"論理ルール" 欄に "not 1" と設定します。
消費税が含まれない金額の場合のゾーンのプロパティ



ゾーンの条件設定画面

4. MapDraw では、ゾーンを重ねて配置できますので、上記の方法で設計した 2 つのゾーンを、次のように重ねて配置すると、同じ場所に "消費税込み" か、"消費税抜き" かのどちらかの文言を表示することができます。
MapDraw の MapF 画面
MapDraw のプレビュー画面








2018年10月13日土曜日

MapDraw を使った帳票設計のテクニック 第13回 - 条件の設定 - 2 -

サンプルとして使用している見積書のように、1 ページ目の鑑と、2 ページ目以降の明細という構成の帳票は、多くあると思います。鑑のページと明細のページの切り替えの条件としては、次のような設定方法もあります。
次の画面のように、条件設定の選択肢の中に "First" があります。これを鑑のページに適用します。
フォーマットを 1 ページ目に使用する条件設定

明細のページには、前回の条件設定のように、同じ条件を設定した上で論理ルール欄に "not 1" と設定します。つまり、2 つの相反する条件を適用する場合には、同じ条件を設定した上で、片方の論理ルール欄に "not 1" と指定すれば良いということです。
フォーマットを 2 ページ目以降に使用する条件設定
マルチ・プレビューの機能を使って、条件設定が正しく機能することが確認できたら、安心することなく、次の段階へ進みます。
それぞれのフォーマットに対して "プロジェクトを生成する" ボタンを押して、プロジェクト・ファイルを生成します。デフォルトでは "フォーマット名シーケンス番号"というファイル名になります。次の画面のようにファイル名を変えても構いませんが、1 つのフォーマットに対して同時に生成される 3 つのファイルのファイル名は同一であること、そして、フォーマット間ではファイル名を同一にしないことが鉄則です。
明細ページ用のプロジェクトの生成画面
MapDraw 上での生成が完了したら、OS/400 上の Mapping メニューの中の "MapDraw フォーマットの取り込み" を行います。
MapDraw フォーマットの取り込みを行う画面
フォーマットの取り込みが完了したら、次のコマンドを使用して、PDF ファイルを生成します。その際に重要なのは、1 つのスプール・ファイルに対して、複数のフォーマットを条件に応じて切り替えて適用する必要がある場合には、"Sequence" パラメーターの値を "*MRG" と指定することです。単独のフォーマットを適用する場合には、ここには "00010" といったように固定の値を入力しますが、複数のフォーマットを条件に従って適用するためには、"*MRG" を指定することにより、Mapping がフォーマットの条件を読み取って切り替えてくれます。
Mapping V7 で PDF を生成する MAPCPYSPLF コマンドの指定-1
Mapping V7 で PDF を生成する MAPCPYSPLF コマンドの指定-2
Mapping V7 で PDF を生成する MAPCPYSPLF コマンドの指定-3
青矢印で指定したパラメーターの値が正しく入力されていれば、MapDraw のマルチ・プレビュー画面で確認した結果と同じ PDF ファイルが生成されます。


2018年10月6日土曜日

MapDraw を使った帳票設計のテクニック 第12回 - 条件の設定 - 1 -

MapDraw では、ゾーンや図形、更にフォーマット自体が実行される条件を設定して、様々な帳票設計へのご要望に対応することができます。今までサンプルとして使用してきた、ベイトップ書房の見積書のように、1 本のスプールに対して、1 ページ目は鑑や表紙、2 ページ目以降は明細という 2 種類のフォーマットを適用したいというのは、一般的なご要望と思います。
先ずは、この見積書を例に、複数のフォーマットを用意して、条件に応じて適用する方法についてお話しましょう。
1. 表紙用のフォーマットと、明細用のフォーマットは同じフォーマット名を使用します。そして、シーケンスの番号をそれぞれ順番に振ります。次の例では、フォーマット名は "BAYTOP" で共通ですが、表紙のシーケンスは "00010"、明細のシーケンスは "00020" としています。これは、最後に PDF ファイルを生成するために使用する "MAPCPYSPLF" コマンドのパラメーターに関連します。
表紙のプロジェクトのプロパティ
明細のプロジェクトのプロパティ
2. 表紙と明細をそれぞれ設計していきますが、条件に応じて、表紙を適用するページなのか、明細を適用するページなのかを、Mapping が PDF ファイルを生成する時に判断できるように定義しないとなりません。このスプールでは、各ページの右上に 9 桁の見積り番号がありますが、このスプールができた経緯から、表紙のページでは 5 行目の 106 桁目から始まっていますが、明細のページではどのページでも共通して 4 行目の同じ桁から始まっています。これは、このサンプル・スプールの場合の表紙と明細の違いであって、要は、表紙と明細のページで必ず異なる箇所、ただし、明細のページでは共通なものを見つけることが重要です。
表紙のページの見積り番号の位置
明細のページの見積り番号の位置
3. この違いをプロジェクトの条件に定義します。表紙のプロジェクトのプロパティ画面には、"表面" というタブの画面があります。表紙の場合は、見積り番号の先頭が必ず 5 行目の 106 桁目にありますので、ここに何かデータがあったら、つまりブランクではなかったら適用するという条件を次のように設定します。
5 行目、106 桁目に何かデータがあったらという表紙の条件設定
- There isn't は、もし無ければ
- in line "5" は、5行目に
- between columns "106" and "106" は、106桁目に
- the value の欄には、画面には見えませんが、ブランク 1 桁が定義されていますので、以上を組み合わせて、上記のような条件になります。この条件は、最大 50 まで登録できますが、その場合には、下にある論理ルール欄で、論理式を定義する必要があります。

4. 明細ページの条件は、5 行目の代わりに 4 行目を定義すれば良いのですが、論理ルール欄を利用して、表紙ページを否定した条件 "not 1”も使用可能です。
表紙のページの条件を否定した明細のページの条件
5. これらの条件の設定が正しいかどうかを確認するには、"マルチ・プレビュー" を使用します。表紙でも明細でも、どちらかのプロジェクトの画面の "ホーム" タブ画面の右上にある "マルチ・プレビュー" のボタンを押します。スプールのページを "1" ページから順に変えていった時に、"2" ページ目以降で明細の設計のフォーマットに変わったことが確認できれば OK です。
マルチ・プレビューのボタンと 1 ページ目のプレビュー
スプールの 2 ページ目に切り替えて明細になったプレビュー画面