IBM Mainframe Forum Index
 
Log In
 
IBM Mainframe Forum Index Mainframe: Search IBM Mainframe Forum: FAQ Register
 

How to add field from header record to detail records


IBM Mainframe Forums -> DFSORT/ICETOOL
Post new topic   Reply to topic
View previous topic :: View next topic  
Author Message
tuxama

New User


Joined: 25 Jan 2007
Posts: 42
Location: france

PostPosted: Tue Jan 22, 2008 6:23 pm
Reply with quote

Hello,

I have a problem and I don't know how to solve it with ICETOOL.

I have a fixed input file (lrecl=80) that contains groups of records each of which has a header
record, detail records. Here's an example of the input file:

Code:

LNSCACON 159100489  00000001         
LNSCAGAR 110S       00000001  00000001
LNSCAGAR 190S       00000001  00000002
LNSCACON 192064012  00000002         
LNSCAGAR 130TC      00000002  00000003
LNSCAGAR 199TC      00000002  00000004
LNSCACON 192068606  00000003         
LNSCAGAR 110S       00000003  00000005
LNSCAGAR 130S       00000003  00000006
LNSCAGAR 190S       00000003  00000007
LNSCAGAR 199S       00000003  00000008


The header record is identified by 'LNSCACON' all other records are detail records and are identified by 'LNSCAGAR'.
After a first ICETOOLS my input file is sorted by groups.

What I need, is to add an information from header record to detail records :

Code:

LNSCACON 159100489  00000001         
LNSCAGAR 110S       00000001  00000001  159100489
LNSCAGAR 190S       00000001  00000002  159100489
LNSCACON 192064012  00000002         
LNSCAGAR 130TC      00000002  00000003  192064012
LNSCAGAR 199TC      00000002  00000004  192064012
LNSCACON 192068606  00000003         
LNSCAGAR 110S       00000003  00000005  192068606
LNSCAGAR 130S       00000003  00000006  192068606
LNSCAGAR 190S       00000003  00000007  192068606
LNSCAGAR 199S       00000003  00000008  192068606


This is not a problem if the added information is also added to the header record.

Code:

LNSCACON 159100489  00000001            159100489
LNSCAGAR 110S       00000001  00000001  159100489
LNSCAGAR 190S       00000001  00000002  159100489
LNSCACON 192064012  00000002            192064012
LNSCAGAR 130TC      00000002  00000003  192064012
LNSCAGAR 199TC      00000002  00000004  192064012
LNSCACON 192068606  00000003            192068606
LNSCAGAR 110S       00000003  00000005  192068606
LNSCAGAR 130S       00000003  00000006  192068606
LNSCAGAR 190S       00000003  00000007  192068606
LNSCAGAR 199S       00000003  00000008  192068606


An idea ?


For informations

How I sorted by groups ?

Code:

//TOOLIN DD *
 COPY FROM(FUNLOAD) TO(TMPA) USING(CTL1)   
 COPY FROM(TMPA) TO(TMPB) USING(CTL2)       
                                           
 SELECT FROM(TMPB) TO(TMPC) ON(10,19,CH) - 
        NODUPS DISCARD(DUPS) USING(CTL3)   

//CTL1CNTL DD *
 INCLUDE COND=(11,8,CH,EQ,C'LNSCACON',OR,11,8,CH,EQ,C'LNSCAGAR')
 OUTFIL FNAMES=TMPA,OUTREC=(5,80),VTOF                         
 INREC  IFTHEN=(WHEN=(11,8,CH,EQ,C'LNSCACON'),                 
           BUILD=(1,4,11,8,1X,52,10)),                         
        IFTHEN=(WHEN=(11,8,CH,EQ,C'LNSCAGAR'),                 
           BUILD=(1,4,11,8,1X,52,5))                           

