A Brief Look at Personal REXX

Written by Gordon Zeglinski

Introduction
A while back, an INTERcomm ("IC") user sent me some e-mail complaining about crashes in the REXX modules of IC. He mentioned that he's not running IBM's REXX package but rather Personal REXX by Quercus Systems. This event led to my investigation of Personal REXX and this brief look. So what exactly is Personal REXX and why would anyone want to use it instead of IBM's REXX?

What's Unique About Personal REXX
Personal REXX is available for DOS, Windows, Windows NT and OS/2. The OS/2 package includes REXXLIB, RXWINDOW, the DOS version of Personal REXX and of course, the OS/2 version. The OS/2 version is an replacement DLL for IBM's REXX.DLL. Its API is identical to that of the IBM version. However, Personal REXX is designed for the serious REXX user. It is faster, and has less limits than IBM's version. For example in Personal REXX, a function can be passed up to 250 arguments and a REXX program can have up to 50 I/O streams open simultaneously. In IBM's implementation of REXX, these limits are 20 and 15 respectively. Also, Personal REXX doesn't use EAs to store REXX object code. Rather, it appends the object code after the ASCII EOF character. This alleviates the 64K object code limitation that IBM's REXX implementation suffers from.

If you're not a "serious" REXX programmer, there's still many useful things in this package. First, there's an excellent 300+ page REXX language reference manual. It has all sorts of interesting programming information along with many how-to tips. In total, there's over 900 pages of documentation on Personal REXX. For those in need of various external REXX functions, Personal REXX includes REXXLIB. REXXLIB (also sold separately) includes a plethora of functions that deal with everything from the OS/2 file system to higher math functions. Included in REXXLIB are functions to manipulate "REXX arrays", manipulate stemmed variables, search files, manipulate directories, query process information, query system information, use pipes, use semaphores, and much more.

In addition to having a comprehensive set of external functions in REXXLIB, Personal REXX also ships the RXWINDOW utility library. RXWINDOW allows the programmer to manipulate VIO based windows. A REXX program using RXWINDOW can have up to 50 independent windows that can be hidden or overlapped.

Conclusion
Personal REXX is definitely for the serious REXX programmer. However, REXXLIB and RXWINDOW are useful to just about anyone doing REXX programming in OS/2. In fact, only people doing the simplest REXX programming wouldn't find something of use in REXXLIB.

So what was this bug in IC/Personal REXX? Personal REXX uses more stack space than IBM's implementation. The crash occurred because IC wasn't allocating enough stack space for its REXX threads.

For price and ordering information contact Quercus Systems:
 * Email: 75300.2450@compuserve.com
 * Phone: (408) 867-7399
 * Fax: (408) 867-7489