-----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