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)
ENDSUBRLlamada 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)
ENDSUBREjercicio Práctico
Ejercicio 1: Crear una Subrutina para Calcular el Cuadrado de un Número
- Define una subrutina llamada
SQUAREque 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)
ENDSUBREjercicio 2: Crear un Procedimiento para Sumar y Restar Números
- Define un procedimiento llamado
CALCULATEque 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)
ENDSUBRResumen
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
