Sunday, 9 March 2014

REXX - the wonder program!

REXX (REXX or Rexx) has been around since the early 80s. I first came across it in the mid-80s, when sites were beginning to use it with VM and CMS as a powerful replacement for EXECs. I thought it would be interesting to take a look at this venerable, but still powerful tool in the system programmer’s toolkit.

Amazingly, REXX wasn’t written as an IBM project, it was written by IBMer Mike Cowlishaw in his own time in Assembler. It was designed as a macro or scripting language and was based on PL/I. It first saw the light of day at SHARE in 1981, and became a full IBM product in 1982.

IBM has implemented REXX on VM, MVS, VSE, CICS, AIX, and AS/400s, and on subsequent products. There are even versions available for Java, Windows, and Linux. A compiled version for CMS became available in 1987 and was written by Lundin and Woodruff.

REXX was so popular that versions were developed for other platforms, including Unix, Solaris, Apple Mac OS X, OpenVMS, and lots of others. There’s also NetRexx, which compiles to Java byte code, and ObjectREXX, which is an object-oriented version of REXX.

In 2005, Open Object Rexx (ooRexx) was announced. It has a Windows Script Host (WSH) scripting engine. So code can be written for Windows. It also has a command line Rexx interpreter.

Those of you who use the ZEN family of products from William Data Systems will be interested to know that ZEN Rexx, formerly available with ZEN’s AUTOMATION component, has now been made available to all WDS customers through the base ZEN component.

ZEN’s Rexx support comprises: a ZEN Rexx Interface; a ZEN Rexx Function Pack; and a command interface. The ZEN Rexx Interface provides support for running Rexx programs under ZEN in a similar way to running Rexx programs under TSO or Netview. You can also run ZEN Rexx programs using a Modify (F) command from the z/OS console. Under ZEN, Rexx programs can be run from the ZEN Profile at initialization time, from the Command Facility and System Log panels, or from a user-defined ZEN menu item.

The ZEN Rexx Function Pack provides extensions to standard REXX through which users can communicate directly with ZEN. The command interface enables users to issue commands from their ZEN Rexx programs and get any responses back. This means that commands provided by their WDS ZEN components can be issued from a ZEN Rexx program, as well as any z/OS, VTAM, or other product command.

REXX may have had humble beginnings, with Mike Cowlishaw working in his own time, but it has gone on to conquer the world (metaphorically) and is now in regular use, in different incarnations, on just about every platform imaginable, including your smartphone and tablet.

No comments: