ステップ1. 基本のJSMファンクションを作成する
このステップでは、使用するJSMファンクションに必要な基本のRDMLXコードを含むファンクションを作成します。このファンクションは、JSMXSKELテンプレートを使用して作成されます。SET218例にインポートされたリポジトリ・フィールドを使用してファンクションを作成します。
1. iiiPRO02 JSM Processという新しいLANSAプロセスを作成します。iiiは一意の3文字です(プロセスがすでにある場合は、iiiに対して別の文字セットを選択します)。
2. プロセスiiiFN02に属するiiiFN03という新しいファンクションを作成します。このファンクションは、FTPサービスを使用してファイル・リストを取得します。[RDMLXフィールドの保管の確認]オプションが選択されていることを確認します。JSMXSKELをテンプレートとして選択します。
3. 以下の表に示すように、テンプレートの質問に回答します。
質問 |
回答 |
説明 |
---|---|---|
JSMサービスをロードしますか? |
FTPSERVICE |
4. ファンクションの開始時に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')
5. 作業フィールドの定義の直後に、FTPサービスで返されるファイル・リストの受信に使用される作業リストを定義します。
· 作業リストの名前をWL_218にします。
· ENTRYSパラメータの省略値を500に増やしてください。
· W_TYPEフィールドとW_FILEフィールドを作業リスト・エントリー・フィールドとして使用します。
RDMLXコードが以下のように表示されます。
*ファイル・リストを受信する作業リスト
DEF_LIST NAME(#WL_218) FIELDS(#W_TYPE #W_FILE) TYPE(*WORKING) ENTRYS(500)
6. ファンクション・ステートメントでWL_218を受信リストとして指定します。
FUNCTION OPTIONS(*DIRECT) RCV_LIST(#WL_218)
7. ファンクションiiiFN03を保存します。
8. プロセスiiiPRO02に属するiiiFN04 Display FTP Serviceという新しいファンクションを作成します。iiiは一意の3文字です。[RDMLXフィールドの保管の確認]ボックスが選択されていないことを確認します。テンプレートを選択しないでください。
9. W_TYPEフィールドおよびW_FILEフィールドの定義と、作業リストWL_218の定義をiiiFN03からコピーします。
10. 返されたファイル・リストをW_218に表示するために使用される参照リストを定義します。
· 参照リストの名前をBL_218にします。
· フィールドW_FILEを唯一の参照リスト・エントリー・フィールドとして使用します。
コードが以下のように表示されます。
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_218) FIELDS(#W_TYPE #W_FILE) TYPE(*WORKING) ENTRYS(500)
DEF_LIST NAME(#BL_218) FIELDS(#W_FILE) ENTRYS(500)
11. 画面パネルに表示する入力フィールド(S_218HOST、S_218DIR、S_218USER、S_218PSWD)のGROUP_BYを作成します(これらのフィールドはSET例でインポートされています)。
RDMLXコードが以下のように表示されます。
*すべての入力フィールドをグループ化する
GROUP_BY NAME(#GB_PNLDTA) FIELDS(#S_218HOST #S_218DIR #S_218USER #S_218PSWD)
フィールドS_218DIRが定義されない場合、ファンクションで*CHAR、長さ200として定義します。
DEFINE FIELD(#S_218DIR) TYPE(*CHAR) LENGTH(200) DESC('FTP Directory')
iiiFN04でS_218DIRを定義する必要がある場合、この定義もiiiFN03にコピーします。
12. ファンクションの定義後に、以下のロジックをファンクションに追加します。
a. BEGIN_LOOPコマンドとEND_LOOPコマンドを挿入する
b. ループ内に、フィールドのGB_PNLDTAグループを要求するREQUESTコマンドを挿入し、参照リストBL_218を含める
c. 作業リストと参照リストの両方を消去する
d. フィールドのグループGB_PNLDTAを交換する
e. 作業リストWL_218を渡してiiiFN03を呼び出す
f. 作業リストをループして参照リストにエントリーを追加する
コードが以下のように表示されます。
BEGIN_LOOP
REQUEST FIELDS(#GB_PNLDTA) BROWSELIST(#BL_218)
CLR_LIST NAMED(#WL_218)
CLR_LIST NAMED(#BL_218)
EXCHANGE FIELDS(#GB_PNLDTA)
CALL PROCESS(*DIRECT) FUNCTION(IIIFN03) PASS_LST(#WL_218)
SELECTLIST NAMED(#WL_218)
ADD_ENTRY TO_LIST(#BL_218)
ENDSELECT
END_LOOP
13. ファンクションiiiFN04をコンパイルします。