Page History
このステップでは、ファンクション 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 |
...
- iiiFN02 ファンクションを使用して、テンプレート BBJSMXCMD を実行します。
...
- 始める前に、コメントYOUR OWN LOGIC HERE (独自のロジックはここ) の後のコメント行の先頭にカーソルを置き、[デザイン] リボンで [テンプレート ウィザード] ボタンをクリックします。
...
- テンプレートのリストから BBJSMXCMD を選択して、実行ボタンをクリックします。
以下の表に示すように、テンプレートの質問に回答します。
質問
回答
コメント
このテンプレートを使用して、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
...
- BBJSMXCMD テンプレートが完了すると、FTP サービスの処理に必要なすべてのコードが用意されています。
RDMLX コードは以下のようになります。
* BUILD THE JSM COMMAND#JSMXCMD := CONNECTEXECUTE 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 := LOGINEXECUTE 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 := CHGDIREXECUTE 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 := LISTEXECUTE 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 := QUITUSE BUILTIN(JSMX_COMMAND) WITH_ARGS(#JSMXHDLE1 #JSMXCMD) TO_GET(#JSMSTS #JSMMSG)EXECUTE SUBROUTINE(CHECK_STS) WITH_PARMS(#JSMXCMD)
最終的な RDML/RDMLX コードは以下のようになります。
...
* 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: ' + #JSMSTSMESSAGE MSGID(DCM9899) MSGF(DC@M01) MSGDTA(#MSGDTA)#MSGDTA := 'Error Message: ' + #JSMMSGMESSAGE MSGID(DCM9899) MSGF(DC@M01) MSGDTA(#MSGDTA)ENDIF*ENDROUTINE