case _triggerlevel = 1 begin transaction private plError plError = .f. release gaErrors public gaErrors[1, 12] aused(laUsed) lcExact = set('EXACT') lcANSI = set('ANSI') lcDeleted = set('DELETED') lcError = on('ERROR') set exact on set ansi on set deleted on on error LogRIError(ERROR(),MESSAGE()) &&plError = .t. * If we're being called recursively and an error has occurred, exit now. case vartype(m.plError) = "L" and m.plError return endcase ** First search in the parent column lnTParent = ascan(laRelations, m.lcTable, m.lnTParent + 1, ; m.lnRelations , cnPARENTCOL, 8) do while m.lnTParent > 0 and not m.plError lnI = m.lnTParent ** Some staff lnTParent = ascan(laRelations, m.lcTable, m.lnI + 1, ; m.lnRelations, cnPARENTCOL, 8) enddoThe first ascan executes just fine, but the second gives me "Procedure cancelled" error. lnI = 4 at this time and lnRelations = 222 I don't understand, why I'm not going to LogRiError and what is wrong with this ASCAN.