Vaya, no entiendo.
"la fecha debe ser una ingresada por el usuario."
"lo que pasa es que no tiene interfaz grafica, asi que el usuario solo ejecuta el prg y ya esta"
En qué quedamos? Vuelvo a preguntar: de dónde surge la variable de supuesta fecha que se pasa como parámetro?
Si la fecha es un tipo caracter, escrito como "12/06/2014", lo transformas a fecha con CTOD("12/06/2014") y saldrá bien de acuerdo con SET DATE BRITISH (o el que corresponda usar).
Si no quieres depender de SET DATE, tienes que escribir una función
PROCEDURE CharToDate(tcFecha)
*-------------------------------------------------
if occurs("/" , tcFecha) # 2 or len(tcFecha)#10
Messagebox("formato inválido")
return
endif
LOCAL ARRAY gaLines
alines(gaLines,tcFecha,1,"/")
* El array galines se conformará como cDia, cMes , cAño
REturn Date( Val(gaLines[3]) , Val(gaLines[2]) , Val( gaLines[1] )
y ahí, por ejemplo
SELECT TABLA
REPLACE CampoFecha with CharToDate( lcFecha )
También puedes usar una función como la que sigue para saber si un alfanumérico podría ser una fecha
Con esta función puedes cambiar la anterior
PROCEDURE CharToDate(tcFecha)
*-------------------------------------------------
if !TestFecha(tcFecha)
Messagebox("Formato Inválido")
REturn
endif
LOCAL ARRAY gaLines
alines(gaLines,tcFecha,1,"/")
* El array galines se conformará como cDia, cMes , cAño
REturn Date( Val(gaLines[3]) , Val(gaLines[2]) , Val( gaLines[1] )