1. Символ 0x8D кодируется на выходе нулем вместо 0x040C
(Пруф из файла ftp://ftp.unicode.org/Public/MAPPING...WS/CP1251.TXT:
..
0x8D 0x040C #CYRILLIC CAPITAL LETTER KJE
.. )

2. Перекодируется максимум 81 символ, но об этом нигде не упоминается. (Даже не 80, что как-то объяснялось бы длиной типов STRING и WSTRING по умолчанию). Если в функцию передать ссылку на WSTRING(10) то оставшиеся 142 байта затрут чего-нибудь в области данных с непредсказуемыми последствиями. Или даже если на WSTRING, то ноль в конце уже не поместится и что-то затрет.
А лучше переделать вызов на явное указание длины:
ASCII_TO_UNICOD2(p_STR_IN:=ADR(strAscii) , p_STR_OUT:=ADR(wstrUnicode), size:=SIZEOF(wstrUnicode));

3. Функция всегда возвращает FALSE. Это можно считать feature. Но лучше бы возвращать что-то полезное, например ошибку если входная строка длиннее выходного буфера, или просто длину выходной строки.

4. Символ 0x98 не определен в кодовой странице CP-1251 и сейчас кодируется нулем, что принудительно завершает строку, хотя последующие за ним символы все равно заносятся в выходную строку. Традиционно в Unicode для таких случаев используется:
U+FFFD � replacement character