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

Discussion :

Bug sur paramètre défini avec CONST


Sujet :

AS/400

  1. #1
    Membre confirmé
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    octobre 2006
    Messages
    485
    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 : 485
    Points : 648
    Points
    648
    Par défaut Bug sur paramètre défini avec CONST
    Bonjour,
    Je viens de tomber sur un bug qui me sidère !
    La machine en l'occurrence est en V6R1, au dernier niveau de PTF.
    J'ai une procédure en RPG ILE, qui reçoit 2 paramètres fixes (un code société et un n° fournisseur), et un 3ème qui est une DS, correspondant à la description d'un enreg qui sera retourné. En bref, c'est un peu un Read, mais version SQL externe.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    D get_FoComp_Inf  PI              n                                        Code retour      
    D   P_CodSoc                          Const Like(FCCODSOC)                 Code société     
    D   P_NumFou                          Const Like(FCNUFO)                   Code fournisseur 
    D   P_FCRecd                          LikeDS(EFOCOMP)                      Enreg Compl.Fourn
                                                                                               
    D Existe          s               n                                        Existe true/false
    
    C* ========================================================================                 
     /Free                                                                                      
                                                                                                
      // Evite que les zones soient remplies si erreur                                          
      Clear  P_FCRecd;
    Dans cette procédure, la première chose qui est faite, c'est initialiser par un "Clear" le 3ème paramètre qui pourrait déjà contenir quelque chose.
    Et bien ce "Clear", efface également... le 2ème paramètre, P_NumFou ! Alors qu'il est défini avec "Const" !
    Si quelqu'un a une idée sur ce mystère, çà m'aiderait, car je n'ai pas envie de devoir initialiser chaque zone individuellement dans toutes mes procédures, pour éviter ce genre de souci !

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    août 2008
    Messages
    122
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : août 2008
    Messages : 122
    Points : 143
    Points
    143
    Par défaut
    Bonjour,

    A mon avis lors de l'appel, tu dois passer comme 2ème parm une sous-zone de la DS passée en 3ème parm.
    Le CONST ne protège pas de ça. Avec const le parm est transmis par référence. Il y a simplement un controle supplémentaire qui est fait à la compilation (plus la possibilité de passer des expressions).
    Autre cas : si le const est mis sur la prog principale (le pgm), cela ne protège pas d'un appel par un programme qui ne préciserait pas const (ou tout simplement un OPM qui ne connait pas ça).
    Mais même VALUE ne te protègera pas.

    je ne vois pas d'autre moyen que de passer par une variable intermédiaire lors de l'appel.

    Bonne fin d'année !


    PS : par acquis de conscience je viens de tester en 7.1 TR11, c'est exactement pareil.

  3. #3
    Membre confirmé
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    octobre 2006
    Messages
    485
    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 : 485
    Points : 648
    Points
    648
    Par défaut
    Bonjour,

    La variable est totalement indépendante de la DS. Tous mes paramètres sont des variables indépendantes préfixées P_.
    En l'occurrence, un seul programme (RPG ILE) appelle la procédure. Le CONST y est puisque le programme et la procédure utilisent le même /copy.
    J'y perd vraiment mon latin.

Discussions similaires

  1. probleme passage de paramètre fonction avec const
    Par romainprogdebutant dans le forum C++
    Réponses: 11
    Dernier message: 20/08/2015, 16h04
  2. Bug sur les liens avec icône automatique
    Par Médinoc dans le forum Mode d'emploi & aide aux nouveaux
    Réponses: 3
    Dernier message: 25/09/2009, 16h46
  3. Réponses: 6
    Dernier message: 24/02/2005, 09h44
  4. Erreur sur une fonction avec des paramètres
    Par Elois dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 05/05/2004, 21h00
  5. Bug sur la prorpiété required d'un TField avec ADO ???
    Par denrette dans le forum Bases de données
    Réponses: 6
    Dernier message: 04/11/2003, 11h04

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