ステップ1. テンプレートJSMXSKELを使用してファンクションを作成する

LANSA Integrator

ステップ1. テンプレートJSMXSKELを使用してファンクションを作成する


このステップでは、JSMを開いて終了し、FTPServiceサービスをロードするテスト・ファンクションをテンプレートJSMXSKELを使用して作成します。JSMXSKELのコピーがない場合、最初に「RDMLXテンプレートの作成」の手順を使用してJSMXSKELを作成する必要があります。

1.   LANSA開発環境を使用する場合、チュートリアルに指定された区画(通常はDEM)にサイン・オンします。

2.   JSMXSKELテンプレートではJSMXCMD、JSMXHDLE1、JSMSTS、JSMMSGの各フィールドが必要なため、これらのフィールドがリポジトリで定義されているかどうかをチェックします。これらのフィールドが存在しない場合、以下のように作成できます。

·         JSMXCMD STRING(65535,0) (RDMLXフィールドでなければならない)

·         JSMXHDLE1 ALPHA(4,0)

·         JSMSTS ALPHA(20,0)

·         JSMMSG ALPHA(200,0)

3.   iiiPRO01 JSM Test Processという新しいLANSAプロセスを作成します。iiiは一意の3文字です(プロセスがすでにある場合は、iiiに対して別の文字セットを選択します)。

4.   プロセスiiiPRO01に属するiiiFN01 JSM Open/Closeという新しいファンクションを作成します。[RDMLXフィールドの保管の確認]チェックボックスが選択されていることを確認します。ファンクションがアプリケーション・テンプレートから生成されるように指定します([テンプレート]ドロップダウンでJSMXSKELを選択します)。

5.   以下の表に示すようにテンプレートの質問に回答します。

質問

回答

説明

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

FTPSERVICE

 

  

6.   iiiFN01ファンクションを編集して、生成されたRDMLXコードを調べます。

      ファンクションは以下のように表示されます。

* ====================================================

* Process ........:JMIPRO01
* Function .......:JMIFN01
* Created on .....:08/11/13 at 14:27:55
* Description ....:JSM Open/Close
* Template........:JSMXSKEL
* ====================================================
FUNCTION OPTIONS(*DIRECT)
*JSMを開いて状況を検証する
USE BUILTIN(JSMX_OPEN) TO_GET(#JSMSTS #JSMMSG #JSMXHDLE1)
EXECUTE SUBROUTINE(CHECK_STS) WITH_PARMS(#JSMXHDLE1)
*サービス・ロード・コマンドを作成する
#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)
* 各自のロジックをここに記載
*
*サービスをアンロードする
#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
* JSMコマンド、既存のJSMコマンドを生成するサブルーチン
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
*発行された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
ENDROUTINE
 

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

·         JSMコマンドのキーワードとそのの生成が簡単になるようにKEYWRDサブルーチンを使用している点に注意してください。KEYWRDサブルーチンの詳細については、「INT003 - FTPサービスの使用」で説明します。

·         エラー処理用の各JSMコマンドの後にCHECK_STSサブルーチンが使用されている点に注意してください。このルーチンはエラー・メッセージの書式を整えるだけです。エラーの発生時にファンクションを中断するわけではありません。

·         CHECK_STSサブルーチンには、状況をチェックするハンドルを指定するパラメータが必要です。これは、JSMサーバーへの複数の接続が同時に開くことがあるためです。