Some quick notes about this REXX implementation, but first, for 
copyright and copying conditions, se the bottom of this file.

It have been built with ANSI C, lex and yacc. The code is 
fairly POSIX-compliant, except from a few places (see below).

For building the interpreter, just:

1) Edit the Makefile, and comment out a suitable definition of the
   macros CC and CEXTRA, or you may want to make a new.

2) Run the command   make 

3) The Makefile does not yet contain an install target, the only thing
   needed is to move the program 'rexx' to the place where you want 
   it to reside. There is no manual page, yet.

4) You might want to run the documentation through the LaTeX 
   textformatter. If you don't have the 'block' and 'a4' style
   options for tex (these are not standard LaTeX options), just 
   edit them out, and let the first line become:

      \documentstyle{article}


I have built it on the following platforms:

   - GCC v2.x, flex and bison, on several architectures
   - c89 (unbundled), lex and yacc on Decstation 5000, under Ultrix 4.2
   - cc, lex and yacc on Irix Indigo, under IRIX
   - acc (unbundled), lex and yacc on Sun Sparc, under Sunos 4.2
   - cc, lex and yacc on Decstation 3100, under OSF/1
   - c89, lex and yacc on HP 9000, under HP/UX 8.05

You may have to play around a little with compiler options to get it 
to work. I use debugging and lots of warning when I work on the 
interpreter. So you can speed it up a lot by tuning the options. 

The areas where it is not POSIX compliant is

   - it uses "struct timeval" and gettimeofday(). You can control 
     this through the HAS_TIMEVAL option in config.h. Comment it 
     out if your machine does not eat the code. (Consequences: the
     interpreter will have a time granularity of 1 second)

   - It uses ftruncate(). If you do not have that, comment out the 
     HAS_FTRUNCATE option on config.h. (Consequences: when writing 
     to the middle of a file with lineout(), the file will not be 
     truncated after the line written

The interpreter has bugs and missing features, some of them are
listed in the BUGS.tex file (that file isn't finished either...)
If you find more bugs, please send me a email describing the bug.
It is important that you bugreport contains:

   - Description of what equipment you used, i.e. hardward-platform,
     operatingsystem, compiler version, compiler options used etc

   - A description of the buggy behaviour (and the behavious that 
     you expected)

   - Preferably a program that demonstrates the behavior, the
     program should be as small as possible, preferably not more
     than 10 lines or so. 

   - If you have already fixed the bug, please append a context diff 
     of the changes you did to the source.

Please make sure that the bug is really a bug in the interpreter, not 
just a bug in your program. If possible, run your program on other
REXX interpreters to see how they behave, and check with a REXX manual 
if you have access to one. 

There are two subdirectories, the first is 'trip' which is the start 
of a "triptest" for a REXX interpreter, where I want to test most 
features in a REXX interpreter. If enough tests are gathered in this
triptest, any REXX interpreter that manage to run it would be 
fairly REXX compatible. 

The other subdirectory is the 'code', which contains some small 
demoprograms for REXX, mainly demonstrations of special programming
features in REXX.

I have also planned a 'contrib' directory, containing some REXX 
utility programs, like Unix versions of programs like NAMEFIND, 
EXECIO etc. However, that is a bit into the future, as I have not
really started to code these program ...

Some of the things that the interpreter does not have is:

   - SIGNAL ON is missing
   
   - Strings are C-type string, which is terminated by ASCII null. 
     Therefore, you can not have that character inside a string.

   - Arithmetics are using C-functions, so anything connected with 
     NUMERIC will not work. In fact, conversion of numbers might 
     be dependant on the C-compiler you are using.

   - I think there still is problems connected to traceing.

   - The documentation is far from finished, and it is full for 
     spelling errors (sorry, English is not my native language...)

   - For the (external) commands, there is not a consistent shell
     in the background to which commands are sent, instead there
     are a shell that is started up each time (ADDRESS SYSTEM), or
     the command is run directly (ADDRESS PATH and COMMAND). This
     will be fixed ...

   - lots of other things ...

There are a electronic mailing list for announcements of new versions
and discussions of the alpha-release. The address is rexx@pvv.unit.no. 

Anders Christensen          email: anders@solan.unit.no
Norvegian Institute for Technology
University of Trondheim, Norway


And then the copying conditions....

Copyright (C) 1992 Anders Christensen <anders@solan.unit.no>

This is free code, and you may copy it and use it as you like, with 
one exception: you may not sell it, or otherwise use it for commercial
purposes. 

There is also another restriction: as long as the interpreter is not
officially released, I would like the code not to be redistributed. 
If you know of other people who would like to use or test the code, 
please tell them to contact me directly. 

If you make bugfixes and/or modifications to the code, that you think
may be useful for other people, please forward them to me at by
electronic mail, so I can incorporate them into the source. Until 
the interpreter is official released, I don't want unofficial versions
floating around on the net.

If you use code from this interpreter in your work, refer to that in
the documentation.

The code comes with no warrenty. You use it at your own responsibility. 
Nor do I garantee updates, bugfixes support or anything else that might
cost me more time and/or money than I can afford. 

The official release will come with a more 'fancy' lisence, probably
the GPL.
