REXX is a structured programming language that emphasizes character manipulation and interpretive execution, and has found widespread use as an operating system command programming language. This book is intended to provide a complete definition of the REXX language. The book consists of two major parts: (1) an overview of the language and the concepts that guided its design, and (2) a language definition. The language concepts that give REXX its most recognizable characteristics are:
readability--the language is essentially free-format, with punctuation only where absolutely necessary
implicit (“natural”) data typing--there is nothing to declare
symbol manipulation--the language has a strong bias toward character-string data
The language is defined from the bottom up, starting with character sets, comments, and tokens of various kinds, and proceeding upward to expressions and operators, clauses and instructions, and functions. The longest chapters are devoted to the language’s instructions (such as PARSE and PULL) and built-in functions (such as CHARS and COMPARE). Whenever a language feature is left open to the implementor (for example, numeric precision), the author suggests an “implementation minimum” to enhance program portability.
The book is not well suited for reading in order. The definitions of REXX instructions such as PARSE and PULL make frequent forward reference to later chapters on parsing and input/output, and the latter chapters really need to be read first to understand the former. Since the book is intended as a reference, this arrangement is not a major drawback, but it does detract from the otherwise high quality of the work.
The book is now in its second edition. The second edition describes REXX version 4.0 (October 1989) and includes an appendix listing the major changes to the language described in the first edition (version 3.6, 1985). A chapter on the history of REXX has been added to Part 1, and Part 2 has been beefed up with new chapters on “Characters and Encodings” and “Conditions and Condition Traps.” Part 3, “Implementations of the REXX Language,” has been dropped and some of its material transferred to the companion volume by O’Hara and Gomberg [1], which is also in its second edition. The typeface and layout of the text are not as attractive as in the first edition, but some improvements are noticeable in the examples; for example, uppercase O can now be distinguished from zero.
This book is a must for all implementors and serious users of REXX. For people using REXX to learn programming (which is quite feasible), O’Hara and Gomberg’s book is a better starting point.