Curso de Cobol y PowerCobol

¿Cómo utilizar el incremento o decremento en bucles de COBOL?

Capítulo 40: Incremento y decremento en bucles

Algo que hacemos con mucha frecuencia en otros lenguajes de programación, es autoincrementar variables para los bucles. En este capítulo, verás un poco más sobre el uso de PERFORM TIMES, viendo como crear bucles autoincrementables.

Ejecución en línea y fuera de línea

Con los PERFORM cuando ejecutamos algo, lo hacemos normalmente, fuera de línea, es decir, llamamos a la ejecución a otra línea y se desplaza el flujo de ejecución a otro lugar en el código. Cuando ejecutamos un PERFORM TIMES sin especificar un párrafo, es decir que se autoejecute como mostré en un ejemplo del capítulo anterior, decimos que es una ejecución en línea. Podría haber explicado esto antes, pero sin un ejemplo de ejecución en línea, no creo que se hubiese entendido.

Veamos como incrementar el valor de una variable. Esto nos servirá para hacer cosas como bucles estilo for o while, más adelante.

Incrementar valores de una variable con un bucle

En el siguiente ejemplo, se va a ejecutar el PERFORM 7 veces. Cada vez que se ejecute, va a añadirle 1 a la variable Numero y lo va a estar imprimiendo en la consola.

⁠⁠       IDENTIFICATION DIVISION.
       PROGRAM-ID. Capitulo40.
       
       DATA DIVISION.
       FILE SECTION.
       WORKING-STORAGE SECTION.
       77  Numero PIC 9.
       
       PROCEDURE DIVISION.
       
       Inicio.
       PERFORM Operacion 7 TIMES.
       STOP RUN.
       
       Operacion.
       ADD 1 TO Numero.
       DISPLAY Numero.
       
       END PROGRAM Capitulo40.
1
2
3
4
5
6
7

Decrementar valores de una variable con un bucle

Para decrementar, solo tenemos que realizar el mismo procedimiento pero sustrayendo 1 a la variable. Recuerda que hay que cambiar el TO por FROM.

⁠⁠       IDENTIFICATION DIVISION.
       PROGRAM-ID. Capitulo40.
       
       DATA DIVISION.
       FILE SECTION.
       WORKING-STORAGE SECTION.
       77  Numero PIC 9 VALUE 8.
       
       PROCEDURE DIVISION.
       
       Inicio.
       PERFORM Operacion 7 TIMES.
       STOP RUN.
       
       Operacion.
       SUBTRACT 1 FROM Numero.
       DISPLAY Numero.
       
       END PROGRAM Capitulo40.
7
6
5
4
3
2
1

Incrementar valores de una variable con multiplicación

Supongo que ya te imaginas como puedes hacer un incremento con multiplicación. De todas formas te dejo un ejemplo que nunca está de más.

⁠⁠       IDENTIFICATION DIVISION.
       PROGRAM-ID. Capitulo40.
       
       DATA DIVISION.
       FILE SECTION.
       WORKING-STORAGE SECTION.
       77  Numero PIC 9999 VALUE 8.
       
       PROCEDURE DIVISION.
       
       Inicio.
       PERFORM Operacion 7 TIMES.
       STOP RUN.
       
       Operacion.
       MULTIPLY 2 BY Numero.
       DISPLAY Numero.
       
       END PROGRAM Capitulo40.
0016
0032
0064
0128
0256
0512
1024

Decrementar valores de una variable con división

Terminemos con este capítulo, viendo el decremento por división.

En el siguiente ejemplo, tenemos una variable Numero con un valor inicial de 7000.

En Operacion se divide Numero (7000) entre 2 y se almacena el Resultado.

Después, hay que ir restando el Resultado (3500 la primera vez) a Numero para que en la siguiente división, se divida el resultado por dos.

⁠⁠       IDENTIFICATION DIVISION.
       PROGRAM-ID. Capitulo40.
       
       DATA DIVISION.
       FILE SECTION.
       WORKING-STORAGE SECTION.
       77  Numero PIC 9999 VALUE 7000.
       77  Resultado PIC 9999 VALUE ZEROS.
       
       PROCEDURE DIVISION.
       
       INICIO.
       PERFORM Operacion 7 TIMES.
       STOP RUN.
       
       Operacion.
       DIVIDE Numero BY 2 GIVING Resultado.
       SUBTRACT Resultado FROM Numero.
       DISPLAY Numero.
       
       END PROGRAM Capitulo40.
3500
1750
0875
0438
0219
0110
0055

Bucles con incremento y decremento en línea

Hasta ahora, todos los ejemplos, los he realizado fuera de línea, ejecutando el incremento o decremento en otro párrafo. Sin embargo, puedes utilizar PERFORM TIMES sin nombre de párrafo para crear un incremento o decremento en el propio párrafo.

⁠⁠       IDENTIFICATION DIVISION.
       PROGRAM-ID. Capitulo40.

       DATA DIVISION.
       FILE SECTION.
       WORKING-STORAGE SECTION.
       77  Numero PIC 999 VALUE ZERO.

       PROCEDURE DIVISION.

       Inicio.
       PERFORM 7 TIMES
       ADD 10 TO Numero
       DISPLAY Numero
       END-PERFORM.

       STOP RUN.

       END PROGRAM Capitulo40.
010
020
030
040
050
060
070

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.