Table 65 summarizes the implementation limits for the PL/I language elements. Table 66 summarizes the implementation limits for the macro facility language elements.
| Language Element | Description | Limit |
|---|---|---|
| Arrays | Maximum number of dimensions for an array | 15 |
| Minimum lower bound (Note 1) | -2147483648 | |
| Maximum upper bound (Note 1) | +2147483647 | |
|
Note 1:
Under the compile-time option CMPAT(V1), the minimum lower
bound is -32768 and the maximum upper bound is 32767. Also,
these bounds should be used with caution. For instance, if A has
the maximum upper bound and JX has the attributes SIGNED FIXED BIN(31),
then the loop DO JX = LBOUND(A) TO HBOUND(A) will "wrap" after it
hits the last element in the array. It would not "wrap" if UPTHRU
were used instead of TO. |
||
| Structures | Maximum number of levels in a structure | 15 |
| Maximum level-number in a structure | 255 | |
|
Arithmetic Precisions |
Maximum precision for FIXED DECIMAL | 31 (Note 2) |
| Maximum precision for FIXED BINARY | 63 (Note 3) | |
| Maximum precision for FLOAT DECIMAL | 33 (Note 4) | |
| Maximum precision for FLOAT BINARY | 109 (Note 5) | |
| Maximum scale factor for FIXED data | 127 | |
| Minimum scale factor for FIXED data | -128 | |
|
Note 2:
This is true only if you specify the compile-time option
LIMITS(FIXEDDEC(31)); the default is 15. |
||
|
Note 3:
This is true only if you specify the compile-time option
LIMITS(FIXEDBIN(63)); the default is 31. |
||
|
Note 4:
On Intel, the maximum FLOAT DECIMAL precision is 18.
Under FLOAT(DFP), the maximum FLOAT DECIMAL precision is 34. |
||
|
Note 5:
On Intel, the maximum FLOAT BINARY precision is 64. |
||
| String and AREA Variables or Constants | Maximum length of CHARACTER | 32767 |
| Maximum length of BIT | 32767 | |
| Maximum length of GRAPHIC | 16383 | |
| Maximum length of WIDECHAR | 16383 | |
| Maximum size of AREA | 2147483647 | |
| Built-In Functions | Maximum number of arguments to the IAND, IOR, MAX, and MIN functions | 64 |
| Maximum values for the precision (p) in the ADD, BINARY, DECIMAL, DIVIDE, FIXED, FLOAT, MULTIPLY, PRECISION, and SUBTRACT functions | same as corresponding limit for arithmetic precision | |
| Maximum values for the scale (q) in the ADD, BINARY, DECIMAL, DIVIDE, FIXED, MULTIPLY, PRECISION, and SUBTRACT functions | same as corresponding limit for arithmetic precisions | |
| Maximum number of digits (N) in the CEIL, FLOOR, MAX, MIN, MOD, ROUND and TRUNC functions | same as corresponding limit for arithmetic precisions | |
| Program Size | Maximum length of an identifier | 100 |
| Maximum number of procedures in a program | 255 | |
| Maximum number of lexical units (keywords, identifiers, delimiters, etc) before a statement type can be resolved | 511 | |
| Maximum number of DEFAULT-statements in a block | 31 | |
| Maximum number of %PUSH statements | 63 | |
| Maximum number of %INCLUDE statements | 2047 | |
| Maximum nesting of %INCLUDE statements | 2046 | |
| Maximum number of lines in any source file | 1048575 | |
| Maximum number of statements | 16777215 | |
| Maximum number of LIKE-attributes in a block | 63 | |
| Maximum number of output expressions in a data-list | 60 | |
| Maximum number of repetitive DO-specifications in a data-list | 50 | |
| Maximum size of a data aggregate containing no unaligned bits | 2147483647 | |
| Maximum size of a data aggregate containing some unaligned bits | 268435455 | |
| Maximum number of arguments in a CALL or function reference | 255 | |
| Maximum number of parameters for a procedure | 4095 | |
| Maximum nesting of factored attributes | 15 | |
| Maximum nesting of BEGIN and PROCEDURE statements | 30 | |
| Maximum nesting of DO-groups | 49 | |
| Maximum nesting of IF statements | 49 | |
| Maximum nesting of SELECT-statements | 49 | |
| Maximum nesting of expressions | 383 | |
| Maximum length of %NOTE message | 32767 | |
| Miscellaneous | Maximum number of picture characters in a character picture | 511 |
| Maximum number of bytes in a numeric picture | 253 | |
| Maximum number of numeric picture characters in a numeric picture | 31 | |
| Maximum number of bytes in
the external representation of CHARACTER, X, BIT, BX, GRAPHIC, GX,
WX and M string constants
The external representation includes all quotes and string suffixes. For example, the string '01010110'B has 11 bytes in its external specification, but only 1 byte in its internal representation. Similarly, the string 'Ain''t Misbehavin''' has 21 bytes in its external specification, but only 17 in its internal representation. |
3072 | |
| Maximum length for a KEYTO character string | 120 | |
| Maximum length for a KEYTO graphic or widechar string | 60 | |
| Maximum KEY length | 32763 | |
| Maximum line size for LINESIZE | 32,759 for F-format or U-format, and 32,751 for V-format | |
| Minimum line size for LINESIZE | 1 | |
| Maximum page size for PAGESIZE | 32,767 | |
| Minimum page size for PAGESIZE compiler option | 1 | |
| Maximum size of DISPLAY character string | 126 | |
| Maximum DISPLAY reply message. | 72 bytes | |
| Range of IEEE normalized floating-point numbers | +3.30E-4932 to +1.21E+4932, 0, -3.30E-4932 to -1.21E+4932 | |
| Range of hex floating-point numbers | +10E-78 to +10E75, 0, -10E-78 to +10E+75 | |
| Language Element | Description | Limit |
|---|---|---|
| Arrays | Maximum number of dimensions | 15 |
| Minimum lower bound | -32768 | |
| Maximum upper bound | +32767 | |
|
Arithmetic Range |
Min and max for a FIXED variable under FIXED(DECIMAL) option | same as FIXED DECIMAL(5) identifier |
| Min and max for a FIXED variable under FIXED(BINARY) option | same as FIXED BINARY(31) identifier | |
|
Macro Procedures |
Maximum nesting level | 1 |
| Keys | Maximum number of keyword parameters | 4096 |
| String Result | Maximum length | 512K |