Bill,

Use the following control cards that would give you the desired results

//SYSIN    DD * 
  INCLUDE COND=(1,08,CH,EQ,C'EZA2284I',OR, 
                1,17,CH,EQ,C'EZA1701I >>> LIST') 
 
  INREC IFTHEN=(WHEN=INIT, 
         BUILD=(1,80,SQZ=(SHIFT=LEFT,MID=C' '), 
                8C'9')), 
 
        IFTHEN=(WHEN=GROUP,BEGIN=(1,17,CH,EQ,C'EZA1701I >>> LIST'), 
                PUSH=(91:ID=3,18,50)), 
 
        IFTHEN=(WHEN=(1,8,CH,EQ,C'EZA2284I'), 
        PARSE=(%01=(STARTAT=C'Jan',STARTAT=C'Feb', 
                    STARTAT=C'Mar',STARTAT=C'Apr', 
                    STARTAT=C'May',STARTAT=C'Jun', 
                    STARTAT=C'Jul',STARTAT=C'Aug', 
                    STARTAT=C'Sep',STARTAT=C'Oct', 
                    STARTAT=C'Nov',STARTAT=C'Dec', 
                    ENDBEFR=C' ',FIXLEN=04), 
               %02=(FIXLEN=02,ENDBEFR=C' '), 
               %03=(FIXLEN=04,ENDBEFR=C' '), 
               %04=(FIXLEN=10,ENDBEFR=C' ')), 
 
        OVERLAY=(081:%03,UFF,EDIT=(TTTT), 
                 085:%01, 
                 089:%02,UFF,EDIT=(TT), 
                 150:%04),HIT=NEXT), 
 
        IFTHEN=(WHEN=(1,8,CH,EQ,C'EZA2284I'), 
             OVERLAY=(85:85,3,CHANGE=(2, 
                            C'Jan',C'01',C'Feb',C'02',C'Mar',C'03', 
                            C'Apr',C'04',C'May',C'05',C'Jun',C'06', 
                            C'Jul',C'07',C'Aug',C'08',C'Sep',C'09', 
                            C'Oct',C'10',C'Nov',C'11',C'Dec',C'12'), 
                            NOMATCH=(C'00'), 
                      87:89,2,2X)) 
 
  SORT FIELDS=(91,3,CH,A,             $ GROUP 
               81,8,CH,D),EQUALS      $ DATE DESC 
 
  OUTREC OVERLAY=(161:SEQNUM,3,ZD,RESTART=(91,3)) 
 
  OUTFIL INCLUDE=(150,10,CH,GT,C' ',AND, 
                  161,3,ZD,GE,2,AND, 
                  161,3,ZD,LE,4), 
  BUILD=(94,63,SQZ=(SHIFT=LEFT,MID=C'/',LENGTH=80)) 
//* 



Further if you have any questions please let me know


Thanks.
Kolusu
DFSORT Development



From:   Bill Ashton <bill00ash...@gmail.com>
To:     IBM-MAIN@LISTSERV.UA.EDU
Date:   04/27/2017 11:28 AM
Subject:        Re: How to parse rows using SORT
Sent by:        IBM Mainframe Discussion List <IBM-MAIN@LISTSERV.UA.EDU>



Hi Kolusu, I have a slightly different twist on this request for a
different need.

Here, I will have multiple FTP directory commands' output, and want to
capture only the most recent 3 filenames in each directory. The output 
will
all be in one single file for further processing.

Now I know I want to capture only the EZA1701 message to extract the
directory name, and the EZA2284I messages for each file, and I want to
create output files with the command: "get dirname/filename" for only the
most recent files.

I have figured out how to change the Month value to a number and to 
reorder
the date to be yearmmdd, but I could not figure out how to replace the
space with a zero in the first digit of the day and I could not figure out
how to get the directory name on each file before sorting. I suppose the
space in the day value is not a problem as it would sort lower just like
zero, but I would rather it be specified accurately. Also, with the chance
that the date could be in a different column based on filesizes in the
directory, the absolute value on the column for the CHANGE won't always
work (I show that by pushing the last set to the right one column).

I hope you are not troubled with this request, and I appreciate your help.

I have attached some JCL and data with the first part of my process
(although you might change it anyway).

Thanks again!
Bill


On Mon, Apr 24, 2017 at 10:03 AM, Bill Ashton <bill00ash...@gmail.com>
wrote:

