Curso de Cobol y PowerCobol

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.

Programación Fácil YouTube

Suscríbete

Si te ha gustado este curso y crees que el trabajo merece la pena, te agradeceré eternamente que te suscribas a mi canal de YouTube para apoyarme y que pueda seguir haciendo cursos gratuitos.

Además, si te encanta la programación, tienes un montón más de cursos gratuitos para ver.

No solo eso, podrás participar enviándome comentarios con tus sugerencias para temas específicos o cursos completos o incluso las dudas que tengas y las intentaré ir resolviendo en los cursos que estén todavía abiertos.