Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

  1. ファンクション内でコメント YOUR OWN LOGIC HERE (独自のロジックはここ)

...

  1. と書かれたセクションに、社員リストをクリアして、キーを

...

  1. DEPTMENT

...

...

  1. SECTION

...

  1. で、キー数は

...

  1. *COMPUTE

...

  1. を指定して、論理ファイル

...

  1. PSLMST1

...

  1. から社員を選択するコードを追加します。社員リストにエントリーを追加します。

  2. ファンクション iiiFN12 は、別の RDML ファンクションによって呼び出されますが、このファンクションが要求の部門と課が有効かどうか、また社員が該当セクションに存在するかどうかをチェックします。ですから、このエラー・チェックは iiiFN12 には必要ありません。

  3. Excel ファイルを作成するには、コマンド CREATE を FORMAT(*XLSX)

...

  1. で使用する必要があります。  CREATE コマンド用の文字列 (JSMXCMD)

...

  1. を作成し、組み込み関数

...

  1. JSMX_COMMAND

...

  1. を使ってこのコマンドを実行します。 
    詳細は『LANSA Integrator ガイド』の「ExcelService」で確認してください。このガイドは Integrator スタジオの[ヘルプ] から直接開くことができます。

  2. シートを追加するには、コマンド ADD で OBJECT(*SHEET)

...

  1. SHEET(Sheet1)

...

  1. を使用します。

  2. コマンド WRITE 用の文字列を作成し、R1C1(1,1)

...

  1. を使って、Sheet1

...

  1. の 行1、セル1の位置に書き込みます。  組み込み関数 JSMX_COMMAND

...

  1. でこれを実行します。  シートと行/セルのパラメータはどちらもデフォルトのため、指定する必要はありません。  

    Note

    注意:この場合、TO_GET パラメータには社員作業リストの名前を入れる必要があります。  

  2. データを保存し、実際のファイルを作成するには、SAVE コマンドで FILE(training/iiiempfn12.xlsx)

...

  1. を使います。

...


  1. このコマンドの

...

  1. FILE

...

  1. パラメータでは、(JSMインスタンス内の)

...

  1. ファイル・パスとファイル名を指定し、(1つのファイルに何度も上書きするのではなく)

...

  1. 新しいファイルが毎回作成されるようしなければいけません。  サブディレクトリ /training に  iiiemp で始まる名前でファイルを作成します。  現在の日時をファイル名に追加します。  フィールドDATETIMECには、この値が文字値として含まれます。このディレクトリは存在していなければなりません。 
    実際のアプリケーションの場合、異なるユーザーが作成した同じ出力ファイルを別々にする方法を検討する必要があります。 

  2. 組み込み関数 JSMX_COMMAND

...

  1. を使って

...

  1. CLOSE

...

  1. コマンドで

...

  1. Excel ファイルを閉じます。  注意:これは ExcelService CLOSE コマンドです。JSMX_CLOSE

...

  1. コマンドではありません。
     

  2. 組み込み関数 JSMX_COMMAND

...

  1. を実行するたびに

...

  1. CHECK_STS

...

  1. サブルーチンを実行するコーディングを入れること、そして、パラメータ

...

  1. JSMXHDLE1

...

  1. コードを渡すことを忘れないようにしてください。

  2. ロジックの最後に、JSM ステータス (フィールドJSMSTS)

...

...

  1. OK

...

  1. の場合は、Excel

...

  1. ファイルが作成されたことを示すメッセージを送信します。RDMLXコーディング技術を使用すると、生成されたExcelファイルの名前をこのメッセージに簡単に追加できます。

  2. ロジックは以下のようになります。

    Function Options(*DIRECT)

...


  1. Def_List

...

  1. Name(#employs)

...

  1. Fields(#empno

...

  1. #givename

...

  1. #surname

...

  1. #STARTDTER

...

  1. #PHONEHME

...

  1. #salary)

...

  1. Type(*working)

...

  1. Entrys(*max)

...


  1. *  JSM を開いて、ステータスを確認
    Use Builtin(jsmx_open)

...

  1. To_Get(#jsmsts

...

  1. #jsmmsg

...

  1. #jsmxhdle1)

...


  1. Execute

...

  1. Subroutine(CHECK_STS)

...

  1. With_Parms(#JSMXHDLE1)
    SERVICE_LOAD コマンドの作成
    #jsmxcmd := 'SERVICE_LOAD SERVICE(ExcelService)'
    Use Builtin(jsmx_command) With_Args(#jsmxhdle1 #jsmxcmd) To_Get(#jsmsts #jsmmsg)
    Execute Subroutine(CHECK_STS) With_Parms(#JSMXHDLE1)

    *

...

  1.     独自のロジックはここ
    Clr_List Named(#employs)
    Select Fields(#employs) From_File(pslmst1) With_Key(#deptment #section) Nbr_Keys(*compute)
    Add_Entry To_List(#employs)
    Endselect

    *Excel ファイルの作成
    #jsmxcmd := 'CREATE FORMAT(*XLSX)'
    Use Builtin(jsmx_command) With_Args(#jsmxhdle1 #jsmxcmd) To_Get(#jsmsts #jsmmsg)
    Execute Subroutine(CHECK_STS) With_Parms(#JSMXHDLE1)

...


  1. *シートの追加
    #jsmxcmd := 'ADD OBJECT(*SHEET) SHEET(Sheet1)'
    Use Builtin(jsmx_command) With_Args(#jsmxhdle1 #jsmxcmd) To_Get(#jsmsts #jsmmsg #employs)
    Execute Subroutine(CHECK_STS) With_Parms(#JSMXHDLE1)

...


  1. *Excel ファイルへの書き込み
    #jsmxcmd := 'WRITE'
    Use Builtin(jsmx_command) With_Args(#jsmxhdle1 #jsmxcmd) To_Get(#jsmsts #jsmmsg #employs)
    Execute Subroutine(CHECK_STS) With_Parms(#JSMXHDLE1)

...


  1. *Excel ファイルに保存
    #jsmxcmd := 'SAVE FILE(training/jsmemp' + #datetimec + '.xlsx)'
    Use Builtin(jsmx_command) With_Args(#jsmxhdle1 #jsmxcmd) To_Get(#jsmsts #jsmmsg #employs)
    Execute Subroutine(CHECK_STS) With_Parms(#JSMXHDLE1)

...


  1. *Excel を閉じる
    Use Builtin(jsmx_command) With_Args(#jsmxhdle1 CLOSE) To_Get(#jsmsts #jsmmsg)
    Execute Subroutine(CHECK_STS) With_Parms(#JSMXHDLE1)
    If (#jsmsts = OK)
    MESSAGE MSGTXT('Excel ファイル ' + 'jsmemp' + #datetimec + '.xlsx が作成されました')
    Endif

    *サービスのアンロード
    #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)
    Return

    *
    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
    *
    Endroutine

...


  1. ファンクション iiiFN12 をコンパイルします。IBM i の JSM サーバーを利用している場合、チェックイン後にファンクション iiiFN12 をコンパイルします。

...