HomePage | RecentChanges | EditorIndex | TextEditorFamilies | Preferences

 REstructured eXtended eXecuxtor - a Macro Language derived loosly from PL/1 language written by Mike Cowlishaw at IBM.

 Author:   Mike Cowlishaw
 Family:   ScriptLanguage
 Platform: DOS/VSE OS/MVS, VM/CMS (IBM Mainframe), OS/2, Windows, Linux, Solaris, Amiga
 License:  Open source and commercial versions are available.


 REXX Language Association:
 Mike Colishaw's REXX Page:
 Cetus REXX Links:      
 IBM REXX Documentation Catalog: 
 Manmrk REXX Info page: 
 Rex Swain's REXX Summary:                           (IBM VM/ESA)
 Vladimir Zabrodsky's REXX Page:


 IBM Open Object REXX:                                        (Multi-platform)
 IBM NetREXX:                       (REXX in Java)
 Jeff Glatt's Reginald:  (Windows)
 Kilowatt Classic REXX:                   (Windows)
 Kilowatt Roo Object REXX:                 (Windows)
 Regina REXX:                                    (Multi-platform)
 REXX/imc:                (Unix/Linux?)
 Vassilis Vlachoudis' BRexx:       (Multi-platform)

Utilities and Add-ons:

 Jeff Glatt's REXX Utilities: (Windows)
 Jeff Glatt Sample REXX Scripts:
 Patrick McPhee's REXX Utilities:                            (Multi-platform) 
 Rex Swains's REXX Utilities:                      (Multi-platform)  


 Ian Collier's REXX Tutorial: (REXX/imc)
 Kilowatt REXX Tutorial:
 Kilowatt Roo Specification:
 IBM REXX/400 for AS/400:
 The REXX API:          

Basically, it is a procedural language similar to but less powerful/complex than PerlLanguage.

It is also aimed at completely different purposes. REXX is a script language, comparable to the ones included in the Bourne, Bash, C, or Korn shells. It was written as a more powerful replacement for VM/CMS "execs" and later for MVS/TSO clists.

Perl (Practical Extraction and Report Language) is specifically designed for text processing. It is intended to replace programs like awk and sed.

It is found primarily on IBM Mainframes running MVS (starting with VM/XA and TSO/E 2), VM (starting with VM/SP), IBM OS/2, and Amiga personal computers although free variants exist for MsDos, Windows, and UNIX/Linux?. A professional version called ObjectRexx? is available from IBM for Windows. Another commercial product is available from Quercus.

This is the MacroLanguage for IBM ISPF and XeditEditor and clones such as KEDIT, Pc XEDIT and THE. It used to be the one for VisualSlickEdit.

On IBM mainframes, it is as pervasive as both Perl and BourneShell? are on UNIX. Vast amounts of code are written in REXX that UNIX/Linux? and DOS/Windows? folks never see. It is easy to use, powerful, and simple. It is not as powerful as PERL (Please give examples! - no regex facilities) but it targets users, not power-users (some might cringe at this, since REXX was used to write large applications like FORABROWSE, a mainframe based equivalent to Usenet News with file sharing.) In particular, REXX on VM/SP (later VM/ESA and z/VM) was used as the primary scripting language, replacing the EXEC and EXEC2 languages in most instances, and REXX has mostly replaced CLIST in TSO.

The Amiga version of REXX (called ARexx) was used primarily as "glue" between programs, and not so much for writing new programs (as it was on the mainframe.)

On IBM OS/2, REXX functioned both as a "glue" and a means for writing programs, especially when used with WATCOM's VisualRexx? environment. It was very nice to use and had all of the power of VisualBasic? and more.

IBM released Open Object REXX as open source. Information is here:

Versions of Open Object REXX exist for Windows, Linux, AIX, and Solaris.

There are two features that are particularly nice about REXX:

1. The PARSE command

2. The REXX stem variable concept

3. The support for using REXX as a general scripting language.

PARSE allows you to parse the parts of a string out into variables very easily. Much cleaner syntax that what PERL forces you to do, although also much more limited. PARSE can take its input from several sources, e.g., the parameter to the routine (ARG), an expression, a variable.

The REXX stem variable is a kind of hierarchical hash table.

Rexx allows an application to call Rexx macros in such a way that the Rexx code can call application defined functions and the functions can set Rexx variables. It is also possible for Rexx macros to pass commands to multiple command environments, e.g., both editor commands and host commands.

For more info on these, check out MikeCowlishaw's book "The Rexx Language".

Also, there is a version of REXX called NetRexx which emits java byte codes and can therefore make programs that run anywhere you have a java byte code interpreter.

HomePage | RecentChanges | EditorIndex | TextEditorFamilies | Preferences
Edit text of this page | View other revisions
Last edited July 1, 2014 6:53 am (diff)