IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

AS/400 Discussion :

RPG - Paramètre optionnel


Sujet :

AS/400

  1. #1
    Futur Membre du Club
    Inscrit en
    Décembre 2009
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 16
    Points : 8
    Points
    8
    Par défaut RPG - Paramètre optionnel
    Dans plusieurs RPG je fais un simple CALL d'un même autre RPG que j'appellerai RPG_TEST.
    Ce RPG_TEST prend 7 paramètres :

    C *ENTRY PLIST
    C PARM PRMT1 2
    C PARM PRMT2 8
    C PARM PRMT3 2
    C PARM PRMT4 1
    C PARM PRMT5 2
    C PARM PRMT6 3
    C PARM PRMT7 1


    Je voudrais rajouter un 8ème paramètre optionnel pour gérer un cas particulier et ne pas dupliquer mon RPG_TEST.
    Pour cela, dans un des RPG qui appelle mon RPG_TEST, j'ai fait la chose suivante :


    D prgtest PR ExtPgm('RPG_TEST')
    D PRMT1 2
    D PRMT2 8
    D PRMT3 2
    D PRMT4 1
    D PRMT5 2
    D PRMT6 3
    D PRMT7 1
    D PRMT8 8 Options(*NoPass)


    Puis un CALLP pour l'appeler

    C MOVEL 'E2' ZA1 2
    C MOVEL *BLANKS ZA2 8
    C MOVEL '30' ZA3 2
    C MOVEL '7' ZA4 1
    C MOVE '40' ZA5 2
    C MOVEL *BLANKS ZA6 3
    C MOVEL *BLANKS ZA7 1
    C MOVE '040' Z8 8
    C CALLP RechTable (ZA1:ZA2:ZA3:ZA4:ZA5:ZA6:ZA7:Z8)


    Questions :

    1 - Dans mon RPG_TEST, est ce que je peux récupérer le 8eme paramètre sans modifier la déclaration du PLIST ?
    2 - Est ce que je peux laisser tous les autres RPG qui appellent le RPG_TEST avec un simple CALL ?

  2. #2
    Membre éprouvé
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Octobre 2006
    Messages
    691
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Jura (Franche Comté)

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Octobre 2006
    Messages : 691
    Points : 996
    Points
    996
    Par défaut
    Bonjour,

    L'appel avec des paramètres optionnels n'est valable que pour les procédures, pas pour les programmes.
    Dans la procédure appelée, il suffit de tester le nombre de paramètres avec %parms pour savoir si le 8ème a été transmis ou pas.
    Tu pourrais aussi utiliser *Omit et tester le passage du paramètre avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If %Addr(PRMT8) = *Null;
    Remarque, il serait peut être temps de passer au Free form non ?

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Août 2008
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 123
    Points : 146
    Points
    146
    Par défaut
    Bonjour,

    Questions :

    > 1 - Dans mon RPG_TEST, est ce que je peux récupérer le 8eme paramètre sans modifier la déclaration du PLIST ?

    Non, tu dois impérativement déclarer le 8ème paramètre afin de pouvoir l'utiliser

    > 2 - Est ce que je peux laisser tous les autres RPG qui appellent le RPG_TEST avec un simple CALL ?

    Oui...Mais une condition cependant. Tu dois tester si le paramètre optionnel (le 8ème) a été transmis ou non.
    Il ne faut pas utiliser un paramètre s'il n'a pas été transmis.
    2 façons de tester si le paramètre a été transmis :
    • la bif %Parms() retourne le nombre de paramètres reçus
    • par les positions 37 à 39 de la PSDS (3s 0)



    @m4k-Hurrican : "L'appel avec des paramètres optionnels n'est valable que pour les procédures, pas pour les programmes."
    Hum hum ... ceci n'est pas exact . les paramètres optionnels sont possibles pour les "programmes" RPG (mais pas CLP). C'était déjà le cas en RPG III (uniquement par le biais de la SDS) et largement utilisé.

  4. #4
    Membre éprouvé
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Octobre 2006
    Messages
    691
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Jura (Franche Comté)

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Octobre 2006
    Messages : 691
    Points : 996
    Points
    996
    Par défaut
    Citation Envoyé par jump400 Voir le message
    @m4k-Hurrican : "L'appel avec des paramètres optionnels n'est valable que pour les procédures, pas pour les programmes."
    Hum hum ... ceci n'est pas exact . les paramètres optionnels sont possibles pour les "programmes" RPG (mais pas CLP). C'était déjà le cas en RPG III (uniquement par le biais de la SDS) et largement utilisé.
    N'utilisant plus que des appels de procédures, et n'ayant pas le temps de tester du vieux RPGIII, je vais te croire sur parole !
    Je pensais que le MCH3601 était non contournable. Çà m'aurait pourtant été utile à l'époque !

Discussions similaires

  1. Réponses: 9
    Dernier message: 25/08/2021, 14h52
  2. [VB.NET] Paramètre optionnels dans une procédure
    Par krfa1 dans le forum Windows Forms
    Réponses: 6
    Dernier message: 19/05/2006, 14h22
  3. Fonction ou procédure avec paramètres optionnels ?
    Par [Silk] dans le forum Langage
    Réponses: 3
    Dernier message: 05/05/2006, 13h55
  4. Paramètre optionnel dans une fonction
    Par bractar dans le forum Langage
    Réponses: 3
    Dernier message: 10/03/2006, 17h02
  5. paramètre optionnel dans une fonction
    Par titoumimi dans le forum Langage
    Réponses: 2
    Dernier message: 02/02/2006, 15h29

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo