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.