En este módulo, exploraremos los programas de servicio y procedimientos en RPG IV. Estos conceptos son fundamentales para escribir código modular y reutilizable, lo que es esencial para el desarrollo de aplicaciones robustas y mantenibles.

¿Qué es un Programa de Servicio?

Un programa de servicio en RPG es un tipo de objeto que contiene uno o más procedimientos que pueden ser llamados desde otros programas. Los programas de servicio permiten la reutilización de código y facilitan la gestión de cambios, ya que las actualizaciones en un programa de servicio no requieren recompilar los programas que lo utilizan.

Ventajas de los Programas de Servicio

  • Reutilización de Código: Los procedimientos definidos en un programa de servicio pueden ser utilizados por múltiples programas.
  • Mantenimiento Simplificado: Las actualizaciones en un programa de servicio no requieren recompilar los programas que lo llaman.
  • Modularidad: Facilitan la separación de lógica en componentes manejables.

Creación de un Programa de Servicio

Paso 1: Definir el Procedimiento

Primero, definimos el procedimiento que queremos incluir en nuestro programa de servicio. Aquí hay un ejemplo de un procedimiento simple que suma dos números:

**free
// Archivo: MyServiceModule.rpgle

dcl-proc AddNumbers;
  dcl-pi *n int(10);
    num1 int(10);
    num2 int(10);
  end-pi;

  return num1 + num2;
end-proc;

Paso 2: Crear el Programa de Servicio

Para crear un programa de servicio, utilizamos el comando CRTSRVPGM en el sistema operativo IBM i. Aquí está el comando básico:

CRTSRVPGM SRVPGM(MYLIB/MYSRVPGM) MODULE(MYLIB/MYSERVICEMODULE) EXPORT(*ALL)
  • SRVPGM(MYLIB/MYSRVPGM): Especifica el nombre del programa de servicio y la biblioteca donde se almacenará.
  • MODULE(MYLIB/MYSERVICEMODULE): Especifica el módulo que contiene los procedimientos.
  • EXPORT(*ALL): Indica que todos los procedimientos del módulo serán exportados y disponibles para otros programas.

Paso 3: Llamar al Procedimiento desde Otro Programa

Una vez que el programa de servicio está creado, podemos llamar a sus procedimientos desde otros programas. Aquí hay un ejemplo de cómo hacerlo:

**free
// Archivo: MainProgram.rpgle

dcl-pr AddNumbers int(10);
  num1 int(10);
  num2 int(10);
end-pr;

dcl-s result int(10);

result = AddNumbers(5, 10);
dsply result;

*inlr = *on;

En este ejemplo:

  • dcl-pr AddNumbers int(10); declara el prototipo del procedimiento AddNumbers.
  • result = AddNumbers(5, 10); llama al procedimiento AddNumbers y almacena el resultado en la variable result.

Ejercicio Práctico

Ejercicio 1: Crear un Programa de Servicio

  1. Definir un Procedimiento: Crea un procedimiento llamado MultiplyNumbers que multiplique dos números enteros.
  2. Crear el Programa de Servicio: Usa el comando CRTSRVPGM para crear un programa de servicio que contenga el procedimiento MultiplyNumbers.
  3. Llamar al Procedimiento: Escribe un programa que llame al procedimiento MultiplyNumbers y muestre el resultado.

Solución

Paso 1: Definir el Procedimiento

**free
// Archivo: MyServiceModule.rpgle

dcl-proc MultiplyNumbers;
  dcl-pi *n int(10);
    num1 int(10);
    num2 int(10);
  end-pi;

  return num1 * num2;
end-proc;

Paso 2: Crear el Programa de Servicio

CRTSRVPGM SRVPGM(MYLIB/MYSRVPGM) MODULE(MYLIB/MYSERVICEMODULE) EXPORT(*ALL)

Paso 3: Llamar al Procedimiento

**free
// Archivo: MainProgram.rpgle

dcl-pr MultiplyNumbers int(10);
  num1 int(10);
  num2 int(10);
end-pr;

dcl-s result int(10);

result = MultiplyNumbers(5, 10);
dsply result;

*inlr = *on;

Conclusión

En esta sección, hemos aprendido sobre los programas de servicio y procedimientos en RPG IV. Hemos visto cómo definir procedimientos, crear programas de servicio y llamar a estos procedimientos desde otros programas. Estos conceptos son esenciales para escribir código modular y reutilizable, lo que facilita el mantenimiento y la escalabilidad de las aplicaciones.

En el próximo módulo, exploraremos cómo integrar RPG con tecnologías modernas, como servicios web y APIs.

© Copyright 2024. Todos los derechos reservados