文字列の特殊な扱いとして、区切り文字列を使ったリストを定義する。
リストは、メンバーを区切り文字列を使って順に接続した文字列である。
区切り文字列は通常一文字を使用し、メンバーの後に必ず書く。
つまり、下記のように定義する。
区切り文字列は空であってはならない。このときの動作は保証されない。
::
[
メンバー 区切り ]*
リストの最後のメンバーの後にも区切りが必要なことに注意したい。
以前のソフトウェアで扱っていたリストではこれが無かったために、空のリストと、
空のメンバーが一つ有るリストの区別が付かなかった。
最後の区切りの後ろにある文字列は無視する。
また、メンバーの中に区切りを入れることは出来ないので、区切りは注意深く選定すること。
メンバーの位置は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 には現在着目中の一文字からなる文字列が
与えられている.
|