You probably want something like this
case $1 in
(mon*) grep "MK.*month" ;;
(hour) grep "Hour:" | egrep "$re" ;;
(*) grep -v "^#" | grep "$1" ;;
esac <<EOT | more
... over 3600 lines of data (essentially a dictionary)
EOT
but I'm not sure what you intend with the more +/^exit pager call;
a pager is usually used at the end of a command pipeline. (As said, it
would probably be much clearer if you'd just tell us what you actually
want to achieve here.) If all you want is skipping the program then you
don't need a pager at all (for that purpose at least) and you can omit
it completely:
case $1 in
(mon*) grep "MK.*month" ;;
(hour) grep "Hour:" | egrep "$re" ;;
(*) grep -v "^#" | grep "$1" ;;
esac <<EOT
... over 3600 lines of data (essentially a dictionary)
EOT
As said in my previous post, the essential part for embedded data is the
here-document redirection ('<<'), in this case applied to the whole case
shell construct (affecting standard input of the embedded commands).
Janis