Précédent   Forum du club des développeurs et IT Pro > Systèmes > Autres systèmes > z/OS
z/OS Forum d'entraide sur z/OS et MVS (Multiple Virtual Storage), les systèmes d'exploitation des ordinateurs « mainframes » IBM : JCL, Tso, Ispf, Vsam, Racf, SMS, Cics, Ims, OPC, Ca-7, Control-M, Dialog Manager ...
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 07/11/2012, 09h24   #1
Antichoc
Membre habitué
 
Inscription : janvier 2003
Messages : 279
Détails du profil
Informations personnelles :
Âge : 32
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations forums :
Inscription : janvier 2003
Messages : 279
Points : 115
Points : 115
Envoyer un message via ICQ à Antichoc Envoyer un message via MSN à Antichoc
Par défaut Include Cond et TAG

Salut à vous

J'ai une interrogation sur l'utilisation d'INCLUDE COND dans un SORT.

Je souhaites filtrer un fichier pour ne conserver que certaines valeurs dans une zone bien précise mais en fonction de la valeur filtrée, je souhaites ajouter un TAG en fin de fichier (OUTREC). Exemple

Code :
1
2
3
4
5
6
7
8
XXX VALA XXX
XXX VALA XXX
XXX VALB XXX
XXX VALA XXX
XXX VALB XXX
XXX VALB XXX
XXX VALC XXX
XXX VALB XXX
Je souhaites filtrer uniquement les VALA et VALB et obtenir :

Code :
1
2
3
4
5
6
7
XXX VALA XXX NOMA
XXX VALA XXX NOMA
XXX VALB XXX NOMB
XXX VALA XXX NOMA
XXX VALB XXX NOMB
XXX VALB XXX NOMB
XXX VALB XXX NOMB
Savez vous comment je peux m'y prendre ?
__________________
« Ne me faites pas d'objections.
Les difficultés en feront assez d'elles-mêmes. »

sir Winston Churchill
Antichoc est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 07/11/2012, 14h47   #2
Luc Orient
Membre Expert

 
Homme François Durand
Spécialiste Delivery Mainframe IBM
Inscription : octobre 2005
Messages : 1 165
Détails du profil
Informations personnelles :
Nom : Homme François Durand
Âge : 54
Localisation : France, Seine Saint Denis (Île de France)

Informations professionnelles :
Activité : Spécialiste Delivery Mainframe IBM
Secteur : Finance

Informations forums :
Inscription : octobre 2005
Messages : 1 165
Points : 1 975
Points : 1 975
Je suggère une combinaison avec OUTFIL/IFTHEN et INCLUDE ...

Soit (exemple testé) :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
//SORT EXEC PGM=SORT 
//* RESTRUCTURATION SELECTIVE ET SELECTION 
//SYSOUT DD SYSOUT=* 
//SYSIN DD * 
 OPTION COPY 
 OUTFIL IFTHEN=(WHEN=(5,4,CH,EQ,C'VALA'), 
         BUILD=(1,12,C' NOMA')), 
        IFTHEN=(WHEN=(5,4,CH,EQ,C'VALB'), 
         BUILD=(1,12,C' NOMB')) 
 INCLUDE COND=(5,4,CH,EQ,C'VALA',OR,5,4,CH,EQ,C'VALB') 
//SORTOUT DD SYSOUT=* 
//SORTIN DD * 
XXX VALA XXX 
XXX VALA XXX 
XXX VALB XXX 
XXX VALA XXX 
XXX VALB XXX 
XXX VALB XXX 
XXX VALC XXX 
XXX VALB XXX
Luc Orient est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 07/11/2012, 15h28   #3
Antichoc
Membre habitué
 
Inscription : janvier 2003
Messages : 279
Détails du profil
Informations personnelles :
Âge : 32
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations forums :
Inscription : janvier 2003
Messages : 279
Points : 115
Points : 115
Envoyer un message via ICQ à Antichoc Envoyer un message via MSN à Antichoc
Merci beaucoup, je vais réfléchir à cette solution car j'ai beaucoup de VAL* mais c'est un bon départ ...
__________________
« Ne me faites pas d'objections.
Les difficultés en feront assez d'elles-mêmes. »

sir Winston Churchill
Antichoc est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 07/11/2012, 17h53   #4
Antichoc
Membre habitué
 
Inscription : janvier 2003
Messages : 279
Détails du profil
Informations personnelles :
Âge : 32
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations forums :
Inscription : janvier 2003
Messages : 279
Points : 115
Points : 115
Envoyer un message via ICQ à Antichoc Envoyer un message via MSN à Antichoc
J'ai réalisé une ébauche mais j'ai toujours ce message :

