Page 1 of 1

Group multiple headers into one header

Posted: Wed Nov 05, 2014 11:30 pm
by zigbee
Hi,
I am seeking help on how to use DFSORT/ICETOOL on a weird requirement. Below is the input file

H00000015511
D00000015511 XXXXXXXXXXXXX1
D00000015511 XXXXXXXXXXXXX2
D00000015511 XXXXXXXXXXXXX3
D00000015511 XXXXXXXXXXXXX4
D00000015511 XXXXXXXXXXXXX5
H00000012222
D00000012222 XXXXXXXXXXXXX1
D00000012222 XXXXXXXXXXXXX2
D00000012222 XXXXXXXXXXXXX3
H00000015511
D00000015511 XXXXXXXXXXXXX6
H00000012222
D00000012222 XXXXXXXXXXXXX4
H00000014444
D00000014444 XXXXXXXXXXXXX1
H00000012222
D00000012222 XXXXXXXXXXXXX5

Required output

H00000015511
D00000015511 XXXXXXXXXXXXX1
D00000015511 XXXXXXXXXXXXX2
D00000015511 XXXXXXXXXXXXX3
D00000015511 XXXXXXXXXXXXX4
D00000015511 XXXXXXXXXXXXX5
D00000015511 XXXXXXXXXXXXX6
H00000012222
D00000012222 XXXXXXXXXXXXX1
D00000012222 XXXXXXXXXXXXX2
D00000012222 XXXXXXXXXXXXX3
D00000012222 XXXXXXXXXXXXX4
D00000012222 XXXXXXXXXXXXX5
H00000014444
D00000014444 XXXXXXXXXXXXX1

The 11 bytes after the header are not constant, they will vary.
Thanks for your help.

Posted: Thu Nov 06, 2014 7:35 pm
by Gurugars
Hi zigbee,

Welcome to the forum.

If the recoders starting with H (header record) can be re-ordered by ascending/descending, below solution is the easiest one you could find. Please ignore my suggestion if the order of the H record shouldn't be altered.

Sort card:

Code: Select all

----+----1----+----2----+----3----+----4
//SORT     EXEC PGM=SORT,COND=(4,LE)    
//SORTIN   DD  *                        
H00000015511                            
D00000015511 XXXXXXXXXXXXX1             
D00000015511 XXXXXXXXXXXXX2             
D00000015511 XXXXXXXXXXXXX3             
D00000015511 XXXXXXXXXXXXX4             
D00000015511 XXXXXXXXXXXXX5             
H00000012222                            
D00000012222 XXXXXXXXXXXXX1             
D00000012222 XXXXXXXXXXXXX2             
D00000012222 XXXXXXXXXXXXX3             
H00000015511                            
D00000015511 XXXXXXXXXXXXX6             
H00000012222                            
D00000012222 XXXXXXXXXXXXX4             
H00000014444                            
D00000014444 XXXXXXXXXXXXX1             
H00000012222                 
D00000012222 XXXXXXXXXXXXX5  
//SORTOUT  DD  SYSOUT=*      
//SYSIN    DD  *             
  SORT FIELDS=(2,26,CH,A)    
  SUM FIELDS=NONE            
/*                           
//SYSOUT   DD  SYSOUT=*      

SORTOUT:

Code: Select all

H00000012222               
D00000012222 XXXXXXXXXXXXX1
D00000012222 XXXXXXXXXXXXX2
D00000012222 XXXXXXXXXXXXX3
D00000012222 XXXXXXXXXXXXX4
D00000012222 XXXXXXXXXXXXX5
H00000014444               
D00000014444 XXXXXXXXXXXXX1
H00000015511               
D00000015511 XXXXXXXXXXXXX1
D00000015511 XXXXXXXXXXXXX2
D00000015511 XXXXXXXXXXXXX3
D00000015511 XXXXXXXXXXXXX4
D00000015511 XXXXXXXXXXXXX5
D00000015511 XXXXXXXXXXXXX6

Posted: Fri Nov 07, 2014 12:59 am
by William Collins
We need more information. You are going to have to SORT to get records together. Do you want the output file in the sequence of the original input? Does it matter which header is retained? Does it matter the order of the detail records within the header?

Posted: Tue Dec 09, 2014 9:21 am
by Terrymusicy
We are very pleased to have come into the web of it.