このステップでは、JSMを開いて終了し、テンプレートJSMXSKELを使用して、FTPServiceサービスをロードするテスト・ファンクションを作成します。

  1. LANSA 開発環境を使用する場合、演習用に指定された区画にサインオンします。
  2. 以下のフィールドがリポジトリに定義されていることを確認します。これらのフィールドはこの演習やその他の演習でも必修となります。これらのフィールドが存在しない場合は、以下に示された内容で作成する必要があります。
    • JSMXCMD STRING(65535) (RDMLX フィールドであること)
    • JSMXHDLE1 ALPHA(4)
    • JSMXSTS ALPHA(20)
    • JSMSTS ALPHA(20)
    • JSMXMSG ALPHA(200)
    • JSMMSG ALPHA(200)
  3. iiiPRO01 JSM テスト プロセスという名前で新しい LANSA プロセスを作成します。iii は一意の 3 文字です (プロセス名がすでに存在する場合は、iii は別の文字を選択してください。)
  4. プロセス iiiPRO01 に属する iiiFN01 JSM オープン/クローズ という新しいファンクションを作成します。[RDMLXフィールドの保管の確認] チェックボックスが選択されていることを確認します。ファンクションがアプリケーション・テンプレートにより生成されるように指定します (テンプレート\] ドロップダウンで JSMXSKEL を選択)。
  5. 以下の表に示すように、テンプレートの質問に回答します。

    質問

    回答

    コメント

    JSMサービスをロードしますか?

    FTPSERVICE


  6. iiiFN01 ファンクションを編集して、生成された RDMLX コード内容を確認します。
    ファンクションは以下のように表示されています。
* ====================================================
*  Process ........:  IIIPRO01
*  Function .......:  IIIFN01
*  Created on .....:  16/07/13  at  12:19:30
*  Description ....:  Test 01
*  Template........:  JSMXSKEL
* ====================================================
Function Options(*DIRECT)
*
*  OPEN JSM AND VERIFY STATUS
Use Builtin(JSMX_OPEN) To_Get(#JSMSTS #JSMMSG #jsmxhdle1)
Execute Subroutine(CHECK_STS) With_Parms(#jsmxhdle1)
*
* BUILD THE SERVICE LOAD COMMAND
#JSMXCMD := 'SERVICE_LOAD'
Execute Subroutine(KEYWRD) With_Parms(#JSMXCMD 'SERVICE' 'FTPSERVICE')
Use Builtin(JSMX_COMMAND) With_Args(#JSMXHDLE1 #JSMXCMD) To_Get(#JSMSTS #JSMMSG)
Execute Subroutine(CHECK_STS) With_Parms(#JSMXHDLE1)
*
*     YOUR OWN LOGIC HERE
*
* UNLOAD SERVICE
#JSMXCMD := 'SERVICE_UNLOAD'
Use Builtin(JSMX_COMMAND) With_Args(#JSMXHDLE1 #JSMXCMD) To_Get(#JSMSTS #JSMMSG)
Execute Subroutine(CHECK_STS) With_Parms(#JSMXHDLE1)
* CLOSE JSM AND VERIFY STATUS
Use Builtin(JSMX_CLOSE) With_Args(#JSMXHDLE1) To_Get(#JSMSTS #JSMMSG)
Execute Subroutine(CHECK_STS) With_Parms(#JSMXHDLE1)
*
Return
*
* Subroutine to build JSM commands. existing JSM command
*
Subroutine Name(KEYWRD) Parms((#W_CMDX *BOTH) (#W_KEYWRD *RECEIVED) (#W_KEYVAL *RECEIVED))
Define Field(#W_CMDX) Reffld(#JSMXCMD)
Define Field(#W_KEYWRD) Reffld(#STD_TEXT)
Define Field(#W_KEYVAL) Reffld(#STD_TEXTL)
#W_CMDX += ' ' + #W_KEYWRD + '(' + #W_KEYVAL + ')'
Endroutine
*
*  Check the status of the JSM command issued
*
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


JSM を開く際に利用されるコマンド、JSM、FTPService サービスをロードするコマンド、サービスをアンロードするコマンド、JSMXを終了するコマンドに着目してください。

  • JSM コマンドのキーワードとその値を簡単に生成できるように、KEYWRD サブルーチンが使われています。サブルーチン KEYWRD の詳細は、「INT002 - FTP サービスの利用 」で説明されています。
  • エラー処理は、各 JSM コマンドの後に CHECK_STS サブルーチンが使用されています。このルーチンはエラー・メッセージの書式を整えるだけです。エラーの発生時にファンクションを中断するわけではありません。
  • CHECK_STS サブルーチンには、状況をチェックするハンドルを指定するパラメータが必要です。これは、JSM サーバーへの複数の接続が同時に開くことがあるためです。
  • No labels