While the Eunix RE syntax is grotesque, the regexen are incredibly useful. I just wish that they had adopted the pattern syntax from SNOBOL or Wylbur.
-- Shmuel (Seymour J.) Metz http://mason.gmu.edu/~smetz3 ________________________________________ From: IBM Mainframe Discussion List [[email protected]] on behalf of Tony Thigpen [[email protected]] Sent: Tuesday, February 25, 2020 8:14 AM To: [email protected] Subject: Re: Rexx parse using period as placeholder "regular expressions". What a misnamed item. It should be called "geek readable only expressions". :-) Tony Thigpen David Crayford wrote on 2/25/20 8:03 AM: > What you really need is regular expressions ;) > https://secure-web.cisco.com/1kIlD0ha2diggivtg1Lq8_SbQw6h3UF1q45_Zj1fBqbYOqGvS80YjIiUJ6nPf5CSgbJyj7AQGLyplMFz59nLX1MtnXRBk5UXwLZURqx-94H0Y9qt0ig2KDxquJeAiF_5N9oXhL45b6w9ap-B24BrQRlgVbMSWXAiLsLy9o46hK-OVUZ5WEvi8i5iUcZ2Xj1cc8y2bTLdCghqhiYIh9sEO5ZxGXWrlBvRm3jzootC4sNpfX0j6iiCPVJsDtNhjh0TowRC62BSjFJ_ZXUAKN9FqV_6wFk0UMa_3dBOaOt3-7JVY93KJ6GUsWAn0CToRaksuiAE2SsW6yJyrK2P9mdh4mEUoLCxNCckEuoYjRyKW4br0iHCFSKd6Xi4wJKpVQVHJfkEqKWKfsNMRzj3-mo3YWctLKaKrXsH2SBU7l-wqPoeG482sth6ZkB6p9GgXJD37/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 ---------------------------------------------------------------------- For IBM-MAIN subscribe / signoff / archive access instructions, send email to [email protected] with the message: INFO IBM-MAIN
