En este módulo, aprenderemos sobre funciones y procedimientos en RPG. Estos son bloques de código reutilizables que permiten organizar y modularizar el programa, facilitando su mantenimiento y comprensión.
Conceptos Clave
- Funciones: Bloques de código que realizan una tarea específica y devuelven un valor.
- Procedimientos: Similar a las funciones, pero no devuelven un valor.
- Parámetros: Valores que se pasan a las funciones o procedimientos para que trabajen con ellos.
- Alcance: La visibilidad de las variables dentro y fuera de las funciones/procedimientos.
Definición de Funciones
Sintaxis Básica
Dcl-Proc MyFunction; Dcl-Pi MyFunction Int(10); param1 Int(10); param2 Int(10); End-Pi; // Cuerpo de la función Return param1 + param2; End-Proc;
Explicación
Dcl-Proc MyFunction;
: Declara el inicio de una función llamadaMyFunction
.Dcl-Pi MyFunction Int(10);
: Declara el prototipo de la función, especificando que devuelve un entero de 10 dígitos.param1 Int(10);
yparam2 Int(10);
: Declara los parámetros de la función.Return param1 + param2;
: Devuelve la suma deparam1
yparam2
.End-Proc;
: Marca el final de la función.
Ejemplo Práctico
Dcl-Proc AddNumbers; Dcl-Pi AddNumbers Int(10); num1 Int(10); num2 Int(10); End-Pi; Return num1 + num2; End-Proc; Dcl-S result Int(10); result = AddNumbers(5, 10); Dsply result; // Muestra 15
Definición de Procedimientos
Sintaxis Básica
Dcl-Proc MyProcedure; Dcl-Pi *N; param1 Int(10); param2 Int(10); End-Pi; // Cuerpo del procedimiento Dsply param1 + param2; End-Proc;
Explicación
Dcl-Proc MyProcedure;
: Declara el inicio de un procedimiento llamadoMyProcedure
.Dcl-Pi *N;
: Declara el prototipo del procedimiento, especificando que no devuelve un valor (*N
).param1 Int(10);
yparam2 Int(10);
: Declara los parámetros del procedimiento.Dsply param1 + param2;
: Muestra la suma deparam1
yparam2
.End-Proc;
: Marca el final del procedimiento.
Ejemplo Práctico
Dcl-Proc DisplaySum; Dcl-Pi *N; num1 Int(10); num2 Int(10); End-Pi; Dsply num1 + num2; End-Proc; DisplaySum(5, 10); // Muestra 15
Ejercicios Prácticos
Ejercicio 1: Crear una Función de Multiplicación
Instrucciones: Crea una función llamada MultiplyNumbers
que tome dos parámetros enteros y devuelva su producto.
Dcl-Proc MultiplyNumbers; Dcl-Pi MultiplyNumbers Int(10); num1 Int(10); num2 Int(10); End-Pi; Return num1 * num2; End-Proc; Dcl-S result Int(10); result = MultiplyNumbers(5, 10); Dsply result; // Muestra 50
Ejercicio 2: Crear un Procedimiento de Concatenación
Instrucciones: Crea un procedimiento llamado ConcatenateStrings
que tome dos parámetros de tipo cadena y muestre su concatenación.
Dcl-Proc ConcatenateStrings; Dcl-Pi *N; str1 Char(20); str2 Char(20); End-Pi; Dcl-S result Char(40); result = %Trim(str1) + %Trim(str2); Dsply result; End-Proc; ConcatenateStrings('Hello, ', 'World!'); // Muestra 'Hello, World!'
Errores Comunes y Consejos
- Olvidar el
Return
en una función: Asegúrate de que todas las funciones devuelvan un valor. - No declarar correctamente los parámetros: Verifica que los tipos de datos de los parámetros coincidan con los esperados.
- Confundir funciones y procedimientos: Recuerda que las funciones devuelven un valor y los procedimientos no.
Conclusión
En esta sección, hemos aprendido a definir y utilizar funciones y procedimientos en RPG. Estos bloques de código son esenciales para escribir programas modulares y fáciles de mantener. Asegúrate de practicar creando tus propias funciones y procedimientos para reforzar estos conceptos.
En el próximo módulo, exploraremos cómo manejar archivos en RPG, lo que nos permitirá trabajar con datos almacenados en el sistema.
Curso de Programación RPG
Módulo 1: Introducción a la Programación RPG
- ¿Qué es RPG?
- Configuración de tu Entorno de Desarrollo
- Sintaxis y Estructura Básica
- Programa Hola Mundo
Módulo 2: Conceptos Básicos
- Tipos de Datos y Variables
- Operadores y Expresiones
- Estructuras de Control
- Funciones y Procedimientos
Módulo 3: Trabajando con Datos
Módulo 4: Técnicas Avanzadas de Programación
Módulo 5: RPG IV y Más Allá
Módulo 6: Integrando RPG con Tecnologías Modernas
Módulo 7: Aplicaciones del Mundo Real
- Construyendo una Aplicación Simple
- Estudio de Caso: Sistema de Gestión de Inventarios
- Estudio de Caso: Sistema de Nómina
- Mejores Prácticas y Revisión de Código