始めの言葉

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

2018年12月8日土曜日

MapDraw を使った帳票設計のテクニック 第19 回 - スプールに無いデータを追加する

MapDraw を使った帳票設計では、データはスプール・ファイルにあることが基本ですが、スプール・ファイルに無いデータを、帳票上に追加することもできます。例えば、MAPCPYSPLF コマンドを使用して PDF ファイルを生成するに当たって、スプール・ファイルの中の日付や時刻ではなく、PDF ファイルが生成された日付や時刻を追加表示することが、次の手順を使えば可能です。

1. 対象のスプールの属性を調べて、1ページ当たりの行数を確認します。下の画面の例では、"66 行" になります。
スプールの属性 66行/1ページ
2. 次の “3” で指定する、スプールに無いデータが、上の ”1” で確認した行数 +1 行目に追加されることを前提に、MapDraw 上で帳票設計します。下の画面の例では、67 行目に 10 桁のデータが追加されることを想定し、”DATETIME” というゾーンを設定しています。
追加のゾーンの指定
3. プロジェクトの生成 → 取り込みを行った後、次のコマンドを実行して、"QTEMP" というライブラリー内に、"MAPUSRDTA" というデータ・エリアを作成します。この例では、YYYY/MM/DDという文字をデータエリア内に作成します。
CRTDTAARA DTAARA(QTEMP/MAPUSRDTA) TYPE(*CHAR) LEN(2000) VALUE('YYYY/MM/DD’)
データ・エリア作成コマンド
4.MAPCPYSPLFコマンドを使用して、PDFファイルを生成します。
MAPCPYSPLF コマンド 1 画面目
MAPCPYSPLF コマンド 2 画面目
MAPCPYSPLF コマンド 3 画面目
5. 生成された PDF ファイルを表示すると、”2” で指定した箇所に、”3” で追加したデータが表示されたことを確認できます。
追加された文字

データ・エリアとは、プログラム間、ジョブ間の制御情報として使用されるディスク上の記憶域を表すオブジェクトの一つで、OS/400 の機能の一つです。ユーザー定義のデータ・エリアとローカル・データ・エリアがありますが、ここで使用するのは、ユーザーが作成するデータ・エリアです。任意のライブラリーに作成でき、複数のジョブで利用可能です。

ここでは、MAPCPYSPLF コマンドを実行する際に、67 行目にデータ・エリアの内容を取り込んで処理するために、事前に "*.pag" ファイルとして表示することができません。ただ、データ・エリア内の値を表示するには、次のコマンドを実行します。


WRKDTAARA DTAARA(QTEMP/MAPUSRDTA)

次の画面が表示されますので、"5= 表示" を実行します。
データ・エリアの表示
次の画面のように、データ・エリア内のデータが表示されます。 
データ・エリアの内容の表示
この例では追加する文字は固定値でしたが、実際には日付や時刻等の変数を追加する方が多いと考えられます。日付や時刻の追加の場合のCLの例を次に示します。

DCL VAR(&SYSTME) TYPE(*CHAR) LEN(20)
RTVJOBA DATETIME(&SYSTME)
CRTDTAARA DTAARA(QTEMP/MAPUSRDTA) TYPE(*CHAR) LEN(2000) VALUE(&SYSTME)
MAPCPYSPLF…
これによって、データエリア (QTEMP/MAPUSRDTA) YYYYMMDDHHNNSSXXXXXX がセットされます。



0 件のコメント:

コメントを投稿