Se utiliza la palabra with precediendo al protocolo del subprograma que se espera. Se puede especificar un nombre por defecto para el subprograma pasado por parámetro, utilizando "is <nombre>". Si se quiere que el nombre por defecto sea el mismo que el del parámetro formal, se pondrá como nombre "<>". En caso de especificar un nombre por defecto se podrá omitir el parámetro al instanciar la unidad.
generic type Elemento is private; -- Un procedimiento con un parámetro de tipo Elemento with procedure Acción(X : in Elemento);
-- Un procedimiento con un parámetro de tipo Elemento cuyo -- nombre por omisión es Escribir with procedure Acción (X : in Elemento) is Escribir; -- Una función booleana con un parámetro de tipo Elemento cuyo -- nombre por omisión es Acción_2 with function Acción_2 (X : Elemento) return Boolean is <>;