**PL/I**

This

**programming language**may be used to instruct a computer to perform a task.

Execution method: | Compiled (machine code) |
---|---|

Garbage collected: | No |

Parameter passing methods: | By reference, By value |

Type safety: | Safe |

Type strength: | Strong |

Type compatibility: | Nominative |

Type expression: | Explicit |

Type checking: | Static |

Lang tag(s): | pli |

See Also: |

PL/I is a general purpose programming language suitable for commercial, scientific, non-scientific, and system programming.

It provides the following data types:

- Floating-point,
- Decimal integer,
- Binary integer,
- Fixed-point decimal (with a fractional part),
- Fixed-point binary (that is, with a fractional part),
- Pointers,
- Character strings of two kinds:

- fixed-length, and
- varying-length.

- Bit strings of two kinds:

- fixed-length, and
- varying length.

The float, integer, and fixed-point types can be real or complex.

Multiple precisions are available for binary fixed-point:

- 8 bits,
- 16 bits,
- 32 bits, and
- 64 bits.

Multiple precisions are available for floating point:

- 32 bits,
- 64 bits, and
- 80 bits.

The language provides for static and dynamic arrays. Of the latter, there are automatic, controlled, and based.

Controlled can be applied to any data type, including scalar, structure, as well as arrays. With controlled, a push-down and pop-up stack is automatically used.

PL/I has four kinds of I/O:

- For simple I/O commands, list-directed input and output requires only the names of the variables. Default format is used, based on the variable's declaration.
- For simple I/O commands, data-directed input and output requires only the names of the variables. For this form, both the names of the variables and their values are transmitted.
- When precise layouts of input and output data is required, edit-directed I/O is used. A format is specified by the user. The format is flexible, and permits the number of digits, and the number of places after the decimal point to be specified dynamically. The format may also be specified in picture form.
- For files held on storage media, record-oriented transmission is often used, either for sequential or random access.

PL/I has built-in checking for such programmer conditions including

- subscript-range checking,
- floating-point overflow,
- fixed-point overflow,
- division by zero,
- sub-string range checking, and
- string-size checking.

Any of those may be enabled or disabled by the user.

When any of those conditions occurs, the user/programmer may trap them and recover from them and continue execution.

PL/I has a unique and powerful pre-processor which is a subset of the full PL/I language so it can be used to perform (among other things):

- source file inclusion,
- conditional compilation, and
- macro expansion.

The pre-processor keywords are prefixed with a % (percent symbol).

## See Also[edit]

## Subcategories

This category has the following 3 subcategories, out of 3 total.

## Pages in category "PL/I"

The following 442 pages are in this category, out of 442 total.

### 2

### A

- A+B
- ABC problem
- ABC words
- Abundant, deficient and perfect number classifications
- Ackermann function
- Additive primes
- Address of a variable
- AKS test for primes
- Align columns
- Almost prime
- Amb
- Amicable pairs
- Anagrams
- Anti-primes
- Apply a callback to an array
- Arena storage pool
- Arithmetic-geometric mean
- Arithmetic/Complex
- Arithmetic/Integer
- Arithmetic/Rational
- Array concatenation
- Array length
- Arrays
- Assertions
- Associative array/Creation
- Attractive numbers
- Averages/Arithmetic mean
- Averages/Mean angle
- Averages/Mean time of day
- Averages/Median
- Averages/Mode
- Averages/Pythagorean means
- Averages/Root mean square
- Averages/Simple moving average

### B

- Babbage problem
- Balanced brackets
- Benford's law
- Bernoulli numbers
- Best shuffle
- Binary digits
- Binary search
- Binary strings
- Birthday problem
- Bitmap
- Bitmap/Bresenham's line algorithm
- Bitmap/Flood fill
- Bitmap/Midpoint circle algorithm
- Bitmap/Read a PPM file
- Bitmap/Write a PPM file
- Bitwise IO
- Bitwise operations
- Boolean values

### C

- Caesar cipher
- Calendar
- Calendar - for "REAL" programmers
- Call a foreign-language function
- Carmichael 3 strong pseudoprimes
- Case-sensitivity of identifiers
- Catalan numbers
- Character codes
- Check that file exists
- Cholesky decomposition
- Circles of given radius through two points
- Closest-pair problem
- Collections
- Comma quibbling
- Command-line arguments
- Comments
- Compare a list of strings
- Compile-time calculation
- Compound data type
- Conditional structures
- Conjugate transpose
- Constrained random points on a circle
- Continued fraction
- Convert decimal number to rational
- Convert seconds to compound duration
- Conway's Game of Life
- Copy a string
- Count in factors
- Count in octal
- Count occurrences of a substring
- CRC-32
- Create a file
- Create a two-dimensional array at runtime
- Create an HTML table
- CSV data manipulation
- Cumulative standard deviation

### D

- Date format
- Date manipulation
- Day of the week
- Day of the week of Christmas and New Year
- Detect division by zero
- Determine if a string is numeric
- Dice game probabilities
- Digital root
- Digital root/Multiplicative digital root
- Documentation
- Dot product
- Doubly-linked list/Definition
- Doubly-linked list/Element definition
- Doubly-linked list/Element insertion
- Doubly-linked list/Traversal
- Dragon curve

### E

### F

- Factorial
- Factors of an integer
- Fast Fourier transform
- Fibonacci n-step number sequences
- Fibonacci sequence
- Fibonacci word
- File input/output
- File size
- Filter
- Find limit of recursion
- Find prime n such that reversed n is also prime
- Find words which contains all the vowels
- Find words which contains more than 3 e vowels
- Find words whose first and last three letters are equal
- Five weekends
- FizzBuzz
- Flatten a list
- Flipping bits game
- Flow-control structures
- Floyd's triangle
- Fork
- Formatted numeric output
- Forward difference
- Four bit adder
- Function definition
- Function prototype

### G

### H

- Hailstone sequence
- Hamming numbers
- Handle a signal
- Happy numbers
- Harshad or Niven series
- Haversine formula
- Hello world/Line printer
- Hello world/Newline omission
- Hello world/Standard error
- Hello world/Text
- Hickerson series of almost integers
- Higher-order functions
- History variables
- Hofstadter Figure-Figure sequences
- Hofstadter Q sequence
- Hofstadter-Conway $10,000 sequence
- Holidays related to Easter
- Horner's rule for polynomial evaluation
- Host introspection
- Huffman coding
- Humble numbers

### I

### K

### L

- Largest int from concatenated ints
- Largest prime factor
- Largest proper divisor of n
- Last Friday of each month
- Leap year
- Least common multiple
- Left factorials
- Letter frequency
- Levenshtein distance
- Linear congruential generator
- Literals/Floating point
- Literals/Integer
- Literals/String
- Logical operations
- Long multiplication
- Longest common prefix
- Longest string challenge
- Loop over multiple arrays simultaneously
- Loops/Break
- Loops/Continue
- Loops/Do-while
- Loops/Downward for
- Loops/For
- Loops/For with a specified step
- Loops/Foreach
- Loops/Infinite
- Loops/N plus one half
- Loops/Nested
- Loops/While
- Loops/Wrong ranges
- LU decomposition
- Ludic numbers
- Luhn test of credit card numbers
- LZW compression

### M

- Mad Libs
- Magic squares of odd order
- Man or boy test
- Map range
- Matrix multiplication
- Matrix transposition
- Maximum triangle path sum
- Maze generation
- McNuggets problem
- Memory allocation
- Memory layout of a data structure
- Menu
- Mertens function
- Middle three digits
- Modular inverse
- Monty Hall problem
- Morse code
- Move-to-front algorithm
- Multifactorial
- Multiplication tables
- Munchausen numbers
- Munching squares
- Mutual recursion

### N

- N'th
- N-queens problem
- Narcissistic decimal number
- Nautical bell
- Non-decimal radices/Convert
- Non-decimal radices/Input
- Non-decimal radices/Output
- Nth root
- Null object
- Number names
- Number reversal game
- Numbers which binary and ternary digit sum are prime
- Numerical integration
- Numerical integration/Gauss-Legendre Quadrature

