A universal algorithmic language (an abbreviation of Programming Language One), designed in 1963–1964 by IBM Corporation. PL/I reflects not only the experience gained from the preceding languages Algol, Fortran and Cobol, but also many other ideas on programming that had arisen at the time PL/I was designed. The language was also greatly influenced by the architecture of IBM computers and their operating systems.
PL/I is designed in such a way that one can isolate subsets from it satisfying the requirements of particular applications. A PL/I program consists of independently compiled modules, called external procedures, which have an Algol-type block structure and include procedures (possibly recursive ones and ones with multiple secondary entry points) and blocks.
The characteristic of PL/I that contributes most to its applicability is the variety of data types that can be represented and manipulated. The language includes arithmetic data (real and complex numbers with fixed or floating points, binary or decimal), string data (character and bit), pictured data (analogous to pictures in Cobol), and program-control data (control-transfer lables, entries, pointers, files, tasks, and events).
PL/I provides the possibility for grouping data into aggregates — arrays and structures. An array is an $n$-dimensional collection of elements with the same characteristics. An array element may be a scalar or a structure. A structure is defined as a hierarchically ordered collection of named elements each with its own data type (scalar, array or structure).
The rules for evaluating expressions enable one to produce arbitrary values. If there is a difference between data types in an expression, there is automatic conversion to the type required in the concrete context.
An important feature of PL/I is its default philosophy, which enables the programmer to indicate not all the properties of data, all the components of statements and all the parameters of built-in functions. In these cases the default rules are applied.
PL/I has extensive facilities for managing the memory. These enable the programmer to determine himself the time when variables are allocated in the memory, the memory size required, the data-element access rates, the repeated use of already-allocated memory under other names and possibly with a different interpretation of the values contained without reallocation. The memory may be allocated statically (before the program is run) or dynamically (on the entry of a block or on executing an allocation statement). The memory allocated to a certain variable can be organized as a stack with corresponding access rules or may be accessed by a pointer.
Together with the conventional statements for assignment, transition, iterative execution, procedure call, and conditional statements, in PL/I there are facilities for synchronizing procedures executed in parallel, for executing some operations during compilation, as well as for executing certain actions (system- or programmer-defined actions) when standard or programmer-defined conditions arise that cause an interrupting of the execution of a program. PL/I also provides various facilities for data input and output (by means of records, character by character and by editing). PL/I also includes numerous standard functions, which substantially facilitate programming.
The PL/I standard published in 1976 gives a more formal and accurate specification for the language and generalizes the concept of a type and the rules for evaluating expressions and function values. At the same time, the language standard did not include facilities for parallel execution or for organizing the computation during the compilation time.
|, The universal programming language PL/I , IBM Library (1966)
|R. Scott, N. Sondac, "PL/I for programmers" , Addison-Wesley (1970)
|, Programming in PL/I OS ES , Moscow (1979) (In Russian)
|A.M. Bukhtiyarov, G.D. Frolov, V.Yu. Olyunin, "Collection of problems in PL/I programming" , Moscow (1978) (In Russian)
|, American National Standard. Programming language PL/I , ANSI X3.53–1976 , ANSI (1976)
PL/I. Encyclopedia of Mathematics. URL: http://encyclopediaofmath.org/index.php?title=PL/I&oldid=32452