Una lista de parámetros formales se encierra entre paréntesis y está formada por una o más especificaciones de parámetros separadas por punto y coma. Cada especificación de parámetros está formada por una lista de identificadores separados por comas, seguida de dos puntos tras los que aparece el modo de paso y tipo de los parámetros. El tipo de parámetro puede ser una definición de puntero anónimo.
El modo de paso de los parámetros puede ser in (entrada), out (salida) o in out (entrada y salida). El modo por omisión es in y es el único aplicable cuando el tipo de parámetro es una definición de puntero. Las funciones sólo admiten parámetros in.
De forma opcional, se pueden asignar valores por omisión a los parámetros especificando una expresión por omisión (default_expression).
El modificador de null_exclusion sólo es aplicable cuando el tipo de parámetro es un puntero (pero no una definición de puntero anónimo) y significa que el parámetro no puede tomar el valor null.
formal_part ::= (parameter_specification {; parameter_specification }) parameter_specification ::= defining_identifier_list : mode [null_exclusion] subtype_mark [:= default_expression] | defining_identifier_list : access_definition [:= default_expression] mode ::= [in] | in out | out
procedure Intercambiar (A, B : in out Integer); procedure Mezclar (L1, L2 : in Lista; L3 : out Lista); function Combinatorio (M, N : Natural) return natural;