### O

### P

- Palindrome detection
- Pangram checker
- Parsing/RPN calculator algorithm
- Parsing/RPN to infix conversion
- Parsing/Shunting-yard algorithm
- Pascal matrix generation
- Pascal's triangle
- Perfect numbers
- Perfect totient numbers
- Pernicious numbers
- Phrase reversals
- Pi
- Pick random element
- Pointers and references
- Power set
- Pragmatic directives
- Price fraction
- Primality by trial division
- Primality by Wilson's theorem
- Prime decomposition
- Probabilistic choice
- Problem of Apollonius
- Program termination
- Proper divisors
- Pythagorean triples

### R

- Random number generator (included)
- Random numbers
- Range expansion
- Range extraction
- Read a configuration file
- Read a file line by line
- Read a specific line from a file
- Read entire file
- Real constants and functions
- Recaman's sequence
- Reflection/List properties
- Remove duplicate elements
- Rep-string
- Repeat a string
- Return multiple values
- Reverse a string
- Reverse words in a string
- Rock-paper-scissors
- Roman numerals/Decode
- Roman numerals/Encode
- Roots of a function
- Roots of a quadratic function
- Roots of unity
- Rot-13
- Run-length encoding
- Runge-Kutta method

### S

- Scope/Function names and labels
- Search a list
- SEDOLs
- Selective file copy
- Semiprime
- Semordnilap
- Sequence of non-squares
- Sequence: smallest number greater than previous term with exactly n divisors
- Set consolidation
- Short-circuit evaluation
- Show the epoch
- Sierpinski carpet
- Sierpinski triangle
- Sieve of Eratosthenes
- Singly-linked list/Element definition
- Singly-linked list/Element insertion
- Singly-linked list/Traversal
- Sleep
- Smallest square that begins with n
- Smith numbers
- Sort an integer array
- Sort using a custom comparator
- Sorting algorithms/Bead sort
- Sorting algorithms/Bogosort
- Sorting algorithms/Bubble sort
- Sorting algorithms/Cocktail sort
- Sorting algorithms/Comb sort
- Sorting algorithms/Counting sort
- Sorting algorithms/Gnome sort
- Sorting algorithms/Heapsort
- Sorting algorithms/Insertion sort
- Sorting algorithms/Merge sort
- Sorting algorithms/Pancake sort
- Sorting algorithms/Quicksort
- Sorting algorithms/Selection sort
- Sorting algorithms/Shell sort
- Sorting algorithms/Stooge sort
- Sorting algorithms/Strand sort
- Soundex
- Special characters
- Special divisors
- Special variables
- Spiral matrix
- Square but not cube
- Stack
- Stack traces
- Statistics/Basic
- Stern-Brocot sequence
- Strange numbers
- Strange plus numbers
- String append
- String case
- String concatenation
- String interpolation (included)
- String length
- String matching
- String prepend
- Strip a set of characters from a string
- Strip block comments
- Strip comments from a string
- Strip control codes and extended characters from a string
- Strip whitespace from a string/Top and tail
- Substring
- Substring/Top and tail
- Subtractive generator
- Sudoku
- Sum and product of an array
- Sum digits of an integer
- Sum multiples of 3 and 5
- Sum of a series
- Sum of elements below main diagonal of matrix
- Sum of first n cubes
- Sum of squares
- Sum of the digits of n is substring of n
- Symmetric difference
- System time

### T

- Table creation
- Take notes on the command line
- Tau function
- Temperature conversion
- Terminal control/Display an extended character
- Terminal control/Ringing the terminal bell
- Text processing/1
- Text processing/2
- Text processing/Max licenses in use
- Time a function
- Tokenize a string
- Top rank per group
- Topswops
- Towers of Hanoi
- Trabb Pardo–Knuth algorithm
- Trigonometric functions
- Truncatable primes
- Truncate a file
- Two identical strings