Las rutinas PERFORM y los bucles de COBOL
Capítulo 10: Párrafos o rutinas con PERFORM
En este capítulo empezamos con las rutinas, también conocidas como párrafos, las cuales nos van a permitir alterar el flujo de ejecución de COBOL, el cuál va normalmente de arriba a abajo.
¿Qué son las rutinas?
Las rutinas son bloques de código que podemos llamar cuando queramos. Estas tienen gran parecido a las funciones de otros lenguajes de programación, aunque no son exactamente lo mismo.
En el siguiente código puedes ver alterado el flujo de ejecución normal de COBOL gracias a las rutinas:
IDENTIFICATION DIVISION.
PROGRAM-ID. CAPITULO-10.
DATA DIVISION.
FILE SECTION.
WORKING-STORAGE SECTION.
PROCEDURE DIVISION.
RUTINA01.
DISPLAY "Esta es la rutina 1."
PERFORM RUTINA03.
RUTINA02.
DISPLAY "Esta es la rutina 2."
PERFORM RUTINA04.
RUTINA03.
DISPLAY "Esta es la rutina 3."
PERFORM RUTINA02.
RUTINA04.
DISPLAY "Esta es la rutina 4."
DISPLAY "Finaliza el programa."
STOP RUN.
END PROGRAM CAPITULO-10.
Resultado
El programa se ejecuta en la RUTINA01
. Se imprime su DISPLAY
y gracias al PERFORM
podemos dar un salto en el flujo de ejecución del programa e ir de la RUTINA01
a la RUTINA03
sin ejecutar la RUTINA02
.
En la RUTINA03
se da el salto a la RUTINA02
, esta vez si que se ejecuta y esta dice que se ejecute la RUTINA04
.
Puesto que la RUTINA04
no tiene ningún PERFORM
, el programa termina ahí.
Esta es la rutina 1.
Esta es la rutina 3.
Esta es la rutina 2.
Esta es la rutina 4.
Finaliza el programa.
En caso de que el número sea menor que 50
, el programa no ejecuta el código del IF
.
Podemos añadir un bloque de código alternativo añadiendo un ELSE
, el cual se ejecutará en caso de que no se cumpla la condición del IF
.
¿Cómo crear un bucle infinito en COBOL?
Gracias a los PERFORM
podemos hacer un programa "infinito", pero no del todo, ya que nos devolverá este error: libcob: test.cbl: 18: stack overflow, possible PERFORM depth exceeded
que nos dice que posiblemente se excedió la profundidad del PERFORM
y detendrá la ejecución para evitar un colapso de la máquina. Mira un ejemplo:
IDENTIFICATION DIVISION.
PROGRAM-ID. CAPITULO-10.
DATA DIVISION.
FILE SECTION.
WORKING-STORAGE SECTION.
PROCEDURE DIVISION.
RUTINA01.
DISPLAY "Esta es la rutina 1."
PERFORM RUTINA03.
RUTINA02.
DISPLAY "Esta es la rutina 2."
PERFORM RUTINA03.
RUTINA03.
DISPLAY "Esta es la rutina 3."
PERFORM RUTINA02.
STOP RUN.
END PROGRAM CAPITULO-10.
Puedes ver el resultado de este programa en el vídeo, no lo pongo aquí ya que la salida de la consola es muy larga.
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.