リスト関数

関数一覧

LIST LIST_ADJUST LIST_COUNT LIST_DELETE LIST_EXC_STR
LIST_EXLUDE LIST_FILTER LIST_INCLUDE LIST_INC_STR LIST_INSERT
LIST_LOOP LIST_LOOP_AND LIST_LOOP_FILTER LIST_LOOP_OR LIST_LOOP_REPLACE
LIST_LOOP_SRCH LIST_MEMBER LIST_NORMALIZE LIST_OPR_COUNT LIST_OPR_EXCLUDE
LIST_OPR_FILTER LIST_OPR_INCLUDE LIST_OPR_MEMBER LIST_OPR_REJECT LIST_OPR_REPLACE
LIST_OPR_SRCH LIST_POS LIST_REJECT LIST_REPLACE LIST_REVERSE
LIST_ROTATE LIST_ROT_LEFT LIST_ROT_RIGHT LIST_SRCH

リストの定義

文字列の特殊な扱いとして、区切り文字列を使ったリストを定義する。
リストは、メンバーを区切り文字列を使って順に接続した文字列である。 区切り文字列は通常一文字を使用し、メンバーの後に必ず書く。 つまり、下記のように定義する。 区切り文字列は空であってはならない。このときの動作は保証されない。

リスト:: [ メンバー 区切り ]*

リストの最後のメンバーの後にも区切りが必要なことに注意したい。 以前のソフトウェアで扱っていたリストではこれが無かったために、空のリストと、 空のメンバーが一つ有るリストの区別が付かなかった。
最後の区切りの後ろにある文字列は無視する。 また、メンバーの中に区切りを入れることは出来ないので、区切りは注意深く選定すること。
メンバーの位置は0から数える。

基本操作

LIST_ADJUST

str LIST_ADJUST( str 区切り , str 対象文字列 )
文字列をリストとして適正化する。
文字列が空でなく、最後に区切りを含まない場合は区切りを付加する。

LIST_NORMALIZE

str LIST_NORMALIZE( str 区切り , str 対象リスト )
対象リストのメンバーの重複を取り除く。
区切りが空の場合は、対象リストをそのまま返す。

LIST_COUNT

num LIST_COUNT( str 区切り , str 対象リスト )
リストに含まれるメンバー数を返す。
区切りが空の場合は、文字数を返す。

LIST_POS

num LIST_POS( str 区切り , str 対象リスト , num メンバー位置(番号) )
指定番号のメンバーの文字列単位での位置を返す。
存在しないメンバーに対しては、-1を返す。 区切りが空の場合は、文字列単位での位置。

LIST

str LIST( str 区切り [ , メンバー ]* )
メンバーから構成されたリスト。
メンバーがリストの場合は、リストの連結処理となる。 メンバーに数値型、または、論理型の式を書くと、文字列に変換してからリストに連結する。 メンバーを省略すると空のリストになることに注意する。 区切りが空の場合は文字列の連結となる。

LIST_MEMBER

str LIST_MEMBER( str 区切り , str 対象リスト , num メンバーの位置 )
指定位置のメンバーを返す。
区切りが空の場合は指定位置の文字を一文字返す。 メンバーがない場合は、空文字列を返す。

LIST_INSERT

str LIST_INSERT( str 区切り , str 対象リスト , str { 挿入メンバー | 挿入リスト } , num 挿入位置 )
指定位置にメンバーまたはリストを挿入する
区切りが空の場合はINSERT関数と同じ動作。 挿入位置がメンバー数以上の場合は最後のメンバーの後ろに追加する。

LIST_DELETE

str LIST_DELETE( str 区切り , str 対象リスト , num 削除位置 [ , num 削除個数 ] )
指定位置のメンバーを削除する
個数を省略すると削除の対象は一つだけになる。 区切りが空の場合はDELETE関数と同じ動作。

回転と反転

LIST_REVERSE

str LIST_REVERSE( str 区切り , str 対象リスト )
対象リストのメンバーの並びを逆順にする。
区切りが空の場合は、文字列の並びが逆順になる。

LIST_ROTATE

str LIST_ROTATE( str 区切り , str 対象リスト , num メンバー位置(番号) )
指定のメンバーが先頭になるように回転するしたリストを返す。
存在しないメンバーを指定した場合はもとのリストを返す。 区切りが空の場合は、文字列単位での回転。

LIST_ROT_LEFT

str LIST_ROT_LEFT( str 区切り , str 対象リスト , num 回転数 )
リストを左回転。
区切りが空の場合は、文字列単位での回転。

