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() / |