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.