PCRE (see, e.g., CBTTAPE File # 884 PCRE (Perl-Compatible Regular Expressions) 10.2 z/OS at http://www.cbttape.org/ftp/cbt/CBT884.zip)
-- Shmuel (Seymour J.) Metz http://mason.gmu.edu/~smetz3 ________________________________________ From: IBM Mainframe Discussion List [[email protected]] on behalf of David Crayford [[email protected]] Sent: Tuesday, February 25, 2020 8:03 AM To: [email protected] Subject: Re: Rexx parse using period as placeholder What you really need is regular expressions ;) https://secure-web.cisco.com/11kckduHl22o_XPHz3bHsGS9pO3TtRrQjkW2q4fA647aOOPq-PV-hOv5D1BjuBvV3VzzjyjtjmonHrTxLcXhbmaOiuJfc-9NCfa3AVFsn21QUBxag_AeXqKDt_87ENc6Oh9f9EbnHEohSceInfKIYTSodsysRn1ZFEQk723E6-ZOx9W6mceL4h1sFtwznBhnzuyywKHQuhAwitxNjUuHL0coSGh34fly7wc4zrNKrGA_ZYsjx0F0hes5tx1SQqdvWtMdO4x34nWu2sG-3OuV8CRbBAZ9LgmyCm0A-BmjQT9ZQhdrMjTPAjhTAr5iDnb77GHl6UmUGrRborgt6AeremaTz3N7gutJDhBriKp3CAkMCaFfK1xGNtwPnWTyx9fvE/https%3A%2F%2Fgithub.com%2Fdaveyc%2FRTK On 2020-02-25 7:47 PM, Ambros, Thomas wrote: > In my example, I'm trying to ignore the first three blank-delimited strings > and parse the character string preceding the embedded period in the fourth. > That's what surprised me - Parse considers the third value to be "9" and not > the blank delimited string "9.12". Subword, on the other hand, hews to the > definition of blank delimited word with no regard to the embedded period in > the character string "9.12". > > That's where the surprise came in, I was not aware that Parse would break the > string at any delimiter other than a blank when I coded it as this: > > myVar = 'word1 word2 9.12 word3.ext' > Parse Var myVar . . . myVal '.' . > > Thomas Ambros > zEnterprise Operating Systems > zEnterprise Systems Management > 518-436-6433 > > -----Original Message----- > From: IBM Mainframe Discussion List <[email protected]> On Behalf Of > Wayne Bickerdike > Sent: Monday, February 24, 2020 23:04 > To: [email protected] > Subject: Re: Rexx parse using period as placeholder > > > > *** Warning: External message - exercise caution. Think before you click. *** > > > Interesting. Seymours example came back with a blank. > > I used PARSE VALUE MYVAR WITH . . . '.' . WORD3 '.' EXT . > > > > On Tue, Feb 25, 2020 at 10:46 AM Paul Gilmartin < > [email protected]> wrote: > >> On Mon, 24 Feb 2020 18:08:48 -0500, Tony Thigpen wrote: >> >>> You have "passed" your first period before your "'.'" in the parse >>> statement is actually interpreted. >>> >>> For your data example: >>> myVar = 'word1 word2 9.12 word3.ext' >>> The correct parse is: >>> Parse Value myVar with . . myVal2 '.' . >>> >>> Each period, or var name, in the parse "eats" one blank delimited word. >>> For example: >>> myvar = 'a b c d e f g' >>> parse var myvar . . 'e' next . >>> will yield next = 'f', but >>> >>> parse var myvar . . . . . 'e' next . >>> will yield next = '' >>> >> Ummm. No. I believe next = 'f': >> parse value 'a b c d e f g' with . . . . . 'e' next .; say next" >> >.> "a" >> >.> "b" >> >.> "c" >> >.> "d" >> >.> "" >> >>> "f" >> >.> "g" >> >V> "f" >> f >> >> -- gil >> >> >> >> >>> For your data, I would first parse the words, then parse each var for '.'. >>> >>> Now, if there is really a special character (or string) that you need >>> to identify, it is best to parse the before and after data, then >>> parse each section. This is how you should handle finding options in >>> a parm string passed to a REXX script: >>> >>> parse value arg with parms '(' options ')' localopts parse var parms >>> parm1 parm2 parm3 parm4 parm5 . >>> parse var options opt1 opt2 opt3 opt4 opt5 opt6 . >>> parse var localopts lopt1 lopt2 lopt3 lopt4 lopt5 . >>> >>> For the above to work, the use of ')' *requires* a previous '('. >>> >>> example: arg = aaa bbb ccc ')' ddd eee >>> parse value arg with parms '(' options ')' localopts >>> >>> will yield: >>> parms = "aaa bbb ccc ) ddd eee" >>> options = '' >>> localopts = '' >>> >>> If this might happen, you would need: >>> parse value arg with part1 ')' localopts parse var part1 parms ')' >>> options parse var parms parm1 parm2 parm3 parm4 parm5 . >>> parse var options opt1 opt2 opt3 opt4 opt5 opt6 . >>> parse var localopts lopt1 lopt2 lopt3 lopt4 lopt5 . >>> >>> >>> >>> Tony Thigpen >>> >>> Seymour J Metz wrote on 2/24/20 5:50 PM: >>>> Isn't that the same, except for the choice of variable names? >>>> >>>> For the type of source string that you're parsing, I'd probably >>>> break >> it into words with a simple parse and then use a parse var foo bar '.' >> baz >>>> >>>> -- >>>> Shmuel (Seymour J.) Metz >>>> https://urldefense.proofpoint.com/v2/url?u=http-3A__mason.gmu.edu_- >>>> 7Esmetz3&d=DwIFaQ&c=Y1KkN7JyAPjrAJTUCirS0fy9vQY8xn4_Oh4EEEpbXx4&r=7 >>>> ds2LAJ99_WyGG6a4BwzaJ7R0vee6JgTc4Txes6yEew&m=NpaUBaXFEzfPLAebMs9B1G >>>> aKHWOUHAwXKgRJtkaT1o8&s=TtG3xhRqfA6YTnsgOYLWh64rPyd9IJCBiSKWMRHbQBI >>>> &e= >>>> >>>> ________________________________________ >>>> From: IBM Mainframe Discussion List [[email protected]] on >> behalf of Ambros, Thomas >> [[email protected]] >>>> Sent: Monday, February 24, 2020 4:26 PM >>>> To: [email protected] >>>> Subject: Re: Rexx parse using period as placeholder >>>> >>>> You mean like this? >>>> >>>> *-* Parse Value myVar with . . . myVal2 '.' . >>>>>>> "word1 word2 9.12 word3.ext" >>>>> .> "word1" >>>>> .> "word2" >>>>> .> "9" >>>>>>> "" >>>>> .> "12 word3.ext" >>>> But you're correct, variables result in the same behavior: >>>> >>>> *-* Parse Value myVar with t1 t2 t3 myVal2 '.' . >>>>>>> "word1 word2 9.12 word3.ext" >>>>>>> "word1" >>>>>>> "word2" >>>>>>> "9" >>>>>>> "" >>>>> .> "12 word3.ext" >>>> So it is the definition of a blank delimited word that escaped me. >> I'll look for a precise definition of one of those in the context of Rexx. >>>> Thomas Ambros >>>> zEnterprise Operating Systems >>>> zEnterprise Systems Management >>>> 518-436-6433 >>>> >>>> -----Original Message----- >>>> From: IBM Mainframe Discussion List <[email protected]> On >> Behalf Of Seymour J Metz >>>> Sent: Monday, February 24, 2020 16:17 >>>> To: [email protected] >>>> Subject: Re: Rexx parse using period as placeholder >>>> >>>> >>>> >>>> *** Warning: External message - exercise caution. Think before you >> click. *** >>>> >>>> Why did it surprise you, and what does it have to do with the >> placeholders? You'd get the same thing if you used three variable >> names instead of three periods. The parse with works because it's >> using a different template on a different value: try >>>> parse Value myVar with . . . myVal '.' . >>>> >>>> >>>> -- >>>> Shmuel (Seymour J.) Metz >>>> >> https://urldefense.proofpoint.com/v2/url?u=http-3A__mason.gmu.edu_-7Es >> metz3&d=DwIFAg&c=Y1KkN7JyAPjrAJTUCirS0fy9vQY8xn4_Oh4EEEpbXx4&r=7ds2LAJ >> 99_WyGG6a4BwzaJ7R0vee6JgTc4Txes6yEew&m=RwHovw9Jb8ZzPnV0Fb8JtuHSrWfHboK >> 75HB0QKXv7Dw&s=7RT-emP8kpFQ1NAQn6MxdRyt8N1z8blOyGY0-o_XwNw&e= >>>> ________________________________________ >>>> From: IBM Mainframe Discussion List [[email protected]] on >> behalf of Ambros, Thomas >> [[email protected]] >>>> Sent: Monday, February 24, 2020 3:43 PM >>>> To: [email protected] >>>> Subject: Rexx parse using period as placeholder >>>> >>>> A trivial item, but this surprised me. >>>> >>>> I wanted to parse out the string 'word3' using the period as a >>>> place >> holder. The input could have a blank delimited string containing an >> embedded period before the one I wanted to parse out. The Parse Var >> as coded didn't work. Using the Parse Value as coded there does work. >> I didn't know it would behave like that. I can't seem to find this >> documented but I might have overlooked something. >>>> myVar = 'word1 word2 9.12 word3.ext' >>>> Parse Var myVar . . . myVal '.' . >>>> Parse Value Subword(myVar,4) with myVal2 '.' . >>>> Say 'myVal=' myVal >>>> Say 'myVal2=' myVal2 >>>> Exit >>>> >>>> Trace R of that code: >>>> >>>> 3 *-* myVar = 'word1 word2 9.12 word3.ext' >>>> >>> "word1 word2 9.12 word3.ext" >>>> 4 *-* Parse Var myVar . . . myVal '.' . >>>> >.> "word1" - >>>> >.> "word2" >>>> >.> "9" >>>> >>> "" >>>> >.> "12 word3.ext" >>>> 5 *-* Parse Value Subword(myVar,4) with myVal2 '.' . >>>> >>> "word3.ext" >>>> >>> "word3" >>>> >.> "ext" >>>> 6 *-* Say 'myVal=' myVal >>>> >>> "myVal= " >>>> myVal= >>>> 7 *-* Say 'myVal2=' myVal2 >>>> >>> "myVal2= word3" >>>> myVal2= word3 >>>> 8 *-* Exit >>>> >>>> Thomas Ambros >>>> zEnterprise Operating Systems >>>> zEnterprise Systems Management >>>> 518-436-6433 >>>> >>>> >>>> This communication may contain privileged and/or confidential >> information. It is intended solely for the use of the addressee. If >> you are not the intended recipient, you are strictly prohibited from >> disclosing, copying, distributing or using any of this information. If >> you received this communication in error, please contact the sender >> immediately and destroy the material in its entirety, whether >> electronic or hard copy. This communication may contain nonpublic >> personal information about consumers subject to the restrictions of >> the Gramm-Leach-Bliley Act. You may not directly or indirectly reuse >> or redisclose such information for any purpose other than to provide >> the services for which you are receiving the information. >>>> 127 Public Square, Cleveland, OH 44114 >>>> >>>> If you prefer not to receive future e-mail offers for products or >> services from Key, send an email to mailto:[email protected] with >> 'No Promotional E-mails' in the SUBJECT line. >>>> ------------------------------------------------------------------- >>>> --- 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 >>>> ------------------------------------------------------------------- >>>> --- 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 >>>> >>>> >>> --------------------------------------------------------------------- >>> - 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 >> > > -- > Wayne V. Bickerdike > > ---------------------------------------------------------------------- > For IBM-MAIN subscribe / signoff / archive access instructions, send email to > [email protected] with the message: INFO IBM-MAIN > This communication may contain privileged and/or confidential information. It > is intended solely for the use of the addressee. If you are not the intended > recipient, you are strictly prohibited from disclosing, copying, distributing > or using any of this information. If you received this communication in > error, please contact the sender immediately and destroy the material in its > entirety, whether electronic or hard copy. This communication may contain > nonpublic personal information about consumers subject to the restrictions of > the Gramm-Leach-Bliley Act. You may not directly or indirectly reuse or > redisclose such information for any purpose other than to provide the > services for which you are receiving the information. > > 127 Public Square, Cleveland, OH 44114 > > If you prefer not to receive future e-mail offers for products or services > from Key, send an email to mailto:[email protected] with 'No Promotional > E-mails' in the SUBJECT line. > > ---------------------------------------------------------------------- > 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 ---------------------------------------------------------------------- For IBM-MAIN subscribe / signoff / archive access instructions, send email to [email protected] with the message: INFO IBM-MAIN
