Make your own free website on
5.1. Background and Historical Remarks

Stream I/O is a problem area for languages like REXX. They try to
maintain compatibility for all platforms (i.e. to be non-system-
specific), but the basic I/O capabilities differ between systems,
so the simplest way to achieve compatibility is to include only a
minimal, common subset of the functionality of all platforms.
With respect to the functionality of the interface to their
surrounding environment, non-system-specific script languages like
REXX are inherently inferior to system specific script languages
which are hardwired to particular operating systems and can
benefit from all their features.

Although REXX formally has its own I/O constructs, it is common
for some platforms that most or all of the I/O is performed as
operating system commands rather than in REXX. This is how it was
originally done under VM/CMS, which was one of the earliest
implementations and which did not support REXX’s I/O constructs.
There, the EXECIO program and the stack (among other methods) are
used to transfer data to and from a REXX program.

Later, the built-in functions for stream I/O gained territory, but
lots of implementations still rely on special purpose programs for
doing I/O. The general recommendation to REXX programmers is to
use the built-in functions instead of special purpose programs
whenever possible; that is the only way to make compatible