Rexx

Rexx (restructured extended executor) is a high-level programming language developed at IBM by Mike Cowlishaw.

As a general purpose scripting language, Rexx is considered a precursor to Tcl and Python.

A script is associated with a Rexx interpreter at runtime in various ways based on context.

Originally, the language was called REX, short for Reformed Executor, but an extra "X" was added to avoid confusion with other products.

Both editions of Mike Cowlishaw's first book on the language use all-caps, REXX, although the cover graphic uses mixed case.

An expansion that matches the abbreviation, REstructured eXtended eXecutor, was used for the system product in 1984.

Simplifying coding was intentional as noted by the Rexx design goal of the principle of least astonishment.

Rexx was first described in public at the SHARE 56 conference in Houston, Texas, in 1981,[13] where customer reaction, championed by Ted Johnston of SLAC, led to it being shipped as an IBM product in 1982.

The first non-IBM version was written for PC DOS by Charles Daney in 1984/5[7] and marketed by the Mansfield Software Group (founded by Kevin J. Kearney in 1986).

[14] Other versions have also been developed for Atari, AmigaOS, Unix (many variants), Solaris, DEC, Windows, Windows CE, Pocket PC, DOS, Palm OS, QNX, OS/2, Linux, BeOS, EPOC32/Symbian, AtheOS, OpenVMS,[15]: p.309  Apple Macintosh, and Mac OS X.

[16] ARexx, a Rexx interpreter for Amiga, was included with AmigaOS 2 onwards and was popular for scripting and application control.

On October 12, 2004, IBM announced their plan to release their Object REXX implementation's sources under the Common Public License.

On February 22, 2005, the first public release of Open Object Rexx (ooRexx) was announced.

This product contains a WSH scripting engine which allows for programming of the Windows operating system and applications with Rexx in the same fashion in which Visual Basic and JScript are implemented by the default WSH installation and Perl, Tcl, Python third-party scripting engines.

[15][citation needed] RxSock for network communication as well as other add-ons to and implementations of Regina Rexx have been developed, and a Rexx interpreter for the Windows command line is supplied in most resource kits for various versions of Windows and works in DOS as well.

Unlike a typical array, a tail (index) need not identify (be named) an integer value.

Most of these languages provide a mechanism to iterate over the keys (tails) of such a construct, but this is lacking in classic Rexx.

Uses include passing a function as a parameter, arbitrary precision arithmetic, use of the parse statement with programmatic templates, stemmed arrays, and sparse arrays.[how?]

The Valour software package relied upon Rexx's interpretive ability to implement an OOP environment.

[citation needed] Another use was found in an unreleased Westinghouse product called Time Machine that was able to fully recover following an otherwise fatal error.

[citation needed] The signal instruction configures the runtime to run custom code to handle a system condition if triggered.

Conditions include: The following fragment prints a message when the user terminates (halts) it: Since Rexx version 4, a handler can be named.