R'Shmuel,
You may have to explain what "AK" means.
I'm not sure that everyone is familiar with this.

Regards,
David

On 2020-02-27 10:46, Seymour J Metz wrote:
You are being pedantic, but that's ok.
When I was at NSF there was a van with the license number PEDANT. I had lust in 
my heart for that plate,

I have found (from my co-workers especially) that most mainframe people
of a certain vintage are not willing to learn new stuff.
My experience is very different; I see the same characteristic regardless of 
age or platform.  I have met AKs who are eager to learn and young fogies who 
are prematurely senile. I have met mainframe people interested in learning new 
things and PC people who are set in their ways.

Just on this list you can see lots of old dogs doing new tricks. Yeah, there 
are Luddites here as well, but it were ever thus.


--
Shmuel (Seymour J.) Metz
https://eur01.safelinks.protection.outlook.com/?url=http:%2F%2Fmason.gmu.edu%2F~smetz3&data=02%7C01%7C%7C8a96dc84543045b4887208d7bb9c664a%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C637184152714644442&sdata=CMTqFhQZbs%2FrnWS0S%2F2gKo8fPjRckVmI9BvwED8XUQU%3D&reserved=0

________________________________________
From: IBM Mainframe Discussion List [IBM-MAIN@LISTSERV.UA.EDU] on behalf of 
David Crayford [dcrayf...@gmail.com]
Sent: Thursday, February 27, 2020 9:59 AM
To: IBM-MAIN@LISTSERV.UA.EDU
Subject: Re: Rexx parse using period as placeholder

You are being pedantic, but that's ok.

I have found (from my co-workers especially) that most mainframe people
of a certain vintage are not willing to learn new stuff.
So regular expressions are off the menu when they can write logic to do
the same thing using their language of choice.
Of course, that's totally fine. Old dogs new tricks! RE does take some
learning but it's a case of "I can't be bothered".

On 2020-02-27 10:42 PM, Seymour J Metz wrote:
but I don't expect anybody on this forum to bother downloading it
because writing logic is preferable to learning something new ;)
   1. This is a listserv mailing list, not a forum
   2. I am far from the only reader of this list to enjoy new things,
       and in particular I am far from being the only one to value
       the expressive power of regexen.
   3. Don't confuse lack of familiarity with prejudice against;
       why not give some examples and see whether anybody is interested?


--
Shmuel (Seymour J.) Metz
https://eur01.safelinks.protection.outlook.com/?url=http:%2F%2Fmason.gmu.edu%2F~smetz3&data=02%7C01%7C%7C8a96dc84543045b4887208d7bb9c664a%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C637184152714644442&sdata=CMTqFhQZbs%2FrnWS0S%2F2gKo8fPjRckVmI9BvwED8XUQU%3D&reserved=0

________________________________________
From: IBM Mainframe Discussion List [IBM-MAIN@LISTSERV.UA.EDU] on behalf of 
David Crayford [dcrayf...@gmail.com]
Sent: Thursday, February 27, 2020 9:30 AM
To: IBM-MAIN@LISTSERV.UA.EDU
Subject: Re: Rexx parse using period as placeholder

I consider simple to be a single line regular expression which can
handle the parsing grammar in one hit. Now, that may not to simple to
most mainframe old timers
but it's a walk in the park for young guys.

Like I said I have a RE package on github that can do this stuff in REXX
but I don't expect anybody on this forum to bother
downloading it because writing logic is preferable to learning something
new ;)

On 2020-02-27 9:58 PM, scott Ford wrote:
Hey David,

What do you mean by simple ? Less stmts ?

On Thu, Feb 27, 2020 at 8:50 AM Seymour J Metz <sme...@gmu.edu> wrote:

As an alternative to regexen, there is a package called PROC that does the
subset of IKJPARSE needed for CLIST style parameters. There may be other
such tools out there; if I knew of a decent search engine ...


--
Shmuel (Seymour J.) Metz
https://eur01.safelinks.protection.outlook.com/?url=http:%2F%2Fmason.gmu.edu%2F~smetz3&amp;data=02%7C01%7C%7C8a96dc84543045b4887208d7bb9c664a%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C637184152714644442&amp;sdata=CMTqFhQZbs%2FrnWS0S%2F2gKo8fPjRckVmI9BvwED8XUQU%3D&amp;reserved=0

________________________________________
From: IBM Mainframe Discussion List [IBM-MAIN@LISTSERV.UA.EDU] on behalf
of David Crayford [dcrayf...@gmail.com]
Sent: Thursday, February 27, 2020 6:07 AM
To: IBM-MAIN@LISTSERV.UA.EDU
Subject: Re: Rexx parse using period as placeholder

OK. Let me change the requirements again ;) How about also handling
single quotes for a fully qualified data set.

Simple to do with a regex. Not so simple using REXX.

Syntax:

         INDSN(DSNAME(MEMBER))
         INDSN(DSNAME)
         INDSN('HLQ.DSNAME(MEMBER)')
         INDSN('HLQ.DSNAME')


On 2020-02-27 12:28 AM, Seymour J Metz wrote:
Great! How will that work if I don't have a member name?
The code will tell me not to believe you when you write

"Syntax:

         INDSN(DSNAM(MEMBER))"

Writing the code is the easy part; the hard part is getting the actual
requirements.
--
Shmuel (Seymour J.) Metz
https://eur01.safelinks.protection.outlook.com/?url=http:%2F%2Fmason.gmu.edu%2F~smetz3&amp;data=02%7C01%7C%7C8a96dc84543045b4887208d7bb9c664a%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C637184152714644442&amp;sdata=CMTqFhQZbs%2FrnWS0S%2F2gKo8fPjRckVmI9BvwED8XUQU%3D&amp;reserved=0

