Rexx Is Still Strong After 25 years
therexxman writes "March marks the 25th anniversary of the Rexx programming language, and to celebrate the Rexx Language Association is hosting the 15th Annual Rexx Symposium at the IBM Research Labs in Boeblingen, Germany, from May 2 to 6, 2004.
Full details of the Symposium can be found in the 2004 Rexx Symposium Announcement.
Many of the world's 'Rexxperts' will be in attendance including Rexx's founder, Decimal Arithmetic guru, and IBM Fellow, Mike Cowlishaw."
I thought it died off 65 million years ago.
but it's no FORTRAN.
The "Insert Quote Here" line is almost as predictable as inserting an actual quote.
Seeing is believing:
Rexx going strong.
Quem a paca cara compra, paca cara pagará.
Therefore I believe the Rexx is overrated and I would recommend against it. Just my two cents.
It's this TV show with a dick-shaped spaceship. Don't worry, you haven't missed much.
punch-card lovers association held its annual conference and proclaimed punch-cards superior to all modern IDEs, compilers, editors and debuggers.
I'd never heard of REXX before. Looking at the FAQ, I found my explanation:
This FAQ is for REXX/MVS, that is, REXX for IBM mainframes (MVS, OS/390 and VM).
Okay... but is this language at the forefront of modern computing, or even close to it? That's not a cynical inquiry; I'd literally never heard of this language before and I'm curious to know whether it's making some kind of progressive, hidden impact that was just totally unknown to me.
Anyone? Anyone? Bueller?
The coolest voice ever.
This reminds me of wasting hours and hours on my Amiga500. Yeah, it only had 3MB of RAM and no hard drive, but give me a blitter chip and four channel audio any day! Anyway, there was a great version of Rexx for the Amiga that became the defacto scripting dialect of the day. Great stuff, that aRexx.
The CB App. What's your 20?
----------
Create a WAP server
it wants its do loops back
say "Counting..."
do i = 1 to 10
say "Number" i
end
Yuck!
at least, back when i was using OS/2. When started with Linux, perl seemed very ugly and unintuitive to me (specially when comparing how text is parsed in both languages), but it was so easy to use the output of other programs (compared with REXX even under linux) that I finished to like it and using it for everything instead of REXX.
It was funny then and it's funny now.
GET YOUR WEAPONS READY! --DR.LIGHT
I think it's great that a language has survived so long. That being said.. although it has it's purposes, it'd be hard to say that it is "strong". It may be used. It may be actively developed. However, "strong" is probably an overstatement.
Who could forget ARexx, Amiga's implementation of REXX... I scripted EVERYTHING from DirectoryOpus...
:-)
Sigh... I miss my Amiga.
punch-card lovers association held its annual conference and proclaimed punch-cards superior to all modern IDEs, compilers, editors and debuggers.
... umm, no hardware failure, and zero down-time (if the sun is shining).
Punch cards are all good and fine.
But if you want real power in a computing machine, what you need is something like Stonehenge, which has the advantage of
-kgj
-kgj
I still use Kedit, a win32 programmer's editor, that uses Rexx as the macro language and it rocks (both the editor and the macro environment). Even though Mansfield software has quit supporting Kedit about a decade ago it is still the best editor on the windows platform. I tried switching several times - first to Brief then to Codewright and then Slick edit but came back to Kedit because of if clean interface and performance.
I send mansfield an e-mail every so often requesting a Linux version or ask to open source the code but they just ignore me. Kedit would be a good replacement for vi on linux.
Any other Kedit fans out there? BTW not to be confused with the KDE based editor by the same name.
Though, being a Linux noob, somebody properly thought of this already.
But come on, look at the syntax! With a little work, this thing could replace even tsch!
Bah, who am I kidding, what right minded programmer would code such a thing:P
br
Ahhh Rexx... OS/2...
OS/2 is the future I say. Look at how much better it runs then Windows 3.1....
*snaps out of reverie, back into Microsoft dominated 2004*
Doh!
"Nobody knows the age of the human race, but everybody agrees that it is old enough to know better." - Unknown
I doubt whether academics see much to love in the language, but I always found it easy to learn and very effective in getting things done. On the few occasions I have used it in recent years, I have still considered it highly useable (and I speak as someone who has used Perl, Python, Lua and even occasionally Ruby).
According to the article,
"REXX is a procedural language that allows programs and algorithms to be written in a clear and structured way."
At least one of the implementations has been ported to tons of platforms and, to me, it doesn't seem to be dead.
Other mainframe scripting languages were just disasters. I vividly remember replacing more than 1000 lines of EXEC-2 scripts with about 100 lines of REXX, and thinking that Mike Cowlishaw should be knighted.
:-)
And REXX beat ksh hands down in terms of power and readability as well.
I gave a speech ~ 1991 at a REXX Symposium about "REXX in UNIX". I had the crowd of mainframe and OS/2 people literally rolling in the aisles with laughter as I tried to explain ksh syntax to them. I made slides of some examples from the appendix in the KSH book, and it was hilarious. Even the geekiest UNIX geek has to admit that sh / ksh are disasters as programming languages. REXX was 10000% better.
On the other hand, as I pointed out in my speech that day, there was another new language coming up that was 20000% better. It was called Perl. Perhaps you've heard of it.
REXX was originally intended to be a scripting language simple enough to allow non-professional-programmers to use. None of the UNIX scripting languages, including Perl, hit that mark - but REXX does.
I haven't written any REXX in 10 years, and haven't missed it. But it WAS a big step forward, and should have been a better success.
REXX was very much like the Python or Perl of its day, in that it is a scripting language which can be used for everything from job control to add-on macros to interprocess communication.
It is a completely typeless language, more or less -- basically, everything is a string, so the same variable could hold "87", "eight-seven", "00110111", "0x0117", or "Four Score and Seven" -- and the interpreter kept track of what operations were meaningful (i.e., adding "4" and "5" would yield "9", but adding "4" and "Five" wouldn't). Not surprisingly, it had a wide variety of string manipulation functions built in -- ROT13 could easily be accomplished with one command ("translate()"), for instance.
On the other hand, it also featured arbitrary precision mathematics, which is a pretty nifty and not altogether common feature for a language.
It was fairly portable -- I wrote REXX code for OS/2 and the Amiga, and was usually able to move the code from one to the other without having to worry about anything more than CR/LF translation. I was able to make use of old mainframe REXX code too, although it was usually ALL IN CAPS and ugly, which isn't really REXX's fault.
In OS/2, I used REXX primarily as a batch language on steroids (the OS/2 "CMD" CLI ran REXX programs directly as a batch language), but I also used it to do some pretty heavy text manipulation as well. On the Amiga, I used REXX for those purposes, but the main things I used it for were for interprocess communication, and for extending the functionality of REXX-enabled programs. When Matt Dillon added a REXX port to his hacked-up version of emacs for the Amiga, I was able to use REXX macros to turn it from a nice programmer's text editor into one which did everything I wanted, excatly the way I wanted. I wrote macros to toss and filter FIDONet messages to and from my text editor.
The same power was available to the REXX ports on other Amiga programs, from word processors to graphics editors. As an aide to interprocess communication, it could be used to allow your graphics editor to control a raytracer, or for your text editor to use the spellchecker in your word processor.
I made some nice money at a time when I was underemployed by writing REXX programs to control the input and outputs of a NewTek Video Toaster for a guy with a mid-sized video production business; and the code was straightforward enough, and REXX easy enough to learn, that the business owner could easily make any minor changes to it himself (at the same time, after he had used it for a while, he was able to think of more and more things for it to do, which kept me in groceries for another month or two). For that matter, I also made a bit of money writing a REXX programming column for an Amiga magazine, so I really have fond memories of REXX for being a language that allowed me to continue, well, eating food.
For a long time, IBM tried to convince Microsoft to use REXX as the macro language for Office, instead of BASIC; needless to say, if they had succeeded, we would be living in a universal paradise of peace and understanding right now, or something like that.
Even today, I find myself thinking of all the neat things I could easily do with OpenOffice or AbiWord or Photoshop or Semware's text editor or Audacity or Zinf if they had REXX ports enabled...
At first I thought the title read Rexx is Still Wrong After 25 Years.
I was like, "Damn straight!"
Cheers,
Justin
On the other hand, as I pointed out in my speech that day, there was another new language coming up that was 20000% better. It was called Perl. Perhaps you've heard of it. :-)
I don't really agree here. REXX is a free form shell scripting language and stomps on everything else I have used for that purpose and that includes perl. You can write a simple sequence of commands with virtually no syntactic clutter and incrementally add expressions and control structures. With REXX, one can effortless take a program across the entire practical range of tranditional Unix shell languanges and far beyond.
Perl, of course, is more powerful but it is not really a shell language. It's syntax is more complex and gets in the way when you are trying to mix control code with command calls.
I still write bourne shell scripts. I also write awkward "shell" scripts in perl. But I would rather use REXX.
Of course slashdotters have to rip on anything that wasn't written originally for linux or isn't open source. REXX was a great tool in its day. Shit, I would still use it over the vast majority of scripting languages today.
Any man who afflicts the human race with ideas must be prepared to see them misunderstood. -- H. L. Mencken
See this pdf document here (page19 - left column) "REXX is a procedure language (IBMspeak for scripting language) popular in the IBM mainframe world. It is simple to use, powerful enough to do the job, and well suited to the type of processing done within OnWeb. REXX is OnWeb's "native" language, and OnWeb contains its own built-in REXX interpreter."
NetRexx is just your normal Rexx, but it compiles into Java byte code:
Net sa best, mar it koe minder
I think, perhaps the real question you are asking is: are IBM mainframes at the forefront of modern computing, do they have a hidden impact the average Slashdot reader is unaware of. My guess is yes. I am not a mainframe guy myself, but it is my understanding that they are still very much used and very important with a fairly large worldwide market. Perhaps some of you REXX folks can give us some examples of the ways mainframes are still used? I'm too lazy to go look up IBM's sales figures for mainframes last year, but I'm guessing it is bigger than many people here realize.
- None can love freedom heartily, but good men; the rest love not freedom, but license. -- John Milton
Many of the world's 'Rexxperts' will be in attendance
Such as Rooby-Rooby Roo.
does it do DOT NET?????
10 ?"Hello World" life was simple then
WHen I started my first job , to work on Airline Applications - TPF based, on VM/CMS - I started using REXX. Then, at times, whenever I required a particular action on CMS file(s), I started writing REXX EXECs to do it for me. Although my demands were not that tough, as most of the times it was only to help me save my time while working, I found it extremely easy to write EXEcs. And I had no formal training in REXX. For me, its easy to understand the REXX commands/syntax. As I have no experience on Perl or whatever other stuff that you guys may be discussing, I am not in a position to compare REXX with anything else. But I like REXX and I am happy to see that it's still doing the job for me.
Good lord man, that was funny.
Your hybrid is not saving the environment. Its purpose is to make you feel good about buying something.
Mike Cowlishaw had another project after REXX called LEXX. It was a syntax-directed text editor - very kewl for 198x.
Back in 1995 my first IRC client was written in REXX, running on IBM 3090 machine. I learnt Rexx tweaking it. C'mon guys... isn;t infinite loop declared by 'DO FOREVER' beautiful?
IBM REXX lives. You can pronounce that two ways
Baz
Maybe this language is alive now, but in thirty-two years, it will be extinct, and we will have to send time-travelers back to unearth it's powerful secrets!
We can neither love nor pity nor forgive. If you make a slip in handling us you die!
Rexx, and Model 204 User Language, were the only two computer languages that ever made programming IBM mainframes FUN. (At least until now, when Linux runs on IBM mainframes.)
-- SKYKING, SKYKING, DO NOT ANSWER.
shouldn't that be "how many other slashdot geeks can claim they have a girlfriend"?
Good Dog.
${YEAR+1} is going to be the year of Linux on the desktop!
And I think he used the internal newsgroup network to spread REXX around IBM and make it popular enough (internally) for the suits to take notice. That's how a language designed by one person (which is the only time this ever happened at IBM (maybe I am wrong, maybe APL was also designed by one person at IBM)) ever became an IBM product.
-- SKYKING, SKYKING, DO NOT ANSWER.
IBM (and now Apache) project, Bean Scripting Framework, or simply BSF, allows embedded REXX scripts to still be used in Java programs. This is one reason why I (and others) still use (and maintain) REXX scripts from upwards of 20 years ago -- they still work, and nobody around knows what the hell they are trying to do :)
MORTAR COMBAT!
Nice to see that people are still using it. But, like Applescript, it is most useful when lots of applications support it. Because it doesn't really have that support anymore, it is pretty much useless on the "Big Three": Windows, MacOS 10, Linux x86.
If you're looking for a simple scripting language, look at Tcl. The newest Activestate 8.4.6 release has a bunch of great stuff in it, but still support all the classic functions.
Fred
"A fool and his freedom are soon parted"
-RMS
Wow. This article brings back some fond memories.
You know you're a geek when the mention of a language from your past fills you with warm fuzzies.
Back in the old days (for me), when I was unable to get Unix for my PC, I went out and spent cash money on PC-DOS from IBM, just so I could get Rexx. The coolest part was that command.com had been tweaked by IBM such that the any .bat file that started with a Rexx comment would be interpreted by Rexx when invoked (instead of the grungy batch language everyone else had).
It was pure heaven to have a real language to script with under DOS.
Ironically, my company is slowly being encouraged by some of our potential customers to be more big-iron friendly. They want our new-fangled Java stuff, but the more we play nice near mainframes, the more pilot projects we win. I'm now able to use my mad COBOL and Rexx skillz for real.
Who knew?
-- clvrmnky
Mike Cowlishaw is also responsible for Java on the AS/400 (iSeries), and probably a major factor in IBM's interest in Java back in the JDK 1.0 days.
Chip H.
Oh yeah, doin' the REXX on the VM system at UMR in 1986, woo! The school sucked, but that was fun.
I'd kill for FLIST & REXX nowadays. FLIST was the best file manager _EVAR_. For awhile, some UK company was working on FLIST for OS/2 (back in my OS/2 days), but they never seemed to get that off the ground. Too bad - running OS/2 v2 in textmode with Tshell, that would've been the PERFECT companion app.
Am I the only one around who really wouldn't mind a modern multitasking textmode OS every now and then? Maybe a text-mode version of Menuet, all asm, all the time. Runs off a floppy. Could be fun.
Rexx was incredibly cool at the time: - implemented on a dozen platforms - code was multi-platform - extremely easy to use / easy to extend / easy to maintain - could run it from MVS JCL - was the macro language for ISPF I used rexx for the following: - converted hundreds of cobol programs from cobol 68 to COBOL II (required parsing code, replacing periods with end-ifs, end-searchs, etc) - created 'asserts' for several programming languages - in which a simple function key would confirm the syntax. - created 'point & click' character interfaces - in which a function key would look up whatever was at the current cursor location and open an ISPF browser window on that file. And the above code was *easy*. Today I'm writing a lot of code in ksh & python. If python wasn't around I'd probably create this code in rexx. Although it's harder to find support for than bash - it a far better language. And although perl is more powerful in some ways - it isn't the maintenance-disaster that perl is. But python is just simply too good a language. Too bad for Rexx.
I think to go that far you really need to be looking at scripts wriiten in csh. sh may not be what you write the next killer FPS in, but it's a great tool for what it's generally used for - invoking other programs. (Including setting everything up nicely for those programs, with their environment settings and proper command-line arguments, etc.)
So? I've never heard of YOU!
(David Bowman, EVA near HUGE Monolithic Win-PC in orbit around Jupiter) "My God - its full of Malware!"
Back in college I did a lot of work on the mainframe in REXX. I knew that I'd been working too hard when my dreams at night would encounter a situation (non computer related - such as say no milk for cereal) and in my dream I'd solve the problem via some rexx code and/or XEDIT macros.
I've been meaning to try and get a XEDIT environment setup on my PC or Linux box, but have forgotten so much of it that I don't know if it'd be worth starting over or not.
REXX is ranked #36 amongst programming languages! How is that strong? Further, other languages considered dead by many are ranked higher than REXX.
Steve Magruder, Metro Foodist
Not just "at the time"!
It still is a very powerful language. I even used it to write a simulation of nuclear spin diffusion in a sparse cubic lattice. Take that!!!
Is Perl ultimately more powerful? Maybe, but because Rexx can do 90% of what Perl can do, and because it's so damn easy to USE and it produces READABLE code, it is 150% more effective than Perl for me.
Aaah, there were the days when Rexx was the scripting language for Lotus Smartsuite..!
0 to 18,446,744,073,709,551,615
or
-9,223,372,036,854,775,808 to 9,223,372,036,854,775,807
int64s have over 18 decimal digits of precison with NO roundoff error -- adequate to ennumerate the entire global GDP of the planet Earth in U.S. Dollars with ease (well in the trillions but surely not in the quadrillions of dollars).
If for some strange reason you need more precison with no roundoff error (or you don't have int64s available), you will need to write or obtain a multiple-precison integer computation package.
They are not too difficult to write a correct, working implementation. It may take you time to make it as fast and efficient as possible.
Has anyone else heard of this Rex (one X) language?
... get a solar-powered wrist sun-dial.
There is actually a version of REXX called T-REXX! The T stands for telephony.
To all you Unix bigots who want to call Rexx a dinosaur, you'd better take a good look in the mirror, because to the rest of the world, you don't look pretty.
Rexx dates from the the 1970's, just like the Unix shells. However, unlike them, Rexx is a modern language. Unlike the quirky, bizarre, and barbaric Unix shells that have continued to roam
the earth, threatening intelligent life, Rexx has reasonable facilities for modularization, name
space management, variable scoping, standard means of interfacing in both directions from C code, etc. With its ease of use, built in parsing, immediate access to command line functions, pipes, interprocess communication, etc. it was really in the same league as the
currently popular scripting languages and way ahead of its time.
Rexx was included in a number of operating systems and was part of IBM's effort to standardize all its platforms. Under OS/2, Rexx was the official standard scripting language and most significant programs actually did have Rexx interfaces. Once you knew Rexx (which was very easy to learn) you'd be able to script for pretty much anything. Plus, you had many third party libraries for networking, gui, etc., etc., and some very high quality visual IDE's. A very powerful combination.
This gave OS/2 a huge advantage over platforms like Windows and Unix, which have no standards in this direction. Under Windows, you have VB, which is powerful and extremely well supported, but proprietary to MS apps. There were a million independent scripting languages for specific Windows apps. Under Unix you had the shells, which are not powerful languages, not too suitable for embedding, and which are fragmented. Scripting under Unix thus became a rather dismal situation with either app-specific languages of very low quality (e.g. emacs lisp), or external scripting using command line switches or other uncompelling paradigm.
The situation now is that perl has replaced the shells for a lot of scripting and perl has the advantage of being a more reasonable language and has huge library support. However, perl still isn't a real embedded language and it's certainly not a standard for that. Under Gnome, Guile is "official" the standard scripting language, but in practice it's not used for that, even by Gnome apps.
As a former OS/2 user and a current Linux user, I have to conclude that, despite the emergence of perl and python, Linux has never caught up to the power of Rexx scripting. I can hobble by with a combination of shell scripting, perl, emacs lisp, and other glue, but it doesn't add up to the kind of power I used to have under OS/2.
Which language is more marginalized and which community smaller? Rexx or Lisp?
From: ------- [KEDIT]
l e.pl?sid=04/0 3/24/0034224&mode=thread&t6 &tid=187
[mailto:------------]
Sent: Wednesday, March 24, 2004 1:00 PM
To: '------------'
Subject: RE: Kedit Port
Hi Steven,
Thanks for the link. It's nice to see that KEDIT still has admirers.
To correct a couple of points in the threads I looked at:
1) "I send mansfield an e-mail every so often requesting a Linux
version or ask to open source the code but they just ignore me."
We never ignore Linux/Unix version inquiries but there really haven't
been many over the years. We've been consistent in stating that we
have no plans for a Unix/Linux KEDIT. We've also been consistent in
stating that there are no open source plans.
1) "Mansfield software has quit supporting Kedit about a decade ago."
We still do support KEDIT for DOS, OS/2 and Windows. We essentially
don't sell KEDIT for DOS and OS/2 anymore since we ran out of manuals
some time ago and with sales of these versions so low, it wasn't cost
effective to print more. We sell license-only copies occasionally to
users who already know the product and need some more copies to be
legal. We're still selling KEDIT for Windows 1.5. We have no new
versions of KEDIT in the works though and perhaps this was what was
meant by the above comment.
Thanks again for the link. I only wish I had some better news for you.
------ -------
Mansfield Software Group, Inc
PO Box 532
Storrs CT 06268-0532 USA
Phone: 860-429-8402 x117 (M-F 8-5 EST)
Fax: 860-487-1185
Email: ----------------
Web: http://www.kedit.com
>
>>>>>>> Original Message: >>>>>>>
>
> FYI Scroll down to the post titled "Kedit and Rexx"
>
>
http://developers.slashdot.org/artic
id=126&tid=136&tid=15
>
> If you ever port kedit to Linux our department is good for 12
> copies....
I used Rexx extensively on MVS for many years. Incorporated it into a couple of products I developed. Miles ahead of TSO CLISTs.
Later I had to develop a special-purpose language with easy syntax for non-programmers to understand. It was heavily influenced by Rexx and had, like Rexx, typeless vars, strong intuitive string manipulation and associative arrays. Also the equivalent of execio so you could read a file into an array with one simple line of code. Imitation is the sincerest form of flattery!
While the power of shell scripts and Perl cannot be denied (I've used them both), they are syntactic abominations and not easy to pick up if you only use them occasionally.
Long live Rexx and Mike Cowlishaw (a nice fellow whom I had the pleasure of meeting once).
that IBM got the basic architecture of WorkBench for use in developing the Presentation Manager for OS/2 for their end of the trade in porting Rexx :) ...I sometimes wonder if the slow demise of OS/2 is somehow tied in with the Amiga curse :/
:(
Boy I sure do miss alt.amiga.religion
I guess I'm going to PC hell after all for that flub.
I have only used AREXX, but it was really cool. Nearly all applications had a REXX interface, so you could easilly write macro's that affected multiple applications. Just installed rexx on my debian system (package regina-rexx), going to revive some old memories :).
"It's too bad that stupidity isn't painful." - Anton LaVey
And since the night can be called "scheduled", there is exactly *no* unscheduled downtime resulting in 100% availability.
I like your thinking!
-kgj
-kgj
handy_vandal wrote:
Don't forget these are the real precursors to relational databases. CARDS
Master A set of columns with identifying information, i.e. Name, Address, etc. Detail One or more cards specifying summary information, i.e. Balance; and other cards carrying transaction information, i.e. debit/credit amounts, reference numbers, etc. Only problem was dropping the trays
Cheers!
--
Han Tacoma
~ Artificial Intelligence is better than none! ~
Don't forget [punch cards] are the real precursors to relational databases.
Very good point -- insightful!
-kgj
-kgj
You can get the latest version of REXX, Object REXX, for FREE, for Linux, Windows, Solaris, and OS/2
you mispelled TRIAL
ok, ok. Except for Linux version, that is free.
Those days are already here, just look at John Ashcroft and his fear of evil, satanic cats and women's breasts. If we get another four years of Bush, we'll be deep into the dark ages for some time to come. Thanks to the Republican party, we don't need to work on time travel, they've already perfected going backwards.
Un-news
Rexx was added long after several other scripting languages existed on VM/CMS (where it originated). There were also very good compilers for FORTRAN, PL/I, COBOL, Pascal and C. Not to mention an APL system and the ever-present Assembler. On other systems where Rexx later became important (OS/2, AmigaOS, OS/390 TSO) the same was generally true.
Rexx is used because it's quick and easy to write reasonably complex programs correctly. In fact, most Rexx programmers I've met over the last 20 years always start a new program from scratch - it's so easy, why not?
The reason Rexx is easier to understand than Perl is that Mike Cowlishaw deliberately avoided notational syntax elements. With very few exceptions, the syntax is entirely constructed with Enlish-language words, not with special characters.
Yes, once you've memorized a given language's use of notation, you can read it, but that's not the point.
1. Functions can't return multiple values, nor can they modify their arguments. If you want to write a function which returns two values (say), you need to use a magic string which you think will never occur in either of them as a separator, concatenate, return the result, and then split it apart again.
Thank $DEITY! Functions should never modify their arguments, no matter what language you're writing in. Just because C can't pass a structure right doesn't mean that's a legitimate programming technique. And functions that return multiple values aren't "functions".
2. Whitespace is significant--it's interpreted as concatenation. Hence mistyped or syntactically invalid statements are quite likely to be reinterpreted as some kind of concatenation of variables. (And I thought Python was bad.)
You've got a good point there, but it's a powerful technique nonetheless. In practice, "blank concatenation" rarely causes signficant problems.
3. Using an undefined variable is not considered an error. Instead, it just defaults to having a value that's the same as its name, only in upper case. Truly foul, especially when combined with misfeature #2 above.
So if (for example) you put whitespace between a function name and the brackets surrounding its arguments, it suddenly stops being a function call and becomes a concatenation of strings instead. Pass the barf bag.
Use Signal on NoValue if you want to catch undefined variables. Most professional Rexx coders do, it's a good standard. As to function names and non-adjacent parens, geez, you ever take a programming course?
4. REXX normally guesses continuations, by assuming the next line is a continuation of the current line if the current line doesn't look like a complete statement.
Generally not. There are some very specific cases where that is true, but they're actually rarities in the syntax. Specifically, you can have line-breaks before and after the keywords Then and Else in If and When statements. That's all.
5. Comma is used both to separate function arguments, and to indicate continuation. So in spite of #3, you can't just break a long list of function arguments across multiple lines--you have to turn the last comma on each line into double-comma, or you get something completely not what you intended. Ugh.
Yup, this is Rexx's largest wart. It's even worse that C's aggressive use of the backslash.
6. You're allowed to use variables that have the same names as words used in the language itself.
Hey - that's a good thing. Ever write any Java code? Ever have a variable name suddenly become a reserved word by a language upgrade? Rexx doesn't have "reservered words", so we Rexx coders never have that happen.
7. Scoping is dynamic. Functions and procedures are just a hack whereby the system temporarily hides all variables except the listed ones, until it next hits a return. Not that you have to; it's quite possible to write functions with overlapping scope.
Because scope is dynamic, it's always nested. There's no such thing as "overlapping scope".
8. Forget about associative storage, REXX doesn't even have arrays. You can simulate them with 'compound variables', but then there's no type checking or bounds checking. If you want any, you have to write it yourself.
"Compound variables" are associative arrays. So are traditional arrays, their numeric indices aren't different from any other kind of index. And there aren't any bounds to check against. Remember, it's a loosely-typed (and perhaps even type-free) language.
9. You can't pass arguments by reference. In fact, you can't pass them by value either. Instead, you have to pass constants, and have the function or procedure use those constants to calculate the name of the variables it should use.
Rexx is entirely call-by-value. Not call-by-reference (a la C structs) or call-by-name (a la Algol68). So what?
I think REXX is the ugliest hack I've seen since Perl 4 or Tcl.
Seen Perl 6 yet? :-)
There is an open source Rexx, and it's very good. Check out regina-rexx.sourceforge.net for details.
I'm fairly certain (having been on the Amiga OS team at the time, and having worked with Bill a fair bit) that he was not stiffed by Commodore on anything. I don't know what sort of deal there was for including ARexx in the OS - it might not have included money.
Bill did a fair bit of work for Commodore on contract, and also did a lot of testing and tool development for us (evil memory-allocation failure tools, for example). We tried to hire him on multiple occasions, but he preferred to stay in Boston.
Bill seems to be involved in Linux kernel/etc stuff nowadays from a quick google search.
Ai! Too late. He already knows it.
<lurk>