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

Author Message
Mariraj

New User

Joined: 09 Jul 2007
Posts: 59
Location: Chennai

Posted: Mon May 05, 2008 2:42 pm    Post subject: Selecting some records based on few fields.

I have a file which contains 36 million records.

Sample records are shown below.

 Code: 100ABCDE2007022299999999 100ABCDE2007090499999999 101ABCDE2007091299999999 101ABCDE2007091220080715

Out of the above four records i need to select only the 3rd record.

As you can see the first 16 digits of this record is equal to the next record and the next 8 digits are different. So i want only such records whose first 16 digits are equal to the first 16 digits of next record and last 8 digits are not equal to the last 8 digits of the next record.

Please let me know how to achieve this using SORT.

rajatbagga

Active User

Joined: 11 Mar 2007
Posts: 193
Location: india

Posted: Mon May 05, 2008 6:08 pm    Post subject:

hello Mariraj,

I had understood your requrement then you can use the below JCL. if this does not works then please let us know with some examples with more then one record in the output:

 Code: //VZM1CKKN JOB (3GAHF3,R),                                            //         'RAJAT TEST',CLASS=X,MSGCLASS=Y,NOTIFY=&SYSUID              //S1      EXEC PGM=ICETOOL                                            //TOOLMSG  DD SYSOUT=*                                                //DFSMSG   DD SYSOUT=*                                                //*                                                                    //IN1      DD *                                                        100ABCDE2007022299999999                                              100ABCDE2007090499999999                                              101ABCDE2007091299999999                                              101ABCDE2007091220080715                                              /*                                                                    //T1       DD DSN=&&T1,UNIT=SYSDA,SPACE=(CYL,(5,5)),DISP=(MOD,PASS)    //OUT      DD SYSOUT=*                                                //TOOLIN   DD *                                                            SELECT FROM(IN1) TO(T1) ON(1,16,CH) FIRST                              SELECT FROM(T1) TO(OUT) ON(17,8,CH) LAST                          /*
Skolusu

Senior Member

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

Posted: Mon May 05, 2008 11:34 pm    Post subject:

Mariraj,

Do you always have just 2 records for every key on the first 16 bytes or can you have more than that? if you have more than 2 keys how do u compare ? Also what is the LRECL and RECFM of the input dataset?

rajatbagga,

Your JCL will NOT give you the desired results as u are considering only FIRST of every record which would eliminate the 2nd record to be checked and your next select is only checking for the 8 bytes on ALL records. It should be checking based on the KEY in the first 16 bytes.

Try running your job with the following Data. Change the 1st record

 Code: 100ABCDE2007022277777777 100ABCDE2007090499999999 101ABCDE2007091299999999 101ABCDE2007091220080715

and you will see that you got 2 records in the output.
 All times are GMT + 6 Hours
 Page 1 of 1

Search our Forum:

 Topic Author Forum Replies Posted Similar Topics BUILD OUTFIL based on condition other... balaji81_k DFSORT/ICETOOL 13 Fri Sep 08, 2017 11:06 pm Selecting two copybooks of different ... Vignesh Sid COBOL Programming 8 Tue Sep 05, 2017 7:28 pm Join records from 2 files with No Dup... Poha Eater DFSORT/ICETOOL 21 Sun Aug 27, 2017 10:35 pm How do you create Eclipse based dialogs jasorn IBM Tools 0 Thu Aug 03, 2017 5:05 pm Split file based on comparsion to 2 f... Div Grad DFSORT/ICETOOL 3 Thu Jul 27, 2017 9:16 pm

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