А если вообще исключить  проверку на соответствие символов?
~National.IsIdentChar(ch)
и оставить так:
UNTIL (i = MaxIdLen);
Решение конечно кривое но, работать будет??

откуда это
~National.IsIdentChar(ch) ???