Share via


FOR ... ENDFOR (Comando)

Ejecuta un grupo de comandos un número concreto de veces.

FOR Var = nInitialValue TO nFinalValue [STEP nIncrement] 
   Commands
   [EXIT]
   [LOOP]
ENDFOR | NEXT

Parámetros

  • Var
    Especifica una variable o un elemento de matriz que actúa como contador. No es necesario que exista la variable o elemento de matriz antes de ejecutar FOR ... ENDFOR.
  • nInitialValue TO nFinalValue
    nInitialValue es el valor inicial del contador y; nFinalValue es el valor final del contador.
  • STEP nIncrement
    nIncrement es la cantidad de incremento o decremento del contador. Si nIncrement es negativo, el contador se decrementará. Si omite la cláusula STEP, el contador se incrementará en 1.
  • Commands
    Especifica los comandos de Visual FoxPro que se van a ejecutar. Commands puede incluir cualquier número de comandos.
  • EXIT
    Transfiere el control desde dentro del bucle FOR ... ENDFOR al comando que sigue inmediatamente a ENDFOR. Puede situar EXIT en cualquier parte entre FOR y ENDFOR.
  • LOOP
    La inclusión de LOOP devolverá el control directamente a la cláusula FOR sin ejecutar las instrucciones que haya entre LOOP y ENDFOR. El contador se incrementará o decrementará como si se hubiera llegado a ENDFOR. LOOP puede situarse en cualquier parte entre FOR y ENDFOR.

Observaciones

Se utiliza una variable o un elemento de matriz como contador para especificar cuántas veces se ejecutan los comandos de Visual FoxPro que hay dentro del bucle FOR ... ENDFOR.

Los comandos de Visual FoxPro que hay a continuación de FOR se ejecutan hasta que se llega a ENDFOR o NEXT. Entonces se incrementa el contador MemVarName con el valor de nIncrement. Si omite la cláusula STEP, el contador se incrementará en 1. Entonces se comparará el contador con el valor final nFinalValue. Si el contador es inferior o igual al valor final nFinalValue, volverán a ejecutarse los comandos que siguen a la cláusula FOR. Si el contador es mayor que el valor final nFinalValue, la ejecución del programa bifurcará fuera del bucle FOR ... ENDFOR y continuará con el primer comando a continuación de ENDFOR o NEXT.

Nota   Los valores de nInitialValue, nFinalValue y nIncrement se leen únicamente al inicio. Sin embargo, cambiar el valor del contador MemVarName dentro del bucle afecta al número de veces que se ejecutará el bucle.

Si el valor de nIncrement es negativo y el valor inicial nInitialValue es mayor que el valor final nFinalValue, el contador disminuirá cada vez que pase el bucle.

Ejemplo

En el primer ejemplo, se muestran los números de 1 a 10.

En el segundo ejemplo se usan variables de memoria para los valores inicial, final y STEP para mostrar todos los registros pares desde el 2 hasta el 10 de customer.

* Example 1
CLEAR
FOR gnCount = 1 TO 10
   ? gnCount
ENDFOR

* Example 2
SET TALK OFF
CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'Data\testdata')
USE customer  && Opens Customer table
STORE 2 TO gnI  && Initial value
STORE 10 TO gnJ  && Final value
STORE 2 TO K  && Step value
FOR gnCount = gnI TO gnJ STEP K
   GOTO gnCount  && Move record pointer
   DISPLAY company && Display company name
ENDFOR

Vea también

DO CASE ... ENDCASE | DO WHILE ... ENDDO | FOR EACH ... ENDFOR | IF ... ENDIF | SCAN ... ENDSCAN | EXIT | LOOP