REXX Events

By Richard K. Goran

The sixth international REXX Symposium was hosted by the Stanford Linear Accelerator Center from May 1-3, 1995. As a result of SLAC's sponsorship this year, there was no registration fee required of the attendees.

The topics presented were as diverse as the locations represented by over 100 attendees ranging from all over the world. The farthest distance travelled by an attendee was by Anders Christensen from Norway. Anders is the author of the Regina Unix REXX interpreter. The 1995 REXX Symposium Committee composed of Cathie Dager from SLAC, Pat Ryall, Forrest Garnett from IBM, Pam Taylor from The Workstation Group, and James Weissman kept the more than 20 presentations moving at a rapid pace. The keynote session was presented by the creator of REXX - Mike Cowlishaw, an IBM Fellow from the IBM Hursley Labs in England. Mike retraced the development and evolution of REXX from its first specification which he released on March 29, 1979. Les Koehler, a former IBMer currently with Advantis who is credited with writing some of the first REXX programs, was also a symposium attendee.

One of the most interesting topics was presented by Rick McGuire from the IBM Glendale Labs in Endicott, New York and the Object REXX development team leader. Rick's entertaining style along with his easily understood method of presentation resulted in keen interest amongst all of the audience. A beta version of Object REXX was first made available to the OS/2 community on the IBM Developer Connection CD-ROM, Volume 6. Volume 7 of the DEVCON CD-ROM contains an updated and improved version of Object REXX with the final beta scheduled for Volume 8 of the DEVCON CD-ROM. The power of Object REXX, which is becoming known as simply OREXX, is almost overwhelming. Those of us who have many years of experience with "classic REXX", as the older style of REXX interpreter has come to be called, will have some adjustment to the new concepts introduced with OREXX and object programming in general. With OREXX, all of the variables and strings we are accustomed to dealing with are simply one kind of object - a string object.

The platforms represented by the Symposium speakers included Unix, MVS and VM/CMS (IBM mainframes), and AREXX (Amiga). The presentation topics were just as varied. Interestingly, most of the people whose REXX experience was on platforms other than OS/2 were keenly interested in what was happening on the OS/2 platform.

The Technical Development Committee for the ANSI X3J18 committee held its final meeting during the two days prior to the REXX Symposium. The members of this committee worked diligently for four years to produce the proposed ANSI standard for REXX. While not many REXX users will be interested in pouring over this rather dry document, it will be available from numerous World Wide Web and FTP Internet sites around the world including: http://www2.hursley.ibm.com and [ftp.cfsrexx.com].

The Rexx Language Association, or RexxLA as they are known, also hosted their annual meeting on the first evening of the Symposium. The purpose of RexxLa is to spread the "gospel of REXX" to both users and software developers who are investigating the best overall language to use for scripting, macro creation, or other general functions to be used in conjunction with new program development when the proposed ANSI standard becomes sanctioned, many new REXX-aware applications should come into being.

IBM's announcement at the Symposium that the source code for their Unix REXX interpreter will be made available for no charge should also help spur new REXX development on the Unix platform. IBM will also make a REXX interpreter available for Windows but no commitment was stated as to any fees that might accompany the Windows REXX interpreter.

However, IBM dropped a minor bombshell at the Symposium when Tim Browne of IBM's Glendale Lab in Endicott, New York informed the Symposium attendees that all of IBM's REXX development and support was being transferred to their facility in Böblingen, Germany. This left many unanswered questions about the level of support and the responsiveness that the German lab will provide for the OS/2 platform. The transfer includes OREXX which is still in its infancy and has had its development tied to a Glendale Labs team headed by Rick McGuire. Only time will tell what the impact of this major move will have on the future of REXX development. I would hazard a guess that the inadequacy of REXX documentation that we have experienced in the past will not be improved by this transition. This would be a severe detriment to the expansion of OREXX that IBM is hoping for.

