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.
|
| Maximum size of a single data structure | 2GB |
| Maximum stack storage allocated for automatic variables (per procedure) | 2GB |
| Maximum storage allocated for static variables (per compilation unit) | 2 GB |
| Maximum storage allocated for uninitialized static variables with -bss option | unlimited (system dependent) |
| 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 |