REXX (REstructured eXtended eXecutor) is an interpretative programming language created by IBM in the 1970’s. Although it used on a wide range of platforms today, REXX was originally designed to run on the mainframe. VNAC offers versatile mainframe REXX support.
REXX was designed to be easy to learn and to run independently, while at the same time communicate with its host system. REXX has the capability of issuing both commands and language calls to its host environment.
- REXX is a scripting language that runs on many platforms, including z/OS, CMS, VSE, Windows, UNIX, Linux, and AS/400.
- REXX interfaces with GUIs, databases, and web server tools.
- Mainframe compilers are available for REXX.
- REXX is often compared to the Basic language because of its simplicity.
- REXX is as powerful as Perl.
- There are at least seven free REXX procedural interpreters available.
- There are two free REXX object-oriented versions.
- There is one free REXX Java-compatible version.
- REXX can function as a macro language and an embedded language.
REXX was chosen by IBM as the procedures language for the Systems Application Architecture (SAA) in 1989 (Mike Cowlishaw, 2012). It is bundled with all IBM mainframes and can interact with TSO, ISPF, and SDSF. It is used for prototyping applications, and by programmers to run TSO/ISPF panel applications. There is a REXX command for every service available on the mainframe (Paras Doshi, 2009).Here’s an example from Paras Doshi (2009):
To allocate a dataset using TSO, the command is:
TSO ALLOC FI(F1) DA('HLQ.FILE1') NEW SPACE(1,1) CYL LRECL(80) RECFM(F B) BLKSIZE(0)
The same command written in REXX is:
"ALLOC FI(F1) DA('HLQ.FILE1') NEW SPACE(1,1) CYL LRECL(80) RECFM(F B) BLKSIZE(0)"
A REXX program can invoke a command in TSO or ISPF directly. The task can be automated by putting the REXX code in a loop.
The REXX language has a number of features that make it an easy-to-use and versatile programming language. These include:
- Flexible format and syntax
- The ability to do extensive string manipulation (z/OS TSO/E REXX User’s Guide, 2010)
- A broad set of built-in functions
- Support for issuing host commands
- Easy testing and execution of REXX (z/OS TSO/E REXX User’s Guide, 2010)
- Easy and effective tracing facilities during interactive debugging (z/OS TSO/E General Information, 2010)
- Compatibility with other languages and systems
- A REXX compiler that runs under CMS on z/VM (z/VM REXX/VM User’s Guide, 2010)
- The ability to read and write sequential files and/or PDS members
There is no fixed structure to a REXX program. A REXX instruction can start anywhere in a program.
REXX versatility it such that is has been used to write “high level” programs in CICS regions. (Michael Cairns, 2012). REXX for CICS enables end-user computing, prototyping, and application development within the environment (CICS Transaction Server, 2009).
REXX is the language that acted as a bridge for programmers who wanted to use PC data files during the period before the development of sophisticated mainframe-to-PC data transfer represented by SFTP implementations (“Object Mix, 2005). Although it is not used for high-volume business applications, REXX language is a structured programming language that is a central part of z/VM that can be used effectively by beginning and experienced programmers (Gabriel F. Gargiulo, 2012).