$LIST を使用して要素を返す例
以下の例は、$LIST の 2 引数形式を使用して、リスト要素を返します。
以下の 2 つの $LIST 文はリストの先頭要素である “Red” を返します。最初の文は、既定で先頭要素を返します。2 番目の文は、position 引数が 1 に設定されているために先頭要素を返します。
SET colorlist=$LISTBUILD("Red","Orange","Yellow","Green","Blue","Violet")
WRITE $LIST(colorlist),!
WRITE $LIST(colorlist,1)
以下の 2 つの $LIST 文はリストの 2 番目の要素である “Orange” を返します。最初の文はリストの先頭からカウントします。2 番目の文はリストの末尾から逆向きにカウントします。
SET colorlist=$LISTBUILD("Red","Orange","Yellow","Green","Blue","Violet")
WRITE $LIST(colorlist,2),!
WRITE $LIST(colorlist,*-4)
以下の例は、$LIST の 3 引数形式を使用して、1 つ以上の要素をエンコードされたリスト文字列として返します。リストには出力不能なエンコード文字が含まれているため、$LISTTOSTRING を使用して、サブリストを出力可能な文字列に変換する必要があります。
以下の 2 つの $LIST 文は、エンコードされたリスト文字列として、リストの 5 番目の要素である “Blue” を返します。最初の文はリストの先頭からカウントします。2 番目の文はリストの末尾から逆向きにカウントします。範囲として要素が指定されているため、これは 1 つの要素で構成されたリストとして取得されます。
SET colorlist=$LISTBUILD("Red","Orange","Yellow","Green","Blue","Violet")
WRITE $LISTTOSTRING($LIST(colorlist,5,5))
WRITE $LISTTOSTRING($LIST(colorlist,*-1,*-1))
以下の例は “Red Orange Yellow” を返します。これは、リスト内の先頭要素から始まり 3 番目の要素で終了する 3 つの要素のリスト文字列です。
SET colorlist=$LISTBUILD("Red","Orange","Yellow","Green","Blue","Violet")
WRITE $LISTTOSTRING($LIST(colorlist,1,3))
以下の例は “Green Blue Violet” を返します。これは、リスト内の 4 番目の要素から始まり最後の要素で終了する 3 つの要素のリスト文字列です。
SET colorlist=$LISTBUILD("Red","Orange","Yellow","Green","Blue","Violet")
WRITE $LISTTOSTRING($LIST(colorlist,4,*))
以下の例は、プロパティからのリスト要素を返します。
SET cfg=##class(%iKnow.Configuration).%New("Trilingual",1,$LB("en","fr","es"))
WRITE $LIST(cfg.Languages,2)
SET $LIST を使用して要素を置換、削除または追加する例
以下の例は、2 つめの要素を置き換える SET $LIST を示します。
SET fruit=$LISTBUILD("apple","onion","banana","pear")
WRITE !,$LISTTOSTRING(fruit,"/")
SET $LIST(fruit,2)="orange"
WRITE !,$LISTTOSTRING(fruit,"/")
以下の例は、2 つめと 3 つめの要素を置き換える SET $LIST を示します。
SET fruit=$LISTBUILD("apple","potato","onion","pear")
WRITE !,$LISTTOSTRING(fruit,"/")
SET $LIST(fruit,2,3)=$LISTBUILD("orange","banana")
WRITE !,$LISTTOSTRING(fruit,"/")
以下の例は、2 つめと 3 つめの要素を 4 つめの要素に置き換える SET $LIST を示します。
SET fruit=$LISTBUILD("apple","potato","onion","pear")
WRITE !,$LISTTOSTRING(fruit,"/")
SET $LIST(fruit,2,3)=$LISTBUILD("orange","banana","peach","tangerine")
WRITE !,$LISTTOSTRING(fruit,"/")
以下の例では、リストの末尾に 1 つの要素を追加する SET $LIST を示します。
SET fruit=$LISTBUILD("apple","orange","banana","peach")
WRITE $LL(fruit)," ",$LISTTOSTRING(fruit,"/",1),!
SET $LIST(fruit,*+1)="pear"
WRITE $LL(fruit)," ",$LISTTOSTRING(fruit,"/",1)
以下の例では、リストの末尾から 3 つ先に 1 つの要素を追加する SET $LIST を示します。
SET fruit=$LISTBUILD("apple","orange","banana","peach")
WRITE $LL(fruit)," ",$LISTTOSTRING(fruit,"/",1),!
SET $LIST(fruit,*+3)="tangerine"
WRITE $LL(fruit)," ",$LISTTOSTRING(fruit,"/",1)
以下の 4 つの例では、*-n 構文を使用して、リストの末尾からオフセット分の位置の要素を置換する SET $LISTを示します。SET $LIST(x,*-n) と SET $LIST(x,n,*-n) では異なる操作が行われます。SET $LIST(x,*-n) は、指定した要素の value を置換します。SET $LIST(x,n,*-n) は、指定した要素の範囲を削除してから、指定したリストを追加します。
最後から 2 番目の要素を 1 つの値に置き換えるには、SET $LIST(x,*-1) を使用します。
SET fruit=$LISTBUILD("apple","banana","orange","potato","pear")
WRITE !,"list length is ",$LISTLENGTH(fruit)," "
WRITE $LISTTOSTRING(fruit,"/")
SET $LIST(fruit,*-1)="peach"
WRITE !,"list length is ",$LISTLENGTH(fruit)," "
WRITE $LISTTOSTRING(fruit,"/")
リストの末尾からオフセット分の位置の 1 つの要素を削除するには、SET $LIST(x,*-n,*-n)="" を使用します。
SET fruit=$LISTBUILD("apple","banana","orange","potato","pear")
WRITE !,"list length is ",$LISTLENGTH(fruit)," "
WRITE $LISTTOSTRING(fruit,"/")
SET $LIST(fruit,*-1,*-1)=""
WRITE !,"list length is ",$LISTLENGTH(fruit)," "
WRITE $LISTTOSTRING(fruit,"/")
リストの末尾からオフセット分の位置の 1 つの要素を要素のリストに置き換えるには、SET $LIST(x,*-n,*-n)=list を使用します。
SET fruit=$LISTBUILD("apple","banana","potato","orange","pear")
WRITE !,"list length is ",$LISTLENGTH(fruit)," "
WRITE $LISTTOSTRING(fruit,"/")
SET $LIST(fruit,*-2,*-2)=$LISTBUILD("peach","plum","quince")
WRITE !,"list length is ",$LISTLENGTH(fruit)," "
WRITE $LISTTOSTRING(fruit,"/")
リストの末尾からオフセット分の位置の 1 つの要素をサブリストに置き換えるには、SET $LIST(x,*-n)=list を使用します。
SET fruit=$LISTBUILD("apple","banana","potato","orange","pear")
WRITE !,"list length is ",$LISTLENGTH(fruit)," "
WRITE $LISTTOSTRING(fruit,"/")
SET $LIST(fruit,*-2)=$LISTBUILD("peach","plum","quince")
WRITE !,"list length is ",$LISTLENGTH(fruit)," "
WRITE $LISTTOSTRING(fruit,"/")
以下の例は、3 つめの要素からリストの最後まで、リストから要素を削除する SET $LIST を示します。
SET fruit=$LISTBUILD("apple","orange","onion","peanut","potato")
WRITE !,"list length is ",$LISTLENGTH(fruit)," "
WRITE $LISTTOSTRING(fruit,"/")
SET $LIST(fruit,3,*)=""
WRITE !,"list length is ",$LISTLENGTH(fruit)," "
WRITE $LISTTOSTRING(fruit,"/")