From: giguere@csg.uwaterloo.ca (Eric Giguere)
Subject: REXX FAQ (again because it didn't make it to REXXLIST)
Originator: giguere@csg.uwaterloo.ca
Organization: Computer Systems Group, University of Waterloo
Date: Mon, 28 Sep 1992 14:24:14 GMT

Sorry for posting this again, but on Friday I crossposted it to news.answers
as well and I forgot that this meant no one on REXXLIST would get a copy
of it!  Next time I'll remember to post to news.answers separately...

ALSO:  I've put a copy of the "Visual REXX" for OS/2 up on rexx.uwaterloo.ca
under /pub/os2rexx/ibm/vrexx2.zip.



FAQ Version Number: 5
Last updated: September 25, 1992
Changes since last update:  Version 1.3 of REXX/imc available, and UI
                            routines for OS/2 available.

This posting contains a list of answers to Frequently Asked Questions 
about the REXX programming language.  The list is maintained by Eric Giguere
(giguere@csg.uwaterloo.ca) and posted at regular intervals to 
comp.lang.rexx.


Topics:

    [General Information]

     1) What is REXX?
     2) What is the reference book for REXX?
     3) Information on ANSI and REXX
     4) REXX conference information
     5) FTP sites for REXX-related material
     6) Free versions of REXX
     7) Commercial versions of REXX
     8) Newsgroups and mailing lists
     9) Selected Bibliography
    10) Is REXX better than Perl?

    [Programming Questions]

    A) Why does my OS/2 REXX program run more quickly the second time? 
    B) Where do I get documentation on adding ARexx support to my
       programs? (Amiga-specific)
    C) Where can I get patches for my OS/2 REXX?
	D) Can I put up Presentation Manager windows and dialogs from      
	   the OS/2 REXX?
     
----------------------------------------------------------------------------
1) 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."  

    Syntactically, 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 its capability
for being used as a _macro language_ for arbitrary applications.  The
idea here is that application developers don't have to design their own
macro languages and accompanying interpreters.  Instead they use REXX as
the basis for that language and support the REXX programming interface.
When a REXX program runs and comes across an expression or function that 
isn't part of the base language definition, it can ask the application
if it knows how to handle it.  The application only has to support 
features that are specific to it, freeing the developer from handling
the mundane 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.


----------------------------------------------------------------------------
2) What is the reference book for REXX?

    The "standard" reference for REXX is Mike Cowlishaw's _The REXX
Language: A Practical Approach To Programming_, currently in its second
edition.  (The first edition had "REXX" in blue on the cover, the
second edition has it in red instead.)  Mike's book is often referred
to as either "TRL" or "the red book".  Until the ANSI committee releases
its standard, TRL is the document that defines what REXX is.  (See the
bibliography below for details on TRL.)

----------------------------------------------------------------------------
3) Information on ANSI and REXX

The American National Standards Institute (ANSI) sets national standards
for various things in the United States, including programming languages.
The X3J18 REXX Standards Committee has been established to defined a
formal standard for the REXX language, using TRL as its base document.
The Committee meets 3 or 4 times a year and holds ongoing discussions
throughout the year.  Members of X3J18 mostly include REXX implementors
and some users, but anyone can participate.  More information on X3J18
can be had from Brian Marks (chair), marks@winvmd.vnet.ibm.com
or Neil Milsted (vice-chair), nfnm@wrkgrp.com.

----------------------------------------------------------------------------
4) REXX conference information

The Stanford Linear Accelerator Center (SLAC), a heavy user of REXX
on several platforms, sponsors the REXX Symposium, an annual gathering
for REXX users and implementors.  The last Symposium was held in May
of 1992.  The next Symposium is planned for the spring of 1993, probably
on the west coast of the US.

For more information on the Symposium, and information on receiving
proceedings of previous Symposiums, contact Cathie Dager at SLAC,
cathie@slacvm.slac.stanford.edu.

----------------------------------------------------------------------------
5) FTP sites for REXX-related material

    The site rexx.uwaterloo.ca (maintained by giguere@csg.uwaterloo.ca)
is a (currently small) repository for REXX-related material.

    REXX-related materials for specific systems can also be found
