.NET / C# – chiamata API di sistema IBM i con NTi

Vi mostrerò brevemente come, con poche righe, potete richiamare facilmente un'API IBM i utilizzando NTi.

immagine illustrativa dell'articolo “.NET / C# – chiamata API di sistema IBM i con NTi”

Introduzione

Le API di IBM i offrono molte funzioni interessanti, sia per l'amministrazione che per compiti specifici come la gestione dei file di spool.

Vi mostrerò brevemente come, con poche righe, si possa facilmente chiamare un'API IBM i utilizzando NTi.

Scegliere un'API: QSYS.QCMDCHK

Per questo esempio, utilizzeremo l'API QCMDCHK della libreria QSYS. Viene utilizzata per verificare la sintassi e la validità di un comando CL prima di eseguirlo.

Per prima cosa, diamo un'occhiata alla sua documentazione qui

Scopriamo che QCMDCHK si aspetta due parametri come input:

  • 1 - Stringa di comando - I/O - Char(*)
  • 2 - Lunghezza della stringa di comando - Input - Packed(15, 5)

Questi parametri corrispondono rispettivamente al comando da controllare e alla sua lunghezza in numero di caratteri.

Utilizzo di NTi

In questo esempio, chiameremo questa API per verificare la validità del seguente comando:

CRTLIB CLIENTS

Passo 1: Impostazione della connessione NTi

Per prima cosa, creiamo un oggetto di tipo NTiConnection, dal quale possiamo chiamare l'API:

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

Passo 2: Dichiarazione dei parametri

Occorre quindi preparare i vari parametri che saranno passati all'API, creando un elenco di oggetti di tipo NTiParameter, dove ogni elemento dell'elenco corrisponde a un parametro da passare all'API:

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

NTi supporta tutti i tipi di parametri: interi, decimali compressi, stringhe di caratteri, ecc.

Passo 3: Chiamare l'API

Infine, è sufficiente chiamare l'API:

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

Per riassumere

Questo codice viene utilizzato per chiamare 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);

Quando vengono eseguite queste poche righe, ci sono due possibilità:

Il comando è valido: in questo caso, non viene generato alcun errore, con codice di ritorno 0.

Il comando non è corretto: in questo caso, viene sollevato un errore sul lato C# con un codice CPFXXXX accompagnato da una spiegazione. L'errore viene quindi gestito in base al caso d'uso.

Conclusione

Con NTi, richiamare un'API di sistema richiede solo poche righe. Si possono prevedere tutti i tipi di elaborazione sviluppando solo in C# e senza dover mai passare attraverso uno schermo verde. Grazie all'abbinamento con i comandi CL e i servizi SQL, le attività di amministrazione di IBM i possono essere automatizzate ed eseguite con interfacce utente moderne e intuitive.

**L'integrazione tra IBM i e le vostre procedure è completamente trasparente. Non perdete altro tempo e utilizzate linguaggi di programmazione familiari a tutti per proteggere i vostri investimenti in IBM i e aumentare l'efficienza!

Questo caso è relativamente semplice perché abbiamo dovuto fornire solo due parametri, ma tutto funziona allo stesso modo, indipendentemente dalla complessità dell'API utilizzata.

Per saperne di più e provare NTi, contattatemi.

Rémi Rouillot