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 :

Champs identiques dans 2 fichiers


Sujet :

AS/400

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 6
    Points : 2
    Points
    2
    Par défaut Champs identiques dans 2 fichiers
    Bonjour,

    J'ai commencé la programmation en rpg-ile il y a quelques jours et je suis bloqué sur un truc surement bête : j'ai deux fichiers dans mon programme contenant chacun le même champ avec une longueur différente. Pouvez-vous me dire comment faire pour renommer l'un des deux champs sans être obligé de modifier l'un des deux fichiers SVP ?

    Merci.

  2. #2
    Expert confirmé
    Homme Profil pro
    ANCIEN Consultant/Formateur/Développeur AS/400, iSeries, System i et Cobol
    Inscrit en
    Juin 2007
    Messages
    2 096
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : ANCIEN Consultant/Formateur/Développeur AS/400, iSeries, System i et Cobol
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 096
    Points : 4 155
    Points
    4 155
    Par défaut
    Bonjour.

    Malheureusement je ne connais pas très bien le RPG, mais comme tu n'as pas encore de réponses, regarde dans la doc IBM (info centre) tout ce qui concerne le remane et le préfixage (définir un préfixe pour le fichier ou son format et l'utiliser pour qualifier les zones)

  3. #3
    Membre expérimenté

    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 298
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 298
    Points : 1 578
    Points
    1 578
    Par défaut
    C'est pas très beau mais à situation exceptionnelle, moyens exceptionnels, pas vrai ?
    Déclarations à placer après la dernière spécif D.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    IFormatErroné                                          
    I              Zone                        NewZone
    Remarque.
    On ne peut pas colonner sur ce forum, et ça manque.
    Pour info, première ligne insérée sous l'éditeur SEU avec le prompt I et la seconde avec le prompt J.

  4. #4
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Merci à vous deux pour les réponses. J'ai déjà lu les 500 pages de doc sans pour autant trouver la solution.. j'ai peut être mal lu Je vais essayer ta solution Mercure. Tant que ca ne change pas mon fichier de base, tout me va

    Merci beaucoup !!

  5. #5
    Membre expérimenté

    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 298
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 298
    Points : 1 578
    Points
    1 578
    Par défaut
    Tu peux essayer, ça va marcher, garanti !

  6. #6
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    C'est bon, ca a très bien marché J'apporte juste une toute petite précision, il ne faut pas oublier d'ajouter un indicateur en position 21 sur la ligne où l'on entre le format à modifier. Et j'ai trouvé aussi comment préfixer les champs Hédhili Jaïdane mais ca n'allait pas avec la suite de mon programme.

    Merci à tous les deux !!

    Cordialement.

  7. #7
    En attente de confirmation mail
    Homme Profil pro
    Inscrit en
    Février 2004
    Messages
    204
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Indre et Loire (Centre)

    Informations forums :
    Inscription : Février 2004
    Messages : 204
    Points : 238
    Points
    238
    Par défaut
    l'utilisation d'un prefixage (dansl a carte F) des noms de zone aurait aussi pu faire l'affaire

  8. #8
    Membre expérimenté

    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 298
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 298
    Points : 1 578
    Points
    1 578
    Par défaut
    Oui, mais alors ce sont toutes les zones du format qui sont du coup préfixées et non plus une ou deux zones particulières.
    De toute façon, s'il y a besoin de renommer des zones d'une façon ou d'une autre, ça veut dire que la base de données a été mal construite.

  9. #9
    Expert confirmé
    Homme Profil pro
    ANCIEN Consultant/Formateur/Développeur AS/400, iSeries, System i et Cobol
    Inscrit en
    Juin 2007
    Messages
    2 096
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : ANCIEN Consultant/Formateur/Développeur AS/400, iSeries, System i et Cobol
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 096
    Points : 4 155
    Points
    4 155
    Par défaut
    Bonjour,

    Citation Envoyé par Mercure Voir le message
    ...ça veut dire que la base de données a été mal construite.
    Non pas forcément, je dirais même le contraire. Il n'y aucune raison de donner un autre nom à un champ d'un fichier qui en a déja un dans autre un fichier ou dans le référentiel général. Cette notion de qualification on l'a en Cobol depuis belle lurette, alors si on l'a maintenant en RPG ILE, il ne faut pas la négliger. Je pense et n'en suis pas sûr que si l'emploi d'une zone non préfixée ne prête pas à confusion, le compilateur n'y verrait pas d'erreur, donc on continuera à utiliser les zones sans préfixe sans aucun pb. Mais encore une fois je suis nul en RPG.

  10. #10
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Ce n'est pas faux Hédhili Jaïdane. De plus quand on a une centaine de fichiers (1 fichier = 1 base de données pour moi..), il n'est pas très facile d'entrer des noms de champs différents. Je n'ai vraiment pas envie de renommer tous ces fichiers et en plus de réecrire tous les programmes
    Mais par contre le préfixage devient très utile si on a 2 fichiers presques identiques ( par ex : "transport_france" et "transport_europe" qui sont susceptibles de posséder plusieurs champs identiques).

  11. #11
    Membre expérimenté

    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 298
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 298
    Points : 1 578
    Points
    1 578
    Par défaut
    On dit je crois la même chose. A savoir, le même nom symbolique ne peut servir qu'à définir une seule donnée particulière dans la société. Ce même nom ne peut plus être utilisé pour définir une autre donnée dès lors qu'il a été déjà employé pour en définir une autre. Dans ce cas, et pour reprendre l'exemple donné par dicus, "transport_france" et "transport_europe" devraient porter deux noms symboliques différents dans le référentiel et donc dans les fichiers puisque ces deux rubriques se réfèrent à deux définitions (données) différentes dans la société. Elles sont certes très ressemblantes mais correspondent à deux définitions bien distinctes.

  12. #12
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Mh mh.. je crois que j'ai perdu le fil de la conversation. Dans mes 2 fichiers, j'ai 2 champs : "n° transporteur" et "nom transporteur". Si j'utilise les 2 fichiers ensemble et que je compile, il va me dire qu'il y a un pb parce que plusieurs champs portent le même nom (mais n'ont pas forcément la même longueur). Donc, si j'ai bien compris ton raisonnement (j'en suis pas sûr ), j'aurais du, dans un des 2 fichiers, nommer mes 2 champs différemment ? Difficile à réaliser.

    En fait c'est dommage que l'on ne puisse pas faire comme dans le langage SQL, à savoir <nom du fichier>.<champ> on se casserait moins la tête

  13. #13
    En attente de confirmation mail
    Homme Profil pro
    Inscrit en
    Février 2004
    Messages
    204
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Indre et Loire (Centre)

    Informations forums :
    Inscription : Février 2004
    Messages : 204
    Points : 238
    Points
    238
    Par défaut
    Citation Envoyé par dicus Voir le message
    En fait c'est dommage que l'on ne puisse pas faire comme dans le langage SQL, à savoir <nom du fichier>.<champ> on se casserait moins la tête
    c'est le principe du prefixage...

  14. #14
    Expert confirmé
    Homme Profil pro
    ANCIEN Consultant/Formateur/Développeur AS/400, iSeries, System i et Cobol
    Inscrit en
    Juin 2007
    Messages
    2 096
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : ANCIEN Consultant/Formateur/Développeur AS/400, iSeries, System i et Cobol
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 096
    Points : 4 155
    Points
    4 155
    Par défaut
    Bonjour à tous.

    Je suis d’accord avec Mercure avec ce qu’il dit dans son dernier post à quelques exceptions près. Surtout dans le cas cité par dicus où
    plusieurs champs portent le même nom (mais n'ont pas forcément la même longueur)
    Si des champs ont des caractéristiques différentes, ils ne peuvent pas désigner la même donnée et donc ne peuvent pas avoir le même nom symbolique.

    Néanmoins si dans une entreprise on désigne par MLECAMION, le N° d’immatriculation d’un camion, ce nom symbolique désignera toujours le camion que celui-ci est présent dans le fichier « COLISAGE » , dans le fichier « CAMIONS », dans le fichier « ENCIRCULATION » ou dans le fichier « ENENTRETIEN ». Est-ce que dans la modélisation de mes données je dois prévoir 4 champs pour désigner le CAMION ? Ma réponse à moi est non.

    D’où cette notion de qualification (ou préfixage pour les gapistes). Alors on ne va pas chicaner la dessus trop longtemps. Ce qui est fait est fait. Les fichiers sont là et il faut les utiliser. Soit on fait un rename pour les champs prêtant à confusion, soit on préfixe les fichiers. D’après la doc, il y a plusieurs moyens : un préfixe avec substitution et un préfixe sans substitution sans que la longueur de la zone préfixée ne dépasse la longueur autorisée pour le "nommage" des variables.

    Dicus, jette un coup d’œil la dessus pour voir des exemples de préfixage en RPG ILE :

    http://publib.boulder.ibm.com/infoce...0925086374.htm

    ou en général sur l’info center :

    http://publib.boulder.ibm.com/infoce...v5r4/index.jsp

    Bonne continuation.

  15. #15
    Membre expérimenté

    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 298
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 298
    Points : 1 578
    Points
    1 578
    Par défaut
    Dicus,

    En RPG IV, tu peux faire "comme dans le langage SQL", c'est à dire qualifier une zone.

    Exemple avec fichiers
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    D input           ds             likerec(FILE001R: *input) qualifié <== input 
    D output          ds             likerec(FILE001R: *output) qualifié <== output
         
     /Free                                                          
                                                                     
        Read FILE001R InPut;   
        Dow not %Eof();
        clear OutPut;                                                 
        
         output.ARTNOM = input.ARTNOM;                                 
         output.ARTDESC = input.ARTDESC;                                 
         write FILE001R OutPut;
    Autre exemple avec un tableau à 2 dimensions
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    D Annee            ds                     Dim(3) Qualified
    D   Mois   		                 LikeDS(Paye) Dim(12)
     **
    D Paye             ds                        Qualified
    D   MtBrut                        9P 2
    D   MtNet  		          9P 2
    
      * Chargement du tableau
    C		EVAL	Annee(An).Mois(Mo).MtBrut = input.EmpMtBrut
    C		EVAL	Annee(An).Mois(Mo).MtNet  = input.EmpMtNet

  16. #16
    Membre expérimenté

    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 298
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 298
    Points : 1 578
    Points
    1 578
    Par défaut
    Citation Envoyé par Dicus
    j'aurais du, dans un des 2 fichiers, nommer mes 2 champs différemment ? Difficile à réaliser.
    Pourquoi est-ce difficile à réaliser ?

  17. #17
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Mercure : difficile à réaliser car il faurdrait recenser tous les champs de tous les fichiers et en créer de nouveaux pour la création d'un fichier.. Mais bon de toute façon j'ai compris ce que vous vouliez tous dire (un peu lent du cerveau )

    Au final quand on recense une centaine de fichiers, on ne sait plus où on en est.

    Citation Envoyé par Hédhili Jaïdane Voir le message
    Si des champs ont des caractéristiques différentes, ils ne peuvent pas désigner la même donnée et donc ne peuvent pas avoir le même nom symbolique.
    Sauf si on a mis une longueur de 3 au lieu de 2 par exemple alors qu'au final on voulait le même type de champ représentant la même donnée . Donc voilà les caractéristiques ont été mal définies mais grâce à vous, j'ai quand même réussi à avancer.

    Merci beaucoup !!

  18. #18
    Expert confirmé
    Homme Profil pro
    ANCIEN Consultant/Formateur/Développeur AS/400, iSeries, System i et Cobol
    Inscrit en
    Juin 2007
    Messages
    2 096
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : ANCIEN Consultant/Formateur/Développeur AS/400, iSeries, System i et Cobol
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 096
    Points : 4 155
    Points
    4 155
    Par défaut
    Il n'y a pas de quoi. C'était un plaisir.

    Bonne continuation et beaucoup de réussite.

  19. #19
    En attente de confirmation mail
    Homme Profil pro
    Inscrit en
    Février 2004
    Messages
    204
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Indre et Loire (Centre)

    Informations forums :
    Inscription : Février 2004
    Messages : 204
    Points : 238
    Points
    238
    Par défaut
    Citation Envoyé par Mercure Voir le message
    Dicus,

    En RPG IV, tu peux faire "comme dans le langage SQL", c'est à dire qualifier une zone.

    Exemple avec fichiers
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    D input           ds             likerec(FILE001R: *input) qualifié <== input 
    D output          ds             likerec(FILE001R: *output) qualifié <== output
         
     /Free                                                          
                                                                     
        Read FILE001R InPut;   
        Dow not %Eof();
        clear OutPut;                                                 
        
         output.ARTNOM = input.ARTNOM;                                 
         output.ARTDESC = input.ARTDESC;                                 
         write FILE001R OutPut;
    Autre exemple avec un tableau à 2 dimensions
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    D Annee            ds                     Dim(3) Qualified
    D   Mois   		                 LikeDS(Paye) Dim(12)
     **
    D Paye             ds                        Qualified
    D   MtBrut                        9P 2
    D   MtNet  		          9P 2
    
      * Chargement du tableau
    C		EVAL	Annee(An).Mois(Mo).MtBrut = input.EmpMtBrut
    C		EVAL	Annee(An).Mois(Mo).MtNet  = input.EmpMtNet
    ah oui j'avais oublié cette possibilité

  20. #20
    En attente de confirmation mail
    Homme Profil pro
    Inscrit en
    Février 2004
    Messages
    204
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Indre et Loire (Centre)

    Informations forums :
    Inscription : Février 2004
    Messages : 204
    Points : 238
    Points
    238
    Par défaut
    Citation Envoyé par dicus Voir le message
    Mercure : difficile à réaliser car il faurdrait recenser tous les champs de tous les fichiers et en créer de nouveaux pour la création d'un fichier.. Mais bon de toute façon j'ai compris ce que vous vouliez tous dire (un peu lent du cerveau )

    Au final quand on recense une centaine de fichiers, on ne sait plus où on en est.


    Sauf si on a mis une longueur de 3 au lieu de 2 par exemple alors qu'au final on voulait le même type de champ représentant la même donnée . Donc voilà les caractéristiques ont été mal définies mais grâce à vous, j'ai quand même réussi à avancer.

    Merci beaucoup !!
    ce n'est pas si difficile à réaliser, il suffit de prendre l'habitude de pré ou post fixé le nom de tes zones avec une abréviation liée au fichier, art pour article, cdc pour commande client, cdf pour commande fournisseur ou cda pour commande achat, ensuite le reste du nom de zone peut être toujours le même et les tailles définies via une repertoire de données qui centralise le tout et zoup ça va bien et surtout ça complique moins la tâche à ceux qui passent derrière toi, que ce soit, dans 1 mois, 1 an ou 20 ans...

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Réponses: 4
    Dernier message: 08/05/2012, 10h58
  2. Réponses: 6
    Dernier message: 29/07/2008, 11h04
  3. Supprimer lignes identiques dans un fichier
    Par Gad29 dans le forum Langage
    Réponses: 19
    Dernier message: 30/05/2007, 15h09
  4. Probleme de Champ identique dans une CListCtrl
    Par poseidon2 dans le forum MFC
    Réponses: 2
    Dernier message: 27/12/2006, 18h48
  5. Sélection de 2 champs identiques dans 2 tables différentes
    Par Véronique75ca dans le forum Access
    Réponses: 3
    Dernier message: 28/06/2006, 09h33

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