System/370 (MVS) version of the ingenious BRexx interpreter originally by Vasilis N. Vlachoudis.
Currently released version is V2R5M0
REXX is a programming language designed by Michael Cowlishaw of IBM UK Laboratories. In his own words: "REXX is a procedural language that allows programs and algorithms to be written in a clear and structured way."
Syntactically, REXX doesn't look that different from any other procedural language. Here's a simple REXX program:
/* Count some numbers */
say "Counting..."
do i = 1 to 10
say "Number" i
endBRexx is an open source version of the classic Rexx developed by Vasilis Vlachoudis of the Cern Laboratory in Switzerland. Written as an ANSI C language program, BRexx is notable for its high performance. It also provides a nice collection of special built-in functions and function libraries that offer many extra features over most of the existing Classic Rexx implementations.
BRexx was originally written for DOS in the late eighties/early 1990s. Then,with the rise of Windows, it was revised for the 32-bit world of Windows and 32-bit DOS. BRexx also runs under the Linux and Unix family of operating systems, and has a good set of functions especially written for Windows CE. Other operating systems on which it runs include: MacOS, BeOS, and the Amiga OS.
One of the outstanding features, among so many, of BRexx is its minuscule footprint. The entire product, written in C, including full documentation and examples, takes up only a measly few hundred kilobytes. It is small enough to fit on a single, ol' school floppy diskette!
Hence, BRexx was prime for re-targeting to MVS/VM for TSO/CMS. And so it was.
Recently, the BRexx Rexx Interpreter was made operational onto the MVS 3.8j
platform as BRexx/370 version V2R1M0 and it was released in April of 2019.
The MVS 3.8j (now emulated) mainframe platform which pre-dates IBM's official
release of TSO/CMS Rexx published initially, in the next (i.e. XA) set of
offerings of IBM mainframe OSes. However, the lack of having a Rexx
significantly hampers the MVS 3.8j platform of not only the highly utilitarian
features of Rexx as the powerful glue it provides as an operating system's
command/macro language, tying all of the vast collection of system resources
together programmatically, under one umbrella, but also prevents the users and
the MVS 3.8j community from taking advantage of the treasure trove of Rexx-ware
scripts/programs/applications that exists currently which greatly enhances the
MVS 3.8j user's and MVS 3.8j community's mainframe computing experience,
many-fold.
BRexx was made operational, as BRexx/370, targeting the MVS 3.8j platform by: Peter Jacob (PEJ) and Mike Groβmann (MIG). BRexx/370 now provides a Rexx scripting/command language for the MVS 3.8j platform.
Full releases with install instructions are available here: https://github.com/mvslovers/brexx370/releases
Installation instructions are in the BREXX/370 User's Guide (ML03-0001), chapter "Installing BREXX/370": BREXX/370 manuals
The manuals are on Read the Docs, BREXX/370 manuals, as web pages and PDF: ML03-0001 User's Guide, ML03-0002 Reference, ML03-0003 Library and Samples. Their sources are in docs/books.
BREXX/370 builds on the host with MBT (mbt 3) and the CC/370 (cc370) toolchain: compile, assemble, link and package on the host, no MVS round trip. Install mbt 3 and the cc370 toolchain with its LIBC/370 sysroot (see mbt's MIGRATION.md, section 1), then:
mbt build --all # all load modules into build/
mbt package # dist/brexx370-<version>-load.xmitmbt deploy and mbt run mvstest (the REXX test suite on MVS) talk to
an MVS system that mbt knows as a target: mbt target import .env --name <name> turns an mbt 2 .env into one (~/.mbt/targets.toml).
See internals/cc370-migration.md for how
the build got here and TODO.md for the next steps. The former
JCC based build (2.5.3) lives on in the branch
v2.5-jcc; it is
no longer maintained.
For questions and suggestions you can find us at: Moshix Discord Channel
Please also read the original README.
