Why does serial.read stop working?

void loop(){
  EXEC(Hold0);
}

First, all upper case names are reserved, by convention, for constants that are #defined into existence. That is certainly not the case here.

Second, the name tells us NOTHING about what the function does.

Third, it is pointless to have a function that does nothing but call another function. One of them is redundant. It isn't loop().

Fourth, the indenting in the rest of your code sucks. Use Tools + Auto Format BEFORE posting any more code.