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 :

Inclure les minuscules et les majuscules dans un SORT


Sujet :

z/OS

  1. #1
    Membre habitué
    Homme Profil pro
    Inscrit en
    Juillet 2011
    Messages
    167
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2011
    Messages : 167
    Points : 131
    Points
    131
    Par défaut Inclure les minuscules et les majuscules dans un SORT
    Bonjour ,

    Je dois faire un SORT INCLUDE dans un fichier pour rechercher tous les enregistrements contenant la chaîne "XXXX".

    Je code donc : "INCLUDE COND=(1,80,SS,EQ,C'XXXX ')

    Par contre , ma chaîne peut être écrite "Xxxx" , "xxxx" , "XxXx" , etc... avec bien sur toutes les combinaisons possibles.

    Vu la puissance impressionnante de SORT , je me demandais s'il existait une option lui permettant de me récupérer toutes les combinaisons de "XXXX" ?

    Si vous connaissez ce paramètre....

    Merci d'avance

    Bakounine

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

    Informations professionnelles :
    Activité : Retraité
    Secteur : Finance

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 473
    Points : 3 283
    Points
    3 283
    Par défaut
    Une solution simple avec ICETOOL :

    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
    //ICETOOL EXEC PGM=ICETOOL,REGION=1024K 
    //* copy avec selection independante de la casse 
    //TOOLMSG DD SYSOUT=* 
    //DFSMSG DD SYSOUT=* 
    //TOOLIN DD * 
     COPY FROM(INDD) TO(OUTDD) USING(CTL1) 
    //CTL1CNTL DD * 
     INREC BUILD=(1,4,TRAN=LTOU) 
     OUTFIL INCLUDE=(1,4,CH,EQ,C'XXXX') 
    //OUTDD DD SYSOUT=* 
    //INDD DD * 
    XXXX 
    xxxx 
    xxxX
    Ici la paramètre INREC BUILD convertit la chaîne de caractères en majuscules avant traitement.

    L'inconvénient de la solution, bien sûr, c'est qu'on perd la casse d'origine.

    A affiner si nécessaire ...

  3. #3
    Membre habitué
    Homme Profil pro
    Inscrit en
    Juillet 2011
    Messages
    167
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2011
    Messages : 167
    Points : 131
    Points
    131
    Par défaut
    Bonjour Luc ,

    C'est nickel-chrome ! Exactement ce que je recherchais.

    Il y a en effet la perte de la casse d'origine dans le fichier en sortie (J'ai cru un instant qu'il se permettait de changer aussi la casse dans le fichiers en entrée !) , mais dans mon cas précis , cela n'a aucune importance ...

    Merci !

    Bakounine

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

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

    Informations forums :
    Inscription : Octobre 2006
    Messages : 950
    Points : 2 064
    Points
    2 064
    Par défaut
    Bonjour
    en retard, dsl.

    Une solution alternative avec ALTSEQ. La table ALTSEQ doit être chargée avec tous les caractères de l'alaphabet, minuscules+majuscules.
    //SORT EXEC PGM=SORT
    //SYSOUT DD SYSOUT=*
    //SORTIN DD *
    OUI
    oui
    Oui
    non
    //SORTOUT DD SYSOUT=*
    //SYSIN DD *
    ALTSEQ CODE=(96D6,A4E4,89C9)
    SORT FIELDS=COPY
    INCLUDE COND=(1,3,AQ,EQ,C'OUI')

  5. #5
    Membre habitué
    Homme Profil pro
    Inscrit en
    Juillet 2011
    Messages
    167
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2011
    Messages : 167
    Points : 131
    Points
    131
    Par défaut
    Bonjour ,

    Merci Bernard pour cette deuxième solution qui offre l'avantage de conserver la casse dans le fichier en sortie.

    Par contre , elle possède un inconvénient , c'est que je ne connais pas la position exacte de ma chaîne dans le fichier en entrée , c'est pourquoi j'utilise le paramètre 'SS'.

    Existe-t-il un mixte de 'AQ' et de 'SS' ? Si oui , c'est le top !

    De toute façon , je note ces deux solutions , chacune ayant son utilité.

    Merci à vous

    Bakounine

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2014
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2014
    Messages : 7
    Points : 8
    Points
    8
    Par défaut
    Citation Envoyé par Luc Orient Voir le message
    Une solution simple avec ICETOOL :

    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
    //ICETOOL EXEC PGM=ICETOOL,REGION=1024K 
    //* copy avec selection independante de la casse 
    //TOOLMSG DD SYSOUT=* 
    //DFSMSG DD SYSOUT=* 
    //TOOLIN DD * 
     COPY FROM(INDD) TO(OUTDD) USING(CTL1) 
    //CTL1CNTL DD * 
     INREC BUILD=(1,4,TRAN=LTOU) 
     OUTFIL INCLUDE=(1,4,CH,EQ,C'XXXX') 
    //OUTDD DD SYSOUT=* 
    //INDD DD * 
    XXXX 
    xxxx 
    xxxX
    Ici la paramètre INREC BUILD convertit la chaîne de caractères en majuscules avant traitement.

    L'inconvénient de la solution, bien sûr, c'est qu'on perd la casse d'origine.

    A affiner si nécessaire ...

    Bonjour,

    met toi en edit sur ta sysin,et entre CAPS OFF en commande ispf. Ensuite insère ta chaîne de caractère avec et sans majuscules et sauvegarde ...

    une solution qui va faire rougir Luc Orient

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

    Informations professionnelles :
    Activité : Retraité
    Secteur : Finance

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 473
    Points : 3 283
    Points
    3 283
    Par défaut
    Citation Envoyé par Pioup01 Voir le message
    Bonjour,

    met toi en edit sur ta sysin,et entre CAPS OFF en commande ispf. Ensuite insère ta chaîne de caractère avec et sans majuscules et sauvegarde ...

    une solution qui va faire rougir Luc Orient
    ... euh ... pas compris là ...

  8. #8
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2014
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2014
    Messages : 7
    Points : 8
    Points
    8
    Par défaut
    Citation Envoyé par Luc Orient Voir le message
    ... euh ... pas compris là ...
    Et bien,en plus de la méthode de bernard59139, on peut construire une condition de la manière suivante (c'est pas très propre):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     INCLUDE COND=(1,80,SS,EQ,C'XXXX'),
                           OR,(1,80,SS,EQ,C'xxxx'),
                           OR,(1,80,SS,EQ,C'Xxxx'),
                           etc...
    En espérant que ta chaîne de caractères ne soit pas trop longue

  9. #9
    Membre habitué
    Homme Profil pro
    Inscrit en
    Juillet 2011
    Messages
    167
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2011
    Messages : 167
    Points : 131
    Points
    131
    Par défaut
    Bonjour ,

    Le fait de saisir toutes les possibilités de mélange majuscule/minuscule n'est pas vraiment jouable , car la chaîne qui m'intéresse fait en réalité 11 caractères , soit , si je compte bien 2048 possibilités...

    Et CAPS OFF dans un JCL , je n'aime pas du tout...

    Merci quand même , je me sert de la méthode de Luc (Et j'ai mis de coté celle de Bernard)

    Bakounine

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 22/08/2007, 12h46
  2. Réponses: 8
    Dernier message: 18/11/2006, 22h06

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