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,var)
$LD(list,position,var)

パラメータ

list 有効なリストに評価する式
position オプション — 指定したリストで、位置として解釈される式ゼロでない正の整数または -1 です。
var オプション — 指定されたリスト位置にある要素値を含む変数。$LISTDATA が値 1 を返す場合、var が書き込まれます。$LISTDATA が値 0 を返す場合、var は変更されません。

概要

$LISTDATA は、リスト内の指定された要素のデータを調べ、ブーリアン値を返します。$LISTDATA は、position パラメータが示す要素が list に存在し、データ値を持つ場合、値 1 を返します。要素が list に存在しないか、またはデータ値を持たない場合、$LISTDATA は値 0 を返します。

$LISTDATA は、オプションで要素値を var 変数に書き込むことができます。

Note:

$LISTDATA をループ構造内で使用して、複数の連続した要素値を返さないでください$LISTDATA は実行ごとにリストを最初から評価する必要があるため、これが動作している間、非常に効率が悪くなります。複数の連続した要素値を返す場合、$LISTNEXT 関数を使用した方がはるかに効率的です。

パラメータ

list

list は、複数の要素を含むエンコードされた文字列です。list$LISTBUILD または $LISTFROMSTRING を使用して作成されるか、あるいは $LIST を使用して別のリストから抽出されなければなりません。

$LISTVALID 関数を使用すると、式が有効なリストであるかどうかを判定できます。list パラメータ内の式が有効なリストとして評価されない場合は、<LIST> エラーが発生します。有効なリストの指定された位置にデータが含まれていない場合、$LISTDATA は 0 を返します。

position

1 からカウントするリスト内の要素の整数位置。position パラメータを省略した場合、$LISTDATA は先頭要素を評価します。position パラメータの値が -1 の場合は、リストの最終要素を指定するのと同じ意味です。

position が存在しないリスト・メンバを参照する場合、$LISTDATA は 0 を返します。0 のposition は常に 0 を返します。position の値が -1 未満の場合に $LISTDATA 関数を呼び出すと、<RANGE> エラーが発生します。

var

$LISTDATA が値 1 を返す場合、Caché は、要求された要素の値を var に書き込みます。$LISTDATA が値 0 を返す場合、var は変更されません。var パラメータは、添え字付きもしくは添え字のないローカル、グローバル、またはプロセス・プライベート変数のいずれかにできます。これを定義する必要はありません。1 を返す $LISTDATA の最初の呼び出しにより var の定義と設定が行われます。$LISTDATA の最初の呼び出しが 0 を返す場合、var は未定義のままになります。

var パラメータは、非多次元オブジェクト・プロパティとすることはできません。非多次元オブジェクト・プロパティに値を書き込もうとすると、<OBJECT DISPATCH> エラーが発生します。

var パラメータは、特殊変数とすることはできません。特殊変数に値を書き込もうとすると、<SYNTAX> エラーが発生します。

以下の 2 つの例では、position パラメータにさまざまな値を指定した結果を示します。

以下の $LISTDATA 文は、0 を返します。

   KILL y
   SET x=$LISTBUILD("Red",,y,"","Green",)
   WRITE !,$LISTDATA(x,2)  ; second element is undefined
   WRITE !,$LISTDATA(x,3)  ; third element is a killed variable
   WRITE !,$LISTDATA(x,-1) ; the last element is undefined
   WRITE !,$LISTDATA(x,0)  ; the 0th position
   WRITE !,$LISTDATA(x,6)  ; 6th position in 5-element list

以下の $LISTDATA 文は、1 を返します。

   SET x=$LISTBUILD("Red",,y,"","Green",)
   WRITE !,$LISTDATA(x)    ; first element (by default)
   WRITE !,$LISTDATA(x,1)  ; first element specified
   WRITE !,$LISTDATA(x,4)  ; fourth element, value=null string
   WRITE !,$LISTDATA(x,5)  ; fifth element

以下の 3 パラメータの $LISTDATA 文は、要素値の存在についてテストし、evalue 変数をその値で更新します。$LISTDATA が 0 を返す場合、evalue は変更されないままであることに注意してください。

   SET x=$LISTBUILD("Red",,y,"","Green",)
   FOR i=1:1:$LISTLENGTH(x) {
      WRITE "element ",i," data? ",$LISTDATA(x,i,evalue)," value ",evalue,! 
   }
   WRITE i," list elements"

以下のすべての $LISTDATA 文は、0 を返します。

   WRITE !,$LISTDATA($LB())     ; null list
   WRITE !,$LISTDATA($LB(NULL)) ; null list
   WRITE !,$LISTDATA("")        ; null string is a valid list
                                ; but contain no data
   WRITE !,$LISTDATA($LB(,))    ; two-element null list

以下の $LISTDATA 文は、1 を返します。

  WRITE !,$LISTDATA($LB(""))       ; data is null string
  WRITE !,$LISTDATA($LB($CHAR(0))) ; data is non-display character

関連項目

FeedbackOpens in a new tab