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

Compare with Current View Page History

Version 1 Next »

ステップ 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 (独自のロジックはここ) の後のコメント行の先頭にカーソルを置き、[デザイン] リボンで [テンプレート ウィザード] ボタンをクリックします。
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:

  • ====================================================
    *  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