× The internal search function is temporarily non-functional. The current search engine is no longer viable and we are researching alternatives.
As a stop gap measure, we are using Google's custom search engine service.
If you know of an easy to use, open source, search engine ... please contact support@midrange.com.



My problem is that my coding style these days is so heavily oriented towards teaching examples that I'm not sure I could say with any certainty what I would do in production code!

That said. If the code was going to be injected direct in the mainline then it might look something like this:

start = %scanR( '/-' : value(i) ) + 2;
charNum = %Subst( value(i) : start : %Len(value(i)) - start );
num = %Dec(charNum : 9 : 2);

In other words the major steps are broken out. Which certainly simplifies debugging.

If it was to be placed in a subproc I might condense it - but only if performance were an issue. Even then, I suspect that if this was in a procedure the optimizer could do a better job than me of retaining values in registers and discarding spurious store operations etc. to improve performance. So condensing the code might not serve any purpose except make it harder for others to understand what I had done!

One aspect that interested me as I wrote this was the opportunity it presented to trap errors and diagnose them appropriately - something that we have not considered at all in this discussion to date.

For example - if I use a regex solution how do I detect and signal errors?

In my case I can easily add definitive validation - for example:
- If start = 0 then the terminator was missing.
- There is no value if charNum = spaces.
- An invalid number can be detected by monitoring around num =
- ... etc. etc.

It occurs to me that perhaps this should move to RPG400 before David shouts at us.


On Jul 31, 2020, at 6:58 PM, Niels Liisberg <nli@xxxxxxxxxxxxxxxxx> wrote:

Great!

I get the picture. But how, Jon looks your implementation in pure RPG ?
And let’s discuss it. I need to know the pro/cons since I am telling “best
practices “ for customers, so I might be wrong.

lør. 1. aug. 2020 kl. 00.07 skrev Nathan Andelin <nandelin@xxxxxxxxx>:

While the regex discussion is interesting, the original post was about the
best way of extracting the number at the end of the string. It horrified me
(kind of) that Art proposed the idea of replacing all prefix-characters
with spaces, which is a valid use case for a different problem, but only
serves to add overhead to the problem at hand.


On Fri, Jul 31, 2020 at 3:01 PM Kevin Bucknum <Kevin@xxxxxxxxxxxxxxxxxxx>
wrote:

regex101.com is a good place to get explanations for regexes. The period
means any character. The asterisk means match as as many characters as
you
can find. By default it is greedy which means it will try and grab as
many
characters as it can. The N is just an N. So you are telling it to match
any characters up until you get to a capital N. Because it's greedy, it
will find the last capital N. For regex_replace, if you don't provide a
third parameter then it defaults to blanks. So -
regex_replace(source_string,'.*N') mean convert everything up to and
including the last capital N, and replace it with blanks.

--
This is the Midrange Systems Technical Discussion (MIDRANGE-L) mailing list
To post a message email: MIDRANGE-L@xxxxxxxxxxxxxxxxxx
To subscribe, unsubscribe, or change list options,
visit: https://lists.midrange.com/mailman/listinfo/midrange-l
or email: MIDRANGE-L-request@xxxxxxxxxxxxxxxxxx
Before posting, please take a moment to review the archives
at https://archive.midrange.com/midrange-l.

Please contact support@xxxxxxxxxxxxxxxxxxxx for any subscription related
questions.

Help support midrange.com by shopping at amazon.com with our affiliate
link: https://amazon.midrange.com

--
This is the Midrange Systems Technical Discussion (MIDRANGE-L) mailing list
To post a message email: MIDRANGE-L@xxxxxxxxxxxxxxxxxx
To subscribe, unsubscribe, or change list options,
visit: https://lists.midrange.com/mailman/listinfo/midrange-l
or email: MIDRANGE-L-request@xxxxxxxxxxxxxxxxxx
Before posting, please take a moment to review the archives
at https://archive.midrange.com/midrange-l.

Please contact support@xxxxxxxxxxxxxxxxxxxx for any subscription related questions.

Help support midrange.com by shopping at amazon.com with our affiliate link: https://amazon.midrange.com


As an Amazon Associate we earn from qualifying purchases.

This thread ...


Follow On AppleNews
Return to Archive home page | Return to MIDRANGE.COM home page

This mailing list archive is Copyright 1997-2024 by midrange.com and David Gibbs as a compilation work. Use of the archive is restricted to research of a business or technical nature. Any other uses are prohibited. Full details are available on our policy page. If you have questions about this, please contact [javascript protected email address].

Operating expenses for this site are earned using the Amazon Associate program and Google Adsense.