On 10/23/2014 10:22 AM, Thomas Berg wrote:
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.

Or ... you could take a class. I'd come out of retirement for a bit
in order to teacch in Stockholm again. :-)

  http://www.trainersfriend.com/JCL_courses/B625descrpt.htm

(also pointed at from:

  http://www-01.ibm.com/support/docview.wss?rs=0&uid=isg3T7000082

)


-Steve Comstock



(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


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