このステップでは、「INT013 - 付録 B」の RDMLX ソースをベースに RDMLX ファンクションを作成します。このファンクションが 1 人の社員に関する PDF ドキュメントを作成するように完成させます。
- 新しいプロセスiiiPRO11 – PDF 例作成します。
- テンプレートを使用せずに、プロセス iiiPRO11 に属する新しい RDMLX 対応のファンクション 「iiiFN14 – 社員 1 名分の PDF 作成」を作成します。
- このコードを INT013. 付録 Bの RDMLX ソースに置き換えます。
- ファンクションを保存し、その内容を確認します。このプログラムの始めに EMPNO や STD_TEXTL など、複数のフィールド値がハードのコーディングされていることに注意してください。このファンクションは、固定の社員番号 1 名分を処理します。
- 次のコメント行を探します。
* Create PDF Document (PDF ドキュメントの作成)
このコメントの次に、既にロードされているPDFDocumentServiceを使用するコードを追加します。CREATEコマンドを利用して、テンプレートiii_PDF_Template.xml をもとにPDFドキュメントを作成します。 ソースコードに* Load Serviceコードの3つのステートメントをコピーし貼り付けます。CHANGE Field(#JSMXCMD)コマンドを修正し、CREATEコマンドを定義します。
キーワード
値
DOCUMENT
iii_EMPREP.pdf
CONTENT
xml/iii_PDF_Template.xml
実際のアプリケーションでは、ユーザーにまたは顧客より準備された特定のフォルダに出力する場合が多いでしょう。
完了したコードは次のようになります。*PDF ドキュメントの作成#jsmxcmd := ('CREATE DOCUMENT(iii_EMPREP.pdf) CONTENT(xml/iii_PDF_Template.xml)')Use Builtin(JSMX_COMMAND) With_Args(#jsmxhdle1 #JSMXCMD) To_Get(#JSMSTS #JSMMSG)Execute Subroutine(CHECK_STS) With_Parms(#JSMXHDLE1)変更内容を保存します。
次のコメント行を探します。
* If found add content (見つかった場合、コンテンツを追加)
このコメントのすぐ前のコードで、必要な社員詳細フィールドが含まれる作業リスト (#HEADER) のエントリーが 1 件作成されています。このコメントに続き、社員詳細を含む HEADER のロジックと内容を追加します。
このコードを追加して、* Add content HEADER (HEADER コンテンツを追加) のロジックを完成させます。If_Status Is(*OKAY)Add content HEADER (HEADER コンテンツを追加)ElseMessage Msgtxt('社員 A1009 が見つかりません')Endifコメント行 * Add content HEADER (HEADER コンテンツを追加) の後に、ASSIGN コマンドを定義して、以下の情報に基づき追加 (ADD) する JSMXCMD フィールドを定義します。
キーワード
値
CONTENT
HEADER
以下の情報をもとに、JSMX_COMMAND の使用 (USE) を定義します。
キーワード
値
WITH_ARGS
#JSMXHDLE1
#JSMXCMD
#HEADER
TO_GET
#JSMSTS
#JSMMSG
注意:作業リストの#HEADERを3番目の引数として引き渡します。
最後に EXECUTE コマンドを追加して、JSM ステータスを確認するサブルーチンを実行します。
完了したコードは以下のようになります。If_Status Is(*OKAY)*Add content HEADER (HEADER コンテンツを追加)#JSMXCMD := 'ADD CONTENT(HEADER)'Use Builtin(JSMx_COMMAND) With_Args(#JSMXHDLE1 #JSMXCMD #HEADER) To_Get(#JSMSTS #JSMMSG)Execute Subroutine(CHECK_STS) With_Parms(#JSMXHDLE1)ElseMessage Msgtxt('社員 A1009 が見つかりません')Endif変更内容を保存します。
以下のコメント行を探します。
If found add employee skills list (見つかった場合、社員のスキル・リストを追加)次のロジックを追加して、この中の JSM ロジックを完成させます。
If_Status Is_Not(*error)SKILLTBL コンテンツの追加ElseMessage Msgtxt('社員のスキルが見つかりません')Endifコメント * Add SKILTBL content (SKILTBL のコンテンツを追加) の後に、ASSIGN コマンドを定義して、以下の情報に基づき追加 (ADD) する JSMXCMD フィールドを定義します。
キーワード
値
CONTENT
SKILLTBL
以下の情報に基づき、JSMX_COMMAND BIF を実行するコマンドを使用 (USE) するロジックを追加します。
キーワード
値
WITH_ARG
#JSMXHDLE1
#JSMXCMD
TO_GET
#JSMSTS
#JSMMSG
#SKILLTBL
EXECUTE コマンドを追加して、JSM ステータスを確認するサブルーチンを実行します。
完了したコードは以下のようになります。If_Status Is_Not(*error)*SKILLTBL コンテンツの追加#JSMXCMD := 'ADD CONTENT(SKILLTBL)'Use Builtin(JSMX_COMMAND) With_Args(#JSMXHDLE1 #JSMXCMD) To_Get(#JSMSTS #JSMMSG #SKILLTBL)Execute Subroutine(CHECK_STS) With_Parms(#JSMXHDLE1)ElseMessage Msgtxt('社員のスキルが見つかりません')Endifファンクションをコンパイルします。IBM i サーバーで Integrator を実行している場合は、ファンクションをチェックインし、サーバー上でコンパイルします。
ファンクション「iiiFN14 – 社員 1 名分の PDF 作成」を実行します。
JSM インスタンスのルートにある出力 PDF ドキュメントを見つけます。このドキュメントの名前は iii_EMPREP.PDF です。IBM i サーバーで実行している場合は、次のようなパスになります。/LANSA_<pgmlib>/jsm/instance<PGMLIB >は LANSA のライブラリ名です。
PDF ドキュメントは以下のようになっているはずです。
