The target is inserted in front of the procedure name. The target is treated in a special way for support of a particular programming style, object oriented programming. We come back to this issue in a later chapter. The declaration section of a procedure essentially corresponds to that of a module. Declarations from a procedure however cannot be exported - only declarations in the outermost level can be exported.
Procedures define local visibility and ranges of validity.
The range of validity begins with the place of the declaration and extends at the end of the procedure. Names may be used only within the range of validity of their declaration. No name may refer to more than one object within its range of validity. In contrat to this, global variables of a module persist until the module is unloades explicitly. This expression is evaluated and the result is passed as result of the functional procedure.