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?

$LISTUPDATE

オプションで、指定された 1 つのリスト要素または一連の要素を置き換えることにより、リストを更新します。

Synopsis

$LISTUPDATE(list,position,bool:val...)
$LU(list,position,bool:val...)

パラメータ

list リストに評価する任意の式。リストは、$LISTBUILD または $LISTFROMSTRING を使用して作成されるか、$LIST を使用して別のリストから抽出されます。NULL 文字列 ("") も、有効なリストと見なされます。
position 更新する list 内の位置を指定する、1 からカウントされる正の整数。positionlist 内の要素の数より大きい場合、$LISTUPDATE は、必要な場合はパディングして要素を追加します。
bool: オプション — 指定された list 要素を更新するかどうかを指定するブーリアン変数。省略した場合、既定で bool は 1 になり、この要素を更新します。
value 指定された positionlist を更新するために使用する値。value パラメータのコンマ区切りのリスト、または任意の組み合わせの bool:value のペアを指定できます。

説明

$LISTUPDATE は、位置を指定して 1 つ以上のリスト要素を置換または追加して更新したリストのコピーを返します。position は、要素の更新を開始するリスト内の位置を指定します。要素は、この位置から開始して順次更新されます。position は、リスト内の要素数よりも大きくすることができます。そのようにした場合、指定された位置に新規要素を挿入するために、リストに NULL 要素が (必要に応じて) 追加されます。位置は正の整数でなければなりません。$LISTUPDATE はリストの先頭に新規要素を挿入することはできません。position=0 を設定しても、処理は実行されません。$LISTUPDATE は、リストの終わりを指定することもできません。ただし、リストの先頭からの位置数で指定することはできます。

$LISTUPDATE は、複数の bool:value のペアを指定できます。複数の bool:value のペアは、コンマで区切られます。これらの bool:value のペアは、連続する要素を、position エレメントから開始して更新します。bool=1 の場合、Caché はその要素を value で更新します。bool=0 の場合、Caché はその要素を更新せず、次の要素に進みます。

一連の bool:value のペア内で更新されない連続する要素は、指定する必要はありません。それらはプレースホルダとしてのコンマで表すことができます。bool: パラメータは、各 value に対してオプションです。省略する場合、既定の 1 になります。bool を省略する場合は、コロン (:) 区切り文字も省略します。したがって、以下の方法で bool:value ペアを指定することは許可されます。

  • 更新する要素:1:"newval"、または "newval" (bool は既定で 1 になります)。

  • 更新しない要素:0:"newval"、またはプレースホルダとしてのコンマ。

$LISTUPDATE は、一般に既存のリストの更新バージョンを返すために使用します。$LISTUPDATE を使用して、list="" を指定することでリストを作成できます。

さらに、SET $LIST を使用して、既存のリスト内の 1 つ以上の要素を更新することもできます。

以下の例では、位置 2 でリスト要素を、指定された値に置き換えます。

   SET caps=1
   SET mylist = $LISTBUILD("Red","White","Blue")
   SET newlist = $LISTUPDATE(mylist,2,caps:"WHITE")
   ZWRITE newlist

以下の例では、位置 2 でリスト要素を、指定された値に置き換えません

   SET caps=0
   SET mylist = $LISTBUILD("Red","White","Blue")
   SET newlist = $LISTUPDATE(mylist,2,caps:"WHITE")
   ZWRITE newlist

以下の例では、位置 2 でリスト要素を NULL に置き換えます。

   SET caps=1
   SET mylist = $LISTBUILD("Red","White","Blue")
   SET newlist = $LISTUPDATE(mylist,2,caps:"")
   ZWRITE newlist

以下の例では、位置 7 で、指定された値をリストに追加し、NULL 要素を位置 5 と 6 にパディングします。

   SET bool=1
   SET mylist = $LISTBUILD("Red","Orange","Yellow","Green")
   SET newlist = $LISTUPDATE(mylist,7,bool:"Purple")
   ZWRITE newlist

以下の例では、位置 7 で、指定された値をリストに追加しません。NULL 要素がパディングされていない未変更のリストが返されます。

   SET bool=0
   SET mylist = $LISTBUILD("Red","Orange","Yellow","Green")
   SET newlist = $LISTUPDATE(mylist,7,bool:"Purple")
   ZWRITE newlist

以下の 3 つの例は、機能的にはすべて同じです。それぞれは要素を位置 2 と 4 で置き換え、新規要素を位置 7 で追加します。これは要素 3 と 5 は置き換えません。要素 6 は NULL 要素として作成されます。

   SET mylist = $LISTBUILD("Red","Orange","Yellow","Green","Blue")
   SET newlist = $LISTUPDATE(mylist,2,1:"ORANGE",0:"YELLOW",
                                      1:"GREEN",0:"BLUE",
                                      0:"INDIGO",1:"VIOLET")
   ZWRITE newlist

ここでは bool パラメータは、0 の場合にのみ指定されます。

   SET mylist = $LISTBUILD("Red","Orange","Yellow","Green","Blue")
   SET newlist = $LISTUPDATE(mylist,2,"ORANGE",0:"YELLOW",
                                      "GREEN",0:"BLUE",
                                      0:"INDIGO","VIOLET")
   ZWRITE newlist

ここではプレースホルダとしてのコンマは、更新されない要素をスキップするために使用されます。

   SET mylist = $LISTBUILD("Red","Orange","Yellow","Green","Blue")
   SET newlist = $LISTUPDATE(mylist,2,"ORANGE",,"GREEN",,,"VIOLET")
   ZWRITE newlist

関連項目

FeedbackOpens in a new tab