Alters

COBOL: pantallas

Hola de nuevo!

En esta entrada hablaré sobre las pantallas en COBOL. Con esto, nuestras SECTION se ampliarán, pero por contra, ganaremos en diseño y usabilidad.

Esto todavía no lo he probado (se me acaba de ocurrir mientras escribía), pero estoy casi seguro que se puede hacer una biblioteca de pantallas, para llamarlas desde donde sea...


Bueno, vamos allá!

Pantallas:

Como he escrito, las pantallas amplían las section, específicamente la DATA DIVISION - SCREEN SECTION.

¿Y que es una screen (pantalla)? Pues un conjunto de datos previamente cargados que podemos mostrar y pedir datos sobre esos mismos datos.

Aquí dejo un ejemplo:


       SCREEN SECTION.
      *  Pantalla inicial
       01 PRINCIPAL.
          03 LINE 05 COL 10 VALUE "MENU PRINCIPAL".
          03 LINE 07 COL 10 VALUE "ELIGA OPCION: ".
          03 LINE 09 COL 10 VALUE "TRATAMIENTO (A)UTO. DE CLIENTES".
          03 LINE 11 COL 10 VALUE "TRATAMIENTO (M)ANUAL DE CLIENTES".
          03 LINE 13 COL 10 VALUE "OBTENCION DE (L)ISTADOS".
          03 LINE 15 COL 10 VALUE "(S)ALIR".
          03 LINE 17 COL 10 VALUE "> ".
          03 PIC X USING OPCION.

Esta pantalla es del trabajo final que hice para obtener el título de Experto en COBOL. Como se ve, están los parámetros LINE y COL (COL hace lo mismo que POSITION). También tenemos VALUE, PIC...

USING es un token que aún no habíamos visto; en este caso le dice a COBOL en qué variable tiene que meter los datos. Anotar que esta variable tiene que estar definida en la WSS (en esta screen, por así decirlo, le pasamos un "puntero" a la variable).

Os explico un poco el transfondo de esta pantalla: se supone que el usuario puede introducir tres opciones: A, M, y L (en mayúscula o minúscula, da igual). Este valor se guarda en OPCION, y luego se usa para dirigir a uno u otro sitio.

En este caso, siendo un ejemplo, haremos un programa que muestre la opción.

Para hacer bien el ejemplo, voy primeo a explicar un poco lo que haré.

- En la WSS crearé unas variables de hardcode, la variable de opción, y una variable "tonta" (dummy).
- En la Screen Section crearemos varias pantallas, incluyendo una pantalla vacía.
- En la procedure mostraremos la pantalla, y actuaremos en consecuencia.


       IDENTIFICATION DIVISION.
       PROGRAM-ID. MENU.
       REMARKS. MENÚ PRINCIPAL

       ENVIRONMENT DIVISION.

       DATA DIVISION.
       WORKING-STORAGE SECTION.
      * Opción de menú
       77   OPCION PIC X VALUE SPACE.

      *  Variables de hardcode
       01    HARDCO.
          02 M-MAY PIC X VALUE 'M'.
          02 M-MIN PIC X VALUE 'm'.
          02 A-MAY PIC X VALUE 'A'.
          02 A-MIN PIC X VALUE 'a'.
          02 L-MAY PIC X VALUE 'L'.
          02 L-MIN PIC X VALUE 'l'.
          02 S-MAY PIC X VALUE 'S'.
          02 S-MIN PIC X VALUE 's'.

      * Variable vacía
       77    DUMMY PIC X VALUE SPACE.

       SCREEN SECTION.
      *  Pantalla inicial
       01 PRINCIPAL.
          03 LINE 05 COL 10 VALUE "MENU PRINCIPAL".
          03 LINE 07 COL 10 VALUE "ELIGA OPCION: ".
          03 LINE 09 COL 10 VALUE "TRATAMIENTO (A)UTO. DE CLIENTES".
          03 LINE 11 COL 10 VALUE "TRATAMIENTO (M)ANUAL DE CLIENTES".
          03 LINE 13 COL 10 VALUE "OBTENCION DE (L)ISTADOS".
          03 LINE 15 COL 10 VALUE "(S)ALIR".
          03 LINE 17 COL 10 VALUE "> ".
          03 PIC X USING OPCION.

      * Pantalla de error
       01 ERROR-SCR.
          03 LINE 05 COL 10 VALUE "ERROR".
          03 LINE 07 COL 10 VALUE "NO EXISTE LA OPCION".
          03 LINE 09 COL 10 VALUE "ELIGA ENTRE LAS OPCIONES:".
          03 LINE 11 COL 10 VALUE "A, M, o L".
          03 PIC X USING DUMMY.

      *  Pantalla vacía
       01 VACIO.
          03 BLANK SCREEN.

       PROCEDURE DIVISION.
       INICIO.
      *    Mostramos la pantalla inicial
           DISPLAY PRINCIPAL.
           ACCEPT  PRINCIPAL.

      *    Limpiamos la pantalla
           DISPLAY VACIO.

      *   Hacemos cosas...

           DISPLAY 'HAS USADO LA OPCION' OPCION.
           DISPLAY 'PULSA CUALQUIER TECLA PARA SALIR.'.
           ACCEPT DUMMY.


           EXIT PROGRAM.


Como se puede ver, hay cosas que no usamos, como las variables de HC o la pantalla de error. Estas cosas las dejaré por ahora, ya las usaré cuando hable del flujo, en la siguiente entrada.


No es muy difícil de entender el funcionamiento de este programa... ahora podéis experimentar con las pantallas, usando las opciones que vimos ayer, por ejemplo.

Saludos, y,

Hasta la próxima!