Thank you once again, Kolusu - it works perfectly, and is definitely above what I was able to do...so this accomplishes my goal and teaches me a little more!
Billy On Thu, Apr 27, 2017 at 8:02 PM, Sri h Kolusu <[email protected]> wrote: > 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 <[email protected]> > To: [email protected] > Date: 04/27/2017 11:28 AM > Subject: Re: How to parse rows using SORT > Sent by: IBM Mainframe Discussion List <[email protected]> > > > > 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 <[email protected]> > 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 <[email protected]> > 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 <[email protected]> > >> To: [email protected] > >> Date: 04/21/2017 01:41 PM > >> Subject: Re: How to parse rows using SORT > >> Sent by: IBM Mainframe Discussion List > <[email protected]> > >> > >> > >> > >> 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 <[email protected]> > 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: [email protected] > >> > Phone: 520-799-2237 Tie Line: 321-2237 > >> > > >> > IBM Mainframe Discussion List <[email protected]> wrote on > >> > 04/21/2017 12:45:56 PM: > >> > > >> > > From: Bill Ashton <[email protected]> > >> > > To: [email protected] > >> > > Date: 04/21/2017 12:46 PM > >> > > Subject: Re: How to parse rows using SORT > >> > > Sent by: IBM Mainframe Discussion List <[email protected]> > >> > > > >> > > 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 <[email protected]> > >> > 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 <[email protected]> > >> > > > To: [email protected] > >> > > > Date: 04/21/2017 10:47 AM > >> > > > Subject: How to parse rows using SORT > >> > > > Sent by: IBM Mainframe Discussion List > >> > <[email protected]> > >> > > > > >> > > > > >> > > > > >> > > > 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 [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 > >> > > > > >> > > > >> > > > >> > > > >> > > -- > >> > > Thank you and best regards, > >> > > *Billy Ashton* > >> > > > >> > > ------------------------------------------------------------ > >> ---------- > >> > > For IBM-MAIN subscribe / signoff / archive access instructions, > >> > > send email to [email protected] 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 [email protected] with the message: INFO > IBM-MAIN > >> > > >> > >> > >> > >> -- > >> Thank you and best regards, > >> *Billy Ashton* > >> > >> ---------------------------------------------------------------------- > >> 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 > >> > > > > > > > > -- > > 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 [email protected] 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 [email protected] with the message: INFO IBM-MAIN > -- Thank you and best regards, *Billy Ashton* ---------------------------------------------------------------------- For IBM-MAIN subscribe / signoff / archive access instructions, send email to [email protected] with the message: INFO IBM-MAIN
