LOTUSSCRIPT 言語


ForAll ステートメント

配列、リスト、またはコレクションの要素ごとにブロックステートメントを繰り返し実行します。コレクションとは、製品コレクションクラスまたは OLE コレクションクラスのインスタンスです。

メモ ForAll ステートメントは Product のコレクションに対して機能しますが、Lotus Notes のコレクションはサポートしません。

構文ForAll refVar In container
[ statements ]

End ForAll

構成要素refVar


container
使用法ループに入ると、refVar は配列、リスト、またはコレクションの最初の要素を参照します。繰り返しが成功するたびに、refVar は次の要素を参照します。ループが完了すると、実行はループの End ForAll ステートメントに続く最初のステートメントから続行されます。
メモ 配列の配列に対して ForAll を使うときは、イテレータを ReDim しないでください。「無効な ReDim」エラーが発生します。

ループを早期に終了するExit ForAll ステートメントや GoTo ステートメントでループが終了する前に、強制的に終了できます。Exit ForAll に到達すると、実行はすぐにループのターミネータ (End ForAll) に続く最初のステートメントに移ります。GoTo ステートメントに到達すると、実行はすぐに指定されたラベルのあるステートメントに移ります。
refVarrefVar は実際の配列、リスト、またはコレクションの要素の別名なので、refVar に新しい値を代入することでその要素の値を変更できます。次に例を示します。
ForAll x In y
x = x + 1
End ForAll

このスクリプトは、y という名前の配列、リスト、またはコレクションの各要素の値に 1 を加えます。

container がリストの場合、refVar が現在参照しているリスト要素の名前 (リストタグ) を得るために refVar を ListTag 関数に渡せます。次に例を示します。

Print ListTag(refVar)

refVar は ForAll ステートメントで暗黙に定義されるので、独自の変数宣言には含められません。refVar のスコープはループなので、ループの外側からは参照できません。

container が配列やリストの場合、refVar のデータ型は処理されている配列やリストのデータ型と同じです。このデータ型をコンパイル時に判別できないときや、container がコレクションのときは、refVar は Variant 型です。その場合、Variant 型にはユーザー定義データ型の値を代入できないので、配列やリストのデータ型にユーザー定義データ型を使えません。

refVar は、後の ForAll ループで、refVar が最初定義された ForAll ループ内で使われた内容のデータ型と一致すると再利用されます。

参照変数には ReDim ステートメントを使えません。たとえば、zArr が配列の配列で、ForAll ステートメントが次のように始まると仮定します。

ForAll inzArr In zArr

この場合、ステートメント ReDim inzArr(2) はエラーとなります。

クロスリファレンス式言語の @Transform 関数

関連項目