on FTP sites serving those systems: 

            wuarchive.wustl.edu     (Amiga)
            ftp-os2.nmsu.edu        (OS/2)
            software.watson.ibm.com (OS/2 -- official IBM support)

----------------------------------------------------------------------------
6) Free versions of REXX

    REXX interpreters come bundled with the operating system on the
Amiga (Workbench 2.0 and higher) and under OS/2 2.0.  REXX also comes
on certain IBM mainframe systems running CMS or MVS.

    Currently there are three freely-distributable interpreters (with
source) for Unix machines, all available for anonymous FTP from
rexx.uwaterloo.ca:

    /pub/freerexx/regina/regina-0.03d.tar.Z       254939   ANSI C
          files originally from flipper.pvv.unit.no

    /pub/freerexx/alrexx/rx102.tar.Z              671904   C++ (using GNU G++)
          files originally from tony.cat.syr.edu

    /pub/freerexx/imc/rexx-imc-1.3.tar.Z          491691   ANSI C
          currently only runs on SunOS machines

To compile, the first two interpreters require Lex and Yacc (or suitable 
clones).  All are still beta versions, though imc has been around the longest
and claims to be quite stable.  (Note: "regina" was called "andersrexx"
in previous FAQs because I couldn't remember the interpreter name.)

----------------------------------------------------------------------------
7) Commercial versions of REXX

    The following vendors sell REXX for various platforms:


        Wishful Thinking Development Corp.    [Amiga]
        P.O. Box 308
        Maynard, MA 01754
        (508) 568-8695


        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, OS/2]
        P.O. Box 2157
        Saratoga, CA 95070
        (408) 867-7399


        Kilowatt Software   [DOS, Windows, Tandem]
        1945 Washington St., #410
        San Francisco, CA 94109-2968
        (415) 346-7353


        Dineen Edwards Groups    [REXX compiler for the Amiga]
        19785 W. 12 Mile Rd., Suite 305
        Southfield, MI 48076-2553
        (313) 352-4288


        IBM   [REXX compiler for MVS/TSO and VM/CMS]
        Contact your local rep
        Program numbers:  5695-013 (compiler)
                          5695-014 (library)


        Systems Center   [REXX compiler for VM]
        1800 Alexander Bell Dr.
        Reston, VA 22091

    There also exist vendors for various platforms (Amiga, OS/2, 370)
    that sell extensions and enhancements for REXX intepreters.

----------------------------------------------------------------------------
8) Newsgroups and mailing lists

    On Usenet the group comp.lang.rexx exists for discussion of REXX
in all its variations.  Currently the comp.lang.rexx newsgroup is also
gatewayed with the REXXLIST mailing list (i.e., anything that gets posted
to the newsgroup is sent to everyone on the mailing list and anything that
is sent to the mailing list gets posted to the newsgroup).

    Those without Usenet access will be interested primarily in the 
