ステップ2. FTPサービスのJSMコマンドを作成する

LANSA Integrator

ステップ2. FTPサービスのJSMコマンドを作成する


このステップでは、ファンクションiiiFN03を使用して、テンプレートBBJSMXCMDでJSMコマンドを作成し、FTPサービスで以下のタスクを実行します。

·         FTPサイトに接続する

·         ユーザーIDとパスワードでログインする

·         ディレクトリを設定する

·         指定のパスでファイルをリストする

·         FTPサイトを終了する

BBJSMXCMDテンプレートを使用する場合、以下のコマンド、キーワード、値を使用します。

コマンド

キーワード

作業リスト

CONNECT

HOST

#S_218HOST

 

LOGIN

USER

#S_218USER

 

PASSWORD

#S_218PSWD

CHGDIR

PATH

#S_218DIR

 

LIST

DIR

 

WL_218

QUIT

 

 

 

1.   iiiFN03ファンクションを使用して、テンプレートBBJSMXCMDを実行します。

a.   始める前に、コメント「ここに処理ロジックを記述してください」の後のコメント行の先頭にカーソルを置き、ツールバーの[ウィザード(テンプレート)の実行]ボタンをクリックするか、[編集]メニューで[ウィザード(テンプレート)の実行]オプションを選択します。

b.   テンプレートのリストでBBJSMXCMDを選択します。

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

質問

回答

説明

このテンプレートを使用して、JSMXSKELで生成されたファンクションでコマンドを作成します。

Enterを押して続行します。

これは情報を示すパネルです。

作成するJSMコマンドを入力します。

CONNECT

 

指定するキーワードの数は?

1

 

キーワード名を入力します。

HOST

 

HOSTキーワードの値を入力します。

#S_218HOST

画面に入力したホスト値

作業リストの名前を入力します(このコマンドで作業リストを使用する場合)。

Enterを押します。

このコマンドでは作業リストは必要ありません。

別のJSMコマンドを入力しますか?

Y

 

作成するJSMコマンドを入力します。

LOGIN

 

指定するキーワードの数は?

2

 

キーワード名を入力します。

USER

 

USERキーワードの値を入力します。

#S_218USER

画面に入力したユーザー値

キーワード名を入力します。

PASSWORD

 

PASSWORDキーワードの値を入力します。

#S_218PSWD

画面に入力したパスワード値

作業リストの名前を入力します(このコマンドで作業リストを使用する場合)。

Enterを押します。

このコマンドでは作業リストは必要ありません。

別のJSMコマンドを入力しますか?

Y

 

作成するJSMコマンドを入力します。

CHGDIR

 

指定するキーワードの数は?

1

 

キーワード名を入力します。

PATH

 

PATHキーワードの値を入力します。

#S_218DIR

画面に入力したパス

作業リストの名前を入力します(このコマンドで作業リストを使用する場合)。

Enterを押します。

このコマンドでは作業リストは必要ありません。

別のJSMコマンドを入力しますか?

Y

 

作成するJSMコマンドを入力します。

LIST

 

指定するキーワードの数は?

1

 

キーワード名を入力します。

PATH

 

PATHキーワードの値を入力します。

入力した以前の値が含まれているフィールドをブランクにしてEnterを押します。

このキーワードに値は必要ありません。

作業リストの名前を入力します(このコマンドで作業リストを使用する場合)。

WL_218

ファイルのリストを返す作業リスト

別のJSMコマンドを入力しますか?

Y

 

作成するJSMコマンドを入力します。

QUIT

 

指定するキーワードの数は?

0

このコマンドにキーワードはありません。

別のJSMコマンドを入力しますか?

N

 

d.   BBJSMCMDテンプレートが完了すると、FTPサービスの処理に必要なすべてのコードが用意されています。

      RDMLXコードは以下のように表示されます。

