stop and reset

I am programming using switch case. I would like to stop and jump from a function to another without
function process end.

This is my code

void setup()
{
Serial.begin(9600);
}

void loop()
{
if (Serial.available() > 0)
{
switch(Serial.read())
{
case '1':
Auto();
break;
case '2':
Stop();
break;
}
}
}

void Auto()
{

Serial.println("Auto Test");
Serial.println("Interrup testing");
delay(3000);

Serial.println("Auto Test");
Serial.println("Interrup testing");
delay(3000);

Serial.println("Auto Test");
Serial.println("Interrup testing");
delay(3000);

Serial.println("Auto Test");
Serial.println("Interrup testing");
delay(3000);
}

void Stop()
{
Serial.println("End");
}

If I input '2' during Auto() funtion is processing, Stop() function is not work right now.

After Auto() function is completed, Stop() function works.

Result :

Auto test

Interrupt testing

Auto test

Interrupt testing

Auto test

Interrupt testing

Auto test

Interrupt testing

End

I want function resposes right now when I input character.

Please someone help me to solve this.

I want like belowing

Auto test

Interrupt testing

Auto test

Interrupt testing

End

If you don't want your code to block, then don't use delay(). You want to write all your code so that loop() is continually running thousands of times a second. You can find a simple demonstration of this at File > Examples > 02.Digital > BlinkWithoutDelay.

Are you expecting the Auto() function to stop part way through if you enter a ‘2’ whilst it is operating ? The Auto function will take at least 12 seconds to run before the Serial input is read. Why would it do anything else ?

Advice : get rid of the delay()s and use millis() timing instead. This would allow you to check Serial input each time through loop() instead of waiting for 12 seconds between checks

Have a look at Using millis() for timing. A beginners guide, Several things at the same time and look at the BlinkWithoutDelay example in the IDE.