1.to expand certain model statements depending upon the value of a condition during the execution of the expanded program
2.test a condition during the execution of the expanded program
3. Both (a) and (b)
4.to expand certain model statements depending upon the value of a condition during the process of macro expansion.