Diff for /rpl/src/evaluation.c between versions 1.56 and 1.57

version 1.56, 2012/09/15 12:57:09 version 1.57, 2012/09/29 17:53:02
Line 51  evaluation(struct_processus *s_etat_proc Line 51  evaluation(struct_processus *s_etat_proc
   
     logical1                        drapeau_then;      logical1                        drapeau_then;
     logical1                        erreur_evaluation;      logical1                        erreur_evaluation;
       logical1                        presence_compteur;
     logical1                        presence_egalite;      logical1                        presence_egalite;
     logical1                        presence_fonction;      logical1                        presence_fonction;
     logical1                        presence_variable;      logical1                        presence_variable;
Line 912  evaluation(struct_processus *s_etat_proc Line 913  evaluation(struct_processus *s_etat_proc
                                                 TEST(instruction_do) ||                                                  TEST(instruction_do) ||
                                                 TEST(instruction_while) ||                                                  TEST(instruction_while) ||
                                                 TEST(instruction_for) ||                                                  TEST(instruction_for) ||
                                                   TEST(instruction_forall) ||
                                                 TEST(instruction_start) ||                                                  TEST(instruction_start) ||
                                                 TEST(instruction_select) ||                                                  TEST(instruction_select) ||
                                                 TEST(instruction_case) ||                                                  TEST(instruction_case) ||
Line 953  evaluation(struct_processus *s_etat_proc Line 955  evaluation(struct_processus *s_etat_proc
                                                     .erreur_execution =                                                      .erreur_execution =
                                                     registre_erreur_execution;                                                      registre_erreur_execution;
                                             }                                              }
                                               else if (TEST(instruction_for) ||
                                                       TEST(instruction_start))
                                               {
                                                   empilement_pile_systeme(
                                                           s_etat_processus);
   
                                                   if ((*s_etat_processus)
                                                           .erreur_systeme != d_es)
                                                   {
                                                       if (presence_egalite ==
                                                               d_vrai)
                                                       {
                                                           liberation(
                                                               s_etat_processus,
                                                               s_objet_evalue);
                                                       }
   
                                                       (*s_etat_processus)
                                                           .instruction_courante =
                                                           instruction_courante;
                                                       return(d_erreur);
                                                   }
   
                                                   (*(*s_etat_processus)
                                                           .l_base_pile_systeme)
                                                           .type_cloture = 'L';
                                               }
                                             else                                              else
                                             {                                              {
                                                 empilement_pile_systeme(                                                  empilement_pile_systeme(
Line 1016  evaluation(struct_processus *s_etat_proc Line 1045  evaluation(struct_processus *s_etat_proc
                                                     .erreur_execution =                                                      .erreur_execution =
                                                     registre_erreur_execution;                                                      registre_erreur_execution;
                                             }                                              }
                                               else if ((TEST(instruction_next) ||
                                                       TEST(instruction_step)) &&
                                                       ((*(*s_etat_processus)
                                                       .l_base_pile_systeme)
                                                       .type_cloture != 'L'))
                                               {
                                                   /*
                                                    * Libération des compteurs
                                                    * de boucle
                                                    */
   
                                                   presence_compteur =
                                                       ((*(*s_etat_processus)
                                                       .l_base_pile_systeme)
                                                       .type_cloture == 'F')
                                                       ? d_vrai : d_faux;
   
                                                   if (((*(*s_etat_processus)
                                                       .l_base_pile_systeme)
                                                       .type_cloture != 'S') &&
                                                       (presence_compteur ==
                                                       d_faux))
                                                   {
                                                       (*s_etat_processus)
                                                   .erreur_execution =
                                                   d_ex_erreur_traitement_boucle;
   
                                                       if (presence_egalite ==
                                                               d_vrai)
                                                       {
                                                           liberation(
                                                               s_etat_processus,
                                                               s_objet_evalue);
                                                       }
   
                                                       (*s_etat_processus)
                                                           .instruction_courante =
                                                           instruction_courante;
                                                       return(d_erreur);
                                                   }
   
                                                   if (presence_compteur == d_vrai)
                                                   {
                                                       if (recherche_variable(
                                                           s_etat_processus,
                                                           (*(*s_etat_processus)
                                                           .l_base_pile_systeme)
                                                           .nom_variable) ==
                                                           d_faux)
                                                       {
                                                           (*s_etat_processus)
                                                   .erreur_systeme = d_es;
                                                           (*s_etat_processus)
                                                   .erreur_execution =
                                                   d_ex_erreur_traitement_boucle;
   
                                                           if (presence_egalite ==
                                                                   d_vrai)
                                                           {
                                                               liberation(
                                                               s_etat_processus,
                                                               s_objet_evalue);
                                                           }
   
                                                           (*s_etat_processus)
                                                           .instruction_courante =
                                                           instruction_courante;
                                                           return(d_erreur);
                                                       }
   
                                                       if ((*(*s_etat_processus)
                                                       .pointeur_variable_courante)
                                                       .objet == NULL)
                                                       {
                                                           (*s_etat_processus)
                                                           .erreur_systeme = d_es;
                                                           (*s_etat_processus)
                                                           .erreur_execution =
                                                           d_ex_variable_partagee;
   
                                                           if (presence_egalite ==
                                                                   d_vrai)
                                                           {
                                                               liberation(
                                                               s_etat_processus,
                                                               s_objet_evalue);
                                                           }
   
                                                           (*s_etat_processus)
                                                           .instruction_courante =
                                                           instruction_courante;
                                                           return(d_erreur);
                                                       }
   
                                                       (*s_etat_processus)
                                                           .niveau_courant--;
   
                                                       if (
                                                       retrait_variable_par_niveau(
                                                       s_etat_processus) ==
                                                       d_erreur)
                                                       {
                                                           if (presence_egalite ==
                                                                   d_vrai)
                                                           {
                                                               liberation(
                                                               s_etat_processus,
                                                               s_objet_evalue);
                                                           }
   
                                                           (*s_etat_processus)
                                                           .instruction_courante =
                                                           instruction_courante;
                                                           return(d_erreur);
                                                       }
                                                   }
   
                                                   depilement_pile_systeme(
                                                           s_etat_processus);
                                               }
                                             else                                              else
                                             {                                              {
                                                 // Traitement spécifique pour                                                  // Traitement spécifique pour
Line 1065  evaluation(struct_processus *s_etat_proc Line 1214  evaluation(struct_processus *s_etat_proc
                                                         instruction_courante;                                                          instruction_courante;
                                                         return(d_erreur);                                                          return(d_erreur);
                                                     }                                                      }
   
                                                       (*s_etat_processus)
                                                           .sections_critiques--;
                                                 }                                                  }
   
                                                 depilement_pile_systeme(                                                  depilement_pile_systeme(
Line 1150  evaluation(struct_processus *s_etat_proc Line 1302  evaluation(struct_processus *s_etat_proc
                                                 TEST(instruction_do) ||                                                  TEST(instruction_do) ||
                                                 TEST(instruction_while) ||                                                  TEST(instruction_while) ||
                                                 TEST(instruction_for) ||                                                  TEST(instruction_for) ||
                                                   TEST(instruction_forall) ||
                                                 TEST(instruction_start) ||                                                  TEST(instruction_start) ||
                                                 TEST(instruction_select) ||                                                  TEST(instruction_select) ||
                                                 TEST(instruction_case) ||                                                  TEST(instruction_case) ||
Line 1178  evaluation(struct_processus *s_etat_proc Line 1331  evaluation(struct_processus *s_etat_proc
                                                     return(d_erreur);                                                      return(d_erreur);
                                                 }                                                  }
                                             }                                              }
                                               else if (TEST(instruction_for) ||
                                                       TEST(instruction_start))
                                               {
                                                   empilement_pile_systeme(
                                                           s_etat_processus);
   
                                                   if ((*s_etat_processus)
                                                           .erreur_systeme != d_es)
                                                   {
                                                       if (presence_egalite ==
                                                               d_vrai)
                                                       {
                                                           liberation(
                                                               s_etat_processus,
                                                               s_objet_evalue);
                                                       }
   
                                                       (*s_etat_processus)
                                                           .instruction_courante =
                                                           instruction_courante;
                                                       return(d_erreur);
                                                   }
   
                                                   (*(*s_etat_processus)
                                                           .l_base_pile_systeme)
                                                           .type_cloture = 'L';
                                               }
                                             else                                              else
                                             {                                              {
                                                 empilement_pile_systeme(                                                  empilement_pile_systeme(
Line 1228  evaluation(struct_processus *s_etat_proc Line 1408  evaluation(struct_processus *s_etat_proc
                                                     return(d_erreur);                                                      return(d_erreur);
                                                 }                                                  }
                                             }                                              }
                                               else if ((TEST(instruction_next) ||
                                                       TEST(instruction_step)) &&
                                                       ((*(*s_etat_processus)
                                                       .l_base_pile_systeme)
                                                       .type_cloture != 'L'))
                                               {
                                                   /*
                                                    * Libération des compteurs
                                                    * de boucle
                                                    */
   
                                                   presence_compteur =
                                                       ((*(*s_etat_processus)
                                                       .l_base_pile_systeme)
                                                       .type_cloture == 'F')
                                                       ? d_vrai : d_faux;
   
                                                   if (((*(*s_etat_processus)
                                                       .l_base_pile_systeme)
                                                       .type_cloture != 'S') &&
                                                       (presence_compteur ==
                                                       d_faux))
                                                   {
                                                       (*s_etat_processus)
                                                   .erreur_execution =
                                                   d_ex_erreur_traitement_boucle;
   
                                                       if (presence_egalite ==
                                                               d_vrai)
                                                       {
                                                           liberation(
                                                               s_etat_processus,
                                                               s_objet_evalue);
                                                       }
   
                                                       (*s_etat_processus)
                                                           .instruction_courante =
                                                           instruction_courante;
                                                       return(d_erreur);
                                                   }
   
                                                   if (presence_compteur == d_vrai)
                                                   {
                                                       if (recherche_variable(
                                                           s_etat_processus,
                                                           (*(*s_etat_processus)
                                                           .l_base_pile_systeme)
                                                           .nom_variable) ==
                                                           d_faux)
                                                       {
                                                           (*s_etat_processus)
                                                   .erreur_systeme = d_es;
                                                           (*s_etat_processus)
                                                   .erreur_execution =
                                                   d_ex_erreur_traitement_boucle;
   
                                                           if (presence_egalite ==
                                                                   d_vrai)
                                                           {
                                                               liberation(
                                                               s_etat_processus,
                                                               s_objet_evalue);
                                                           }
   
                                                           (*s_etat_processus)
                                                           .instruction_courante =
                                                           instruction_courante;
                                                           return(d_erreur);
                                                       }
   
                                                       if ((*(*s_etat_processus)
                                                       .pointeur_variable_courante)
                                                       .objet == NULL)
                                                       {
                                                           (*s_etat_processus)
                                                           .erreur_systeme = d_es;
                                                           (*s_etat_processus)
                                                           .erreur_execution =
                                                           d_ex_variable_partagee;
   
                                                           if (presence_egalite ==
                                                                   d_vrai)
                                                           {
                                                               liberation(
                                                               s_etat_processus,
                                                               s_objet_evalue);
                                                           }
   
                                                           (*s_etat_processus)
                                                           .instruction_courante =
                                                           instruction_courante;
                                                           return(d_erreur);
                                                       }
   
                                                       (*s_etat_processus)
                                                           .niveau_courant--;
   
                                                       if (
                                                       retrait_variable_par_niveau(
                                                       s_etat_processus) ==
                                                       d_erreur)
                                                       {
                                                           if (presence_egalite ==
                                                                   d_vrai)
                                                           {
                                                               liberation(
                                                               s_etat_processus,
                                                               s_objet_evalue);
                                                           }
   
                                                           (*s_etat_processus)
                                                           .instruction_courante =
                                                           instruction_courante;
                                                           return(d_erreur);
                                                       }
                                                   }
   
                                                   depilement_pile_systeme(
                                                           s_etat_processus);
                                               }
                                             else                                              else
                                             {                                              {
                                                 // Traitement spécifique pour                                                  // Traitement spécifique pour
Line 1376  evaluation(struct_processus *s_etat_proc Line 1676  evaluation(struct_processus *s_etat_proc
                                                 TEST(instruction_do) ||                                                  TEST(instruction_do) ||
                                                 TEST(instruction_while) ||                                                  TEST(instruction_while) ||
                                                 TEST(instruction_for) ||                                                  TEST(instruction_for) ||
                                                   TEST(instruction_forall) ||
                                                 TEST(instruction_start) ||                                                  TEST(instruction_start) ||
                                                 TEST(instruction_select) ||                                                  TEST(instruction_select) ||
                                                 TEST(instruction_case) ||                                                  TEST(instruction_case) ||
Line 1404  evaluation(struct_processus *s_etat_proc Line 1705  evaluation(struct_processus *s_etat_proc
                                                     return(d_erreur);                                                      return(d_erreur);
                                                 }                                                  }
                                             }                                              }
                                               else if (TEST(instruction_for) ||
                                                       TEST(instruction_start))
                                               {
                                                   empilement_pile_systeme(
                                                           s_etat_processus);
   
                                                   if ((*s_etat_processus)
                                                           .erreur_systeme != d_es)
                                                   {
                                                       if (presence_egalite ==
                                                               d_vrai)
                                                       {
                                                           liberation(
                                                               s_etat_processus,
                                                               s_objet_evalue);
                                                       }
   
                                                       (*s_etat_processus)
                                                           .instruction_courante =
                                                           instruction_courante;
                                                       return(d_erreur);
                                                   }
   
                                                   (*(*s_etat_processus)
                                                           .l_base_pile_systeme)
                                                           .type_cloture = 'L';
                                               }
                                             else                                              else
                                             {                                              {
                                                 empilement_pile_systeme(                                                  empilement_pile_systeme(
Line 1462  evaluation(struct_processus *s_etat_proc Line 1790  evaluation(struct_processus *s_etat_proc
                                                     break;                                                      break;
                                                 }                                                  }
                                             }                                              }
                                               else if ((TEST(instruction_next) ||
                                                       TEST(instruction_step)) &&
                                                       ((*(*s_etat_processus)
                                                       .l_base_pile_systeme)
                                                       .type_cloture != 'L'))
                                               {
                                                   /*
                                                    * Libération des compteurs
                                                    * de boucle
                                                    */
   
                                                   presence_compteur =
                                                       ((*(*s_etat_processus)
                                                       .l_base_pile_systeme)
                                                       .type_cloture == 'F')
                                                       ? d_vrai : d_faux;
   
                                                   if (((*(*s_etat_processus)
                                                       .l_base_pile_systeme)
                                                       .type_cloture != 'S') &&
                                                       (presence_compteur ==
                                                       d_faux))
                                                   {
                                                       (*s_etat_processus)
                                                   .erreur_execution =
                                                   d_ex_erreur_traitement_boucle;
   
                                                       if (presence_egalite ==
                                                               d_vrai)
                                                       {
                                                           liberation(
                                                               s_etat_processus,
                                                               s_objet_evalue);
                                                       }
   
                                                       (*s_etat_processus)
                                                           .instruction_courante =
                                                           instruction_courante;
                                                       return(d_erreur);
                                                   }
   
                                                   if (presence_compteur == d_vrai)
                                                   {
                                                       if (recherche_variable(
                                                           s_etat_processus,
                                                           (*(*s_etat_processus)
                                                           .l_base_pile_systeme)
                                                           .nom_variable) ==
                                                           d_faux)
                                                       {
                                                           (*s_etat_processus)
                                                   .erreur_systeme = d_es;
                                                           (*s_etat_processus)
                                                   .erreur_execution =
                                                   d_ex_erreur_traitement_boucle;
   
                                                           if (presence_egalite ==
                                                                   d_vrai)
                                                           {
                                                               liberation(
                                                               s_etat_processus,
                                                               s_objet_evalue);
                                                           }
   
                                                           (*s_etat_processus)
                                                           .instruction_courante =
                                                           instruction_courante;
                                                           return(d_erreur);
                                                       }
   
                                                       if ((*(*s_etat_processus)
                                                       .pointeur_variable_courante)
                                                       .objet == NULL)
                                                       {
                                                           (*s_etat_processus)
                                                           .erreur_systeme = d_es;
                                                           (*s_etat_processus)
                                                           .erreur_execution =
                                                           d_ex_variable_partagee;
   
                                                           if (presence_egalite ==
                                                                   d_vrai)
                                                           {
                                                               liberation(
                                                               s_etat_processus,
                                                               s_objet_evalue);
                                                           }
   
                                                           (*s_etat_processus)
                                                           .instruction_courante =
                                                           instruction_courante;
                                                           return(d_erreur);
                                                       }
   
                                                       (*s_etat_processus)
                                                           .niveau_courant--;
   
                                                       if (
                                                       retrait_variable_par_niveau(
                                                       s_etat_processus) ==
                                                       d_erreur)
                                                       {
                                                           if (presence_egalite ==
                                                                   d_vrai)
                                                           {
                                                               liberation(
                                                               s_etat_processus,
                                                               s_objet_evalue);
                                                           }
   
                                                           (*s_etat_processus)
                                                           .instruction_courante =
                                                           instruction_courante;
                                                           return(d_erreur);
                                                       }
                                                   }
   
                                                   depilement_pile_systeme(
                                                           s_etat_processus);
                                               }
                                             else                                              else
                                             {                                              {
                                                 // Traitement spécifique pour                                                  // Traitement spécifique pour
Line 1484  evaluation(struct_processus *s_etat_proc Line 1932  evaluation(struct_processus *s_etat_proc
                                                     }                                                      }
   
                                                     (*s_etat_processus)                                                      (*s_etat_processus)
                                                             .erreur_systeme =                                                          .instruction_courante =
                                                             d_es_processus;                                                          instruction_courante;
                                                     return(d_erreur);                                                      return(d_erreur);
                                                 }                                                  }
   
Line 1510  evaluation(struct_processus *s_etat_proc Line 1958  evaluation(struct_processus *s_etat_proc
                                                         }                                                          }
   
                                                         (*s_etat_processus)                                                          (*s_etat_processus)
                                                             .erreur_systeme =                                                          .instruction_courante =
                                                             d_es_processus;                                                          instruction_courante;
                                                         return(d_erreur);                                                          return(d_erreur);
                                                     }                                                      }
   
Line 3446  evaluation(struct_processus *s_etat_proc Line 3894  evaluation(struct_processus *s_etat_proc
                                                 TEST(instruction_do) ||                                                  TEST(instruction_do) ||
                                                 TEST(instruction_while) ||                                                  TEST(instruction_while) ||
                                                 TEST(instruction_for) ||                                                  TEST(instruction_for) ||
                                                   TEST(instruction_forall) ||
                                                 TEST(instruction_start) ||                                                  TEST(instruction_start) ||
                                                 TEST(instruction_select) ||                                                  TEST(instruction_select) ||
                                                 TEST(instruction_case) ||                                                  TEST(instruction_case) ||
Line 3487  evaluation(struct_processus *s_etat_proc Line 3936  evaluation(struct_processus *s_etat_proc
                                                     .erreur_execution =                                                      .erreur_execution =
                                                     registre_erreur_execution;                                                      registre_erreur_execution;
                                             }                                              }
                                               else if (TEST(instruction_for) ||
                                                       TEST(instruction_start))
                                               {
                                                   empilement_pile_systeme(
                                                           s_etat_processus);
   
                                                   if ((*s_etat_processus)
                                                           .erreur_systeme != d_es)
                                                   {
                                                       if (presence_egalite ==
                                                               d_vrai)
                                                       {
                                                           liberation(
                                                               s_etat_processus,
                                                               s_objet_evalue);
                                                       }
   
                                                       (*s_etat_processus)
                                                           .instruction_courante =
                                                           instruction_courante;
                                                       return(d_erreur);
                                                   }
   
                                                   (*(*s_etat_processus)
                                                           .l_base_pile_systeme)
                                                           .type_cloture = 'L';
                                               }
                                             else                                              else
                                             {                                              {
                                                 empilement_pile_systeme(                                                  empilement_pile_systeme(
Line 3550  evaluation(struct_processus *s_etat_proc Line 4026  evaluation(struct_processus *s_etat_proc
                                                     .erreur_execution =                                                      .erreur_execution =
                                                     registre_erreur_execution;                                                      registre_erreur_execution;
                                             }                                              }
                                               else if ((TEST(instruction_next) ||
                                                       TEST(instruction_step)) &&
                                                       ((*(*s_etat_processus)
                                                       .l_base_pile_systeme)
                                                       .type_cloture != 'L'))
                                               {
                                                   /*
                                                    * Libération des compteurs
                                                    * de boucle
                                                    */
   
                                                   presence_compteur =
                                                       ((*(*s_etat_processus)
                                                       .l_base_pile_systeme)
                                                       .type_cloture == 'F')
                                                       ? d_vrai : d_faux;
   
                                                   if (((*(*s_etat_processus)
                                                       .l_base_pile_systeme)
                                                       .type_cloture != 'S') &&
                                                       (presence_compteur ==
                                                       d_faux))
                                                   {
                                                       (*s_etat_processus)
                                                   .erreur_execution =
                                                   d_ex_erreur_traitement_boucle;
   
                                                       if (presence_egalite ==
                                                               d_vrai)
                                                       {
                                                           liberation(
                                                               s_etat_processus,
                                                               s_objet_evalue);
                                                       }
   
                                                       (*s_etat_processus)
                                                           .instruction_courante =
                                                           instruction_courante;
                                                       return(d_erreur);
                                                   }
   
                                                   if (presence_compteur == d_vrai)
                                                   {
                                                       if (recherche_variable(
                                                           s_etat_processus,
                                                           (*(*s_etat_processus)
                                                           .l_base_pile_systeme)
                                                           .nom_variable) ==
                                                           d_faux)
                                                       {
                                                           (*s_etat_processus)
                                                   .erreur_systeme = d_es;
                                                           (*s_etat_processus)
                                                   .erreur_execution =
                                                   d_ex_erreur_traitement_boucle;
   
                                                           if (presence_egalite ==
                                                                   d_vrai)
                                                           {
                                                               liberation(
                                                               s_etat_processus,
                                                               s_objet_evalue);
                                                           }
   
                                                           (*s_etat_processus)
                                                           .instruction_courante =
                                                           instruction_courante;
                                                           return(d_erreur);
                                                       }
   
                                                       if ((*(*s_etat_processus)
                                                       .pointeur_variable_courante)
                                                       .objet == NULL)
                                                       {
                                                           (*s_etat_processus)
                                                           .erreur_systeme = d_es;
                                                           (*s_etat_processus)
                                                           .erreur_execution =
                                                           d_ex_variable_partagee;
   
                                                           if (presence_egalite ==
                                                                   d_vrai)
                                                           {
                                                               liberation(
                                                               s_etat_processus,
                                                               s_objet_evalue);
                                                           }
   
                                                           (*s_etat_processus)
                                                           .instruction_courante =
                                                           instruction_courante;
                                                           return(d_erreur);
                                                       }
   
                                                       (*s_etat_processus)
                                                           .niveau_courant--;
   
                                                       if (
                                                       retrait_variable_par_niveau(
                                                       s_etat_processus) ==
                                                       d_erreur)
                                                       {
                                                           if (presence_egalite ==
                                                                   d_vrai)
                                                           {
                                                               liberation(
                                                               s_etat_processus,
                                                               s_objet_evalue);
                                                           }
   
                                                           (*s_etat_processus)
                                                           .instruction_courante =
                                                           instruction_courante;
                                                           return(d_erreur);
                                                       }
                                                   }
   
                                                   depilement_pile_systeme(
                                                           s_etat_processus);
                                               }
                                             else                                              else
                                             {                                              {
                                                 // Traitement spécifique pour la                                                  // Traitement spécifique pour la
Line 3602  evaluation(struct_processus *s_etat_proc Line 4198  evaluation(struct_processus *s_etat_proc
                                                         instruction_courante;                                                          instruction_courante;
                                                         return(d_erreur);                                                          return(d_erreur);
                                                     }                                                      }
   
                                                       (*s_etat_processus)
                                                           .sections_critiques--;
                                                 }                                                  }
   
                                                 depilement_pile_systeme(                                                  depilement_pile_systeme(
Line 3725  evaluation(struct_processus *s_etat_proc Line 4324  evaluation(struct_processus *s_etat_proc
                                                 TEST(instruction_do) ||                                                  TEST(instruction_do) ||
                                                 TEST(instruction_while) ||                                                  TEST(instruction_while) ||
                                                 TEST(instruction_for) ||                                                  TEST(instruction_for) ||
                                                   TEST(instruction_forall) ||
                                                 TEST(instruction_start) ||                                                  TEST(instruction_start) ||
                                                 TEST(instruction_select) ||                                                  TEST(instruction_select) ||
                                                 TEST(instruction_case) ||                                                  TEST(instruction_case) ||
Line 3753  evaluation(struct_processus *s_etat_proc Line 4353  evaluation(struct_processus *s_etat_proc
                                                     return(d_erreur);                                                      return(d_erreur);
                                                 }                                                  }
                                             }                                              }
                                               else if (TEST(instruction_for) ||
                                                       TEST(instruction_start))
                                               {
                                                   empilement_pile_systeme(
                                                           s_etat_processus);
   
                                                   if ((*s_etat_processus)
                                                           .erreur_systeme != d_es)
                                                   {
                                                       if (presence_egalite ==
                                                               d_vrai)
                                                       {
                                                           liberation(
                                                               s_etat_processus,
                                                               s_objet_evalue);
                                                       }
   
                                                       (*s_etat_processus)
                                                           .instruction_courante =
                                                           instruction_courante;
                                                       return(d_erreur);
                                                   }
   
                                                   (*(*s_etat_processus)
                                                           .l_base_pile_systeme)
                                                           .type_cloture = 'L';
                                               }
                                             else                                              else
                                             {                                              {
                                                 empilement_pile_systeme(                                                  empilement_pile_systeme(
Line 3803  evaluation(struct_processus *s_etat_proc Line 4430  evaluation(struct_processus *s_etat_proc
                                                     return(d_erreur);                                                      return(d_erreur);
                                                 }                                                  }
                                             }                                              }
                                               else if ((TEST(instruction_next) ||
                                                       TEST(instruction_step)) &&
                                                       ((*(*s_etat_processus)
                                                       .l_base_pile_systeme)
                                                       .type_cloture != 'L'))
                                               {
                                                   /*
                                                    * Libération des compteurs
                                                    * de boucle
                                                    */
   
                                                   presence_compteur =
                                                       ((*(*s_etat_processus)
                                                       .l_base_pile_systeme)
                                                       .type_cloture == 'F')
                                                       ? d_vrai : d_faux;
   
                                                   if (((*(*s_etat_processus)
                                                       .l_base_pile_systeme)
                                                       .type_cloture != 'S') &&
                                                       (presence_compteur ==
                                                       d_faux))
                                                   {
                                                       (*s_etat_processus)
                                                   .erreur_execution =
                                                   d_ex_erreur_traitement_boucle;
   
                                                       if (presence_egalite ==
                                                               d_vrai)
                                                       {
                                                           liberation(
                                                               s_etat_processus,
                                                               s_objet_evalue);
                                                       }
   
                                                       (*s_etat_processus)
                                                           .instruction_courante =
                                                           instruction_courante;
                                                       return(d_erreur);
                                                   }
   
                                                   if (presence_compteur == d_vrai)
                                                   {
                                                       if (recherche_variable(
                                                           s_etat_processus,
                                                           (*(*s_etat_processus)
                                                           .l_base_pile_systeme)
                                                           .nom_variable) ==
                                                           d_faux)
                                                       {
                                                           (*s_etat_processus)
                                                   .erreur_systeme = d_es;
                                                           (*s_etat_processus)
                                                   .erreur_execution =
                                                   d_ex_erreur_traitement_boucle;
   
                                                           if (presence_egalite ==
                                                                   d_vrai)
                                                           {
                                                               liberation(
                                                               s_etat_processus,
                                                               s_objet_evalue);
                                                           }
   
                                                           (*s_etat_processus)
                                                           .instruction_courante =
                                                           instruction_courante;
                                                           return(d_erreur);
                                                       }
   
                                                       if ((*(*s_etat_processus)
                                                       .pointeur_variable_courante)
                                                       .objet == NULL)
                                                       {
                                                           (*s_etat_processus)
                                                           .erreur_systeme = d_es;
                                                           (*s_etat_processus)
                                                           .erreur_execution =
                                                           d_ex_variable_partagee;
   
                                                           if (presence_egalite ==
                                                                   d_vrai)
                                                           {
                                                               liberation(
                                                               s_etat_processus,
                                                               s_objet_evalue);
                                                           }
   
                                                           (*s_etat_processus)
                                                           .instruction_courante =
                                                           instruction_courante;
                                                           return(d_erreur);
                                                       }
   
                                                       (*s_etat_processus)
                                                           .niveau_courant--;
   
                                                       if (
                                                       retrait_variable_par_niveau(
                                                       s_etat_processus) ==
                                                       d_erreur)
                                                       {
                                                           if (presence_egalite ==
                                                                   d_vrai)
                                                           {
                                                               liberation(
                                                               s_etat_processus,
                                                               s_objet_evalue);
                                                           }
   
                                                           (*s_etat_processus)
                                                           .instruction_courante =
                                                           instruction_courante;
                                                           return(d_erreur);
                                                       }
                                                   }
   
                                                   depilement_pile_systeme(
                                                           s_etat_processus);
                                               }
                                             else                                              else
                                             {                                              {
                                                 // Traitement spécifique pour la                                                  // Traitement spécifique pour la
Line 3855  evaluation(struct_processus *s_etat_proc Line 4602  evaluation(struct_processus *s_etat_proc
                                                         instruction_courante;                                                          instruction_courante;
                                                         return(d_erreur);                                                          return(d_erreur);
                                                     }                                                      }
   
                                                       (*s_etat_processus)
                                                           .sections_critiques--;
                                                 }                                                  }
   
                                                 depilement_pile_systeme(                                                  depilement_pile_systeme(
Line 3944  evaluation(struct_processus *s_etat_proc Line 4694  evaluation(struct_processus *s_etat_proc
                                                 TEST(instruction_do) ||                                                  TEST(instruction_do) ||
                                                 TEST(instruction_while) ||                                                  TEST(instruction_while) ||
                                                 TEST(instruction_for) ||                                                  TEST(instruction_for) ||
                                                   TEST(instruction_forall) ||
                                                 TEST(instruction_start) ||                                                  TEST(instruction_start) ||
                                                 TEST(instruction_select) ||                                                  TEST(instruction_select) ||
                                                 TEST(instruction_case) ||                                                  TEST(instruction_case) ||
Line 3972  evaluation(struct_processus *s_etat_proc Line 4723  evaluation(struct_processus *s_etat_proc
                                                     return(d_erreur);                                                      return(d_erreur);
                                                 }                                                  }
                                             }                                              }
                                               else if (TEST(instruction_for) ||
                                                       TEST(instruction_start))
                                               {
                                                   empilement_pile_systeme(
                                                           s_etat_processus);
   
                                                   if ((*s_etat_processus)
                                                           .erreur_systeme != d_es)
                                                   {
                                                       if (presence_egalite ==
                                                               d_vrai)
                                                       {
                                                           liberation(
                                                               s_etat_processus,
                                                               s_objet_evalue);
                                                       }
   
                                                       (*s_etat_processus)
                                                           .instruction_courante =
                                                           instruction_courante;
                                                       return(d_erreur);
                                                   }
   
                                                   (*(*s_etat_processus)
                                                           .l_base_pile_systeme)
                                                           .type_cloture = 'L';
                                               }
                                             else                                              else
                                             {                                              {
                                                 empilement_pile_systeme(                                                  empilement_pile_systeme(
Line 4022  evaluation(struct_processus *s_etat_proc Line 4800  evaluation(struct_processus *s_etat_proc
                                                     return(d_erreur);                                                      return(d_erreur);
                                                 }                                                  }
                                             }                                              }
                                               else if ((TEST(instruction_next) ||
                                                       TEST(instruction_step)) &&
                                                       ((*(*s_etat_processus)
                                                       .l_base_pile_systeme)
                                                       .type_cloture != 'L'))
                                               {
                                                   /*
                                                    * Libération des compteurs
                                                    * de boucle
                                                    */
   
                                                   presence_compteur =
                                                       ((*(*s_etat_processus)
                                                       .l_base_pile_systeme)
                                                       .type_cloture == 'F')
                                                       ? d_vrai : d_faux;
   
                                                   if (((*(*s_etat_processus)
                                                       .l_base_pile_systeme)
                                                       .type_cloture != 'S') &&
                                                       (presence_compteur ==
                                                       d_faux))
                                                   {
                                                       (*s_etat_processus)
                                                   .erreur_execution =
                                                   d_ex_erreur_traitement_boucle;
   
                                                       if (presence_egalite ==
                                                               d_vrai)
                                                       {
                                                           liberation(
                                                               s_etat_processus,
                                                               s_objet_evalue);
                                                       }
   
                                                       (*s_etat_processus)
                                                           .instruction_courante =
                                                           instruction_courante;
                                                       return(d_erreur);
                                                   }
   
                                                   if (presence_compteur == d_vrai)
                                                   {
                                                       if (recherche_variable(
                                                           s_etat_processus,
                                                           (*(*s_etat_processus)
                                                           .l_base_pile_systeme)
                                                           .nom_variable) ==
                                                           d_faux)
                                                       {
                                                           (*s_etat_processus)
                                                   .erreur_systeme = d_es;
                                                           (*s_etat_processus)
                                                   .erreur_execution =
                                                   d_ex_erreur_traitement_boucle;
   
                                                           if (presence_egalite ==
                                                                   d_vrai)
                                                           {
                                                               liberation(
                                                               s_etat_processus,
                                                               s_objet_evalue);
                                                           }
   
                                                           (*s_etat_processus)
                                                           .instruction_courante =
                                                           instruction_courante;
                                                           return(d_erreur);
                                                       }
   
                                                       if ((*(*s_etat_processus)
                                                       .pointeur_variable_courante)
                                                       .objet == NULL)
                                                       {
                                                           (*s_etat_processus)
                                                           .erreur_systeme = d_es;
                                                           (*s_etat_processus)
                                                           .erreur_execution =
                                                           d_ex_variable_partagee;
   
                                                           if (presence_egalite ==
                                                                   d_vrai)
                                                           {
                                                               liberation(
                                                               s_etat_processus,
                                                               s_objet_evalue);
                                                           }
   
                                                           (*s_etat_processus)
                                                           .instruction_courante =
                                                           instruction_courante;
                                                           return(d_erreur);
                                                       }
   
                                                       (*s_etat_processus)
                                                           .niveau_courant--;
   
                                                       if (
                                                       retrait_variable_par_niveau(
                                                       s_etat_processus) ==
                                                       d_erreur)
                                                       {
                                                           if (presence_egalite ==
                                                                   d_vrai)
                                                           {
                                                               liberation(
                                                               s_etat_processus,
                                                               s_objet_evalue);
                                                           }
   
                                                           (*s_etat_processus)
                                                           .instruction_courante =
                                                           instruction_courante;
                                                           return(d_erreur);
                                                       }
                                                   }
   
                                                   depilement_pile_systeme(
                                                           s_etat_processus);
                                               }
                                             else                                              else
                                             {                                              {
                                                 // Traitement spécifique pour la                                                  // Traitement spécifique pour la
Line 4074  evaluation(struct_processus *s_etat_proc Line 4972  evaluation(struct_processus *s_etat_proc
                                                         instruction_courante;                                                          instruction_courante;
                                                         return(d_erreur);                                                          return(d_erreur);
                                                     }                                                      }
   
                                                       (*s_etat_processus)
                                                           .sections_critiques--;
                                                 }                                                  }
   
                                                 depilement_pile_systeme(                                                  depilement_pile_systeme(
Line 4234  evaluation(struct_processus *s_etat_proc Line 5135  evaluation(struct_processus *s_etat_proc
                                                 TEST(instruction_do) ||                                                  TEST(instruction_do) ||
                                                 TEST(instruction_while) ||                                                  TEST(instruction_while) ||
                                                 TEST(instruction_for) ||                                                  TEST(instruction_for) ||
                                                   TEST(instruction_forall) ||
                                                 TEST(instruction_start) ||                                                  TEST(instruction_start) ||
                                                 TEST(instruction_select) ||                                                  TEST(instruction_select) ||
                                                 TEST(instruction_case) ||                                                  TEST(instruction_case) ||
Line 4275  evaluation(struct_processus *s_etat_proc Line 5177  evaluation(struct_processus *s_etat_proc
                                                     .erreur_execution =                                                      .erreur_execution =
                                                     registre_erreur_execution;                                                      registre_erreur_execution;
                                             }                                              }
                                               else if (TEST(instruction_for) ||
                                                       TEST(instruction_start))
                                               {
                                                   empilement_pile_systeme(
                                                           s_etat_processus);
   
                                                   if ((*s_etat_processus)
                                                           .erreur_systeme != d_es)
                                                   {
                                                       if (presence_egalite ==
                                                               d_vrai)
                                                       {
                                                           liberation(
                                                               s_etat_processus,
                                                               s_objet_evalue);
                                                       }
   
                                                       (*s_etat_processus)
                                                           .instruction_courante =
                                                           instruction_courante;
                                                       return(d_erreur);
                                                   }
   
                                                   (*(*s_etat_processus)
                                                           .l_base_pile_systeme)
                                                           .type_cloture = 'L';
                                               }
                                             else                                              else
                                             {                                              {
                                                 empilement_pile_systeme(                                                  empilement_pile_systeme(
Line 4338  evaluation(struct_processus *s_etat_proc Line 5267  evaluation(struct_processus *s_etat_proc
                                                     .erreur_execution =                                                      .erreur_execution =
                                                     registre_erreur_execution;                                                      registre_erreur_execution;
                                             }                                              }
                                               else if ((TEST(instruction_next) ||
                                                       TEST(instruction_step)) &&
                                                       ((*(*s_etat_processus)
                                                       .l_base_pile_systeme)
                                                       .type_cloture != 'L'))
                                               {
                                                   /*
                                                    * Libération des compteurs
                                                    * de boucle
                                                    */
   
                                                   presence_compteur =
                                                       ((*(*s_etat_processus)
                                                       .l_base_pile_systeme)
                                                       .type_cloture == 'F')
                                                       ? d_vrai : d_faux;
   
                                                   if (((*(*s_etat_processus)
                                                       .l_base_pile_systeme)
                                                       .type_cloture != 'S') &&
                                                       (presence_compteur ==
                                                       d_faux))
                                                   {
                                                       (*s_etat_processus)
                                                   .erreur_execution =
                                                   d_ex_erreur_traitement_boucle;
   
                                                       if (presence_egalite ==
                                                               d_vrai)
                                                       {
                                                           liberation(
                                                               s_etat_processus,
                                                               s_objet_evalue);
                                                       }
   
                                                       (*s_etat_processus)
                                                           .instruction_courante =
                                                           instruction_courante;
                                                       return(d_erreur);
                                                   }
   
                                                   if (presence_compteur == d_vrai)
                                                   {
                                                       if (recherche_variable(
                                                           s_etat_processus,
                                                           (*(*s_etat_processus)
                                                           .l_base_pile_systeme)
                                                           .nom_variable) ==
                                                           d_faux)
                                                       {
                                                           (*s_etat_processus)
                                                   .erreur_systeme = d_es;
                                                           (*s_etat_processus)
                                                   .erreur_execution =
                                                   d_ex_erreur_traitement_boucle;
   
                                                           if (presence_egalite ==
                                                                   d_vrai)
                                                           {
                                                               liberation(
                                                               s_etat_processus,
                                                               s_objet_evalue);
                                                           }
   
                                                           (*s_etat_processus)
                                                           .instruction_courante =
                                                           instruction_courante;
                                                           return(d_erreur);
                                                       }
   
                                                       if ((*(*s_etat_processus)
                                                       .pointeur_variable_courante)
                                                       .objet == NULL)
                                                       {
                                                           (*s_etat_processus)
                                                           .erreur_systeme = d_es;
                                                           (*s_etat_processus)
                                                           .erreur_execution =
                                                           d_ex_variable_partagee;
   
                                                           if (presence_egalite ==
                                                                   d_vrai)
                                                           {
                                                               liberation(
                                                               s_etat_processus,
                                                               s_objet_evalue);
                                                           }
   
                                                           (*s_etat_processus)
                                                           .instruction_courante =
                                                           instruction_courante;
                                                           return(d_erreur);
                                                       }
   
                                                       (*s_etat_processus)
                                                           .niveau_courant--;
   
                                                       if (
                                                       retrait_variable_par_niveau(
                                                       s_etat_processus) ==
                                                       d_erreur)
                                                       {
                                                           if (presence_egalite ==
                                                                   d_vrai)
                                                           {
                                                               liberation(
                                                               s_etat_processus,
                                                               s_objet_evalue);
                                                           }
   
                                                           (*s_etat_processus)
                                                           .instruction_courante =
                                                           instruction_courante;
                                                           return(d_erreur);
                                                       }
                                                   }
   
                                                   depilement_pile_systeme(
                                                           s_etat_processus);
                                               }
                                             else                                              else
                                             {                                              {
                                                 // Traitement spécifique pour la                                                  // Traitement spécifique pour la
Line 4390  evaluation(struct_processus *s_etat_proc Line 5439  evaluation(struct_processus *s_etat_proc
                                                         instruction_courante;                                                          instruction_courante;
                                                         return(d_erreur);                                                          return(d_erreur);
                                                     }                                                      }
   
                                                       (*s_etat_processus)
                                                           .sections_critiques--;
                                                 }                                                  }
   
                                                 depilement_pile_systeme(                                                  depilement_pile_systeme(
Line 4513  evaluation(struct_processus *s_etat_proc Line 5565  evaluation(struct_processus *s_etat_proc
                                                 TEST(instruction_do) ||                                                  TEST(instruction_do) ||
                                                 TEST(instruction_while) ||                                                  TEST(instruction_while) ||
                                                 TEST(instruction_for) ||                                                  TEST(instruction_for) ||
                                                   TEST(instruction_forall) ||
                                                 TEST(instruction_start) ||                                                  TEST(instruction_start) ||
                                                 TEST(instruction_select) ||                                                  TEST(instruction_select) ||
                                                 TEST(instruction_case) ||                                                  TEST(instruction_case) ||
Line 4541  evaluation(struct_processus *s_etat_proc Line 5594  evaluation(struct_processus *s_etat_proc
                                                     return(d_erreur);                                                      return(d_erreur);
                                                 }                                                  }
                                             }                                              }
                                               else if (TEST(instruction_for) ||
                                                       TEST(instruction_start))
                                               {
                                                   empilement_pile_systeme(
                                                           s_etat_processus);
   
                                                   if ((*s_etat_processus)
                                                           .erreur_systeme != d_es)
                                                   {
                                                       if (presence_egalite ==
                                                               d_vrai)
                                                       {
                                                           liberation(
                                                               s_etat_processus,
                                                               s_objet_evalue);
                                                       }
   
                                                       (*s_etat_processus)
                                                           .instruction_courante =
                                                           instruction_courante;
                                                       return(d_erreur);
                                                   }
   
                                                   (*(*s_etat_processus)
                                                           .l_base_pile_systeme)
                                                           .type_cloture = 'L';
                                               }
                                             else                                              else
                                             {                                              {
                                                 empilement_pile_systeme(                                                  empilement_pile_systeme(
Line 4591  evaluation(struct_processus *s_etat_proc Line 5671  evaluation(struct_processus *s_etat_proc
                                                     return(d_erreur);                                                      return(d_erreur);
                                                 }                                                  }
                                             }                                              }
                                               else if ((TEST(instruction_next) ||
                                                       TEST(instruction_step)) &&
                                                       ((*(*s_etat_processus)
                                                       .l_base_pile_systeme)
                                                       .type_cloture != 'L'))
                                               {
                                                   /*
                                                    * Libération des compteurs
                                                    * de boucle
                                                    */
   
                                                   presence_compteur =
                                                       ((*(*s_etat_processus)
                                                       .l_base_pile_systeme)
                                                       .type_cloture == 'F')
                                                       ? d_vrai : d_faux;
   
                                                   if (((*(*s_etat_processus)
                                                       .l_base_pile_systeme)
                                                       .type_cloture != 'S') &&
                                                       (presence_compteur ==
                                                       d_faux))
                                                   {
                                                       (*s_etat_processus)
                                                   .erreur_execution =
                                                   d_ex_erreur_traitement_boucle;
   
                                                       if (presence_egalite ==
                                                               d_vrai)
                                                       {
                                                           liberation(
                                                               s_etat_processus,
                                                               s_objet_evalue);
                                                       }
   
                                                       (*s_etat_processus)
                                                           .instruction_courante =
                                                           instruction_courante;
                                                       return(d_erreur);
                                                   }
   
                                                   if (presence_compteur == d_vrai)
                                                   {
                                                       if (recherche_variable(
                                                           s_etat_processus,
                                                           (*(*s_etat_processus)
                                                           .l_base_pile_systeme)
                                                           .nom_variable) ==
                                                           d_faux)
                                                       {
                                                           (*s_etat_processus)
                                                   .erreur_systeme = d_es;
                                                           (*s_etat_processus)
                                                   .erreur_execution =
                                                   d_ex_erreur_traitement_boucle;
   
                                                           if (presence_egalite ==
                                                                   d_vrai)
                                                           {
                                                               liberation(
                                                               s_etat_processus,
                                                               s_objet_evalue);
                                                           }
   
                                                           (*s_etat_processus)
                                                           .instruction_courante =
                                                           instruction_courante;
                                                           return(d_erreur);
                                                       }
   
                                                       if ((*(*s_etat_processus)
                                                       .pointeur_variable_courante)
                                                       .objet == NULL)
                                                       {
                                                           (*s_etat_processus)
                                                           .erreur_systeme = d_es;
                                                           (*s_etat_processus)
                                                           .erreur_execution =
                                                           d_ex_variable_partagee;
   
                                                           if (presence_egalite ==
                                                                   d_vrai)
                                                           {
                                                               liberation(
                                                               s_etat_processus,
                                                               s_objet_evalue);
                                                           }
   
                                                           (*s_etat_processus)
                                                           .instruction_courante =
                                                           instruction_courante;
                                                           return(d_erreur);
                                                       }
   
                                                       (*s_etat_processus)
                                                           .niveau_courant--;
   
                                                       if (
                                                       retrait_variable_par_niveau(
                                                       s_etat_processus) ==
                                                       d_erreur)
                                                       {
                                                           if (presence_egalite ==
                                                                   d_vrai)
                                                           {
                                                               liberation(
                                                               s_etat_processus,
                                                               s_objet_evalue);
                                                           }
   
                                                           (*s_etat_processus)
                                                           .instruction_courante =
                                                           instruction_courante;
                                                           return(d_erreur);
                                                       }
                                                   }
   
                                                   depilement_pile_systeme(
                                                           s_etat_processus);
                                               }
                                             else                                              else
                                             {                                              {
                                                 // Traitement spécifique pour la                                                  // Traitement spécifique pour la
Line 4643  evaluation(struct_processus *s_etat_proc Line 5843  evaluation(struct_processus *s_etat_proc
                                                         instruction_courante;                                                          instruction_courante;
                                                         return(d_erreur);                                                          return(d_erreur);
                                                     }                                                      }
   
                                                       (*s_etat_processus)
                                                           .sections_critiques--;
                                                 }                                                  }
   
                                                 depilement_pile_systeme(                                                  depilement_pile_systeme(
Line 4732  evaluation(struct_processus *s_etat_proc Line 5935  evaluation(struct_processus *s_etat_proc
                                                 TEST(instruction_do) ||                                                  TEST(instruction_do) ||
                                                 TEST(instruction_while) ||                                                  TEST(instruction_while) ||
                                                 TEST(instruction_for) ||                                                  TEST(instruction_for) ||
                                                   TEST(instruction_forall) ||
                                                 TEST(instruction_start) ||                                                  TEST(instruction_start) ||
                                                 TEST(instruction_select) ||                                                  TEST(instruction_select) ||
                                                 TEST(instruction_case) ||                                                  TEST(instruction_case) ||
Line 4760  evaluation(struct_processus *s_etat_proc Line 5964  evaluation(struct_processus *s_etat_proc
                                                     return(d_erreur);                                                      return(d_erreur);
                                                 }                                                  }
                                             }                                              }
                                               else if (TEST(instruction_for) ||
                                                       TEST(instruction_start))
                                               {
                                                   empilement_pile_systeme(
                                                           s_etat_processus);
   
                                                   if ((*s_etat_processus)
                                                           .erreur_systeme != d_es)
                                                   {
                                                       if (presence_egalite ==
                                                               d_vrai)
                                                       {
                                                           liberation(
                                                               s_etat_processus,
                                                               s_objet_evalue);
                                                       }
   
                                                       (*s_etat_processus)
                                                           .instruction_courante =
                                                           instruction_courante;
                                                       return(d_erreur);
                                                   }
   
                                                   (*(*s_etat_processus)
                                                           .l_base_pile_systeme)
                                                           .type_cloture = 'L';
                                               }
                                             else                                              else
                                             {                                              {
                                                 empilement_pile_systeme(                                                  empilement_pile_systeme(
Line 4810  evaluation(struct_processus *s_etat_proc Line 6041  evaluation(struct_processus *s_etat_proc
                                                     return(d_erreur);                                                      return(d_erreur);
                                                 }                                                  }
                                             }                                              }
                                               else if ((TEST(instruction_next) ||
                                                       TEST(instruction_step)) &&
                                                       ((*(*s_etat_processus)
                                                       .l_base_pile_systeme)
                                                       .type_cloture != 'L'))
                                               {
                                                   /*
                                                    * Libération des compteurs
                                                    * de boucle
                                                    */
   
                                                   presence_compteur =
                                                       ((*(*s_etat_processus)
                                                       .l_base_pile_systeme)
                                                       .type_cloture == 'F')
                                                       ? d_vrai : d_faux;
   
                                                   if (((*(*s_etat_processus)
                                                       .l_base_pile_systeme)
                                                       .type_cloture != 'S') &&
                                                       (presence_compteur ==
                                                       d_faux))
                                                   {
                                                       (*s_etat_processus)
                                                   .erreur_execution =
                                                   d_ex_erreur_traitement_boucle;
   
                                                       if (presence_egalite ==
                                                               d_vrai)
                                                       {
                                                           liberation(
                                                               s_etat_processus,
                                                               s_objet_evalue);
                                                       }
   
                                                       (*s_etat_processus)
                                                           .instruction_courante =
                                                           instruction_courante;
                                                       return(d_erreur);
                                                   }
   
                                                   if (presence_compteur == d_vrai)
                                                   {
                                                       if (recherche_variable(
                                                           s_etat_processus,
                                                           (*(*s_etat_processus)
                                                           .l_base_pile_systeme)
                                                           .nom_variable) ==
                                                           d_faux)
                                                       {
                                                           (*s_etat_processus)
                                                   .erreur_systeme = d_es;
                                                           (*s_etat_processus)
                                                   .erreur_execution =
                                                   d_ex_erreur_traitement_boucle;
   
                                                           if (presence_egalite ==
                                                                   d_vrai)
                                                           {
                                                               liberation(
                                                               s_etat_processus,
                                                               s_objet_evalue);
                                                           }
   
                                                           (*s_etat_processus)
                                                           .instruction_courante =
                                                           instruction_courante;
                                                           return(d_erreur);
                                                       }
   
                                                       if ((*(*s_etat_processus)
                                                       .pointeur_variable_courante)
                                                       .objet == NULL)
                                                       {
                                                           (*s_etat_processus)
                                                           .erreur_systeme = d_es;
                                                           (*s_etat_processus)
                                                           .erreur_execution =
                                                           d_ex_variable_partagee;
   
                                                           if (presence_egalite ==
                                                                   d_vrai)
                                                           {
                                                               liberation(
                                                               s_etat_processus,
                                                               s_objet_evalue);
                                                           }
   
                                                           (*s_etat_processus)
                                                           .instruction_courante =
                                                           instruction_courante;
                                                           return(d_erreur);
                                                       }
   
                                                       (*s_etat_processus)
                                                           .niveau_courant--;
   
                                                       if (
                                                       retrait_variable_par_niveau(
                                                       s_etat_processus) ==
                                                       d_erreur)
                                                       {
                                                           if (presence_egalite ==
                                                                   d_vrai)
                                                           {
                                                               liberation(
                                                               s_etat_processus,
                                                               s_objet_evalue);
                                                           }
   
                                                           (*s_etat_processus)
                                                           .instruction_courante =
                                                           instruction_courante;
                                                           return(d_erreur);
                                                       }
                                                   }
   
                                                   depilement_pile_systeme(
                                                           s_etat_processus);
                                               }
                                             else                                              else
                                             {                                              {
                                                 // Traitement spécifique pour la                                                  // Traitement spécifique pour la
Line 4862  evaluation(struct_processus *s_etat_proc Line 6213  evaluation(struct_processus *s_etat_proc
                                                         instruction_courante;                                                          instruction_courante;
                                                         return(d_erreur);                                                          return(d_erreur);
                                                     }                                                      }
   
                                                       (*s_etat_processus)
                                                           .sections_critiques--;
                                                 }                                                  }
   
                                                 depilement_pile_systeme(                                                  depilement_pile_systeme(
Line 5736  evaluation(struct_processus *s_etat_proc Line 7090  evaluation(struct_processus *s_etat_proc
   
             // Traitement de l'instruction EXIT en mode interactif              // Traitement de l'instruction EXIT en mode interactif
   
             if (l_element_courant != NULL)  
             {  
                 l_element_courant = (*l_element_courant).suivant;  
             }  
             else  
             {  
                 (*s_etat_processus).mode_execution_programme = 'Y';  
   
                 if ((*s_etat_processus).niveau_courant == 1)  
                 {  
                     (*s_etat_processus).debug_programme = d_faux;  
                     (*s_etat_processus).execution_pas_suivant = d_vrai;  
                 }  
             }  
   
             if ((*s_etat_processus).traitement_cycle_exit != 'N')              if ((*s_etat_processus).traitement_cycle_exit != 'N')
             {              {
                 registre_expression_courante =                  registre_expression_courante =
Line 5777  evaluation(struct_processus *s_etat_proc Line 7116  evaluation(struct_processus *s_etat_proc
                 (*s_etat_processus).expression_courante =                  (*s_etat_processus).expression_courante =
                         registre_expression_courante;                          registre_expression_courante;
             }              }
   
               if (l_element_courant != NULL)
               {
                   l_element_courant = (*l_element_courant).suivant;
               }
               else
               {
                   (*s_etat_processus).mode_execution_programme = 'Y';
   
                   if ((*s_etat_processus).niveau_courant == 1)
                   {
                       (*s_etat_processus).debug_programme = d_faux;
                       (*s_etat_processus).execution_pas_suivant = d_vrai;
                   }
               }
   
         }          }
   
         if (niveau_initial < (*s_etat_processus).niveau_courant)          if (niveau_initial < (*s_etat_processus).niveau_courant)

Removed from v.1.56  
changed lines
  Added in v.1.57


CVSweb interface <joel.bertrand@systella.fr>