________________________________________
From: IBM Mainframe Discussion List [IBM-MAIN@LISTSERV.UA.EDU] on
behalf of David Crayford [dcrayf...@gmail.com]
Sent: Wednesday, February 26, 2020 7:18 AM
To: IBM-MAIN@LISTSERV.UA.EDU
Subject: Re: Rexx parse using period as placeholder

Great! How will that work if I don't have a member name?

INDSN(DSNAME)


On 2020-02-26 8:11 PM, Seymour J Metz wrote:
When I'm testing a template I usually use variable names so it's easier
to follow what's happening; feel free to change them to periods.
trace i;parse var parm  kw '(' dsn '(' mem ')' ')'
         95 *-*           parse var parm  kw '(' dsn '(' mem ')' ')'
            >V>             "INDSN(DSNAME(MEMBER))"
            >L>             "("
            >>>             "("
            >>>             "INDSN"
            >L>             "("
            >>>             "("
            >>>             "DSNAME"
            >L>             ")"
            >>>             ")"
            >>>             "MEMBER"
            >L>             ")"
            >>>             ")"
         96 *-*           trace 'Off'                    /* Don't trace
rexxtry.
      */
       ................................................ REXXTRY.CMD on OS/2
say dsn mem
DSNAME MEMBER



--
Shmuel (Seymour J.) Metz
https://eur01.safelinks.protection.outlook.com/?url=http:%2F%2Fmason.gmu.edu%2F~smetz3&amp;data=02%7C01%7C%7C8a96dc84543045b4887208d7bb9c664a%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C637184152714644442&amp;sdata=CMTqFhQZbs%2FrnWS0S%2F2gKo8fPjRckVmI9BvwED8XUQU%3D&amp;reserved=0

________________________________________
From: IBM Mainframe Discussion List [IBM-MAIN@LISTSERV.UA.EDU] on
behalf of David Crayford [dcrayf...@gmail.com]
Sent: Wednesday, February 26, 2020 7:01 AM
To: IBM-MAIN@LISTSERV.UA.EDU
Subject: Re: Rexx parse using period as placeholder

I've got a REXX parse puzzle to solve and I would like suggestions on
how to solve it.

Syntax:

          INDSN(DSNAM(MEMBER))

          The code is simple. It uses the parse instruction with a
template.
             parse var parm . '(' val ')'


            *-* parm = 'INDSN(DSNAME(MEMBER))'
            >L>   "INDSN(DSNAME(MEMBER))"
            *-* parse var parm . '(' val ')'
            >.>   "INDSN"
            >>>   "DSNAME(MEMBER"

Unfortunately the value is truncated because "parse" has no way to
anchor to the end of the string.

Using a regex this is very simple "\((.*)\)$"

Most modern languages have PEG libraries (parsing expression grammers)
which are much more powerful that regex. They can be called recursively
and used to implement real parsers.

Even a simple scripting like Lua (which runs on z/OS) has a library
which can be used to implement a C99 parser in 500 lines of code

https://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fsecure-web.cisco.com%2F1-qpVukWY5CQ__uk-jb69c-vU9oQiHr0QYGSPlCeoZgyD2_0Vr7rZvCFOZMHJg7zk3VOksBvTUY8MLW1evN4UV9cNBh-pn9n-5F9_X82JabsK-ab5tZgKrsgKaJaEaxaxX5DQT-npVqFY2v_bsph_x8TPP0FtlXCodigNSekdfPE7jkgJNBmS59AWuMpG8X-Uk87HGTSjWom-rjWZ2cck7YmxwA8YD0v-eN-AL17ABCPz1J03MFZeG5DTXPPIQZDHjFYyC1zarF945-8oyYAd868yq1R6J7tuZO3LwSG-nXLyxFjuFhxAFLZjb5wzxr9ud0_gAOZpFtSdNUpsdux1AoWvZREOg5L4JMcfEVubG-1nO2eSTtdsuvL3IPGSGD4-HEKFuhCLSVZQb4nT1RtVUgxxwK-lTjuUgN8iE103myJE9v-kJevMwsdsZ3jGRYmT%2Fhttps%253A%252F%252Fgithub.com%252Ftitan-lang%252Fc-parser%252Fblob%252Fmaster%252Fc99.lua&amp;data=02%7C01%7C%7C8a96dc84543045b4887208d7bb9c664a%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C637184152714644442&amp;sdata=Ulwg97WddebZwkDescXg1UzcV1jh3PLyWpQfbdHl%2Fbs%3D&amp;reserved=0
.
On 2020-02-26 11:41 AM, Paul Gilmartin wrote:
On 2020-02-24, at 13:43:52, Ambros, Thomas wrote:
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.  ...
myVar = 'word1 word2 9.12 word3.ext'
Parse Var myVar . . . myVal '.' .
          ...
Say 'myVal=' myVal
          ...
The simple answer to the elliptically stated problem is:
          MyVal = 'word3'

A more general solution, using regex is:
556 $ echo 'word1 word2 9.12 word3.ext' | sed 's/.* \([^.]*\).*/\1/'
word3
557 $
This finds the last substring in the subject preceded by a space
and followed by a period.

Full disclosure, for Tony to gloat:
o It's easier to code than to review.
o I got it right on the third try.
o I haven't fuzz tested.

-- gil

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

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