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