No identifier other than a label may be used before it has been declared or specified. Specification means that the type of object to which an identifier refers has been given, but not necessarily the full definition of the object (see Section 9.1). Typically, a procedure identifier is specified as referring to a certain type of procedure with certain types of parameters by the heading of the procedure declaration, but the procedure is not fully defined until the end of the declaration as a whole. As an example of this, assume that two procedures f and g are declared in succession after the beginning of the segment. Then the body of g may call on itself or on the procedure f, but the body of f may not call on the procedure g unless g has been specified in a COMMON communicator. If a procedure is defined in a manner which is directly or indirectly calls itself, that procedure is said to be recursive and must be explicitly declared as such.