Anything not mentioned is limited by available memory. The compilerlimits, where there are any, are set where it is unlikely you will ever hit them.
Maximum identifier length (characters) = No Limit
Significant characters in identifiers = 64.
Maximum number of unique identifier names per module/package= 65535.
This includes symbols from all imported modules/packages.
Maximum length of a single string literal = 255 characters.
No limit on size of concatenated literals using the + stringliteral operator for Modula-2, or the & operator for Ada95.
Maximum number of SET or PACKEDSET elements
32-bit = 4,294,967,296
16-bit = 262,144
Maximum size of ARRAY and RECORD types in bytes
32-bit = 2 GB. An overall processor limit of 4 GB exists.
16-bit = 65534. A per segment overall limit of 65535 exists.
Maximum CASE selection branches
Source Optimization OFF = No Limit
Source Optimization ON = 1024
Maximum procedure nesting depth = 32
Maximum module/package nesting depth = 32
Maximum number of procedures implemented per module/package with
Cross module register usage info OFF = 2048
Cross module register usage info ON >= 1024 (IA-32 only)
Generated code size per module/package = 8 MB
Size of initialized data per module/package = 8 MB
The compiler has no fixed limits on complexity of expressionsin code generation. Complexity is limited by available registers on the processor.The compiler does not attach any language elements, such as Modula-2 WITH statements,to processor registers as this would limit the compilers ability to compute the bestpossible usage of available registers.