En este módulo, aprenderemos cómo integrar programas RPG con otros lenguajes de programación. Esta habilidad es crucial para crear aplicaciones modernas y robustas que puedan interactuar con diferentes sistemas y tecnologías.

Objetivos del Módulo

  • Comprender la importancia de la interoperabilidad entre lenguajes.
  • Aprender a llamar programas externos desde RPG.
  • Integrar RPG con lenguajes como Java, C y Python.
  • Manejar datos entre RPG y otros lenguajes.

  1. Importancia de la Interoperabilidad

La interoperabilidad permite que diferentes sistemas y lenguajes de programación trabajen juntos. Esto es esencial en entornos empresariales donde múltiples tecnologías deben coexistir y comunicarse eficientemente.

Ventajas

  • Flexibilidad: Permite utilizar la mejor herramienta para cada tarea.
  • Reutilización: Aprovecha el código existente en otros lenguajes.
  • Escalabilidad: Facilita la integración de nuevas tecnologías.

  1. Llamando Programas Externos desde RPG

Llamando Programas Java

Para llamar a un programa Java desde RPG, utilizamos la API de Java Native Interface (JNI). Aquí hay un ejemplo básico:

Código Java (HelloWorld.java)

public class HelloWorld {
    public static void main(String[] args) {
        System.out.println("Hello from Java!");
    }
}

Código RPG

DCL-S javaCmd CHAR(100);
javaCmd = 'java HelloWorld';
CALLP QCMDEXC(javaCmd: %LEN(javaCmd));

Explicación

  1. Código Java: Un simple programa que imprime un mensaje.
  2. Código RPG: Utiliza QCMDEXC para ejecutar el comando del sistema que llama al programa Java.

Ejercicio Práctico

  1. Escribe un programa Java que acepte un argumento y lo imprima.
  2. Modifica el programa RPG para pasar un argumento al programa Java.

  1. Integrando RPG con C

Llamando Funciones C

Podemos llamar funciones escritas en C desde RPG utilizando la API de llamadas de programas (PCML).

Código C (hello.c)

#include <stdio.h>

void hello() {
    printf("Hello from C!\n");
}

Código RPG

DCL-PR hello EXTPROC('hello');
END-PR;

DCL-S result CHAR(100);
CALLP hello();

Explicación

  1. Código C: Define una función hello que imprime un mensaje.
  2. Código RPG: Declara y llama a la función hello utilizando EXTPROC.

Ejercicio Práctico

  1. Escribe una función en C que acepte un argumento y lo imprima.
  2. Modifica el programa RPG para pasar un argumento a la función C.

  1. Integrando RPG con Python

Llamando Scripts Python

Podemos ejecutar scripts Python desde RPG utilizando el comando del sistema.

Código Python (hello.py)

print("Hello from Python!")

Código RPG

DCL-S pythonCmd CHAR(100);
pythonCmd = 'python3 hello.py';
CALLP QCMDEXC(pythonCmd: %LEN(pythonCmd));

Explicación

  1. Código Python: Un simple script que imprime un mensaje.
  2. Código RPG: Utiliza QCMDEXC para ejecutar el comando del sistema que llama al script Python.

Ejercicio Práctico

  1. Escribe un script Python que acepte un argumento y lo imprima.
  2. Modifica el programa RPG para pasar un argumento al script Python.

  1. Manejo de Datos entre RPG y Otros Lenguajes

Ejemplo de Intercambio de Datos

Código Java (DataExchange.java)

public class DataExchange {
    public static void main(String[] args) {
        if (args.length > 0) {
            System.out.println("Received from RPG: " + args[0]);
        } else {
            System.out.println("No data received.");
        }
    }
}

Código RPG

DCL-S javaCmd CHAR(100);
DCL-S data CHAR(50) INZ('Hello from RPG');
javaCmd = 'java DataExchange ' + %TRIM(data);
CALLP QCMDEXC(javaCmd: %LEN(javaCmd));

Explicación

  1. Código Java: Recibe un argumento y lo imprime.
  2. Código RPG: Pasa un argumento al programa Java.

Ejercicio Práctico

  1. Modifica el programa Java para procesar múltiples argumentos.
  2. Modifica el programa RPG para pasar múltiples argumentos al programa Java.

Conclusión

En este módulo, hemos aprendido cómo integrar programas RPG con otros lenguajes de programación como Java, C y Python. La interoperabilidad es una habilidad esencial que permite crear aplicaciones más flexibles y escalables. Asegúrate de practicar los ejercicios para consolidar tus conocimientos y estar preparado para integrar RPG con cualquier tecnología que necesites en el futuro.

© Copyright 2024. Todos los derechos reservados