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

Author Message
rikdeb

New User

Joined: 19 Jan 2009
Posts: 63

Posted: Sat Nov 15, 2014 6:08 pm    Post subject: Building Sort Card dynamically using Syncsort

Hi all,
I want to build control card like below dynamically depending on the input values
 Code: SORT FIELDS=COPY                                          OUTFIL FILES=01,                                          INCLUDE=(102,4,CH,EQ,C'WWWW',OR,102,4,CH,EQ,C'NNNN',OR,102,4,CH,EQ,C'RRRR')          102,4,CH,EQ,C'SSSS'.....)

The values WWWW, NNNN,RRRR will be coming from input file.
Point here is the number of input records may vary. It can be 1 or 2 or 3...10..
I am using SYNCSORT FOR Z/OS 1.4.2.0R

Escapa

Senior Member

Joined: 16 Feb 2007
Posts: 1399
Location: IL, USA

 Posted: Sat Nov 15, 2014 10:58 pm    Post subject: Look at how to use JOINKEYS, It should give what you are trying to achieve...
Bill Woodger

DFSORT Moderator

Joined: 09 Mar 2011
Posts: 7312

Posted: Sun Nov 16, 2014 4:53 am    Post subject: Reply to: Building Sort Card dynamically using Syncsort

Unless the data is already in that order, a JOINKEYS solution would require a SORT of the data, and possibly a second SORT if the original order is required for the output. JOINKEYS would also require more memory, as there are three tasks.

rikdeb,

Why do you need the INCLUDE= on OUTFIL, why not INCLUDE COND=? Is it part of something else?

A simple solution would be to have the 10 values, but for any which are not required, set those to a value which is impossible: X'FFFFFFFFFF' for instance.

 Code: SORT FIELDS=COPY                                           OUTFIL FILES=01,                                           INCLUDE=(102,4,CH,EQ,C'WWW0',        OR,102,4,CH,EQ,C'WWW1',        OR,102,4,CH,EQ,C'WWW2',        OR,102,4,CH,EQ,C'WWW3',        OR,102,4,CH,EQ,C'WWW4',        OR,102,4,CH,EQ,C'WWW5',        OR,102,4,CH,EQ,C'WWW6',        OR,102,4,CH,EQ,C'WWW7',        OR,102,4,CH,EQ,C'WWW8',        OR,102,4,CH,EQ,C'WWW9')

So that is what it could look like with 10 values.

The problem for generation is that you need three different types, first, middle and last. The first requires the INCLUDE=(, the middle ones are simple, and the last has a trailing bracket instead of the comma.

If your 10-record file can be like this:

 Code: FWWW0 MWWW1 MWWW2 LWWW3

Then generating the INCLUDE= is easy.

So, how much data, is it in the selection order, can the selection file be made like that, or do you have to work it out. Why INCLUDE= not INCLUDE COND=, and anything else you feel may be helpful.
rikdeb

New User

Joined: 19 Jan 2009
Posts: 63