//CTL2CNTL DD *
 INREC  IFTHEN=(WHEN=INIT,                               
           OVERLAY=(21:SEQNUM,8,ZD)),                   
        IFTHEN=(WHEN=(1,8,CH,EQ,C'LNSCACON'),           
           BUILD=(1,20,21:SEQNUM,8,ZD)),                 
        IFTHEN=(WHEN=NONE,                               
           OVERLAY=(31:SEQNUM,8,ZD,                     
                    21:21,8,ZD,SUB,31,8,ZD,M11,LENGTH=8))

//CTL3CNTL DD *
 INCLUDE COND=(1,8,CH,EQ,C'LNSCAGAR')


FUNLOAD INPUT FILE
Code:

LNSCACON 159100489 
LNSCAGAR 110S       
LNSCAGAR 190S       
LNSCACON 192064012 
LNSCAGAR 130TC     
LNSCAGAR 199TC     
LNSCACON 192068606 
LNSCAGAR 110S       
LNSCAGAR 130S       
LNSCAGAR 190S       
LNSCAGAR 199S
Back to top
View user's profile Send private message
Skolusu

Senior Member


Joined: 07 Dec 2007
Posts: 2205
Location: San Jose

PostPosted: Tue Jan 22, 2008 10:29 pm
Reply with quote

The following DFSORT/ICETOOL JCL will give you the desired results

Code:

//STEP0100 EXEC PGM=ICETOOL                           
//TOOLMSG  DD SYSOUT=*                               
//DFSMSG   DD SYSOUT=*                               
//IN       DD *                                       
LNSCACON 159100489  00000001                         
LNSCAGAR 110S       00000001  00000001               
LNSCAGAR 190S       00000001  00000002               
LNSCACON 192064012  00000002                         
LNSCAGAR 130TC      00000002  00000003               
LNSCAGAR 199TC      00000002  00000004               
LNSCACON 192068606  00000003                         
LNSCAGAR 110S       00000003  00000005               
LNSCAGAR 130S       00000003  00000006               
LNSCAGAR 190S       00000003  00000007               
LNSCAGAR 199S       00000003  00000008               
//OUT      DD SYSOUT=*                               
//TOOLIN    DD *                                     
  SPLICE FROM(IN) TO(OUT)   -                         
  ON(81,08,CH) WITH(01,80)  -                         
  KEEPBASE WITHALL USING(CTL1)                       
//CTL1CNTL     DD *                                   
  INREC IFTHEN=(WHEN=INIT,                           
       OVERLAY=(81:SEQNUM,8,ZD)),                     
        IFTHEN=(WHEN=(1,8,CH,EQ,C'LNSCACON'),         
       OVERLAY=(81:SEQNUM,8,ZD,10,10)),               
        IFTHEN=(WHEN=NONE,                           
       OVERLAY=(89:SEQNUM,8,ZD,                       
                81:81,8,ZD,SUB,89,8,ZD,M11,LENGTH=8))
  OUTFIL FNAMES=OUT,                                 
        IFOUTLEN=80,                                 
        IFTHEN=(WHEN=(1,8,CH,NE,C'LNSCACON'),         
       OVERLAY=(40:89,10))                           
/*                                                   
Back to top
View user's profile Send private message
tuxama

New User


Joined: 25 Jan 2007
Posts: 42
Location: france

PostPosted: Tue Jan 22, 2008 10:51 pm
Reply with quote

Really thanksSkolusu.
It is exactly what I needed.
Back to top
View user's profile Send private message
View previous topic :: :: View next topic  
Post new topic   Reply to topic View Bookmarks
All times are GMT + 6 Hours
Forum Index -> DFSORT/ICETOOL

 


Similar Topics
Topic Forum Replies
No new posts Compare 2 files and retrive records f... DFSORT/ICETOOL 3
No new posts Compare 2 files(F1 & F2) and writ... JCL & VSAM 8
No new posts How to split large record length file... DFSORT/ICETOOL 10
No new posts SFTP Issue - destination file record ... All Other Mainframe Topics 2
No new posts FINDREP - Only first record from give... DFSORT/ICETOOL 3
Search our Forums:

Back to Top