Need help..

I have a problem.. why the month wont appear after i selected it?
Thanks

// digits mm/dd/yy
int m;
int d1;
int d2;
int y1;
int y2;
char ch;
char mm;
void setup () {
  Serial.begin (9600);
  Menu ();
}
void loop () {
  if (Serial.available () > 0) {
    ch = Serial.read ();
    Serial.print ("You Entered: ");
    Serial.println (ch);
    Serial.println("");
    if (ch == 'A' || ch == 'B' || ch == 'C') {
      menuLayout  ();
    }
    else {
      Menu ();
    }
  }
//  Serial.print (m + " " + y1);
}
void menuLayout ()  {
  switch (ch) {
    case 'A': SetDate ();
      break;
    case 'B': SetClock ();
      break;
    case 'C': SetAlarm ();
      break;
  }
}
void Menu () {
  Serial.println ("[A] Date Settings");
  Serial.println ("[B] Clock Settings");
  Serial.println ("[C] Alarm Settings");
}
void SetDate () {
  Serial.println("Set Date");
  Serial.println("");
  SelMonth();
}
void SelMonth () {
  Serial.println("Select Month");
  Serial.println ("[a] Jan  [e] May  [i] Sep");
  Serial.println ("[b] Feb  [f] Jun  [j] Oct");
  Serial.println ("[c] Mar  [g] Jul  [k] Nov");
  Serial.println ("[d] Apr  [h] Aug  [l] Dec");
  Month ();
}
void Month () {
  Serial.println ("Month: ");
  switch (ch) {
    case 'a': Serial.println ("Jan");
      break;
    case 'b': Serial.println ("Feb");
      break;
    case 'c': Serial.println ("Mar");
      break;
    case 'd': Serial.println ("Apr");
      break;
    case 'e': Serial.println ("May");
      break;
    case 'f': Serial.println ("June");
      break;
    case 'g': Serial.println ("July");
      break;
    case 'h': Serial.println ("Aug");
      break;
    case 'i': Serial.println ("Sep");
      break;
    case 'j': Serial.println ("Oct");
      break;
    case 'k': Serial.println ("Nov");
      break;
    case 'l': Serial.println ("Dec");
      break;
  }
}
//
void SetClock () {
  Serial.println("Set Time");
  Serial.println("");
}
void SetAlarm () {
  Serial.println("Set Alarm");
  Serial.println("");
}

When you call SelMonth(); where are you then reading input?

.

It tough to follow the program flow, even though you've broken it down into functions. First, requiring the user to enter upper case letters first, and then switch to lowercase letters for input after that is expecting the user to pay closer attention than is realistic. Use toupper() to convert input to upper case and work on that. Next, try to avoid using globals as much as possible. They make it harder to isolate bugs. Also, try to use a single input routine. Note how I've done away with ch in the code.

// digits mm/dd/yy
int m;
int d1;
int d2;
int y1;
int y2;
//char ch;
char mm;
void setup () {
  Serial.begin (9600);
  Menu ();
}
void loop () {
  char ch;
  
  if (Serial.available () > 0) {
    ch = ReadInput();
    Serial.print ("You Entered: ");
    Serial.println (ch);
    Serial.println();
    if (ch == 'A' || ch == 'B' || ch == 'C') {
      menuLayout(ch);
    }
  }
}
void menuLayout (char ch)  {
  char input;
  
  switch (ch) {
    case 'A':
      input = SelMonth();
      Month(input);
      break;
    case 'B': SetClock ();
      break;
    case 'C': SetAlarm ();
      break;
  }
}
void Menu () {
  Serial.println ("[A] Date Settings");
  Serial.println ("[B] Clock Settings");
  Serial.println ("[C] Alarm Settings");
}

char SelMonth () {
  char input;
  
  Serial.println("Set date by selecting a month");
  Serial.println ("[a] Jan  [e] May  [i] Sep");
  Serial.println ("[b] Feb  [f] Jun  [j] Oct");
  Serial.println ("[c] Mar  [g] Jul  [k] Nov");
  Serial.println ("[d] Apr  [h] Aug  [l] Dec");
  input = ReadInput();
  return input;
}
void Month(char in) {
  switch (in) {
    case 'A': Serial.println ("Jan");
      break;
    case 'B': Serial.println ("Feb");
      break;
    case 'C': Serial.println ("Mar");
      break;
    case 'D': Serial.println ("Apr");
      break;
    case 'E': Serial.println ("May");
      break;
    case 'F': Serial.println ("June");
      break;
    case 'G': Serial.println ("July");
      break;
    case 'H': Serial.println ("Aug");
      break;
    case 'I': Serial.println ("Sep");
      break;
    case 'J': Serial.println ("Oct");
      break;
    case 'K': Serial.println ("Nov");
      break;
    case 'L': Serial.println ("Dec");
      break;
  }
}

void SetClock () {
  Serial.println("Set Time");
  Serial.println("");
}
void SetAlarm () {
  Serial.println("Set Alarm");
  Serial.println("");
}

char ReadInput()
{
  char input;
  
  while (true) {
    if (Serial.available()) {
      input = toupper(Serial.read());        // Any case will do now
      return input;
    }
  }
}

Also note how menuLayout() processes the selection before returning to loop().

Thanks for rewriting the code and also the pointers..