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
> http://mason.gmu.edu/~smetz3
>
> ________________________________________
> 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
> > http://mason.gmu.edu/~smetz3
> >
> > ________________________________________
> > 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
> >> http://mason.gmu.edu/~smetz3
> >>
> >> ________________________________________
> >> 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://secure-web.cisco.com/1-qpVukWY5CQ__uk-jb69c-vU9oQiHr0QYGSPlCeoZgyD2_0Vr7rZvCFOZMHJg7zk3VOksBvTUY8MLW1evN4UV9cNBh-pn9n-5F9_X82JabsK-ab5tZgKrsgKaJaEaxaxX5DQT-npVqFY2v_bsph_x8TPP0FtlXCodigNSekdfPE7jkgJNBmS59AWuMpG8X-Uk87HGTSjWom-rjWZ2cck7YmxwA8YD0v-eN-AL17ABCPz1J03MFZeG5DTXPPIQZDHjFYyC1zarF945-8oyYAd868yq1R6J7tuZO3LwSG-nXLyxFjuFhxAFLZjb5wzxr9ud0_gAOZpFtSdNUpsdux1AoWvZREOg5L4JMcfEVubG-1nO2eSTtdsuvL3IPGSGD4-HEKFuhCLSVZQb4nT1RtVUgxxwK-lTjuUgN8iE103myJE9v-kJevMwsdsZ3jGRYmT/https%3A%2F%2Fgithub.com%2Ftitan-lang%2Fc-parser%2Fblob%2Fmaster%2Fc99.lua
> .
> >>
> >>
> >> 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
>
-- 
Scott Ford
IDMWORKS
z/OS Development

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