La programación modular es una técnica que divide un programa en partes más pequeñas y manejables llamadas módulos o subprogramas. Esta técnica facilita la comprensión, el desarrollo, la prueba y el mantenimiento del software. En COBOL, la modularidad se logra principalmente mediante el uso de subprogramas.
Objetivos de la Programación Modular
- Reutilización de Código: Permite reutilizar módulos en diferentes partes del programa o en otros programas.
- Mantenimiento: Facilita la localización y corrección de errores.
- Legibilidad: Mejora la claridad y comprensión del código.
- Colaboración: Permite que varios programadores trabajen en diferentes módulos simultáneamente.
Estructura de un Programa Modular en COBOL
Un programa modular en COBOL generalmente consta de un programa principal y varios subprogramas. El programa principal coordina la ejecución y llama a los subprogramas según sea necesario.
Programa Principal
El programa principal es el punto de entrada del programa y contiene la lógica de control principal. Aquí se declaran y se inicializan las variables globales y se realizan las llamadas a los subprogramas.
Subprogramas
Los subprogramas son módulos independientes que realizan tareas específicas. Cada subprograma tiene su propia sección de datos y procedimientos.
Ejemplo de Programa Modular en COBOL
A continuación, se presenta un ejemplo de un programa modular en COBOL que calcula el área de un rectángulo y un círculo utilizando subprogramas.
Programa Principal
IDENTIFICATION DIVISION. PROGRAM-ID. MainProgram. DATA DIVISION. WORKING-STORAGE SECTION. 01 RECTANGLE-LENGTH PIC 9(5)V9(2). 01 RECTANGLE-WIDTH PIC 9(5)V9(2). 01 RECTANGLE-AREA PIC 9(7)V9(2). 01 CIRCLE-RADIUS PIC 9(5)V9(2). 01 CIRCLE-AREA PIC 9(7)V9(2). PROCEDURE DIVISION. MAIN-PARA. DISPLAY "Enter the length of the rectangle: ". ACCEPT RECTANGLE-LENGTH. DISPLAY "Enter the width of the rectangle: ". ACCEPT RECTANGLE-WIDTH. CALL 'CalculateRectangleArea' USING RECTANGLE-LENGTH RECTANGLE-WIDTH RECTANGLE-AREA. DISPLAY "The area of the rectangle is: " RECTANGLE-AREA. DISPLAY "Enter the radius of the circle: ". ACCEPT CIRCLE-RADIUS. CALL 'CalculateCircleArea' USING CIRCLE-RADIUS CIRCLE-AREA. DISPLAY "The area of the circle is: " CIRCLE-AREA. STOP RUN.
Subprograma para Calcular el Área del Rectángulo
IDENTIFICATION DIVISION. PROGRAM-ID. CalculateRectangleArea. DATA DIVISION. LINKAGE SECTION. 01 L-RECTANGLE-LENGTH PIC 9(5)V9(2). 01 L-RECTANGLE-WIDTH PIC 9(5)V9(2). 01 L-RECTANGLE-AREA PIC 9(7)V9(2). PROCEDURE DIVISION USING L-RECTANGLE-LENGTH L-RECTANGLE-WIDTH L-RECTANGLE-AREA. COMPUTE L-RECTANGLE-AREA = L-RECTANGLE-LENGTH * L-RECTANGLE-WIDTH. EXIT PROGRAM.
Subprograma para Calcular el Área del Círculo
IDENTIFICATION DIVISION. PROGRAM-ID. CalculateCircleArea. DATA DIVISION. LINKAGE SECTION. 01 L-CIRCLE-RADIUS PIC 9(5)V9(2). 01 L-CIRCLE-AREA PIC 9(7)V9(2). PROCEDURE DIVISION USING L-CIRCLE-RADIUS L-CIRCLE-AREA. COMPUTE L-CIRCLE-AREA = 3.14159 * L-CIRCLE-RADIUS * L-CIRCLE-RADIUS. EXIT PROGRAM.
Explicación del Código
-
Programa Principal:
- Solicita al usuario que ingrese las dimensiones del rectángulo y el radio del círculo.
- Llama a los subprogramas
CalculateRectangleArea
yCalculateCircleArea
para calcular las áreas correspondientes. - Muestra los resultados al usuario.
-
Subprograma
CalculateRectangleArea
:- Recibe la longitud y el ancho del rectángulo como parámetros.
- Calcula el área del rectángulo y la devuelve al programa principal.
-
Subprograma
CalculateCircleArea
:- Recibe el radio del círculo como parámetro.
- Calcula el área del círculo utilizando la fórmula πr² y la devuelve al programa principal.
Ejercicio Práctico
Ejercicio
Crea un programa modular en COBOL que calcule el área de un triángulo y un trapecio. El programa principal debe solicitar al usuario las dimensiones necesarias y llamar a los subprogramas CalculateTriangleArea
y CalculateTrapezoidArea
para realizar los cálculos.
Solución
Programa Principal
IDENTIFICATION DIVISION. PROGRAM-ID. MainProgram. DATA DIVISION. WORKING-STORAGE SECTION. 01 TRIANGLE-BASE PIC 9(5)V9(2). 01 TRIANGLE-HEIGHT PIC 9(5)V9(2). 01 TRIANGLE-AREA PIC 9(7)V9(2). 01 TRAPEZOID-BASE1 PIC 9(5)V9(2). 01 TRAPEZOID-BASE2 PIC 9(5)V9(2). 01 TRAPEZOID-HEIGHT PIC 9(5)V9(2). 01 TRAPEZOID-AREA PIC 9(7)V9(2). PROCEDURE DIVISION. MAIN-PARA. DISPLAY "Enter the base of the triangle: ". ACCEPT TRIANGLE-BASE. DISPLAY "Enter the height of the triangle: ". ACCEPT TRIANGLE-HEIGHT. CALL 'CalculateTriangleArea' USING TRIANGLE-BASE TRIANGLE-HEIGHT TRIANGLE-AREA. DISPLAY "The area of the triangle is: " TRIANGLE-AREA. DISPLAY "Enter the first base of the trapezoid: ". ACCEPT TRAPEZOID-BASE1. DISPLAY "Enter the second base of the trapezoid: ". ACCEPT TRAPEZOID-BASE2. DISPLAY "Enter the height of the trapezoid: ". ACCEPT TRAPEZOID-HEIGHT. CALL 'CalculateTrapezoidArea' USING TRAPEZOID-BASE1 TRAPEZOID-BASE2 TRAPEZOID-HEIGHT TRAPEZOID-AREA. DISPLAY "The area of the trapezoid is: " TRAPEZOID-AREA. STOP RUN.
Subprograma para Calcular el Área del Triángulo
IDENTIFICATION DIVISION. PROGRAM-ID. CalculateTriangleArea. DATA DIVISION. LINKAGE SECTION. 01 L-TRIANGLE-BASE PIC 9(5)V9(2). 01 L-TRIANGLE-HEIGHT PIC 9(5)V9(2). 01 L-TRIANGLE-AREA PIC 9(7)V9(2). PROCEDURE DIVISION USING L-TRIANGLE-BASE L-TRIANGLE-HEIGHT L-TRIANGLE-AREA. COMPUTE L-TRIANGLE-AREA = (L-TRIANGLE-BASE * L-TRIANGLE-HEIGHT) / 2. EXIT PROGRAM.
Subprograma para Calcular el Área del Trapecio
IDENTIFICATION DIVISION. PROGRAM-ID. CalculateTrapezoidArea. DATA DIVISION. LINKAGE SECTION. 01 L-TRAPEZOID-BASE1 PIC 9(5)V9(2). 01 L-TRAPEZOID-BASE2 PIC 9(5)V9(2). 01 L-TRAPEZOID-HEIGHT PIC 9(5)V9(2). 01 L-TRAPEZOID-AREA PIC 9(7)V9(2). PROCEDURE DIVISION USING L-TRAPEZOID-BASE1 L-TRAPEZOID-BASE2 L-TRAPEZOID-HEIGHT L-TRAPEZOID-AREA. COMPUTE L-TRAPEZOID-AREA = ((L-TRAPEZOID-BASE1 + L-TRAPEZOID-BASE2) / 2) * L-TRAPEZOID-HEIGHT. EXIT PROGRAM.
Conclusión
En esta lección, hemos aprendido sobre las técnicas de programación modular en COBOL. Hemos visto cómo dividir un programa en módulos más pequeños y manejables mediante el uso de subprogramas. La modularidad mejora la reutilización del código, facilita el mantenimiento y mejora la legibilidad del programa. Además, hemos practicado creando un programa modular que calcula áreas de diferentes figuras geométricas.
En el siguiente módulo, exploraremos el manejo de errores y técnicas de depuración en COBOL, lo cual es crucial para desarrollar programas robustos y confiables.
Curso de Programación COBOL
Módulo 1: Introducción a COBOL
- ¿Qué es COBOL?
- Historia de COBOL
- Configuración del Entorno COBOL
- Estructura Básica de un Programa COBOL
Módulo 2: Sintaxis Básica de COBOL y Tipos de Datos
Módulo 3: Estructuras de Control
Módulo 4: Trabajando con Datos
- Manejo de Archivos en COBOL
- Procesamiento de Archivos Secuenciales
- Procesamiento de Archivos Indexados
- Procesamiento de Archivos Relativos
Módulo 5: Manejo Avanzado de Datos
Módulo 6: Subprogramas y Programación Modular
Módulo 7: Manejo de Errores y Depuración
Módulo 8: COBOL y Bases de Datos
Módulo 9: Temas Avanzados
- COBOL Orientado a Objetos
- COBOL y Servicios Web
- Optimización del Rendimiento
- Mejores Prácticas en Programación COBOL