Téléchargement des produits


Version anglaise


 


      

VADELIA

SADELIA

WADELIA

MADELIA


(I/B) (C/S)

(B) (S)

(I/B) (C/S)

(I) (C/S)


Paragraphe d'utilisation

Tous


Syntaxe

APPELER NomPgmOuIdVarAlpha SuiteParamètres NonUnicode ModeContrôleParamètres

APPELER NomPgmOuIdVarAlpha ParamDyn ModeContrôleParamètres

APPELER NomPgmOuIdVarAlpha.NomProcédure SuiteParamètres



NomPgmOuIdVarAlpha


NomPgm | &IdVarAlpha

NomProcédure

NomDeProcedure | &IdVarAlphaProc

SuiteParamètres

SuiteParamètres Paramètre | Rien

NonUnicode

*NON_UNICODE | Rien

ParamDyn

*PARAM_DYN(VariableAlphaParamètres)

ModeContrôleParamètres

*MODE_CTRLPARAM (ModeErreurMineure, ModeErreurMajeure) | Rien

ModeErreurMineure

VariableNumériqueEntière | Constante numérique {0, 1, 2}

ModeErreurMajeure

VariableNumériqueEntière | Constante numérique {0, 1, 2}



Description

Première possibilité : APPELER NomPgmOuIdVarAlpha SuiteParamètres

Cet ordre appelle le programme dont le nom Adélia est NomPgm ou le programme dont le nom de fichier objet est contenu dans la variable alphanumérique IdVarAlpha .

