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 :

Suppression de colonne d'un fichier par jcl


Sujet :

JCL - SORT

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    janvier 2011
    Messages
    78
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : janvier 2011
    Messages : 78
    Points : 39
    Points
    39
    Par défaut Suppression de colonne d'un fichier par jcl
    Bonjour,

    Je souhaite supprimer les deux premières colonnes d'un fichier variable (séparation des colonnes par un ";"), par un jcl, selon des conditions précises, en sachant que ces dernières ont des informations fixes. Qu'elles seraient les instructions à utiliser (si possible par un SORT) ?

    Ex :
    Homme;adulte;BERTRAND;eric
    Femme;enfant;MARTIN;anne
    Homme;adulte;DUPOND;andré

    Je souhaite obtenir un fichier de sortie en supprimant les deux premières colonnes, à condition que l'article est une femme, soit :

    Homme;adulte;BERTRAND;eric
    MARTIN;anne
    Homme;adulte;DUPOND;andré

    Pourriez-vous m'aider ?

    Twisty

  2. #2
    Membre actif
    Profil pro
    Inscrit en
    juin 2008
    Messages
    138
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : juin 2008
    Messages : 138
    Points : 266
    Points
    266
    Par défaut
    Salut,

    Je pense que tu peux t'en sortir avec un OUTREC et un PARSE.
    Leur description est dans la documentation officielle : http://publib.boulder.ibm.com/infoce...2Fice1ca50.htm

  3. #3
    Membre chevronné Avatar de bernard59139
    Profil pro
    Administrateur de base de données
    Inscrit en
    octobre 2006
    Messages
    947
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : octobre 2006
    Messages : 947
    Points : 2 053
    Points
    2 053
    Par défaut
    bonjour

    je confirme la réponse du collègue. dans l'OUTREC tu fais un PARSE (éclatement) des colonnes.et tu recontruis le fichier avec un BUILD.

    rapidement écrit, ceci est une bonne base:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    OPTION COPY
      OUTREC PARSE=(%00=(ENDBEFR=C';',FIXLEN=50),
                             %01=(ENDBEFR=C',',FIXLEN=50),
                             %02=(FIXLEN=50)),
      BUILD=(%02,SQZ=(SHIFT=RIGHT))

  4. #4
    Membre chevronné Avatar de bernard59139
    Profil pro
    Administrateur de base de données
    Inscrit en
    octobre 2006
    Messages
    947
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : octobre 2006
    Messages : 947
    Points : 2 053
    Points
    2 053
    Par défaut
    j'oubliai, il faut adapter avec des IFTHEN.
    a+

  5. #5
    Membre expert
    Homme Profil pro
    Retraité
    Inscrit en
    octobre 2005
    Messages
    1 473
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Finance

    Informations forums :
    Inscription : octobre 2005
    Messages : 1 473
    Points : 3 275
    Points
    3 275
    Par défaut
    Citation Envoyé par twisty Voir le message
    ... Je souhaite supprimer les deux premières colonnes d'un fichier variable (séparation des colonnes par un ";"), par un jcl, selon des conditions précises, en sachant que ces dernières ont des informations fixes. Qu'elles seraient les instructions à utiliser (si possible par un SORT) ?
    Si les informations sont fixes, on n'est peut-être pas obligé de passer par l'opérateur PARSE. Par rapport à l'exemple donné, voici ce que je suggère avec l'utilisation de l'opérateur FINDREP (exemple testé) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    //SORT EXEC PGM=SORT 
    //* SUPPRESSION DE 2 COLONNES DANS UN FICHIER AVEC CONDITION 
    //SYSOUT DD SYSOUT=* 
    //SYSIN DD * 
     OPTION COPY 
     OUTFIL IFTHEN=(WHEN=(1,5,CH,EQ,C'FEMME'), 
            FINDREP=(INOUT=(C'ENFANT;',C'',C'FEMME;',C''))) 
    //SORTIN DD * 
    HOMME;ADULTE;BERTRAND;ERIC 
    FEMME;ENFANT;MARTIN;ANNE 
    HOMME;ADULTE;DUPOND;ANDRé 
    //SORTOUT DD SYSOUT=*

  6. #6
    Membre chevronné Avatar de bernard59139
    Profil pro
    Administrateur de base de données
    Inscrit en
    octobre 2006
    Messages
    947
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : octobre 2006
    Messages : 947
    Points : 2 053
    Points
    2 053
    Par défaut
    Bien vu................

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    janvier 2011
    Messages
    78
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : janvier 2011
    Messages : 78
    Points : 39
    Points
    39
    Par défaut demande complémentaire
    Merci, ça marche très bien. Mais, si je veux supprimer une colonne entière, située entre deux autres colonnes sans condition, les instructions FINDREP et INOUT sont inutilisables.

    exemple de fichier:

    Monsieur;ami ;BERTRAND;éric
    Madame ;cousin ;VALMON ;véronique
    Monsieur;neveu ;DUPONT ;andré

    Je veux supprimer la colonne où se trouve ami,cousin,neveu .

    Qu'elles instructions dois-je utiliser ?

    Merci d'avance Twisty

  8. #8
    Membre chevronné Avatar de bernard59139
    Profil pro
    Administrateur de base de données
    Inscrit en
    octobre 2006
    Messages
    947
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : octobre 2006
    Messages : 947
    Points : 2 053
    Points
    2 053
    Par défaut
    Mon exemple devrait suffire.
    A completer par la lecture de la doc.

    a+

  9. #9
    Nouveau membre du Club
    Profil pro
    Inscrit en
    janvier 2011
    Messages
    78
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : janvier 2011
    Messages : 78
    Points : 39
    Points
    39
    Par défaut Problème de longueur de tronquage de colonne
    Bonjour,

    J'utilise effectivement les instructions PARSE,ENDBEFR,FIXLEN,et BUILD avec l'exemple suivant :

    //SYSIN DD *
    OUTREC PARSE=(%01=(ABSPOS=5,ENDBEFR=C';',FIXLEN=6),
    %02=(ENDBEFR=C';',FIXLEN=6),
    %03=(FIXLEN=8)),
    BUILD=(1,4,5:%01,12:03,24:X)

    Note : c'est un fichier variable de longueur : 24 (en comptant les 41er caractère)
    ex :
    MARTIN;éric ;comptable
    DUPOND;alain;médecin

    En résultat, j'ai ceci :

    MARTIN ;comptable
    DUPOND ;médecin

    En fait, il manque le ";" après les noms. En changeant la longueru FIXLEN=7, c'est pareil. Faut-il rajouter une instruction supplémantaire pour avoir le ";", après les noms ?

    Merci d'avance.

    Twisty

  10. #10
    Membre chevronné Avatar de bernard59139
    Profil pro
    Administrateur de base de données
    Inscrit en
    octobre 2006
    Messages
    947
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : octobre 2006
    Messages : 947
    Points : 2 053
    Points
    2 053
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    SORT FIELDS=COPY
    INREC  PARSE=(%00=(ABSPOS=5,ENDBEFR=C';',FIXLEN=09),
                  %01=(ENDBEFR=C';',FIXLEN=09),
                  %02=(ENDBEFR=C';',FIXLEN=09)),
           BUILD=(1,4,%00,SQZ=(SHIFT=LEFT,TRAIL=C';'),
                %02,SQZ=(SHIFT=LEFT,TRAIL=C';'))
    OUTFIL  VLTRIM=C' ',
            BUILD=(1,4,5,18,SQZ=(SHIFT=LEFT))

Discussions similaires

  1. lire fichier par colonne
    Par hajarita dans le forum Langage
    Réponses: 20
    Dernier message: 05/08/2013, 09h54
  2. [Batch] Suppression fichiers par version
    Par julien41 dans le forum Scripts/Batch
    Réponses: 1
    Dernier message: 13/10/2011, 13h00
  3. Accès concurrent à un fichier par JCL
    Par matholas dans le forum JCL - SORT
    Réponses: 3
    Dernier message: 06/04/2009, 15h05
  4. suppression d'un fichier par date d'accès
    Par nokia6680 dans le forum VBScript
    Réponses: 4
    Dernier message: 02/11/2006, 10h48

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