Sintaxis
LOOP
Propósito
El comando LOOP causa la vuelta del control del flujo de ejecución al inicio de los comandos de programación estructurada WHILE ... ENDDO o FOR ... NEXT. El LOOP evita la ejecución de las instrucciones restantes dentro de un bloque de estos comandos.
Argumentos
Ninguno.
Utilización
El comando LOOP debe utilizarse siempre dentro de un bloque de instrucciones de los comandos WHILE ... ENDDO o FOR ... NEXT. Al encontrarlo, causa el retorno inmediato del flujo de ejecución al inicio de estos comandos, sin la necesidad de alcanzar el ENDDO o el NEXT. Las instrucciones que estuvieran entre el LOOP y el ENDDO o el NEXT no se ejecutarán. En el caso del WHILE, la condición de control será nuevamente evaluada. En el caso del FOR ... NEXT, el contador se incrementará y se comparará con su límite.
Ejemplos
En la siguiente función, la ejecución se devuelve al inicio del WHILE cuando el segundo elemento del array aAlmox esté completado con “N”.
// Función de cálculo
FUNCTION CalcGrao(nSacas, aAlmox)
LOCAL nPos := 0
LOCAL nReserva := 0
LOCAL nSoma := 0
WHILE nPos < LEN(aAlmox) .AND. nReserva < nSacas
nPos++
IF aAlmox[nPos, 2] == "N"
LOOP
ENDIF
nSoma := nReserva + aAlmox[nPos]
IF nSoma <= nSacas
nReserva := nSoma
ELSE
nReserva := nSacas
ENDIF
ENDDO
RETURN nReserva
De la misma forma que en la función anterior, basada en el WHILE, la ejecución de la siguiente función se devuelve al inicio cuando el segundo elemento del array aAlmox esté completado con “N” o cuando la cantidad reservada sea igual a la cantidad de sacos solicitados.
// Función de cálculo
FUNCTION CalcGrao(nSacas, aAlmox)
LOCAL nPos := 0
LOCAL nReserva := 0
LOCAL nSoma := 0
FOR nPos := 1 TO LEN(aAlmox)
IF nReserva == nSacas .OR. aAlmox[nPos, 2] == "N"
LOOP
ENDIF
nSoma := nReserva + aAlmox[nPos, 1]
IF nSoma <= nSacas
nReserva := nSoma
ELSE
nReserva := nSacas
ENDIF
NEXT nPos
RETURN nReserva