$LISTDATA
Synopsis
$LISTDATA(list[,position])
引数
list | 有効なリストとして評価される式。list は、1 つ以上の要素を含むエンコードされた文字列です。list を作成するには、SQL または ObjectScript の $LISTBUILD 関数または $LISTFROMSTRING 関数を使用します。既存のリストから list を抽出するには、SQL または ObjectScript の $LIST 関数を使用します。 |
position | オプション — list 内の要素を指定する整数式。 |
概要
$LISTDATA は、リスト内の指定された要素のデータを調べます。position 引数で指定された要素が list に存在し、データ値を持つ場合、$LISTDATA は値 1 を返します。要素が list に存在しないか、またはデータ値を持たない場合、$LISTDATA は値 0 を返します。
この関数は、データ型 SMALLINT を返します。
引数
list
1 つ以上の要素を含む、エンコードされた文字の文字列。リストは、SQL $LISTBUILD 関数または ObjectScript $LISTBUILD 関数を使用して作成できます。区切り文字列からリストへの変換は、SQL $LISTFROMSTRING 関数または ObjectScript $LISTFROMSTRING 関数を使用して行うことができます。既存のリストからのリストの抽出は、SQL $LIST 関数または ObjectScript $LIST 関数を使用して行うことができます。
position
position 引数を省略した場合、$LISTDATA は先頭要素を評価します。position 引数の値が -1 の場合は、リストの最終要素を指定するのと同じ意味です。position 引数の値が存在しないリスト・メンバを参照する場合は、$LISTDATA は 0 を返します。
例
以下の埋め込み SQL の例は、position 引数にさまざまな値を指定した結果を示しています。
以下のすべての $LISTDATA 文は、1 を返します。
KILL Y
SET a=$LISTBUILD("Red",,Y,"","Green")
&sql(SELECT $LISTDATA(:a), $LISTDATA(:a,1),
$LISTDATA(:a,4), $LISTDATA(:a,5), $LISTDATA(:a,-1)
INTO :b,:c, :d, :e, :f)
IF SQLCODE'=0 {
WRITE !,"Error code ",SQLCODE }
ELSE {
WRITE !,"1st element status ",b ; 1st element default
WRITE !,"1st element status ",c ; 1st element specified
WRITE !,"4th element status ",d ; 4th element null string
WRITE !,"5th element status ",e ; 5th element in 5-element list
WRITE !,"last element status ",f ; last element in 5-element list
}
以下の $LISTDATA 文は、同じ 5 つの要素のリストに対して 0 の値を返します。
KILL Y
SET a=$LISTBUILD("Red",,Y,"","Green")
&sql(SELECT $LISTDATA(:a,2), $LISTDATA(:a,3),
$LISTDATA(:a,0), $LISTDATA(:a,6)
INTO :b,:c, :d, :e)
IF SQLCODE'=0 {
WRITE !,"Error code ",SQLCODE }
ELSE {
WRITE !,"2nd element status ",b ; 2nd element is undefined
WRITE !,"3rd element status ",c ; 3rd element is killed variable
WRITE !,"0th element status ",d ; zero position nonexistent
WRITE !,"6th element status ",e ; 6th element in 5-element list
}
メモ
無効な引数値
list 引数の式が有効なリストとして評価されない場合は、SQLCODE -400 の致命的なエラーが発生します。
&sql(SELECT $LISTDATA('fred') INTO :b)
IF SQLCODE'=0 {
WRITE !,"Error code ",SQLCODE }
ELSE {
WRITE !,"The the element is ",b }
position 引数の値が -1 よりも小さい場合は、SQLCODE -400 の致命的なエラーが発生します。
SET a=$LISTBUILD("Red","Blue","Green")
&sql(SELECT $LISTDATA(:a,-3) INTO :c)
IF SQLCODE'=0 {
WRITE !,"Error code ",SQLCODE }
ELSE {
WRITE !,"A neg-num position status ",c }
position が数値以外の値の場合は、このエラーは発生しません。
SET a=$LISTBUILD("Red","Blue","Green")
&sql(SELECT $LISTDATA(:a,'g') INTO :c)
IF SQLCODE'=0 {
WRITE !,"Error code ",SQLCODE }
ELSE {
WRITE !,"Error code ",SQLCODE
WRITE !,"A nonnumeric position status ",c }