
Creando un menú de consola con COBOL
Capítulo 36: Múltiples STOP RUN y menú con PERFORM
En este capítulo, vamos a practicar con un ejemplo algo más complicado. Crearemos una estructura similar a la que tendría un menú, para que el usuario pueda elegir una opción y ejecutar solo esa parte del programa. Esto lo puedes conseguir con PERFORM
.
Múltiples STOP RUN en COBOL
Podemos tener más de un STOP RUN
, puesto que hasta ahora la lectura de código era lineal, no nos hacía falta, ahora puede que sí, aunque debes tener cuidado con dejar muchos caminos por aquí y por allá o tu código se volverá un infierno.
Creación de un menú en COBOL
En el siguiente ejemplo, tenemos varias opciones en una estructura de nivel 88
. Las primeras opciones servirán para darle a elegir al usuario, qué programa o parte del programa ejecutar. Podríamos enlazar o bien un programa completo externo a esta hoja de COBOL para cada opción, o tener párrafos en la propia hoja que hagan de funciones. De esta forma, vamos a permitir al usuario decidir que opción prefiere y ejecutar solo eso.
Un ejemplo, sería la calculadora que hicimos anteriormente. Esta solo era capaz de pedirle unos números al usuario, pero no era capaz de preguntarle la operación. Podríamos hacerla con una serie de IF
, pero no va a quedar una cosa muy profesional.
Aquí tienes el ejemplo de este capítulo, en el próximo, te mostraré la calculadora mejorada.
En AceptaDatos
, se le pide al usuario que introduzca una valor del 1 al 3. Dependiendo de cual elija, nos vamos a un párrafo u otro. Cada párrafo tiene su propio bloque de código. Al terminar de ejecutar el párrafo, he decidido que el programa termine. Como puedes ver, se utilizan varios STOP RUN
. Esto se puede hacer de un montón de formas, esta solo es una de ellas.
Si el usuario introduce un 4
, se ejecuta IF Salir
. Cualquier otra cosa que no esté contemplada en la estructura de nivel 88
, hará que salte el último ELSE
(línea 39
). Este, dirá que la opción no es válida, y en forma de bucle infinito, va a llevar al usuario al párrafo AceptaDatos
¿Quién no quiere una segunda oportunidad? Si pone esta vez una opción correcta, la sección del programa se ejecuta y finaliza, si no pone nunca una opción válida, le estará preguntando lo mismo infinitamente.
En conclusión al uso de PERFORM
en este programa, lo estamos utilizando como función en las 4 opciones y como bucle si hay un error.
IDENTIFICATION DIVISION.
PROGRAM-ID. Capitulo36.
ENVIRONMENT DIVISION.
DATA DIVISION.
FILE SECTION.
WORKING-STORAGE SECTION.
*> Tenemos 3 opciones (1-4), Si ponemos algo que no sea un número,
*> queda en ZERO.
01 Opcion PIC 9 VALUE ZERO.
88 Opcion1 VALUE 1.
88 Opcion2 VALUE 2.
88 Opcion3 VALUE 3.
88 Salir VALUE 4.
PROCEDURE DIVISION.
*> Solicita un número del 1 al 3 al usuario.
AceptaDatos.
DISPLAY "Introduce un número del 1 al 3 para ejecutar una"-
" de las opciones. Si quiere salir, introduzca el número 4.".
ACCEPT Opcion.
*> Con las opciones 1-3 vamos a los PERFORM correspondientes.
IF Opcion1 THEN
DISPLAY "Seleccionada la primera opción."
PERFORM Parrafo1
ELSE
IF Opcion2 THEN
DISPLAY "Seleccionada la segunda opción."
PERFORM Parrafo2
ELSE
IF Opcion3 THEN
DISPLAY "Seleccionada la tercera opción."
PERFORM Parrafo3
ELSE
IF Salir
DISPLAY "Saliendo del programa..."
STOP RUN
ELSE
DISPLAY "Opción inválida. Inténtalo de nuevo."
PERFORM AceptaDatos
END-IF
END-IF
END-IF
END-IF.
*> Comienzan los párrafos para los PERFORM. La ejecución, finaliza
*> después de ejecutar su código.
Parrafo1.
DISPLAY "Estás en el párrafo 1."
STOP RUN.
Parrafo2.
DISPLAY "Estás en el párrafo 2.".
STOP RUN.
Parrafo3.
DISPLAY "Estás en el párrafo 3.".
STOP RUN.
END PROGRAM Capitulo36.
Comentarios
Si te quedan dudas sobre el temario, sobre Cobol, o cualquier otra cosa relacionada o simplemente quieres agradecer, aquí tienes tu sitio para dejar tu granito de arena. Gracias por tus comentarios y por darle vida a este sitio web.