Open PL/I Compiler Implementation Limits

The Compiler generates warnings or errors if your source program exceeds certain Open PL/I Compiler implementation limits. The following table lists these implementation limits.

Value 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 2GB3
Maximum size of a single data structure 2GB4
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 2 GB5
Array dimensions 8
Nesting level of INCLUDE statements 7
Nesting of DO, PROCEDURE, BEGIN, SELECT, and simple ON-unit statements        646 
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 10007
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
Maximum value of a FORMAT repeat field 2GB
Maximum value of a FORMAT width field 32767
Maximum for a FORMAT E or FORMAT F digit field 127
Maximum value of a FORMAT F scaling factor +/- 127
Precision for a fixed binary number 31
Precision for a fixed decimal number (maximum) 63
Precision for a float binary number 52
Precision for a float decimal number 16
Internal Limits  
Number of tokens in a statement 20,000
1The spelling of an external string constant (as presented in the user program) is limited to 3072 characters, where the spelling includes the surrounding quotation marks, the extra quotation mark when two single quotation marks represent a single quotation mark inside the string, and the possible combination of postfix characters such as B or X.

2The internal spelling of a character string constant (i.e., a compiler generated string constant as the result of Restricted Expression Evaluation) of is limited to 32767 characters, where the spelling includes the surrounding quotation marks.

3Very large area sizes might be impacted by system resources.

4Unlimited with -largedata

5Unlimited with -largedata, Linux only

664 including the top level procedure.

7See the -maxmsg topic for information on configuring this limit.