Hi Kolusu-san,

Thank you very much for answering my question.
It works fine.

I needed some amount of time to understand the DFSORT constrol statements,
especially

>   IFTHEN=(WHEN=INIT,
>   FINDREP=(IN=(C' ',C'$'),OUT=C'')),      $ REMOVE SPACES AND SPL CHAR

I'd like to make sure that input record data must not have C'$' and C'@'
characters.  If it exists in the input data, output data in col.9 thru end
is different from input.
Is this right?

Again, I really appreciate your help.

Minoru Massaki - (M*M)



2015-06-09 2:23 GMT+09:00 Sri h Kolusu <[email protected]>:

> Minoru Massaki,
>
> I went ahead and assumed that you have both leading and trailing spaces. I
> chose '$' and '@' as special characters to preserve the leading and
> trailing spaces.  The following DFSORT JCL will give you the desired
> results.  JFY will move the contents irrespective of what the data is. It
> doesn't matter if the data is binary or character. Also I forced the
> output lrecl to be (original LRECL + 8 ) using IFOUTLEN.  So if you have a
> different lrecl file then you may need to change that value.
>
> //STEP0100 EXEC PGM=SORT
> //SYSOUT   DD SYSOUT=*
> //SORTIN   DD DISP=SHR,DSN=Your Input VB 80 Byte file
> //SORTOUT  DD SYSOUT=*
> //SYSIN    DD *
>   OPTION COPY
>   INREC IFOUTLEN=88,
>   IFTHEN=(WHEN=INIT,
>         BUILD=(1,04,                      $ RDW
>                C'$',                      $ SPL CHAR
>                5)),                       $ REST OF THE DATA
>
>   IFTHEN=(WHEN=INIT,
>   FINDREP=(INOUT=(X'40',C'@'))),          $ CHANGE ' ' TO '@'
>
>   IFTHEN=(WHEN=INIT,
>   OVERLAY=(05:05,77,JFY=(SHIFT=RIGHT))),  $ SHIFT DATA TO RIGHT
>
>   IFTHEN=(WHEN=INIT,
>         BUILD=(01,04,                     $ RDW
>                74,08,                     $ LAST 8 BYTES
>                05,77,JFY=(SHIFT=LEFT))),  $ SHIFT DATA TO LEFT
>
>   IFTHEN=(WHEN=INIT,
>   FINDREP=(IN=(C' ',C'$'),OUT=C'')),      $ REMOVE SPACES AND SPL CHAR
>
>   IFTHEN=(WHEN=INIT,
>   FINDREP=(INOUT=(C'@',X'40')))           $ CHANGE '@' BACK TO SPACE
> //*
>
>
> Hope this helps...
>
> Thanks,
> Sri Hari Kolusu
> DFSORT Development
> IBM Corporation
>
> IBM Mainframe Discussion List <[email protected]> wrote on
> 06/08/2015 01:14:33 AM:
>
> > From: Minoru Massaki <[email protected]>
> > To: [email protected]
> > Date: 06/08/2015 01:14 AM
> > Subject: Re: DFSORT - How to select last 8 bytes in variable length
> records
> > Sent by: IBM Mainframe Discussion List <[email protected]>
> >
> > Hello Kolusu-san,
> >
> > Thank you very much for giving the answer by using DFSORT.
> > That is what the customer wants to.
> >
> > I have additional questions.
> > If the 8 bytes key is binary data and some records include x'40'  of the
> > last byte of the key,
> >  (ex. if the key is binary number 64 --> x'0000000000000040')
> > Does the shifting to right (JFY=(SHIFT=RIGHT)) work as I expected?
> >
> > In case of the last and the first byte of the records contain x'40',
> > what should I modify the DFSORT control statements you gave me.
> >
> > I really appreciate your kind help.
> >
> > Minoru Massaki - (M*M)
> >
> >
> >
> >
> > 2015-06-08 14:44 GMT+09:00 Sri h Kolusu <[email protected]>:
> >
> > > Minoru Massaki,
> > >
> > > It is quite simple to get the last 8 bytes from a variable length file
> > > without an exit. You simply need to use JFY to push the contents to
> the
> > > right and then pick the last 8 bytes and then use another JFY to push
> the
> > > contents to the left and there by achieving the desired results.
> > >
> > > I assumed that your Input VB file has an LRECL=80. You can adjust the
> > > length if your input file has a different length.
> > >
> > > //STEP0100 EXEC PGM=SORT
> > > //SYSOUT   DD SYSOUT=*
> > > //SORTIN   DD DISP=SHR,Your Input VB 80  byte file.
> > > //SORTOUT  DD SYSOUT=*
> > > //SYSIN    DD *
> > >   OPTION COPY
> > >   INREC IFTHEN=(WHEN=INIT,
> > >         BUILD=(1,04,                      $ RDW
> > >                5,76,JFY=(SHIFT=RIGHT))),  $ SHIFT DATA TO RIGHT
> > >         IFTHEN=(WHEN=INIT,
> > >         BUILD=(01,04,                     $ RDW
> > >                73,08,                     $ LAST 8 BYTES
> > >                05,76,JFY=(SHIFT=LEFT)))   $ SHIFT DATA TO LEFT
> > >
> > >   OUTFIL VLTRIM=C' '                      $ REMOVE TRAIL SPACES
> > > //*
> > >
> > > Sri Hari Kolusu
> > > DFSORT Development
> > > IBM Corporation
> > >
> > > IBM Mainframe Discussion List <[email protected]> wrote on
> > > 06/07/2015 06:28:01 AM:
> > >
> > > > From: Minoru Massaki <[email protected]>
> > > > To: [email protected]
> > > > Date: 06/07/2015 06:28 AM
> > > > Subject: DFSORT - How to select last 8 bytes in variable length
> records
> > > > Sent by: IBM Mainframe Discussion List <[email protected]>
> > > >
> > > > Hello
> > > >
> > > > 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.
> > > >
> > > > I'd like to hear any ideas how this to be done by DFSORT WITHOUT
> using
> > > > E15/E35.
> > > >
> > > > Your help would be highly appreciated.
> > > >
> > > > Minoru Massaki - M*M
> > > >
> > > >
> > > >
> > > >
> > > >
> > > >
> > > > --
> > > >
> > > > 全先 実  -  Minoru Massaki  (M*M)
> > > > E-mail: [email protected]
> > > >
> > > >
> ----------------------------------------------------------------------
> > > > 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
> > >
> >
> >
> >
> > --
> >
> > 全先 実  -  Minoru Massaki  (M*M)
> > E-mail: [email protected]
> >
> > ----------------------------------------------------------------------
> > 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
>



-- 

全先 実  -  Minoru Massaki  (M*M)
E-mail: [email protected]

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

Reply via email to