このステップでは、ファンクション iiiFN14 をコピーし、社員番号、部門または苗字によって選択された、1 人または複数の社員の PDF ドキュメントが出力できるように拡張します。
この新しい RDMLX ファンクション iiiFN15 は、フォーム 「iiiFRM08 – 社員 PDF 出力をテスト」によって呼び出されますが、このファンクションによってユーザーは STD_FLAG、EMPNO、DEPTMENT、SURNAME を入力でき、これらの値を交換 (ECHANGE) してファンクション iiiFN15 が呼び出されます。
フォーム iiiFRM08 において実際に検討すべき事項としては、PSLMST (社員マスター) で EMPNO (社員番号) の妥当性を検査することが挙げられるでしょう。ファンクション iiiFN15, が呼び出された時に EMPNO (社員番号) を渡される場合、社員番号は常に有効な状態ですので、 iiiFN15 ではPDF ドキュメントを常に出力して、このドキュメントを閉じる必要があります。
ファンクション iiiFN15 が呼び出された時に DEPTMENT (部門番号) または SURNAME (苗字) が渡されて、1 件以上の PDF ドキュメントを作成する場合、出力が無い可能性もあります。条件付きで PDF ドキュメントを閉じることで、空の PDF ドキュメントに書き込むことを避けることができます。
#empno := A1009#rep1page := 1Subroutine Name(FOOTER)Clr_list #FOOTER1Add_entry #FOOTER1#jsmxcmd := 'ADD CONTENT(FOOTER1)'Use Builtin(JSMX_COMMAND) With_Args(#JSMXHDLE1 #JSMXCMD #FOOTER1) To_Get(#JSMSTS #JSMMSG)Execute Subroutine(CHECK_STS) With_Parms(#JSMXHDLE1)Endroutine
*フッターの追加EXECUTE Subroutine(FOOTER)Subroutine Name(CLOSE)#jsmxcmd := CLOSEUse Builtin(JSMX_COMMAND) With_Args(#JSMXHDLE1 #JSMXCMD) To_Get(#JSMSTS #JSMMSG)Execute Subroutine(CHECK_STS) With_Parms(#JSMXHDLE1)#rep1page -= 1Message Msgtxt('社員 PDF レポートが作成されました' + #rep1page.asstring + ' ページ')PDF サービスのアンロード#jsmxcmd := SERVICE_UNLOADUse Builtin(JSMX_COMMAND) With_Args(#JSMXHDLE1 #JSMXCMD) To_Get(#JSMSTS #JSMMSG)Execute Subroutine(CHECK_STS) With_Parms(#JSMXHDLE1)JSM を閉じるUse Builtin(JSMX_CLOSE) With_Args(#jsmxhdle1) To_Get(#JSMSTS #JSMMSG)Execute Subroutine(CHECK_STS) With_Parms(#JSMXHDLE1)Endroutine*ドキュメントを閉じるEXECUTE Subroutine(CLOSE)Case Of_Field(#STD_FLAG)Search for single employee numberWhen (= E)Add LogoChange Field(#JSMXCMD) To('ADD CONTENT(LOGO) ')Use Builtin(JSMX_COMMAND) With_Args(#JSMXHDLE1 #JSMXCMD) To_Get(#JSMSTS #JSMMSG)Execute Subroutine(CHECK_STS) With_Parms(#JSMXHDLE1).......... ..........*フッターの追加Execute Subroutine(FOOTER1)PDF *ドキュメントと PDF サービスを閉じるExecute Subroutine(CLOSE)Endcase