From 92b20316ab1fc8ac331b21921a19d9973f9e4faa Mon Sep 17 00:00:00 2001 From: Dorchies David <david.dorchies@inrae.fr> Date: Fri, 26 Mar 2021 09:56:41 +0100 Subject: [PATCH] feat: remove leap year handling Fix #8 --- src/PARAM.PAS | 2 +- src/UTILIT.PAS | 31 ++++++------------------------- src/VGEST.PAS | 2 +- 3 files changed, 8 insertions(+), 27 deletions(-) diff --git a/src/PARAM.PAS b/src/PARAM.PAS index 59a8a3f..14b9568 100644 --- a/src/PARAM.PAS +++ b/src/PARAM.PAS @@ -832,7 +832,7 @@ procedure Ici_EcritureParametresLacs(var ZFic:text); write(ZFic,' ',YNomDebit[YTypeDebit],YRangLac,' : '); for XNPivot:=1 to YNbPivot[YRangLac,YTypeDebit] do begin - write(ZFic,'si T>= ',B_dateclaire(2001,YQuantPivot[YRangLac,YTypeDebit,XNPivot])); + write(ZFic,'si T>= ',B_dateclaire(YQuantPivot[YRangLac,YTypeDebit,XNPivot])); write(ZFic,' : Q',YRangFormule[YRangLac,YTypeDebit,XNPivot]); if XNPivot<YNbPivot[YRangLac,YTypeDebit] then write(ZFic,' ; '); diff --git a/src/UTILIT.PAS b/src/UTILIT.PAS index dbfecad..9124968 100644 --- a/src/UTILIT.PAS +++ b/src/UTILIT.PAS @@ -46,7 +46,7 @@ function B_MinLongInt (ZD1,ZD2:longint):longint; function B_MaxDouble (ZD1,ZD2:Bprecis1) :Bprecis1; function B_MinDouble (ZD1,ZD2:Bprecis1) :Bprecis1; function B_Longmois (ZMois:integer):integer; -function B_DateClaire (ZAnnee,ZQuant:integer):BChai5; {date en clair … partir du quantieme} +function B_DateClaire (ZQuant:integer):BChai5; {date en clair … partir du quantieme} function B_Quantieme (Zjour,Zmois:integer):integer; function B_QuantiemeNonBiss(ZDate:longint):integer; function B_Tjour (ZAn,ZMois,ZJour:longint):longint; @@ -102,10 +102,7 @@ function B_MinDouble (ZD1,ZD2:Bprecis1) :Bprecis1; {----------------------------------------------------------------------------} function B_Longmois(ZMois:integer):integer; -{donne le nombre de jours du mois Mois de l'annee An, en tenant compte pour } -{f‚vrier du caractŠre bissextile ou non de l'ann‚e. Une ann‚e est bissextile} -{si elle est multiple de 4 et non divisible par 100, ou bien si elle est } -{multiple de 400. } +{donne le nombre de jours du mois en ann‚e de 365 jours } var XL : integer; begin B_LongMois:=BLong[ZMois]; @@ -113,7 +110,7 @@ function B_Longmois(ZMois:integer):integer; {----------------------------------------------------------------------------} -function B_DateClaire(ZAnnee,ZQuant:integer):BChai5; +function B_DateClaire(ZQuant:integer):BChai5; {---Calcul de la date en format jj.mm … partir du quantiŠme annuel, pour ---} {---ann‚e bissextile ou non. ---} var @@ -161,29 +158,13 @@ function B_QuantiemeNonBiss(ZDate:longint) : integer; {----------------------------------------------------------------------------} function B_Tjour(ZAn,ZMois,ZJour:longint):longint; -{calcul du nombre de jours ‚coul‚s depuis le 31/12/1599 (nombre = 0), … --} +{calcul du nombre de jours ‚coul‚s depuis le 01/01/0000 (nombre = 1), … --} {partir de l'ann‚e, du mois et du jour. le calcul est valable … partir --} -{01/01/1600 (nombre = 1). --} -{--obsolŠte--Calcule le numero du jour compt‚ depuis le 31/12/1899 (1er jour). - An est entr‚ en ann‚e sur 4 chiffres. Le calcul est valable de 1901 … 2099. - Remarquer que 1900 n'est pas bissextile} -{--obsolŠte--corrig‚ 2000} +{en ann‚e non bissextiles --} const XN: array[1..12] of integer = (0,31,59,90,120,151,181,212,243,273,304,334); - var XDeb: longint; begin - ZAn:=Zan-1600; - {XDeb:= XN[ZMois]+Zjour+1+ZAn*365+ ((ZAn-1) div 4);} - XDeb:= XN[ZMois]+Zjour+ZAn*365 - + (B_maxin(0,ZAn-1)) div 4 - - (B_maxin(0,Zan-1)) div 100 - + (B_maxin(0,Zan-1)) div 400; - if Zan>0 then - XDeb:=Xdeb+1; - if ((ZAn mod 4) = 0) and (ZMois > 2) then - if ( ((Zan mod 100)<>0) or((Zan mod 400)=0) ) then - XDeb:=XDeb+1; - B_Tjour := XDeb; + B_Tjour := XN[ZMois]+Zjour+ZAn*365; end; {----------------------------------------------------------------------------} diff --git a/src/VGEST.PAS b/src/VGEST.PAS index c8d7d6f..145e4db 100644 --- a/src/VGEST.PAS +++ b/src/VGEST.PAS @@ -118,7 +118,7 @@ procedure Ici_Effacement; begin write(YFicSortie,'date : '); for Yj:=(Yi-1)*4+1 to B_minin(4*Yi,YNbQXObj-1) do - write(YFicSortie,' ',B_DateClaire(2001,YDateObj[Yj])); + write(YFicSortie,' ',B_DateClaire(YDateObj[Yj])); writeln(YFicSortie); write(YFicSortie,'debit : '); for Yj:=(Yi-1)*4+1 to B_minin(4*Yi,YNbQXObj-1) do -- GitLab