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?

$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 }

関連項目

FeedbackOpens in a new tab