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

Compare with Current View Page History

« Previous Version 2 Next »

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

FTP サイトに接続する

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

ディレクトリを設定する

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

FTP サイトを終了する

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

コマンド

キーワード

作業リスト

CONNECT

HOST

#S_HOST


LOGIN


USER

#S_USER



PASSWORD

#S_PSWD

CHGDIR

PATH

#S_DIR


LIST

DIR


WL_FILES

QUIT




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

a.      始める前に、コメントYOUR OWN LOGIC HERE (独自のロジックはここ) の後のコメント行の先頭にカーソルを置き、[デザイン] リボンで [テンプレート ウィザード] ボタンをクリックします。
b.      テンプレートのリストから BBJSMXCMD を選択して、実行ボタンをクリックします。 
c.      .以下の表に示すように、テンプレートの質問に回答します。

質問

回答

コメント

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

Enterを押して続行します。

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

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

CONNECT


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

1


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

HOST


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

#S_HOST

画面に入力したホスト値

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

[ENTER]を押します。

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

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

Y


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

LOGIN


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

2


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

USER


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

#S_USER

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

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

PASSWORD


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

#S_PSWD

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

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

[ENTER]を押します。

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

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

Y


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

CHGDIR


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

1


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

PATH


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

#S_DIR

画面に入力したパス

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

[ENTER]を押します。

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

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

Y


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

LIST


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

1


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

PATH


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

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

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

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

WL_FILES

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

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

Y


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

QUIT


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

0

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

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

N


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

  RDMLX コードは以下のようになります。

* BUILD THE JSM COMMAND
#JSMXCMD := CONNECT
EXECUTE SUBROUTINE(KEYWRD) WITH_PARMS(#JSMXCMD HOST #S_HOST)
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_USER)
EXECUTE SUBROUTINE(KEYWRD) WITH_PARMS(#JSMXCMD PASSWORD #S_PSWD)
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_DIR)
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_FILES)
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 コードは以下のようになります。

iiiFRM02:

Function Options(*DIRECT)
Begin_Com Role(*EXTENDS #PRIM_FORM) Clientwidth(834) Clientheight(414) Componentversion(2) Left(625) Top(175)
Define_Com Class(#PRIM_LTVW) Name(#ListView1) Columnbuttonheight(27) Componentversion(2) Displayposition(1) Fullrowselect(True) Keyboardpositioning(SortColumn) Left(24) Parent(#COM_OWNER) Showsortarrow(True) Tabposition(1) Top(168) Height(228) Width(673)
Define_Com Class(#PRIM_LVCL) Name(#LVCL1) Displayposition(1) Parent(#ListView1) Source(#STD_QSEL) Widthtype(Remainder)
Define_Com Class(#PRIM_PHBN) Name(#Button1) Displayposition(2) Left(712) Parent(#COM_OWNER) Tabposition(2) Top(168) Caption('Connect')
Define_Com Class(#S_HOST.Visual) Name(#S_HOST) Componentversion(1) Displayposition(3) Height(21) Left(27) Parent(#COM_OWNER) Tabposition(3) Top(13) Usepicklist(False) Width(782)
Define_Com Class(#S_USER.Visual) Name(#S_USER) Componentversion(1) Displayposition(4) Height(21) Left(26) Parent(#COM_OWNER) Tabposition(4) Top(43) Usepicklist(False) Width(419)
Define_Com Class(#S_PSWD.Visual) Name(#S_PSWD) Componentversion(1) Displayposition(5) Height(21) Left(30) Parent(#COM_OWNER) Tabposition(5) Top(72) Usepicklist(False) Width(419)
Define_Com Class(#S_DIR.Visual) Name(#S_DIR) Componentversion(1) Displayposition(6) Height(21) Left(32) Parent(#COM_OWNER) Tabposition(6) Top(101) Usepicklist(False) Width(782)
 
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_FILES) Fields(#W_TYPE #W_FILE) Type(*WORKING) Entrys(*MAX)
 
Evtroutine Handling(#com_owner.CreateInstance)
 
Set Com(#com_owner) Caption(*component_desc)
 
Endroutine
 
Evtroutine Handling(#Button1.Click)
CLR_LIST NAMED(#WL_FILES)
CLR_LIST NAMED(#ListView1)
EXCHANGE FIELDS(#S_HOST #S_DIR #S_USER #S_PSWD)
CALL PROCESS(*DIRECT) FUNCTION(IIIFN02) PASS_LST(#WL_FILES)
SELECTLIST NAMED(#WL_FILES)
#STD_QSEL := #W_FILE
ADD_ENTRY TO_LIST(#ListView1)
ENDSELECT
Endroutine
End_Com
 

iiiFN02:

====================================================
*  Process ........:  JMIPRO02
*  Function .......:  JMIFN02
*  Created on .....:  08/11/13  at  15:11:06
*  Description ....:  Use FTP Service
*  Template........:  JSMXSKEL

====================================================
FUNCTION OPTIONS(*DIRECT) RCV_LIST(#WL_FILES)
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_FILES) FIELDS(#W_TYPE #W_FILE) TYPE(*WORKING) ENTRYS(*MAX)
*
*  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_HOST)
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_USER)
EXECUTE SUBROUTINE(KEYWRD) WITH_PARMS(#JSMXCMD PASSWORD #S_PSWD)
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_DIR)
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_FILES)
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
 

  • No labels