The following table lists the compiler implementation limits for OS PL/I, PL/I for MVS & VM, VisualAge PL/I, and Enterprise PL/I.
| Language Element | Description | OS PL/I | PL/I for MVS&VM | VisualAge PL/I | Enterprise PL/I |
|---|---|---|---|---|---|
| Arrays | Maximum number of dimensions for an array | 15 | 15 | 15 | 15 |
| Minimum lower bound | -2147483648 | -2147483648 | -2147483648 | -2147483648 | |
| Maximum upper bound | +2147483647 | +2147483647 | +2147483647 | +2147483647 | |
| Structures | Maximum number of levels in a structure | 15 | 15 | 15 | 15 |
| Maximum level-number in a structure | 255 | 255 | 255 | 255 | |
|
Arithmetic Precisions |
Maximum precision for FIXED DEC | 15 | 15 | 31 | 31 |
| Maximum precision for FIXED BINARY | 31 | 31 | 63 | 63 | |
| Maximum precision for FLOAT DEC | 33 | 33 | 33 | 33 | |
| Maximum precision for FLOAT BINARY | 109 | 109 | 109 | 109 | |
| Maximum scale factor for FIXED data | 127 | 127 | 127 | 127 | |
| Minimum scale factor for FIXED data | -128 | -128 | -128 | -128 | |
| String and AREA Variables or Constants | Maximum length of CHARACTER | 32767 | 32767 | 32767 | 32767 |
| Maximum length of BIT | 32767 | 32767 | 32767 | 32767 | |
| Maximum length of GRAPHIC | 16383 | 16383 | 16383 | 16383 | |
| Maximum length of WIDECHAR | n/a | n/a | 16383 | 16383 | |
| Maximum size of AREA | 2147483647 | 2147483647 | 2147483647 | 2147483647 | |
| Built-In Functions | Maximum number of arguments to the IAND, IOR, MAX, and MIN functions | 64 | 64 | 64 | 64 |
| Program Size | Maximum length of an identifier | 31 | 31 | 100 | 100 |
| Maximum number of procedures in a program | 255 | 255 | 255 | 255 | |
| Maximum number of DEFAULT statements in a block | 31 | 31 | 31 | 31 | |
| Maximum nesting of %INCLUDE statements | 8 | 8 | 2046 | 2046 | |
| Maximum number of lines in any source file | 65,535 | 65,535 | 1048575 | 1048575 | |
| Maximum number of statements | 32,767 | 32,767 | 16777215 | 16777215 | |
| Maximum number of LIKE-attributes in a block | 63 | 63 | 63 | 63 | |
| Maximum number of output expressions in a data-list | 60 | 60 | 60 | 60 | |
| Maximum number of repetitive DO- specifications in a data-list | 25 | 25 | 50 | 50 | |
| Program Size | Maximum size of a data aggregate containing no unaligned bits | 2147483648 | 2147483648 | 2147483647 | 2147483647 |
| Maximum size of a data aggregate containing some unaligned bits | 268435455 | 268435455 | 268435455 | 268435455 | |
| Maximum number of arguments in a CALL or function reference | 64 | 64 | 255 | 255 | |
| Maximum number of parameters for a procedure | 64 | 63 | 4095 | 4095 | |
| Maximum nesting of factored attributes | 15 | 15 | 15 | 15 | |
| Maximum nesting of BEGIN and PROCEDURE statements | 42 | 42 | 30 | 30 | |
| Maximum nesting of DO-groups | 38 | 38 | 49 | 49 | |
| Maximum nesting of IF statements | 80 | 80 | 49 | 49 | |
| Maximum nesting of SELECT-statements | 50 | 50 | 49 | 49 | |
| Maximum length of %NOTE message | 256 | 256 | 32767 | 32767 | |
| Miscellaneous | Maximum number of picture characters in a character picture | 511 | 511 | 511 | 511 |
| Maximum number of bytes in a numeric picture | 256 | 256 | 253 | 253 | |
| Maximum number of numeric picture characters in a numeric picture | 15 | 15 | 31 | 31 | |
| Maximum length for a KEYTO character string | 120 | 120 | 120 | 120 | |
| Maximum length for a KEYTO graphic or widechar string | 60 | 60 | 60 | 60 | |
| Maximum KEY length | 8 | 8 | 32763 | 32763 | |
| Maximum line size for LINESIZE | 32,000 | 32,000 | 32,000 | 32,759 for F-format or U-format, and 32,751 for V-format | |
| Minimum line size for LINESIZE | 10 | 10 | 1 | 1 | |
| Maximum page size for PAGESIZE | 32,000 | 32,000 | 32,767 | 32,767 | |
| Miscellaneous | Minimum page size for PAGESIZE | 1 | 1 | 1 | 1 |
| Maximum size of DISPLAY character string | 126 | 126 | 126 | 126 | |
| Maximum DISPLAY reply message. | 72 | 72 | 72 | 72 |