• A subprogram definition describes the interface to and the actions of the subprogram abstraction
• The parameter profile (aka signature) of a subprogram is the number, order, and types of its parameters
• A subprogram call is an explicit request that the subprogram be executed
• The protocol is a subprogram’s parameter profile and, if it is a function, its return type
• A subprogram declaration provides the protocol, but not the body, of the subprogram