LIST_ROT_RIGHT

str LIST_ROT_RIGHT( str 区切り , str 対象リスト , num 回転数 )
リストを右回転。
区切りが空の場合は、文字列単位での回転。

検索と置換

LIST_SRCH

num LIST_SRCH( str 区切り , str 対象リスト , str 検索文字列 )
対象リストの先頭から検索文字列と一致するメンバーを探し、その位置を返す。
見つからないとオーバーフロー値を返却する。 区切りが空の場合は文字列の検索となる。

LIST_REPLACE

str LIST_REPLACE( str 区切り , str 対象リスト , str 検索メンバー , str 置換メンバー )
対象リスト内の検索メンバーと同じメンバーを置換メンバーに置きかえる
区切りが空の場合は、対象リストをそのまま返す。

引数文字列による検定

LIST_INC_STR

bool LIST_INC_STR( str 区切り , str 対象リスト [ , str 検索文字列 ]+ )
全ての検索文字列が対象文字列のメンバーならば真を返す。
区切りが空の場合は、対象文字列がすべての検索文字列を含めば真。 評価は先頭から実行し、一つでも偽となれば、以降の評価は実行しない。

LIST_EXC_STR

bool LIST_EXC_STR( str 区切り , str 対象リスト [ , str 検索文字列 ]+ )
いずれかの検索文字列が対象文字列のメンバーならば真を返す。
区切りが空の場合は、対象文字列が検索文字列を一つでも含めば真。 評価は先頭から実行し、一つでも真となれば、以降の評価は実行しない。

リストによる処理

LIST_INCLUDE

bool LIST_INCLUDE( str 区切り , str 対象リスト , str 検索リスト )
対象リストが検索リストのメンバーをすべて含めば真。
区切りが空の場合は常に偽。

LIST_EXLUDE

bool LIST_EXLUDE( str 区切り , str 対象リスト , str 検索リスト )
対象リストが検索リストのメンバーを一つでも含めば真。
区切りが空の場合は常に偽。

LIST_FILTER

str LIST_FILTER( str 区切り , str 対象リスト , str 検索リスト )
対象リストのうち、検索リストのメンバーになっているメンバーからなるリスト。
区切りが空の場合は常に対象リストをそのまま返す。

LIST_REJECT

str LIST_REJECT( str 区切り , str 対象リスト , str 検索リスト )
対象リストのうち、検索リストのメンバーになっていないメンバーからなるリスト。
区切りが空の場合は常に対象リストをそのまま返す。

関係演算子を使用した処理

LIST_OPR_SRCH

num LIST_OPR_SRCH( str 区切り , str 対象リスト , [ NOT ] 関係演算子 , str 検索メンバー )
対象リストから、検索メンバーと比較の成立する最初のメンバーを探し、その位置を報告する。
関係演算子の前にNOTをつけると条件が反転する。 見つかなかった場合は、オーバーフロー値を返す。 区切りが空の場合は常に見つからない。

LIST_OPR_MEMBER

str LIST_OPR_MEMBER( str 区切り , str 対象リスト , [ NOT ] 関係演算子 , str 検索メンバー )
対象リストから、検索メンバーと比較の成立する最初のメンバーを探し、メンバーを返す。
関係演算子の前にNOTをつけると条件が反転する。 見つかなかった場合は、空の文字列を返す。 区切りが空の場合は常に見つからない。

LIST_OPR_INCLUDE

bool LIST_OPR_INCLUDE( str 区切り , str 対象リスト , [ NOT ] 関係演算子 , str 検索リスト )
検索リストのすべてのメンバーが、対象リストの中に比較条件の成立するメンバーを持つとき、真。
関係演算子の前にNOTをつけると条件が反転する。 区切りが空の場合は常に偽を返す。

LIST_OPR_EXCLUDE

bool LIST_OPR_EXCLUDE( str 区切り , str 対象リスト , [ NOT ] 関係演算子 , str 検索リスト )
検索リストのいずれかのメンバーが、対象リストの中に比較条件の成立するメンバーを持つとき、真。
関係演算子の前にNOTをつけると条件が反転する。 区切りが空の場合は常に偽を返す。

LIST_OPR_FILTER

str LIST_OPR_FILTER( str 区切り , str 対象リスト , [ NOT ] 関係演算子 , str 検索リスト )
対象リストのメンバーで、検索リストの中に比較条件が成立するものを持つメンバーからなるリスト。
関係演算子の前にNOTをつけると条件が反転する。 区切りが空の場合は常に対象文字列を返す。

LIST_OPR_REJECT

