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

Reply via email to