IBM PL/S
| Industry | Information technology |
|---|---|
| Founded | June 16, 1911 in Endicott, New York, United States |
| Founder | Charles Ranlett Flint |
| Headquarters | Armonk, New York , United States |
| Products | Computer hardware, software, and IT services |
| Website | www |
PL/S (Programming Language/Systems) is a programming language with a "machine-oriented" design, derived from PL/I and created by IBM during the late 1960s under the name Basic Systems Language (BSL). It was intended to substitute assembly language in IBM’s internal initiatives. The language featured support for inline assembly and allowed direct manipulation of registers.
Among the initial applications of PL/S were the batch utility IEHMOVE and the Time Sharing Option for MVT, known as TSO. By the 1970s, IBM had begun reimplementing its main operating system using PL/S. Despite demands from customers, IBM maintained PL/S as proprietary technology to prevent competitors such as Amdahl, Itel, and Storage Technology Corporation from gaining leverage. Although IBM did not release an official compiler, it provided PL/S source code for much of the operating system, allowing clients to review but not readily alter it.
This strategy of exclusivity enabled IBM to preserve control over the OS’s evolution. The language progressed through versions including PL/S II, III, PL/AS (Programming Language/Advanced Systems), and PL/X (Programming Language/Cross Systems). Related dialects like PL/DS and PL/DS II were designed for the DPPX operating system and its port to the S/370 platform. As industry focus shifted away from IBM mainframes and MVS environments, IBM eventually made current iterations of PL/S accessible to select partners via its Developer Partner program.
Rand Compiler for PL/S
The Rand RL/S compiler emerged independently in the early 1970s at Rand Corporation’s Computation Center located in Santa Monica, California. Developed by R. Lawrence Clark, James S. Reiley, and David J. Smith utilizing the XPL compiler generator framework, RL/S was constructed solely based on publicly available PL/S documentation and IBM source examples drawn from MVS.
RL/S achieved full compatibility with IBM’s PL/S II dialect, confirmed by successfully parsing thousands of lines of IBM-authored code. Although the assembler code it generated differed in form from that produced by IBM’s compiler, its functionality remained equivalent.
Rand’s motivation originated from extensive customizations made to IBM’s MVT operating system, particularly aimed at improving Arpanet performance on its IBM 360 systems. To mitigate slow network interrupt handling in MVT, Rand developed a "hypervisor" that managed Arpanet interrupts separately. When IBM released MVS, Rand became one of the early beta sites intending to migrate these enhancements.
IBM declined to commercially distribute its PL/S compiler, citing concerns over competitive advantage. Without access to this tool, customers were limited to altering assembler output generated from PL/S sources—a precarious method since IBM updates frequently rendered such modifications obsolete. To address this limitation and fulfill operational requirements along with contractual commitments, Rand created RL/S.
Originally implemented in PL/I, RL/S was subsequently rewritten in RL/S itself to enhance performance. Developers could preprocess and debug RL/S code using IBM’s PL/I compiler before compiling it with RL/S.
Rand publicly introduced RL/S at a Share conference in August 1976, accompanied by distribution of multiple RL/S Language Reference Manuals. Shortly thereafter, IBM asserted that PL/S remained proprietary; although Rand accepted no liability for infringement, it agreed to cease public distribution of the compiler while continuing its internal usage for various projects.
Fujitsu's Adaptation
During the late 1970s, Fujitsu Ltd created a PL/S compiler that fully complied with the original specifications by modifying the source code of IBM's PL/I Optimizer compiler. This compiler was utilized both within Fujitsu and by its affiliated external partners. It remains uncertain whether IBM was aware of this unauthorized use of its proprietary code. The naming convention for the compiler’s phases closely followed IBM’s structure, substituting the initial "I" (representing IBM) with "J" (denoting Japan). To obscure the source, all IBM copyright statements embedded in the modules were removed.
See also
References
- BSL Language Specifications, International Business Machines Corp., 1968, Z28-6642-0. Note: BSL was later renamed PL/S and succeeded by PL/S II.
- W.R. Brittenham, "PL/S, Programming Language/Systems", Proc GUIDE Intl, GUIDE 34, May 14, 1972, pp. 540–556
- W.R. Brittenham and B.F. Melkun, "The Systems Programming Language Problem", Proceedings of the IFIP Working Conference on Machine Oriented Higher Level Languages, Trondheim, Norway, August 29–31, 1973, pp. 29–47. Amsterdam: North-Holland Publishing Co.; New York: American Elsevier, 1974.
- Gio Wiederhold and John Ehrman, "Inferred SYNTAX and SEMANTICS of PL/S", Proceedings of the SIGPLAN symposium on Languages for system implementation 1971, in SIGPLAN Notices 6(10) October 1971
- Guide to PL/S II, International Business Machines Corp., 1974. GC28-6794-0
- RL/S Language Reference Manual, The Rand Corporation, The Rand Computation Center, R-1555/11 1977