Code :
WER001A  COL 1 OR 1-15 NOT BLANK
Voici ma SYSIN :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
OPTION COPY                                                               
OUTFIL IFTHEN=(WHEN=(1,8,CH,EQ,C'JOBNAME '),BUILD=(1,137,10X)),           
       IFTHEN=(WHEN=(1,8,CH,EQ,C'AAAAAAAA'),BUILD=(1,137,C' VALA      ')),
       IFTHEN=(WHEN=(1,8,CH,EQ,C'BBBBBBBB'),BUILD=(1,137,C' VALB      ')),
             *                                                            
       IFTHEN=(WHEN=(1,8,CH,EQ,C'CCCCCCCC'),BUILD=(1,137,C' VALC      ')),
       *                                                                  
       IFTHEN=(WHEN=(1,8,CH,EQ,C'DDDDDDDD'),BUILD=(1,137,C' VALD      '))
INCLUDE COND=(1,8,CH,EQ,C'JOBNAME ',OR,
              1,8,CH,EQ,C'AAAAAAAA',OR,
              1,8,CH,EQ,C'BBBBBBBB',OR,
              1,8,CH,EQ,C'CCCCCCCC',OR,
              1,8,CH,EQ,C'DDDDDDDD')

WER001A  COL 1 OR 1-15 NOT BLANK                   
WER275A  NO KEYWORDS FOUND ON CONTROL STATEMENT    
WER211B  SYNCSMF  CALLED BY SYNCSORT; RC=0000      
WER449I  SYNCSORT GLOBAL DSM SUBSYSTEM ACTIVE
Savez vous pourquoi ? Je ne trouve pas de doc claires ...
__________________
« Ne me faites pas d'objections.
Les difficultés en feront assez d'elles-mêmes. »

sir Winston Churchill
Antichoc est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 07/11/2012, 18h16   #5
Luc Orient
Membre Expert

 
Homme François Durand
Spécialiste Delivery Mainframe IBM
Inscription : octobre 2005
Messages : 1 165
Détails du profil
Informations personnelles :
Nom : Homme François Durand
Âge : 54
Localisation : France, Seine Saint Denis (Île de France)

Informations professionnelles :
Activité : Spécialiste Delivery Mainframe IBM
Secteur : Finance

Informations forums :
Inscription : octobre 2005
Messages : 1 165
Points : 1 975
Points : 1 975
Aie ... semble-t-il, c'est SYNCSORT que tu utilises ("l'autre" tri) ... moi je t'ai donné une solution à base de DFSORT (le tri "standard" d'IBM) ... là je ne peux plus t'aider ...
Luc Orient est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 07/11/2012, 19h17   #6
bernard59139
Membre émérite
 
Avatar de bernard59139
 
Administrateur de base de données
Inscription : octobre 2006
Messages : 605
Détails du profil
Informations personnelles :
Localisation : France

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

Informations forums :
Inscription : octobre 2006
Messages : 605
Points : 907
Points : 907
3 choses:
  1. syncsort respecte (et doit) respecter la syntaxe DFSORT
  2. en sysin, la colonne 1 doit être à blanc (sauf cas particulier=
    ce qui n'est pas le cas dans ton exemple
  3. toujours en sysin, ne jamais dépasser la colonne 71, sauf à mettre en 72 un caractère de "continuation à la ligne suivante".
    dans ton exemple, des lignes font 75c.
bernard59139 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 08/11/2012, 08h43   #7
Antichoc
Membre habitué
 
Inscription : janvier 2003
Messages : 279
Détails du profil
Informations personnelles :
Âge : 32
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations forums :
Inscription : janvier 2003
Messages : 279
Points : 115
Points : 115
Envoyer un message via ICQ à Antichoc Envoyer un message via MSN à Antichoc
OK merci pour vos précisions respectives.

Ma SYSIN est générée en amont par les STEP précédent mais je suis confronté à un autre problème.

Pour générer mes OUTFIL, j'utilise un JCL avec OUTREC sur un fichier en entrée contenant mes valeurs mais je ne sais pas comment générer deux lignes pour un même enregistrement en entrée pour avoir ma commande OUTFIL sur deux lignes ... ceci afin de ne pas dépasser la colonne 72 !

Je fais un premier STEP comme ceci

Code :
1
2
OPTION COPY                                                         
OUTREC FIELDS=(C'        IFTHEN=(WHEN=(1,8,CH,EQ,C''',1,8,10,10,28X)
Puis avec le premier fichier généré, je passe ce second STEP :

Code :
1
2
OPTION COPY                                                         
OUTREC FIELDS=(1,42,C'''),BUILD=(1,137,C'' ',43,10,C''')),',5X)
Est-il possible pour chaque enregistrement de générer deux lignes comme ceci :