> Kolusu, thanks for the fix - I had not noticed this problem in my test
> cases, but now believe I have a more accurate process. I appreciate your
> time and attention! Have a magnificent Monday!
>
> On Fri, Apr 21, 2017 at 5:51 PM, Sri h Kolusu <skol...@us.ibm.com> 
wrote:
>
>> Bill,
>>
>> I apologize for the oversight in parsing the dataset name.  As soon as 
I
>> sent my earlier reply I realized that I did not cover all the scenarios
>> for the dataset name.  If the HLQ is less than 6 bytes the parse would
>> grab the time which starts before the dataset name.
>>
>> for example the records in red color
>>
>> Dec 29 10:23 HOLDDATA.BIN
>> Apr  3 12:28 REPORT1.TXT
>> Nov 15 11:33 NEWDATA.BIN
>> Nov 15 11:34 a.BIN
>> Nov 15 11:35 abc.BIN
>> Nov 15 11:36 abcd.BIN
>> Nov 15 11:37 abcde.BIN
>> Nov 15 11:38 abcdef.BIN
>> Nov 15 11:39 abcdefg.BIN
>> Nov 15 11:40 abcdefgh.BIN
>>
>> So you need to change your INREC IFTHEN statements to handle these 
dataset
>> names.  Here are the updated control cards ( Only the INREC IFTHEN
>> statments need to be changed.)
>>
>> INREC IFOUTLEN=80,
>>       IFTHEN=(WHEN=(1,3,CH,EQ,C'250'),
>>        PARSE=(%01=(STARTAFT=C'"',ENDBEFR=C'"',FIXLEN=50)),
>>        BUILD=(C'250 ',%01)),
>>
>>       IFTHEN=(WHEN=(1,3,CH,EQ,C'EZA'),
>>        PARSE=(%=(ENDAT=C'.BIN'),
>>             %02=(SUBPOS=12,FIXLEN=12)),
>>        BUILD=(C'BIN ',%02),HIT=NEXT),
>>
>>       IFTHEN=(WHEN=(1,3,CH,EQ,C'BIN'),
>>       OVERLAY=(5:5,12,JFY=(SHIFT=LEFT)),HIT=NEXT),
>>
>>       IFTHEN=(WHEN=(1,3,CH,EQ,C'BIN',AND,5,8,SS,EQ,C' '),
>>        PARSE=(%03=(ABSPOS=5,STARTAFT=C' ',ENDAT=C'.BIN',FIXLEN=12)),
>>         BUILD=(01:C'BIN ',56:%03)),
>>
>>       IFTHEN=(WHEN=(1,3,CH,EQ,C'BIN',AND,5,8,SS,NE,C' '),
>>         BUILD=(01:C'BIN ',56:5,12))
>>
>>
>>
>> Further if you have any questions please let me know
>>
>> Thanks,
>> Kolusu
>> DFSORT Development
>>
>>
>>
>> From:   Bill Ashton <bill00ash...@gmail.com>
>> To:     IBM-MAIN@LISTSERV.UA.EDU
>> Date:   04/21/2017 01:41 PM
>> Subject:        Re: How to parse rows using SORT
>> Sent by:        IBM Mainframe Discussion List 
<IBM-MAIN@LISTSERV.UA.EDU>
>>
>>
>>
>> Thanks, Kolusu - that is better now! I will go and learn about 
HIT=NEXT,
>> as
>> I have not run into that before.
>>
>> Have a good weekend!
>>
>>
>> On Fri, Apr 21, 2017 at 4:24 PM, Sri h Kolusu <skol...@us.ibm.com> 
wrote:
>>
>> > Bill,
>> >
>> > You really don't need to complicate the control to get the desired
>> > results. I have optimized your control cards a bit which would give 
you
>> > the desired results
>> >
>> > //SYSIN    DD *
>> >   OPTION COPY
>> >   INCLUDE COND=(1,003,CH,EQ,C'250',OR,
>> >                 1,100,SS,EQ,C'.BIN ')
>> >
>> >   INREC IFOUTLEN=80,
>> >         IFTHEN=(WHEN=(1,3,CH,EQ,C'250'),
>> >          PARSE=(%01=(STARTAFT=C'"',ENDBEFR=C'"',FIXLEN=50)),
>> >          BUILD=(C'250 ',%01)),
>> >
>> >         IFTHEN=(WHEN=(1,3,CH,EQ,C'EZA'),
>> >          PARSE=(%=(ENDAT=C'.BIN'),
>> >               %02=(SUBPOS=12,FIXLEN=12)),
>> >          BUILD=(C'BIN ',%02),HIT=NEXT),
>> >
>> >         IFTHEN=(WHEN=(1,3,CH,EQ,C'BIN'),
>> >          PARSE=(%03=(STARTAFT=C' ',ENDAT=C'.BIN',FIXLEN=12)),
>> >       BUILD=(01:C'BIN ',56:%03))
>> >
>> >   OUTREC IFTHEN=(WHEN=GROUP,BEGIN=(1,3,CH,EQ,C'250'),PUSH=(05:5,50))
>> >
>> >   OUTFIL INCLUDE=(1,3,CH,EQ,C'BIN'),
>> >   BUILD=(05,75,SQZ=(SHIFT=LEFT,LEAD=C'get  ',MID=C'/',
>> >                     TRAIL=C' //DD:LIST',LENGTH=80))
>> > //*
>> >
>> > The output from this job is
>> >
>> > get  /sys01/new2017/input/TESTFL1.BIN //DD:LIST
>> > get  /sys12/y2017/processed/HOLDDATA.BIN //DD:LIST
>> > get  /sys12/y2017/processed/NEWDATA.BIN //DD:LIST
>> >
>> >
>> > Further if you have any questions please let me know
>> >
>> > Thanks,
>> > Sri Hari Kolusu
>> > DFSORT Development
>> > IBM Corporation
>> > Email: skol...@us.ibm.com
>> > Phone: 520-799-2237 Tie Line: 321-2237
>> >
>> > IBM Mainframe Discussion List <IBM-MAIN@LISTSERV.UA.EDU> wrote on
>> > 04/21/2017 12:45:56 PM:
>> >
>> > > From: Bill Ashton <bill00ash...@gmail.com>
>> > > To: IBM-MAIN@LISTSERV.UA.EDU
>> > > Date: 04/21/2017 12:46 PM
>> > > Subject: Re: How to parse rows using SORT
>> > > Sent by: IBM Mainframe Discussion List <IBM-MAIN@LISTSERV.UA.EDU>
>> > >
>> > > Hi Kolusu, I think I messed up my original note by trying to keep 
the
>> > > characters in order.
>> > >
>> > > I have attached a file that shows my JCL with input and output
>> expected.
>> > > The current run, though has a problem with the Parse for %02 and 
%03.
>> I
>> > > hope you can help me with this - it is probably simple.
>> > >
>> > > Thanks!
>> > > B
>> > >
>> > > On Fri, Apr 21, 2017 at 2:05 PM, Sri h Kolusu <skol...@us.ibm.com>
>> > wrote:
>> > >
>> > > > Bill,
>> > > >
>> > > > Why bother about the position. From the looks of it, you need to
>> pick
>> > the
>> > > > last qualifier. So go find the last byte space and then subtract 
12
>> > bytes
>> > > > to get to your dataset name.
>> > > >
>> > > > something like this
>> > > >
>> > > > //STEP0100 EXEC PGM=SORT
>> > > > //SYSOUT   DD SYSOUT=*
>> > > > //SORTIN   DD *
>> > > >
>> >
>> EZA2284I`-RW-R--R--```1`FTPUSER``FTPUSERS```42160`SEP``2``
>> 2016`TESTFL1.BIN
>> > > >
>> > > >
>> > EZA2284I`-RW-R--R--```1`FTPUSER``FTPUSERS``442160`NOV`10`15:
>> 26`TEST2.TXT
>> > > > //SORTOUT  DD SYSOUT=*
>> > > > //SYSIN    DD *
>> > > >   OPTION COPY
>> > > >   INREC IFTHEN=(WHEN=INIT,
>> > > >          PARSE=(%=(ENDBEFR=C' '),
>> > > >                 %01=(SUBPOS=12,FIXLEN=12)),
>> > > >          BUILD=(%01)),
>> > > >
>> > > >         IFTHEN=(WHEN=(1,12,SS,EQ,C'`'),
>> > > >          PARSE=(%02=(STARTAFT=C'`',FIXLEN=12)),
>> > > >          BUILD=(%02))
>> > > >
>> > > >   OUTREC BUILD=(1,12,SQZ=(SHIFT=LEFT,LENGTH=80,
>> > > >                          LEAD=C' get  /thisdirectory/',
>> > > >                          TRAIL=C' //DD:LIST'))
>> > > > //*
>> > > >
>> > > >
>> > > > The outout from this job is
>> > > >
>> > > >  get  /thisdirectory/TESTFL1.BIN //DD:LIST
>> > > >  get  /thisdirectory/TEST2.TXT //DD:LIST
>> > > >
>> > > >
>> > > > Further if you have any questions please let me know
>> > > >
>> > > >
>> > > > Thanks,
>> > > > Kolusu
>> > > > DFSORT Development
>> > > > IBM Corporation
>> > > >
>> > > >
>> > > >
>> > > > From:   Bill Ashton <bill00ash...@gmail.com>
>> > > > To:     IBM-MAIN@LISTSERV.UA.EDU
>> > > > Date:   04/21/2017 10:47 AM
>> > > > Subject:        How to parse rows using SORT
>> > > > Sent by:        IBM Mainframe Discussion List
>> > <IBM-MAIN@LISTSERV.UA.EDU>
>> > > >
>> > > >
>> > > >
>> > > > Hello friends!
>> > > >
>> > > > I just ran into a problem, and am a bit confused how to correct
>> this.
>> > > >
>> > > > I am reading the output of an FTP list command, and using SORT to
>> > capture
>> > > > and format the FTP GET commands I need. This process is working 
fine
>> > for
>> > > > the most part, and it produces the correct commands most of the
>> time.
>> > > > However, I just noticed that the file list is different in one of 
my
>> > > > folders, causing me to lose the first character of the filename.
>> > > >
>> > > > I had been using this:
>> > > > PARSE=(%02=(ABSPOS=65,ENDBEFR=C'.',FIXLEN=8),
>> > > >        %03=(FIXLEN=3)),
>> > > >
>> > > > but now I find that one of my folders starts the file name in pos
>> 64,
>> > and
>> > > > not 65.
>> > > >
>> > > > Is there a way to not use ABSPOS=65, but instead to say I want to
>> > start
>> > > > following a space after Col 60? In Rexx, I could say to use the 
10th
>> > word,
>> > > > but I don't want to change the SORT to Rexx now, as this input is
>> > doing a
>> > > > number of different things.
>> > > >
>> > > > Here is a sample of the file listing (with ` replacing blanks to
>> keep
>> > > > spacing intact):
>> > > >
>> > > >
>> >
>> EZA2284I`-rw-r--r--```1`ftpuser``ftpusers```42160`Sep``2``
>> 2016`TESTFL1.BIN
>> > > >
>> > EZA2284I`-rw-r--r--```1`ftpuser``ftpusers``442160`Nov`10`15:
>> 26`TEST2.TXT
>> > > >
>> > > > My output from the Sort is going to say
>> > > > get  /thisdirectory/TESTFL1.BIN  //DD:LIST
>> > > > get  /thisdirectory/TEST2.TXT    //DD:LIST
>> > > >
>> > > > Thanks for your help with this troublesome question!
>> > > >
>> > > > --
>> > > > Thank you and best regards,
>> > > > *Billy Ashton*
>> > > >
>> > > >
>> ----------------------------------------------------------------------
>> > > > 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
>> > > >
>> > >
>> > >
>> > >
>> > > --
>> > > Thank you and best regards,
>> > > *Billy Ashton*
>> > >
>> > > ------------------------------------------------------------
>> ----------
>> > > For IBM-MAIN subscribe / signoff / archive access instructions,
>> > > send email to lists...@listserv.ua.edu with the message: INFO
>> IBM-MAIN
>> > > [attachment "SORTFILE.txt" deleted by Sri h Kolusu/Silicon 
Valley/IBM]
>> >
>> >
>> > 
----------------------------------------------------------------------
>> > For IBM-MAIN subscribe / signoff / archive access instructions,
>> > send email to lists...@listserv.ua.edu with the message: INFO 
IBM-MAIN
>> >
>>
>>
>>
>> --
>> Thank you and best regards,
>> *Billy Ashton*
>>
>> ----------------------------------------------------------------------
>> 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
>>
>
>
>
> --
> Thank you and best regards,
> *Billy Ashton*
>



-- 
Thank you and best regards,
*Billy Ashton*

----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN
[attachment "SORTFILE.txt" deleted by Sri h Kolusu/Silicon Valley/IBM] 




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