#### Built-in functions and procedures

Modula-2 also makes available several built-in procedures and functions. In describing these, the following metavariables are used:

a
represents an `ARRAY` variable.
c
represents a `CHAR` constant or variable.
i
represents a variable or constant of integral type.
m
represents an identifier that belongs to a set. Generally used in the same function with the metavariable s. The type of s should be `SET OF mtype` (where mtype is the type of m).
n
represents a variable or constant of integral or floating-point type.
r
represents a variable or constant of floating-point type.
t
represents a type.
v
represents a variable.
x
represents a variable or constant of one of many types. See the explanation of the function for details.

All Modula-2 built-in procedures also return a result, described below.

`ABS(n)`
Returns the absolute value of n.
`CAP(c)`
If c is a lower case letter, it returns its upper case equivalent, otherwise it returns its argument.
`CHR(i)`
Returns the character whose ordinal value is i.
`DEC(v)`
Decrements the value in the variable v by one. Returns the new value.
`DEC(v,i)`
Decrements the value in the variable v by i. Returns the new value.
`EXCL(m,s)`
Removes the element m from the set s. Returns the new set.
`FLOAT(i)`
Returns the floating point equivalent of the integer i.
`HIGH(a)`
Returns the index of the last member of a.
`INC(v)`
Increments the value in the variable v by one. Returns the new value.
`INC(v,i)`
Increments the value in the variable v by i. Returns the new value.
`INCL(m,s)`
Adds the element m to the set s if it is not already there. Returns the new set.
`MAX(t)`
Returns the maximum value of the type t.
`MIN(t)`
Returns the minimum value of the type t.
`ODD(i)`
Returns boolean TRUE if i is an odd number.
`ORD(x)`
Returns the ordinal value of its argument. For example, the ordinal value of a character is its ASCII value (on machines supporting the ASCII character set). x must be of an ordered type, which include integral, character and enumerated types.
`SIZE(x)`
Returns the size of its argument. x can be a variable or a type.
`TRUNC(r)`
Returns the integral part of r.
`VAL(t,i)`
Returns the member of the type t whose ordinal value is i.

Warning: Sets and their operations are not yet supported, so GDB treats the use of procedures `INCL` and `EXCL` as an error.