LOOP コマンド
指定された条件が真と評価されている間、一連の ACLScript コマンドをレコードで繰り返し実行します。
メモ
LOOP コマンドは GROUP コマンドで囲む必要があります。
構文
LOOP WHILE テスト コマンド <...n> END
パラメーター
名前 | 説明 |
---|---|
WHILE テスト |
LOOP コマンド内のコマンドを実行するために、True と評価される必要があるテスト。 そのテストが True と評価された場合、それが False と評価されるまで対象コマンドが繰り返し実行されます。 |
コマンド <...n> |
実行対象となる 1 つまたは複数のコマンド。 LOOP コマンド内には複数のコマンドを入力することができます。 各コマンドは別々の行で入力する必要があります。 |
END | LOOP コマンドの終わり。 |
例
カンマ区切りのフィールドを分割する
請求データを含むテーブルがあり、請求金額の特定の情報を部署ごとに抽出する必要があるとします。 1 つの請求書は複数の部署に関連付けることができ、部署コードがカンマ区切りでテーブルに保存されます。
請求金額を部署ごとに抽出するには
- GROUP コマンドを使用して、テーブルの各レコードを処理します。
- 各レコードに関連付けられた部署数(n)を計算します。
- LOOP コマンドを使用して、レコードに関連付けられた各部署のデータを抽出する操作を n 回繰り返します。
COMMENT GROUP を使用すると、各部署コード フィールドのコメントをカウントし、レコードに関連付けられている部署数を特定します "LOOP" はフィールドの各コードのレコードごとに繰り返され、各コードを固有のレコードに抽出します END GROUP v_department_count = OCCURS(Department_Code,',') v_counter = 0 LOOP WHILE v_counter <= v_department_count v_dept = SPLIT(Department_Code, ',', (v_counter + 1)) EXTRACT FIELDS Invoice_Number, Invoice_Amount, v_dept AS "Department" TO result1 v_counter = v_counter + 1 END END
備考
ヒント
LOOP および GROUP コマンドの詳細なチュートリアルについては、グループ化とループ処理を参照してください。
LOOP の用途
ループは、処理するデータのセグメントがレコード内に繰り返し含まれている場合に多く用いられます。
機能の仕組み
各 LOOP コマンドでは、テストする WHILE 条件を指定し、END ステートメントで閉じる必要があります。 指定したテストが True と評価される間は、LOOP と END の間にあるコマンドが現在のレコードに対して繰り返し実行されます。
テストが False になると、その時点でコマンドは実行されなくなります。
無限ループを回避する
無限ループを回避するために、必ず最終的に False が返されるテストを指定してください。 また、SET LOOP コマンドを使用すると、無限ループを防ぐことができます。