
¿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.