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

  1. Funciones: Bloques de código que realizan una tarea específica y devuelven un valor.
  2. Procedimientos: Similar a las funciones, pero no devuelven un valor.
  3. Parámetros: Valores que se pasan a las funciones o procedimientos para que trabajen con ellos.
  4. 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 llamada MyFunction.
  • Dcl-Pi MyFunction Int(10);: Declara el prototipo de la función, especificando que devuelve un entero de 10 dígitos.
  • param1 Int(10); y param2 Int(10);: Declara los parámetros de la función.
  • Return param1 + param2;: Devuelve la suma de param1 y param2.
  • 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 llamado MyProcedure.
  • Dcl-Pi *N;: Declara el prototipo del procedimiento, especificando que no devuelve un valor (*N).
  • param1 Int(10); y param2 Int(10);: Declara los parámetros del procedimiento.
  • Dsply param1 + param2;: Muestra la suma de param1 y param2.
  • 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

  1. Olvidar el Return en una función: Asegúrate de que todas las funciones devuelvan un valor.
  2. No declarar correctamente los parámetros: Verifica que los tipos de datos de los parámetros coincidan con los esperados.
  3. 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.

© Copyright 2024. Todos los derechos reservados