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

Cobol Discussion :

Move corresponding


Sujet :

Cobol

  1. #1
    Membre actif Avatar de speedy_g
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    213
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2007
    Messages : 213
    Points : 242
    Points
    242
    Par défaut Move corresponding
    Bonjour tout le monde.

    J'ai une question concernant le transfert de données.

    Je dois transférer des donnéees d'une table d'un format à un autre, j'aimerais utiliser le "move corresponding" pour ne pas devoir écrire trop de move, seulement les données ne sont pas hiérarchisées de la même manière.

    Je m explique :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    table 1.
    -------
    01 tab_1.
        03 el_1 pic x(2).
        03 el_2 pic x(2).
    
    table 2.
    -------
    01 tab_2
        02 seg_1.
             04 el_1 pic x(2).
             04 el_2 pic x(2).
    Est-ce que je peux utiliser le move corresponding ?

    du style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    move corresponding tab_1 to tab_2
    ???

    Sinon, y a t il moyen de ne pas devoir ecrire ???? :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        move el_1 of tab_1 to el_1 of tab_2.
        move el_2 of tab_1 to el_2 of tab_2.

    Car j'ai vraiment beaucoup d'éléments et ça ferait vraiment pas beau dans le programme, en plus du fait que je devrais les écrire tous

    Merci beaucoup pour vos réponses.

    Johan

  2. #2
    Membre éclairé Avatar de Peut-êtreUneRéponse
    Homme Profil pro
    IT Specialist - IBM Z
    Inscrit en
    Décembre 2006
    Messages
    548
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : IT Specialist - IBM Z
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2006
    Messages : 548
    Points : 801
    Points
    801
    Par défaut
    Le MOVE CORR est là pour ça

    Un exemple sur le cours cobol chapitre 3 §4.2

    .

  3. #3
    Membre actif Avatar de speedy_g
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    213
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2007
    Messages : 213
    Points : 242
    Points
    242
    Par défaut
    Citation Envoyé par Peut-êtreUneRéponse
    Le MOVE CORR est là pour ça

    Un exemple sur le cours cobol chapitre 3 §4.2

    .
    Justement dans le paragraphe consacre au move corr, il est cité :

    L'opération MOVE CORR(ESPONDING) permet de transférer les données élémentaires d'un groupe de données sur un autre "pour les données
    élémentaires portant le même nom et le même numéro de niveau dans les deux structures"

    Il est ecrit que le niveau des donnees elementaires doit etre le meme. C est ce qui m embete vu l exemple que j avais cité plus haut

    merci de ta reponse

    JoJo

  4. #4
    Membre éclairé Avatar de Peut-êtreUneRéponse
    Homme Profil pro
    IT Specialist - IBM Z
    Inscrit en
    Décembre 2006
    Messages
    548
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : IT Specialist - IBM Z
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2006
    Messages : 548
    Points : 801
    Points
    801
    Par défaut
    J'avais regardé un peu rapidement!

    En effet tel que tu le présentes dans ton exemple cela ne fonctionne pas. Tu peux par contre tout simplement faire:

    Code cobol : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    MOVE TAB_1 TO SEG_1.

    Note qu'en environnement mainframe, l'underscore n'est pas un caractère cobol et ta compil ne passerait pas.

    .

  5. #5
    Membre actif Avatar de speedy_g
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    213
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2007
    Messages : 213
    Points : 242
    Points
    242
    Par défaut
    Citation Envoyé par Peut-êtreUneRéponse
    J'avais regardé un peu rapidement!

    En effet tel que tu le présentes dans ton exemple cela ne fonctionne pas. Tu peux par contre tout simplement faire:

    Code cobol : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    MOVE TAB_1 TO SEG_1.

    Note qu'en environnement mainframe, l'underscore n'est pas un caractère cobol et ta compil ne passerait pas.

    .

    Malheureusement les tables que j'avais à traiter ne correspondaient pas en tout point; el_1 et el_2 se trouvent parmis un ensemble de champs qui ne sont pas communs à tab_1 et tab_2.

    merci d'avoir essaye de m aider


    ps : j ai peut etre une autre solution,
    En fait je charge ma structure de table dans mon programme cobol, je pourrais peut etre utiliser l instruction "copy ....replacing by " pour adapter mes niveaux de ma premiere table à celle de ma seconde table.

    Ex:

    tab_1.
    05 ele_1 ...
    05 ele_2 ...
    05 ele_3 ...
    05 ele_4 ...
    05 ele_5 ...
    05 ele_6 ...

    tab_2.
    05 seg_1.
    07 el_12 ...
    07 el_1 ...
    05 seg_2.
    07 el_21.
    09 el_1 ...
    09 el_22 ...

    etc....

    Le but serait de mettre a niveau tab_2 pr qu elle ne contienne plus que des 05 et supprimer tout les segments par quelques instructions.

    Une idée?

  6. #6
    Membre à l'essai
    Inscrit en
    Septembre 2005
    Messages
    47
    Détails du profil
    Informations personnelles :
    Âge : 60

    Informations forums :
    Inscription : Septembre 2005
    Messages : 47
    Points : 23
    Points
    23
    Par défaut
    Salut,

    Le "copy replacing" ne change pas les niveaux, mais simplement le nom des variables.

    Si tu n'as pas encore trouvé de solution, ce que je n'espère pas pour toi, donne moi la description exacte de tes deux copy, et ce que tu cherches exactement à faire, je regarderai.

    Sinon (autrement dit si tu as déjà trouvé une solution), passe le fil de discussion a [résolu]

  7. #7
    Membre actif Avatar de speedy_g
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    213
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2007
    Messages : 213
    Points : 242
    Points
    242
    Par défaut
    En fait j ai utilise la solution pas intelligente; copy move pour chacune des variables.

    ps : le copy replacing peut changer le niveau ex :

    copy blabla replacing 01 var1 by 02 var1;

    La structure de la table se fait dans des fichiers séparés; donc dans le programme proprement dis je peux faire un arrangement des niveaux

    La syntaxe n est pas totallement juste mais tu as surement compris .


    Merci en tout cas pour les réponses.
    Le problème n'est pas résolu en lui même, mais j'ai résolu mon problème avec la solution que je voulais éviter. Je vais néanmoins mettre le sujet à "résolu" n' ayant plus besoin de faire ce genre de manipulations pour le moment.

    Donc jusqu'a preuve du contraire et en guise de conclusion :
    il n'est pas possible d'utiliser le move corresponding lorsque les mots des tables à traiter n'ont pas le même niveau. La meilleure solution à utiliser alors est le move pour chacune des variables. Néanmoins si la structure des tables sont indiquées dans des fichiers séparés, il est possible d'utiliser le copy replacing pour remplacer le niveau des variables pour autant que les niveaux des variables ne soient pas trop différents( lourdeur)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Quel SGBD correspond aux fichiers à extension .DAT
    Par jcpitaud dans le forum Autres SGBD
    Réponses: 4
    Dernier message: 12/04/2006, 20h11
  2. Correspondance de types lors d'un SELECT
    Par Alain Dionne dans le forum ASP
    Réponses: 5
    Dernier message: 18/05/2004, 20h54
  3. [debutant] correspondance JAVA C++ pour pointeur de fonction
    Par davidoff_tls dans le forum Langage
    Réponses: 7
    Dernier message: 15/04/2004, 09h13
  4. Récupérer le nom du fichier spool correspondant à un job
    Par chtiot dans le forum API, COM et SDKs
    Réponses: 3
    Dernier message: 23/02/2004, 20h28

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