Thanks Kolusu!

It seems so easy when you (and Norbert) explains!  :) 
Of course I should RTFM, but when you are ignorant it takes time find the 
relevant pieces.   

(I wonder how many work hours the help here at IBM-MAIN have saved?)  



Best Regards,
Thomas Berg
___________________________________________________________________ 
Thomas Berg   Specialist   zOS/RQM/IT Delivery   Swedbank AB (Publ)

> -----Original Message-----
> From: IBM Mainframe Discussion List [mailto:IBM-MAIN@LISTSERV.UA.EDU] On 
> Behalf Of Sri h
> Kolusu
> Sent: Thursday, October 23, 2014 6:09 PM
> To: IBM-MAIN@LISTSERV.UA.EDU
> Subject: Re: DFSORT/ICETOOL pondering
> 
> Thomas,
> 
> As others have explained it is quite simple to get the desired results. I
> am showing examples for both FB and VB files using symbols. With symbols
> you have the flexibility of changing it and then not worry about changing
> the control cards.
> 
> A brief explanation of the job.
> 
> 1. The first IFTHEN with WHEN=INIT, we will number all records in the file
> with a 8 byte sequence number.
> 
> 2. The next 2 IFTHEN statements will validate that sequence number and
> build the record. If you have more ranges then you can add IFTHEN
> statements before the last IFTHEN with WHEN=NONE statement
> 
> 
> //STEP0100 EXEC PGM=SORT
> //SYSOUT   DD SYSOUT=*
> //SYMNOUT  DD SYSOUT=*
> //SYMNAMES DD *
> FILE-REC-LENGTH,1,80,CH
> RECORD-SEQ-NUMBER,*,8,ZD
> REQD-DATA1,1,3,CH
> REQD-DATA2,31,10,CH
> REQD-DATA3,71,10,CH
> RECD-SELECT-NUM1,5
> RECD-SELECT-NUM2,7
> RECD-SELECT-NUM3,9
> //SORTIN   DD DISP=SHR,DSN=Your Input FB file
> //SORTOUT  DD SYSOUT=*
> //SYSIN    DD *
>   OPTION COPY
>   INREC IFTHEN=(WHEN=INIT,OVERLAY=(RECORD-SEQ-NUMBER:SEQNUM,8,ZD)),
> 
>   IFTHEN=(WHEN=(RECORD-SEQ-NUMBER,GT,RECD-SELECT-NUM1,AND,
>                 RECORD-SEQ-NUMBER,LE,RECD-SELECT-NUM2),
>   BUILD=(REQD-DATA1,REQD-DATA2)),
> 
>   IFTHEN=(WHEN=(RECORD-SEQ-NUMBER,GT,RECD-SELECT-NUM2,AND,
>                 RECORD-SEQ-NUMBER,LE,RECD-SELECT-NUM3),
>   BUILD=(REQD-DATA1,REQD-DATA2,REQD-DATA3)),
> 
>   IFTHEN=(WHEN=NONE,BUILD=(REQD-DATA2))
> 
> //*
> 
> The above control cards will be translated as the following
> 
> //SYSIN    DD *
>   OPTION COPY
>   INREC IFTHEN=(WHEN=INIT,OVERLAY=(81:SEQNUM,8,ZD)),
> 
>   IFTHEN=(WHEN=(81,8,ZD,GT,5,AND,81,8,ZD,LE,7),
>   BUILD=(1,3,31,10)),
> 
>   IFTHEN=(WHEN=(81,8,ZD,GT,7,AND,81,8,ZD,LE,9),
>   BUILD=(1,3,31,10,71,10)),
> 
>   IFTHEN=(WHEN=NONE,BUILD=(31,10))
> //*
> 
> If you have VB input files then you need to use sequencing of the records
> right after the RDW.
> 
> //STEP0200 EXEC PGM=SORT
> //SYSOUT   DD SYSOUT=*
> //SYMNOUT  DD SYSOUT=*
> //SYMNAMES DD *
> FILE-RDW,1,4,BI
> RECORD-SEQ-NUMBER,*,8,ZD
> VBDATA-SPOS,=
> REQD-DATA1,*,3,CH
> SKIP,27
> REQD-DATA2,*,10,CH
> SKIP,30
> REQD-DATA3,*,10,CH
> RECD-SELECT-NUM1,5
> RECD-SELECT-NUM2,7
> RECD-SELECT-NUM3,9
> //SORTIN   DD DISP=SHR,DSN=Your Input VB File
> //SORTOUT  DD SYSOUT=*
> //SYSIN    DD *
>   OPTION COPY
>   INREC IFTHEN=(WHEN=INIT,
>   BUILD=(FILE-RDW,RECORD-SEQ-NUMBER:SEQNUM,8,ZD,VBDATA-SPOS)),
> 
>   IFTHEN=(WHEN=(RECORD-SEQ-NUMBER,GT,RECD-SELECT-NUM1,AND,
>                 RECORD-SEQ-NUMBER,LE,RECD-SELECT-NUM2),
>   BUILD=(FILE-RDW,REQD-DATA1,REQD-DATA2)),
> 
>   IFTHEN=(WHEN=(RECORD-SEQ-NUMBER,GT,RECD-SELECT-NUM2,AND,
>                 RECORD-SEQ-NUMBER,LE,RECD-SELECT-NUM3),
>   BUILD=(FILE-RDW,REQD-DATA1,REQD-DATA2,REQD-DATA3)),
> 
>   IFTHEN=(WHEN=NONE,BUILD=(FILE-RDW,REQD-DATA2))
> //*
> 
> Further if you have any questions, please let me know
> 
> Thanks,
> Kolusu
> DFSORT Development
> 
> IBM Mainframe Discussion List <IBM-MAIN@LISTSERV.UA.EDU> wrote on
> 10/23/2014 06:43:44 AM:
> 
> > From: Thomas Berg <thomas.b...@swedbank.se>
> > To: IBM-MAIN@LISTSERV.UA.EDU
> > Date: 10/23/2014 06:44 AM
> > Subject: Re: DFSORT/ICETOOL pondering
> > Sent by: IBM Mainframe Discussion List <IBM-MAIN@LISTSERV.UA.EDU>
> >
> > > -----Original Message-----
> > > From: IBM Mainframe Discussion List [mailto:IBM-MAIN@LISTSERV.UA.EDU]
> > > On Behalf Of Elardus Engelbrecht
> > > Sent: Wednesday, October 22, 2014 3:52 PM
> > > To: IBM-MAIN@LISTSERV.UA.EDU
> > > Subject: Re: DFSORT/ICETOOL pondering
> > >
> > > Thomas Berg wrote:
> > >
> > > >Sometimes I have a need to do a selective copy of a dataset where the
> > > selection is both record sequence and record position/part dependent.
> > > >And by that I mean the record part/position is varying depending on
> which
> > > record it's about.
> > > >An example (yes, it looks silly):
> > >
> > > Who ever gave you homework is silly... ;-D
> >
> > ...it's me... :)
> >
> > > >I want to copy  position 31 to 40 of all records but from record
> > 8 and 9 I want
> > > to copy also (concatenate) position 71 to 80 and from record 6 to 8 I
> also
> > > (concatenate in "front") want to copy position 1 to 3.
> > >
> > > Hmmm. Hard requirement if you want all of this in ONE pass. Could
> > you be kind
> > > to post an example of your input and output?
> >
> > An hypotethical example (monospace font recommended):
> >
> > Input:
> > ----+----1----+----2----+----3----+----4----+----5----+----6----
> > +----7----+----8
> >
> 001aaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbb01ccccccccccccccccccccccccccccccdddddddd01
> >
> 002aaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbb02ccccccccccccccccccccccccccccccdddddddd02
> >
> 003aaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbb03ccccccccccccccccccccccccccccccdddddddd03
> >
> 004aaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbb04ccccccccccccccccccccccccccccccdddddddd04
> >
> 005aaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbb05ccccccccccccccccccccccccccccccdddddddd05
> >
> 006aaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbb06ccccccccccccccccccccccccccccccdddddddd06
> >
> 007aaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbb07ccccccccccccccccccccccccccccccdddddddd07
> >
> 008aaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbb08ccccccccccccccccccccccccccccccdddddddd08
> >
> 009aaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbb09ccccccccccccccccccccccccccccccdddddddd09
> >
> 010aaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbb10ccccccccccccccccccccccccccccccdddddddd10
> >
> >
> > Output:
> > ----+----1----+----2----+----3
> > bbbbbbbb01
> > bbbbbbbb02
> > bbbbbbbb03
> > bbbbbbbb04
> > bbbbbbbb05
> > 006bbbbbbbb06
> > 007bbbbbbbb07
> > 008bbbbbbbb08dddddddd08
> > bbbbbbbb09dddddddd09
> > bbbbbbbb10
> >
> >
> > > What about the rest of input? Should they stay the same during
> > copy or left out
> > > of the output?
> >
> > The rest is discarded.
> >
> > > >I can see the use of the SUBSET (ICETOOL) for record selection
> > but how do you
> > > user DFSORT/ICETOOL to solve the combining record and varying position
> needs
> > > ?
> > >
> > > What about SPLICE and JOIN?
> >
> > I haven't looked more closely at these. Thought they required a
> > matching file etc.
> >
> > > >I now use a homegrown program for this but it's lacking
> > efficiency to say the
> > > least and I'm looking at DFSORTs efficiency and speed.
> > >
> > > How so? Could you post that program or some snippets? I believe I
> > could do that
> > > with REXX.
> >
> > That program IS coded in REXX.  It works but it's a problem with
> > (very) large files.
> > (This program is sort of a Swiss Army Knife with lot of other
> > functions, this copy problem is a minor subfunction in it.
> > I use it e g as a line command at ISPF 3.4 etc.)
> >
> >
> >
> > Best Regards,
> > Thomas Berg
> > ___________________________________________________________________
> > Thomas Berg   Specialist   zOS/RQM/IT Delivery   Swedbank AB (Publ)
> >
> >
> > ----------------------------------------------------------------------
> > For IBM-MAIN subscribe / signoff / archive access instructions,
> > send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN
> 
> ----------------------------------------------------------------------
> For IBM-MAIN subscribe / signoff / archive access instructions,
> send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN

----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN

Reply via email to