PL/I is a legacy programming language invented by IBM in the early 1960s. The intention was to create a language which would have the scientific computing capabilities of Fortran, and the business data-processing power of COBOL.
A Quick Note on the Name
Many people prefer to call this programming language PL/1. They argue that early typewriters did not have a “1” character and that the capital “I” character was used instead. It is certainly true that whether PL/I or PL/1, the full name of it is Programming Language One. We have used PL/I because it is the more commonly used. Whichever version is used, it should not confuse anyone.
A Brief History of PL/I
PL/I began life as part of an attempt to unify business and scientific computing. In the early 1960s, business computing was being done mostly in COBOL, while developers in science, math, and academia were mostly using Fortran. Even the hardware used by the two communities was different. IBM wanted move everyone onto a common hardware platform (the System/360 ), and wanted a common programming language to go along with it.
The team tasked with creating this common language initially attempted to begin with Fortran and extend it to add the required features from COBOL. This proved unsuccessful, and they began work on a new language altogether, based loosely on ALGOL. The new language was briefly named NPL (“new programming language”), and then MPPL (“Multi-purpose programming language”), and then finally PL/I.
The first description of the language (still called NPL) was released in 1964. The first compiler came out in 1966. In 1967 work began writing a complete specification of the language.
PL/I was a relatively uncommon language even in its heyday. So tracking down good resources for learning and using the language is a little tough. Lucky for you, we’ve done the hard work and have gathered up the best PL/I resources available.
- PL/I in an Easy Lesson, a very thorough introduction to the language;
- Introduction to PL/I (PDF), detailed slides for a PL/I presentation.
- Mainframe PL/I Tutorials, a 19-part video tutorial series;
- Introduction to PL/I, a quick video introduction to the language.
- Enterprise PL/I for z/OS documentation library;
- Language Reference: Enterprise PL/I for z/OS, PL/I for AIX, Rational Developer for System z PL/I for Windows (PDF), complete guide to using PL/I on various IBM architectures ( a closely related manual is also available in an HTML format );
- PL/I FAQ.
If you are working on a legacy PL/I system, it is probable that you won’t be working with the latest version of the language. Here some resources detailing several historic versions of the language.
- A PL/I Primer (PDF), a 1965 student textbook from IBM;
- A Guide to PL/I for Commercial Programmers (PDF), IBM’s 1966 guide to the language;
- IBM System 360 Operating System PL/I (F): Language Reference Manual (PDF) and Programmer’s Guide, a 1968 reference manual in two volumes from IBM;
- The PL/I Programming Language, a 1978 textbook form the Courant Institute of Mathematical Sciences, New York University;
- PL/I Language Programmer’s Guide (PDF), a 1982 language reference from Digital Research;
- A History of PL/I on the Multics OS;
- PL/I as a Tool for System Programming, a 1969 article detailing the experience of using PL/I on the Multics OS.
- Micro Focus Studio Enterprise Edition, a tool for moving mainframe PL/I and Cobol applications to lower cost Windows, Linux, or Unix environments;
- PL/I Compilers from IBM, designed to enable the integration of legacy PL/I with modern web technology;
- PL/I Front End for GCC;
- Raincode PL/I Compiler for Windows, PL/I legacy compiler for .NET;
- Several code editors have support for PL/I syntax, and there is also a PL/I plugin for the Eclipse IDE;
- The Hercules System/370, ESA/390, and z/Architecture Emulator will let you create a virtual mainframe on your development machine, for learning and testing PL/I;
- PL/I Structured Programming, by Joan Hughes: the standard textbook for the language;
- The New PL/I, by Eberhard Sturm: one of the very few relatively recent books on the language (published in 2009);
- Application Debugging: An MVS Abend Handbook for Cobol, Assembly, PL/I, and Fortran Programmers, by Robert Binder: a handy book for people who maintain (and frequently have to debug) legacy software systems;
- Data Structures and Pl/I Programming, by Augenstein and Tenenbaum;
- Pl/I: Structured Programming and Problem Solving, by Reddy and Ziegler: a PL/I student textbook designed for a two-semester college course;
- Pl/I Programming Primer, by Gerald Weinberg: an early book on the language, from 1966.
Should I learn PL/I?
PL/I is a legacy language. Virtually no new development is being done in it. This means that working with PL/I is mostly going to be maintaining old systems, converting old systems to run on new hardware, re-building old systems in modern languages, or building tools to connect old systems with new ones.
Many developers consider working on legacy software systems to be kind of boring. But it can be very rewarding. The companies that still have these systems in place are established companies that usually pay well and provide relatively stable employment. The competition for these jobs is a lot lower, too — there aren’t any Coding Bootcamps teaching people how to become mainframe developers in six weeks.
But PL/I, by itself, isn’t enough. You’ll need to know about the whole ecosystem of legacy and mainframe systems.
- Other legacy software languages, especially Fortran and COBOL, both of which were used much more extensively than PL/I;
- Mainframe computing;
- Contemporary enterprise-level frameworks, especially .NET and Java;
- System-level languages like C and C++.
PL/I is relatively uncommon compared to either Fortran or COBOL. Therefore, if you are interested in working on legacy mainframe systems, you would probably do well to start with one or both of those languages, and then move on to PL/I if a particular job requires it.
Further Reading and Resources
We have more programming guides, tutorials, and infographics related to coding and software development:
- Assembly Language Introduction: whether you are using it directly and learning it just to understand what is really going on at the hardware level, assembly language is a great thing to know.
- Fortran Resources: learn all about arguably the first high level computer language that is still in use today.
- COBOL Introduction and Resources: more strictly a legacy language, there is still huge amounts of COBOL code in use.
What Code Should You Learn?
Confused about what programming language you should learn to code in? Check out our infographic, What Code Should You Learn? It not only discusses different aspects of the languages, it answers important questions such as, “How much money will I make programming Java for a living?”