En este módulo, aprenderemos cómo el Lenguaje de Control (CL) puede interactuar con programas externos. Esta capacidad es crucial para integrar aplicaciones y servicios, permitiendo que los programas CL se comuniquen y colaboren con otros sistemas y lenguajes.

Objetivos de Aprendizaje

Al final de esta sección, deberías ser capaz de:

  1. Entender cómo y por qué llamar programas externos desde CL.
  2. Utilizar comandos CL para ejecutar programas externos.
  3. Manejar la entrada y salida de datos entre CL y programas externos.
  4. Resolver problemas comunes al llamar programas externos.

Conceptos Clave

¿Por qué llamar programas externos?

Llamar programas externos permite:

  • Integración de sistemas: Conectar aplicaciones escritas en diferentes lenguajes.
  • Reutilización de código: Aprovechar funcionalidades ya implementadas en otros programas.
  • Automatización: Ejecutar tareas automatizadas que requieren la colaboración de múltiples programas.

Comandos CL para llamar programas externos

Los comandos más comunes para llamar programas externos en CL son:

  • CALL: Llama a un programa CL o RPG.
  • SBMJOB: Envía un trabajo para que se ejecute en segundo plano.
  • RUNRMTCMD: Ejecuta un comando en un sistema remoto.

Ejemplo Práctico: Llamando un Programa Externo

Paso 1: Crear un Programa Externo

Primero, crearemos un programa simple en otro lenguaje, por ejemplo, un script de Python que imprime "Hola desde Python".

# hola.py
print("Hola desde Python")

Paso 2: Configurar el Entorno

Asegúrate de que el programa externo esté accesible desde el sistema donde se ejecutará el CL. Esto puede implicar configurar rutas de acceso o permisos.

Paso 3: Llamar al Programa Externo desde CL

Utilizaremos el comando RUNRMTCMD para ejecutar el script de Python.

RUNRMTCMD CMD('python /ruta/a/tu/script/hola.py') RMTLOCNAME('192.168.1.100')

Explicación del Comando

  • CMD: Especifica el comando que se ejecutará en el sistema remoto.
  • RMTLOCNAME: Especifica la dirección del sistema remoto.

Paso 4: Manejar la Salida del Programa Externo

Para capturar la salida del programa externo, podemos redirigir la salida a un archivo y luego leer ese archivo desde CL.

RUNRMTCMD CMD('python /ruta/a/tu/script/hola.py > /ruta/a/tu/salida.txt') RMTLOCNAME('192.168.1.100')

/* Leer la salida */
RTVMBRD FILE(QTEMP/SALIDA) MBR(SALIDA) RTNVAR(&SALIDA)

Explicación del Comando

  • RTVMBRD: Recupera el contenido de un miembro de archivo físico en una variable CL.

Ejercicio Práctico

Ejercicio 1: Llamar un Script de Shell

  1. Crea un script de shell que imprima "Hola desde Shell".
  2. Llama al script desde un programa CL utilizando RUNRMTCMD.
  3. Captura y muestra la salida del script en el programa CL.

Solución

  1. Crear el script de shell:

    # hola.sh
    echo "Hola desde Shell"
    
  2. Llamar al script desde CL:

    RUNRMTCMD CMD('sh /ruta/a/tu/script/hola.sh > /ruta/a/tu/salida.txt') RMTLOCNAME('192.168.1.100')
    
  3. Capturar y mostrar la salida:

    RTVMBRD FILE(QTEMP/SALIDA) MBR(SALIDA) RTNVAR(&SALIDA)
    SNDPGMMSG MSG(&SALIDA)
    

Errores Comunes y Consejos

Errores Comunes

  • Permisos insuficientes: Asegúrate de que el programa externo y los archivos de salida tengan los permisos adecuados.
  • Rutas incorrectas: Verifica que las rutas a los scripts y archivos sean correctas y accesibles.
  • Problemas de red: Asegúrate de que el sistema remoto esté accesible y que no haya problemas de conectividad.

Consejos Adicionales

  • Prueba localmente primero: Antes de integrar con CL, prueba tus scripts y programas externamente para asegurarte de que funcionan correctamente.
  • Manejo de errores: Implementa manejo de errores en tus scripts externos para que puedas diagnosticar problemas fácilmente.

Conclusión

Llamar programas externos desde CL es una técnica poderosa que permite la integración y automatización de tareas entre diferentes sistemas y lenguajes. Con los comandos adecuados y una buena gestión de la entrada y salida de datos, puedes ampliar significativamente las capacidades de tus programas CL.

En el próximo tema, exploraremos cómo interactuar con bases de datos desde CL, lo que te permitirá gestionar y manipular datos de manera eficiente.

© Copyright 2024. Todos los derechos reservados