The Compiler generates messages if your source program exceeds certain Open PL/I Compiler implementation limits. The following table lists these implementation limits.
| Message | Limit |
|---|---|
| Depth of nesting of a structure | 16 |
| Maximum length of an ‘external’ string constant | 30721 |
| Maximum length of an ‘internal ’ string constant | 327672 |
| Maximum length of a string constant with repeat specifier | 32767 |
| Maximum length of source line | 1024 |
| Maximum length of an identifier | 100 |
| Maximum size of storage for AREA data | 2GB
Note: Very Large area sizes may be impacted by system resources.
|
| Array dimensions | 8 |
| Nesting level of INCLUDE statements | 7 |
| Nesting of DO, PROCEDURE, BEGIN, SELECT, and simple ON-unit statements | 643 |
| Number of arguments in a subroutine or function call | 239 |
| Number of data and format list pairs in an edit-directed specification | 256 |
| Number of diagnostics (see the -maxmsg option in Compiler Options for information on configuring this limit.) | 1000 |
| Maximum VSAM key size | 120 bytes |
| Scale factor of variables | 0 ≤ scale factor ≤ 128 |
| Scale factor of a constant | 0 ≤ scale factor ≤ 127 |
| Scale factor of a conversion built-in function | 0 ≤ scale factor ≤ 127 |
| Value of a format's repeat, w, or d field | 254 |
| Precision for a fixed binary number | 31 |
| Precision for a fixed decimal number (maximum) | 31 |
| Precision for a float binary number | 52 |
| Precision for a float decimal number | 16 |
| Internal Limits | |
| Number of tokens in a statement | 20,000 |