A postscript version of this file is available on rexx.uwaterloo.ca as the file /pub/rexxfaq.ps, and a Word for Windows version as the file /pub/rexxfaq.doc. The REXX SourceBook Frequently Asked Questions About REXX Last Revised: July 22, 1993 Eric Giguere giguere@watcom.on.ca ---------------------------------------------------------------- Copyright Information This document is copyright )1993 by Eric Giguhre. Permission is granted to reproduce and distribute all or part of this document for non-commercial purposes only. All other uses must first be cleared with the author. The author may be contacted on the Internet at the address giguere@watcom.on.ca or on paper by writing to WATCOM International, 415 Phillip Street, Waterloo, Ontario, Canada, N2L 3X2. Please note, however, that this document is not published or endorsed by WATCOM. ---------------------------------------------------------------- Introduction This document is intended to serve as a useful reference for REXX-related information. It aims for breadth as opposed to depth, and references to other material are given where appropriate. Suggestions and updates should be sent to the author in an attempt to keep this document relevant and up- to-date. ---------------------------------------------------------------- A. What Is REXX? REXX is a programming language designed by Michael Cowlishaw of IBM UK Laboratories. In his own words: "REXX is a procedural language that allows programs and algorithms to be written in a clear and structured way." REXX doesn't look that different from any other procedural language. Here's a simple REXX program: /* Count some numbers */ say "Counting..." do i = 1 to 10 say "Number" i end What makes REXX different from most other languages is that it is also designed to be used as a macro language by arbitrary application programs. The idea is that application developers don't have to design their own macro languages and interpreters. Instead they use REXX as the macro language and support the REXX programming interface. If a REXX macro comes across an expression or function call that it cannot resolve, it can ask the application to handle it instead. The application only has to support the features that are specific to it, freeing the developer from handling the mundane (and time-consuming) task of writing a language interpreter. And if all applications use REXX as their macro language, the user only has to learn one language instead of a dozen. ---------------------------------------------------------------- B. REXX and the Internet Networks connect computers in various ways for the exchange of data. The terminology is a bit confusing to the new user. Here are the definitions this document uses: Usenet: Not really a network, just the set of machines that exchange network news. Network news is really an extended form of electronic mail that groups messages from individuals into newsgroups that users can read using special newsreaders. Internet: The worldwide network based on TCP/IP protocols. Besides being able to receive mail and newsgroups, these machines can use programs like ftp and telnet to communicate with other machines in real time. Most Internet machines are Unix-based. BITNET: The worldwide network that connects many IBM mainframes. BITNET users can also transfer files using methods that are incompatible with those of the Internet. Newsgroups The Usenet group comp.lang.rexx exists for discussion of REXX in all its variations. Anything posted to this newsgroup also gets sent to the REXXLIST mailing list (see below) and vice-versa. Other newsgroups of interest are machine-specific. Recommended groups are comp.os.os2.programmer and comp.sys.amiga.programmer. FTP Sites of Interest FTP is a file transmission protocol used on the Internet to transfer files between machines. The transfers are done in real time and usually require that the user have an account on both machines. However, many machines on the Internet support what is known as anonymous FTP, which allows users on other machines access to a limited set of files without requiring an account. Some of the more interesting sites that offer this service are: rexx.uwaterloo.ca General repository for REXX-related information, including free REXX interpreters for Unix and DOS. An XEDIT clone for Unix and OS/2 may also be found here. Look under /pub/rexx. flipper.pvv.unit.no The official home of Regina, one of the free Unix interpreters. An archive of the messages in comp.lang.rexx is also maintained here. Check under /pub/rexx. ftp-os2.cdrom.com General OS/2 archives. Look under ftp.luth.se /pub/os2. wuarchive.wustl.edu General Amiga archive. Look under /pub/aminet. Mailing Lists Mailing lists are similar to newsgroups but use normal electronic mail to deliver the messages. The following mailing lists are mostly BITNET-based but are accessible from the Internet as well: List name BITNET Internet Discusses Node Address REXXLIST UCF1VM ucf1vm.cc.ucf.edu REXX in general AREXX-L UCF1VM ucf1vm.cc.ucf.edu Amiga REXX PC-REXX UCF1VM ucf1vm.cc.ucf.edu Personal REXX REXXCOMP UCF1VM ucf1vm.cc.ucf.edu IBM's REXX compiler TSO-REXX UCF1VM ucf1vm.cc.ucf.edu TSO REXX VM-REXX UCF1VM ucf1vm.cc.ucf.edu VM/SP REXX UREXX-L (none) liverpool.ac.ak Unix REXX To subscribe to any of these lists, send a one-line message to the address LISTSERV@node, where node is the BITNET node or Internet address for the list you wish to join. In the body of your message should be the line SUBSCRIBE list-name your--full-name as in SUBSCRIBE UREXX-L Eric Giguere You will then be subscribed to the list and messages will start arriving in your mailbox. To send a message to the list, simply mail it to listname@node, as in UREXX- L@liverpool.ac.uk. Note the distinction between the LISTSERV address and the listname address. You can receive help by sending a HELP message to the LISTSERV address. Note that some of these mailing lists may be available on Usenet in the form of newsgroups with names starting with "bit.listserv". Ask your system administrator if you're not sure. Thanks to Scott Ophof for providing this summary. Gopher Service Gopher clients may find REXX-related information at the site bigblue.pvv.unit.no. ---------------------------------------------------------------- C. Free REXX Products Interpreters There are at least three REXX interpreters available for free on the Internet. The first two are Unix based and are well-supported by their authors. The third is an MS-DOS interpreter. Regina is Anders Christensen's REXX interpreter for various flavours of Unix and VMS. It is fairly complete and Anders even has an API for developers. It also apparently can be ported to OS/2. Anders can be reached at anders@pvv.unit.no. Regina's official home is flipper.pvv.unit.no. REXX/imc is Ian Collier's REXX interpreter for SunOS, though it has also been ported to other Unix systems. Ian can be reached at imc@prg.ox.ac.uk. BREXX is Bill Vlachoudis' REXX interpreter for MS-DOS. The interpreter is not complete but is quite small. Bill can be reached at bill@donoussa.physics.auth.gr. All three interpreters are available for anonymous FTP on rexx.uwaterloo.ca in the /pub/freerexx directory, each interpreter in its own subdirectory. Regina and REXX/imc are in source form, BREXX is only available as binary. REXX-Aware Text Editors Also on rexx.uwaterloo.ca in the /pub/editors directory is the text editor THE by Mark Hessling (mark@snark.itc.gu.edu.au). THE is a full-featured XEDIT/KEDIT clone (by XEDIT here we mean the IBM mainframe text editor, not the X Windows editor xedit) with REXX support. THE is available in versions for OS/2 and Unix. THE's official home is on ftp.gu.edu.au in /src/THE. ---------------------------------------------------------------- D. Commercial REXX Products Interpreters REXX interpreters are available commercially for a wide variety of systems and come standard on some operating platforms such as the Amiga, OS/2 and the IBM mainframes. The following vendors sell REXX interpreters: The Workstation Group [Various UNIX platforms, also VMS] 6300 River Road Rosemont, IL 60018 (800) 228-0255 (US only) sales@wrkgrp.com Quercus Systems [DOS, Windows, Windows NT, OS/2] P.O. Box 2157 Saratoga, CA 95070 (408) 867-7399 Kilowatt Software [DOS, Windows, Tandem] P.O. Box 209 Reynoldsburg, Ohio 43068 (800) 848-9474 (US only) (614) 866-4300 Compilers Although REXX is usually thought of as an interpreted language, it can also be compiled. The following vendors all sell REXX compilers: Dineen Edwards Group [Amiga] 19785 West 12 Mile Road, Suite 305 Southfield, MI 48076-2553 (313) 352-4288 IBM [MVS/TSO and VM/CMS] Contact your local representative Systems Center [VM/CMS] 1800 Alexander Bell Drive Reston, VA 22091 Visual Development Environments There are two REXX-based visual development environments available for OS/2: VX-REXX WATCOM International 415 Phillip Street Waterloo, Ontario Canada N2L 3X2 Phone: (519) 886-3700 Fax: (519) 747-4971 VisPro/REXX HockWare P.O. Box 336 Cary, NC 27512-0336 Phone: (919) 387-7391 Fax: (919) 380-0757 REXX-Aware Text Editors Clones of the popular XEDIT editor are available for Unix from the Workstation Group (see address above) and for DOS and OS/2 from Mansfield Software. Mansfield Software P.O. Box 532 Storrs, CT 06268 Phone: (203) 429-8402 Fax: (203) 487-1185 The OS/2 Enhanced Editor (EPM.EXE), which is bundled with OS/2, also has REXX support. Use its online help and search for the 'rx' command. ---------------------------------------------------------------- E. REXX and ANSI The American National Standards Institute (ANSI) sets national standards for various things in the United States, including programming languages. The X3J18 REXX Standards Committee is currently defining a formal standard for the REXX language, using Mike Cowlishaw's book as its base document. The Committee meets 3 or 4 times a year and holds ongoing discussions throughout the year by electronic mail. Members of X3J18 are mostly REXX implementors, but anyone can participate. The Committee intends to release a draft standard next year. More information can be had from the vice-chair, Neil Milsted at nfnm@wrkgrp.com. Note that public ANSI documents relating to X3J18 can be had using the LISTSERV service at PSUVM on BITNET or by Gopher to bigblue.pvv.unit.no on the Internet. ---------------------------------------------------------------- F. REXX Bibliography Mike Cowlishaw has kindly provided the following partial bibliography of REXX books. The REXX Language -- M.F. Cowlishaw English: ISBN 0-13-780735-X Prentice-Hall, 1985 ISBN 0-13-780651-5 2nd edition, 1990 German: ISBN 3-446-15195-8 Carl Hanser Verlag, 1988 ISBN 0-13-780784-8 P-H International, 1988 Japanese: ISBN 4-7649-0136-6 Kindai-kagaku-sha, 1988 Modern Programming Using REXX -- Robert P. O'Hara and David R. Gomberg English: ISBN 0-13-597311-2 Prentice-Hall, 1985 ISBN 0-13-579329-5 2nd edition, 1988 REXX in the TSO Environment -- Gabriel F. Gargiulo ISBN 0-89435-354-3, QED Information Systems Inc. 320 pages, 1990. Practical Usage of REXX -- Anthony S. Rudd ISBN 0-13-682790-X, Ellis Horwood (Simon & Schuster), 1990 Using ARexx on the Amiga -- Chris Zamara and Nick Sullivan ISBN 1-55755-114-6, Abacus Books, 1991 The REXX Handbook -- Edited by Gabe Goldberg and Phil Smith III ISBN 0-07-023682-8, McGraw-Hill, 1991 Programming in REXX -- Charles Daney ISBN 0-07-015305-1, McGraw-Hill, 1992 Command Language Cookbook -- Hallett German ISBN 0-442-00801-5, Van Nostrand Reinhold, 1992 ===================================================================== G. Frequently Asked Questions ----------------------------------------------------------- 1. Is REXX better than ? Short answer: Yes. No. Maybe. Does it matter? Long answer: This question wastes a lot of bandwidth in comp.lang.rexx and other newsgroups. Every language has its good points and its bad points. Some people love REXX, some people hate it. Use a language that suits your needs. (Editorial digression: Programming languages are like sexual positions -- some are more exciting than others, some are more difficult, some are unusual, few have tried them all, and everyone has a favorite.) ----------------------------------------------------------- 2. Why does my OS/2 REXX program run more quickly the second time? When you run a REXX CMD file for the first time, a tokenized version will be stored on disk using the OS/2 extended file attributes. (You can see how big the tokenized version is by using the /N option on the DIR command.) If a tokenized version exists AND the file has not been modified, CMD.EXE will use the tokenized version instead of parsing the source. Note that there is a 64K limit on the size of an extended attribute entry, so very large REXX programs do not benefit from this automatic tokenization.