LOTUSSCRIPT 言語
配列、リスト、またはコレクションの要素ごとにブロックステートメントを繰り返し実行します。コレクションとは、製品コレクションクラスまたは OLE コレクションクラスのインスタンスです。
メモ ForAll ステートメントは Product のコレクションに対して機能しますが、Lotus Notes のコレクションはサポートしません。
構文ForAll refVar In container [ statements ]
End ForAll
構成要素refVar
ループを早期に終了する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 関数 例 関連項目