このステップでは、「INT013 - 付録 B」の RDMLX ソースをベースに RDMLX ファンクションを作成します。このファンクションが 1 人の社員に関する PDF ドキュメントを作成するように完成させます。
* Create PDF Document (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 ドキュメントは以下のようになっているはずです。 