Palabra reservada que se utiliza para identificar una subunidad definida fuera (separada) de la unidad matriz a la que pertenece.
En la parte de declaraciones de la unidad matriz hay que incluir un body_stub para la subunidad y, cuando ésta se defina, debe ir precedida de una cláusula indicando a que unidad pertenece:
separate (parent_unit_name)) proper_body
parent_unit_name ::= name
proper_body ::= subprogram_body | package_body | task_body | protected_body
subprogram_body ::= procedure_body | function_body
Unidad matriz:
procedure Ejemplo_Separate is procedure Intercambiar (A, B : in out Integer) is separate; X, Z : Integer; begin Subunidad (X, Z); end Ejemplo_Separate;
separate (Ejemplo_Separate) procedure Intercambiar (A, B : in out Integer) is Aux : Integer := A; begin A := B;
B := Aux; end Intercambiar;