FOR
 Ejecuta un bloque de sentencias un número determinado de veces
------------------------------------------------------------------------------
 Sintaxis

     FOR <idContador> := <nInicio> TO <nFin>
        [STEP <nIncremento>]
        <sentencias>...
        [EXIT]
        <sentencias>...
        [LOOP]
     NEXT

 Argumentos

     <idContador> es el nombre de la variable de control o contador del
     bucle. Si el <idContador> especificado no es visible o no existe, se
     crea una variable privada.

     <nInicio> es el valor inicial asignado a <idContador>. Si
     <nIncremento> es negativo, <nInicio> debe ser mayor que <nFin>.

     TO <nFin> define el valor final de <idContador>. Si <nIncremento>
     es negativo, <nInicio> debe ser superior a <nFin>; en caso contrario,
     <nInicio> debe ser menor que <nFin>.

     STEP <nIncremento> define la cantidad en que varía <idContador>
     para cada iteración del bucle. <nIncremento> puede ser positivo o
     negativo. Si no se especifica la cláusula STEP, <idContador> se
     incrementa en uno en cada iteración del bucle.

     EXIT bifurca el control incondicionalmente a la sentencia
     inmediatamente siguiente a la sentencia NEXT más próxima.

     LOOP bifurca el control a la sentencia FOR o DO WHILE ejecutada más
     recientemente.

 Descripción

     FOR...NEXT es una estructura de control que ejecuta un bloque de
     sentencias un número de veces especificado. La estructura de control
     efectúa un bucle desde el valor inicial de <idContador> hasta el límite
     especificado por <nFin>, desplazándose a través del rango de valores de
     la variable de control con un incremento especificado mediante
     <nIncremento>. Todas las expresiones de la sentencia FOR se reevalúan
     en cada iteración del bucle. Por lo tanto, las expresiones <nInicio> y
     <nFin> pueden cambiarse a medida que actúa la estructura de control.

     Un bucle FOR funciona hasta que <idContador> es mayor que <nFin> o se
     encuentra una sentencia EXIT. El control se bifurca entonces a la
     sentencia siguiente a la sentencia NEXT correspondiente. Si se
     encuentra una sentencia LOOP, el control se bifurca de nuevo a la
     sentencia FOR actual.

     Si <nIncremento> es un valor negativo, <idContador> se reduce en lugar
     de incrementarse. Sin embargo, el bucle FOR continúa hasta que
     <idContador> es menor que <nFin>. Esto significa que <nFin> debe ser
     menor que <nInicio> cuando comienza el bucle FOR.

     Los bucles FOR son útiles para recorrer matrices donde se utiliza
     <idContador> como subíndice de matriz. Consulte el ejemplo que se
     muestra más adelante.

     Las construcciones FOR...NEXT pueden anidarse dentro de otras
     estructuras de control a cualquier profundidad. El único requisito es
     que cada estructura de control se anide de forma adecuada.

 Ejemplos

      Este ejemplo recorre una matriz en orden ascendente:

        nLongMatriz := LEN(aMatriz)
        FOR i := 1 TO nLongMatriz
           <sentencias>...
        NEXT

           Para recorrer una matriz en orden descendente:

        nLongMatriz := LEN(aMatriz)
        FOR i := nLongMatriz TO 1 STEP -1
           <sentencias>...
        NEXT

 To download this example - click here.

See Also: AEVAL() BEGIN SEQUENCE DO CASE DO WHILE IF