Skip to main content

This is documentation for Caché & Ensemble. See the InterSystems IRIS version of this content.Opens in a new tab

For information on migrating to InterSystems IRISOpens in a new tab, see Why Migrate to InterSystems IRIS?

ListNext

リストから要素を順番に取得します。

Synopsis

ListNext(list,ptr,value)

パラメータ

list 有効なリストに評価する式。Caché list は、ListBuild、または ListFromString を使用して作成するか、List を使用して別のリストから抽出する必要があります。
ptr リスト内の次の要素に対するポインタ。ptr は、list の先頭を指し示すよう、0 に初期化されたローカル変数として指定する必要があります。Caché は、内部のアドレス値アルゴリズム (予測可能な整数カウンタではない) を使用して ptr をインクリメントします。したがって、ptr の設定に使用できる値は 0 のみです。ptr をグローバル変数および添え字付き変数にすることはできません。
value リスト要素のデータ値の保持に使用されるローカル変数。ListNext を呼び出す前に value を初期化する必要はありません。value をグローバル変数および添え字付き変数にすることはできません。

説明

ListNext は、list 内の要素を順番に返します。ユーザは、ListNext の初回呼び出しの前に、ptr を 0 に初期化します。これにより、ListNext はリストの先頭から要素を返し始めます。ListNext の連続する呼び出しごとに ptr が進められ、次のリストの要素値が value に返されます。ListNext 関数は 1 を返し、リスト要素の取得に成功したことを示します。

ListNext がリストの最後に到達したときは、0 を返し、ptr を 0 にリセットします。value は前の呼び出しから変更されません。ptr は 0 にリセットされているので、ListNext の次回の呼び出しは、list の最初から開始されます。

Caché Basic は、内部のアドレス・アルゴリズムを使用して ptr をインクリメントします。そのため、ptr に設定できる値は 0 のみです。

ListValid を使用すると、list が有効なリストかどうかを判定できます。無効なリストの場合、ListNext で <LIST> エラーが発生します。

ListValid で検証されたすべてのリストが ListNext と共に正常に使用できるわけではありません。ListNext が NULL 値を持つリスト要素を検出すると、1 を返します。これは、リスト要素の取得が成功し、ptr を次の要素に進め、value 値を未定義の変数にリセットすることを示します。これは、有効なリスト (value=ListBuild()、value=ListBuild(NULL)、value=ListBuild(,)) で発生したり、value=ListBuild("a",,"b") の ListNext の 2 つ目の呼び出しなど、省略されたリスト要素の検出時に発生する場合があります。

ListNext("",ptr,value) は 0 を返し、ポインタを進めたり value を設定することはありません。ListNext(ListBuild(""),ptr,value) は 1 を返し、ポインタを進め、value を NULL 文字列 ("") に設定します。

ListNext と入れ子のリスト

以下の例は、ListNext が入れ子になっているリストの個々の要素を認識しないため、3 つの要素を返します。

mylist = ListBuild("Apple","Pear",ListBuild("Walnut","Pecan"))
ptr = 0
count = 0
   While ListNext(mylist,ptr,value)
    count=count+1
    PrintLn value
   Wend
 PrintLn "End of list: ",count," elements found"

以下の例は、リスト内のすべての要素を順番に返します。

mylist = ListBuild("Red","Blue","Green")
ptr = 0
count = 0
   While ListNext(mylist,ptr,value) 
    count = count+1
    PrintLn value
   Wend
   PrintLn "End of list: ",count," elements found"

関連項目

FeedbackOpens in a new tab