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 |