En este módulo, aprenderemos sobre subrutinas y procedimientos en el Lenguaje de Control (CL). Estos conceptos son fundamentales para escribir programas modulares y reutilizables. Vamos a desglosar los conceptos clave, proporcionar ejemplos prácticos y ejercicios para reforzar el aprendizaje.
¿Qué son las Subrutinas y Procedimientos?
Subrutinas
Una subrutina es un bloque de código que realiza una tarea específica y puede ser llamada desde diferentes partes de un programa. Las subrutinas ayudan a evitar la duplicación de código y a mejorar la legibilidad y el mantenimiento del programa.
Procedimientos
Un procedimiento es similar a una subrutina, pero generalmente se refiere a un bloque de código más grande y complejo que puede incluir múltiples subrutinas. Los procedimientos también pueden aceptar parámetros y devolver valores.
Ventajas de Usar Subrutinas y Procedimientos
- Reutilización de Código: Permiten reutilizar el mismo bloque de código en diferentes partes del programa.
- Modularidad: Facilitan la división del programa en partes más pequeñas y manejables.
- Mantenimiento: Hacen que el código sea más fácil de mantener y actualizar.
- Legibilidad: Mejoran la legibilidad del código al reducir la complejidad.
Sintaxis Básica de Subrutinas y Procedimientos en CL
Definición de una Subrutina
Para definir una subrutina en CL, utilizamos el comando SUBR
. Aquí hay un ejemplo básico:
PGM DCL VAR(&RESULT) TYPE(*DEC) LEN(5 2) CALLSUBR SUBR1 CALLSUBR SUBR2 ENDPGM SUBR SUBR1 /* Código de la subrutina 1 */ CHGVAR VAR(&RESULT) VALUE(10) ENDSUBR SUBR SUBR2 /* Código de la subrutina 2 */ CHGVAR VAR(&RESULT) VALUE(&RESULT + 5) ENDSUBR
Llamada a una Subrutina
Para llamar a una subrutina, utilizamos el comando CALLSUBR
seguido del nombre de la subrutina.
Procedimientos con Parámetros
Los procedimientos pueden aceptar parámetros de entrada y devolver valores. Aquí hay un ejemplo de un procedimiento con parámetros:
PGM DCL VAR(&NUM1) TYPE(*DEC) LEN(5 2) VALUE(10) DCL VAR(&NUM2) TYPE(*DEC) LEN(5 2) VALUE(20) DCL VAR(&RESULT) TYPE(*DEC) LEN(5 2) CALLSUBR ADDNUMS PARM(&NUM1 &NUM2 &RESULT) ENDPGM SUBR ADDNUMS DCL VAR(&P1) TYPE(*DEC) LEN(5 2) DCL VAR(&P2) TYPE(*DEC) LEN(5 2) DCL VAR(&RES) TYPE(*DEC) LEN(5 2) CHGVAR VAR(&RES) VALUE(&P1 + &P2) ENDSUBR
Ejercicio Práctico
Ejercicio 1: Crear una Subrutina para Calcular el Cuadrado de un Número
- Define una subrutina llamada
SQUARE
que acepte un número como parámetro y devuelva su cuadrado. - Llama a la subrutina desde el programa principal y muestra el resultado.
Solución
PGM DCL VAR(&NUM) TYPE(*DEC) LEN(5 2) VALUE(4) DCL VAR(&RESULT) TYPE(*DEC) LEN(5 2) CALLSUBR SQUARE PARM(&NUM &RESULT) SNDPGMMSG MSG('El cuadrado de ' *CAT &NUM *CAT ' es ' *CAT &RESULT) ENDPGM SUBR SQUARE DCL VAR(&N) TYPE(*DEC) LEN(5 2) DCL VAR(&RES) TYPE(*DEC) LEN(5 2) CHGVAR VAR(&RES) VALUE(&N * &N) ENDSUBR
Ejercicio 2: Crear un Procedimiento para Sumar y Restar Números
- Define un procedimiento llamado
CALCULATE
que acepte dos números y devuelva su suma y resta. - Llama al procedimiento desde el programa principal y muestra los resultados.
Solución
PGM DCL VAR(&NUM1) TYPE(*DEC) LEN(5 2) VALUE(15) DCL VAR(&NUM2) TYPE(*DEC) LEN(5 2) VALUE(5) DCL VAR(&SUM) TYPE(*DEC) LEN(5 2) DCL VAR(&DIFF) TYPE(*DEC) LEN(5 2) CALLSUBR CALCULATE PARM(&NUM1 &NUM2 &SUM &DIFF) SNDPGMMSG MSG('La suma de ' *CAT &NUM1 *CAT ' y ' *CAT &NUM2 *CAT ' es ' *CAT &SUM) SNDPGMMSG MSG('La diferencia entre ' *CAT &NUM1 *CAT ' y ' *CAT &NUM2 *CAT ' es ' *CAT &DIFF) ENDPGM SUBR CALCULATE DCL VAR(&A) TYPE(*DEC) LEN(5 2) DCL VAR(&B) TYPE(*DEC) LEN(5 2) DCL VAR(&S) TYPE(*DEC) LEN(5 2) DCL VAR(&D) TYPE(*DEC) LEN(5 2) CHGVAR VAR(&S) VALUE(&A + &B) CHGVAR VAR(&D) VALUE(&A - &B) ENDSUBR
Resumen
En esta sección, hemos aprendido sobre subrutinas y procedimientos en CL. Hemos visto cómo definir y llamar subrutinas, así como cómo trabajar con procedimientos que aceptan parámetros y devuelven valores. Estos conceptos son esenciales para escribir programas modulares y eficientes en CL. Asegúrate de practicar los ejercicios para reforzar tu comprensión y prepararte para los temas más avanzados.
Curso de CL (Lenguaje de Control)
Módulo 1: Introducción a CL
- ¿Qué es el Lenguaje de Control?
- Configuración de tu Entorno
- Sintaxis y Estructura Básica
- Escribiendo tu Primer Programa CL
Módulo 2: Comandos Básicos de CL
- Introducción a los Comandos de CL
- Comandos de Gestión de Archivos
- Comandos de Gestión de Trabajos
- Comandos de Gestión del Sistema
Módulo 3: Variables y Expresiones
- Entendiendo las Variables
- Definiendo y Usando Variables
- Expresiones y Operadores
- Manipulación de Cadenas
Módulo 4: Estructuras de Control
Módulo 5: Comandos Avanzados de CL
- Operaciones Avanzadas de Archivos
- Programación Avanzada de Trabajos
- Comandos de Configuración del Sistema
- Seguridad y Permisos