Skip to main content

REXX Language Helps Ensure Consistency of Applications Across Platforms

The fact that the REXX programming language has a long history is an asset. It speaks to its stability, growth and expansion to different platforms and multiple versions. REXX has earned its reputation as a small, easy-to-learn language, just 23 instruction statements, that can be used to write programs for a wide variety of needs.

It’s handy, even cool, because it runs in so many diverse environments while remaining rock solid in its implementation. This gives confidence to developers and companies that have invested in millions of lines of code. REXX even has its own International Organization for Standardization (IOS) standard that helps to ensure consistency across different platform implementations.

What Kind of Language Is REXX

REXX is mainly an interpreted programming language, but compilers exist for IBM mainframe computers. a high-level programming language designed to be easy to read and learn. Both proprietary and open source, REXX interpreters exist for a wide range of computing platforms. The occasional user might use it to create scripts or commands whereas a team of professional developers could use it to create a commercial software product like one to monitor and manage jobs and started tasks.

If we focus on the specific reasons to use REXX, you will see in a few paragraphs why it’s so useful to today’s programmers.

High-Level and Easy to Learn

REXX has a simple syntax and a small instruction set. The language isn’t sensitive to the case of variable names and employs dynamic data typing requiring no declarations. REXX has a powerful selection of built-in functions with automatic storage management and crash protection with straightforward error handling and built-in tracing and debugging. The language has the ability to support functions, procedures and commands associated with a specific invoking environment.

REXX makes it easy to issue commands using the basic rule that whatever REXX can’t process it passes to the default environment like for AIX, Windows and Linux. With other OSs, REXX interfaces through host commands. z/OS host command examples discussed in REXX Language Coding Techniques includes CONSOLE, TSO, MVS, and RACF. Examples of host commands for z/VM are CMS and COMMAND. Sending command to z/VSE is discussed in VSE /REXX Reference. Examples include VSE, POWER, JCL, LINK, LINKPGM and CONSOLE. Sending commands to AIX is discussed in Object REXX for AIX Programming Guide. To let you specify which environment processes a command, Object REXX for AIX includes an ADDRESS instruction. Starting your REXX programs from the AIX command line makes the shell the default environment for REXX commands. Passing commands to the running environments for Windows, Linux, FreeBSD, Solaris, HP-UX and other environments is supported with the Regina REXX Interpreter.

With this flexibility, there’s little that you can’t do with a REXX program in the environments in which it runs because the interface between program and its environment has rich functionality.

Supported on Many Platforms and Programming Paradigms

A perfect fit-for-purpose tool in many computing environments, REXX got its start as a replacement for EXEC-2 on IBM VM. Today, it’s a powerful programming language that excels as a general purpose scripting language or when an object-oriented model (Open Object REXX is preferred or when the software environment is a JVM (NetRexx) on everything from a mainframe to Linux, even on a mobile platform.

Primary Scripting Language for Some Important OSes

Every OS needs a scripting language because small-scale integrations rely on them. With IBM, the REXX language started with support in VM/CMS, MVS TSO/E, AS/400, VSE/ESA, AIX, PC DOS and OS/2 and continues with the latest versions, for example, z/OS and z/VM. With the Regina REXX Interpreter, an open-source implementation, there’s support on Linux, FreeBSD, Solaris, AIX, HP-UX and also to OS/2, eCS, DOS, Windows, Amiga, AROS, QNX4.x, QNX6.x, BeOS, MacOS X, EPOC32, AtheOS, OpenVMS, SkyOS and OpenEdition. REXX can function as the primary scripting language in all of these environments.

Low Cost, Open Source and Freeware Implementations

On IBM mainframes, the Interpreter executes (interprets) REXX code “line by line” and is included in all z/OS and z/VM releases. A REXX library is required to execute compiled programs. There’s a runtime library (priced product) and an alternate library (free download). Other implementations are open source. Freeware is available for tools like Rexx/SQL and Rexx/DW.

Compatibility With Previous Releases Is a Focus

Because REXX started with IBM and IBM on z/OS and z/VM has a long-standing focus on compatibility with previous releases, it’s inherited that mindset and associated implementation focus. The REXX ISO standard, Information Technology – Programming Language REXX., American National Standards Institute (ANSI), 1996. Document Number: ANSI X3.274-1996, also helps with compatibility and portability. This standard provides an unambiguous definition of the programming language and has done a lot to help create a consistent language that runs consistently release-to-release on a variety of different platforms.

Good for Simple Tools or Commercial Product Creation

If you think of the uses of REXX, imagine two extremes. At one end is the product installer who needs to administer a source-language interface, written in REXX, between a system product and the in-house ticket system. A few changes to the code, some testing, documentation and you are finished. At the other end is a team of six programmers developing commercial software for their company to sell. All are full-time developers and most of the product they are developing is written in REXX. Perhaps that team develops a million lines of code (that was my experience). The remarkable thing about the language is that it can satisfy both diverse communities of use.

Largest Unknown Application Language

In “7 Reasons That Rexx Still Matters,” the author writes, “Rexx, as a glue language, is used by staff who are not supposed to do any programming, such as systems programmers and infrastructure and middleware management groups.” The author continues, “As such, Rexx applications tend to stay under the radar, but if we were to take them away, it would surely mean the end of the world.”

REXX is important today because the language is simple yet powerful, supported by an international standard and available to run on dozens of platforms. It is simply the most useful scripting language available for use in building needed tools and OS extensions. And, it can go beyond just tool creation as it is robust enough to be used to build cross-platform commercial software products.

When Mike Cowlishaw developed REXX, he was keenly aware of the need for an improved scripting language, as EXEC-2 was stretched to its limits. He is a visionary, but perhaps not even he could have anticipated the success and importance of REXX.