Начну с того, что вы делаете три лишних преобразования. В условии IF достаточно сравнить числа.
"if l('SHFR=" + shifr.Trim() + "')=mfn then '1' else '0' fi";
А ваша проблема кроется в какой-нить несовместимости isis32.dll, ибо глючная она до ужаса. Да и фразу "не работает" обычно нужно расшифровывать. Кроме того есть же какая-то обработка ошибок.