str LIST_OPR_REJECT( str 区切り , str 対象リスト , [ NOT ] 関係演算子 , str 検索リスト )
対象リストのメンバーで、検索リストの中に比較条件が成立するものを持たないメンバーからなるリスト。
関係演算子の前にNOTをつけると条件が反転する。 区切りが空の場合は常に対象文字列を返す。

LIST_OPR_COUNT

num LIST_OPR_COUNT( str 区切り , str 対象リスト , [ NOT ] 関係演算子 , str 検索リスト )
対象リストのメンバーで、検索リストの中に比較条件が成立するものを持つメンバーの数。
関係演算子の前にNOTをつけると条件が反転する。 区切りが空の場合は常に0を返す。

LIST_OPR_REPLACE

str LIST_OPR_REPLACE( str 区切り , str 対象リスト , [ NOT ] 関係演算子 , str 検索メンバー , str 置換メンバー )
対象リストのメンバーで、検索リストの中に比較条件が成立するものを置換メンバーで置きかえる。
関係演算子の前にNOTをつけると条件が反転する。 区切りが空の場合は対象リストを返す.

ループ処理

LIST_LOOP

bool LIST_LOOP( str 区切り , str 対象リスト , str 実行式 [ , str 実行式 ]* )
リストのメンバーの全てに対して実行式を評価する。
実行式中では特殊な変数MEMBERで現在のメンバーを参照できる。
区切りが空の場合は対象リストを文字列として扱い、その一文字づつに対して、 実行式を評価する。 このとき、特殊な変数MEMBERには現在着目中の一文字からなる文字列が 与えられている.

LIST_LOOP_FILTER

str LIST_LOOP_FILTER( str 区切り , str 対象リスト , bool 検定式 )
リストのメンバーの全てに対して検定式を評価し、 検定の結果が真であるメンバーからなるリストを返す。
検定式中では特殊な変数MEMBERで現在のメンバーを参照できる。
区切りが空の場合は対象リストを文字列として扱い、その一文字づつに対して、 検定式を評価する。 このとき、特殊な変数MEMBERには現在着目中の一文字からなる文字列が 与えられている.

LIST_LOOP_REPLACE

str LIST_LOOP_REPLACE( str 区切り , str 対象リスト , str 置換文字列式 )
リストのメンバーの全てを置換文字列式に置き換えたリストを返す。
置き換え文字列式中では特殊な変数MEMBERで現在のメンバーを参照できる。
区切りが空の場合は対象リストを文字列として扱い、その一文字づつに対して、 置換文字列式を評価する。 このとき、特殊な変数MEMBERには現在着目中の一文字からなる文字列が 与えられている.

LIST_LOOP_AND

bool LIST_LOOP_AND( str 区切り , str 対象リスト , bool 検定式 )
リストのメンバーの全てに対し検定式が成立すれば真を返す。
検定式はメンバーの先頭から順に評価するが、 その値が偽になった時点で以降のメンバーに対する検定は行わない。 検定式中では特殊な変数MEMBERで現在のメンバーを参照できる。
区切りが空の場合は対象リストを文字列として扱い、その一文字づつに対して、 検定式を評価する。 このとき、特殊な変数MEMBERには現在着目中の一文字からなる文字列が 与えられている.

LIST_LOOP_OR

bool LIST_LOOP_OR( str 区切り , str 対象リスト , bool 検定式 )
リストのメンバーのいずれかに対し検定式が成立すれば真を返す。
検定式はメンバーの先頭から順に評価するが、 その値が真になった時点で以降のメンバーに対する検定は行わない。 検定式中では特殊な変数MEMBERで現在のメンバーを参照できる。
区切りが空の場合は対象リストを文字列として扱い、その一文字づつに対して、 検定式を評価する。 このとき、特殊な変数MEMBERには現在着目中の一文字からなる文字列が 与えられている.

LIST_LOOP_SRCH

num LIST_LOOP_SRCH( str 区切り , str 対象リスト , bool 検定式 )
リストのメンバーの先頭から順に検定式を評価し、 検定式が真になった時のメンバーの番号を返す。
検定式が真になった時点で以降のメンバーに対する評価は行わない。 全てのメンバーに対して検定式が偽の場合は、オーバーフロー値を返す。 検定式中では特殊な変数MEMBERで現在のメンバーを参照できる。
区切りが空の場合は対象リストを文字列として扱い、その一文字づつに対して、 検定式を評価する。 このとき、特殊な変数MEMBERには現在着目中の一文字からなる文字列が 与えられている.