From 66909250b29505cd99878d27e06c03a539bf6425 Mon Sep 17 00:00:00 2001
From: Dorchies David <david.dorchies@inrae.fr>
Date: Fri, 26 Mar 2021 16:54:34 +0100
Subject: [PATCH] feat: Output PaChrVob.txt with Vobj only

Fix #9
---
 example/PARAMETR/CHOIX.TXT |  3 ++-
 src/CALCULS3.PAS           | 34 +++++++++++++++++++++++++++++++---
 src/DECLARA.PAS            |  4 +++-
 src/PARAM.PAS              |  1 +
 src/VGEST.PAS              |  2 +-
 5 files changed, 38 insertions(+), 6 deletions(-)

diff --git a/example/PARAMETR/CHOIX.TXT b/example/PARAMETR/CHOIX.TXT
index 069087f..febc7b3 100644
--- a/example/PARAMETR/CHOIX.TXT
+++ b/example/PARAMETR/CHOIX.TXT
@@ -24,7 +24,8 @@ ligne 7 : d
 ligne 8 : fin de période de calcul
 ligne 9 : code indiquant les sous-programmes à lancer:
                 0 : tous les sous-programmes
-                1 : uniquement la simulation en chronologie inverse
+                1 : uniquement la simulation en chronologie inverse (sortie détaillée PaChrono.txt)
+                2 : uniquement la simulation en chronologie inverse (sortie PaChrVob.txt)
 ligne 10 : code pour format d'édition des résultats de volume : 1 pour valeurs absolues en m3, 2 pour valeurs relatives par rapport à Vtot ou somme(Vtot)
 ligne 11 : code indiquant le mode de répartition du débit à stocker entre les réservoirs:
 		1=figée;
diff --git a/src/CALCULS3.PAS b/src/CALCULS3.PAS
index 45d92e4..b792dce 100644
--- a/src/CALCULS3.PAS
+++ b/src/CALCULS3.PAS
@@ -163,6 +163,27 @@ procedure Ici_CalculDebitsResRef_CalculRepartition(ZChron:boolean;ZDate:longint)
 
  end; {fin de Ici_CalculDebitsResRef_CalculRepartition}
 
+
+{================================}
+{--‚criture des chroniques Vobj--}
+{================================}
+
+procedure Ici_Ecriture_resultats_Vobj();
+
+begin
+  for YRangLac:=1 to YNbLacs do
+    begin
+      write(YFicResChrShort,YChaiDate[YRangLac],' ');
+      if YAbsRel=1 then
+        write(YFicResChrShort,YVolume[YRangLac]:21,' ')
+      else
+        write(YFicResChrShort,(YVolume[YRangLac]/YVtot[YRangLac]):27:20,' ');
+    end;
+  writeln(YFicResChrShort);
+  flush(YFicResChrShort);
+end;
+
+
 {=====================================================}
 {--‚criture de r‚sultats d‚taill‚s sur fichier texte--}
 {=====================================================}
@@ -709,7 +730,12 @@ procedure C3_CalculChroniquesVolume;
 
   {==INITIALISATIONS AVANT CALCUL DEFINITIF EN CHRONO INVERSE==}
   reset(YFicDeb);
-  C1_EcritureEnteteResultDetail(false);
+  if YChoixSubProg<2 then C1_EcritureEnteteResultDetail(false)
+  else begin
+    assign(YFicResChrShort,YRepR+YNomFicResChrShort);
+    rewrite(YFicResChrShort);
+  end;
+
   Ici_Init_Stat_Repartition;
   YVolTot1:=0;
   gotoxy(Ax,Ay);
@@ -786,7 +812,8 @@ procedure C3_CalculChroniquesVolume;
      YVolumePeutEtr[YRangLac]:=B_mindouble(YVtot[YRangLac],B_maxdouble(0,YVolume[YRangLac]-YQST[YrangLac]*YdT));
 
     {Ecriture des r‚sultats d‚taill‚s sur fichier texte--}
