DO [n TIMES] ...
[statement_block]
ENDDO.
[statement_block]
ENDDO.
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.
IF sy-index = 3.
EXIT.
IF sy-index = 3.
EXIT.
ENDIF.
ENDDO.
ENDDO.
La salida es: 1 2 3.
Ejemplo 2:
DO 2 TIMES.
WRITE sy-index.
SKIP.
WRITE sy-index.
SKIP.
DO 3 TIMES.
WRITE sy-index.
ENDDO.
ENDDO.
SKIP.
ENDDO.
La salida esLa salida de la lista es la siguiente::
1 2 3
2
1 2 3
Ciclos condicionales:
Se repite el ciclo hasta que una condicion sea verdadera.
WHILE log_exp
[statemaent_block]
ENDWHILE.
[statemaent_block]
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.
IF sy-index = 2.
CONTINUE.
ENDIF.
WRITE sy-index.
ENDDO.
IF sy-index = 2.
CONTINUE.
ENDIF.
WRITE sy-index.
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.
CHECK sy-index BETWEEN 2 and 3.
WRITE sy-index.
ENDDO.
CHECK sy-index BETWEEN 2 and 3.
WRITE sy-index.
ENDDO.
La salida es:
2 3
Salir de un
ciclo
Para terminar un cliclo utilizar
la sentencia EXIT.
DO 4 TIMES.
IF sy-index = 3.
EXIT.
ENDIF.
ENDDO.
IF sy-index = 3.
EXIT.
ENDIF.
ENDDO.
WRITE
sy-index.
La
salida es:
1 2
No hay comentarios:
Publicar un comentario