Code :
1
2
          IFTHEN=(WHEN=(1,8,CH,EQ,C'DDDDDDDD'),
          BUILD=(1,137,C' VALD      '))
PS : je n'ai pas reporté sur mon exemple mais la première colonne est bien vide...
__________________
« Ne me faites pas d'objections.
Les difficultés en feront assez d'elles-mêmes. »

sir Winston Churchill
Antichoc est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 08/11/2012, 14h12   #8
Antichoc
Membre habitué
 
Inscription : janvier 2003
Messages : 279
Détails du profil
Informations personnelles :
Âge : 32
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations forums :
Inscription : janvier 2003
Messages : 279
Points : 115
Points : 115
Envoyer un message via ICQ à Antichoc Envoyer un message via MSN à Antichoc
Trouvé !

J'ai utilisé ceci :

Code :
OUTFIL BUILD=(1,45,35X,/,7X,46,29,43X)
__________________
« Ne me faites pas d'objections.
Les difficultés en feront assez d'elles-mêmes. »

sir Winston Churchill
Antichoc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/11/2012, 14h47   #9
Luc Orient
Membre Expert

 
Homme François Durand
Spécialiste Delivery Mainframe IBM
Inscription : octobre 2005
Messages : 1 165
Détails du profil
Informations personnelles :
Nom : Homme François Durand
Âge : 54
Localisation : France, Seine Saint Denis (Île de France)

Informations professionnelles :
Activité : Spécialiste Delivery Mainframe IBM
Secteur : Finance

Informations forums :
Inscription : octobre 2005
Messages : 1 165
Points : 1 975
Points : 1 975
Du SORT qui génère du SORT ... moi je dis c'est beau ...
Luc Orient est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 11/11/2012, 21h07   #10
Skylyn
Membre habitué
 
Homme Julien Guiffroy
Ingénieur d'étude Mainframe
Inscription : septembre 2012
Messages : 61
Détails du profil
Informations personnelles :
Nom : Homme Julien Guiffroy
Âge : 27
Localisation : France, Nord (Nord Pas de Calais)

Informations professionnelles :
Activité : Ingénieur d'étude Mainframe
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : septembre 2012
Messages : 61
Points : 113
Points : 113
Citation:
Envoyé par Luc Orient Voir le message
Du SORT qui génère du SORT ... moi je dis c'est beau ...
En effet... C'est comme compter le nombre d'enregs en récursif
Skylyn est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 13/11/2012, 21h50   #11
Antichoc
Membre habitué
 
Inscription : janvier 2003
Messages : 279
Détails du profil
Informations personnelles :
Âge : 32
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations forums :
Inscription : janvier 2003
Messages : 279
Points : 115
Points : 115
Envoyer un message via ICQ à Antichoc Envoyer un message via MSN à Antichoc
Oui mais ça marche ... j'ai une SYSIN dynamique en fonction d'une liste de valeur d'un fichier en entrée ...

A moins que vous ayez une meilleurs solution !
__________________
« Ne me faites pas d'objections.
Les difficultés en feront assez d'elles-mêmes. »

sir Winston Churchill
Antichoc est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 13/11/2012, 22h12   #12
Luc Orient
Membre Expert

 
Homme François Durand
Spécialiste Delivery Mainframe IBM
Inscription : octobre 2005
Messages : 1 165
Détails du profil
Informations personnelles :
Nom : Homme François Durand
Âge : 54
Localisation : France, Seine Saint Denis (Île de France)

Informations professionnelles :
Activité : Spécialiste Delivery Mainframe IBM
Secteur : Finance

Informations forums :
Inscription : octobre 2005
Messages : 1 165
Points : 1 975
Points : 1 975
Citation:
Envoyé par Antichoc Voir le message
Oui mais ça marche ... j'ai une SYSIN dynamique en fonction d'une liste de valeur d'un fichier en entrée ...

A moins que vous ayez une meilleurs solution !
Pas de meilleure solution ... Mon propos n'est nullement négatif car je trouve la solution plutôt originale voire élégante ... Quand j'étais DBA DB2, il m'arrivait parfois d'écrire du SQL qui générait du SQL et c'était très pratique ...

Et puis, l'important est que tu as trouvé la solution qui résout ton problème.
Luc Orient est déconnecté   Envoyer un message privé Réponse avec citation 10
Réponse Cette discussion est résolue.
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 05h52.


 
 
 
 
Partenaires

Hébergement Web