IBM PL/S
PL/S, short for Programming Language/Systems, is a "machine-oriented" programming language based on PL/I. It was developed by IBM in the late 1960s, under the name Basic Systems Language (BSL), as a replacement for assembly language on internal software projects; it included support for inline assembly and explicit control over register usage.
Early projects using PL/S were the batch utility, IEHMOVE, and the Time Sharing Option of MVT, TSO.
By the 1970s, IBM was rewriting its flagship operating system in PL/S. Although users frequently asked IBM to release PL/S for their use, IBM refused saying that the product was proprietary. Their concern was that open PL/S would give competitors, Amdahl, Itel (National Advanced Systems), Storage Technology Corporation, Trilogy Systems, Magnuson Computer Systems, Fujitsu, Hitachi, and other PCM vendors a competitive advantage. However, even though they refused to make available a compiler, they shipped the PL/S source code to large parts of the OS to customers, many of whom thus became familiar with reading it.
Closed PL/S meant that only IBM could easily modify and enhance the operating system.
In the mid-1970s, a single programmer at RAND Corporation, working from publicly available documentation, wrote a fully functional PL/S compiler. IBM legally suppressed this software. The RAND Corp. programmer made the mistake of using documentation marked as "For IBM Internal Use Only" for their development, which they did not have permission to use for this purpose, and IBM threatened to sue them, so they never offered the product for sale. They did however advertise its imminent release through SHARE meetings.
A fully compliant PL/S compiler was developed by Fujitsu Ltd in the late-1970s, using IBM's PL/I Optimizer compiler source code as a starting point. This PL/S compiler was used internally by Fujitsu, and also by some of its external affiliates. Whether or not IBM was aware of this questionable use of its licensed intellectual property is not known. The phase names of this PL/S compiler were the same as the corresponding phase names of the PL/I Optimizer compiler, with the initial "I" in the phase name being replaced by an initial "J". All copyright notices within the modules were removed.
PL/S was succeeded by PL/S II and PL/AS (Programming Language/Advanced Systems), and then PL/X (Programming Language/Cross Systems). PL/DS (Programming Language/Distributed Systems) was a closely related language used to develop the DPPX operating system, and PL/DS II was a port of the S/370 architecture for the DPPX/370 port.
As the market for computers and software shifted away from IBM mainframes and MVS, IBM recanted and has offered the current versions of PL/S to selected customers (ISVs through the Developer Partner program.)
See also
References
- BSL Language Specifications, International Business Machines Corp., 1968, Z28-6642-0. Note that BSL was renamed PL/S and replaced 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. This paper explores the technical and psychological problems encountered in implementing PL/S. The language and compiler are described. The discussion that followed presentation of the paper is included.
- 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 Note that this manual is very out of date with respect to the PL/X language in use today.