Bill,

The trick is to concatenate the master file 3 times but have a header file 
to distinguish the file and put the key values to be sorted at a common 
place. (usually at the end)

So the largest sort key is from file 2 which has 9 + 8 = 17 bytes and the 
smallest sort key is from file3 which has just 8 bytes. So we pad spaces 
to the right for key3. So depending on how you want to results you may 
want to left pad with high values or binary zeroes. Try the following JCL 

//**********************************************************************
//*  CREATE A 90 BYTE HEADER TO USE AS AN IDENTIFIER                   *
//**********************************************************************
//STEP0100 EXEC PGM=SORT 
//SYSOUT   DD SYSOUT=* 
//SORTIN   DD * 
//SORTOUT  DD DSN=&&HDR,DISP=(,PASS),SPACE=(CYL,(1,1),RLSE) 
//SYSIN    DD * 
  OPTION COPY 
  OUTFIL REMOVECC,NODETAIL,BUILD=(90X),HEADER1=(3'$') 
//* 
//**********************************************************************
//*  CONCATENATE THE MASTER FILE 3 TIMES EACH WITH A HEADER FILE AND   *
//*  PUT THE KEY AT A COMMON PLACE SO THAT WE CAN SORT IN 1 PASS.      *
//*                                                                    *
//*  FILE INDICATOR WILL BE AT POSITION 91                             *
//*                                                                    *
//*  FILE1 -  SORT CHAR 10-15 AND THEN 40-47 WILL BE AT POSITION 92    *
//*  FILE2 -  SORT CHAR 73-81 AND THEN 40-47 WILL BE AT POSITION 92    *
//*  FILE3 -  SORT CHAR 40-47                WILL BE AT POSITION 92    *
//**********************************************************************
//STEP0200 EXEC PGM=SORT 
//SYSOUT   DD SYSOUT=* 
//SORTIN   DD DISP=SHR,DSN=&&HDR,VOL=REF=*.STEP0100.SORTOUT 
//         DD DISP=SHR,DSN=Your.Master.File 
//         DD DISP=SHR,DSN=&&HDR,VOL=REF=*.STEP0100.SORTOUT 
//         DD DISP=SHR,DSN=Your.Master.File 
//         DD DISP=SHR,DSN=&&HDR,VOL=REF=*.STEP0100.SORTOUT 
//         DD DISP=SHR,DSN=Your.Master.File 
//OUT1     DD SYSOUT=* 
//OUT2     DD SYSOUT=* 
//OUT3     DD SYSOUT=* 
//SYSIN    DD * 
  INREC IFTHEN=(WHEN=GROUP,BEGIN=(1,3,CH,EQ,C'$$$'),PUSH=(91:ID=1)), 
  IFTHEN=(WHEN=(91,1,ZD,EQ,1),OVERLAY=(92:10,6,40,8)), 
  IFTHEN=(WHEN=(91,1,ZD,EQ,2),OVERLAY=(92:73,9,40,8)), 
  IFTHEN=(WHEN=(91,1,ZD,EQ,3),OVERLAY=(92:40,8)) 
 
  SORT FIELDS=(91,18,CH,A)    $ FILE-ID + COMPOSITE KEY      
  SUM FIELDS=NONE 
 
  OUTFIL FNAMES=OUT1,BUILD=(1,90), 
  INCLUDE=(91,1,ZD,EQ,1,AND,1,3,CH,NE,C'$$$') 
 
  OUTFIL FNAMES=OUT2,BUILD=(1,90), 
  INCLUDE=(91,1,ZD,EQ,2,AND,1,3,CH,NE,C'$$$') 

  OUTFIL FNAMES=OUT3,BUILD=(1,90), 
  INCLUDE=(91,1,ZD,EQ,3,AND,1,3,CH,NE,C'$$$') 
 
//*

 
Sri Hari Kolusu
DFSORT Development
IBM Corporation
Email: [email protected]
Phone: 520-799-2237 Tie Line: 321-2237

IBM Mainframe Discussion List <[email protected]> wrote on 
08/03/2015 01:29:54 PM:

> From: Bill Ashton <[email protected]>
> To: [email protected]
> Date: 08/03/2015 01:30 PM
> Subject: Re: SORT one input to 3 output files - different orders
> Sent by: IBM Mainframe Discussion List <[email protected]>
> 
> Hi Kolusu...yes, all the master files and the trans files are 90 bytes 
FB.
> Each record has multiple pieces of data, with the three master files 
being
> sorted on their respective "key". I did make one little error earlier, 
by
> forgetting that two of the files have compound keys... so here is the 
sort
> criteria once more - correctly!
> File1 -  Sort Char 10-15 and then 40-47
> File2 -  Sort Char 73-81 and then 40-47
> File3 -  Sort Char 40-47
> 
> Thanks for your help!
> B
> 
> On Mon, Aug 3, 2015 at 4:00 PM, Sri h Kolusu <[email protected]> wrote:
> 
> > Bill,
> >
> > Are all Input files of the same LRECL and RECFM? If so we can 
accomplish
> > the task in a Single pass of the data and sort the accordingly. There 
is a
> > trick to get it done. Let me know the attributes of all the input file 
and
> > desired output file attributes and I will show you a way to do it.
> >
> > Thanks,
> > Kolusu
> > DFSORT Development
> > IBM Corporation
> >
> > IBM Mainframe Discussion List <[email protected]> wrote on
> > 08/03/2015 12:33:46 PM:
> >
> > > From: Bill Ashton <[email protected]>
> > > To: [email protected]
> > > Date: 08/03/2015 12:34 PM
> > > Subject: SORT one input to 3 output files - different orders
> > > Sent by: IBM Mainframe Discussion List <[email protected]>
> > >
> > > Good afternoon, friends! I thought this should be easy, but I can't 
get
> > > started with this.
> > >
> > > I have one "transaction" file that I need to add to 3 different 
"master"
> > > files. The master files are in 3 different sequences, so I can't 
just
> > sort
> > > the trans file and MOD it to the end. Also, because I don't know 
which
> > day
> > > of this week the file will come in, I need to run this every day, 
and so
> > > need to also drop my duplicate entries, as I know the trans file is
> > unique.
> > >
> > > Can this be done in a single sort step?
> > >
> > > For the sake of argument, assume these sorts:
> > > File1 - sort Char data in cols 10-15
> > > File2 - sort Char data in cols 73-81
> > > File3 - sort Char data in cols 40-47
> > >
> > > Each file, when master & trans are combined, will all have the same
> > data,
> > > just in different order.
> > >
> > > Thanks for directing me!
> > > Billy
> > >
> > > --
> > > Thank you and best regards,
> > > *Billy Ashton*
> > >
> > > 
----------------------------------------------------------------------
> > > For IBM-MAIN subscribe / signoff / archive access instructions,
> > > send email to [email protected] with the message: INFO 
IBM-MAIN
> > >
> >
> > ----------------------------------------------------------------------
> > For IBM-MAIN subscribe / signoff / archive access instructions,
> > send email to [email protected] with the message: INFO IBM-MAIN
> >
> 
> 
> 
> -- 
> Thank you and best regards,
> *Billy Ashton*
> 
> ----------------------------------------------------------------------
> For IBM-MAIN subscribe / signoff / archive access instructions,
> send email to [email protected] with the message: INFO IBM-MAIN
> 

----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to [email protected] with the message: INFO IBM-MAIN

Reply via email to