Portal | Manuals | References | Downloads | Info | Programs | JCLs | Master the Mainframes
IBM Mainframe Computers Forums Index
 
Register
 
IBM Mainframe Computers Forums Index Mainframe: Search IBM Mainframe Forum: FAQ Memberlist Usergroups Profile Log in to check your private messages Log in
 

 

Sort to retain the first record

 
Post new topic   Reply to topic    IBMMAINFRAMES.com Support Forums -> DFSORT/ICETOOL
View previous topic :: :: View next topic  
Author Message
Pandora-Box

Moderator


Joined: 07 Sep 2006
Posts: 1534
Location: Andromeda Galaxy

PostPosted: Thu Oct 01, 2009 6:56 pm    Post subject: Sort to retain the first record
Reply with quote

Hi,

I have one file where there are duplicates and my requirement is to retain the first occurance of the key value

So I tried to do some research on the same and faced strange problem

Code:

//STEP010  EXEC PGM=SORT                                               
//*                                                                     
//SORTIN   DD *                                                         
AAA 123                                                                 
AAA 000                                                                 
AAA 456                                                                 
AAA 764                                                                 
BBB 222                                                                 
BBB AAA                                                                 
BBB 000                                                                 
CCC AAA                                                                 
CCC 000                                                                 
CCC 333                                                                 
//SORTOUT  DD SYSOUT=*                                                 
//SYSOUT   DD SYSOUT=*                                                 
//*                                                                     
//SYSIN    DD *                                                         
  SORT FIELDS=(1,3,CH,A)                                               
//*                                                                   


This gave me result

Code:

AAA 123
AAA 000
AAA 456
AAA 764
BBB 222
BBB AAA
BBB 000
CCC AAA
CCC 000
CCC 333


Adding sum fileds

Code:

//*                                                 
//STEP010  EXEC PGM=SORT                             
//*                                                 
//SORTIN   DD *                                     
AAA 123                                             
AAA 000                                             
AAA 456                                             
AAA 764                                             
BBB 222                                             
BBB AAA                                             
BBB 000                                             
CCC AAA                                             
CCC 000                                             
CCC 333                                             
//SORTOUT  DD SYSOUT=*                               
//SYSOUT   DD SYSOUT=*                               
//*                                                 
//SYSIN    DD *                                     
  SORT FIELDS=(1,3,CH,A)                             
  SUM FIELDS=NONE                                   
//*                                                 


The output was

Code:

AAA 123
BBB 222
CCC AAA


After rearranging the input

Code:

//STEP010  EXEC PGM=SORT                     
//*                                           
//SORTIN   DD *                               
AAA 000                                       
AAA 764                                       
BBB 222                                       
AAA 123                                       
AAA 456                                       
CCC AAA                                       
BBB 000                                       
CCC 000                                       
BBB AAA                                       
CCC 333                                       
//SORTOUT  DD SYSOUT=*                       
//SYSOUT   DD SYSOUT=*                       
//*                                           
//SYSIN    DD *                               
  SORT FIELDS=(1,3,CH,A)                     
//*                                           




Output is

Code:

AAA 123
AAA 000
AAA 764
AAA 456
BBB 000
BBB 222
BBB AAA
CCC 333
CCC 000
CCC AAA


Adding sum fileds



Code:


//SORTIN   DD *                 
AAA 000                         
AAA 764                         
BBB 222                         
AAA 123                         
AAA 456                         
CCC AAA                         
BBB 000                         
CCC 000                         
BBB AAA                         
CCC 333                         
//SORTOUT  DD SYSOUT=*           
//SYSOUT   DD SYSOUT=*           
//*                             
//SYSIN    DD *                 
  SORT FIELDS=(1,3,CH,A)         
  SUM FIELDS=NONE               
//*                             



Output is

Code:


AAA 123
BBB 000
CCC 333



