このステップでは、使用するJSMファンクションに必要な基本のRDMLXコードを含むファンクションを作成します。このファンクションは、JSMXSKELテンプレートを使用して作成されます。リポジトリのフィールドを使ってファンクションを作成します。このフィールドがシステムに存在しない場合は作成する必要があります。
以下のフィールドがリポジトリに定義されていることを確認します。これらのフィールドはこの演習で必修となります。これらのフィールドが存在しない場合は、以下に示された内容で作成する必要があります。 存在していたとしても、すべてのフィールドで小文字入力が許可されていることを確認してください。
S_HOST ALPHA(100) – ホスト
S_USER ALPHA(20) – ユーザー
S_PSWD ALPHA(20) – パスワード
S_DIR ALPHA(200) – ディレクトリ
iiiPRO02 JSM プロセス という名前の新しい LANSA プロセスを作成します。iiiは一意の 3 文字です(同じ名前のプロセスがすでにある場合は、iiiに対して別の文字セットを選択します)。
iiiFN02 という名前で新しいファンクションを作成します。プロセス iiiPRO02 に属する FTP サービスを使用します。このファンクションは、FTPサービスを使用してファイル・リストを取得します。[RDMLXフィールドの保管の確認] ボックスが選択されていることを確認します。テンプレートは JSMXSKEL を選択します。
以下の表に示すように、テンプレートの質問に回答します。
質問
回答
コメント
JSMサービスをロードしますか?
FTPSERVICE
ファンクションの始めに 2 つのフィールドを定義します。W_TYPE は Alpha フィールド、長さ 1 に、W_FILE は Alpha フィールド、長さ 80 に定義します。このフィールドは、FTP サービスの List JSM コマンドで必要です。
RDMLX コードは以下のようになります。* 作業フィールドDEFINE FIELD(#W_TYPE) TYPE(*CHAR) LENGTH(1) DESC('Type of file')DEFINE FIELD(#W_FILE) TYPE(*CHAR) LENGTH(80) COLHDG('File Name')
作業フィールドの定義の直後に、FTP サービスから返されるファイル・リストの受信に使用する作業リストを定義します。
この作業リストの名前を WL_FILES にします。
ENTRYS パラメータの値を *MAX に変更します。
- フィールド W_TYPE と W_FILE は作業リストのエントリー・フィールドとして使用します。
RDMLX コードは以下のようになります。
* ファイル・リストを受信する作業リストDEF_LIST NAME(#WL_FILES) FIELDS(#W_TYPE #W_FILE) TYPE(*WORKING) ENTRYS(*max)
ファンクション・ステートメントで WL_FILES を受信リストとして指定します。
FUNCTION OPTIONS(*DIRECT) RCV_LIST(#WL_FILES)ファンクション iiiFN02 を保存します。
iiiFRM02 - FTP サービス表示という名前の新しいフォーム/基本フォームを作成します。iii は一意の 3 文字です。
フィールド W_TYPE および W_FILE の定義と、作業リスト WL_FILES の定義を iiiFN02 からコピーします。
返されたファイル・リストを WL_FILES に表示するために使用するリストビュー・コントロールをフォームにドラッグします。
- フィールド STD_QSEL をこのリストビューにドラッグします。
- WidthType は Remainder に設定します。
コードは以下のようになります。
Function Options(*DIRECT)Begin_Com Role(*EXTENDS #PRIM_FORM) Clientwidth(484) Clientheight(301) Componentversion(2) Left(839) Top(285)Define_Com Class(#PRIM_LTVW) Name(#ListView1) Columnbuttonheight(27) Componentversion(2) Displayposition(1) Fullrowselect(True) Keyboardpositioning(SortColumn) Left(56) Parent(#COM_OWNER) Showsortarrow(True) Tabposition(1) Top(37) Height(228) Width(393)Define_Com Class(#PRIM_LVCL) Name(#LVCL1) Displayposition(1) Parent(#ListView1) Source(#STD_QSEL) Widthtype(Remainder)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)EndroutineEnd_Comフィールド S_HOST、S_DIR、S_USER、S_PSWD をリストビュー・コントロールの上のフォームにドラッグします。 必要に応じてリストビュー・コントロールのサイズや位置を調整してください。
プッシュ・ボタンのコントロールをフォームjにドラッグして、接続というキャプションとクリックイベントを追加します。
クリックイベント・ハンドラーで、以下を実行するロジックを追加します。
- 作業リストとリストビュー・コントロールの両方をクリア
- フィールド S_HOST、S_DIR, S_USER、S_PSWD を交換
- 作業リスト WL_FILES を渡して iiiFN02 を呼び出す
- STD_QSEL を W_FILE に設定した後、作業リスト内をループして、リストビュー・コントロールにエントリーを追加
コードは以下のようになります。
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_FILEADD_ENTRY TO_LIST(#ListView1)ENDSELECT
フォーム iiiFRM02 をコンパイルします。