Compiler limits

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.