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