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

z/OS Discussion :

Concaténer 2 fichiers dont un possède une clé multiple


Sujet :

z/OS

  1. #1
    Candidat au Club
    Inscrit en
    Septembre 2010
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 3
    Points : 2
    Points
    2
    Par défaut Concaténer 2 fichiers dont un possède une clé multiple
    Bonjour,

    à l'aide d'ICETOOL, je souhaite concaténer les fichiers d'entrée suivants :

    IN01
    AAA000
    AAB001
    AAC002

    IN02
    AAA55
    AAA56
    AAB66
    AAB67
    AAC77
    AAC78

    afin d'obtenir en sortie :
    AAA55000
    AAA56000
    AAB66001
    AAB67001
    AAC77002
    AAC78002


    La clé étant les 3 premiers octets, donc unique dans le fichier IN01 et multiple dans IN02.

    J'ai réussi à concaténer 2 fichiers dont la clé est unique dans chaque, mais là, je coince.

    Merci d'avance !

  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 : 802
    Points
    802
    Par défaut
    Dans ton cas un JOINKEY DFSORT est plus simple qu'un SPLICE ICETOOL.

    Avec un JOINKEYS DFSORT :

    Code JCL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    //JNKEYS  EXEC PGM=SORT
    //SYSOUT  DD SYSOUT=*
    //IN01    DD DSN=... fichier IN01 (clé unique)
    //IN02    DD DSN=... fichier IN02 (clé multipe)
    //SORTOUT DD DSN=... fichier résulat
    //SYSIN   DD *
     JOINKEYS F1=IN01,FIELDS=(1,3,A)
     JOINKEYS F2=IN02,FIELDS=(1,3,A)
     REFORMAT FIELDS=(F2:1,5,F1:4,3)
     OPTION COPY
    /*

    Avec un SPLICE ICETOOL :

    Code JCL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    //SPLICE EXEC PGM=ICETOOL
    //TOOLMSG DD SYSOUT=*
    //DFSMSG  DD SYSOUT=*
    //IN01    DD DSN=... fichier IN01 (clé unique)
    //IN02    DD DSN=... fichier IN02 (clé multipe)
    //TMP     DD DSN=&&TMP,UNIT=SYSDA,SPACE=(CYL,(5,5)),
    //        DISP=(MOD,PASS)
    //OUT     DD DSN=... fichier résulat
    //TOOLIN  DD *
     COPY   FROM(IN01) TO(TMP) USING(WRK1)
     COPY   FROM(IN02) TO(TMP) USING(WRK2)
     SPLICE FROM(TMP)  TO(OUT) ON(1,3,ZD) -
            WITHALL WITH(1,5) WITH(9,1) USING(WRK3)
    /*
    //WRK1CNTL DD *
     INREC BUILD=(1,3,6:4,3,9:C'11')
    /*
    //WRK2CNTL DD *
     INREC OVERLAY=(9:C'22')
    /*
    //WRK3CNTL DD *
     OUTFIL FNAMES=OUT,INCLUDE=(9,2,CH,EQ,C'21'),
     BUILD=(1,8)
    /*

    .

  3. #3
    Candidat au Club
    Inscrit en
    Septembre 2010
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    merci beaucoup pour toutes ces précisions, je vais tenter le coup avec le JOINKEYS.

    J'ai une question subsidiaire, laquelle des méthodes est la plus performante sur de gros volumes à concaténer :
    - JOINKEYS DFSORT
    - SPLICE ICETOOL
    - programme cobol d'appariement
    ?

    Merci d'avance.


    Ca fonctionne, par contre je souhaite conserver en sortie les lignes qui ne matchent pas entre les 2 fichiers, existe-t-il une option pour cela, à l'image du KEEPNODUPS d'ICETOOL ?

  4. #4
    Membre chevronné Avatar de bernard59139
    Profil pro
    Retired
    Inscrit en
    Octobre 2006
    Messages
    958
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Retired

    Informations forums :
    Inscription : Octobre 2006
    Messages : 958
    Points : 2 076
    Points
    2 076
    Par défaut
    Bonjour

    A moins d'avoir les bonnes routines de rapprochement, JOINKEY est mon préféré.
    je n'ai pas fait de tests de comparaison, mais la simplicité de lecture et de mise en oeuvre l'emporte.

    mais attention, JOINKEY trie les fichiers sauf si tu utilises l'option SORTED.
    exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    JOINKEYS FILE=F1,FIELDS=(22,3,A),SORTED
    JOINKEYS FILE=F2,FIELDS=(15,3,A)
    le fichier F1 est déjà trié. F2 sera trié.
    Un lien interessant: joinkey chez ibm

  5. #5
    Membre chevronné Avatar de bernard59139
    Profil pro
    Retired
    Inscrit en
    Octobre 2006
    Messages
    958
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Retired

    Informations forums :
    Inscription : Octobre 2006
    Messages : 958
    Points : 2 076
    Points
    2 076
    Par défaut
    Bonjour

    A moins d'avoir les bonnes routines de rapprochement, JOINKEY est mon préféré.
    je n'ai pas fait de tests de comparaison, mais la simplicité de lecture et de mise en oeuvre l'emporte.

    mais attention, JOINKEY trie les fichiers sauf si tu utilises l'option SORTED.
    exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    JOINKEYS FILE=F1,FIELDS=(22,3,A),SORTED
    JOINKEYS FILE=F2,FIELDS=(15,3,A)
    le fichier F1 est déjà trié. F2 sera trié.

    JOINKEY permet de faire des jointures de fichiers. Un peu comme SQL.
    Les jointures peuvent être de differents types, en comparant avec SQL, on a:
    • INNER JOIN, par defaut, sans l'ordre JOIN
    • FULL OUTER JOIN, en codant JOIN UNPAIRED,F1,F2 ou UNPAIRED
    • LEFT OUTER JOIN, en codant JOIN UNPAIRED,F1
    • RIGHT OUTER JOIN, en codant UNPAIRED,F2



    pour traiter l'absence et/ou la présence de clef dans tel ou tel fichier, utiliser le mot clef JOIN, exemple:
    Un lien interessant: joinkey chez ibm

  6. #6
    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 : 802
    Points
    802
    Par défaut
    Comme le fait remarquer @bernard59139, dans ton cas les fichiers sont déjà triés, ce sera plus performant en l'indiquant à DFSORT :

    Code JCL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    //JNKEYS  EXEC PGM=SORT
    //SYSOUT  DD SYSOUT=*
    //IN01    DD DSN=... fichier IN01 (clé unique)
    //IN02    DD DSN=... fichier IN02 (clé multipe)
    //SORTOUT DD DSN=... fichier résulat
    //SYSIN   DD *
     JOINKEYS F1=IN01,FIELDS=(1,3,A),SORTED
     JOINKEYS F2=IN02,FIELDS=(1,3,A),SORTED
     REFORMAT FIELDS=(F2:1,5,F1:4,3)
     OPTION COPY
    /*

  7. #7
    Candidat au Club
    Inscrit en
    Septembre 2010
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    C'est parfait, ça fonctionne, merci

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

Discussions similaires

  1. Réponses: 24
    Dernier message: 23/12/2011, 17h20
  2. Réponses: 9
    Dernier message: 04/11/2010, 14h28
  3. [AC-2007] Récupérer le nom d'un fichier dont on ne connait qu'une partie ?
    Par tibofo dans le forum VBA Access
    Réponses: 2
    Dernier message: 14/04/2010, 17h52
  4. Recherche fichier dont on connait une partie du nom
    Par kluh dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 25/11/2008, 09h31
  5. Réponses: 2
    Dernier message: 01/10/2007, 13h17

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