This directive produces a given sequence of statements from various places in your program, even though different parameters may be required each time you call the sequence.
Macro processing consists of two separate and distinct phases: Macro Definition and Macro Expansion.