Share via


DO WHILE ... ENDDO (Comando)

Ejecuta un conjunto de comandos dentro de un bucle condicional.

DO WHILE lExpressionCommands 
   [LOOP]
   [EXIT]
ENDDO

Parámetros

  • lExpression
    Especifica una expresión lógica cuyo valor determina si se debe ejecutar el conjunto de comandos incluido entre DO WHILE y ENDDO. Siempre que lExpression dé como resultado verdadero (.T.), el conjunto de comandos se ejecutará.
  • Commands
    Especifica el conjunto de comandos de Visual FoxPro que se ejecutan siempre y cuando lExpression dé como resultado verdadero (.T.).
  • LOOP
    Devuelve el control del programa directamente a DO WHILE. LOOP se puede situar en cualquier lugar entre DO WHILE y ENDDO.
  • EXIT
    Transfiere el control del programa desde el interior del bucle DO WHILE hasta el primer comando situado detrás de ENDDO. EXIT puede situarse en cualquier lugar entre DO WHILE y ENDDO.

Observaciones

Un conjunto de comandos situados entre DO WHILE y ENDDO se ejecuta siempre y cuando el valor de la expresión lógica lExpression sea verdadero (.T.). Una instrucción DO WHILE debe tener su correspondiente instrucción ENDDO.

Puede situar comentarios después de DO WHILE y ENDDO en la misma línea. Estos comentarios se pasan por alto durante la compilación y ejecución del programa.

Ejemplo

En el ejemplo siguiente se calcula el número total de productos en existencias cuyo precio supera los 20 dólares en el bucle DO WHILE hasta llegar al final del archivo (EOF). Se sale del bucle DO WHILE y se muestra el total.

CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'Data\testdata')
USE products  && Opens Products table
SET TALK OFF
gnStockTot = 0

DO WHILE .T.  && Begins loop
   IF EOF( )
      EXIT
   ENDIF
   IF unit_price < 20
      SKIP
      LOOP
   ENDIF
   gnStockTot = gnStockTot + in_stock
   SKIP
ENDDO     && Ends loop

CLEAR
? 'Total items in stock valued over 20 dollars:'
?? gnStockTot

Vea también

DO CASE ... ENDCASE | FOR EACH ... ENDFOR | FOR ... ENDFOR | IF ... ENDIF | IIF( ) | SCAN ... ENDSCAN