# For..next

for..next 制御ステートメントは、カウンタ付きのスクリプト反復構文です。for と next で囲まれたループ内のステートメントは、カウンタ変数の初期値と最終値で指定された回数分実行されます。

構文:

For counter = expr1 to expr2 [ step expr3 ]

[statements]

[exit for [ ( when | unless ) condition ]

[statements]

Next [counter]

数式 expr1、expr2、および expr3 は、ループが最初に挿入される際に評価されます。カウンタ変数の値はループ内のステートメントで変更できますが、これは良いプログラミングとは言えません。

exit for 節がループ内で出現した場合、スクリプトの実行はループの終了を示す next 節の後の最初のステートメントに移ります。exit for 節は、when や unless サフィックスを使用して条件を付けることができます。

情報メモfor..next ステートメントは制御ステートメントであり、セミコロンまたは改行コードで終わっているため、使用可能な 3 つの節 (for..to..step、exit for、next) が行をまたぐことはできません。

引数：

引数

| 引数 | 説明 |
| --- | --- |
| counter | 変数名。counter が next の後に指定されている場合は、対応する for の後に検出されるものと同じ変数名である必要があります。 |
| expr1 | ループが実行される counter変数の最初の値を判定する数式。 |
| expr2 | ループが実行される counter 変数の最後の値を判定する数式。 |
| expr3 | ループが実行されるたびに counter 変数の増分を示す値を判定する数式。 |
| condition | True または False の評価を実施する論理式。 |
| statements | 1 つ以上の Qlik Sense スクリプト ステートメントのグループ。 |

例1： 連続ファイルのロード

`// LOAD 
 files file1.csv..file9.csv` `for a=1 
 to 9`

> `LOAD * from 
>  file$(a).csv;`

`next`

例2： ランダムな数のファイルのロード

この例では、x1.csv、x3.csv、x5.csv、x7.csv、x9.csv というデータ ファイルが存在すると仮定します。ロード プロセスは、`if rand( 
 )<0.5 then` 条件によってランダム ポイントで停止します。

`for counter=1 
 to 9 step 2`

> `set filename=x$(counter).csv;` `if rand( 
>  )<0.5 then`
>
> > `exit for 
> >  unless counter=1`
>
> `end if` `LOAD  a,b 
>  from $(filename);`

`next`

## 詳細を見る

* [For each..next](https://help.qlik.com/ja-JP/sense/November2024/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptControlStatements/For%20Each.htm)
* [Next](https://help.qlik.com/ja-JP/sense/November2024/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptControlStatements/Next.htm)
* [To](https://help.qlik.com/ja-JP/sense/November2024/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptControlStatements/To.htm)
* [Exit](https://help.qlik.com/ja-JP/sense/November2024/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptControlStatements/Exit.htm)