Ciclos incondicionales:
DO [n TIMES] ...
[Statement_block] [statement_block]
ENDDO. ENDDO.
Además de utilizar el TIMES para
restringir el número de pasadas de bucle de n.Utilizar TIMES para restringir a n el numero de veces que pasa
por el ciclo. Las sentencias EXIT y STOP
finalizan el ciclo. El campo del sistema sy-index contiene el numero de ciclos
por donde ha pasado.
Ejemplo
1:
DO.
WRITE sy-index.
SI SY-índice = 3. IF sy-index =
3.
EXIT. EXIT.
ENDIF.
ENDDO.ENDDO.
La salida es: 1 2 3.
Ejemplo 2:
DO 2 TIMES.
ESCRIBE SY-índice. WRITE
sy-index.
SKIP. SKIP.
DO 3 TIMES.
WRITE sy-index.
ENDDO. ENDDO.
SKIP. SKIP.
ENDDO.
ENDDO.ENDDO.La salida esLa salida de la lista es la siguiente::
1
1 2 3
2
1 2 3
Ciclos condicionales:
Se repite el ciclo hasta que una condicion sea verdadera.
WHILE log_exp
[Statemaent_block] [statemaent_block]
ENDWHILE. ENDWHILE.
Ejemplo:
REPORT demo_flow_control_while.
DATA: length TYPE i VALUE 0,
strl TYPE i VALUE 0,
string(30) TYPE c VALUE 'Test String'.
strl = strlen( string ).
WHILE string NE space.
WRITE string(1).
length = sy-index.
SHIFT string.
ENDWHILE.
WRITE: / 'STRLEN: ', strl.
WRITE: / 'Length of string:', length.
La salida es : T es t S tr ing
STRLEN: 11
Length of String: 11
Terminar un
paso de un ciclo incondicionalmente.
Para terminar un único paso de un ciclo utilizar CONTINUE,
no ejecuta las sentencias restantes después del CONTINUE y salta al siguiente
paso del ciclo.
DO 4 TIMES.
SI SY-índice = 2. IF sy-index =
2.
CONTINUE. CONTINUE.
ENDIF. ENDIF.
ESCRIBE SY-índice. WRITE
sy-index.
ENDDO.ENDDO. ENDDO.
La salida es:
1 3 4
Terminar un
paso de un ciclo condicionalmente.
Para terminar un paso de un ciclo utilizar CHECK, si la condición
no es vardadera cualquier sentencia restante dentro del ciclo es ignorada y
continua en el siguiente paso del ciclo.
DO 4 TIMES.
CONSULTAR sy-índice de entre
2 y 3. CHECK sy-index BETWEEN 2 and 3.
ESCRIBE SY-índice. WRITE
sy-index.
ENDDO.ENDDO.
La salida es:
2 3
Salir de un
ciclo
Para terminar un cliclo utilizar
la sentencia EXIT.
DO 4 TIMES.
SI SY-índice = 3. IF sy-index =
3.
EXIT. EXIT.
ENDIF. ENDIF.
ESCRIBE SY-índice. ENDDO.
WRITE
sy-index.
ENDDO.ENDDO.
La
salida es:
1 2