Les deux appellations de cet ordre sont équivalentes.
|
VADELIA |
SADELIA |
WADELIA |
EADELIA |
(I/B) (C/S) |
(B) (S) |
(I/B) (C/S) |
(B) (C/S) |
Attention : cet ordre est ignoré dans une partie serveur générée pour l'AS/400.
Paragraphe d'utilisation
Tous, sauf ceux du module Serveur AS/400.
Syntaxe
APPELER_DLL NomDLLouClasse Fonction_Methode SuiteParamètres NonUnicode
ou
APPELER_CLASS NomDLLouClasse Fonction_Methode SuiteParamètres NonUnicode
NomDLLouClasse |
→ |
'ConstanteAlpha' |
| NomPgm |
||
| &IdVarAlpha |
||
Fonction_Methode |
→ |
'ConstanteAlpha' | &IdVarAlpha |
SuiteParamètres |
→ |
SuiteParamètres Paramètre | Rien |
NonUnicode |
*NON_UNICODE | Rien |
Description
Cet ordre correspond à l'appel d'une fonction Fonction_Methode d'une DLL Windows NomDLLouClasse lorsqu'il est utilisé depuis une partie client Windows d'un programme VADELIA, une partie serveur Windows d'un programme VADELIA ou WADELIA, un programme SADELIA généré pour Windows.
Cet ordre correspond à l'appel d'une méthode Fonction_Methode d'une classe JAVA NomDLLouClasse lorsqu'il est utilisé depuis une partie client d'un programme WADELIA, une partie client Java d'un programme VADELIA, une partie serveur Java d'un programme VADELIA ou WADELIA, ou enfin depuis un programme SADELIA généré pour Java.
Si la DLL ou la classe est déjà chargée en mémoire, on appelle simplement la fonction Fonction_Methode en lui passant ses paramètres SuiteParamètres.
Si la DLL ou la classe n'est pas encore chargée, on la charge, on appelle la fonction Fonction_Methode en lui passant ses paramètres SuiteParamètres, et on décharge la DLL.
Le nom de la DLL ou de la classe peut être sous forme de constante alphanumérique, de mot directeur d'un programme du glossaire, ou d'une variable précédée du caractère "&".
Le nom de la fonction ou de la méthode doit être sous forme de constante ou de variable alphanumérique.
Attention : il faut respecter la distinction des minuscules et des majuscules pour le nom de la fonction ou de la méthode.
Les paramètres peuvent être des variables (passées par référence) ou des constantes. La valeur retour de la fonction, ou méthode, n'est pas récupérée.
Attention :
Dans le cas où le paramètre est une constante :
- Si la fonction doit recevoir un paramètre de type NUM_BIN_4 ou NUM_E(n,0) ou NUM_P(n,0) avec n <= 9, la constante doit être un entier d'au plus 9 chiffres.
- Si la fonction doit recevoir un paramètre de type NUM_E(n,0) ou NUM_P(n,0) avec n > 9, la constante doit être un entier de plus de 9 chiffres (comprenant éventuellement des zéros à gauche).
- Si la fonction doit recevoir un paramètre de type NUM_E(x,d) ou NUM_P(x,d) avec d > 0, la constante doit être un nombre décimal.
- Si la fonction doit recevoir un paramètre de type NUM_BIN_2, la constante peut être un entier, en génération C Windows. Par contre, en génération Java, il faut obligatoirement passer une variable de type NUM_BIN_2.
- Si la fonction doit recevoir un paramètre de type NUM_BIN_8, la constante doit être un entier d'au plus 19 chiffres.
L'option *NON_UNICODE permet, lorsque l'ordre APPELER_DLL est placé en partie cliente ou serveur Windows d'un programme généré en Unicode, de convertir les paramètres de type ALPHA ("unicode") en "single-byte".
En client Java, Web et sur les autres parties serveur (Java, AS/400), ou en génération non-unicode, ce paramètre est ignoré.
*NON_UNICODE n'est pas autorisée dans les cas suivants :
- un des paramètres est de type LISTE,
- un des paramètres est une DS,
- appel d'une fonction de la VaToolBox.
Pour vérifier si l'appel s'est bien effectué, on peut tester le mot réservé *CODE_RETOUR.
Valeurs possibles :
0 : La fonction ou la classe appelée est trouvée et exécutée.
1 : La dll ou la classe n'est pas trouvée ou ne peut pas être chargée ou, la fonction ou la méthode appelée n'est pas trouvée dans la dll ou la classe.
2 : La fonction ou la méthode appelée est trouvée mais non exécutée car le contrôle des paramètres a stoppé l'exécution (mode sans exécution).
Par exemple
APPELER_DLL '\MES_DLLS\LSTCLI.DLL' 'LSTCLI_CHARGE' COD_CLI
APPELER_DLL LISTE_CLIENTS 'LSTCLI_CHARGE' COD_CLI
APPELER_DLL &NOM_DLL &NomFonction COD_CLI
CHARGER_DLL 'VaToolBx.dll'
APPELER_DLL 'VaToolBx.dll' ' VaToolBxFbeep' Freq 1000 CodeRetour
...
DECHARGER_DLL 'VaToolBx.dll'
Autre exemple d'utilisation: appel d'une méthode de classe Java externe
Source de la classe externe : chaque méthode pouvant être appelée doit être de type public et n'avoir qu'un seul paramètre de type Object[] (obligatoire). Ce tableau contient les différents paramètres de la méthode (ils sont donc fournis par référence et leur valeur peut être modifiée).
Les différents paramètres sont accessibles en utilisant (cast spécifique) TabParam[n-1], n étant l'indice du paramètre dans le L4G (voir l'exemple suivant).
Ce sont les seules contraintes à respecter. Ne sont donc pas concernés un éventuel package, le type renvoyé par la méthode, la gestion des exceptions, etc.
package monPackage; // (optionnel)
import ...
public class maClasse
{
public void maFonctionSansParametre (Object[] TabParam)
{
...
}
public void maFonctionAvecDeuxParametres (Object[] TabParam)
{
// Utilisation du premier paramètre (de type NUM_BIN_4)
.. (Integer) TabParam [0]..
// Utilisation du second paramètre (de type ALPHA)
.. (String) TabParam [1]..
// Cast à faire suivant le type Adélia de la variable
// String Short Integer Long Double Boolean HaBlob
}
}
=> APPELER_CLASS 'monPackage.maClasse' ' maFonctionSansParametre'
=> APPELER_CLASS 'monPackage.maClasse' ' maFonctionAvecDeuxParametres' maVarBIN4 maVarALPHA