Siempre tuve problemas con esa función. Por eso simplemente lo que hago es trabajar con un archivo a bajo nivel.
FCREATE() para crear el archivo CSV, y después te ponés a trabajar en la cadena. Hace rato que ya no estoy programando en Visual FoxPro, pero te paso el espíritu de los comandos para rumbearte un poco.
lnManejador = FCREATE("F:\micsv.csv")
lcCadena = ""
SELECT (mitablaamigrar)
GO TOP
SCAN
lcCadena = lcCadena + campo1 + ";" + campo2 + ";" + campo3 + ";" + campo4
FPUTS(lcCadena,lnManejador)
lcCadena = ""
ENDSCAN
FCLOSE(lnManejador)
O sea, no recuerdo bien las opciones. Si mal no recuerdo, FCREATE() creaba el archivo y te devolvía el número de manejador. Y FPUTS() te escribía la cadena en el archivo correspondiente al manejador agregando un retorno de carro. Seguramente vas a necesitar una función adicional que te convierta todo a tipo character, o sea... si tengo fechas, que haga la conversión DTOC() de la fecha, si tengo lógicos que devuelva la cadena "Verdadero" o "Falso" según corresponda, si es entero que devuelva un ALLTRIM(STR(TuNumeroAConvertir)), etcétera etcétera. Por algún lado tengo esas funciones, si no te alcanza esta explicación después rebusco en mi código fuente de Visual FoxPro y te los paso.
Antes de entrar en el bloque SCAN / ENDSCAN, yo obtenía la estructura de la tabla en un array, poniendo esa primera línea en la opción de títulos. También hay modos de recuperar el comentario de los campos, entonces, si vos al crear los DBF en un DBC le ponías un buen título en los comentarios, eso lo podés utilizar para tu primera fila de títulos en el CSV.
Abrazo, espero que te sea útil esta pequeña pisteada.