This subclause defines attributes and rules associated 
with verifying the consistency of a distributed program. 
Yields a value of the predefined 
type String that identifies the version of the compilation unit that 
contains the declaration of the program unit.
 
Yields a value of the predefined 
type String that identifies the version of the compilation unit that 
contains the body (but not any subunits) of the program unit. 
 
The 
version of a compilation 
unit changes whenever the compilation unit changes in a semantically 
significant way. This International Standard does not define the exact 
meaning of "semantically significant". It is unspecified whether 
there are other events (such as recompilation) that result in the version 
of a compilation unit changing. 
 
  If P is not a library unit, and P has no completion, 
then P'Body_Version returns the Body_Version of the innermost program 
unit enclosing the declaration of P. If P is a library unit, and P has 
no completion, then P'Body_Version returns a value that is different 
from Body_Version of any version of P that has a completion. 
In a distributed 
program, a library unit is 
consistent if the same version of its 
declaration is used throughout. It is a bounded error to elaborate a 
partition of a distributed program that contains a compilation unit that 
depends on a different version of the declaration of a shared passive 
or RCI library unit than that included in the partition to which the 
shared passive or RCI library unit was assigned. 
As 
a result of this error, Program_Error can be raised in one or both partitions 
during elaboration; in any case, the partitions become inaccessible to 
one another.