## Sorting twice in same card

In this Mainframe Forum - You can post your queries on DFSORT, ICETOOL , SyncSort & JCL Utilities

Moderators: Frank Yaeger, Moderator Group

Captain Nero
Member
Posts: 10
Joined: Fri Jun 20, 2008 4:21 pm
Location: Kolkata, India

### Sorting twice in same card

I have a file which looks like -

|POL|SERVICING |CONVG |
|STS|AGENT |EFF DATE|
===============================
IL |A |021 |20080128|
MI |A |002 |20080110|
CT |A |036 |20080208|
CT |A |266 |20080117|
AK |A |723 |20080107|
NM |A |874 |20080107|
MD |A |876 |20080114|
CA |A |244 |20080102|
MA |A |499 |20080225|

The 361-362 colums hold the US state code. Now my requirement is to find out how many records are there for each state code. Ihave first used a control card like the following -

//SYSIN DD *
INREC FIELDS=(1,424,425:C'000001')
SORT FIELDS=(361,2,CH,A)
INCLUDE COND=(361,2,CH,NE,C' ',AND,361,2,CH,NE,C'==')
SUM FIELDS=(425,6),FORMAT=ZD
OUTREC FIELDS=(1:361,2,3:C' - ',6:425,6)

Here the output is coming in the following ways -

AK - 000001
AL - 000029
AR - 000013
AZ - 000032
CA - 000242
CO - 000028
CT - 000070

The output records are sorted in the alphabetical order of the state code. However, I wanted to see output in the ascending order of the number of occurence rather than the alphabetic order which came. I could not get it done as it requires two sorting in the single step.

Can anyone help me out with this requirement, I can not use more than one step, which is making the simple problem into a complex one.
Regards,
Captain N.

Frank Yaeger
Moderator
Posts: 812
Joined: Sat Feb 18, 2006 5:45 am
Location: San Jose, CA
Contact:
Here's a one-step DFSORT/ICETOOL job that will do what you asked for:

Code: Select all

``````//S1    EXEC  PGM=ICETOOL
//TOOLMSG   DD  SYSOUT=*
//DFSMSG   DD  SYSOUT=*
//IN DD DSN=...  input file
//T1 DD DSN=&&T1,UNIT=SYSDA,SPACE=&#40;CYL,&#40;5,5&#41;&#41;,DISP=&#40;,PASS&#41;
//OUT DD DSN=...  output file
//TOOLIN   DD    *
SORT FROM&#40;IN&#41; USING&#40;CTL1&#41;
SORT FROM&#40;T1&#41; TO&#40;OUT&#41; USING&#40;CTL2&#41;
/*
//CTL1CNTL DD *
INCLUDE COND=&#40;361,2,CH,NE,C' ',AND,361,2,CH,NE,C'=='&#41;
INREC BUILD=&#40;361,2,11&#58;X&#41;
SORT FIELDS=&#40;1,2,CH,A&#41;
OUTFIL FNAMES=T1,REMOVECC,NODETAIL,
SECTIONS=&#40;1,2,
TRAILER3=&#40;1,2,C' - ',COUNT=&#40;M11,LENGTH=6&#41;&#41;&#41;
/*
//CTL2CNTL DD *
SORT FIELDS=&#40;6,6,ZD,A&#41;
/*
``````
Frank Yaeger - DFSORT Development Team (IBM) - yaeger@us.ibm.com
Specialties: JOINKEYS, FINDREP, WHEN=GROUP, ICETOOL, Symbols, Migration
=> DFSORT/MVS is on the Web at http://www.ibm.com/storage/dfsort

# FREE TUTORIALS

Tutorials
Free tutorials from mainframegurukul
• JCL Tutorial
Covers all important JCL concepts.
• Cobol Tutorial
This tutorials covers all Cobol Topics from STRING to COMP-3.
• DB2 Tutorial
DB2 Tutorial focuses on DB2 COBOL Programming.
• SORT Tutorial
This Tutorial covers all important aspects of DFSORT with examples
• CICS Tutorial
This CICS tutorial covers CICS concepts and CICS Basics, CICS COBOL Programming.
Interview
Mainframe Interview questions

Other References
Mainframe Tools and others