The following table lists the limits for each element of the Compiler (unless otherwise specified).

Table 1. Compiler limits
Element Limit
Variables 32,000 bytes for UNDO and NO-UNDO variables per external procedure. 32,000 bytes for local UNDO and local NO-UNDO variables per internal procedure or trigger block.
Statements 1 to 2147483647 characters per statement. Use the Input Characters (-inp) startup parameter to limit the number of characters allowed in a single statement. The number of tokens allowed per statement is limited only by the available system resources. Each word or special character, such as a parenthesis, aplus sign, and a minus sign, counts as one token. Use the Token (-tok) startup parameter to limit the number of tokens allowed in a single statement.
Frames 1 to 650 columns and rows.1
Widgets 1 to 320 columns and rows. A compiler error will occur if the combination of a widget’s position (COLUMN, ROW) and size (WIDTH-CHARS, HEIGHT-CHARS) causes any portion of the widget to be positioned past 320 columns or rows. 2
Nested blocks 20 to 20000 blocks, including called procedures. Use the Nested Blocks (-nb) startup parameter to limit the number of nested blocks allowed in a procedure.

For more information about the Input Characters (-inp), Token (-tok), and Nested Blocks (-nb) startup parameters, see Startup Command and Parameter Reference.

1 The run-time limit is 131,072.
2 The run-time limit is 131,072.