Estructuras de Control: Perform Times y Perform Until en COBOL

Clase 22 de 24Curso de COBOL desde Cero

Contenido del curso

Tus primeros pasos con COBOL

Resumen

Dominar las estructuras de control iterativas es fundamental para cualquier programador COBOL. En esta práctica se implementan dos variantes del perform: una que repite un párrafo un número fijo de veces y otra que itera hasta cumplir una condición. Si vienes de otros lenguajes, reconocerás en ellas al clásico for y al while.

¿Cómo funciona perform times en COBOL?

La instrucción perform times ejecuta un párrafo tantas veces como se le indique con un número entero. Es una iteración determinada, porque conoces de antemano cuántas repeticiones ocurrirán [01:00].

La sintaxis básica es:

cobol PERFORM 040-BEC 3 TIMES.

Esto equivale a un ciclo for en lenguajes como Java o Python. En el ejemplo codificado, cada vez que el programa ingresa al párrafo 040-BEC, suma uno a la variable WSB-CONTADOR mediante la instrucción ADD 1 TO WSB-CONTADOR y despliega su valor con DISPLAY [05:45]. El resultado en consola muestra los valores 1, 2 y 3, confirmando las tres iteraciones.

¿Qué variables se necesitan para el ciclo?

Se definen dos variables hijas bajo el grupo WSB-VARIABLES a nivel 05 [03:20]:

  • WSB-CONTADOR: numérica, longitud tres, inicializada en ceros.
  • WSB-INC: numérica, longitud tres, inicializada en ceros.

La primera alimenta el perform times y la segunda el perform until. Ambas se declaran en la sección WORKING-STORAGE con picture 9(3) y valor inicial ZEROS.

¿Qué hace perform until y en qué se diferencia?

Mientras perform times tiene un número fijo de repeticiones, perform until itera hasta que una condición lógica se cumpla [01:30]. Funciona como un ciclo while invertido: el programa entra al párrafo una y otra vez mientras la condición sea falsa.

cobol PERFORM 041-BEC UNTIL WSB-INC = 6.

Dentro del párrafo 041-BEC se ejecuta ADD 1 TO WSB-INC y luego se despliega el valor del incrementador [07:00]. La consola muestra 1, 2, 3, 4, 5 y finalmente 6, momento en que la condición se satisface y el control pasa al párrafo 050-RETURN, donde la instrucción STOP RUN finaliza el programa.

¿Por qué el ciclo llega hasta 6 y no se detiene en 5?

La evaluación de la condición ocurre después de ejecutar el cuerpo del párrafo. El programa suma uno, despliega y entonces valida si WSB-INC ya es igual a seis [10:55]. Cuando alcanza ese valor, la condición se cumple y el perform deja de iterar.

¿Cómo compilar y resolver errores comunes?

Una vez escrito el programa, se compila y ejecuta mediante un JCL (Job Control Language) que se carga desde la librería PLATZI.JCL [08:00]. El flujo incluye tres pasos: compilación, link edition y ejecución.

Un error frecuente al nombrar programas es utilizar una palabra reservada como identificador. En este caso, el PROGRAM-ID se llamó PERFORM, lo que generó el error SYSTEM 806 [08:40]. COBOL reserva esa palabra para la instrucción de control, así que el compilador no puede distinguir entre el nombre del programa y la sentencia.

¿Cómo se corrige el error de palabra reservada?

La solución es encerrar el nombre entre apóstrofes en la sentencia PROGRAM-ID [09:50]:

cobol PROGRAM-ID. 'PERFORM'.

El editor colorea el nombre en blanco, confirmando que ya no se interpreta como la instrucción reservada. Tras guardar y volver a submitir el JCL, el job termina con código de retorno cero, indicando ejecución exitosa [10:20].

Para revisar la salida, el shortcut =3.8 lleva al historial de jobs, donde puedes abrir el último ejecutado y desplazarte hasta el final con la tecla M seguida de F8 [10:40].

Estas dos formas de perform cubren los escenarios más habituales de iteración en COBOL. Practica modificando el número de repeticiones y las condiciones del until para afianzar la lógica. Si encontraste algún comportamiento inesperado o quieres compartir tu solución, déjalo en los comentarios.