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
Code: C
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");
        getUserInput(prompt);
        m = 1;
    }
    return m;
}