NTiProgramParameter

NTiProgramParameter décrit un paramètre d'appel de programme ou de procédure de programme de service : un buffer d'octets envoyé au serveur (InputData), un buffer rendu par le programme (OutputData), une direction et un CCSID.

La classe est commune à CallProgram/CallProgramAsync et CallServiceProgram/CallServiceProgramAsync de NTiConnection.

Constructeurs

Tous acceptent une ParameterDirection optionnelle en dernier argument (défaut : InputOutput) :

Constructeur Type IBM i
() récepteur vide à taille variable (voir plus bas)
(string valeur, int longueur) CHAR(longueur), complété de blancs
(string valeur, int longueur, int ccsid) CHAR(longueur) dans le CCSID donné
(string[] valeurs, int longueur) et variantes IEnumerable<string>, avec ou sans ccsid tableau de CHAR(longueur)
(int valeur) / (int[] valeurs) / (IEnumerable<int> valeurs) BINARY(4) / tableau
(short valeur) / (short[] valeurs) / (IEnumerable<short> valeurs) BINARY(2) / tableau
(decimal valeur, int précision, int échelle, bool packed = true) décimal packé (packed: true, DECIMAL) ou zoné (packed: false, NUMERIC)
(byte[] valeur) octets bruts, envoyés tels quels

Composition par Append

Les surcharges Append(...) prolongent le buffer du paramètre d'un champ supplémentaire, pour composer une structure de données dans un seul buffer. Chacune rend le paramètre, ce qui permet de les enchaîner.

Surcharge Champ ajouté
Append(string, int) / Append(string, int, int ccsid) CHAR(longueur)
Append(string[]/IEnumerable<string>, int) / idem avec ccsid tableau de CHAR(longueur)
Append(int) / Append(int[]/IEnumerable<int>) BINARY(4) / tableau
Append(short) / Append(short[]/IEnumerable<short>) BINARY(2) / tableau
Append(decimal, int précision, int échelle, bool packed = true) décimal packé ou zoné
Append(byte[]) octets bruts

Direction

Direction (défaut : InputOutput) pilote ce qui circule. Les extensions fluides .AsInput(), .AsOutput(), .AsInputOutput() la posent en rendant le paramètre.

Direction Sémantique
Input les octets sont envoyés, rien n'est rendu
Output (et ReturnValue) seule la longueur est déclarée, le buffer revient dans OutputData
InputOutput (défaut) les octets sont envoyés ET le buffer revient

Extensions Add

La famille parms.Add(...) sur IList<NTiProgramParameter> reflète chaque constructeur : elle crée le paramètre, l'ajoute à la liste et le rend, pour enchaîner une direction, comme parms.Add("ABC", 10).AsInput().

Surcharges : Add() (récepteur vide), Add(string, int[, int ccsid]), Add(string[]/IEnumerable<string>, int[, int ccsid]), Add(int), Add(int[]/IEnumerable<int>), Add(short), Add(short[]/IEnumerable<short>), Add(decimal, int précision, int échelle) (packé, pour un zoné utilisez le constructeur), Add(byte[]). Toutes acceptent la ParameterDirection optionnelle en dernier argument.

Lecture des résultats

Après l'appel, les accesseurs lisent le buffer de sortie (OutputData). Les entiers sont gros-boutistes (big endian), comme sur l'IBM i.

Accesseur Lit
GetString() /

Reconnexion au serveur...

La connexion au serveur a été perdue. La page va se recharger.