There are at least two aspects for me: one is the functionality, one is the 

  * The functionality aspect is a generalization of  "expose objvar" in method 
routines, now made
    available in general. Therefore it could be used e.g. in ooRexx routine 
packages where closely
    related routines can be coupled efficiently via the variable references or 
multiple variables
    can be updated directly hence foregoing the need to process return values 
to assign them to the
    variables in question and the like ...

  * Ad notation: there is a big difference between Rexx and Object Rexx from 
day one. Object Rexx
    introduced the tilde (~) and colons (in message names to indicate in which 
superclass to start
    resolution of the method) and double-colons (to clearly indicate the 
boundaries of directives
    that get preprocessed by the interpreter). And yes, initially they looked a 
little bit alien
    vis-a-vis to classic Rexx, but what is also observable, after a while (to 
get accustomed to
    them) they have been making quite a lot of sense in Object Rexx, and indeed 
make the new Object
    Rexx concepts clearly, explicitly visible.
    Since 20 years there has been no other "alien" character been introduced 
into the Object Rexx
    language, where "alien" relates to classic Rexx. I recall "&[&]" use in 
EXEC and in the C language.
    Using any symbol for the purpose of getting a reference to a variable seems 
to be o.k. as the
    operator needs to be explained anyway. My students for instance have 
usually no preset concept
    to "&", so that symbol is as fine as any other for them. Those who know 
C/C++ have probably no
    problem whatsoever to conceive the meaning immediately (learning that in 
ooRexx it would not be
    a memory address but a reference that gets returned). Whether EXEC 
programmers minds have been
    carved in stone such that they cannot conceive the meaning, well, I do not 
know how they would
    perceive that. But then, there is no need for them to use that feature (or 
any of the many other
    cool features of ooRexx), if they only have a need for the classic Rexx 

The examples that Rick showed can be taught easily and using the operator in 
both places (assignment
expressions and USE ARG expressions) looks intuitive i.e. easily explainable.

I would like to experiment, "play around", explore with it ASAP (hopefully 
being able to do so by
early next week), also testing teaching it to the uninitiated to be able to 
assess that aspect as well.


On 13.04.2018 04:57, Chip Davis wrote:
> Not wild about any of the suggestions so far.  The @ implies that what 
> follows is the location of
> something, not the thing itself.  Do we really need to be concerned about 
> variables in Classic
> Rexx on platforms that don't run ooRexx in the first place?
> -Chip-
> -------- Original message --------
> From: Mike Cowlishaw <>
> Date: 4/12/18 21:58 (GMT-05:00)
> To: 'Open Object Rexx Developer Mailing List' 
> <>
> Subject: Re: [Oorexx-devel] Discussion: Adding variable references to ooRexx.
> Yes, I wasn't keen on arrows or '^' either :-).
>         But I'm even more un-keen on '&'.  <<shudder>>
>         How about '*', then, as being still being one of the two ends of the 
> C notation? 
>     I’m even less keen on using *. Now that C++ allows you to declare 
> arguments as being
>     references rather than pointers, I've been moving away from using 
> pointers as arguments.  
>      A resemblance to exec2 is not that strong of an argument when you 
> consider a large portion of
>     the ooRexx users have never even heard of the language.   
> That really isn't true .. almost all ooRexx users are Rexx users, mostly ex- 
> (or current) mainframers.
>      And it's not like every variable is going to suddenly acquiring a 
> leading '&'. This will
>     generally be used in a few selective place, such as situations where you 
> wish to return
>     multiple values back from a call or method.  
> However or wherever it is used it would be inexplicable, and if it is used 
> only rarely then it
> would be even more baffling when it appears.  What does the 'and' operator 
> have to do with
> references?  
> This would be a classic example of a bewildering notation that makes a 
> language inscrutable.  When
> seen, users would be forced to open the manual to figure out what it does.   
> In short: maybe a
> nice addition to Perl, but it has no place in a Rexx language.
> Mike

Check out the vibrant tech community on one of the world's most
engaging tech sites,!
Oorexx-devel mailing list

Reply via email to