I downloaded ooRexx 4.0.0 build 4702 and attempted to build THE with it on ubuntu 8.10.
What follows are presumably some of the errors in the old, SAA API header file, rexx.h.
Presumably, because I've only spent about 10 minutes looking at the ooRexx 4.0.0 rexx.h,
and compared it to the ooRexx 3.2.0 rexx.h (for Linux), and the Regina and Rexx/Trans
1) All the tyedefs for types such as LONG, ULONG, CHAR, PSZ etc have been removed. This breaks any
Rexx application that uses these typedefs to ensure that the types in the user program are the
same as in the API.
2) The typedefs for RexxFunctionHandler, RexxSubcomHandler, RexxExitHandler have also been removed.
See comment in point 1.
3) The REXXDATETIME structure is missing the item; "valid", the last item in the structure that
was present in the 3.2.0 rexx.h. This will cause binary incompatibility under 32bit platforms
if a Rexx application or external function package uses Rexx/Trans to provide interpreter
4) There is inconsistency in the way the type of fields in some structures has been converted:
(Please note that this has not been tested or confirmed, but certainly appears to be the case)
eg. in SHVBLOCK, the shvnamelen was a ULONG (unsigned long) in 3.2.0. In 4.0.0 it is now a size_t.
in REXXDATETIME, the microseconds field was ULONG (unsigned long) in 3.2.0 and it is now unint32_t.
This means that on the 64bit platform, one of the ULONGs in 64bit, and the other ULONG is 32bit.
Due to this the 64bit version of ooRexx will not be binary compatible with other Rexx interpreters,
principally Regina on 64bit platforms which will not allow users to use Rexx/Trans on 64bit platforms.
I can see the desire to remove the old OS/2 typedefs from the new ooRexx 4.0.0 API files, but the point of
retaining the old, SAA API is to provide backwards compatibilty. This has not been achieved in build 4702
of ooRexx 4.0.0.