DOCUMENTATION NTi

Méthode CallServiceProgramProcedure()

Description

La méthode CallServiceProgramProcedure permet d’appeler une procédure existante dans un programme de service (service program) en utilisant l'API QZRUCLSP.
Elle retourne un objet de type NTiProgramParameter contenant le résultat de l’appel.

Syntaxe

NTiProgramParameter CallServiceProgramProcedure(
    string library,
    string program,
    string procedure,
    List parms,
    List parmsType,
    ServiceProgramReturnType returnFormat
)

Paramètres

Nom Type Description
library string Bibliothèque contenant le programme de service.
program string Nom du programme de service.
procedure string Nom de la procédure du programme de service.
parms List<NTiProgramParameter> Paramètres à passer à la procédure de programme de service.
parmsType List<ServiceProgramParameterType> Types de chaque paramètre, dans le même ordre que parms:
- Integer : Le paramètre est un entier 32 bits BINARY(4) passé par valeur
- Pointer : La valeur de paramètre est passée par référence (pointeur)
returnFormat ServiceProgramReturnType Format de la valeur de retour attendue:
- NoReturn : Aucune valeur n’est renvoyée (le paramètre "Return Value" est ignoré).
- Integer : Retourne un entier BINARY(4).
- Pointer :Retourne un pointeur de 16 octets.
- IntegerErrno : Retourne un entier BINARY(4) et le code errno.

Retour

Retourne un objet de type NTiProgramParameter qui contient la valeur de retour de la procédure. La valeur peut être accédée via la propriété OutputData ou les méthodes Get...() de NTiProgramParameter. Les paramètres de la procédures passés dans parms sont également modifiés et leurs valeurs peuvent êtrer accédées après l'appel.

Exceptions

Lève une exception ArgumentException si les listes parms et parmsType n'ont pas la même longueur.

Exemples d’utilisation

appel de la procédure dlpar_get_info() de QSYS/QPMLPMGT.

var conn = new NTiConnection("...");
conn.Open();

//Paramètres de la procédure
var parms = new List() {
    new NTiProgramParameter("", 368),   //Receiver variable
    new NTiProgramParameter(1),         //Format
    new NTiProgramParameter(368)        //Receiver length
};

//Type de valeur des paramètres
var parmsType = new List() {
    ServiceProgramParameterType.Pointer,
    ServiceProgramParameterType.Integer,
    ServiceProgramParameterType.Integer
};

//Appel de la procédure
var result = conn.CallServiceProgramProcedure("QSYS", "QPMLPMGT", "dlpar_get_info", parms, parmsType, ServiceProgramReturnType.Integer);

//Récupération du résultat
var lparNumber = parms[2].GetInt(40);
var lparName = Encoding.UTF8.GetString(parms[2].GetBytes(88, 8));

Références

Pour plus d’informations sur l’API QZRUCLSP, consultez la documentation officielle IBM.