function WSemana lParameters lpSemana, lpAnio if type("lpSemana") # "N" or type("lpAnio") # "N" or not between(lpAnio,1900,9999) return {} && Devuelve vacio en caso de error en parametros endif local lDiaUno, lSemanaUno, lInicioAnio, lInicioDia, lInicioReal, lDiaSemana lDiaUno = set("fdow") lSemanaUno = set("fweek") lInicioAnio = ctod("01/01/"+padl(lpAnio,4,"0")) lInicioDia = dow(lInicioAnio) lInicioReal = lInicioAnio - lInicioDia + lDiaUno do case case lSemanaUno = 1 lCantidadSemana = lpSemana - 1 case lSemanaUno = 2 lCantidadSemana = iif(lInicioAnio-lInicioReal>3,lpSemana,lpSemana-1) case lSemanaUno = 3 lCantidadSemana = iif(lInicioAnio>lInicioReal,lpSemana,lpSemana-1) otherwise lCantidadSemana = 0 endcase lDiaSemana = lInicioReal + 7 * lCantidadSemana - day(lInicioAnio) + 1 return lDiaSemanaRegards,
Quidquid latine dictum sit, altum sonatur