IBM PL/S

Last updated

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.

Contents

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.

PL/S was succeeded by PL/S II, PL/S III 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 select customers (ISVs through the Developer Partner program.)

Rand Compiler for PL/S

RL/S announcement button distributed by Rand at Share 1976 "Our Pleasure" button.png
RL/S announcement button distributed by Rand at Share 1976

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.

PL/S "please" button distributed by Share attendees "Please" button.png
PL/S "please" button distributed by Share attendees

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.

Fujitsu "Developments"

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 licensed 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.[ citation needed ]

See also

Related Research Articles

<span class="mw-page-title-main">Assembly language</span> Low-level programming language

In computer programming, assembly language, often referred to simply as assembly and commonly abbreviated as ASM or asm, is any low-level programming language with a very strong correspondence between the instructions in the language and the architecture's machine code instructions. Assembly language usually has one statement per machine instruction (1:1), but constants, comments, assembler directives, symbolic labels of, e.g., memory locations, registers, and macros are generally also supported.

<span class="mw-page-title-main">MVS</span> Operating system for IBM mainframes

Multiple Virtual Storage, more commonly called MVS, is the most commonly used operating system on the System/370, System/390 and IBM Z IBM mainframe computers. IBM developed MVS, along with OS/VS1 and SVS, as a successor to OS/360. It is unrelated to IBM's other mainframe operating system lines, e.g., VSE, VM, TPF.

PL/I is a procedural, imperative computer programming language initially developed by IBM. The PL/1 ANSI standard, X3.53-1976, was published in 1976. It is designed for scientific, engineering, business and system programming. It has been in continuous use by academic, commercial and industrial organizations since it was introduced in the 1960s.

<span class="mw-page-title-main">History of operating systems</span> Aspect of computing history

Computer operating systems (OSes) provide a set of functions needed and used by most application programs on a computer, and the links needed to control and synchronize computer hardware. On the first computers, with no operating system, every program needed the full hardware specification to run correctly and perform standard tasks, and its own drivers for peripheral devices like printers and punched paper card readers. The growing complexity of hardware and application programs eventually made operating systems a necessity for everyday use.

VME is a mainframe operating system developed by the UK company International Computers Limited. Originally developed in the 1970s to drive ICL's then new 2900 Series mainframes, the operating system is now known as OpenVME incorporating a Unix subsystem, and runs on ICL Series 39 and Trimetra mainframe computers, as well as industry-standard x64 servers.

<span class="mw-page-title-main">MUSIC/SP</span> Defunct time-sharing system software

MUSIC/SP was developed at McGill University in the 1970s from an early IBM time-sharing system called RAX.

<span class="mw-page-title-main">CP/CMS</span> IBM operating system specializing in virtualization

CP/CMS is a discontinued time-sharing operating system of the late 1960s and early 1970s, known for its excellent performance and advanced features. Among its three versions, CP-40/CMS was an important "one-off" research system that established the CP/CMS virtual machine architecture. It was followed by CP-67/CMS, a reimplementation of CP-40/CMS for the IBM System/360-67, and the primary focus of this article. Finally, CP-370/CMS was a reimplementation of CP-67/CMS for the System/370. While it was never released as such, it became the foundation of IBM's VM/370 operating system, announced in 1972.

<span class="mw-page-title-main">CICS</span> IBM mainframe transaction monitor

IBM CICS is a family of mixed-language application servers that provide online transaction management and connectivity for applications on IBM mainframe systems under z/OS and z/VSE.

<span class="mw-page-title-main">IBM DPPX</span>

Distributed Processing Programming Executive is a discontinued operating system introduced by IBM, pre-installed on the IBM 8100 and later ported to the ES/9370.

The IBM Basic assembly language and successors is a series of assembly languages and assemblers made for the IBM System/360 mainframe system and its successors through the IBM Z.

<span class="mw-page-title-main">VPS/VM</span>

