Bonjour,

Je me lance "finalement" dans l'utilisation de SORT/DFSORT.

Je suis plongé dans la doc IBM (cf les liens à la fin), et ce topic... et je dois avouer que cela m'a beaucoup aidé pour le moment.

Cependant, quand je fais un SORT en mode COPY, tout va bien (extraction des lignes prévues dans l'INCLUDE)...
...mais si j'utilise un SORT FIELDS puis un INREC (ou un OUTREC) : le OUTREC/INREC sera appliqué, mais 1 seule ligne passe en sortie !
Est-ce moi qui ne sait toujours pas m'en servir ?

Voici les 2 steps :

La première étape qui fonctionne (juste avant je fais un SDSF avec quelques commandes pour extraire des lignes, puis ce step m'extrait les quelques lignes intéressantes):
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
//CATGREP  EXEC PGM=SORT                         
//SYSOUT   DD SYSOUT=*                           
//SORTOUT  DD DSN=&FILE2,                        
//            DCB=(RECFM=FB,LRECL=80,BLKSIZE=80),
//            SPACE=(TRK,(1,1),RLSE),            
//            DISP=(NEW,CATLG,DELETE)            
//SORTIN   DD DSN=&FILE1,                        
//            DISP=(MOD,DELETE,DELETE)           
//SYSIN    DD *                                  
 SORT FIELDS=COPY                                
 INCLUDE COND=(1,80,SS,EQ,C'TEST')                
/*
La 2e étape qui ne sort qu'une ligne (l'alignement est correct, mais je n'ai qu'une seule ligne qui "passe" ce step !):
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
//CUTPASTE EXEC PGM=SORT                                    
//SYSOUT   DD SYSOUT=*                                      
//SORTOUT  DD DSN=&FILE1,                                   
//            DCB=(RECFM=FB,LRECL=80,BLKSIZE=80),           
//            SPACE=(TRK,(1,1),RLSE),                       
//            DISP=(NEW,CATLG,DELETE)                       
//SORTIN   DD DSN=&FILE2,                                   
//            DISP=(MOD,DELETE,DELETE)                      
//SYSIN    DD *                                             
 SORT FIELDS=(8,7,CH,A)                                     
 INREC FIELDS=(1:8,7,9:26,7,17:35,8,26:44,4,31:51,6,38:62,6)
/*
Je ne comprends pas trop quoi faire...
J'ai vu le SUM FIELDS, mais celui-ci va retirer des doublons... si je ne veux pas le faire que dois-je faire ?
J'ai aussi regardé quelques tutoriels mais ils m'apprennent d'autres choses que ce que je cherche ! ^^'
(je passerai aux conditions après)

EDIT : je suis trop bête... ça fonctionne...
Comme j'envoyais sous forme de mail le résultat... il y avait des tas de caractères illisibles.
En ajoutant un OUTREC sur le 2e step avec des X ça passe :


Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
//SYSIN    DD *                                             
 INREC FIELDS=(1:8,7,9:26,7,17:35,8,26:44,4,31:51,6,38:62,6)
 OUTREC FIELDS=(1:1,43,47X)                                 
 SORT FIELDS=(1,7,CH,A)



****************

Les liens IBM que j'ai utilisé :
Reformatting Records Before Processing — Examples
Reformatting Records After Processing — Examples
OUTREC
SORT Control Statement