Tutoriels

Appeler l'API QSYS.QCMDCHK de l'IBM i depuis .NET avec NTi

ParRémi Rouillot

image d’illustration de l’article

Contenu détaillé de l’article:Appeler l'API QSYS.QCMDCHK de l'IBM i depuis .NET avec NTi

Les APIs IBM i offrent de nombreuses fonctionnalités pour l'administration système et la gestion des fichiers spoules. Cet article montre comment appeler l'API QCMDCHK depuis .NET avec NTi Data Provider, en quelques lignes de C# seulement.

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