Rexx
Overview
Rexx is a programming language developed at IBM by Mike Cowlishaw in 1979. It is largely based on PL/I. Cowlishaw's original intention was to develop a language similar to PL/I, but easier for beginners and non-programmers to grasp. Since its creation Rexx has been extended and implemented on many platforms in different ways. This page is a repository for all OpenVMS related Rexx activity.
NetRexx
NetRexx is IBM's Java based version of Rexx. It is entirely written in Java and consists of a compiler and run-time. Rexx code is compiled to Java which is then compiled to Java byte-code. Although not officially supported by IBM, it is possible to run NetRexx under OpenVMS.
After downloading and unpacking the IBM binary kit you should be left with a [.NetRexx...] directory tree. Download the OpenVMS NetRexx setup procedures and unpack the, in the [.NetRexx] directory. In this kit are two procedures. The first is NETREXX_STARTUP.COM, to be included in the system startup procedure. It defines the system-wide product logicals. The second is NETREXX_LOGIN.COM, to be included in the user's login procedure. It sets up the nrc and netrexxc compiler commands. When adding NETREXX_LOGIN.COM to the user's login procedure it is important to run the Java setup procedure first. An excert from a typical login procedure might look like this:
$ if (f$search("SYS$MANAGER:JAVA$142_SETUP.COM") .nes. "")
$ then
$ @sys$manager:java$142_setup
$ if (f$search("NETREXX_ROOT:[000000]NETREXX_LOGIN.COM") .nes. "") then -
$ @netrexx_root:[000000]netrexx_login
$ endif
NetRexx is a Java application so it responds to all the Java and DECC$* feature logicals. At a minimum the following should be configured:
$ set process/parse_style=extended
$ define DECC$ARGV_PARSE_STYLE "TRUE"
$ define DECC$EFS_CASE_PRESERVE "TRUE"
$ define DECC$EFS_CASE_SPECIAL "TRUE"
To run a compiled program, simply use the Java VM, making sure to include the NetRexx run-time in the classpath. The following example demonstrates compiling and running a NetRexx program.
$ type hello.nrx
/* This is a fully documented NetRexx program */
say 'Hello World!'
$ netrexxc hello.nrx
NetRexx portable processor, version 2.05
Copyright (c) IBM Corporation, 2005. All rights reserved.
Program hello.nrx
Compilation of 'hello.nrx' successful
$ java -classpath /netrexx_runlib/NetRexxR.jar:. hello
Hello World!
It is also possible to run the program in the NetRexx Interpreter, with a couple extra options:
$ netrexxc hello.nrx -exec -nojava
NetRexx portable processor, version 2.05
Copyright (c) IBM Corporation, 2005. All rights reserved.
Program hello.nrx
===== Exec: hello =====
Hello World!
Processing of 'hello.nrx' complete
Links
The following are a collection of links to other Rexx resources around the internet.
- comp.lang.rexx is a forum for discussing Rexx. It is a usenet newsgroup so it can be accessed from either Google or your favourite NNTP client.
- RexxLA is The Rexx Language Association. They are an independant, non-profit organization dedicated for futhering the Rexx Programming Language. They have been involved in the release of Open Object Rexx and the upcoming open source release of NetRexx.
- Mike Colishaw's Rexx Page was once the definitive reference for all things Rexx, it has been preserved by RexxLA.