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

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
http://mason.gmu.edu/~smetz3

________________________________________
From: IBM Mainframe Discussion List [IBM-MAIN@LISTSERV.UA.EDU] on behalf of 
Ambros, Thomas [0000010f77c934b1-dmarc-requ...@listserv.ua.edu]
Sent: Monday, February 24, 2020 4:26 PM
To: IBM-MAIN@LISTSERV.UA.EDU
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 <IBM-MAIN@LISTSERV.UA.EDU> On Behalf Of 
Seymour J Metz
Sent: Monday, February 24, 2020 16:17
To: IBM-MAIN@LISTSERV.UA.EDU
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_-7Esmetz3&d=DwIFAg&c=Y1KkN7JyAPjrAJTUCirS0fy9vQY8xn4_Oh4EEEpbXx4&r=7ds2LAJ99_WyGG6a4BwzaJ7R0vee6JgTc4Txes6yEew&m=RwHovw9Jb8ZzPnV0Fb8JtuHSrWfHboK75HB0QKXv7Dw&s=7RT-emP8kpFQ1NAQn6MxdRyt8N1z8blOyGY0-o_XwNw&e=

________________________________________
From: IBM Mainframe Discussion List [IBM-MAIN@LISTSERV.UA.EDU] on behalf of 
Ambros, Thomas [0000010f77c934b1-dmarc-requ...@listserv.ua.edu]
Sent: Monday, February 24, 2020 3:43 PM
To: IBM-MAIN@LISTSERV.UA.EDU
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:dnereque...@key.com with 'No Promotional E-mails' 
in the SUBJECT line.

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

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



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