Languages Related to PL/I

| ACME | ALECS | Apple | BRUIN | CPL | EPL | ESPL-1 | GPL | LSD | NICOL | PL/C | PL/DS | PL/M | PL/P | PL/PROPHET | PL/S | PL/zero | PLAGO | PLUM | PLUS | PL/6 | PL.8 | REXX | SL/I | SP/k | TACPOL | XPL | PL/I extensions | Non related | Pending |

 
ACME ACME, or PL/ACME is an incremental compiler for a PL/I dialect from Stanford University. The main omission from standard PL/I is nested block structure and scoping. Extensions to RECORD I/O allow ACME programs to communicate directly with laboratory instruments. ACME ran on System/360 computers.

Breitbard, Gary Y, and Wiederhold, Gio, "The ACME Compiler".

 
ALECS ALECS (Ames Laboratory Experimental Control System) is PL/I subset developed at the Ames Laboratory of the US Department of Energy (at that time the Atomic Energy Commission).

Campbell, J.H. ; Covert, G.F. ; Helland, B.J. ALECS language reference manual

 
Apple Apple A PL/I subset developed at General Motors Research Laboratories. Apple was the primary application language for the MCTS timesharing system. Both Apple and MCTS were written in a more restricted PL/I subset called MALUS (Latin for "Apple"), originally bootstrapped using XPL, and then made self-hosting.

Marcotty, M. and Schutz, H., "The Systems Progranming Language MALUS",Software - Practice and Experience, 4, No. 1 79-90 (1974).

 
BRUIN BRUIN (BRown University INteractive language). A conversational dialect of PL/I developed at Brown University. There is information to the effect that BRUIN was distributed with CP/67.

Munck, Robert G.;Proceedings of the twenty-fourth National conference of the ACM (1969): "Meeting the computational requirements of the university - The Brown University Interactive Language".

 
CPL CPL (Conversational Programming Language) was an interactive PL/I subset that ran on DEC PDP-10, Decsystem-10, and Decsystem-20 computers.

decsystem10/20 Conversational Programming Language User's Manual. Digital Equipment Corporation DEC-10-LCPLA-B-D; 1976.

 
EPL EPL (Early PL/I) was a subset of PL/I used to build the Multics Operating System until a full PL/I compiler became available. An even more restricted subset REPL (Restricted EPL) was defined excluding PL/I features for which EPL generated inefficient code.

www.multicians.org has information on EPL and Multics.

 
ESPL-1 ESPL-1 (or ESPL/1) "an offshoot of PL/I called ESPL-1 (Electronic Switching PL/1) which was basically PL/I with some variations for extra-easy bit handling and so-on. ... it was - I believe - a joint venture between IBM and ITT" (now Alcatel).

[posted to usenet:comp.lang.pl1 Mon, 7 Oct 2002].

 
GPL GPL(General Programming Language) is the implementation language for Honeywell GCOS7. Formerly HPL, the language was renamed GPL in the 1980s. HPL was originally developed as a cross-compiler on Multics, written in PL/I.

Other Honeywell implementation languages were MLP, a PL/I-like language used to develop GCOS 64, implemented as a macro processor on the GE-635 which generated NAL assembler, PL/8, developed by Toshiba and used by Honeywell to develop GCOS8, and BPL developed by Honeywell and NEC.

 
LSD LSD(Language for System Development), also called LSyD, is a portable systems-programming PL/I subset from Brown University. "Improvements of LSD over PL/I have been made to include pointer chasing methods, structure definitions, character facilities, debugging and program linking."

Bergeron, R. Daniel, Gannon, John D., and van Dam, Andries. "Language for System Development." Proceedings of the SIGPLAN symposium on Languages for system implementation (1971):50-72.
http://doi.acm.org/10.1145/800234.807060

 
GPL NICOL "A small, limited, and modified subset called NICOL 1 was implemented by Massachusetts Computer Associates in the fall of 1965 on the IBM 7094." Sammet, Jean; Programming Languages: History and Fundamentals; Englewood Cliffs, NJ; Prentice-Hall, Inc., 1969; p.542.

NICOL is one of the earliest PL/I implementations.

Christensen, C., and Mitchell, R. Reference Manual for the NICOL 1 Programming Language, 3rd ed.; Wakefield, MA; Computer Associates, CA-6511-3011; 1965.
Christensen, C., and Mitchell, R. Reference Manual for the NICOL 2 Programming Language; Wakefield, MA; Computer Associates, CA-6701-2611; 1967.

Brian Spoor reports that ICL developed a language also called NICOL (NIneteen hundred COmercial Langauage) for the 1900 series. This language was a subset of PL/1 designed as an easy step to a computer from a tabulator. "From what I remember it was similar to RPG-II."

 
PL/C PL/C (Programming Language/Cornell) is a large subset of the full PL/I language designed by Cornell University in the early 1970s as a teaching language. PL/C generated several versions, including PL/CT for interactive terminal use, and PL/CS, a subset used by the Cornell Program Synthesizer.

Major PL/I features missing from PL/C are the preprocessor (all), and the BASED and CONTROLLED storage attributes. PL/C adds extensive debugging and error recovery facilities.

