Esteban,
Como bien dice Hernan una opción sería apelar a las funciones de manejo de archivos FOPEN, FREAD, etc...
Otra si te da la memoria sería levantar el archivo con FILETOSTR y luego tratarlo como un campo memo
FOR nI = 1 TO ALINES(aLineas)
* buscar en aLineas[nI]
ENDFOR
pero con 3,5M de registros habría que ver...
y por último la opción de un cursor auxiliar de un solo campo de texto
CREATE CURSOR arcx (TEXTO C(255))
* luego lo llenas con la lectura del archivo de texto...
APPEND FROM (cFileTXT) SDF
* para buscar los datos ...
LOCATE FOR 'PEREZ' $ TEXTO
o
LOCATE FOR '99-99999999-9' $ TEXTO
o bien si sabes las posiciones exactas
LOCATE FOR SUBSTRING(TEXTO,nPosCUIT,13) = '99-99999999-9'
Si la PC es rápida el tiempo de 'levantado' no tendría que ser muy grande...
Acá están desarrollados algunos ejemplos de las 3 opciones...
saludos