You are viewing an old version of this page. View the current version.

Compare with Current View Page History

Version 1 Next »

INT013 - 付録 B

INT013 - PDFDocumentService を使用して PDF ドキュメントを作成
ファンクション「iiiFN14 – 社員 1 名分の PDF 作成」の RDMLX ソース
Function Options(*DIRECT)

  • RDML コマンド の開始 **********
     
    #empno := A1009
    #std_textl := 'ACME Manufacturing Company, Chicago'
    #std_name := #datex.asdisplayString( DDsMMsCCYY )
    #rep1page := 1
    Def_List Name(#footer1) Fields(#std_name #rep1page) Type(*working)
    Define Field(#ID) Type(*CHAR) Length(5)
    Define Field(#FNAME) Type(*CHAR) Length(20)
    Define Field(#SNAME) Type(*CHAR) Length(30)
     
    Def_List Name(#SKILLTBL) Fields(#SKILDESC #GRADEDES #STD_TEXT #COMMENT) Type(*WORKING) Entrys(*max)
    Def_List Name(#header) Fields(#std_textl #fullname #address1 #address2 #address3 #postcode #phonebus #phonehme #deptdesc #secdesc) Type(*working) Entrys(*max)
  • Open JSM
    Use Builtin(JSMX_OPEN) To_Get(#JSMSTS #JSMMSG #jsmxhdle1)
    Execute Subroutine(CHECK_STS) With_Parms(#JSMXHDLE1)
     
  • Load Service
    #jsmxcmd := ('SERVICE_LOAD SERVICE(PDFDOCUMENTSERVICE)')
    Use Builtin(JSMX_COMMAND) With_Args(#jsmxhdle1 #jsmxcmd) To_Get(#JSMSTS #JSMMSG)
    Execute Subroutine(CHECK_STS) With_Parms(#JSMXHDLE1)
     
  • PDF ドキュメントの作成
     
     
  • ロゴ追加
    Change 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)
     
     
  • Add Header Employee Info
    Clr_List Named(#header)
    Fetch Fields(*all) From_File(pslmst) With_Key(#empno) Val_Error(*next)
    #fullname := #surname + ', ' + #givename
    Fetch Fields(#deptdesc) From_File(deptab) With_Key(#deptment)
    Fetch Fields(#secdesc) From_File(sectab) With_Key(#deptment #section)
    Add_Entry To_List(#header)
  • 見つかった場合、コンテンツを追加
     
     
  • 社員スキル取得
  • ======================
    Clr_List Named(#skilltbl)
    Group_By Name(#skills) Fields(#SKILCODE #COMMENT #DATEACQ #SKILDESC #grade)
    Select Fields(#skills) From_File(pslskl) With_Key(#empno) Nbr_Keys(*compute) Val_Error(*next)
    Fetch Fields(#skills) From_File(skltab) With_Key(#skilcode) Val_Error(*next)
    #std_text := #dateacq.asdate( MMDDYY ).asdisplayString( MMsDDsCCYY )
  • if your locale date format is not MMDDYY, change this value to DDMMYY
    Execute Subroutine(grade)
    Add_Entry To_List(#skilltbl)
    Endselect
     
  • 見つかった場合、社員のスキル・リストを追加
     
     
  • フッターの追加
    clr_list #FOOTER1
    Add_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)
     
  • ドキュメントを閉じる
    #jsmxcmd := CLOSE
    Use Builtin(JSMX_COMMAND) With_Args(#JSMXHDLE1 #JSMXCMD) To_Get(#JSMSTS #JSMMSG)
    Execute Subroutine(CHECK_STS) With_Parms(#JSMXHDLE1)
     
  • PDF サービスのアンロード
    #jsmxcmd := SERVICE_UNLOAD
    Use 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)
    If (#jsmsts = OK)
    Message Msgtxt('ドキュメント iii_EMPREP.pdf が作成されました')
    Endif
    *
    *  発行された JSM コマンドのステータスを確認
    *
    Subroutine Name(CHECK_STS) Parms(#W_HDLE)
    *
    Define Field(#MSGDTA) Type(*CHAR) Length(132)
    Define Field(#W_HDLE) Type(*CHAR) Length(4)
    *
    If Cond('#JSMSTS *NE OK')
    *
    #MSGDTA := 'Error Status Code: ' + #JSMSTS
    Message Msgid(DCM9899) Msgf(DC@M01) Msgdta(#MSGDTA)
    #MSGDTA := 'Error Message: ' + #JSMMSG
    Message Msgid(DCM9899) Msgf(DC@M01) Msgdta(#MSGDTA)
    Endif
    *
    Def_List Name(#WL_MSGS) Fields(#JSMSTS #JSMMSG) Type(*WORKING) Entrys(*max)
    Add_Entry To_List(#WL_MSGS)
    Endroutine
    Subroutine Name(grade)
    Case (#grade)
    When (= P)
    #gradedes := 'Pass'
    When (= F)
    #gradedes := 'Fail'
    When (= M)
    #gradedes := 'Merit'
    When (= D)
    #gradedes := 'Distinction'
    Endcase
     
    Endroutine
  • RDML コマンド終了 **********
     
  • No labels