diff --git a/example/PARAMETR/CHOIX.TXT b/example/PARAMETR/CHOIX.TXT
index 4d3fa51661781e4397b7222f569d38032aa18972..7f82718e11c80d92e71dcd2f9972a27ff25461a5 100644
--- a/example/PARAMETR/CHOIX.TXT
+++ b/example/PARAMETR/CHOIX.TXT
@@ -9,6 +9,7 @@ BATCH
 1
 4
 1
+0
 
 
 
@@ -30,4 +31,7 @@ ligne 10 : code indiquant le mode de r
                 5=visant à équilibrer en fin de pas de temps les durées Tpot d'évolution de réservoir vers état extrême (voir ligne 11) avec quantile donné des apports de chaque quantième
 ligne 11 (utilisée seulement si 4 ou 5 en ligne 10) : code indiquant la nature de Tpot :
 		1 : Tpot est la durée potentielle minimale Tpot1 de reconstitution du volume utilisable maximal (obtention de V=Vtot ou V=0, selon la nature de l'objectif (soutien ou laminage) et le sens des calculs)
-		2 : Tpot est la durée potentielle minimale Tpot2 d'épuisement du volume utilisable (obtention de V=Vtot ou V=0, selon la nature de l'objectif (soutien ou laminage) et le sens des calculs)
\ No newline at end of file
+		2 : Tpot est la durée potentielle minimale Tpot2 d'épuisement du volume utilisable (obtention de V=Vtot ou V=0, selon la nature de l'objectif (soutien ou laminage) et le sens des calculs)
+ligne 12 : code indiquant les sous-programmes à lancer:
+                0 : tous les sous-programmes
+                1 : uniquement la simulation en chronologie inverse
diff --git a/src/CALCULS3.PAS b/src/CALCULS3.PAS
index 7ba092b338b826eb78783c5a2ca23121db86bdf6..b116fa9c2110dc6199e0b20cd8f192043ae527a0 100644
--- a/src/CALCULS3.PAS
+++ b/src/CALCULS3.PAS
@@ -853,6 +853,7 @@ procedure C3_CalculChroniquesVolume;
   gotoxy(Ax-36,Ay);
   clreol;
   writeln(' : termin‚ ');
+  if YChoixSubProg=1 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 f523ff8d7a125d2167d2356f46b2367da289a546..70776c0e46d9109b51ba6b8d157d26ae0c371563 100644
--- a/src/DECLARA.PAS
+++ b/src/DECLARA.PAS
@@ -182,6 +182,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}
  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 981dcc1a2e97f8e7aabfa97c40b5f714deb56e6b..67df9007a6eb1d4dbfa6f673d19044a48590d9c7 100644
--- a/src/PARAM.PAS
+++ b/src/PARAM.PAS
@@ -102,6 +102,7 @@ procedure P_ChoixEntreeOptions;
         else
          YCodeTpot:=false;
        end;
+      readln(YFitext,YChoixSubProg);
       close(YFitext);
      end
     else
diff --git a/src/VGEST.PAS b/src/VGEST.PAS
index 9d9351636f89dd848f7ca7b7f7ca3bacec4d2fea..0bc53449459fa5fd168689756bf3ad05f91f9357 100644
--- a/src/VGEST.PAS
+++ b/src/VGEST.PAS
@@ -854,299 +854,301 @@ BEGIN
    C3_CalculChroniquesVolume;
    close(YFicSortie);
 
-   {--CALCUL DE LA PARTIE FRACTIONNAIRE DES DATES DE VOLUME, pour chaque--}
-   {--lac. Par rapport aux dates des d‚bits aval, ces dates de volume   --}
-   {--d‚cal‚es de YdecalDateQ+0.5. A cet instant dans le programme, les --}
-   {--volumes pr‚sents dans les fichiers typ‚s de r‚sultats (stock‚s    --}
-   {--juste avant, par C3_CalculChroniquesVolume), correspondent … ces  --}
-   {--dates fractionnaires allant de YDateDebut+0.5+YdecalDateQ+0.5 …   --}
-   {--YdateFin+0.5+YdecalDateQ+0.5.                                     --}
-   for YRangLac:=1 to YNbLacs do
-    begin
-     YDecalDateQ[YRanglac]:=YDecalDateQ[YrangLac]+0.5;
-     if YdecalDateQ[YrangLac] >=1 then
+   if YChoixSubProg=0 then begin
+
+    {--CALCUL DE LA PARTIE FRACTIONNAIRE DES DATES DE VOLUME, pour chaque--}
+    {--lac. Par rapport aux dates des d‚bits aval, ces dates de volume   --}
+    {--d‚cal‚es de YdecalDateQ+0.5. A cet instant dans le programme, les --}
+    {--volumes pr‚sents dans les fichiers typ‚s de r‚sultats (stock‚s    --}
+    {--juste avant, par C3_CalculChroniquesVolume), correspondent … ces  --}
+    {--dates fractionnaires allant de YDateDebut+0.5+YdecalDateQ+0.5 …   --}
+    {--YdateFin+0.5+YdecalDateQ+0.5.                                     --}
+    for YRangLac:=1 to YNbLacs do
       begin
