Árvore de páginas

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

  • Sem rótulos