.NET / C# – llamada API de sistema IBM i con NTi

Voy a mostrarte brevemente cómo, en unas pocas líneas, puedes llamar fácilmente a una API de IBM i usando NTi.

Imagen ilustrativa del artículo

Introducción

Las APIs de IBM i ofrecen muchas funciones interesantes, tanto para la administración como para tareas específicas como la gestión de archivos spool.

Voy a mostrarte brevemente cómo, en unas pocas líneas, puedes llamar fácilmente a una API de IBM i usando NTi.

Elegir una API: QSYS.QCMDCHK

Para este ejemplo, utilizaremos la API QCMDCHK de la librería QSYS. Sirve para comprobar la sintaxis y validez de un comando CL antes de ejecutarlo.

Antes de nada, echemos un vistazo a su documentación aquí

Muestra que QCMDCHK espera dos parámetros como entrada:

  • 1 - Cadena de comandos - Entrada - Char(*)
  • 2 - Longitud de la cadena de comandos - Entrada - Empaquetado(15, 5)

Estos parámetros corresponden respectivamente al comando a comprobar y a su longitud en número de caracteres.

Uso de NTi

En este ejemplo, llamaremos a esta API para comprobar la validez del siguiente comando:

CRTLIB CLIENTS

Paso 1: Configurar la conexión NTi

En primer lugar, creamos un objeto de tipo NTiConnection desde el que podremos llamar a la API:

var conn = new NTiConnection(connectionString);
conn.Open();

Paso 2: Declaración de parámetros

A continuación tenemos que preparar los distintos parámetros que se pasarán a nuestra API creando una lista de objetos de tipo NTiParameter donde cada elemento de la lista corresponde a un parámetro que se pasará a la API:

var cmd = "CRTLIB CLIENTS";          
var parms = new List()
{
    new NTiProgramParameter(cmd, cmd.Length),
    new NTiProgramParameter(cmd.Length, 15, 5)
};

NTi admite todos los tipos de parámetros: enteros, decimales empaquetados, cadenas de caracteres, etc.

Paso 3: Llamar a la API

Por último, sólo tenemos que llamar a la API:

conn.CallProgram("QSYS", "QCMDCHK", parms);

En resumen

Este código se utiliza para llamar a QCMDCHK:

var conn = new NTiConnection(connectionString);
conn.Open();
var cmd = "CRTLIB CLIENTS";         
var parms = new List()
{
    new NTiProgramParameter(cmd, cmd.Length),
    new NTiProgramParameter(cmd.Length, 15, 5)
};
conn.CallProgram("QSYS", "QCMDCHK", parms);

Cuando se ejecutan estas pocas líneas, hay dos posibilidades:

El comando es válido: En este caso, no se plantea ningún error, código de retorno 0.

El comando es incorrecto: En este caso, se produce un error en el lado C# con un código CPFXXXX acompañado de una explicación. Este error se gestiona en función del caso de uso.

Conclusión

Con NTi, para llamar a una API del sistema bastan unas pocas líneas. Se pueden prever todo tipo de procesamientos desarrollando únicamente en C# y sin tener que pasar nunca por una pantalla verde. Al combinarlo con comandos CL y servicios SQL, sus tareas de administración de IBM i pueden automatizarse y llevarse a cabo mediante interfaces de usuario modernas e intuitivas.

La integración de IBM i y sus procedimientos es totalmente transparente. No pierda más tiempo y utilice lenguajes de programación conocidos por todos para asegurar sus inversiones en IBM i y aumentar la eficacia!.

Este caso es relativamente sencillo porque sólo tuvimos que proporcionar dos parámetros, pero todo funciona de la misma manera, independientemente de la complejidad de la API utilizada.

Para saber más y probar NTi, póngase en contacto conmigo.

Rémi Rouillot