Why is it working differently and how would I achieve my requirement without using ICETOOL's SELECT statement ?

Thanks in advance.
Back to top
View user's profile Send private message

expat

Global Moderator


Joined: 14 Mar 2007
Posts: 8593
Location: Back in jolly old England

PostPosted: Thu Oct 01, 2009 7:08 pm    Post subject:
Reply with quote

Try
Code:

//SYSIN    DD *
  SORT FIELDS=(1,3,CH,A),EQUAL 
  SUM FIELDS=NONE
//*


It may be EQUALS, I can not recall for definite. Just another sign of old age icon_lol.gif
Back to top
View user's profile Send private message
Pandora-Box

Moderator


Joined: 07 Sep 2006
Posts: 1534
Location: Andromeda Galaxy

PostPosted: Thu Oct 01, 2009 7:35 pm    Post subject:
Reply with quote

Great Expat.It worked thanks icon_biggrin.gif

Code:


//SYSIN    DD *                           
  SORT FIELDS=(1,3,CH,A),EQUALS           
  SUM FIELDS=NONE                         
//*                                       

Back to top
View user's profile Send private message
Frank Yaeger

DFSORT Moderator


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

PostPosted: Thu Oct 01, 2009 9:57 pm    Post subject:
Reply with quote

Alternatively, you can use this DFSORT/ICETOOL job:

Code:

//S1   EXEC  PGM=ICETOOL                               
//TOOLMSG   DD  SYSOUT=*                               
//DFSMSG    DD  SYSOUT=*                               
//IN DD *                                             
AAA 123                                               
AAA 000                                               
AAA 456                                               
AAA 764                                               
BBB 222                                               
BBB AAA                                               
BBB 000                                               
CCC AAA                                               
CCC 000                                               
CCC 333                                               
//OUT DD SYSOUT=*                                     
//TOOLIN DD *                                         
SELECT FROM(IN) TO(OUT) ON(1,3,CH) FIRST               


ICETOOL takes care of setting EQUALS on automatically.

If you're not familiar with DFSORT and DFSORT's ICETOOL, I'd suggest reading through "z/OS DFSORT: Getting Started". It's an excellent tutorial, with lots of examples, that will show you how to use DFSORT, DFSORT's ICETOOL and DFSORT Symbols. You can access it online, along with all of the other DFSORT books, from:

http://www.ibm.com/support/docview.wss?rs=114&uid=isg3T7000080
Back to top
View user's profile Send private message
Pandora-Box

Moderator


Joined: 07 Sep 2006
Posts: 1534
Location: Andromeda Galaxy

PostPosted: Fri Oct 02, 2009 11:30 am    Post subject:
Reply with quote

Thanks Frank I knew this ICETOOL option already but my requirement was particular for someother option than ICETOOL.
Back to top
View user's profile Send private message
View previous topic :: :: View next topic  
Post new topic   Reply to topic    IBMMAINFRAMES.com Support Forums -> DFSORT/ICETOOL All times are GMT + 6 Hours
Page 1 of 1

 

Search our Forum:

Similar Topics
Topic Author Forum Replies Posted
No new posts Record Not found in AlX but record re... mukun264 COBOL Programming 7 Fri Mar 24, 2017 9:28 am
No new posts Count the length of the record & ... sreekusr DFSORT/ICETOOL 4 Thu Mar 23, 2017 7:52 pm
No new posts Innovations in Your Mainframe Sort Arun Raj PC Guides & IT News 4 Wed Mar 15, 2017 10:38 pm
No new posts SORT VSAM file with each field one by... maxsubrat DFSORT/ICETOOL 6 Tue Mar 14, 2017 1:07 pm
No new posts SORT requirement sjiraga COBOL Programming 6 Thu Mar 09, 2017 9:11 pm


Facebook
Back to Top
 
Mainframe Wiki | Forum Rules | Bookmarks | Subscriptions | FAQ | Tutorials | Contact Us