Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

ooREXX & Regina REXX

732 views
Skip to first unread message

Graham Hobbs

unread,
May 5, 2012, 9:26:17 PM5/5/12
to
Hello,
Loosey goosey question:
I have >100 very vanilla REXX pgms that work under ooREXX on my
Windows XP platform.
Are they likely to work under Regina REXX?
cheers
Graham Hobbs

Glenn Knickerbocker

unread,
May 7, 2012, 9:33:32 AM5/7/12
to
On 5/5/2012 9:26 PM, Graham Hobbs wrote:
> I have >100 very vanilla REXX pgms that work under ooREXX on my
> Windows XP platform.
> Are they likely to work under Regina REXX?

As long as "vanilla" includes not using any Object features (including
the stem.[tail] syntax), yes, definitely. Regina is completely ANSI
Rexx compatible.

ŹR

Graham Hobbs

unread,
May 7, 2012, 9:56:10 AM5/7/12
to
Thanks Glenn,
I suspected as much. I haven't (consciously) used any OO, but will
check this. Once one develops a technique in programming, subsequent
efforts tend to involve much cut and paste where possible.
Graham

Jack

unread,
May 7, 2012, 4:42:08 PM5/7/12
to
I used Rexx for years under OS/2. When IBM killed OS/2 I used Regina
(Reginald) Rexx under Win XP. It was OK, but you couldn't run any of
the Rexx utility functions. It also had some of it's own functions that
only exist in Regina. Anyway, it wouldn't run under Win7 on my new 64
bit PC, so recently I installed ooRexx-4.0.1.x86_64.exe for Win 7 and
damn, I think I died and went to heaven. All the Rexx utility functions
work w/o any need to physically install them. Of course the proprietary
functions I used out of laziness cost me some time but I knew that when
I used them.

I would not mess with Regina unless forced for some reason, but it
probably will work fine with most of your stuff unless you used ooREX
extended functions.

If you do, stay away from the proprietary functions as sooner or later
you will be running a newer version of win and Reginald would not
install for me, and really, I'm glad. ooRexx is now about exactly as it
was under OS/2, and I'm happily re-learning it with my "Writing OS/2
Rexx Programs book":-)

BTW, I also never use the OO stuff, and am immediately lost when I see
"not" tilde signs.

--
Jack
Add Life to your Days not Days to your Life.
http://jbstein.com

Jeremy Nicoll - news posts

unread,
May 7, 2012, 5:04:55 PM5/7/12
to
Jack <jbst...@comcast.net> wrote:

> I used Rexx for years under OS/2. When IBM killed OS/2 I used Regina
> (Reginald) Rexx under Win XP.

Just to clarify... Reginald is/was Jeff Glatt's personal version of Regina,
which was substantially different from Regina itself. I have no idea if
Reginald is still under development, not having seen any posts from Jeff for
quite a few years.

--
Jeremy C B Nicoll - my opinions are my own.

Email sent to my from-address will be deleted. Instead, please reply
to newsre...@wingsandbeaks.org.uk replacing "aaa" by "284".

Swifty

unread,
May 8, 2012, 7:59:18 AM5/8/12
to
On Mon, 07 May 2012 16:42:08 -0400, Jack <jbst...@comcast.net> wrote:

>BTW, I also never use the OO stuff, and am immediately lost when I see
>"not" tilde signs.

I have to rise to this challenge! Have you ever wanted to do something
like this:

Drop persnum
Stem.persnum = 'ABC123'
...
Persnum = '999112'
...
Say stem.persnum /* and get ABC123 */

With any of the Object REXXs, this becomes simple:

Stem.['PERSNUM'] = 'ABC123' /* OK even if variable PERSNUM exists */
...
Say Stem.['PERSNUM'] /* Will *always* say ABC123 */


For me, going back to a non-object REXX would be like having one of my
arms removed, even though I use almost none of the actual object
features.

--
Steve Swift
http://www.swiftys.org.uk/swifty.html
http://www.ringers.org.uk

Jack

unread,
May 8, 2012, 9:29:39 AM5/8/12
to
On 5/8/2012 7:59 AM, Swifty wrote:
> On Mon, 07 May 2012 16:42:08 -0400, Jack<jbst...@comcast.net> wrote:
>
>> BTW, I also never use the OO stuff, and am immediately lost when I see
>> "not" tilde signs.
>
> I have to rise to this challenge! Have you ever wanted to do something
> like this:
>
> Drop persnum
> Stem.persnum = 'ABC123'
> ...
> Persnum = '999112'
> ...
> Say stem.persnum /* and get ABC123 */
>
> With any of the Object REXXs, this becomes simple:
>
> Stem.['PERSNUM'] = 'ABC123' /* OK even if variable PERSNUM exists */
> ...
> Say Stem.['PERSNUM'] /* Will *always* say ABC123 */
>
>
> For me, going back to a non-object REXX would be like having one of my
> arms removed, even though I use almost none of the actual object
> features.

