The procedure pointer assignment statement causes a procedure pointer to become associated with a target or causes the procedure pointer's association status to become disassociated or undefined.
If proc_target is not a procedure pointer, proc_pointer_object becomes associated with proc_target. If proc_target is a procedure pointer and is associated with a procedure, proc_pointer_object becomes associated with the same procedure. If proc_target is a pointer with an association status of disassociated or undefined, proc_pointer_object acquires the same status.
If the proc_pointer_object has an explicit interface, its characteristics must be the same as proc_target except that proc-target can be pure even if proc_pointer_object is not. If the characteristics of proc_pointer_object or proc-target are such that an explicit interface is required, both proc_pointer_object and proc-target must have an explicit interface.
If proc_pointer_object has an implicit interface and is explicitly typed or referenced as a function, proc-target must be a function. If proc_pointer_object has an implicit interface and is referenced as a subroutine, proc-target must be a subroutine.
If proc-target and proc_pointer_object are functions, they must have the same type; corresponding type parameters must either be both deferred or have the same value.
If proc-target is a specific procedure name that is also a generic name, only the specific procedure is associated with proc_pointer_object.
Related information::