VPS/VM was an operating system that ran on IBM System/370 – IBM 3090 computers at Boston University in general use from 1977 to around 1990, and in limited use until at least 1993. During the 1980s, VPS/VM was the main operating system of Boston University and often ran up to 250 users at a time when rival VM/CMS computing systems could only run 120 or so users.

<span class="mw-page-title-main">TSS (operating system)</span> 1960s era timesharing operating system for IBM mainframes

The IBM Time Sharing System TSS/360 is a discontinued early time-sharing operating system designed exclusively for a special model of the System/360 line of mainframes, the Model 67. Made available on a trial basis to a limited set of customers in 1967, it was never officially released as a supported product by IBM. TSS pioneered a number of novel features, some of which later appeared in more popular systems such as MVS. TSS was migrated to System/370 and 303x systems, but despite its many advances and novel capabilities, TSS failed to meet expectations and was eventually canceled. TSS/370 was used as the basis for a port of UNIX to the IBM mainframe. TSS/360 also inspired the development of the TSS/8 operating system.

A Supervisor Call instruction (SVC) is a hardware instruction used by the System/360 family of IBM mainframe computers up to contemporary zSeries, the Amdahl 470V/5, 470V/6, 470V/7, 470V/8, 580, 5880, 5990M, and 5990A, and others; Univac 90/60, 90/70 and 90/80, and possibly others; the Fujitsu M180 (UP) and M200 (MP), and others; and is also used in the Hercules open source mainframe emulation software. It causes an interrupt to request a service from the operating system. The system routine providing the service is called an SVC routine. SVC is a system call.

The history of IBM mainframe operating systems is significant within the history of mainframe operating systems, because of IBM's long-standing position as the world's largest hardware supplier of mainframe computers. IBM mainframes run operating systems supplied by IBM and by third parties.

<span class="mw-page-title-main">OS/360 and successors</span> Operating system for IBM S/360 and later mainframes

OS/360, officially known as IBM System/360 Operating System, is a discontinued batch processing operating system developed by IBM for their then-new System/360 mainframe computer, announced in 1964; it was influenced by the earlier IBSYS/IBJOB and Input/Output Control System (IOCS) packages for the IBM 7090/7094 and even more so by the PR155 Operating System for the IBM 1410/7010 processors. It was one of the earliest operating systems to require the computer hardware to include at least one direct access storage device.

PL360 is a system programming language designed by Niklaus Wirth and written by Wirth, Joseph W. Wells Jr., and Edwin Satterthwaite Jr. for the IBM System/360 computer at Stanford University. A description of PL360 was published in early 1968, although the implementation was probably completed before Wirth left Stanford in 1967.

System Generation (SysGen) is a two-stage process for installing or updating OS/360, OS/VS1, OS/VS2 (SVS), OS/VS2 (MVS) and chargeable systems derived from them. There are similar processes for, e.g., DOS/360, which this article does not cover. Also, some of the details have changed between releases of OS/360 and many details do not carry over to later systems.

<span class="mw-page-title-main">OS/VS2 (SVS)</span>

Single Virtual Storage (SVS) refers to Release 1 of Operating System/Virtual Storage 2 (OS/VS2); it is the successor system to the MVT option of Operating System/360. OS/VS2 (SVS) was a stopgap measure pending the availability of MVS, although IBM provided support and enhancements to SVS long after shipping MVS.

The OS/360 Object File Format is the standard object module file format for the IBM DOS/360, OS/360 and VM/370, Univac VS/9, and Fujitsu BS2000 mainframe operating systems. In the 1990s, the format was given an extension with the XSD-type record for the MVS Operating System to support longer module names in the C Programming Language. This format is still in use by the z/VSE operating system. In contrast, it has been superseded by the GOFF file format on the MVS Operating System and on the z/VM Operating System. Since the MVS and z/VM loaders will still handle this older format, some compilers have chosen to continue to produce this format instead of the newer GOFF format.

References