That was my point. I have no clue how to use the actual object features,
thus, I don't use ~tilde's or ::Methods and just the mention of that
stuff gets my head spinning. How stems and functions and variable
assignments work under the hood I don't know. I try to keep it simple:

n = 1
stem.n = "abc123"
say stem.n
stem.n = "999112"
say stem.n

something~new and ::method string would be total mystery to me.

Just the language used in OO programing puts me brain on all ahead stop.
Years ago when I taught myself the basics of C, and then tried to
learn C++, wow, talk about obfusticated instructions... I never
recovered, and now I'm old and don't think I could ever learn to use
actual object oriented programing, although I'm pretty sure it's good stuff.

Graham Hobbs

unread,
May 8, 2012, 10:35:08 AM5/8/12
to
---
Jack,
Am like you. What I'm reading about Regina is not bad but not
encouraging so am thinking, given the names posting here, that we are
from mainframe backgrounds, working in PC environments and usually
heading for ooREXX. Hope I'm right.

Really don't want to spend the time to parallel test 100+ REXX's under
Regina.

Anyone know if ooREXX might be classified as the dominant player?
Graham

Jeremy Nicoll - news posts

unread,
May 8, 2012, 11:00:18 AM5/8/12
to
Graham Hobbs <gho...@cdpwise.net> wrote:

> Am like you. What I'm reading about Regina is not bad but not encouraging
> so am thinking, given the names posting here, that we are from mainframe
> backgrounds, working in PC environments and usually heading for ooREXX.
> Hope I'm right.
>
> Really don't want to spend the time to parallel test 100+ REXX's under
> Regina.
>
> Anyone know if ooREXX might be classified as the dominant player?