-    Ici_Ecriture_Resultats_Detailles(false);
+    if YChoixSubProg<2 then Ici_Ecriture_Resultats_Detailles(false)
+    else Ici_Ecriture_resultats_Vobj();
 
     {--nouvelles valeurs pour les d‚bits du pas de temps pr‚c‚dent … --}
     {--l'aval des restitutions (QVVeille) et pour le volume au pas de--}
@@ -840,6 +867,7 @@ procedure C3_CalculChroniquesVolume;
   for Xi:=0 to 2 do
    close(YFicQXdef[Xi,1]);
   close(YFicResult2);
+  close(YFicResChrShort);
   for Xi:=0 to 2 do
    if YQXdefmoyGlop[Xi,1]>0 then
     YQXdefmoyGlop[Xi,1]:=exp(ln(YQXdefmoyGlop[Xi,1]/(YDateFin-YDateDebut+1))/YPuiss);
@@ -853,7 +881,7 @@ procedure C3_CalculChroniquesVolume;
   gotoxy(Ax-36,Ay);
   clreol;
   writeln(' : termin‚ ');
-  if YChoixSubProg=1 then exit;
+  if YChoixSubProg>0 then exit;
   write('  calcul de Vges en sens chrono (iter. en cours sur Vges initial : ');
   A_lecture_xy;
 
diff --git a/src/DECLARA.PAS b/src/DECLARA.PAS
index 70776c0..1978bc2 100644
--- a/src/DECLARA.PAS
+++ b/src/DECLARA.PAS
@@ -48,6 +48,7 @@ CONST {chaines de caract
  YnomFicReglage= 'REGLAGE.txt'; {nom du fichier des r‚glages pour r‚partition des taches'}
  YNomFicResChr1= 'Chrono.txt';  {nom de fichier des r‚sultats d‚taill‚s obtenus en sens chronologique --> calcul de Vges}
  YNomFicResChr2= 'PaChrono.txt';{nom de fichier des r‚sultats d‚taill‚s obtenus en sens chronologique inverse --> calcul de Vobj}
+ YNomFicResChrShort= 'PaChrVob.txt'; {nom de fichier des Vobj obtenus en sens chronologique inverse}
  YNomFicResDef = 'QXdef';
  YNomFicResult1= 'Qobs-P-R.txt';{nom de fichiers de r‚sultats : chronique des d‚bits observ‚s}
  YNomFicResult2= 'QSynchro.txt';{nom fichier de d‚bits synchronis‚s (prise en compte des d‚lais de propagation)}
@@ -127,6 +128,7 @@ VAR {fichiers}
  YFicResult2   : text;  {fichiers texte pour sortie de r‚sultats}
  YFicResult3   : text;  {fichier texte pour sortie de r‚sultats}
  YFicResult4   : text;
+ YFicResChrShort: text; {fichier texte pour sortie r‚sultat chronique Vobj}
  YFicTest      : text;
 
  YFicQXdef      : array[0..3,1..2] of YTypFOD;{pour QXdef0 … QXdef?, et pour sens pas chrono et sens chrono}
@@ -182,7 +184,7 @@ VAR {entiers}
  YAnFinV       : integer;
  YAnPremier    : integer;
  YChoix        : integer; {0 pour saisie clavier et autre pour lecture sur fichier (options de calcul)}
- YChoixSubProg : integer; {0 pour tout le programme, 1 pour backward simulation uniquement}
+ YChoixSubProg : integer; {0 pour tout le programme, 1 et 2 pour backward simulation uniquement}
  YCode         : integer; {code de bonne traduction de chaŒne en num‚rique}
  YComplet      : integer; {1 si d‚bit aval et d‚bits d‚cal‚s aux prises et restit. existent, 0 sinon}
  YCompteur     : integer; {rang du calcul}
diff --git a/src/PARAM.PAS b/src/PARAM.PAS
index 14b9568..446ffa3 100644
--- a/src/PARAM.PAS
+++ b/src/PARAM.PAS
@@ -55,6 +55,7 @@ procedure P_ChoixEntreeOptions;
 
  begin
 
+  YChoixSubProg:=0;
   assign(YFitext,YNomFicFin);
   {$i-}
   erase(YFitext);
diff --git a/src/VGEST.PAS b/src/VGEST.PAS
index 145e4db..94cfbc6 100644
--- a/src/VGEST.PAS
+++ b/src/VGEST.PAS
@@ -21,6 +21,7 @@ procedure Ici_Effacement;
   assign(YFitext,YRepR+YNomFicResChr1); rewrite(YFitext); close(YFitext);
   assign(YFitext,YRepR+YNomFicResChr2); rewrite(YFitext); close(YFitext);
   assign(YFitext,YRepR+YNomFicQuant); rewrite(YFitext); close(YFitext);
+  assign(YFitext,YRepR+YNomFicResChrShort); rewrite(YFitext); close(YFitext);
   for YRangLac:=1 to YNmaxLacs do
    begin
     str(YRanglac,YNum);
@@ -626,7 +627,6 @@ BEGIN
     with YDeb2 do
 
      BEGIN
-
       YJJ_MM_AAAA[0]:=B_Date(YDateEnJour[0]);
       val(copy(YJJ_MM_AAAA[0],4,2),YMois[0],YCode);
       val(copy(YJJ_MM_AAAA[0],1,2),YJour[0],YCode);
-- 
GitLab