概要
$LISTLENGTH は、list にある要素の数を返します。$LISTLENGTH は、データが含まれているかどうかにかかわらず、それぞれ指定されたリスト位置をリスト要素としてカウントします。
$LISTVALID 関数を使用すると、list が有効なリストかどうかを判定できます。list が有効なリストでない場合、システムは <LIST> エラーを生成します。
$LISTBUILD によって作成された “空” のリストは、(リスト要素にはデータは含まれませんが) エンコードされたリスト要素を定義します。$LISTLENGTH は、(データを含む要素ではなく) リスト要素をカウントするため、“空” のリストの $LISTLENGTH 数は 1 になります。
NULL リスト (要素を含まないリスト) を表すには NULL 文字列 ("") を使用します。リスト要素を含まないため、$LISTLENGTH 数は 0 になります。
例
以下の例は、list に 3 つの要素が存在するため、3 を返します。
WRITE $LISTLENGTH($LISTBUILD("Red","Blue","Green"))
以下の例はリストの 2 つ目の要素にデータが含まれていませんが、これでも 3 を返します。
WRITE $LISTLENGTH($LISTBUILD("Red",,"Green"))
以下の例はすべて 1 を返します。$LISTLENGTH は、空のリスト要素とデータを含むリスト要素を区別しません。
WRITE $LISTLENGTH($LB()),!
WRITE $LISTLENGTH($LB(UndefinedVar)),!
WRITE $LISTLENGTH($LB("")),!
WRITE $LISTLENGTH($LB($CHAR(0))),!
WRITE $LISTLENGTH($LB("John Smith"))
以下の例は 0 を返します。$LISTVALID は NULL 文字列を有効なリストと見なしますが、これにリスト要素は含まれません。
WRITE $LISTLENGTH("")
2 つのプレースホルダ・コンマは空のリスト要素が 3 つあることを表しているため、以下の例は 3 を返します。
WRITE $LISTLENGTH($LB(,,))
$LISTLENGTH と入れ子のリスト
以下の例は、$LISTLENGTH が入れ子になっているリストの個々の要素を認識せず、これを単一のリスト要素として扱うため、3 を返します。
WRITE $LISTLENGTH($LB("Apple","Pear",$LB("Walnut","Pecan")))
以下の例は、$LISTLENGTH が最も外側の入れ子になっているリストのみをカウントするため、すべて 1 を返します。
WRITE $LISTLENGTH($LB($LB($LB()))),!
WRITE $LISTLENGTH($LB($LB($LB("Fred")))),!
WRITE $LISTLENGTH($LB($LB("Barney"_$LB("Fred")))),!
WRITE $LISTLENGTH($LB("Fred"_$LB("Barney"_$LB("Wilma"))))