I have lots of queries for your validateMonth function.
1. Why do you need do while and while loops at all.
2. Its always an infinite loop because you have FLAG = FALSE as initial values and then you have an OR condition.
3. You have never assigned FLAG as true but then also testing that almost in 2 while and do while loops.
4. You are returning m which is not used in the function and so the return value is always a garbage.
Cant it be done as
unsigned validateMonth(unsigned month, char *prompt)
unsigned m =0;
if(month<0 || month>12) /* flag 1 for true*/
printf("Month error 0 or less or equal to 12 please\n");
m = 1;