
Uso de la sentencia WRITE
El objetivo de esta lección es dominar el uso de la sentencia WRITE. Dicha sentencia emplea la siguiente sintaxis:
WRITE:/<offset>(<long>)'<datos a visualizar>'.
Donde el ":/" sirve para crear un salto de línea; <offset> es la columna en la cual se genera la impresión; <long> es para definir la longitud de la impresión; y el último elemento es lo que será impreso.
Adicionalmente, disponemos de las siguientes cláusulas:
- LEFT-JUSTIFIED: Alinea el texto a la izquierda.
- CENTERED: Alinea el texto al centro.
- RIGHT-JUSTIFIED: Alinea el texto a la derecha.
- NO-ZERO: Reemplaza los ceros por espacios en blanco. Más en específico, reemplaza los ceros que están al inicio del valor, cualquier cero después de un número distinto a cero será ignorado.
- NO-GAPS: Borra los espacios en blanco.
- NO-SIGN: Omite el signo durante la impresión de datos de tipo I o P.
- DECIMALS foo: Define la cantidad de dígitos decimales usando foo.
- ROUND foo: Redondea el campo de salida para los datos de tipo P.
- DD/MM/YYYY: Hace que las fechas sean impresas con puntos como separadores. Para que los separadores sean barras se puede usar la sentencia CONCATENATE junto a SEPARATE BY a través de una copia de SY-DATUM o se puede usar los modificadores de la sentencia write USING EDIT MASK <máscara> to <fecha>.
Además, para formatear nuestro texto tenemos acceso a otras dos sentencias:
- SKIP: Esta la usamos para dejar una línea en blanco entre dos WRITEs.
- ULINE: Con esta sentencia creamos una línea horizontal.
Eventos
Hay 2 eventos que nos importan de momento:
TOP-OF-PAGE:
Su ejecución es cuando el programa empieza a generar una nueva página y por lo tanto suele ser utilizado para manipular la cabecera de una página.
END-OF-SELECTION:
Este evento arranca tras la finalización del evento START-OF-SELECTION y se usa para printear los datos resultantes del procesamiento. La idea es separar el procesamiento y la presentación de los datos entre el START y el END respectivamente.
Cambio de tamaño de la impresión
Si queremos cambiar el tamaño de la impresión tendremos que cambiar la cantidad de líneas y columnas. Esto lo hacemos con una cláusula después de la sentencia REPORT, de la siguiente forma:
REPORT x NO STANDARD PAGE HEADING LINE-SIZE foo LINE-COUNT bar.
Donde x es el nombre del reporte, foo es la longitud de cada línea (cantidad de columnas) y donde bar es la cantidad de líneas.