Enhancements in Personal REXX 3.0

Here is a summary of the major new features in Personal REXX 3.0:

*    Performance

     Many REXX programs will run significantly faster with Personal
     REXX 3.0 than they did with Personal REXX 2.0 (which itself
     was much faster than earlier versions). Some programs will run
     more than twice as fast, and one beta tester reported that
     parts of his application were more than 6 times as fast.

     Areas which will show the greatest improvement include integer
     arithmetic, simple loops, and some common character-string
     functions (like RIGHT, LEFT, SUBSTR, WORD). However, almost
     every program will exhibit a noticeable performance
     improvement.

*    Ability to run large applications

     A swapping capability has been added that allows REXX programs
     to invoke large applications like databases, spreadsheets, or
     graphics with only about 2K bytes of overhead. In effect,
     there is no longer any limitation due to the size of the REXX
     language processor on the sorts of work you can do with REXX.

     Swapping may be either to disk (including ramdisk) or EMS.
     Control over when swapping is done and the location of the
     swap file is provided by a new built-in function. For greatest
     flexibility, defaults for the swap parameters can be provided
     by a DOS environment variable.

*    Compatibility

     Personal REXX 3.0 is compatible with MS-DOS and PC-DOS 5.0.
     It is also compatible in both language and built-in functions
     with IBM's OS/2 (Release 1.3) REXX implementation. Programs
     written for the IBM REXX which do not use OS/2-specific
     features should, in most cases, run unmodified in DOS with
     Personal REXX. (DOS memory limitations may place restrictions
     on program size.)

*    New REXX language features

     Personal REXX now supports the most recent REXX language
     features, as described in the second edition of Mike
     Cowlishaw's The REXX Language. (This reference is included in
     the upgrade package, but may be omitted for a slight saving
     of cost.) The new features include:

     -    The VALUE function can now set variables as well as
          retrieve their values (eliminating the need to use the
          INTERPRET instruction in many cases). It can also
          retrieve and set values of DOS environment variables.

     -    A list of variables can be supplied to EXPOSE as the
          value of another variable, making it much easier to
          expose variables that need to be globally available
          throughout a program.

     -    Variables can now be used in PARSE templates for
          positional patterns. That is, variables can be used to
          specify absolute or relative column numbers.

     -    A NOTREADY condition has been implemented to allow
          handling of I/O errors. A STREAM built-in function has
          been added to perform certain kinds of I/O operations.

     -    Handlers for the ERROR, FAILURE, HALT, and NOTREADY
          conditions can be invoked by CALL as well as SIGNAL. This
          makes it possible to return to the point of error after
          processing the condition. Several different handlers for
          each type of condition can be provided in the same
          program, since the label that identifies the handler no
          longer needs to be the same as the name of the condition.

*    New built-in functions

     A number of additional built-in functions have been defined.
     They provide new capabilities such as:

     -    syntax checking of file names, and identification of
          device and directory names

     -    changing the time/date stamp on a file

     -    saving and restoring all environment variables, and
          determination of the total size and free space available
          in the DOS environment

*    More flexible use of resident programs

     The REXX "Interrupt Manager" is no longer required if one
     doesn't need the services it enables. All Personal REXX
     resident programs can be unloaded when they are not needed.

*    Licensed run-time version available

     A version of the REXX language processor that is capable of
     running previously compiled Personal REXX programs has been
     created. It cannot by itself execute uncompiled programs.

     The run-time module is not included with the standard Personal
     REXX retail package or the 3.0 upgrade package. Instead, it
     will be provided under the terms of a special license from
     Quercus Systems for a specified number of copies. This license
     permits software developers to distribute the run-time module
     and any necessary Personal REXX utilities with their
     applications, without requiring end users to pay for a
     complete Personal REXX package.