Several PL/C-based cross compilers were developed at the University of North Carolina-Charlotte: PLCD generated code for the DEC PDP-11, PLCI for Interdata computers, and PLCV for Varian systems.

Conway, Richard W., and Wilcox, Thomas R.; "Design and implementation of a diagnostic compiler for PL/I"; CACM 16(1973); 169-179.

 
PL/DS PL/DS (Programming Language for Distributed Systems) "provides PL/I-like coding power and is very similar to the Programming Language/Systems (PL/S) and Programming Language/Advanced Systems (PL/AS) languages used internally by IBM to produce other System/370 operating systems and control programs."

PL/DS was used by IBM to develop the DPPX operating system for the IBM 8100 system. It was ported to System/370 architecture (PL/DS2) and used to port DPPX to the 9370 processor.

Abraham, R., and Goodrich, B.F., "Porting DPPX from the IBM 8100 to the IBM ES/9370: Feasibility and Overview"; IBM Systems Journal, 29(1); 1990; 90-140.

 
PL/M PL/M (Programming Language/Microcomputers) is a language devised by Digital Research for Intel in 1972. PL/M was the implementation language for CP/M. Versions include PL/M-80, PL/M-86, PL/M-386.

INTEL MCS-8: A Guide to PL/M Programming Rev.1, Sep 1973 (PDF), at Bitsavers.org.
PL/M-86 Programming manual for 8080/8085-based Development Systems Rev.3, 1978 (PDF), at Bitsavers.org.
PL/M-386 Programmer's Guide (PDF).

The FORTRAN source for PL/M-80 and the C version generated by F2C can be found at Hobbes.

A related language MPL (Motorola Programming Language) generates code for the Motorola 6800.

 
PL/P PL/P (Programming Language for PR1ME) is a high-level systems language used for the implementation of the PRIMOS operating system. PL/P was used primarily for the kernel. A related, though slightly different subset, SPL, was used to write external commands.
[Thanks to Dennis Boone for the distinction between PL/P and SPL]
 
PL/PROPHET PL/PROPHET is a programming language for the PROPHET system used by Pharmacologists.