New REXX Books
With the expanded interest in REXX by new OS/2 users, the most frequently asked, non-technical question I have been getting is "What do you recommend for a good OS/2 REXX book?". That has been a tough question until recently. Not that good REXX books haven't been written. Rather, these previously available REXX books have been written with platforms other than OS/2 in mind.

During the Symposium I received two new OS/2 REXX books. The first of these, [#Cookbook The REXX Cookbook], bore a title that I have always thought would be an ideal approach to presenting REXX to people who had just discovered REXX. Unfortunately, this cookbook simply allows you to make hash. I found the book very difficult to read because of its presentation style. Also, there seems to be very little organization to the way the material is presented. References jump forward and backward and even an experienced REXX programmer may have trouble following the material as it is presented.

Conversely, the second book - [#Teach Teach Yourself REXX in 21 Days] appears to be the best OS/2 REXX learner's guide that I have seen to-date. The material is well organized and is presented in a manner that anyone with very little programming experience can still grasp. It builds in a step-by-step manner and leads the reader up to the manipulation of Workplace Shell objects with REXX. Lest I be accused of an incestuous recommendation, I must tell you that this book was written by Bill Schindler and one of my fellow contributing editors here at OS/2 Magazine - Esther Schindler. Also it was edited for technical accuracy by our own Brian Proffit. Collectively they did a great job in this writer's opinion in producing an OS/2 REXX teaching reference that is easy to read and that I highly recommend. I will leave the full reviews of these books to my colleague Stan Kelly-Bootle.

"Compile" or Tokenize Only Option
The REXX interpreter is mistakenly referred to as a compiler. It is an interpreter rather than a compiler. When you invoke a REXX program by entering the name of the cmd file on an OS/2 command line or by calling a cmd file from another program, cmd.exe looks at the beginning of the cmd file and determines that it is a REXX program by the presence of a comment ("/*") beginning in position 1 of line 1 of the cmd file. When it finds a REXX program, it then launches the REXX interpreter passing it the name of the cmd file.

The REXX interpreter then "tokenizes", or converts the REXX program to an internal notation and then executes the program. This tokenized form of the program is saved as extended attributes of the program file and is available for subsequent execution of the program. By saving the tokenized format of the program, subsequent execution of the program is speeded up by saving the time required to convert the program statements to internal format.

The extended attributes created by this process are: REXX.METACONTROL REXX.LITERALPOOL REXX.VARIABLEBUF REXX.TOKENSIMAGE The maximum size for each extended attribute is 64K. This limit is imposed by the design of the extended attributes. If a REXX program would result in an extended attribute in excess of this 64K limit, the internal form of the program is not saved and every time the program is executed, it must first be converted to internal format. This does not appear to pose any realistic hardship on the system.

It is possible to invoke the REXX interpreter for the purpose of creating the extended attributes but without letting the program execute. By specifying the name of the Cmd file followed by "//t", the program is converted to the external format but not executed.

Another "Gotcha"
The "//t" command line parameter for cmd.exe is demonstrative of a serious flaw that I have reported to IBM but have, as yet, not received any response. It turns out that any command line parameter which includes two concatenated slashes (//) is swallowed by cmd.exe. This has a severe implication in trying to pass Internet Universal Resource Locators (URLs) to a REXX program. Since almost all of the URLs contain with two slashes, for example http://www.cfsrexx.com, they will never be passed to the REXX program. I hope that IBM will realize the severity of this problem and release a fix quickly.

Resources
Teach Yourself REXX in 21 Days ($29.99) ISBN 0-672-30529-1
 * by William F. Schindler & Esther Schindler
 * SAMS Publishing
 * 201 West 103rd Street
 * Indianapolis, IN 46290

The REXX Cookbook ($27.95 book plus $14.95 for the companion diskette) ISBN 0-9632773-4-0
 * by Merrill Callaway
 * Whitestone
 * 51 1 -A Girard Blvd. SE
 * Albuquerque, NM 87106