I think so. But more to the point it has several developers. Contrast the
activity on the SourceForge developers' mail list and the bug tracker for
ooREXX (depressingly large number of bugs, perhaps, but they tend to be in
the newest features which one needn't use), with the sparse activity on the
Regina maillist.


My own view on the oo part of ooREXX is that I think I'll never get to grips
with it. Almost all my REXX was written when I was a MVS systems programmer.


However that doesn't preclude one from writing execs which are 99% classic
rexx and just use the occasional ooREXX feature. For example rather than
read a file line by line I do sometimes use the construct:

indx = .stream~new(acntindx) /* 'acntindx' contains the filename */
idxlines = indx~arrayin /* create an array of index's lines */
indx~close

[I know there's an "execio" extension coming, which I might well use instead
when it gets here because it will feel more 'right'.]

You don't need to know precisely how, in oo terms, the ~arrayin thing works
to use it. I certainly don't. The lines of data themselves can be accessed
one by one by

do ix over idxlines
say "a line of data was:" ix
end


I also use the following in one exec to display a "timed message" (except
this one stays until banished) on screen with:

msghandl = timedMessage(telltext,telltitl,-1)

(parms are text to display, message box's title, and the "-1" means keep it
on screen)

later killing that off with:

if symbol('msghandl') == 'VAR' then do
msghandl~stopit
drop msghandl
end

and to use that one needs to code at the end of the exec:

::requires 'oodplain.cls'

which I accompany with a comment saying I need it for 'timedMessage'.


It's not hard to extract little bits of useful code from samples supplied
with ooREXX, and to delve into the reference manuals to find out more.

Rugxulo

unread,
May 8, 2012, 11:44:07 AM5/8/12
to
Hi,

On May 8, 9:35 am, Graham Hobbs <gho...@cdpwise.net> wrote:
> On Tue, 08 May 2012 09:29:39 -0400, Jack <jbste...@comcast.net> wrote:
> >On 5/8/2012 7:59 AM, Swifty wrote:
>
> >> For me, going back to a non-object REXX would be like having one of my
> >> arms removed, even though I use almost none of the actual object
> >> features.
>
> >That was my point. I have no clue how to use the actual object features,
> >thus, I don't use ~tilde's or ::Methods and just the mention of that
> >stuff gets my head spinning.  How stems and functions and variable
> >assignments work under the hood I don't know.  I try to keep it simple:
> >something~new and ::method string would be total mystery to me.
>
> >Just the language used in OO programing puts me brain on all ahead stop.
> >  Years ago when I taught myself the basics of C, and then tried to
> >learn C++, wow, talk about obfusticated instructions... I never
> >recovered, and now I'm old and don't think I could ever learn to use
> >actual object oriented programing, although I'm pretty sure it's good stuff.

First, let me admit that I'm a much weaker programmer than all of you,
lacking experience. And I'm heavily procedural in thinking too, never
got going into OOP. In fact, I'd even go so far to say that the OOP
zealots are a bit misguided in using and promoting it so heavily. It
really can complicate things 10x worse. However ... having said that,
OOP seems to be a "barely" good idea. In my limited experience, if I
had to sum it up, OOP seems to be more about containing your code +
data together, making things easily extensible without much rewriting,
and being easy to reuse. In theory. (BTW, one of the "simpler" OOP-ish
languages is Oberon, which I dabbled with a bit recently. It's not
like C++ at all.)

> Jack,
> Am like you. What I'm reading about Regina is not bad but not
> encouraging

I'm not quite fluent in REXX yet, but Regina is really awesome, a lot
of effort has been put into it. I use it and am plenty happy with it.

> so am thinking, given the names posting here, that we are
> from mainframe backgrounds, working in PC environments and usually
> heading for ooREXX. Hope I'm right.

It's from IBM and works well. Heck, I don't even need it, and even I
installed it locally (but again, have never bothered with the OOP
extensions).

> Really don't want to spend the time to parallel test 100+ REXX's under
> Regina.

Okay, I sympathize there.

> Anyone know if ooREXX might be classified as the dominant player?

As is obvious from this newsgroup, it's pretty darn popular. My only
"complaint" would be that it's not strict ANSI and maybe not quite as
portable code as Regina, but I guess that matters less since ooREXX is
easily available, at least for popular OSes.

Shmuel Metz

unread,
May 8, 2012, 12:14:45 AM5/8/12
to
In <jo9c31$iqg$2...@dont-email.me>, on 05/07/2012
at 04:42 PM, Jack <jbst...@comcast.net> said:

>I used Rexx for years under OS/2. When IBM killed OS/2 I used
>Regina (Reginald) Rexx under Win XP.

Regina and Reginald are different programs.

--
Shmuel (Seymour J.) Metz, SysProg and JOAT <http://patriot.net/~shmuel>

Unsolicited bulk E-mail subject to legal action. I reserve the
right to publicly post or ridicule any abusive E-mail. Reply to
domain Patriot dot net user shmuel+news to contact me. Do not
reply to spam...@library.lspace.org

Shmuel Metz

unread,
May 8, 2012, 12:12:54 AM5/8/12
to
In <4eOdnQ8ZO5e6UjrS...@bestweb.net>, on 05/07/2012
at 09:33 AM, Glenn Knickerbocker <No...@bestweb.net> said:

>Regina is completely ANSI Rexx compatible.

However, OOREXX is not, e.g., "stem1.=stem2." violates the ANSI
standard.

Shmuel Metz

unread,
May 8, 2012, 12:52:31 PM5/8/12
to
In <hmbiq7t3h5i54snp5...@4ax.com>, on 05/08/2012
at 10:35 AM, Graham Hobbs <gho...@cdpwise.net> said:

>Anyone know if ooREXX might be classified as the dominant player?

On what platform? It probably is on the PC, but AFAIK there are no
ports for the mainframe.

Gerard_Schildberger

unread,
May 8, 2012, 3:59:10 PM5/8/12
to
On May 8, 6:59 am, Swifty <steve.j.sw...@gmail.com> wrote:
Concerning the 1st program snipette: was that written for classic
REXX?

I just executed the code ...
=========================================
/*REXX test case*/
Drop persnum
Stem.persnum = 'ABC123'
Persnum = '999112'
Say Stem.persnum /* and get ... ? */
=========================================

under three classic REXXes and they all said:

STEM.999112

_____________________________________ Gerard Schildberger

Glenn Knickerbocker

unread,
May 8, 2012, 4:17:08 PM5/8/12
to
On 5/8/2012 9:29 AM, Jack wrote:
> That was my point. I have no clue how to use the actual object features,
> thus, I don't use ~tilde's or ::Methods and just the mention of that
> stuff gets my head spinning.

Here's a very, very gentle introduction using the familiar language of
stems. In Classic Rexx, to make sure the tail of your variable name has
the value you want, you can put it in a variable:

tail = 'abc123'
stem.tail = 456
Say stem.tail

You can also retrieve or set it using the VALUE() function, but you
still need a variable for the tail:

tail = 'abc123'
Call Value 'STEM.TAIL', 456
Say Value('STEM.TAIL')

In Object Rexx, without ever thinking about objects, classes, methods,
or tildes, you can use a new syntax with brackets to avoid having to use
that extra variable:

stem.['abc123'] = 456
Say stem.['abc123']

Now, part of the Object magic going on behind the scenes is that [] and
[]= are the names of two different methods of the Stem class, and
because they're special characters you don't need tildes to access them.
There are actually copies of those same two methods with other names,
AT and PUT, so here's how you do exactly the same thing with tildes and
words instead of brackets:

stem.~put(456, 'abc123')
Say stem.~at('abc123')

Now you're using classes, objects, and methods, and it's all just
another syntax for getting at the same old stemmed variable. You can
take this as a starting point to look at other objects as just more (or
less, usually) complicated versions of a stem, and look at other methods
as similar ways of getting at the data in them.

ŹR

Glenn Knickerbocker

unread,
May 8, 2012, 5:02:23 PM5/8/12
to
On 5/8/2012 3:59 PM, Gerard_Schildberger wrote:
> Concerning the 1st program snipette: was that written for classic
> REXX?

Yes, and Swifty's point was that, as you already knew, it doesn't work.
That's why the [] and []= methods are so useful even if you never use a
single other Object feature.

ŹR

Glenn Knickerbocker

unread,
May 8, 2012, 5:16:16 PM5/8/12
to
On 5/8/2012 12:12 AM, Shmuel (Seymour J.) Metz wrote:
> Glenn Knickerbocker <No...@bestweb.net> said:
>> >Regina is completely ANSI Rexx compatible.
> However, OOREXX is not, e.g., "stem1.=stem2." violates the ANSI
> standard.

Actually, it looks like Regina isn't anymore, either. Starting
in v3.4, it shares the other incompatibility ooRexx has with the
standard: the -- comment syntax.

ŹR

Gerard_Schildberger

unread,
May 8, 2012, 6:31:14 PM5/8/12
to
> ¬R

Yes, for trying to be so compliant, Regina broke itself. I now have to specify a Regina option to make it compliant to the standard:

no_Single_line_comments

(which doesn't work, by the way)
otherwise one of the following two REXX statements will misbehave:

x=4+ ++1
y=5+ --1


To make it work, you have to use an undocumented option:

noSingle_line_comments


Hells bells, I'm still waiting for a definition (in the Regina PDF document)
of what a comment is. It has examples under "null clauses / tracing comments", but no definition. So far, not even a breakage alert has been given. If the
user is prevented (via policies) from SETting global variables, then they're
out of luck.


____________________________________ Gerard Schildberger

Shmuel Metz

unread,
May 9, 2012, 12:16:29 AM5/9/12
to
In <S96dnfn_Eb-j4jTS...@bestweb.net>, on 05/08/2012
at 04:17 PM, Glenn Knickerbocker <No...@bestweb.net> said:

>You can also retrieve or set it using the VALUE() function, but you
>still need a variable for the tail:

No.

tail = 'abc123'
Call Value 'STEM.abc123', 456
Call Value 'STEM.TAIL', 789
Say Value('STEM.abc123') 'and' Value('STEM.TAIL')

[h:\]rexxtry
REXXTRY.CMD lets you interactively try REXX statements.
Each string is executed when you hit Enter.
Enter 'call tell' for a description of the features.
Go on - try a few... Enter 'exit' to end.
tail = 'abc123';Call Value 'STEM.abc123', 456;Call Value 'STEM.TAIL',
789;Say Value('STEM.abc123') 'and' Value('STEM.TAIL')
456 and 789

>you can use a new syntax with brackets to avoid having to use that
>extra variable

It eliminates the need for value(), but there is no need for an extra
variable if you use value().

Glenn Knickerbocker

unread,
May 9, 2012, 12:04:48 PM5/9/12
to
On 5/9/2012 12:16 AM, Shmuel (Seymour J.) Metz wrote:
> No.
>
> tail = 'abc123'
> Call Value 'STEM.abc123', 456
> Call Value 'STEM.TAIL', 789
> Say Value('STEM.abc123') 'and' Value('STEM.TAIL')

But that doesn't tell you whether the tail was taken as a literal string
or evaluated as symbols. Try this:

tail = 'abc123'
Call Value 'STEM.abc123', 456
Call Value 'STEM.TAIL', 789

newtail = 'abc123'
Say stem.newtail /* says 789 */
Say Value('STEM.NEWTAIL') /* says 789 */

And even if your tails never included any variable names, you'd still
have to be concerned with their evaluation:

Call Value 'STEM.abc123', 456
Call Value 'STEM.ABC123', 789
Say Value('STEM.abc123') /* says 789 */
Say Value('STEM.ABC123') /* says 789 */

Since literal symbols are evaluated in upper case, to distinguish mixed
case in your compound variable names in Classic Rexx you always have to
use variables, not literals, in the tail.

ŹR

Jack

unread,
May 9, 2012, 3:45:12 PM5/9/12
to
On 5/8/2012 10:35 AM, Graham Hobbs wrote:

> Jack,
> Am like you. What I'm reading about Regina is not bad but not
> encouraging so am thinking, given the names posting here, that we are
> from mainframe backgrounds, working in PC environments and usually
> heading for ooREXX. Hope I'm right.

I'm not a programer, nor am I from a mainframe background. I was a UNIX
7 local administrator for a few years and I've written code in Dos, Unix
and OS/2 environments but that was enough years ago I'm no longer very
verse in any language. OS/2 Rexx was my favorite and I ran an OPUS BBS
for quite a few years under OS/2 Warp, and had a ton of REXX scripts
that I did all sorts of crazy stuff.

> Really don't want to spend the time to parallel test 100+ REXX's under
> Regina.

I used Reginald which didn't use any external utilities (system
functions like syscls(), sysstemsort() and so on), and had a few
proprietary functions. I just do this for fun and personal stuff, so
you can safely ignore anything I have to say.

> Anyone know if ooREXX might be classified as the dominant player?
> Graham

I know when OS/2 was killed, I installed Reginald and ooREXX and stayed
with Reginald but that was so long ago, I'm not sure why. I only
switched a few weeks ago to ooRexx because Reginald wouldn't install/run
on WIN7 or my 64 bit system, not certain why, but, I'm really glad I
installed ooRexx. Reginald I think is like Regina lite, or something.
My old code written years ago works with oorexx except for the
proprietary functions I lazily used in Reginald. It really wasn't much
trouble to replace them, and I would guess most everything in oorexx
would work in Regina REXX, but since I know nothing about Regina, you
can, as I said, take my thoughts with a huge grain of salt...

Mark Hessling

unread,
May 10, 2012, 5:58:11 AM5/10/12
to
On Tue, 08 May 2012 15:31:14 -0700, Gerard_Schildberger wrote:

> On Tuesday, May 8, 2012 4:16:16 PM UTC-5, Glenn Knickerbocker wrote:
>> On 5/8/2012 12:12 AM, Shmuel (Seymour J.) Metz wrote:
>> > Glenn Knickerbocker <No...@bestweb.net> said:
>> >> >Regina is completely ANSI Rexx compatible.
>> > However, OOREXX is not, e.g., "stem1.=stem2." violates the ANSI
>> > standard.
>>
>> Actually, it looks like Regina isn't anymore, either. Starting in
>> v3.4, it shares the other incompatibility ooRexx has with the standard:
>> the -- comment syntax.

Regina has NEVER been ANSI compliant out of the box. If I made Regina
ANSI compliant out of the box then there would be huge breakage in many
existing programs. If you want strict ANSI behaviour you have to use:
OPTIONS STRICT_ANSI

>>
>> ¬R
>

Yes Regina is now capable of supporting single line comments just like
ooRexx.

And if you don't like them and want to use syntax like:
a = 1--2
instead of
a = 1+2
then you can with the nosingle_line_comments option. Yes the Regina
documentation has a typographical error which states the option is
no_single_line_comments, but if you read all the other descriptions of
OPTIONS you can quite easily deduce that no_single_line_comments is a
simple typographical error.

At least you have the OPTION.


Cheers, Mark

Shmuel Metz

unread,
May 10, 2012, 10:24:48 AM5/10/12
to
In <HfadndP_25oHCDfS...@bestweb.net>, on 05/09/2012
at 12:04 PM, Glenn Knickerbocker <No...@bestweb.net> said:

>But that doesn't tell you whether the tail was taken as a literal
>string or evaluated as symbols.

I seem to have missed a sentece in the OS/2 OREXX documention of
VALUE: "Substitution in a compound name occurs if possible." So
you're right; stem[tail] does allow things that VALUE() does not.
although you can cheat in order to do some of them with value().

stemvalue: PROCEDURE expose stem.
parse arg foo
return value(stem.foo)

Swifty

unread,
May 10, 2012, 11:55:50 AM5/10/12
to
On Thu, 10 May 2012 10:24:48 -0400, Shmuel (Seymour J.) Metz
<spam...@library.lspace.org.invalid> wrote:

> stemvalue: PROCEDURE expose stem.
> parse arg foo
> return value(stem.foo)

I've done the opposite in the past, writing a stem() function with the
express purpose of triggering NoValue when any part of the tail was an
undefined variable.

Here's example code:

Signal on Novalue
Name.steve.1 = 'Swifty' /* This works, despite no "steve" variable*/
Say Name.steve.1 /* No novalue when "steve" not a variable */
Say stem(Name.,'STEVE',1) /* Say's "Swifty" */
Say stem(name.,steve,1) /* Triggers NoValue on "steve" */

So I can pass initialised variables, or literal strings which become
parts of the tail, but an un-initialised variable will trigger
novalue.

I've always wished for some sort of "use strict" declaration that
would include variables in tails in the Novalue processing.

Glenn Knickerbocker

unread,
May 10, 2012, 5:49:37 PM5/10/12
to
On 5/10/2012 5:58 AM, Mark Hessling wrote:
> Regina has NEVER been ANSI compliant out of the box. If I made Regina
> ANSI compliant out of the box then there would be huge breakage in many
> existing programs. If you want strict ANSI behaviour you have to use:
> OPTIONS STRICT_ANSI

Aha, thanks, I hadn't dug any further than your statement on the
SourceForge front page that v3.1 had achieved 100% compliance. In
any case, I'd guess the various optional behaviors are probably well
outside the realm of what will matter to Graham's "very vanilla" programs.

¬R

Glenn Knickerbocker

unread,
May 10, 2012, 6:51:52 PM5/10/12
to
On 5/8/2012 4:17 PM, I wrote:
> stem.~put(456, 'abc123')
> Say stem.~at('abc123')
>
> Now you're using classes, objects, and methods, and it's all just
> another syntax for getting at the same old stemmed variable. You can
> take this as a starting point to look at other objects as just more (or
> less, usually) complicated versions of a stem, and look at other methods
> as similar ways of getting at the data in them.

Other classes aside, here are a couple things that you might always have
wanted to do more simply with stems. Suppose you want to know whether a
particular stemmed variable has been set. In Classic Rexx, you'd use
SYMBOL():

If Symbol('STEM.TAIL') = 'VAR' then /* we've set stem.tail */

But of course that won't distinguish between setting the particular
variable and setting the default value of the stem:

stem. = 'something'
Say Symbol('STEM.TAIL') /* says VAR, regardless of TAIL */

For that, you'd have to keep a list of all the tails you've used. In
Object Rexx, the Stem class gives you a method to tell whether you've
set the particular variable, regardless of whether you've set the
default value:

If stem.~hasIndex(tail) then /* we've set stem.tail specifically */

Now suppose you want to know whether you've set any variable in the stem
to a particular value. In Classic Rexx, either you'd keep a list of
what tails are set and loop through it testing each one, or you'd keep
another stem indexed by the values you've assigned to this one. In
Object Rexx, the Stem class has methods to get at the values without any
of that bookkeeping:

stem.['abc123'] = value
If stem.~hasItem(value) then /* we've got this value already */
Say stem.~index(value) /* says abc123 */

So you gain some powerful tools just by learning the object~method(arg)
syntax and a few methods, without ever worrying about how to create new
classes, methods, or even objects--since just referring to a new stem
variable by name implicitly creates the stem object for you.

ŹR

Swifty

unread,
May 11, 2012, 11:30:10 AM5/11/12
to
On Thu, 10 May 2012 18:51:52 -0400, Glenn Knickerbocker
<No...@bestweb.net> wrote:

>just referring to a new stem
>variable by name implicitly creates the stem object for you

This is just like life - I've fiddled with my PVR player without ever
realising that under the covers, it is an object.

LesK

unread,
May 20, 2012, 11:51:01 PM5/20/12
to
ooRexx now comes from the Rexx Language Association (RexxLA), as does NetRexx.
We got them both as open source from IBM. See:

Http://rexxla.org

The graphics in the middle column are links to specifics of each language
implementation we govern.

--

Les (Change Arabic to Roman to email me)

LesK

unread,
May 21, 2012, 12:18:03 AM5/21/12
to
Sorry to be so late posting, but I've been on vacation attending and presenting
at the 2012 Rexx Language Symposium at RTP. Look for updates to the symposium
page at http://rexxla.org soon!

I'd like to point out that for maximum cross-platform compatibility, if you have
a 64 bit system, you should download 32 bit ooRexx, Regina, THE, whatever as
long as they will fill your *actual* need. Yes, I know that some technical
writers are already harrumphing for 128 bit, but only an extremely small number
of applications that can be driven by Rexx actually *need* 64 bit!

ooRexx version 4.0 changed the API's to support 64 bit, but left the old 32 bit
SAA-Rexx API's in place for old utilities to continue to use w/o recompiling,
which in some cases is impossible to do. <Hope I said that right>

LesK

unread,
May 21, 2012, 1:26:42 AM5/21/12
to
Glenn Knickerbocker wrote:
> On 5/5/2012 9:26 PM, Graham Hobbs wrote:
>> I have >100 very vanilla REXX pgms that work under ooREXX on my
>> Windows XP platform.
>> Are they likely to work under Regina REXX?
>
> As long as "vanilla" includes not using any Object features (including
> the stem.[tail] syntax), yes, definitely. Regina is completely ANSI
> Rexx compatible.
>
> ŹR

If you think your programs might be useful to others, you should strive for
maximum compatibility for your new Rexx friends that are using the 'other'
interpreter. The trick is, how to test for it!

I use ooRexx as my interpreter but don't generally do Object programming.
Nonetheless, sometimes using a SYSwhatever utility is the only reasonable way to
solve a problem, whether ooRexx, Regina, BRexx, CRX or what have you.

I've written hundreds of macros for The Hessling Editor (THE) and am currently
working with a friend to ensure that they are Regina compatible.

ooRexx vs. Regina isn't the only problem encountered when sharing. The other
problem is Windows vs. *nix vs. O2/2 vs. Mac. And, for the truly paranoid, throw
in TSO, CMS, SysRexx, USS, et. al. on the mainframes!

Gerard_Schildberger

unread,
Jun 24, 2012, 2:36:26 AM6/24/12
to
On Tuesday, May 8, 2012 10:00:18 AM UTC-5, Jeremy Nicoll - news posts wrote:
> Graham Hobbs <gho...@cdpwise.net> wrote:
>
> > Am like you. What I'm reading about Regina is not bad but not encouraging
> > so am thinking, given the names posting here, that we are from mainframe
> > backgrounds, working in PC environments and usually heading for ooREXX.
> > Hope I'm right.
> >
> > Really don't want to spend the time to parallel test 100+ REXX's under
> > Regina.
> >
> > Anyone know if ooREXX might be classified as the dominant player?
>
> I think so. But more to the point it has several developers. Contrast the
> activity on the SourceForge developers' mail list and the bug tracker for
> ooREXX (depressingly large number of bugs, perhaps, but they tend to be in
> the newest features which one needn't use), with the sparse activity on the
> Regina maillist.

I'm not sure that looking at a maillist is a good indicator. I rarely get an
e-mail from that, but the number of entries and replies in Regina's bug tracker
would be a better indication, but even that logic is flawed. I can't even guess
what was meant by the dominant player. Number of people using it? Number of
programs being used? How often does it get used/invoked? The number of developers doesn't make it dominant. REXX had only one developer before it got adopted by (for) CMS way back in the early 1980s. ________ Gerard Schildberger

Jeremy Nicoll - news posts

unread,
Jun 24, 2012, 8:28:46 PM6/24/12
to

> I'm not sure that looking at a maillist is a good indicator. I rarely get
> an e-mail from that,

Then you've an email problem - there's been around 100 emails there in the
last month alone.

Or did you misunderstand what I wrote? I mean the ooRexx developers' mail
list.


> The number of developers doesn't make it dominant.

Indeed not, but active discussion of what is being developed and multiple
people doing it does show a healthy ongoing project.


> REXX had only one developer before it got adopted by (for) CMS way back in
> the early 1980s.

He makes the occasional contribution on the ooRexx developers maillist.

LesK

unread,
Jun 24, 2012, 9:32:29 PM6/24/12
to
Jeremy Nicoll - news posts wrote:
>> I'm not sure that looking at a maillist is a good indicator. I rarely get
>> an e-mail from that,
>
> Then you've an email problem - there's been around 100 emails there in the
> last month alone.
>
> Or did you misunderstand what I wrote? I mean the ooRexx developers' mail
> list.
>

Well, the last maillist you mentioned was for Regina.

>
>> The number of developers doesn't make it dominant.
>
> Indeed not, but active discussion of what is being developed and multiple
> people doing it does show a healthy ongoing project.
>
>
>> REXX had only one developer before it got adopted by (for) CMS way back in
>> the early 1980s.
>
> He makes the occasional contribution on the ooRexx developers maillist.
>
>
What he contributes to any maillist is no indication of the health of the
project, any more than the amount of discussion or the number of people
involved. Taken on their own, with no other context, those numbers are meaningless.

You could have a perfect product with a great FAQ, an ancient discussion list
that answered any nuanced question not covered by the documentation and zero
defects for the last 3 years. Would you conclude it is 'not healthy'? Hopefully
not. You need more numbers and a perspective about the competition and the users.

In this case, both projects are hosted on SourceForge, so that is where I'd go
to get comparative data. Still, that's not enough... you have to map *your*
goals against what is to be gained from each, both short term and long term.

Take my own case for instance. When I first started thinking about programming a
pc I was an application developer using CMS. Regina would seem to be a perfect
fit. But, the first thing I wanted to do was enhance financial reports for our
HOA board, using Excel. That swayed me to opt for ooRexx, since it can work with
any MS product that uses VBS.

LesK

unread,
Jun 24, 2012, 10:56:59 PM6/24/12
to
More precisely: any MS product that uses OLE.

Jeremy Nicoll - news posts

unread,
Jun 24, 2012, 11:27:22 PM6/24/12
to
LesK <5mr...@tampabay.rr.com> wrote:

>Jeremy Nicoll - news posts wrote:
> > > I'm not sure that looking at a maillist is a good indicator. I rarely
> > > get an e-mail from that,
> >
> > Then you've an email problem - there's been around 100 emails there in
> > the last month alone.
> >
> > Or did you misunderstand what I wrote? I mean the ooRexx developers'
> > mail list.
>>
>
> Well, the last maillist you mentioned was for Regina.

Oops. I made thast reply without re-reading what I'd written in the whole
paragraph (it was quite a while ago) and only noted I'd mentioned the ooRexx
lists at the start of the paragraph.



>>> The number of developers doesn't make it dominant.
>>
>> Indeed not, but active discussion of what is being developed and multiple
>> people doing it does show a healthy ongoing project.
>>
>>
> > > REXX had only one developer before it got adopted by (for) CMS way
> > > back in the early 1980s.
>>
>> He makes the occasional contribution on the ooRexx developers maillist.

> What he contributes to any maillist is no indication of the health of the
> project,

- except that he does use ooRexx which is surely of some relevance.

> any more than the amount of discussion or the number of people involved.
> Taken on their own, with no other context, those numbers are meaningless.




> You could have a perfect product with a great FAQ, an ancient discussion
> list that answered any nuanced question not covered by the documentation
> and zero defects for the last 3 years. Would you conclude it is 'not
> healthy'? Hopefully not. You need more numbers and a perspective about the
> competition and the users.

Generally I steer clear of any project with no /developer/ activity taking
place in forums, mail-list, trackers etc. SourceForge has far too many dead
projects.



> In this case, both projects are hosted on SourceForge, so that is where
> I'd go to get comparative data. Still, that's not enough... you have to
> map *your* goals against what is to be gained from each, both short term
> and long term.

SO far as I'm aware, SF will provide data on numbers of downloads, but that
won't tell you how many people use the product.

As for goals... one of my aims is that if I put effort into learning how to
use something, I want the product to continue to work, and bugs to get fixed
etc. I look for an active user & developer community.

Gerard_Schildberger

unread,
Jun 25, 2012, 6:07:54 PM6/25/12
to
On Sunday, June 24, 2012 10:27:22 PM UTC-5, Jeremy Nicoll - news posts wrote:

--- I snipped a lot here ...

> As for goals... one of my aims is that if I put effort into learning how to
> use something, I want the product to continue to work, and bugs to get fixed
> etc. I look for an active user & developer community.

> Jeremy C B Nicoll - my opinions are my own.

I agree for the most part. Most of the Regina bugs that I report get fixed,
albeit some of them not for a couple of years, others get closed prematurely or
without a proper discussion, and then it becomes a duel in reopening the bug,
possibly followed by finger pointing, and/or re-quoting what was said five years
earlier. So it becomes an issue of whether or not in trying to push a chain
uphill, or concentrate my efforts on more obvious bugs.

The one main reason that I like Personnal Rexx (despite it not being supported
anymore), is that it won't get "improved" and new bugs introduced, nor will it
break existing (compliant) REXX code. It is a very stable product, and I'll
never get surprises in using it. I still use Windows/XP, so it'll be around
for some time. Not that I don't use Regina, of course, it's a good benchmarking
tool.

Source Forge doesn't lend itself to contesting a closed [Regina] bug --- as I understand the closing process used therein. A works-for-me isn't a valid
reason for closure, in my opinion, although it sure helps the number of closed Regina bugs statistics. The problem could be the way Regina interfaces with
the host system that's causing the proglem, or some other environmental reason.

I also wish that the Regina (PDF) documentation fixes would get fixed sooner,
it doesn't take any regression tests to make sure the wording is correct (or
better). _______________________________________________ Gerard Schildberger



0 new messages