Castleman, P.A., et al; "The Implementation of the PROPHET System"; NCC 43, AFIPS (1974).

 
PL/S PL/S is an IBM systems programming language for S/360, S/370, and z/Server systems. Versions of PL/S are PL/S-II, PL/S-III, and PL/AS. An early (late 60's) version of PL/S was also known as BSL (Basic Systems Language).

IBM Corporation; Guide to PL/S II; International Business Machines Corp., 1974. GC28-6794-0.

Wiederhold, Gio, and Ehrman, John; "Inferred SYNTAX and SEMANTICS of PL/S"; Proceedings of the SIGPLAN symposium on Languages for system implementation New York, ACM, Inc., October, 1971; p.111-121.

 
PL/zero PL/zero is a minimal subset of PL/I designed for teaching introductory programming.
Compare to SP/k(Contrast with PL/0.)

At least one actual PL/zero compiler was built. Otherwise It was implemented as a notional subset of PL/C or other PL/I compilers.

Kennedy, Michael, and Solomon, Martin B.; Structured PL/zero plus PL/one; Englewood Cliffs, NJ, Prentice-Hall, 1977.

 
PLAGO PLAGO (Polytechnic Load And GO translator) is an interactive interpreted PL/I subset for teaching developed at Brooklyn Polytechnic Institute.

Lawson, H.W., Habib, S., et.al; "PLAGO/360 A PL/I Machine Implementation", Polytechnic Institute of Brooklyn Report PIBEE 71-001, 1971.

 
PLUM PLUM (Programming Language for the University of Maryland) was a load and go compiler for Univac 1100 series computers developed by Marvin Zelkowitz. PLUM development began about 1971, it was operational around 1975, and was used until 1980 at the University of Maryland. About 40 copies were distributed to other Univac sites.

PLUM was a load and go compiler. Typical compile times were about 1 second or less. Major limitation was size of about 2000 PL/1 source statements.

One of the interesting features of Plum is that its implemention of "safe pointers." No lost memory, dangling references, or other pointer violations were possible.

The PLUM source and documentation is available as zipped plain-text files from here,
or (in EXEC8-specific format) from the UUSIG library.

Zelkowitz, M. V.; PLUM: The University of Maryland PL/1 System; University of Maryland Technical Report TR-318; College Park, MD, Univ. of Maryland, 1974. (PDF version online)
Zelkowitz, M. V.; PL/I Programming with PLUM; Geneva, IL, Paladin House Publishers, 1976.

 
PLUS PLUS
  1. Programming Language for UNIVAC Systems; a language designed by Sperry for systems programming.
  2. PL/1 Universität Stuttgart; a PL/I dialect similar to PLAGO.
 
PL-6 PL-6 is a high-level systems language used by Honeywell for CP-6.

CP-6 Introduction to PL-6

 
PL.8 PL.8 (or PL8) is a high-level systems language used by IBM for the 801 RISC computer, later used for the RS/6000 and microcode for various mainframe models. The name derives from the idea that the languge is 8/10 of PL/I. A PL8 front-end has recently been developed for the Gnu Compiler Collection (GCC).

Auslander,M., et.al., "An overview of the PL.8 Compiler", Proceedings of the SIGPLAN'82 Symposium on Compiler Writing.
Gellerich,W., et.al. "The GNU 64-bit PL8 compiler: Toward an open standard environment for firmware development." IBM Journal of Research and Development 48(2004); 543-556.

 
REXX REXX is an interpreted command language based on PL/I. REXX is the primary command language for IBM VM, TSO, and OS/2 systems and is available for DOS, Windows, and Unix.

REXX has no variable declarations; all variables are character strings. A notable REXX feature is associative arrays, known as stems.

"Programming Language - REXX" ANSI standard X3.274-1996.

See The Rexx Language Association for additional information on Rexx.

 
SL/1 SL/I (Student Language/One) is an interpreter for a PL/I subset that ran on the IBM 1130 minicomputer.

Jackson, M., Boulton, P., and Lee, E.S.; "SL1 on the IBM 1130"; Proceedings of the Joint Meeting of Canadian and Midwestern Regions of COMMON; Chicago, 1967.

 
SP/k SP/k is a series of PL/I subsets (k=1:8) for instructional use in teaching introductory computer programming. Compare to PL/zero.

Holt, R.C. et. al., "SP/k: A System for Teaching Computer Programming", CACM 20(1977); 301-309.

There is also CSP/k (Concurrent SP/k).

 
TACPOL TACPOL (TACtical Procedure Oriented Language) is a PL/I subset "Command and Control" (C&C) language developed by Litton for the U.S. Army in 1967. TACPOL was originally used in programming the "TACFIRE" (tactical fire direction) system for field artillery fire-control.

Hess, Herman, and Martin, Charles. "TACPOL-A Tactical C & C Subset of PL/I", Datamation, April 1970. 151-157.

By 1995, TACPOL had been largely superseded, presumaby by Ada.

Hook, Audrey A., et.al. A survey of Computer Programming Languages Currently Used in the Department of Defense. Alexandria, VA: Institute for Defense Analyses, 1995.

Data Systems Division, Litton Systems, Inc. TACPOL, a procedure-oriented language for tactical commmand and control applications. Document MS 2866, 1968.

 
XPL XPL was designed in the sixties by McKeeman, Horning, and Wortman as a small subset of PL/I plus extensions intended for compiler writing.

McKeeman, William M., Horning, James J., and Wortman, David B.; A Compiler Generator; Englewood Cliffs, NJ, Prentice-Hall, 1970.

See the XPL website for additional information.

 
Extensions PL/I Extensions:
APAREL
(A Parse Request Language) a PL/I extension to add BNF parsing routines.
GASP
(Graph Algorithm and Software Package) a PL/I extension for programming graph algorithms.
GPL/I
(Graph Programming Language/One) a PL/I extension for handling graphs as a fundamental datatype.
MPL
a PL/I-like language for microprogramming. Eckhouse, Richard H.; SUNY/Buffalo Department report 1-71-MU, June, 1971.
PDEL
(Partial Differential Equation Language) a PL/I preprocesor for solving partial differential equations.
PL/I-FORMAC
(Formula Manipulation Compiler) a PL/I extension for symbolic mathematics.
PLANS
(Programming Language for Allocation and Network Scheduling) a PL/I preprocesor for developing scheduling algorithms.
SIMPL/I
is a simulation language implemented as a PL/I preprocessor.
 
Unrelated Languages not  related to PL/I:
APL an algorithmic language designed by Ken Iverson.
PL/0 a simplified Pascal-like language. (contrast with PL/zero).
PL/360 a high-level assembler language for IBM systems.
PL/B (Programming Language for Business), the language formerly named DataBus.
PL/SQL an Oracle database retrieval language resembling Ada.
PL/Z A programming language for Zilog microprocessors.
PL-11 a high-level assembler for PDP-11 systems resembling PL/360.
PL-516 a high-level assembler for DDP-516 systems resembling PL/360.
 
Pending Pending additions to list:
AED Sammet 1973, CUPL Sammet 1973, RUSH, PLESS, HEPL PL/I, PLINT, PL/A, SPLINTER, SPL, STAPL, CIMPL.

This table is an attempt to gather in one place information regarding languages in the PL/I family. The distinction between a language and a dialect or implementation is somewhat arbitrary, affecting the selection of what's included. If anyone has additional information or pointers to web pages for any of these or other PL/I-related languages, please contact me.

References:
Free Online Dictionary of computing, Denis Howe, editor.
The Language List, Bill Kinnersley, maintainer.
Interactive historical roster of computer languages, Diarmuid Pigott, author.
Bitsavers.org maintains a library of scanned original manuals for a collection of older software.

Contributors:
Dennis Boone, Tim Challenger, Bernd Oppolzer, Clay Phipps, Diarmuid Pigott, Brian Spoor, Marvin Zelkowitz.

Last modified 18 Mar, 2008