Le nom du programme peut être suivi de paramètres. S'il ne s'agit pas de variables, ces paramètres peuvent être des constantes ou des mots réservés (de type ALPHA, NUM_E, NUM_P, NUM_BIN_2, NUM_BIN_4 ou NUM_BIN_8), mais seulement si le programme est passé explicitement (par l'intermédiaire de NomPgm ).

L'option *NON_UNICODE permet, lorsque l'ordre APPELER est placé en partie serveur AS/400 d'un programme généré en Unicode, de convertir les paramètres de type ALPHA ("unicode") en "single byte". Sur les autres parties serveur (Windows, Java), ou en génération non unicode, ce paramètre est ignoré.


Rappel des règles par défaut sur les paramètres de type ALPHA dans un programme généré en unicode et dans une partie serveur AS/400 :

Appel statique (APPELER MONPGM)

  Si appel d'un SADELIA, les paramètres sont laissés en unicode.

  Si appel d'un programme autre que SADELIA, les paramètres passés sont transformés en ALPHA simples, en entrée comme en sortie.

Appel dynamique (APPELER &VARPGM) :

  Par défaut les paramètres sont définis en unicode.


L'option *MODE_CTRLPARAM permet de fixer temporairement (uniquement pour cet appel, et donc sans incidence sur les sous-appels) le mode de fonctionnement du contrôle de paramètres (pour les erreurs majeures et mineures).

Les valeurs possibles pour les 2 modes sont :

0 : Avec message, sans exécution.

1 : Avec message, avec exécution.

2 : Sans message, avec exécution


Remarques :

- Si lors de l'exécution, la valeur de ModeErreurMineure ou ModeErreurMajeure n'est pas valide, la valeur fixée dans la configuration du Runtime sera utilisée.

- L'utilisation de ce paramètre implique que le programme appelé ait été généré avec au moins une version 11 d'Adélia Studio.

- L'option *MODE_CTRLPARAM n'est pas compatible avec les parties serveur AS/400.

- L'appel dynamique (via une variable alphanumérique IdVarAlpha) d'un programme SADELIA AS/400 ayant au moins une procédure publique n'est pas possible.


Deuxième possibilité : APPELER NomPgmOuIdVarAlpha ParamDyn

Cet ordre appelle le programme dont le nom Adélia est NomPgm ou le programme dont le nom de fichier objet est contenu dans la variable alphanumérique IdVarAlpha.

L'option *PARAM_DYN permet d'appeler un programme en passant l'ensemble des paramètres sous la forme d'une chaîne (via VariableAlphaParamètres). Ces paramètres ne seront donc qu'en entrée. Ils seront séparés par des espaces, et ceux de type ALPHA devront être encadrés par des guillemets s'ils contiennent des espaces.


Remarques :

    • Option non compatible avec les parties serveur AS/400.

    • Le contrôle des paramètres reste implémenté (lors de l'exécution).

    • La variable contenant la liste des paramètres (VariableAlphaParamètres) ne pourra gérer que des paramètres de type alpha ou numériques (variable sans dimension).

    • Les paramètres de type numérique accepteront les 2 séparateurs décimaux ("."  ou ",")


L'option *MODE_CTRLPARAM est aussi possible (voir détails au paragraphe "Première possibilité").


abcdefghijklmnopqrstuvwxyz


abcdefghijklmnopqrstuvwxyz


1 paramètre

"abcdefghijklmnopqrstuvwxyz"


abcdefghijklmnopqrstuvwxyz


1 paramètre

abcde  fghij


abcde puis fghij


2 paramètres

"abcde  fghij"


abcde   fghij


1 paramètre

abcde"fghij


erreur !


erreur

abcde\"fghij


abcde"fghij


1 paramètre

"abc de\"fg hijklmnopqrstuvwxyz"


abc de"fg hijklmnopqrstuvwxyz


1 paramètre


Troisième possibilité : APPELER PgmOuIdVarAlpha.NomProcédure SuiteParamètres

Cet ordre appelle la procédure NomProcédure (publique, externe) du programme NomPgm ou la procédure dont le nom est contenu dans IdVarAlphaProc du programme dont le nom est contenu dans IdVarAlpha ; voir aussi l'ordre TRAITER_PROC .

Les paramètres peuvent être des constantes ou des variables passées par référence.


Attention : si la DLL du programme est déjà chargée en mémoire par l'ordre CHARGER_DLL, elle n'est pas rechargée, ni déchargée.


Remarques :

Un programme appelé exécutant une fenêtre ne se terminera (et donc les instructions placées derrière l'ordre APPELER ne seront exécutées) que si ses fenêtres et toutes les fenêtres exécutées de manière modale ou non (par lui ou par d'autres programmes du même processus) après l'exécution de sa fenêtre sont fermées.

Lorsque l'ordre APPELER est utilisé pour appeler un programme VADELIA PGM1, le retour de l'appel ne s'effectue que lorsque toutes les fenêtres du programme PGM1 sont terminées. Par conséquent, si le programme PGM1 contient des fenêtres exécutées de manière non modale, tant que celles-ci sont ouvertes, le point d'exécution se situe en fin du bloc INIT_PGM de PGM1 et le code Adélia situé après l'ordre APPELER n'est pas exécuté.

Dès lors, si l'appel d'un programme PGM2 est effectué, tout se passe comme si ce dernier ordre APPELER était situé en fin du bloc INIT_PGM du programme PGM1. Donc, même si l'utilisateur ferme les fenêtres de PGM1, ce programme ne se termine pas tant que le programme PGM2 n'est pas lui-même terminé. Il est ainsi possible que les appels de programme PGM3, PGM4... s'empilent.

De plus, l'utilisateur peut souhaiter à nouveau appeler un programme dont les fenêtres sont fermées, alors que ce programme n'est pas terminé, car bloqué par un appel ultérieur. Or, le langage Adélia ne permet pas deux appels simultanés du même programme (il n'est pas réentrant). Pour traiter correctement ce cas, il est conseillé de consulter les programmes d'exemple PGMXX de la base de connaissance.

Lorsque l'ordre APPELER est placé dans la partie cliente d'un programme VADELIA, on ne peut appeler que des programmes de type VADELIA. De plus, dans le cas où le programme appelant est un programme WADELIA, il faut que le programme de type VADELIA appelé ait été généré avec une partie client Java.

Lorsque l'ordre APPELER est placé dans la partie serveur d'un programme, on ne peut appeler que des programmes de type SADELIA.

Pour vérifier si l'appel s'est bien effectué, on peut tester le mot réservé *CODE_RETOUR.

0 : Le programme appelé est trouvé et exécuté.

1 : - Le programme appelé n'est pas trouvé,
  - Le programme appelé n'a pas été regénéré et ne contient donc pas de point d'entrée pour être appelable via *PARAM_DYN.

2 : Le programme appelé est trouvé mais non exécuté car le contrôle des paramètres a stoppé l'exécution (mode sans exécution).


Cependant, dans les parties serveurs AS/400 ayant une procédure de type exception, si le mode "Gérer les erreurs E/S" est différent de "oui", alors en cas d'erreur d'appel, *CODE_RETOUR n'est pas mis à jour et la procédure de type exception est exécutée.


Si un programme SADELIA AS/400 qui auparavant n'avait pas de procédure publique a été regénéré ultérieurement avec au moins une procédure publique, vous devez regénérer tous les programmes l'appelant (programmes dont l'appel avait été généré lorsque ces derniers n'avaient pas de procédure publique).


Par exemple

  • APPELER LISTE_CLIENTS

  • APPELER MAJ_PRODUIT ZZ_COD_COM ZZ_COD_PRO P_COD_ACTION P_COD_RETOUR

  • NOM_PGM = 'MAJPRO'

APPELER &NOM_PGM ZZ_COD_COM ZZ_COD_PRO P_COD_ACTION P_COD_RETOUR

  • APPELER CONVERT_SRV.PROC_EUR_USD  895,55  ZW_MT_USD

  • VariableParamètres = '123 "ab cd" ghij 17.42 166,41'
    VariableNomProgramme = 'MONPGM'
    APPELER
    &VariableNomProgramme *PARAM_DYN(VariableParamètres)

  • APPELER MAJ_PRODUIT ZZ_COD_COM ZZ_COD_PRO P_COD_ACTION P_COD_RETOUR *MODE_CTRLPARAM(1, 0)


↑ Haut de page

  • Aucune étiquette