-       YdateFinLac[YRangLac]:=YdateFinLac[YRanglac]+1;
-       YDecalDateQ[YRanglac]:=YDecaldateQ[YRangLac]-1;
+      YDecalDateQ[YRanglac]:=YDecalDateQ[YrangLac]+0.5;
+      if YdecalDateQ[YrangLac] >=1 then
+        begin
+        YdateFinLac[YRangLac]:=YdateFinLac[YRanglac]+1;
+        YDecalDateQ[YRanglac]:=YDecaldateQ[YRangLac]-1;
+        end;
       end;
-    end;
-
-   {==A PARTIR DES FICHIERS TYPES DE VOLUME A DATE FRACTIONNAIRE, CALCUL==}
-   {==DES VOLUMES A 24H ET ECRITURE DE CEUX-CI SUR LES MEMES FICHIERS   ==}
-   {==TYPES, ET ECRITURE DES RESULTATS SUR FICHIER TEXTE DES VOLUMES    ==}
-
-   {--‚criture d'en-tˆte sur fichier texte de r‚sultats des chroniques --}
-   {--de volume                                                        --}
-   Ici_EcritureEntete_Volumes;
-
-   {--ouverture des fichiers typ‚s de volume et de manque de capacit‚ pour --}
-   {--chaque lac, et  premiŠre lecture de volume Vobj … date fractionnaire --}
-   for YRangLac:=1 to YNbLacs do
-    begin
-     reset(YFicVobj[YRangLac]);
-     reset(YFicVges[YRangLac]);
-     reset(YFicVop[YRangLac]);
-     read(YFicVobj[YRanglac],YVobjAnt[YrangLac]);
-     YVobjMoyrel[1,YRangLac]:=0;
-     YVobjMoyrel[2,YRangLac]:=0;
-    end;
 
-   {--boucle sur les temps, sur la p‚riode choisie--}
-   for Yi:=YDateDebut+1 to YDateFin+1 do
+    {==A PARTIR DES FICHIERS TYPES DE VOLUME A DATE FRACTIONNAIRE, CALCUL==}
+    {==DES VOLUMES A 24H ET ECRITURE DE CEUX-CI SUR LES MEMES FICHIERS   ==}
+    {==TYPES, ET ECRITURE DES RESULTATS SUR FICHIER TEXTE DES VOLUMES    ==}
 
-    begin
+    {--‚criture d'en-tˆte sur fichier texte de r‚sultats des chroniques --}
+    {--de volume                                                        --}
+    Ici_EcritureEntete_Volumes;
 
-     {--‚criture sur fichier texte de date … la station aval--}
-     write(YFicResult4,B_Date(Yi-1),'   ');
+    {--ouverture des fichiers typ‚s de volume et de manque de capacit‚ pour --}
+    {--chaque lac, et  premiŠre lecture de volume Vobj … date fractionnaire --}
+    for YRangLac:=1 to YNbLacs do
+      begin
+      reset(YFicVobj[YRangLac]);
+      reset(YFicVges[YRangLac]);
+      reset(YFicVop[YRangLac]);
+      read(YFicVobj[YRanglac],YVobjAnt[YrangLac]);
+      YVobjMoyrel[1,YRangLac]:=0;
+      YVobjMoyrel[2,YRangLac]:=0;
+      end;
 
-     {--boucle sur les lacs--}
-     for YRangLac:=1 to YNbLacs do
+    {--boucle sur les temps, sur la p‚riode choisie--}
+    for Yi:=YDateDebut+1 to YDateFin+1 do
 
       begin
 
-       {--cas o— on n'est pas arriv‚ … la fin du fichier typ‚ de volume--}
-       if Yi<=YdateFin then
+      {--‚criture sur fichier texte de date … la station aval--}
+      write(YFicResult4,B_Date(Yi-1),'   ');
 
-        begin
-
-         {--lecture de volume … heure fractionnaire sur fichier typ‚, --}
-         {--CALCUL DU VOLUME A 24h par interpolation lin‚aire et      --}
-         {--‚criture de celui-ci sur mˆme fichier typ‚                --}
-         read(YFicVobj[YRangLac],YVobjNouv[Yranglac]);
-         YVobj[YRangLac]:=YVobjAnt[YrangLac]+(YVobjNouv[YRanglac]-YVobjAnt[Yranglac])*(1-YDecalDateQ[YRangLac]);
-         seek(YFicVobj[YRangLac],filepos(YFicVobj[YRangLac])-2);
-         write(YFicVobj[YRanglac],YVobj[YRangLac]);
-         seek(YficVobj[YRangLac],filepos(YficVobj[Yranglac])+1);
-         YVobjMoyRel[1,YRangLac]:=YVobjMoyRel[1,YRangLac]+YVobj[YRangLac];
-        end
+      {--boucle sur les lacs--}
+      for YRangLac:=1 to YNbLacs do
 
-       {--cas o— on est arriv‚ … la fin du fichier typ‚ de volume--}
-       else
         begin
-         YVobjNouv[YRanglac]:=Ylacune;
-         YVobj[YRangLac]:=YLacune;
-        end;
 
-       {--lecture de volume de gestion Vobj sur fichier typ‚--}
-       read(YFicVges[YRangLac],YVges[YRangLac]);
-       read(YFicVop[YRangLac],YVop[YRangLac]);
-       YVobjMoyRel[2,YRangLac]:=YVobjMoyRel[2,YRangLac]+YVges[YRangLac];
-
-       {--‚criture sur fichier texte de la date lac, du volume Vobj … date--}
-       {--fractionnaire et … 24h, des volumes Vges et Vop … date          --}
-       {--fractionnaire                                                   --}
-       if YAbsRel=1 then
-        begin
-         write(YFicResult4,B_Date(Yi-1+YDateFinLac[YRanglac]-YDateFin),' ',
-                         YVobjAnt[YRanglac]:15:2,'   ');
-         if YVobj[YRangLac]<>YLacune then
-          write(YFicResult4,YVobj[YRangLac]:15:2)
-         else
-          write(YFicResult4,'               ');
-         write(YFicResult4,'   ',YVges[YRangLac]:15:2,'   ',YVop[YRangLac]:15:2,'   ');
-        end
-       else
-        begin
-         write(YFicResult4,B_Date(Yi-1+YDateFinLac[YRanglac]-YDateFin),' ',
-                         (YVobjAnt[YRanglac]/YVtot[YRangLac]):15:13,'   ');
-         if YVobj[YRangLac]<>YLacune then
-          write(YficResult4,(YVobj[YRangLac]/YVtot[YRangLac]):15:13)
-         else
-          write(YFicResult4,'               ');
-         write(YFicResult4,'   ',(YVges[YRangLac]/YVtot[YRangLac]):15:13,'   ',(YVop[YRangLac]/YVtot[YRangLac]):15:13,'   ');
-        end;
-       {--incr‚mentation du volume … date fractionnaire--}
-       YVobjAnt[YRanglac]:=YVobjNouv[YRangLac];
+        {--cas o— on n'est pas arriv‚ … la fin du fichier typ‚ de volume--}
+        if Yi<=YdateFin then
+
+          begin
+
+          {--lecture de volume … heure fractionnaire sur fichier typ‚, --}
+          {--CALCUL DU VOLUME A 24h par interpolation lin‚aire et      --}
+          {--‚criture de celui-ci sur mˆme fichier typ‚                --}
+          read(YFicVobj[YRangLac],YVobjNouv[Yranglac]);
+          YVobj[YRangLac]:=YVobjAnt[YrangLac]+(YVobjNouv[YRanglac]-YVobjAnt[Yranglac])*(1-YDecalDateQ[YRangLac]);
+          seek(YFicVobj[YRangLac],filepos(YFicVobj[YRangLac])-2);
+          write(YFicVobj[YRanglac],YVobj[YRangLac]);
+          seek(YficVobj[YRangLac],filepos(YficVobj[Yranglac])+1);
+          YVobjMoyRel[1,YRangLac]:=YVobjMoyRel[1,YRangLac]+YVobj[YRangLac];
+          end
+
+        {--cas o— on est arriv‚ … la fin du fichier typ‚ de volume--}
+        else
+          begin
+          YVobjNouv[YRanglac]:=Ylacune;
+          YVobj[YRangLac]:=YLacune;
+          end;
+
+        {--lecture de volume de gestion Vobj sur fichier typ‚--}
+        read(YFicVges[YRangLac],YVges[YRangLac]);
+        read(YFicVop[YRangLac],YVop[YRangLac]);
+        YVobjMoyRel[2,YRangLac]:=YVobjMoyRel[2,YRangLac]+YVges[YRangLac];
+
+        {--‚criture sur fichier texte de la date lac, du volume Vobj … date--}
+        {--fractionnaire et … 24h, des volumes Vges et Vop … date          --}
+        {--fractionnaire                                                   --}
+        if YAbsRel=1 then
+          begin
+          write(YFicResult4,B_Date(Yi-1+YDateFinLac[YRanglac]-YDateFin),' ',
+                          YVobjAnt[YRanglac]:15:2,'   ');
+          if YVobj[YRangLac]<>YLacune then
+            write(YFicResult4,YVobj[YRangLac]:15:2)
+          else
+            write(YFicResult4,'               ');
+          write(YFicResult4,'   ',YVges[YRangLac]:15:2,'   ',YVop[YRangLac]:15:2,'   ');
+          end
+        else
+          begin
+          write(YFicResult4,B_Date(Yi-1+YDateFinLac[YRanglac]-YDateFin),' ',
+                          (YVobjAnt[YRanglac]/YVtot[YRangLac]):15:13,'   ');
+          if YVobj[YRangLac]<>YLacune then
+            write(YficResult4,(YVobj[YRangLac]/YVtot[YRangLac]):15:13)
+          else
+            write(YFicResult4,'               ');
+          write(YFicResult4,'   ',(YVges[YRangLac]/YVtot[YRangLac]):15:13,'   ',(YVop[YRangLac]/YVtot[YRangLac]):15:13,'   ');
+          end;
+        {--incr‚mentation du volume … date fractionnaire--}
+        YVobjAnt[YRanglac]:=YVobjNouv[YRangLac];
 
-      end; {fin de boucle sur les lacs--}
+        end; {fin de boucle sur les lacs--}
 
-     {--passage … la ligne suivante dans le fichier texte de r‚sultats--}
-     writeln(YFicResult4);
+      {--passage … la ligne suivante dans le fichier texte de r‚sultats--}
+      writeln(YFicResult4);
 
-    end; {fin de boucle sur les temps}
+      end; {fin de boucle sur les temps}
 
-   {--fermeture des fichiers typ‚s de volume et de manque de capacit‚, --}
-   {--ainsi que du fichier texte de r‚sultats de chronique de volume --}
-   for Yranglac:=1 to yNbLacs do
-    begin
-     close(YFicVobj[YRangLac]);
-     close(YFicVges[YRanglac]);
-     YVobjMoyRel[1,YRangLac]:=YVobjMoyRel[1,YRangLac]/(YVtot[YrangLac]*(YdateFin-YDateDebut));
-     YVobjMoyRel[2,YRangLac]:=YVobjMoyRel[2,YRangLac]/(YVtot[YrangLac]*(YdateFin-YDateDebut+1));
-    end;
-   close(YFicResult4);
+    {--fermeture des fichiers typ‚s de volume et de manque de capacit‚, --}
+    {--ainsi que du fichier texte de r‚sultats de chronique de volume --}
+    for Yranglac:=1 to yNbLacs do
+      begin
+      close(YFicVobj[YRangLac]);
+      close(YFicVges[YRanglac]);
+      YVobjMoyRel[1,YRangLac]:=YVobjMoyRel[1,YRangLac]/(YVtot[YrangLac]*(YdateFin-YDateDebut));
+      YVobjMoyRel[2,YRangLac]:=YVobjMoyRel[2,YRangLac]/(YVtot[YrangLac]*(YdateFin-YDateDebut+1));
+      end;
+    close(YFicResult4);
 
-   {--remplacement des valeurs … date fractionnaire par les valeurs … 24H--}
-   {--dans le fichier typ‚ des volumes Vop                               --}
-   for YRanglac:=1 to YNbLacs do
-    begin
-     reset(YficVop[YRangLac]);
-     read(YFicVop[YRanglac],YVopAnt);
-     for Yi:=YDateDebut+1 to YDateFin do
+    {--remplacement des valeurs … date fractionnaire par les valeurs … 24H--}
+    {--dans le fichier typ‚ des volumes Vop                               --}
+    for YRanglac:=1 to YNbLacs do
       begin
-       read(YFicVop[YRangLac],YVopNouv);
-       YVop[YRangLac]:=YVopAnt+(YVopNouv-YVopAnt)*(1-YDecalDateQ[YRangLac]);
-       seek(YFicVop[YRangLac],filepos(YFicVop[YRangLac])-2);
-       write(YFicVop[YRanglac],YVop[YRangLac]);
-       seek(YficVop[YRangLac],filepos(YficVop[Yranglac])+1);
-       YVopAnt:=YVopNouv;
+      reset(YficVop[YRangLac]);
+      read(YFicVop[YRanglac],YVopAnt);
+      for Yi:=YDateDebut+1 to YDateFin do
+        begin
+        read(YFicVop[YRangLac],YVopNouv);
+        YVop[YRangLac]:=YVopAnt+(YVopNouv-YVopAnt)*(1-YDecalDateQ[YRangLac]);
+        seek(YFicVop[YRangLac],filepos(YFicVop[YRangLac])-2);
+        write(YFicVop[YRanglac],YVop[YRangLac]);
+        seek(YficVop[YRangLac],filepos(YficVop[Yranglac])+1);
+        YVopAnt:=YVopNouv;
+        end;
+      close(YFicVop[Yranglac]);
       end;
-     close(YFicVop[Yranglac]);
-    end;
 
-   {Ecriture sur fichier texte de r‚sultats concernant les d‚faillances de }
-   {gestion (volumes manquants Vdef dans les r‚servoirs et d‚faut de d‚bit }
-   {… la station objectif aval) pour une exploitation visant … optimiser la}
-   {r‚partition des taches entre r‚servoirs                                }
-   E_Message12;
-   Ici_EditionBilan;
+    {Ecriture sur fichier texte de r‚sultats concernant les d‚faillances de }
+    {gestion (volumes manquants Vdef dans les r‚servoirs et d‚faut de d‚bit }
+    {… la station objectif aval) pour une exploitation visant … optimiser la}
+    {r‚partition des taches entre r‚servoirs                                }
+    E_Message12;
+    Ici_EditionBilan;
 
-   {--message ‚cran--}
-   E_Message9;
+    {--message ‚cran--}
+    E_Message9;
 
-   {==EDITION DES RESULTATS CLASSES ET ISOFREQUENCE DE VOLUME ET DE ==}
-   {==DEBIT DEFAILLANT                                              ==}
+    {==EDITION DES RESULTATS CLASSES ET ISOFREQUENCE DE VOLUME ET DE ==}
+    {==DEBIT DEFAILLANT                                              ==}
 
-   {--boucle sur les r‚servoirs--}
-   for YrangLac:=1 to YNbLacs do
-    begin
+    {--boucle sur les r‚servoirs--}
+    for YrangLac:=1 to YNbLacs do
+      begin
 
-     {--calcul de la date de d‚but de s‚rie des volumes … 24h--}
-     YDateDebutV:=YDateDebut+YDateFinLac[YRanglac]-YDateFin;
+      {--calcul de la date de d‚but de s‚rie des volumes … 24h--}
+      YDateDebutV:=YDateDebut+YDateFinLac[YRanglac]-YDateFin;
 
-     {--date de fin de s‚rie des volumes … 24h : on perd une valeur par --}
-     {--rapport … la s‚rie des volumes aux heures brutes du r‚servoir,  --}
-     {--… cause des interpolations lin‚aires                            --}
-     YDateFinV:=YDateFinLac[YRangLac]-1;
+      {--date de fin de s‚rie des volumes … 24h : on perd une valeur par --}
+      {--rapport … la s‚rie des volumes aux heures brutes du r‚servoir,  --}
+      {--… cause des interpolations lin‚aires                            --}
+      YDateFinV:=YDateFinLac[YRangLac]-1;
 
-     {--extension destin‚e au nom des fichiers texte de r‚sultats--}
-     str(YRangLac,Yextension);
+      {--extension destin‚e au nom des fichiers texte de r‚sultats--}
+      str(YRangLac,Yextension);
 
-     {--calcul et ‚criture sur fichier texte des r‚sultats isofr‚quence   --}
-     {--des volumes limites Vobj (… 24 H) … respecter dans le r‚servoir   --}
-     assign(YFicResult4,YRepR+YNomFicResultVobj+YExtension+YExIsofreq);
-     if YTypeObjectif=0 then
-      begin
-       YChaine:='Volume d''eau minimal Vobj';
-       if YAbsRel=1 then
-        YChaine:=YChaine+' (m3)'
-       else
-        YChaine:=YChaine+'/Vtot';
-       YChaine:=YChaine+' en dessous duquel il ne faut pas descendre'
-      end
-     else
-      begin
-       YChaine:='Volume d''eau maximal Vobj';
-       if YAbsRel=1 then
+      {--calcul et ‚criture sur fichier texte des r‚sultats isofr‚quence   --}
+      {--des volumes limites Vobj (… 24 H) … respecter dans le r‚servoir   --}
+      assign(YFicResult4,YRepR+YNomFicResultVobj+YExtension+YExIsofreq);
+      if YTypeObjectif=0 then
+        begin
+        YChaine:='Volume d''eau minimal Vobj';
+        if YAbsRel=1 then
+          YChaine:=YChaine+' (m3)'
+        else
+          YChaine:=YChaine+'/Vtot';
+        YChaine:=YChaine+' en dessous duquel il ne faut pas descendre'
+        end
+      else
+        begin
+        YChaine:='Volume d''eau maximal Vobj';
+        if YAbsRel=1 then
+          YChaine:=YChaine+' (m3)'
+        else
+          YChaine:=YChaine+'/Vtot';
+        YChaine:=YChaine+' qu''il ne faut pas depasser';
+        end;
+      YChaine:=YChaine+' (a 24h) dans le reservoir '+YNomLac[YRangLac]
+                +' pour pouvoir satisfaire du mieux possible l''objectif aval par la suite'
+                +' (en evitant au maximum les defaillances causees par un stock ';
+      if YTypeObjectif=0 then
+        YChaine:=YChaine+'trop vide)'
+      else
+        YChaine:=YChaine+'trop plein)';
+      C2_ISOFREQ(YdateDebutV,YDateDebutV,YDateFinV,YFicVobj[YRangLac],Ychaine,YNorme[YRangLac],YAbsRel);
+
+      {--calcul et ‚criture sur fichier texte des r‚sultats isofr‚quence   --}
+      {--des volumes limites Vop (… 24H) … respecter dans le r‚servoir     --}
+      assign(YFicResult4,YRepR+YNomFicResultVop+YExtension+YExIsofreq);
+      if YTypeObjectif=0 then
+        YChaine:='minimale'
+      else
+        YChaine:='maximale';
+      YChaine:='Valeur '+YChaine+' Vop';
+      if YAbsRel=1 then
         YChaine:=YChaine+' (m3)'
-       else
+      else
         YChaine:=YChaine+'/Vtot';
-       YChaine:=YChaine+' qu''il ne faut pas depasser';
-      end;
-     YChaine:=YChaine+' (a 24h) dans le reservoir '+YNomLac[YRangLac]
-              +' pour pouvoir satisfaire du mieux possible l''objectif aval par la suite'
-              +' (en evitant au maximum les defaillances causees par un stock ';
-     if YTypeObjectif=0 then
-      YChaine:=YChaine+'trop vide)'
-     else
-      YChaine:=YChaine+'trop plein)';
-     C2_ISOFREQ(YdateDebutV,YDateDebutV,YDateFinV,YFicVobj[YRangLac],Ychaine,YNorme[YRangLac],YAbsRel);
-
-     {--calcul et ‚criture sur fichier texte des r‚sultats isofr‚quence   --}
-     {--des volumes limites Vop (… 24H) … respecter dans le r‚servoir     --}
-     assign(YFicResult4,YRepR+YNomFicResultVop+YExtension+YExIsofreq);
-     if YTypeObjectif=0 then
-      YChaine:='minimale'
-     else
-      YChaine:='maximale';
-     YChaine:='Valeur '+YChaine+' Vop';
-     if YAbsRel=1 then
-      YChaine:=YChaine+' (m3)'
-     else
-      YChaine:=YChaine+'/Vtot';
-     YChaine:=YChaine+' du volume dans le reservoir '+YNomLac[YRangLac]+' (a 24h), '
-              +'pouvant etre produit quand on vise d''abord la meilleure satisfaction possible de '
-              +'l''objectif commun dans l''immediat, puis sa meilleure satisfaction possible '
-              +'par la suite';
-     C2_ISOFREQ(YdateDebutV,YDateDebutV,YDateFinV,YFicVop[YRangLac],Ychaine,YNorme[YRangLac],YAbsRel);
-
-    end; {fin de boucle sur les r‚servoirs}
-
-   {--calcul et ‚criture sur fichier texte des r‚sultats isofr‚quence   --}
-   {--des manques globaux de capacit‚ dans les r‚servoirs, calcul‚s en  --}
-   {--chrono inverse                                                    --}
-   assign(YFicResult4,YRepR+YNomFicResultM+'A'+YExIsofreq);
-   YChaine:='Manque global Vdef';
-   if YAbsRel=2 then
-    YChaine:=YChaine+'/somme(Vtot)';
-   YChaine:=YChaine+' de capacite des reservoirs (';
-   if YabsRel=1 then
-    YChaine:=YChaine+'m3, ';
-   yChaine:=YChaine+'date aval, calcul en chronologie inverse), responsable '
-   +'de defaillances QXdef2 futures s''ajoutant aux inevitables absolues QXdef0 : capacite supplementaire necessaire ';
-   if YTypeObjectif=0 then
-    YChaine:=YChaine+'au dessus de la crete'
-   else
-    YChaine:=YChaine+'en dessous du fond';
-   if YAbsRel=1 then
-    C2_ISOFREQ(YdateDebut,YDateDebut,YDateFin,YFicVdef[1],YChaine,YNorme[0],1)
-   else
-    C2_ISOFREQ(YdateDebut,YDateDebut,YDateFin,YFicVdef[1],YChaine,YNorme[0],4);
-
-   {--calcul et ‚criture sur fichier texte des r‚sultats isofr‚quence   --}
-   {--des manques globaux de capacit‚ dans les r‚servoirs, calcul‚s en  --}
-   {--sens chronologique                                                --}
-   assign(YFicResult4,YRepR+YNomFicResultM+'B'+YExIsofreq);
-   YChaine:='Manque global Vdef';
-   if YAbsRel=2 then
-    YChaine:=YChaine+'/somme(Vtot)';
-   YChaine:=YChaine+'de capacite des reservoirs (';
-   if YAbsRel=1 then
-    YChaine:=YChaine+'m3, ';
-   YChaine:=YChaine+'date aval, calcul en sens chronologique), responsable '
-   +'de defaillances QXdef2 passees s''ajoutant aux inevitables absolues QXdef0 : capacite supplementaire necessaire ';
-   if YTypeObjectif=0 then
-    YChaine:=YChaine+'en dessous du fond'
-   else
-    YChaine:=YChaine+'au dessus de la crete';
-   if YAbsRel=1 then
-    C2_ISOFREQ(YdateDebut,YDateDebut,YDateFin,YFicVdef[2],YChaine,YNorme[0],1)
-   else
-    C2_ISOFREQ(YdateDebut,YDateDebut,YDateFin,YFicVdef[2],YChaine,YNorme[0],4);
+      YChaine:=YChaine+' du volume dans le reservoir '+YNomLac[YRangLac]+' (a 24h), '
+                +'pouvant etre produit quand on vise d''abord la meilleure satisfaction possible de '
+                +'l''objectif commun dans l''immediat, puis sa meilleure satisfaction possible '
+                +'par la suite';
+      C2_ISOFREQ(YdateDebutV,YDateDebutV,YDateFinV,YFicVop[YRangLac],Ychaine,YNorme[YRangLac],YAbsRel);
+
+      end; {fin de boucle sur les r‚servoirs}
+
+    {--calcul et ‚criture sur fichier texte des r‚sultats isofr‚quence   --}
+    {--des manques globaux de capacit‚ dans les r‚servoirs, calcul‚s en  --}
+    {--chrono inverse                                                    --}
+    assign(YFicResult4,YRepR+YNomFicResultM+'A'+YExIsofreq);
+    YChaine:='Manque global Vdef';
+    if YAbsRel=2 then
+      YChaine:=YChaine+'/somme(Vtot)';
+    YChaine:=YChaine+' de capacite des reservoirs (';
+    if YabsRel=1 then
+      YChaine:=YChaine+'m3, ';
+    yChaine:=YChaine+'date aval, calcul en chronologie inverse), responsable '
+    +'de defaillances QXdef2 futures s''ajoutant aux inevitables absolues QXdef0 : capacite supplementaire necessaire ';
+    if YTypeObjectif=0 then
+      YChaine:=YChaine+'au dessus de la crete'
+    else
+      YChaine:=YChaine+'en dessous du fond';
+    if YAbsRel=1 then
+      C2_ISOFREQ(YdateDebut,YDateDebut,YDateFin,YFicVdef[1],YChaine,YNorme[0],1)
+    else
+      C2_ISOFREQ(YdateDebut,YDateDebut,YDateFin,YFicVdef[1],YChaine,YNorme[0],4);
+
+    {--calcul et ‚criture sur fichier texte des r‚sultats isofr‚quence   --}
+    {--des manques globaux de capacit‚ dans les r‚servoirs, calcul‚s en  --}
+    {--sens chronologique                                                --}
+    assign(YFicResult4,YRepR+YNomFicResultM+'B'+YExIsofreq);
+    YChaine:='Manque global Vdef';
+    if YAbsRel=2 then
+      YChaine:=YChaine+'/somme(Vtot)';
+    YChaine:=YChaine+'de capacite des reservoirs (';
+    if YAbsRel=1 then
+      YChaine:=YChaine+'m3, ';
+    YChaine:=YChaine+'date aval, calcul en sens chronologique), responsable '
+    +'de defaillances QXdef2 passees s''ajoutant aux inevitables absolues QXdef0 : capacite supplementaire necessaire ';
+    if YTypeObjectif=0 then
+      YChaine:=YChaine+'en dessous du fond'
+    else
+      YChaine:=YChaine+'au dessus de la crete';
+    if YAbsRel=1 then
+      C2_ISOFREQ(YdateDebut,YDateDebut,YDateFin,YFicVdef[2],YChaine,YNorme[0],1)
+    else
+      C2_ISOFREQ(YdateDebut,YDateDebut,YDateFin,YFicVdef[2],YChaine,YNorme[0],4);
 
-   {--r‚sultats de d‚faillances de d‚bit in‚vitables absolus (mˆme avec des--}
-   {--capacit‚s de r‚servoirs sans limite                                  --}
-   assign(YFicResult4,YRepR+YNomFicResDef+'0B'+YExIsofreq);
-   if YTypeObjectif=0 then
-    YChaine:='Manque'
-   else
-    YChaine:='Exces';
-   YChaine:=YChaine+' de debit inevitable absolu QXdef0 a la station aval du systeme (m3/s, date aval, calcul en sens chronologique) par rapport a '
-             +'l''hydrogramme objectif (du aux contraintes physiques et '
-             +'consignes de gestion aux prises et restitutions des reservoirs)';
-   C2_ISOFREQ(YDateDebut,YDateDebut,YDateFin,YficQXdef[0,2],YChaine,1,3);
-
-   {--r‚sultats de d‚faillances de d‚bit in‚vitables --}
-   assign(YFicResult4,YRepR+YNomFicResDef+'1B'+YExIsofreq);
-   if YTypeObjectif=0 then
-    YChaine:='Manque'
-   else
-    YChaine:='Exces';
-   YChaine:=YChaine+' de debit QXdef1 a la station aval du systeme (m3/s, date aval, calcul en sens chronologique) par rapport a l''objectif '
-             +'(du a la fois aux contraintes physiques et consignes aux prises et restitutions, et au manque de capacite des reservoir)';
-   C2_ISOFREQ(YDateDebut,YDateDebut,YDateFin,YficQXdef[1,2],YChaine,1,3);
-
-   {--message ‚cran et stat du calcul--}
-   assign(YFicSortie, YRepR+YNomFicSortie);
-   append(YFicSortie);
-   writeln(YFicSortie);
-   P_EcritureSeparation;
-   writeln(YFicSortie,'FIN DU CALCUL (LES ETAPES SUCCESSIVES SE SONT DEROULEES NORMALEMENT)');
-   close(YFicSortie);
-   E_Message10;
+    {--r‚sultats de d‚faillances de d‚bit in‚vitables absolus (mˆme avec des--}
+    {--capacit‚s de r‚servoirs sans limite                                  --}
+    assign(YFicResult4,YRepR+YNomFicResDef+'0B'+YExIsofreq);
+    if YTypeObjectif=0 then
+      YChaine:='Manque'
+    else
+      YChaine:='Exces';
+    YChaine:=YChaine+' de debit inevitable absolu QXdef0 a la station aval du systeme (m3/s, date aval, calcul en sens chronologique) par rapport a '
+              +'l''hydrogramme objectif (du aux contraintes physiques et '
+              +'consignes de gestion aux prises et restitutions des reservoirs)';
+    C2_ISOFREQ(YDateDebut,YDateDebut,YDateFin,YficQXdef[0,2],YChaine,1,3);
+
+    {--r‚sultats de d‚faillances de d‚bit in‚vitables --}
+    assign(YFicResult4,YRepR+YNomFicResDef+'1B'+YExIsofreq);
+    if YTypeObjectif=0 then
+      YChaine:='Manque'
+    else
+      YChaine:='Exces';
+    YChaine:=YChaine+' de debit QXdef1 a la station aval du systeme (m3/s, date aval, calcul en sens chronologique) par rapport a l''objectif '
+              +'(du a la fois aux contraintes physiques et consignes aux prises et restitutions, et au manque de capacite des reservoir)';
+    C2_ISOFREQ(YDateDebut,YDateDebut,YDateFin,YficQXdef[1,2],YChaine,1,3);
+
+    {--message ‚cran et stat du calcul--}
+    assign(YFicSortie, YRepR+YNomFicSortie);
+    append(YFicSortie);
+    writeln(YFicSortie);
+    P_EcritureSeparation;
+    writeln(YFicSortie,'FIN DU CALCUL (LES ETAPES SUCCESSIVES SE SONT DEROULEES NORMALEMENT)');
+    close(YFicSortie);
+    E_Message10;
 
+    end {if YChoixSubProg=0}
   end {fin du cas o— on fait les calculs}
-
  else {cas o— les calculs n'ont pas pu ˆtre faits}
   if YSaisie then
    E_Message11;