Choix de l'API : QSYS.QCMDCHK
L'API QCMDCHK de la bibliothèque QSYS permet de vérifier la syntaxe et la validité d'une commande CL avant exécution. Sa documentation IBM indique qu'elle attend deux paramètres en entrée :
| Paramètre | Type IBM i | Direction | Role |
|---|---|---|---|
Command string |
Char(*) | I/O | commande à vérifier |
Length of command string |
Packed(15,5) | Input | longueur en nombre de caractères |
Appel depuis .NET avec NTi
Dans cet exemple, l'API est appelée pour valider la commande suivante :
CRTLIB CLIENTSÉtape 1 - Établir la connexion
var conn = new NTiConnection(connectionString);
conn.Open();Étape 2 - Déclarer les paramètres
var cmd = "CRTLIB CLIENTS";
var parms = new List<NTiProgramParameter>()
{
new NTiProgramParameter(cmd, cmd.Length),
new NTiProgramParameter(cmd.Length, 15, 5)
};
NTi prend en charge tous les types de paramètres : entiers, décimal packé, chaînes de caractères.
Étape 3 - Appeler l'API
conn.CallProgram("QSYS", "QCMDCHK", parms);En résumé
L'appel de QCMDCHK est donc réalisé à partir de ce code:
var conn = new NTiConnection(connectionString);
conn.Open();
var cmd = "CRTLIB CLIENTS";
var parms = new List<NTiProgramParameter>()
{
new NTiProgramParameter(cmd, cmd.Length),
new NTiProgramParameter(cmd.Length, 15, 5)
};
conn.CallProgram("QSYS", "QCMDCHK", parms);
Deux résultats possibles à l'exécution :
✅ Commande valide - aucune erreur levée, code de retour à 0.
❌Commande incorrecte - une exception est levée côté C# avec un code CPFXXXX et son explication.
Conclusion
Avec NTi Data Provider, appeler une API système IBM i se fait en quelques lignes de C#, sans passer par un écran vert. En combinant les APIs système, les commandes CL et les services SQL, les tâches d'administration IBM i peuvent s'automatiser et s'intégrer dans des interfaces modernes.
Cet exemple utilise deux paramètres, mais le principe reste identique quelle que soit la complexité de l'API appelée.
Rémi Rouillot