9.91 GET_ILENTRY_LIST
注意: 9.1 組み込み関数の規則 利用オプション
データ・ディクショナリから影響リスト・エントリーとその記述のリストを取得して、呼び出し元のRDMLファンクションに可変長の作業リストで戻します。事前にLANSA開発メニューを使用して影響リストを作成し、エントリーを追加しておく必要があります。
この BIF は、9.2 開発環境のみで使用される組み込み関数 です。
引数
番号 | タイプ | 必須/任意 | 記述 | 最小長 | 最大長 | 最小小数桁数 | 最大小数桁数 |
|---|---|---|---|---|---|---|---|
1 | A | 必須 | 取得するエントリーが入っている影響リストの名前 | 7 | 7 | ||
2 | A | 必須 | 開始位置の値 エントリー・タイプとエントリー名が含まれています。戻されるリストは、影響リストの中で、この引数で渡された値よりも大きく、かつ一番近いエントリーから始まります。 エントリー・タイプは以下のとおりです。 DF (フィールド)、FD (ファイル)、 PF (ファンクション)、SV (システム変数)、MT (多言語テキスト) エントリー名は以下のとおりです。 フィールド - フィールド名 | 1 | 22 |
戻り値
番号 | タイプ | 必須/任意 | 記述 | 最小長 | 最大長 | 最小小数桁数 | 最大小数桁数 |
|---|---|---|---|---|---|---|---|
1 | L | 必須 | フィールド情報を含める作業リスト 呼び出し元のRDMLファンクションは、項目の長さの合計が正確に70バイトの作業リストを提供しなければなりません。 戻されるそれぞれのリスト項目は、次のような形式にする必要があります。 開始 - 終了 説明 3 - 22 エントリー名 フィールド ファイル ファンクション システム変数 言語変数 | ||||
2 | A | 任意 | 戻されたリストの最後のエントリー 通常、この値は次にこの組み込み関数を呼び出す時にポジショニング用の引数として使用されます。 | 1 | 22 | ||
3 | A | 任意 | 戻りコード OK = 影響リスト・エントリー詳細のリスト(満載または一部)が戻された。リストに戻された以上のエントリーは存在しない OV = リスト(満載)が戻された。ただしリストに収まらなかったエントリーがさらに存在する NR = リストは空で戻された。リストの最後のエントリーがブランクで戻される | 2 | 2 |
例
このファンクションを使用すれば、影響リストの中にあるファイル・エントリーをコンパイルすることができます。影響リストは、LANSA開発者メニュー・オプションのインパクト・リストの処理を使って、事前に作成してファイル・エントリーを追加しておく必要があります。
********** #ETYP *CHAR 2
********** #FILE *CHAR 10
********** #LIB *CHAR 10
********** #DESC *CHAR 40
********** #SPARE *CHAR 8
********** #START *CHAR 22
********** #LAST *CHAR 22
DEF_LIST NAME(#ELLST) FIELDS(#ETYP #FILE #LIB #DESC #SPARE)
TYPE(*WORKING) ENTRYS(10)
********** -Clear list-
CLR_LIST NAMED(#ELLST)
********** -Request Impact List name-
REQUEST FIELDS(#ILNAME) TEXT(('Impact List to use' 5 5))
********** -Set the start value to start at the file entries-
CHANGE FIELD(#START) TO(FD)
********** -Get the entries from the Impact List-
BEGIN_LOOP
USE BUILTIN(GET_ILENTRY_LIST) WITH_ARGS(#ILNAME #START)
TO_GET(#ELLST #LAST #RETCOD)
********** -If entries found-
IF COND('(#RETCOD *EQ OK) *OR (#RETCOD *EQ OV)')
SELECTLIST NAMED(#ELLST)
IF COND('#TYP = FD')
USE BUILTIN(MAKE_FILE_OPERATIONL) WITH_ARGS(#FILE #LIB)
TO_GET(#RTN)
ENDIF
ENDSELECT
********** -If more entries, set start value for repeat -
IF COND('#RETCOD *EQ OV')
CHANGE FIELD(#START) TO(#LAST)
ELSE
RETURN
ENDIF
**********
********** -No entries-
ELSE
RETURN
ENDIF
END_LOOP