Appeler un programme
Introduction:
Description du programme et des paramètres
Cet exemple présente l'exécution d'un programme MYPGM
de la bibliothèque MYLIB
dont les paramètres sont les suivants:
Description | Type | Direction | Valeur |
---|---|---|---|
Texte 1 | CHAR(10) | Input | Hello |
Texte 2 | CHAR(10) | Input | World |
Position de départ | BYTE(1) | Input | 0x00 |
Longueur de la variable retour | BYTE(4) | Input | 128 |
Variable retour | CHAR(*) | Output | vide |
Code d'erreur | CHAR(50) | InputOutput | vide |
On souhaite lire différentes valeurs dans la variable retour composée ainsi:
Offset | Longueur | Description |
---|---|---|
0 | 64 | Message 1 |
64 | 64 | Message 2 |
L'appel serait réalisé avec le code suivant:
Etape 1/4: Ouverture de la connexion
On commence par déclarer une nouvelle instance de NTiConnection
que l'on ouvre:
//Ouverture d'une connexion NTi:
NTiConnection conn = new NTiConnection(connectionString);
conn.Open();
Etape 2/4: Création des paramètres
Ensuite on se réfère à la description des paramètres attendus par le programme ou l'API à exécuter (ci-dessus). On crée les différents paramètres avec leurs valeurs:
//Création de la liste de paramètres:
List parms = new List() {
new NTiProgramParameter("Hello", 10).AsInput(), //CHAR(10) INPUT
new NTiProgramParameter("World", 10).AsInput(), //CHAR(10) INPUT
new NTiProgramParameter(new byte[] {0x00}).AsInput(), //CHAR(10) INPUT
new NTiProgramParameter(128).AsInput(), //INTEGER (BYTE(4)) INPUT
new NTiProgramParameter("", 128).AsOutput(), //CHAR(128) OUTPUT
new NTiProgramParameter("", 50) //CHAR(50) I/O
};
Etape 3/4: Appel du programme
On peut appeler le programme grâce à la méthode CallProgram()
de la classe NTiCOnnection
:
//Appel du programme
conn.CallProgram("MYLIB", "MYPGM", parms);
Etape 4/4: Récupération des données retournées
Une fois le programme appelé, on recupère les données retournées
//Récupération des données dans la variable retour (paramètre n°5)
string message1 = parms[4].GetString(0, 64);
string message2 = parms[4].GetString(64, 64);
Récapitulatif du code
Le code final pour appeler un programme IBM i depuis .NET avec NTi, avec passage de parmaètres et récupération de données en retour est le suivant:
//Ouverture de la connexion
var conn = new NTiConnection(connectionString);
conn.Open();
//Création de la liste de paramètres:
List parms = new List() {
new NTiProgramParameter("Hello", 10).AsInput(), //CHAR(10) INPUT
new NTiProgramParameter("World", 10).AsInput(), //CHAR(10) INPUT
new NTiProgramParameter(new byte[] {0x00}).AsInput(), //CHAR(10) INPUT
new NTiProgramParameter(128).AsInput(), //INTEGER (BYTE(4)) INPUT
new NTiProgramParameter("", 128).AsOutput(), //CHAR(128) OUTPUT
new NTiProgramParameter("", 50) //CHAR(50) I/O
};
//Appel du programme
conn.CallProgram("MYLIB", "MYPGM", parms);
//Récupération des données dans la variable retour (paramètre n°5)
string message1 = parms[4].GetString(0, 64);
string message2 = parms[4].GetString(64, 64);
//Fermeture de la connexion
conn.Close();
On pense également à fermer la connexion à la fin du traitement si on ne souhaite plus la réutiliser. Malgré tout, lors de la destruction de l'objet
conn
à la fin du programme ou à la sortie de la méthode en cours, la connexion sera automatiquement fermée.