Norbert,

Thanks for the explanation of the control cards but I do understand what 
they are doing. The extra space OP showed is just differentiate the output 
but I don't think it is really needed.

>>The other single pass job needed special/reserved characters not in the 
input data. This job allows all characters in the input data 
 (for lrecl < 16k)

As you pointed out some of the solutions have limitations. In your case it 
is the LRECL limitation and in my case it is the special characters 
limitation. So given the available information, I try to come up with a 
solution and both of us are trying to help. 


IBM Mainframe Discussion List <IBM-MAIN@LISTSERV.UA.EDU> wrote on 
06/10/2015 05:06:50 PM:

> From: Norbert Friemel <nf.ibmm...@web.de>
> To: IBM-MAIN@LISTSERV.UA.EDU
> Date: 06/10/2015 05:07 PM
> Subject: Re: DFSORT - How to select last 8 bytes in variable length 
records
> Sent by: IBM Mainframe Discussion List <IBM-MAIN@LISTSERV.UA.EDU>
> 
> On Wed, 10 Jun 2015 14:57:33 -0700, Sri h Kolusu wrote:
> 
> >Norbert,
> >
> >As I mentioned earlier it can be done in single pass as shown earlier, 
I
> >was just trying to optimize your Joinkeys job.  With your new job there 
a
> >couple of issues
> >
> >1. I am not sure as to why you need to append C'40' (may be you meant
> >X'40')
>  >2. With the append of C'40' your output LRECL is increased by 1.  ie. 
the
> >output now has LRECL+8+1
> 
> Quote from the first post in this thread:
> 
> > There is a input file of variable length records.
> > I want to insert the last 8 bytes of a record to front of the record 
as
> > following sample.
> >
> > Input file:
> > RECORD01X11AAAAAAAA
> > RECORD02Y2BBBBBBBB
> > RECORD03ZCCCCCCC
> > RECORD044A4444444DDDDDDDD
> > RECORD0555B55555555EEEEEEEE
> >
> > Output File I want to have:
> > AAAAAAAA RECORD01X11AAAAAAAA
> > BBBBBBBB RECORD02Y2BBBBBBBB
> > ZCCCCCCC RECORD03ZCCCCCCC
> > DDDDDDDD RECORD044A4444444DDDDDDDD
> > EEEEEEEE RECORD0555B55555555EEEEEEEE
> >
> > Record data before the last 8 bytes may contain x'00' thru x'FF',
> > there is no specific delimiter character for parsing the last 8 bytes.
> > The last 8 bytes is also binary.
> 
> The output example shows the last 8 bytes of the input records in 
> col. 1-8 and a space on col. 9. The data from the input record 
> starts at col 10.
> I create the output record as a HEX string and convert it back in 
> the last step. That's why I append C'40' (it's converted to x'40' in
> the last BUILD-statement:
> 1. BUILD=(1,4,5,HEX)) 
> converts the input record to hex
> 2. OVERLAY=(5:hex_data,JFY=(SHIFT=RIGHT))) 
> shifts the hex string (inserts spaces to the left)
> 3. BUILD=(1,4,key_start,16,C'40',hex_data,JFY=(SHIFT=LEFT))) 
> creates a record with the last 16 bytes of the hex string, a 
> "hexified" space (C'40') and the (hexified) input record shifted to 
> the left (spaces on the right)
> 4. FINDREP=(IN=(C' '),OUT=C''))
> removes spaces (x'40' at the end of the record, not c'40' in col. 17/18)
> 5. BUILD=(1,4,5,TRAN=UNHEX)) 
> converts to record to binary 
> 
> The other single pass job needed special/reserved characters not in 
> the input data. This job allows all characters in the input data 
> (for lrecl < 16k)
> 
> >3. I am not sure as to why you need to validate the RDW to remove the
> >short records. JFY will pad up short records. So even if you records 
with
> >lrecl less than 12 it will only pick the available characters.
> 
> JFY pads the HEX string with spaces (x'40'). I thought that 
> converting this with TRAN=UNHEX adds (unwanted) x'00's to col. 1-8 
> of short records.  But that's not the case - FINDREP removes the 
> leading spaces. So yes, the RDW check could be removed.
> 
> Norbert Friemel
> 
> ----------------------------------------------------------------------
> 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