The Rand RL/S compiler for IBM’s PL/S language was developed in the early 1970s by the Computation Center of the Rand Corporation in Santa Monica, CA. It was implemented using the XPL compiler generator system by a team of three Rand programmers (R. Lawrence Clark, James S. Reiley, and the team leader David J. Smith). The Rand RL/S compiler was developed independently of and without any assistance from IBM. Only publicly available, non-copyrighted PL/S documentation and PL/S source and generated assembler code examples from IBM distributed source files for the MVS operating system were used.
RL/S is fully compatible with IBM’s PL/S II language. This was assured by parsing many thousands of lines of IBM written PL/S code taken from the MVS distribution files. The assembler language code produced by the Rand RL/S compiler is not identical to the code produced by IBM’s PL/S compiler, but it is functionally equivalent.
Rand has been a long-time contributor to computer research and development (e.g., JOSS, the Rand tablet, WYLBUR) and was an early pioneer in the definition and development of “packet switching” network technology (Baran). Rand was also one of the early nodes on the Arpanet, the Defense Department’s precursor to the Internet.
Rand’s interest in PL/S derived from extensive modifications that the Computation Center had made to IBM’s MVT operating system, including modifications to improve the performance of the Arpanet on its IBM 360 computer. Because MVT did not process network interrupts quickly enough to handle the Arpanet traffic, a “hypervisor” was developed to allow Arpanet interrupts to be handled by specially written code while all other interrupts were handled by MVT. When the MVS operating system was announced by IBM, Rand volunteered as an early “beta” site for the operating system with the intent of porting the hypervisor and other modifications to MVS.
As is well documented, IBM, however, refused to provide its PL/S compiler to customers, claiming it was a significant competitive advantage. Not having the compiler meant that neither competitors nor customers could modify the MVS code at the PL/S source level, and could only modify the generated assembler code. However, modifications made at the generated assembler level were easily obsoleted when IBM modified the PL/S source code and distributed re-generated assembler code. This was particularly true of modifications to PL/S generated data structures. Rand, therefore, decided to develop its own version of a PL/S compiler to meet both operational objectives and contractual commitments.
The RL/S compiler was initially written in PL/I and later converted to RL/S to improve performance. With few restrictions, RL/S programs could be developed using IBM’s PL/I compiler for preprocessing and debugging, with the final code then compiled by RL/S.
The Rand RL/S language and compiler were publicly announced in August, 1976, at a Share meeting where numerous copies of the RL/S Language Reference Manual were distributed to attendees. IBM quickly responded claiming the language was “proprietary”. While Rand admitted no wrong doing in developing RL/S, Rand management agreed not to distribute the compiler publicly. Rand, however, continued to use the RL/S language and compiler internally for many projects.
A fully compliant PL/S compiler was developed by Fujitsu Ltd in the late-1970s, adapting IBM's PL/I Optimizer compiler source code as its starting point. This PL/S compiler was used internally by Fujitsu, and also by Fujitsu's external affiliates. Whether or not IBM was aware of this unlicensed use of its intellectual property is not known. The phase names of this PL/S compiler were the same as the corresponding phase names of IBM's PL/I Optimizer compiler, with the initial "I" (IBM) in each phase name being replaced by an initial "J" (Japan). All IBM copyright notices (source and object) within the modules were deleted to hide their true origin and ownership.