* BUILD THE JSM COMMAND
#JSMXCMD := CONNECT
EXECUTE SUBROUTINE(KEYWRD) WITH_PARMS(#JSMXCMD HOST #S_218HOST)
USE BUILTIN(JSMX_COMMAND) WITH_ARGS(#JSMXHDLE1 #JSMXCMD) TO_GET(#JSMSTS #JSMMSG)
EXECUTE SUBROUTINE(CHECK_STS) WITH_PARMS(#JSMXCMD)
*
#JSMXCMD := LOGIN
EXECUTE SUBROUTINE(KEYWRD) WITH_PARMS(#JSMXCMD USER #S_218USER)
EXECUTE SUBROUTINE(KEYWRD) WITH_PARMS(#JSMXCMD PASSWORD #S_218PSWD)
USE BUILTIN(JSMX_COMMAND) WITH_ARGS(#JSMXHDLE1 #JSMXCMD) TO_GET(#JSMSTS #JSMMSG)
EXECUTE SUBROUTINE(CHECK_STS) WITH_PARMS(#JSMXCMD)
*
#JSMXCMD := CHGDIR
EXECUTE SUBROUTINE(KEYWRD) WITH_PARMS(#JSMXCMD PATH #S_218DIR)
USE BUILTIN(JSMX_COMMAND) WITH_ARGS(#JSMXHDLE1 #JSMXCMD) TO_GET(#JSMSTS #JSMMSG)
EXECUTE SUBROUTINE(CHECK_STS) WITH_PARMS(#JSMXCMD)
*
#JSMXCMD := LIST
EXECUTE SUBROUTINE(KEYWRD) WITH_PARMS(#JSMXCMD PATH *BLANKS)
USE BUILTIN(JSMX_COMMAND) WITH_ARGS(#JSMXHDLE1 #JSMXCMD) TO_GET(#JSMSTS #JSMMSG #WL_218)
EXECUTE SUBROUTINE(CHECK_STS) WITH_PARMS(#JSMXCMD)
*
#JSMXCMD := QUIT
USE BUILTIN(JSMX_COMMAND) WITH_ARGS(#JSMXHDLE1 #JSMXCMD) TO_GET(#JSMSTS #JSMMSG)
EXECUTE SUBROUTINE(CHECK_STS) WITH_PARMS(#JSMXCMD)
 

完全なRDML/RDMLXコードは以下のように表示されます。

iiiFN04:

* =======================================================
* Copyright .....: (C) LANSA, 1989
* Process .......: IIIPRO02
* Function ......: IIIFN04
* Created by ....: PCXUSER
* Created on ....: 08/06/23 at 10:58:57
* Description ...: Display FTP Service
* =======================================================
* Working fields, lists and groups
* =======================================================
DEFINE FIELD(#W_TYPE) TYPE(*CHAR) LENGTH(1) DESC('Type of file')
DEFINE FIELD(#W_FILE) TYPE(*CHAR) LENGTH(80) COLHDG('File Name')

DEF_LIST NAME(#WL_218) FIELDS(#W_TYPE #W_FILE) TYPE(*WORKING) ENTRYS(500)
DEF_LIST NAME(#BL_218) FIELDS(#W_FILE) ENTRYS(500)

* Group for all input fields
DEFINE FIELD(#S_218DIR) TYPE(*CHAR) LENGTH(200) DESC('FTP Directory')
GROUP_BY NAME(#GB_PNLDTA) FIELDS(#S_218HOST #S_218DIR #S_218USER #S_218PSWD)
*
* =======================================================
* Program Mainline : IIIFN04
* =======================================================
*
FUNCTION OPTIONS(*DIRECT)

BEGIN_LOOP
REQUEST FIELDS(#GB_PNLDTA) BROWSELIST(#BL_218)
CLR_LIST NAMED(#WL_218)
CLR_LIST NAMED(#BL_218)
EXCHANGE FIELDS(#GB_PNLDTA)
CALL PROCESS(*DIRECT) FUNCTION(#IIIFN03) PASS_LST(#WL_218)
SELECTLIST NAMED(#WL_218)
ADD_ENTRY TO_LIST(#BL_218)
ENDSELECT
END_LOOP 

iiiFN03:

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

* Process ........:JMIPRO02

* Function .......:JMIFN03
* Created on .....:08/11/13 at 15:11:06
* Description ....:Use FTP Service
* Template........:JSMXSKEL
* ====================================================
FUNCTION OPTIONS(*DIRECT) RCV_LIST(#wl_218)
DEFINE FIELD(#W_TYPE) TYPE(*CHAR) LENGTH(1) DESC('Type of file')
DEFINE FIELD(#W_FILE) TYPE(*CHAR) LENGTH(80) COLHDG('File Name')
DEF_LIST NAME(#WL_218) FIELDS(#W_TYPE #W_FILE) TYPE(*WORKING) ENTRYS(500)
*
* 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
*
* BUILD THE JSM COMMAND
#JSMXCMD := CONNECT
EXECUTE SUBROUTINE(KEYWRD) WITH_PARMS(#JSMXCMD HOST #S_218HOST)
USE BUILTIN(JSMX_COMMAND) WITH_ARGS(#JSMXHDLE1 #JSMXCMD) TO_GET(#JSMSTS #JSMMSG)
EXECUTE SUBROUTINE(CHECK_STS) WITH_PARMS(#JSMXCMD)
*
#JSMXCMD := LOGIN
EXECUTE SUBROUTINE(KEYWRD) WITH_PARMS(#JSMXCMD USER #S_218USER)
EXECUTE SUBROUTINE(KEYWRD) WITH_PARMS(#JSMXCMD PASSWORD #S_218PSWD)
USE BUILTIN(JSMX_COMMAND) WITH_ARGS(#JSMXHDLE1 #JSMXCMD) TO_GET(#JSMSTS #JSMMSG)
EXECUTE SUBROUTINE(CHECK_STS) WITH_PARMS(#JSMXCMD)
*
#JSMXCMD := CHGDIR
EXECUTE SUBROUTINE(KEYWRD) WITH_PARMS(#JSMXCMD PATH #S_218DIR)
USE BUILTIN(JSMX_COMMAND) WITH_ARGS(#JSMXHDLE1 #JSMXCMD) TO_GET(#JSMSTS #JSMMSG)
EXECUTE SUBROUTINE(CHECK_STS) WITH_PARMS(#JSMXCMD)
*
#JSMXCMD := LIST
EXECUTE SUBROUTINE(KEYWRD) WITH_PARMS(#JSMXCMD PATH *BLANKS)
USE BUILTIN(JSMX_COMMAND) WITH_ARGS(#JSMXHDLE1 #JSMXCMD) TO_GET(#JSMSTS #JSMMSG #WL_218)
EXECUTE SUBROUTINE(CHECK_STS) WITH_PARMS(#JSMXCMD)
*
#JSMXCMD := QUIT
USE BUILTIN(JSMX_COMMAND) WITH_ARGS(#JSMXHDLE1 #JSMXCMD) TO_GET(#JSMSTS #JSMMSG)
EXECUTE SUBROUTINE(CHECK_STS) WITH_PARMS(#JSMXCMD)
*
* 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