You cannot have a pointer to a nested procedure, because it is nested: the point of such procedure is to share variables of parent procedure, and thus to be isolated from the rest of code.
Just keep it simple, until you have some serious reasons, which I didn't see.
Instead, everything I saw in your code could be solved by simple if/case blocks.