Portal | Manuals | References | Downloads | Info | Programs | JCLs | Mainframe wiki | Quick Ref

Author Message
bipinpeter

Active User

Joined: 18 Jun 2007
Posts: 213
Location: Cochin/Kerala/India

 Posted: Fri Feb 01, 2008 9:28 pm    Post subject: Combining of different records via a common key Hi All, My input file has in thsi format 1001 M1 1001 M2 1001 M3 1002 M1 1002 M4 My output file should be in the below format 1001 M1 M2 M3 1002 M1 M4 Can we do this thru SORT? Bipin Peter

Frank Yaeger

DFSORT Moderator

Joined: 15 Feb 2005
Posts: 7130
Location: San Jose, CA

 Posted: Fri Feb 01, 2008 10:35 pm    Post subject: What is the maximum possible number of occurrences of the key (e.g. 1001 has 3 occurrences - is that the maximum you expect)? What is the RECFM and LRECL of the input file?
bipinpeter

Active User

Joined: 18 Jun 2007
Posts: 213
Location: Cochin/Kerala/India

 Posted: Sat Feb 02, 2008 8:33 am    Post subject: i'm expecting maxumum 10 occurences
krisprems

Active Member

Joined: 27 Nov 2006
Posts: 649
Location: India

Posted: Sat Feb 02, 2008 11:19 am    Post subject:

Assuming the file is FB, try the below DFSORT/ICETOOL solution
 Code: //*******************************************************                //STEP001  EXEC PGM=ICETOOL                                              //TOOLMSG  DD SYSOUT=*                                                  //DFSMSG   DD SYSOUT=*                                                  //IN1      DD *                                                          ----+----1----+----2----+----3----+----4----+----5----+----6----+----7-- 1001 M0                                                                  1001 M1                                                                  1001 M2                                                                  1001 M3                                                                  1001 M4                                                                  1001 M5                                                                  1001 M6                                                                  1001 M7                                                                  1001 M8                                                                  1001 M9                                                                  1002 M1                                                                  1002 M4                                                                  1003 M4 /*                                                                      //OUT      DD SYSOUT=*                                                  //TOOLIN   DD *                                                         SPLICE FROM(IN1) TO(OUT) ON(1,4,CH) WITHEACH -                         WITH(9,3) -                                                             WITH(12,3) -                                                           WITH(15,3) -                                                           WITH(18,3) -                                                           WITH(21,3) -                                                           WITH(24,3) -                                                           WITH(27,3) -                                                           WITH(30,3) -                                                           WITH(33,3) -                                                           USING(CP01) KEEPNODUPS                                                /*                                                                      //CP01CNTL DD   *                                                        INREC  IFTHEN=(WHEN=INIT,OVERLAY=(81:SEQNUM,3,ZD,RESTART=(1,4))),             IFTHEN=(WHEN=(81,3,ZD,EQ,+2),BUILD=(1,5,9:6,3)),                       IFTHEN=(WHEN=(81,3,ZD,EQ,+3),BUILD=(1,5,12:6,3)),                       IFTHEN=(WHEN=(81,3,ZD,EQ,+4),BUILD=(1,5,15:6,3)),                       IFTHEN=(WHEN=(81,3,ZD,EQ,+5),BUILD=(1,5,18:6,3)),                       IFTHEN=(WHEN=(81,3,ZD,EQ,+6),BUILD=(1,5,21:6,3)),                       IFTHEN=(WHEN=(81,3,ZD,EQ,+7),BUILD=(1,5,24:6,3)),                       IFTHEN=(WHEN=(81,3,ZD,EQ,+8),BUILD=(1,5,27:6,3)),                       IFTHEN=(WHEN=(81,3,ZD,EQ,+9),BUILD=(1,5,30:6,3)),                       IFTHEN=(WHEN=(81,3,ZD,EQ,+10),BUILD=(1,5,33:6,3))                OUTFIL FNAMES=OUT,BUILD=(1,35)                                                    /*

OUT contains
 Code: 1001 M0 M1 M2 M3 M4 M5 M6 M7 M8 M9 1002 M1 M4                        1003 M4
Frank Yaeger

DFSORT Moderator

Joined: 15 Feb 2005
Posts: 7130
Location: San Jose, CA

Posted: Sat Feb 02, 2008 9:41 pm    Post subject:

Here's a slightly simpler version of the DFSORT/ICETOOL job:

 Code: //S1 EXEC PGM=ICETOOL //TOOLMSG  DD SYSOUT=* //DFSMSG   DD SYSOUT=* //IN1      DD * 1001 M0 1001 M1 1001 M2 1001 M3 1001 M4 1001 M5 1001 M6 1001 M7 1001 M8 1001 M9 1002 M1 1002 M4 1003 M4 /* //OUT      DD SYSOUT=* //TOOLIN   DD * SPLICE FROM(IN1) TO(OUT) ON(1,4,CH) KEEPNODUPS -  WITHEACH WITH(9,3) WITH(12,3) WITH(15,3) WITH(18,3) WITH(21,3) -  WITH(24,3) WITH(27,3) WITH(30,3) WITH(33,3) USING(CTL1) /* //CTL1CNTL DD   *   INREC IFTHEN=(WHEN=INIT,           OVERLAY=(1,8,81:SEQNUM,3,ZD,RESTART=(1,4))),     IFTHEN=(WHEN=(81,3,ZD,EQ,+2),OVERLAY=(9:6,3)),     IFTHEN=(WHEN=(81,3,ZD,EQ,+3),OVERLAY=(12:6,3)),     IFTHEN=(WHEN=(81,3,ZD,EQ,+4),OVERLAY=(15:6,3)),     IFTHEN=(WHEN=(81,3,ZD,EQ,+5),OVERLAY=(18:6,3)),     IFTHEN=(WHEN=(81,3,ZD,EQ,+6),OVERLAY=(21:6,3)),     IFTHEN=(WHEN=(81,3,ZD,EQ,+7),OVERLAY=(24:6,3)),     IFTHEN=(WHEN=(81,3,ZD,EQ,+8),OVERLAY=(27:6,3)),     IFTHEN=(WHEN=(81,3,ZD,EQ,+9),OVERLAY=(30:6,3)),     IFTHEN=(WHEN=(81,3,ZD,EQ,+10),OVERLAY=(33:6,3))   OUTFIL FNAMES=OUT,BUILD=(1,35) /*
 All times are GMT + 6 Hours
 Page 1 of 1

Search our Forum:

 Topic Author Forum Replies Posted Similar Topics MXG - Processing Compressed DB2 SMF r... vasanthz All Other Mainframe Topics 2 Thu May 10, 2018 12:47 am Extract the records with a PD field's... sudhakar84 DFSORT/ICETOOL 11 Mon Apr 02, 2018 7:26 pm Merge 2 records sancraig16 SYNCSORT 19 Tue Mar 27, 2018 8:17 pm Copy set of records based on condition krish.deepu SYNCSORT 2 Thu Mar 08, 2018 11:39 am add sequence number for duplicate rec... SRUTHI DRAVIDAMANI COBOL Programming 11 Thu Feb 22, 2018 5:37 pm

 © 2003-2017 IBM MAINFRAME Software Support Division
 Job Vacancies | Forum Rules | Bookmarks | Subscriptions | FAQ | Polls | Contact Us