DOCUMENTATION NTi

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.