# For..next

La sentencia de control for..next crea un bucle con un contador. Las sentencias que están dentro del bucle, encerradas entre for y next se ejecutarán por cada valor de la variable contador entre los límites inferior y superior especificados e incluidos éstos.

Sintaxis:

For counter = expr1 to expr2 [ step expr3 ]

[statements]

[exit for [ ( when | unless ) condition ]

[statements]

Next [counter]

Las expresiones expr1, expr2 y expr3 sólo se evalúan la primera vez que se entra en el bucle. El valor de la variable contador puede ser modificado por sentencias dentro del bucle, pero no es una buena práctica de programación.

Si se encuentra una cláusula exit for dentro del bucle, la ejecución del script será transferida a la primera sentencia tras la cláusula next que indica el final del bucle. Una cláusula exit for puede hacerse condicional mediante el uso opcional de un sufijo when o unless.

Nota informativaComo la sentencia for..next es una sentencia de control y como tal termina con un punto y coma o un final de línea, cada una de sus tres cláusulas posibles (for..to..step, exit for y next) no debe sobrepasar el límite de una línea.

Argumentos:

Argumentos de For

| Argumento | Descripción |
| --- | --- |
| counter | Es un nombre de variable. Si se especifica counter después de next deberá tener el mismo nombre de variable que el encontrado después del for correspondiente. |
| expr1 | Es una expresión que determina el primer valor de la variable counter para la que se debe ejecutar el bucle. |
| expr2 | Es una expresión que determina el valor máximo de la variable counter para la que se debe ejecutar el bucle. |
| expr3 | Es una expresión que determina el valor que indica el incremento de la variable counter cada vez que el bucle ha sido ejecutado. |
| condition | Es una expresión lógica que se evalúa como True o False. |
| statements | Es cualquier grupo de una o varias sentencias de script de QlikView. |

Ejemplo 1: Cargar una secuencia de archivos

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

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

`next`

Ejemplo 2: Cargar un número aleatorio de archivos

En este ejemplo, se supone que hay archivos de datos x1.csv, x3.csv, x5.csv, x7.csv y x9.csv. La carga se interrumpe en un punto aleatorio mediante la condición `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`

## Más información

* [For each..next](https://help.qlik.com/es-ES/qlikview/May2024/Subsystems/Client/Content/QV_QlikView/Scripting/ScriptControlStatements/For%20Each.htm)
* [Next](https://help.qlik.com/es-ES/qlikview/May2024/Subsystems/Client/Content/QV_QlikView/Scripting/ScriptControlStatements/Next.htm)
* [To](https://help.qlik.com/es-ES/qlikview/May2024/Subsystems/Client/Content/QV_QlikView/Scripting/ScriptControlStatements/To.htm)
* [Exit](https://help.qlik.com/es-ES/qlikview/May2024/Subsystems/Client/Content/QV_QlikView/Scripting/ScriptControlStatements/Exit.htm)