Al intentar acceder al nombre del campo se genera un error, ya que no existe esa DATA, y el sistema de gestión de errores del motor de clases de Harbour lo reconduce al método OnError(), desde allí se accede al campo que se esté usando.
FUNCtion NewScatter()
Local aVars := {=>}
LOcal nField := FCount()
LOcal nX := 1
FOR nX := 1 TO nField
aVars[FIELDNAME(nX)] := FieldGet(nX)
NEXT
RETU aVars
Function Gather(aVars)
lOCAL Nx := 1
AEval(aVars, {|x, i| FieldPut(i, aVars) } )
RETUrn TRUE