Encyclopedia > PL I programming language

  Article Content

PL/I programming language

In computer science, PL/I (pronounced "pee el one") is a programming language intended and useful for both scientific/engineering and business use. It has a very large vocabulary of built-in functions. In fact, there is probably no one compiler that has the full standard of keywords available. PL/I compilers are normally subsets of the language that specialize in various fields. The language syntax is English-like, clean and powerful. It can describe complex formats of data easily, and there is a wide set of functions available to verify and manipulate them. It is a very good language for data processing. PL/I supports recursion and structured programming.

Common facts about the language:

  • Free form syntax
  • Case insensitive keywords
  • Passes by reference by default
  • Supports complex structure declarations with unions
  • Built-in support for a slew of data types, including two types of strings
  • Several kinds of dynamic storage allocation.

History of PL/I PL/I was developed by IBM as part of the development of the System 360. Prior to the System 360, IBM made several different incompatible models of mainframes for different purposes: some were designed for business use, others for scientific use. The goal of the System 360 project was to develop one series of compatible models to replace all the previous models, and which could be used equally well for commercial or scientific use.

Not only did business and scientific users use different machines; they also used different languages. Business users mainly used COBOL, while scientific users used Fortran. The goal of PL/I was to develop a single language usable for both business and scientific purposes. Another goal was to add structured programming constructs derived from ALGOL, which neither COBOL nor Fortran supported (at the time). PL/I was designed by a committee drawn from IBM programmers and users drawn from across the United States, working over several months. IBM originally wanted PL/I to be ready for use by the launch of the System 360; but unfortunately this deadline could not be met.

The language was originally to be called NPL, for "New Programming Language"; but that abbreviation could not be used because it was the name of the National Physical Laboratory in the UK. So PL/I was chosen instead.

PL/I was not as sucessful as originally hoped for, due to a number of factors. Perhaps most important was that the language was very complex, making it difficult to implement in a timely fashion. This complexity was probably because it was designed by a committee; and the desire to supply the needs of very different types of users (business and scientific). Such delays, its complexity, and the low quality of early versions of IBM's PL/I compiler discouraged users to switch from COBOL or Fortran. It contained many rarely used features, such as multithreading support, which added corresponding cost and complexity to the compiler.

Another major problem was that instead of noticing features that would make their job easier, scientific (Fortran) programmers of the time had the opinion that it was a business language, while business (COBOL) programmers looked on it as a scientificlanguage!

That is not to say that PL/I was not used. It received significant use in business data processing, and also for more general programming use. The Multics project, the first to develop an operating system in a high level language, used PL/I. A subset of PL/I, PL/M, was used to write CP/M.

PL/I was probably the first commercial language where the compiler was written in the language to be compiled. (The experimental language NELIAC[?] achieved this at least five years prior, and there may have been others.)

The first online Airline Reservation System (SABRE[?]) was written (or at least supposed to be written) in PL/I.

Mostly used on mainframes, PL/I also has versions for Microsoft Windows, AIX and Unix.

Test: procedure options(main);

   declare My_String char(20) varying initialize('Hello, world!');
   put skip list(My_String);
end Test;


in 1987 ANSI published

ANSI X3.74-1987 (R1998) Title: Information Systems - Programming Language - PL/I General-Purpose Subset

All Wikipedia text is available under the terms of the GNU Free Documentation License

  Search Encyclopedia

Search over one million articles, find something about almost anything!
  Featured Article

... the Greek language turannos. In Classical Antiquity[?] it did not always have inherently negative implications, it merely designated anyone who assumed power for any period ...

This page was created in 23.1 ms