Para calcular o número da semana de uma data, podemos utilizar o seguinte calculo: Código: def var f as int format "999". def var s as int format "999". def var dt-ini as int format "999". def var c-ini as char format "x(10)". def var c-fim as char format "x(10)". def var dt-simula as date format "99/99/9999". assign dt-simula = date("28/04/2009"). assign /* Data inicio do ano */ c-ini = "01/01/" + string(year(dt-simula)) /* Data do dia */ c-fim = string(day(dt-simula)) + "/" + string(month(dt-simula)) + "/" + string(year(dt-simula)) /* Verifica em que dia da semana o dia 01/01 caiu */ dt-ini = weekday(date(c-ini)) /* Quantidade de dias no ano */ f = int(date(c-fim) - date(c-ini)) /* f : quantidade de dias até a data (7 - weekday(dt-simula)): pega os dias que falta da semana da data dt-ini: quantidade de dias a somar no inicio do ano para completar uma semana */ f = f + (7 - weekday(dt-simula)) + dt-ini /* Divide a qantidade de dias incrementada por 7 */ s = f / 7. /* Exemplo: Data Inicio: 01/01/2009 - Caiu numa quinta-feira, a contar de domingo são 5 dias * Data do Calculo: 28/04/2009 - Cai numa terça feita, a contar de domingo são 3 dias * Dias até a data a contar do dia pimeiro do ano: int(date(01/01/2009) - date(28/04/2009)) = 126 f = 117 + (7 - 3) + 5 = 126 Então: 126 / 7 = 18. Logo, para o dia 28/04/2009 a semana é a 18. Calculo: * Para descobrir o dia utilizamos a formula (weekday(data)) */ disp c-ini skip c-fim skip f skip s skip dt-ini skip int(date(c-fim) - date(c-ini)). Acho que é isto. Abraços a todos Dilonei Grando Analista de Sistemas
Dilonei valeu. Para complementar sua dica postei um exemplo onde testo se o ano fiscal para o cliente inicia no dia primeiro do ano ou na primeira segunda feira. Muitas multi-nacionais consideram o inicio do ano fiscal como sendo a primeira segunda feira do ano. Abraços Atila atila.cm@hotmail.com