Curso de Cobol y PowerCobol

Bucles en COBOL con PERFORM

Capítulo 35: El verbo PERFORM

Cambiamos totalmente de tema en el curso y pasamos a los bucles. Estos los vamos a realizar con el verbo PERFORM.

¿Qué son los bucles?

Los bucles son estructuras de control del flujo habitual del programa. Permiten realizar tareas repetitivas. Gracias a esto, conseguimos escribir mucho menos código al no tener que repetir lo mismo varias veces.

En la mayoría de lenguajes de programación modernos, tenemos tres tipos de bucles, for, while y do while. Con el verbo PERFORM, no necesitamos nada más para conseguir los mismos propósitos en los programas.

Aquí van a entrar en juego principalmente los párrafos, los cuales, por si te has olvidado del nombre, son los que les damos un nombre en la PROCEDURE DIVISION y le añadimos cierto código. Hasta ahora, estos párrafos no nos servían de mucho más que para ordenar el código en secciones. Sin embargo, verás que con PERFORM los necesitas con tal de invocarlos (vaya... ha sonado muy del más allá. Digamos "llamarlos" si lo prefieres).

El flujo de ejecución de COBOL

Hasta ahora, sabes que el flujo de ejecución de COBOL, normalmente es de arriba a abajo. Solo podíamos saltar o ejecutar en el flujo de ejecución, ciertas líneas de código con el condicional IF. Ahora, con el verbo PERFORM podremos dar saltos en el flujo de ejecución, hacia detrás o hacia adelante a voluntad.

¿Qué tipo de acciones podemos hacer con PERFORM?

Lo que podemos hacer con el verbo PERFORM, es ejecutar un bloque de código (párrafo) repetidas veces, de manera indeterminada (se decide en tiempo de ejecución cuantas veces se ejecuta) o de manera determinada (antes de compilar, ya sabemos las veces que se va a ejecutar).
También, podemos utilizar el verbo PERFORM para pasar el control directamente a un párrafo, siendo capaz de saltar por encima de líneas de código y volver atrás al terminar como un bumerán.

Utilizando el verbo PERFORM pasando el control a un párrafo, se conoce como subrutina, para que te hagas una idea y puedas comparar esto con otros lenguajes de programación, sería el equivalente, en cierto modo, a una función, método o procedimiento. Cuando llamamos a una función, esta ejecuta un bloque de código. Esta la podemos llamar tantas veces como queramos. Eso se puede hacer con PERFORM. Como verás, PERFORM, es la navaja suiza de COBOL.

Metalenguaje de PERFORM

Aquí tienes el metalenguaje de PERFORM básico, por llamarlo de alguna forma, ya que hay variantes que veremos en otros capítulos.

Metalenguaje de PERFORM en COBOL

Para crear un PERFORM, vamos a utilizar su nombre de verbo, seguido de una llamada a un párrafo solo o bien, una secuencia de párrafos utilizando el nombre del párrafo inicial, THRU o THROUGH y el párrafo final.

Con esta sintaxis de PERFORM, todavía no conseguiremos crear un bucle de repetición. Solo crearemos una iteración entre los párrafos que especifiquemos de inicio y final.

Lo que hacemos al llamar a un párrafo o varios, es decir que haga la llamada, tal y como harías con una función. Lo llamas y se ejecuta todo el código que tiene. Si lo llamas más veces, sigue ejecutándose. Hasta ahora, no podíamos hacer esto.

Veamos un ejemplo práctico muy simple para que entiendas mejor el funcionamiento de PERFORM.

⁠⁠       IDENTIFICATION DIVISION.
       PROGRAM-ID. Capitulo35.

       ENVIRONMENT DIVISION.
       DATA DIVISION.
       FILE SECTION.
       WORKING-STORAGE SECTION.

       PROCEDURE DIVISION.
       Parrafo1.
           DISPLAY "Estás en el párrafo 1.".
           PERFORM Parrafo3.
       Parrafo2.
           DISPLAY "Estás en el párrafo 2.".
           DISPLAY "Aquí acaba el viaje.".
           STOP RUN.
       Parrafo3.
           DISPLAY "Estás en el párrafo 3.".

       END PROGRAM Capitulo35.
Estás en el párrafo 1.
Estás en el párrafo 3.
Estás en el párrafo 2.
Aquí acaba el viaje.

El flujo de ejecución normal de COBOL, sería el de ejecutar los párrafos en orden tal y como aparecen. En ese caso, se leería el Parrafo1, después el Parrafo2 y ahí terminaría, puesto que el STOP RUN (finalizar ejecución) lo tengo en este párrafo.

¿Qué ocurre en realidad? Entramos en el Parrafo1, se ejecuta su código hasta llegar al PERFORM. Este realiza la llamada al Párrafo3. La ejecución salta directamente ahí. Se ejecuta el Parrafo3, y al finalizar, volvemos a la línea siguiente del PERFORM, que no es otra cosa que el Parrafo2. El cual, se ejecuta y llega a su última línea con el STOP RUN.


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.