PL/I
Programming Language One.
An attempt to combine the best features of
Fortran,
COBOL and
ALGOL 60.
Developed by George Radin of
IBM in 1964. Originally named NPL and Fortran VI.
The result is large but elegant.
PL/I was one of the first languages to have a formal semantic definition, using the
Vienna Definition Language.
EPL, a dialect of PL/I, was used to write almost all of the
Multics operating system.
PL/I is still widely used internally at
IBM.
The PL/I standard is ANS X3.53-1976.
PL/I has no reserved words.
Types are fixed, float, complex, character strings with maximum length, bit strings, and label variables.
Arrays have lower bounds and may be dynamic.
It also has summation, multi-level structures, structure assignment, untyped pointers, side effects and
aliasing.
Control flow constructs include goto; do-end groups; do-to-by-while-end loops; external procedures; internal nested procedures and blocks; generic procedures and exception handling.
Procedures may be declared
recursive.
Many implementations support
concurrency ('call task' and 'wait(event)' are equivalent to
fork/join) and compile-time statements.
LPI is a PL/I
interpreter.
["A Structural View of PL/I", D. Beech, Computing Surveys, 2,1 33-64 (1970)].