Make your own free website on
7.1. Background and history

In the various definitions of REXX, there are numerous references
to the “stack” (often called the “external data queue”, or just
the “queue”). It is a structure capable of storing information,
but it is not a part of the REXX language itself.  Rather, it is a
part of the external environment supporting a REXX implementation.

Originally, the references to the stack was introduced into REXX
because of the strong binding between REXX and IBM mainframes in
the early history of REXX [BMARKS]. Most (all?) of the operating
systems for these machines support a stack, and many of their
script programming idioms involve the stack. Therefore, it was
quite natural to introduce an interface to the stack into REXX,
and consequently today many of the programming paradigms of REXX
involve a stack.

Unfortunately, this introduced an element of incompatibility into
REXX, as the stack is not in general supported for other operating
systems. Consequently, REXX implementors often must implement a
stack as well of the core REXX interpreter. Since no authoritative
definition of the stack exists, considerable differences between
various implementations.  Ironically, although the stack was
introduced to help communication between separate programs, the
interpreter-specific implementations of stacks may actually be a
hindrance against compatibility between different interpreters.

The stack may have “seemed like a good idea at the time”, but in
hindsight, it was probably a bad move, since it made REXX more
dependent on the host operating system and its interfaces.