﻿id	summary	reporter	owner	description	type	status	priority	milestone	component	version	severity	resolution	keywords	cc
1600	Duda sobre TheBegin y TheEnd	imendez	Víctor de Buen Remiro	"Hola, si definimos la fecha:

{{{
Date a = y1582m12d31;
}}}

o cualquiera anterior en el tiempo, TOL nos devuelve el valor TheBegin.

La siguiente función trata de devolver, a partir de una serie cuyo fechado es un subconjunto de diario (entendido como lunes-viernes, martes, etc.), la misma serie entre el primer mes en el que la serie tome valor desde el primer día del mes, y el último mes en el que tome valor hasta el último día.

{{{
Serie CompletedMonth(Serie varDia)
//////////////////////////////////////////////////////////////////////////////
{ 
  Date Final = Last(varDia);
  Date FinalAux = Succ(Final, Dating(varDia), 1);
  Date FinalDate = If( Month(Final) == Month(FinalAux),
    Succ(Succ(FinalAux,Mensual,-1),Dating(varDia),-1),
    Final);
  
  Date Initial = First(varDia);
  Date InitialAux = Succ(Initial, Dating(varDia), -1);
  Date InitialDateAux = If(Month(Initial) == Month(InitialAux),
    Succ(Initial,Mensual,1),
    Initial);
  Date InitialDate = If( Belong(InitialDateAux, Dating(varDia)),
    Date InitialDateAux,
    Date Succ(InitialDateAux, Dating(varDia), 1));
  
  Set fechas = [[ InitialDate, FinalDate]];

  Serie dia = If(Card(fechas) > 0, 
    { 
      Date fec1 = fechas[1]; 
      Date fec2 = fechas[2];
      Serie TruncvarDia = SubSer(varDia, fec1, fec2);
      TruncvarDia 
    }, 
    { 
      WriteLn(""El fechado de la serie es incompatible"");
      CalInd(C,Diario)
    })    
};
}}}

Seguro que la función se puede hacer más bonita (y eficiente), pero mi duda es la siguiente: cuando la aplico a la siguiente serie

{{{
Serie sr = SubSer(CalInd(C, Diario), y1583m01d02, y1583m01d02);
Serie srC = CompletedMonth(sr);
}}}

Me devuelve un serie srC cuya fecha final es TheEnd.
Es decir, la línea

{{{
Succ(Succ(FinalAux,Mensual,-1),Dating(varDia),-1)
}}}

donde FinalAux es y1583m01d03, devuelve TheEnd.
Sé que es rebuscado, pero ¿es normal?

Saludos,
Iván


 "	doubt	closed	normal	Mantainance	Kernel	3.1	minor	remind		atorre@…