various mailing lists available.  The following information, kindly provided
by Scott Ophof, describes how to subscribe to the various lists and what
lists exist.  Note that these mailing lists are BITNET-based and Internet 
sites might have use the proper Internet domain-based names (given at the
end) instead of the BITNET node names.

     -- Subscribing to the list:

            To receive postings from a list discussing REXX, send e-mail to:

                   LISTSERV@some-node-address

            with the following line as body:

                   SUBSCRIBE list-name Your-full-name

            See list below for which "list-name" to use.  "Your-full-name" 
            is your NAME, *not* your e-mail address...

            Example: If I wanted to read more about what is going on with 
            the REXX compiler for VM, I'd send e-mail to LISTSERV@UCF1VM
            and insert as the first and only line:

                   SUBSCRIBE REXXCOMP F. Scott Ophof

            North Americans may want to send their subscription request to
            LISTSERV@uga.cc.uga.edu, Europeans might want to send their
            request to LISTSERV@DEARN, those in the Far East to 
            LISTSERV@TWNMOE10, etc.  The list server you send your request
            to will automatically forward that request to the server nearest
            you if possible.

      -- Receiving postings:

            Once you've subscribed to the list, any mail sent to the list
            will automatically be sent to you as well, at the address you
            used to subscribe to the list.  The mail will come to you just
            like the rest of you email.  

      -- Posting to the list:

            To post something to the list, use the email address listed
            below under "List Address".  You can also simply just reply
            to a posting you've received in your mailbox as is usually
            done (as long as it uses the "Reply-To:" header line).  Note 
            that the list server will not normally send you a copy of 
            anything you post.

      -- Mailing lists:

            List Name        List Address             Discusses

            AREXX-L          AREXX-L@UCF1VM           Amiga REXX
            PC-REXX          PC-REXX@UCF1VM           Personal REXX
            REXXCOMP         REXXCOMP@UCF1VM          REXX Compiler
            TSO-REXX         TSO-REXX@UCF1VM          TSO REXX
            UREXX-L          UREXX-L@Liverpool.ac.uk  Unix REXX
            VM-REXX          REXXLIST@HEARN           VM/SP REXX
                             VM-REXX@MARIST             "
                             VM-REXX@OHSTVMA            "
                             VM-REXX@UCF1VM             "
            REXX-L           REXX-L@UIUCVMD           generic REXX
                             REXX-L@UALTAVM             "
            REXXLIST         REXXLIST@DEARN             "
                             REXXLIST@EB0UB011          "
                             REXXLIST@FINHUTC           "
                             REXXLIST@OHSTVMA           "
                             REXXLIST@POLYGRAF          "
                             REXXLIST@TWNMOE10          "
                             REXXLIST@UCF1VM            " 
                             REXXLIST@UGA               "

            Note:
                 - The list-names "REXXLIST" and "REXX-L" refer to the same 
                   discussion group, i.e. non-implementation-specific REXX.
                 - Subscription requests and cancelling of subscriptions 
                   *must* be sent to <LISTSERV@that-node>, *not* to 
                   <list-name@that-node>.
                 - With one exception, BITnet addresses have been used here.`
                   See the "Address Translation List" for the Internet form 
                   of these addresses.
                 - Please save the item you will receive on acceptance of your 
                   subscription detailing what to send where; it also 
                   contains info on how to cancel your subscription...


      -- Address Translation List::


            BITnet node      Internet address 
            DEARN            %DEARN.BITnet@nic.surfnet.nl
            EB0UB011         @sic.ub.es
            FINHUTC          @finhutc.hut.fi
            HEARN            @nic.surfnet.nl
            MARIST           @VM.Marist.EDU
            OHSTVMA          @OHSTVMA.ACS.OHIO-STATE.EDU
            POLYGRAF         @graf.poly.edu
            TWNMOE10         %TWNMOE10.BITnet@nic.surfnet.nl
            UALTAVM          @vm.ucs.ualberta.ca
            UCF1VM           @UCF1VM.CC.UCF.EDU
            UGA              @uga.cc.uga.edu
            UIUCVMD          %UIUCVMD.BITnet@uga.cc.uga.edu


----------------------------------------------------------------------------
9) Selected bibliography

    This is from Mike Cowlishaw.  Note that a VERY complete bibliography
    can be found in _The REXX Handbook_.  (Any updates to the bibliography
    should be sent to Linda Suskind Green, greenls@gdlvm7.vnet.ibm.com,
    who will pass them on to the appropriate persons.)

      Modern Programming Using REXX -- Robert P. O'Hara and David R. Gomberg
          In English:   ISBN 0-13-597311-2   Prentice-Hall, 1985
                        ISBN 0-13-579329-5     (Second edition), 1988

      The REXX Language -- M. F. Cowlishaw
          In English:   ISBN 0-13-780735-X   Prentice-Hall, 1985
                        ISBN 0-13-780651-5     (Second edition), 1990
          In German:    ISBN 3-446-15195-8   Carl Hanser Verlag, 1988
                        ISBN 0-13-780784-8   P-H International, 1988
          In Japanese:  ISBN 4-7649-0136-6   Kindai-kagaku-sha, 1988

      REXX In the TSO Environment -- Gabriel F. Gargiulo
          ISBN 0-89435-354-3, QED Information Systems Inc.,
          Order #CC3543;  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, 424pp+diskette, Abacus, 1991

      The REXX Handbook -- Edited by Gabe Goldberg and Phil Smith III
          ISBN 0-07-023682-8, 672pp, McGraw Hill, 1991

      Amiga Programmer's Guide to ARexx -- Eric Giguere
          Commodore-Amiga, Inc., 1991
 
      Programming in REXX -- Charles Daney
          ISBN 0-07-015305-1, 300pp, McGraw Hill, 1992


    Note that IBM also publishes a whole slew of REXX-related documents,
    sometimes referring to REXX as the "SAA Procedures Language".  One of
    these documents is the SAA CPI Procedures Language Level 2 Reference,
    SC24-5549.

----------------------------------------------------------------------------
10) Is REXX better than Perl?

    Maybe.  Depends.  Yes.  No.  Does it matter?

    In case you don't know, Perl is a powerful scripting language with its
roots in the Unix world.  If you're really interested in Perl, you should
check out the comp.lang.perl newsgroup.

----------------------------------------------------------------------------
A) Why does my OS/2 REXX program run more quickly the second time?

    When you run a REXX CMD file for the first time after you've modified
it, the REXX interpreter will actually store a tokenized version of the
program on disk alongside the source version 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:

        dir say.cmd
        SAY      CMD      22     6-11-92   8:34a


        dir /n say.cmd
        6-11-92   8:34a       22        317    SAY.CMD

If a tokenized version exists AND you haven't modified the file, REXX will
load the tokenized version instead of rereading the source.

----------------------------------------------------------------------------
B) Where do I get documentation on adding ARexx support to my programs? 
   (Amiga-specific)

    If you want to make an ARexx command host, function host, or function
library, or you want to learn what those terms mean, you need to get this
book:

        Programmer's Guide to ARexx, P/N AREXX01
        
It includes a disk with full source code (in C, compatible with SAS/C and
Manx Aztec C) to the examples.  It's an official Commodore publication
and is aimed at developers but non-developers can order it.  In the United
States, cost is $20 plus $3 S&H (add sales tax in Penn., Virginia, Calif.,
Tenn. and Ill.).  Send your order to Commodore-Amiga Technical Support (CATS),
Department C, Commodore Business Machines, 1200 Wilson Drive, West Chester,
PA 19380.  In Canada, price is $20 plus $10 S&H plus 7% GST plus your PST.
Send your order to Amiga Developer Support, Commodore Business Machines,
3470 Pharmacy Ave., Agincourt, Ontario M1W 3G3.  All orders to either 
location must be prepaid with a cheque or money order.  European customers
may contact Hirsch & Wolf oHG, Mittelstr. 33, 5450 Neuwied 1, Germany
(tel ++49-2631-24485) for prices and availability.  All others can order from
CATS in the U.S. at the address above, but include $15 for S&H intead of $3..

     Please note: The book is NOT a tutorial on ARexx!  It is meant for
programmers wishing to add ARexx support to their products.  

----------------------------------------------------------------------------
C) Where do I get patches for my OS/2 REXX?

	If patches are necessary, IBM will make them available via anonymous
FTP on software.watson.ibm.com.  The patches will also be made available
on rexx.uwaterloo.ca (under /pub/os2rexx/ibm).  There is currently a patch 
call REXX20.ZIP available which fixes some small problems.

----------------------------------------------------------------------------
D) Can I put up Presentation Manager windows and dialogs from OS/2 REXX?

	IBM has made available a simple "Visual REXX" system for OS/2 REXX.
It's a function library that allows you to put up simple windows and
some simple dialogs from any REXX program running in an OS/2 session.
It is currently available for FTP from software.ibm.watson.com as the
file /pub/os2/vrexx2.zip, and can also be found ftp-os2.nmsu.edu.

	Note that the term "Visual REXX" is used pretty loosely here.  As
a package is is pretty skimpy when compared to Microsoft's Visual BASIC
under Windows.  It's really more like the various UI libraries that
are available for use with ARexx on the Amiga.

----------------------------------------------------------------------------
Questions/comments/suggestions about this FAQ should be sent to Eric Giguere,
giguere@csg.uwaterloo.ca.

-- 
 Eric Giguere                                    giguere@csg.UWaterloo.CA
          So is Windows NT short for "Windows, NOT?"  
Comments: Gated by NETNEWS@AUVM.AMERICAN.EDU