If the identifier is declared in ... its scope extends ... the declaration section of a program, function, or procedure
from the point where it is declared to the end of the current
block, including all blocks enclosed within that scope.
the interface section of a unit
from the point where it is declared to the end of the unit, and
to any other unit or program that uses that unit. (See
Programs and Units.)
the implementation section of a unit, but not within the block of
any function or procedure
from the point where it is declared to the end of the unit. The
identifier is available to any function or procedure in the unit,
including the initialization and finalization sections, if present.
the definition of a record type (that is, the identifier is the name
of a field in the record)
from the point of its declaration to the end of the record-type
definition. (See Records.)
the definition of a class (that is, the identifier is the name of a
data field property or method in the class)
from the point of its declaration to the end of the class-type
definition, and also includes descendants of the class and the
blocks of all methods in the class and its descendants. (See
Classes and Objects.)