SOURCES AND CHANGES -- REXX (Regina 3.3) for OpenVMS VAX kit
=============================================================

Licence and what you may do
  Regina is free software under the GNU Library General Public License,
  version 2 (COPYING_LIB.TXT; "any later version" is also allowed).  You may
  run, copy, modify and redistribute it under that licence.  This kit is a
  program (REXX.EXE) built from the library's sources; the complete
  corresponding source, with every change we made and the procedures to
  build it, is in [SRC] and [PATCHES] of this kit.  If you receive this
  kit's saveset without them, ask for them: the licence requires that they
  be offered with the binary, at no more than the cost of physical
  distribution.  Written offer (Douglas P. Fields, Jr.,
  symbolics@lisp.engineer): the sources of this kit are available on
  request.
  To relink after changing a file: copy [SRC] to a work directory and
  $ @BUILD_REXX work-directory   (it compiles every module with the flags
  below and links REXX.EXE).

Origin
  Regina 3.3, 25-APR-2004: Anders Christensen (1992), Mark Hessling and
  Florian Grosse-Coosmann.  From the DECUS collection VMS LT04A (VU)
  regina-rexx-3_3_tar, SHA-256
  106f1631f514d08160a804df036c2a959dc4d9f6b71a66a7419eb2a4c77963fa.
  (The original VMS port is Regina 0.05d, Jan 1994, GPL; not used.)

Changes (marked in each file: "MODIFIED 12-OCT-2026 ... lang-rexx"); made by
Douglas P. Fields, Jr. (symbolics@lisp.engineer), 12-OCT-2026, not by the
original authors.  The unified diffs of 02 to 08 are in [PATCHES].

  01  ERROR.C, REGINA_C.H, ARXFUNCS.C
        the national characters in the German and other message texts and the
        copyright sign / sharp s in two comments are written in ASCII (this
        kit is ASCII only).  (No diff in [PATCHES]: it would contain the
        original characters.)
  02  VMSFUNCS.C   the DCL lexical function equivalents:
        - removed the raw "#error FIXME const propagation" text block;
        - const and TSD (thread-specific data) corrections that Compaq C
          requires; a brace missing in F$PID; wrong argument in F$PID;
        - 16 bit length results held in 32 bit integers (F$MESSAGE, F$GETDVI
          TIME formats, F$MODE, F$PROCESS) that were not initialised;
        - bit numbering of F$CVUI/F$CVSI (VAX order, bit 0 is the least
          significant bit of the first byte);
        - F$CVTIME: month name, delta increment index;
        - F$FAO: rewritten argument collection ("!5SL" is a width, "!#" takes
          its value from an argument, as $FAOL expects);
        - F$GETSYI: the node name is the second argument; new items ARCH_NAME,
          ARCH_TYPE, MAXPROCESSCNT, MEMSIZE, PAGE_SIZE, SCSNODE, SCSSYSTEMID;
        - F$LOCATE returns the length when not found, as DCL does;
        - F$PRIVILEGE: current privileges, vectors cleared;
        - F$SEARCH: no message when nothing matches;
        - F$IDENTIFIER: numbers above 2**31;
        - new F$EDIT and F$DEVICE.
  03  VMSCMD.C     replaced: DCL symbols and logical names for VALUE(), and
        the LIB$SPAWN helper used to run commands.  (The 2002 file did not
        compile.)
  04  ENVIR.C, SHELL.C
        the VMS redefinitions of fork() and posix_do_command removed; commands
        go through fork_exec() in DOSCMD.C.
  05  DOSCMD.C     VMS uses the temporary-file style of fork_exec(); commands
        are run with LIB$SPAWN and redirected through files (stream-LF
        temporary files in SYS$SCRATCH:).
  06  BUILTIN.C, EXTERN.H, FUNCS.C
        VALUE() pools SYMBOL, GLOBAL, LOGICAL; TIME('O') from
        SYS$TIMEZONE_DIFFERENTIAL; the new functions registered and declared.
  07  REXX.C       the exit code is mapped to a VMS condition value.
  08  CONFIGUR.H   a device or logical name with a colon ("SYS$LOGIN:X.REX")
        counts as a file specification (FILE_SEPARATORS "]:").

Compiler flags (not source changes): CC/NOLIST/NAMES=SHORTENED
/DEFINE=VMS/OPTIMIZE/STANDARD=RELAXED_ANSI89
/WARNINGS=DISABLE=(IMPLICITFUNC)/INCLUDE_DIRECTORY=SYS$DISK:[] ; no library
other than the C run-time library is linked.  The shipped BUILD.COM and
DESCRIP.MMS (which need MMK and stop at the first error) are replaced by
[SRC]BUILD_REXX.COM and REXX_BUILD.LIS.

The full procedure to rebuild, with the changes as files and the recorded
timings, is REXX_VAX_REBUILD.md in the vms-exploration repository.
