Pedro,
Te paso algo de manejo de fechas y ves si te sirve.
! Forzar dia primero del mes
LOC:FechaDesde = DATE(MONTH(TODAY()),1,YEAR(TODAY()))
! Sumar Dos meses a la fecha actual
LOC:FechaDesde = DATE(MONTH(TODAY()) + 2,DAY(TODAY()),YEAR(TODAY()))
! Tomar la fecha del sistema
LOC:FechaHasta = TODAY()
! Controlo Fecha Que no sea mayor a Today() y Muestro en el Message el Valor de Today()
IF LOC:FechaHasta > Today()
Message('Fecha Hasta No Puede Ser Mayor a Fecha Actual......'&format(Today(),@d06b),'Mensaje del Sistema',ICON:Exclamation)
Select(?LOC:FechaHasta)
CYCLE
End
! Cargo Fecha Actual si la fecha ingresada = cero
IF LOC:FechaHasta = 0
LOC:FechaHasta = Today()
END
Display
! Cargo Fecha Actual menos 45 dias si la fecha ingresada = cero
IF LOC:FechaHasta = 0
LOC:FechaHasta = Today() - 45
END
Display
! Cargo una fecha inicial cuando fecha desde es igual a cero
IF LOC:FechaDesde = 0
LOC:FechaDesde = deformat ('01/01/1950',@d6)
END
! Calculo Nombre del Día y si es Sábado o Domingo sumo 2 o 1 para llegar hasta el Lunes
EXECUTE (LOC:FECHA % 7) + 1
LOC:Dia = 'Domingo'
LOC:Dia = 'Lunes'
LOC:Dia = 'Martes'
LOC:Dia = 'Miércoles'
LOC:Dia = 'Jueves'
LOC:Dia = 'Viernes'
LOC:Dia = 'Sábado'
END
! Otra forma
LOC:DiaSemana = choose((today() %7)+1,'Domingo','Lunes','Martes','Miércoles','Jueves','Viernes','Sábado')
! Para Calcular el Número de Semana del Año
Loc:NroSemana = (Loc:Fecha_A_Calcular - date(01,01,year(Loc:Fecha_A_Calcular) / 7
Y tomar la parte entera de esto, sumar 1.
La fecha que formás con DATE debe ser siempre el 1 de enero del año que te interesa.
Espero te sirva.
Saludos desde Venado Tuerto - Argentina