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

JCL - SORT Discussion :

JCL - concaténation de fichiers


Sujet :

JCL - SORT

  1. #1
    Candidat au Club
    Inscrit en
    Septembre 2009
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 3
    Points : 3
    Points
    3
    Par défaut JCL - concaténation de fichiers
    Bonjour,

    J'ai une question MVS et plus particulièrement concernant les utilitaires.

    je vous expose mon problème :

    j'ai deux fichiers en entrée, le premier contenant des enregistrements d'une longueur de 5 octets, le second contenant des enregistrements de 4 octets (la longueur des enregistrements est donnée à titre d'exemple)

    après l'exécution de l'utilitaire (DFSORT peut être, ou MERGE, ou ???), je souhaite obtenir un fichier contenant des enregistrements de longueur 9 (5 + 4).

    Exemple :

    FIC1 (lg 5) contient
    12345
    67890

    FIC2 (lg 4) contient
    ABCD
    EFGH

    Au final, après traitement je dois obtenir un fichier de lg 9 contenant
    12345ABCD
    67890EFGH

    pouvez-vous m'aider SVP ?

    Merci

  2. #2
    Membre expert
    Avatar de Metalman
    Homme Profil pro
    Enseignant-Chercheur
    Inscrit en
    Juin 2005
    Messages
    1 049
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Enseignant-Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 049
    Points : 3 532
    Points
    3 532
    Par défaut
    Outch... de souvenir (lointain... très lointain) : avec DFSORT tu peux, en indiquant qu'à chaque ligne, tu vas comparer avec l'autre, et y recopier le contenu des 2 fichiers (ligne 1 du fichier1 et ligne 1 du fichier2).

    J'avais fait un tuto à DFSORT, dans la partie JOIN tu devrais trouver ton bonheur :
    Tuto DFSORT JOIN

    Dans mon exemple je parle de SORTJNF1 et SORTJNF2, avec recopie du contenu :
    REFORMAT FIELDS=(F1:1,3,F2:4,5),FILL=C' '
    Modifier le FIELDS pour prendre en compte toute ta ligne et c'est réglé.

    Si les enregistrements sont de taille fixe, tout ira comme sur du papier à roulettes !
    Sinon, un petit coup de ICETOOLS ou du programme qui copie (dont j'ai oublié le nom en un peu plus de 1 an)
    --
    Metalman !

    Attendez 5 mins après mes posts... les EDIT vont vite avec moi...
    Les flags de la vie : gcc -W -Wall -Werror -ansi -pedantic mes_sources.c
    gcc -Wall -Wextra -Werror -std=c99 -pedantic mes_sources.c
    (ANSI retire quelques fonctions comme strdup...)
    L'outil de la vie : valgrind --show-reachable=yes --leak-check=full ./mon_programme
    Et s'assurer que la logique est bonne "aussi" !

    Ma page Developpez.net

  3. #3
    Expert éminent sénior
    Homme Profil pro
    Ingénieur d'Etude Mainframe/AS400
    Inscrit en
    Novembre 2012
    Messages
    1 765
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur d'Etude Mainframe/AS400
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2012
    Messages : 1 765
    Points : 10 748
    Points
    10 748
    Par défaut
    C'est faisable via un sort, tout dépend de ta clef de jointure. Car au fond c'est de cela qu'il s'agit.

  4. #4
    Candidat au Club
    Inscrit en
    Septembre 2009
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 3
    Points : 3
    Points
    3
    Par défaut
    Bonjour,

    le problème est qu'il n'y a pas de clé de jointure. Le traitement à effectuer vise simplement à "coller au bout" de l'enreg 1 du fichier 1 l'enreg 1 du fichier 2, etc ... et ce quelle que soit la longueur des 2enregistrements.
    il n'est donc pas question de comparer quoique ce soit entre les deux fichiers.

    Merci

  5. #5
    Expert éminent sénior
    Homme Profil pro
    Ingénieur d'Etude Mainframe/AS400
    Inscrit en
    Novembre 2012
    Messages
    1 765
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur d'Etude Mainframe/AS400
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2012
    Messages : 1 765
    Points : 10 748
    Points
    10 748
    Par défaut
    Alors comme solution, tu pourrais utiliser le SEQNUM dans un SORT par fichier (ton fichier A deviendra fichier A avec un numéro de séquence derrière) qui te créera un numéro de séquence et ce, pour chaque fichier.

    La SYSIN est de ce type :

    SORT FIELDS=COPY
    OUTREC=(1,5,SEQNUM,9,ZD)

    Tu auras donc deux fichier avec avec chacun un numéro de séquence à la fin qui va te servir de clef de jointure.

    Tu fais ensuite un SORT de rapprochement :
    Code : 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
    //RAPPR  EXEC PGM=SORT                                   
    //SYSOUT   DD SYSOUT=*                                                                    
    //SORTJNF1 DD DISP=SHR,DSN=FICA                                
    //SORTJNF2 DD DISP=SHR,DSN=FICB         
    //BOTH     DD DSN=FICCONCAT,                    
    //            DISP=(NEW,CATLG,DELETE),                   
    //            UNIT=3390,SPACE=(CYL,(1,50),RLSE)          
    //SYSIN    DD   *                                        
    JOINKEYS FILE=F1,FIELDS=(6,9,A)
    JOINKEYS FILE=F2,FIELDS=(5,9,A)
    JOIN UNPAIRED,F1,F2                
    REFORMAT FIELDS=(F1:1,14,F2:1,13,?)
    OPTION COPY
    OUTFIL FNAMES=BOTH,INCLUDE=(28,1,CH,EQ,C'1'),
             OUTREC=(1,5,15,4)

  6. #6
    Candidat au Club
    Inscrit en
    Septembre 2009
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 3
    Points : 3
    Points
    3
    Par défaut
    Bonjour,

    OK, ça marche.

    juste quelques remarques :

    sur les deux premiers steps (ajout de séquence), il faut mettre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
         SORT FIELDS=COPY
         OUTREC FIELDS=(1,5,SEQNUM,9,ZD)
    sinon, syntax error

    sur le troisième step (RAPPR), il faut mettre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    //RAPPR  EXEC PGM=SORT                          
    //SYSOUT   DD SYSOUT=*                          
    //SORTJNF1 DD DISP=SHR,DSN=FICA
    //SORTJNF2 DD DISP=SHR,DSN=FICB
    //BOTH     DD DSN=FICCONCAT,         
    //            DISP=(NEW,CATLG,DELETE),          
    //            UNIT=3390,SPACE=(CYL,(1,50),RLSE) 
    //SYSIN    DD   *                               
      JOINKEYS FILE=F1,FIELDS=(6,9,A)               
      JOINKEYS FILE=F2,FIELDS=(5,9,A)               
      JOIN UNPAIRED,F1,F2                           
      REFORMAT FIELDS=(F1:1,14,F2:1,13,?)           
      OPTION COPY                                   
      OUTFIL FNAMES=BOTH,                           
             OUTREC=(1,5,15,4)
    Avec INCLUDE=(28,1,CH,EQ,C'1'), j'ai un fichier vide en sortie.

    Merci en tous cas

Discussions similaires

  1. JCL - Concaténation fichiers
    Par Kanade dans le forum JCL - SORT
    Réponses: 8
    Dernier message: 31/07/2015, 08h45
  2. Concaténer deux fichiers binaires
    Par mickael.be dans le forum Delphi
    Réponses: 7
    Dernier message: 30/07/2006, 13h11
  3. concaténation de fichiers
    Par donmamio dans le forum Langage
    Réponses: 5
    Dernier message: 26/04/2006, 12h49
  4. [debutant] concaténation de fichiers
    Par Spyco dans le forum Entrée/Sortie
    Réponses: 7
    Dernier message: 13/07/2005, 10h52
  5. Comment concaténer plusieurs fichiers en un ?
    Par souch dans le forum Langage
    Réponses: 16
    Dernier message: 14/12/2004, 18h58

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