Hi Kolusu-san, Thank you for your explanation. Now I understood that added blanks by JFY=(SHIFT=LEFT) had to be removed by FINDREP.
> Yes you need to pick some other characters that are not in your input. Allowing all data (x'00' thru X'FF') for input record, converting input data to HEX (data become only A thru Z and 0 thru 9) during DFSORT process might be a solution. ;-) Again, thank you for your help. Minoru Massaki - (M*M) 2015-06-10 2:17 GMT+09:00 Sri h Kolusu <skol...@us.ibm.com>: > >>>I needed some amount of time to understand the DFSORT control > statements,especially FINDREP > > Minoru Massaki, > > The statement is simply removing 2 characters which is a space and a '$'. > For example if your input has > > ----+----1----+-- > MIN$ORU MASSA$KI > > The input is a total of 21 bytes and after the FINDREP statement the > output is as follows > > ----+----1----+ > MINORUMASSAKI > > The output is reduced to 18 as the 2 '$' and a single space characters are > removed. > > >>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? > > Yes you need to pick some other characters that are not in your input. If > you have those special characters then your output will have a different > output from position 5. Remember you can mention the special character in > HEX format too. > > Further if you have any questions please let me know > > Thanks, > Sri Hari Kolusu > DFSORT Development > IBM Corporation > > > > From: Minoru Massaki <mmass...@gmail.com> > To: IBM-MAIN@LISTSERV.UA.EDU > Date: 06/09/2015 08:57 AM > Subject: Re: DFSORT - How to select last 8 bytes in variable length > records > Sent by: IBM Mainframe Discussion List <IBM-MAIN@LISTSERV.UA.EDU> > > > > 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 <skol...@us.ibm.com>: > > > 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 <IBM-MAIN@LISTSERV.UA.EDU> wrote on > > 06/08/2015 01:14:33 AM: > > > > > From: Minoru Massaki <mmass...@gmail.com> > > > To: IBM-MAIN@LISTSERV.UA.EDU > > > 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 <IBM-MAIN@LISTSERV.UA.EDU> > > > > > > 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 <skol...@us.ibm.com>: > > > > > > > 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 <IBM-MAIN@LISTSERV.UA.EDU> wrote on > > > > 06/07/2015 06:28:01 AM: > > > > > > > > > From: Minoru Massaki <mmass...@gmail.com> > > > > > To: IBM-MAIN@LISTSERV.UA.EDU > > > > > 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 <IBM-MAIN@LISTSERV.UA.EDU> > > > > > > > > > > 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: mmass...@gmail.com > > > > > > > > > > > > ---------------------------------------------------------------------- > > > > > 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 > > > > > > > > > > > > > > > > -- > > > > > > 全先 実 - Minoru Massaki (M*M) > > > E-mail: mmass...@gmail.com > > > > > > ---------------------------------------------------------------------- > > > 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 > > > > > > -- > > 全先 実 - Minoru Massaki (M*M) > E-mail: mmass...@gmail.com > > ---------------------------------------------------------------------- > 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 > -- 全先 実 - Minoru Massaki (M*M) E-mail: mmass...@gmail.com ---------------------------------------------------------------------- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN