Subject: Fourth Annual REXX Symposium From: Melinda Varian (Princeton) Date: Sat, 5 Jun 1993 15:45:31 EDT I recently attended the Fourth Annual REXX Symposium, convened by the Stanford Linear Accelerator Center. The Symposium was held in conjunction with a meeting of ANSI Committee X3-J18, which is preparing a national standard for the REXX language. The members of the ANSI Committee and the authors of most implementations of REXX participated in the Symposium, along with other people who use REXX on a variety of platforms. The great majority of the sessions during the Symposium dealt with REXX on platforms other than its original home, VM/CMS. There are now REXX implementations on almost every known platform -- PCs of all flavors, UNIX, OS/2, CMS, TSO, VMS. Microsoft has announced that there will be a third-party implementation of REXX for NT, and rumor has it that there are at least three NT REXX implementations in the works. I will mention below some of the Symposium sessions of particular interest. Note that I came back with several diskettes, in addition to handouts, and would be happy to make copies of the handouts and to lend the diskettes to anyone who is interested. REXX -- The Future, Mike Cowlishaw ---------------------------------- Mike Cowlishaw, the author of REXX, discussed the state of REXX and the continuing rapid growth in its use around the world. There are now eighteen commercial implementations of REXX and forty-one published books. REXX is accessible to well over ten million users. There are probably about one million people who code in REXX. One hundred thousand copies of his book "The REXX Language" (TRL) have been sold. Various REXX interpreters and compilers are generally measured in terms of REXX clauses per second (cps). A high-end x86 (486/66) now gets about 27,000 cps. A RISC system has been measured at 42,000 cps (some of the largest RISC systems have not yet been measured). Large mainframe systems have been measured at 90,000 interpreted cps per processor. With the IBM REXX compiler, numbers up to 465,000 cps have been seen. Cowlishaw listed what he views as the "top ten" desired language enhancements in terms of user requests (for things that are feasible without an enormous change to the language). Though he numbered them in inverse order, he said not to construe the numbers as too significant: 10. "Signal On Digits", to trap on unexpectedly "overprecise" numbers. 9. Expressions in stem references. 8. "Parse Caseless", to match strings even if they have a different mixture of upper- and lower-case characters. 7. "Parse Lower" (the opposite of "Parse Upper"). 6. Indirect call, e.g.: where = 'anyname' Call (where) a, b would call the routine "anyname". 5. Change and Count functions to replace and count strings: needle = 'is' haystack = 'This is the third' new = 'at' Say Countstr(needle,haystack) Say Changestr(needle,haystack,new) 4. Call by reference (would introduce aliasing into the language), e.g.: Call fred p, q+1, r fred: Procedure Use Alias a, , c or fred: Procedure Use Arg (a), b, (c) 3. External Procedure Expose to allow externalization and sharing of routines by permitting Procedure Expose at the start of external routines. (There are questions concerning the inheritance of the settings for Digits, etc.) 2. Extended Do to allow iteration over tails of compound variables, e.g.: Do Tail Over fred Say fred.tail End tail would display all values held in variables whose name begins with "FRED.". (Changing the FRED. set while in the loop would be an error.) 1. Date and time conversion for other than the current instant, e.g.: Say Date('USA',19930827,'STANDARD') would display '08/27/93'. "Almost every programmer needs these at some time." One other Cowlishaw quote: "REXX is going to be a first-class object- oriented language, as Simon's prototype has shown." Object-Oriented REXX -- Simon Nash ---------------------------------- Simon Nash, the architect of Oryx, IBM's object-oriented extensions to REXX, gave an excellent demonstration of Oryx. Oryx's syntactic extensions to REXX for object-oriented programming allow one to do such things as assign an object to a variable and to write the methods attached to an object in REXX. Anything that can be done by the user manipulating objects can also be done with REXX calls. In addition to the language extensions, Oryx includes: o Graphical user interface support via a class library of visual objects that supports OS/2 Presentation Manager and AIX/Motif, o A development environment that includes a class browser, an interactive debugger, an object inspector, etc., and o Integrated support for the objects of the OS/2 Workplace shell, using IBM's System Object Model (SOM). Nash was refreshingly non-religious in his view of object-oriented programming. He displayed no list of oo commandments and simply urged people to try creating some objects and sending them some messages, gradually working into oo thinking. Pearly PERL -- Larry Wall ------------------------- Wall, the author of Perl, gave quite a useful presentation on Perl (starting out by saying, "I must be nuts to come here!") and then spent an hour taking questions jointly with Cowlishaw. I was struck by the similarity of the origins of the two languages, neither of which was an official development project and both of which achieved excellence via an iterative refinement process, as the authors distributed their efforts to users on a large network and then incorporated their feedback to enhance the languages. When asked about the prospects for an object-oriented Perl, Wall said that he has given it some thought and believes that it will not be difficult to incorporate oo concepts into Perl. He mentioned that 20,000 copies of his Perl book have been sold. A few Wall quotes: o "Almost all of the C operators come straight across into Perl. Some of you may think of that as a feature." o "I do not worship APL." o "Perl just lays smoothly under my mental fingertips." o "All language designers are arrogant by definition." An Introduction to Visual BASIC, or, Know Thine Enemy -- Robert O'Hara ---------------------------------------------------------------------- O'Hara, co-author of the first trade book on REXX, now works for Microsoft, where he is involved in the design of software for a personal digital assistant called WinPad. O'Hara is well remembered for his presentation at the First REXX Symposium, which was entitled, "Why REXX Died". That presentation was given as if it were a retrospective delivered in 1996. Its thesis was that REXX had died because Microsoft had forced the universal adoption of Visual BASIC (following Bill Gates' replacing Dan Quayle on the 1992 Republican ticket). Though he is no fan of Visual BASIC, O'Hara emphasized in his demonstra- tion the importance of VB's development environment, which compensates somewhat for the inelegance of the language. The fact that more than a million copies of VB have been sold makes it a major player no matter what one may think of a language that has more than a hundred reserved words. Although VB is not an imbeddable language today, it does allow direct Windows system calls; one can use it to get to the entire system. It is likely that "Object BASIC" will appear first on NT and that it will be more of a macro language than Visual BASIC is now. Although Microsoft has announced that there will be a third-party REXX for NT, one can assume that REXX will never be incorporated in NT and thus that it will never be used as the scripting language for commercial NT applications. REXX in Windows, NT & Mac Networked to UNIX -- Neil Milstead ------------------------------------------------------------ This session was a sketch of some very exciting work in progress by the author of Uni-REXX. Among his topics were the use of REXX with Excel on both the Macintosh and Windows, data transfer via sockets (with no concern about external data representation because of REXX's string orientation), remote execution of REXX programs (e.g., PCs and Macs sending program strings to be executed on a UNIX server), inter- process communication via the Windows clipboard, generic dialogs for NT and the Mac (e.g., "DialogFileGet" to prompt for an input file and "DialogMessage" to display a message box), and much more. uni-REXX on Multiple UNIX Platforms -- Ed Spire ----------------------------------------------- Spire, who is the head of The Workstation Group, who sell Uni-REXX and Uni-XEDIT, reviewed the quite impressive progress that Uni-REXX has made in the past year in bringing UNIX concepts into the language, stdin, stdout, stderr, named streams, sockets, fork, getxxx, etc. Uni-REXX now has RXSQL capability (based on Oracle) and considerable client-server support. Spire also noted that market acceptance is improving. Earlier in the Symposium, there was a panel discussion by several of the UNIX heavies in attendance, including Ian Collier, of Oxford, the author of "imc", one of the shareware UNIX REXX implementations. Anders Christensen, of the Norwegian Institute of Technology, the author of another UNIX REXX called "regina", did not attend this year, but sent along an announcement of the latest release of "regina". IBM's Workplace OS -- Paul Giangarra ------------------------------------ Giangarra, one of the chief architects of IBM's new MACH-based operating system, gave an excellent presentation on the concepts of micro-kernel technology in this operating system, which is to present "dominant and alternate personalities" (virtualizations of different architectures) in order to run applications written for many of the common platforms. Interestingly, his introduction to the virtual machine concept was as a graduate student using CP/67 at Rensselaer Polytechnic Institute (RPI). REXX on the Macintosh, the Final Frontier -- Jose Aguirre --------------------------------------------------------- Aguirre (University of Texas) has implemented a REXX for Mac called TEXX. I have a copy of TEXX. WATCOM's Visual REXX for OS/2 (VX-REXX) -- Eric Giguere ------------------------------------------------------- Visual Programming with REXX in OS/2 (Vis/Pro REXX) -- David Hock ------------------------------------------------------------------ Visual PM REXX (REXX Works!) -- Amir Kolsky ------------------------------------------- Visual REXX (VREXX) -- Craig Swanson ------------------------------------ These sessions all dealt with "visual builders" for OS/2 for building GUI applications using REXX: o VX-REXX is a product of WATCOM and has just been released. I have a flyer. The sales number is (800) 265-4555. o Vis/Pro REXX, from Hockware, has also just been released. I have a demo disk and a real copy of the product. The sales number is (919) 387-7391. o REXX Works! is being developed at IBM's Watson Lab and is not currently planned to be a product. o VREXX was also developed at Watson and is available via anonymous FTP from software.watson.ibm.com (in the file /pub/os2/vrexx2.zip). I have a paper discussing its use. All these packages seemed to be modelled more or less closely on Visual BASIC and to provide a REXX alternative to VB. They allow one to design a window for an application and then attach REXX to the user-interface objects in that window. To my untrained eye, there was not much to distinguish between the first three, although perhaps the WATCOM product had the most extensive development environment. They all appeared quite usable, but Oryx also has many (most?) of the same facilities built in, and so may displace them all when it appears on the market. Use of REXX in a Visual Builder -- Richard Hoffman -------------------------------------------------- Hoffman, who is with IBM in Austin, also discussed a visual builder. His builder will use Oryx and the OS/2 SOM, which he said will be available on AIX before the end of the year and is currently being ported to Windows. "There will be SOM on the mainframe." The objects created by his builder will include both GUI objects and things like spreadsheet links and will be "chameleons" (that is, they will assume the look-and-feel of each system as applications are ported between systems). The application interface provided by his product will bring in functions like cut/paste, networking, undo/redo, and the user interface. REXX Extensions to OS/2 -- Charles Daney ---------------------------------------- Charles Daney, the author of Personal REXX for MS-DOS and OS/2, discussed "REXXLIB", an extensive set of functions he is selling as an add-on to IBM's REXX for OS/2. REXXLIB includes mathematical functions, stem and array functions, and functions for file system services, operating system information and services, hardware information and control, and interprocess communication. I have a copy of REXXLIB and a detailed manual, as well as a handout. REXX I/O for VM -- Gary Brodock ------------------------------- Brodock is a REXX developer for IBM in Endicott. His presentation described the enhancements for CMS REXX that were announced two days later as part of VM/ESA Release 2.1 (CMS 10), the addition of the REXX stream I/O capability described in TRL and already implemented on several other platforms. I have a handout from this session. THE, A Free XEDIT Look-alike for Multiple Platforms -- Mark Hessling -------------------------------------------------------------------- THE stands for "The Hessling Editor". Hessling is at Griffith University in Brisbane, Australia. THE is similar to KEDIT and XEDIT and supports REXX macros. It runs on UNIX, DOS, and OS/2. I have source (and the DOS and OS/2 executables). X-CUA -- Michael Johnson ------------------------ X-CUA is a product of Relay Technology (formerly the VM Systems Group) that provides an X-based toolkit for building CUA-compliant GUI applications on VM or AIX, using REXX or C. One of its selling points is ease of conversion of existing applications to a GUI interface. Under CMS, the user logs on via a 3270 window on his workstation and then invokes applications that use X-CUA to build other windows on the workstation. The basic process of using X-CUA is: o The application calls X-CUA to build a GUI display and to register for callbacks for specified events (button pushing, etc.). o X-CUA translates the requests into X protocol and transmits them to the X server on the workstation. o The X server sends back event notifications. o X-CUA invokes the callback routines, which may be written in REXX or C. I have a detailed handout from this session. Exploiting VM/CMS REXX Facilities with Waterloo C -- Eric Giguere ----------------------------------------------------------------- Giguere discussed the extensive facilities in Waterloo C for inter- acting with REXX programs, including program calls in both directions and accessing REXX variables from C programs, as well as accessing the CMS program stack and XEDIT file buffers from C programs. I have a handout from this session. SAA REXX Compilation -- Walter Pachl ------------------------------------ Pachl manages product testing at the IBM Software Development Lab in Vienna. He described the features of Version 2 of the IBM REXX Compiler, which has just become available. Version 2 supports level 3.48 of the REXX language. Its most important features are: o Full support of the Interpret instruction, o Binary strings and the x2b and b2x functions, o New Parse templates, +(v), -(v), and =(v), where "v" is a variable with a numeric value, o The Value function with two or three arguments (for evaluating an expression), and o Compilation without access to the C library. Pachl noted that the new Parse templates and the new capability of Value should address 80-90% of the uses of the Interpret instruction. He commented on the furor that the introduction of binary constants has caused (because "anything'b" now denotes a binary constant, which causes many existing REXX programs to break). "I no longer use any one-character variable names. God knows what number systems are coming next." He also commented on Cowlishaw's Top Ten list that his own Top Ten would include "a decent message" on a Novalue condition by default. I was delighted by his description of the technique Vienna had used to get IBMers to shake the bugs out of Version 2 before it ships to customers. The compiler was distributed over VNET to anybody who asked for it. Each person who reported a bug that would have been APARable after release was awarded one "Vienna Point". Everybody who accumulated at least one Vienna Point was awarded with a Sachertorte from Vienna. The person who received the most Vienna Points got to pick his Sachertorte up in Vienna, all expenses paid. The new version of the compiler has just been added to the Higher Education Software Consortium, so we should be getting it soon. Will Object-Orientation Relieve my REXX Frustrations? -- David Robin -------------------------------------------------------------------- Robin, who is the manager of the REXX Project in SHARE, discussed the need for non-object-oriented extensions to the REXX language, which coincided closely with the list Cowlishaw had given earlier with an emphasis on the extensions that are needed to allow REXX programs to be written in a more modular form. Robin also provided the most widely repeated tag line of the Symposium when he complained of repeatedly being told by the oo-bigots back home that the reason he saw needs for extensions other than the oo extensions is that he didn't "have modern thinking". Bibliography ------------ Some current trade books dealing with REXX: Cowlishaw, Michael F., "The REXX Language: A Practical Approach to Programming", second ed., Prentice-Hall, 1990, ISBN 0-13-780651-5. O'Hara, Robert, and David Gomberg, "Modern Programming Using REXX", second ed., Prentice-Hall, 1988. Goldberg, Gabe, and Phil Smith III, eds., "The REXX Handbook", McGraw Hill, 1991, ISBN 0-07-023682-8. Daney, Charles, "Programming in REXX", McGraw Hill, 1992, ISBN 0-07-015305-1. Kiesel, Peter, "REXX Advanced Techniques", McGraw Hill, 1992, ISBN 0-07-034600-3. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - (Originally placed on IBM servers with the permission of the author.)