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

INT002 - FTP サービスの利用
このステップでは、ファンクション 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 (独自のロジックはここ) の後のコメント行の先頭にカーソルを置き、\[デザイン\] リボンで !worddavaf485e25f57cd86bb5b0fc63f3f1b1cc.png|height=32,width=32! \[テンプレート ウィザード\] ボタンをクリックします。
b.      テンプレートのリストから BBJSMXCMD を選択して、実行ボタンをクリックします。 
c.      .以下の表に示すように、テンプレートの質問に回答します。

質問

回答

コメント

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

Enterを押して続行します。

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

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

CONNECT

 

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

1

 

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

HOST

 

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

#S_HOST

画面に入力したホスト値

<ac:structured-macro ac:name="unmigrated-wiki-markup" ac:schema-version="1" ac:macro-id="7f4bb1f3-5895-445b-808e-24fb0d68ed7a"><ac:plain-text-body><![CDATA[

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

[ENTER]を押します。

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

]]></ac:plain-text-body></ac:structured-macro>

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

Y

 

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

LOGIN

 

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

2

 

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

USER

 

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

#S_USER

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

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

PASSWORD

 

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

#S_PSWD

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

<ac:structured-macro ac:name="unmigrated-wiki-markup" ac:schema-version="1" ac:macro-id="c7b05f4b-a41b-418c-b1f8-4b132349b794"><ac:plain-text-body><![CDATA[

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

[ENTER]を押します。

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

]]></ac:plain-text-body></ac:structured-macro>

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

Y

 

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

CHGDIR

 

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

1

 

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

PATH

 

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

#S_DIR

画面に入力したパス

<ac:structured-macro ac:name="unmigrated-wiki-markup" ac:schema-version="1" ac:macro-id="490dfef1-5437-4933-91ff-3c69d1af3da3"><ac:plain-text-body><![CDATA[

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

[ENTER]を押します。

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

]]></ac:plain-text-body></ac:structured-macro>

別の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: