Diff for /rpl/src/instructions_s5.c between versions 1.16.2.1 and 1.53

version 1.16.2.1, 2011/04/11 13:02:25 version 1.53, 2015/06/08 14:11:41
Line 1 Line 1
 /*  /*
 ================================================================================  ================================================================================
   RPL/2 (R) version 4.0.22    RPL/2 (R) version 4.1.22
   Copyright (C) 1989-2011 Dr. BERTRAND Joël    Copyright (C) 1989-2015 Dr. BERTRAND Joël
   
   This file is part of RPL/2.    This file is part of RPL/2.
   
Line 38 Line 38
 void  void
 instruction_s_plus(struct_processus *s_etat_processus)  instruction_s_plus(struct_processus *s_etat_processus)
 {  {
     long                                i;  
   
     logical1                            creation_variable_sigma;      logical1                            creation_variable_sigma;
     logical1                            presence_variable;  
   
     struct_objet                        *s_copie;      struct_objet                        *s_copie;
     struct_objet                        *s_copie_statistique;      struct_objet                        *s_copie_statistique;
Line 50  instruction_s_plus(struct_processus *s_e Line 47  instruction_s_plus(struct_processus *s_e
   
     struct_variable                     s_variable;      struct_variable                     s_variable;
   
     unsigned long                       j;      integer8                            i;
     unsigned long                       k;      integer8                            j;
     unsigned long                       nombre_colonnes;      integer8                            k;
     unsigned long                       nombre_lignes;      integer8                            nombre_colonnes;
       integer8                            nombre_lignes;
   
     void                                *tampon;      void                                *tampon;
   
Line 95  instruction_s_plus(struct_processus *s_e Line 93  instruction_s_plus(struct_processus *s_e
      * Recherche d'une variable globale référencée par SIGMA       * Recherche d'une variable globale référencée par SIGMA
      */       */
   
     if (recherche_variable(s_etat_processus, ds_sdat) == d_faux)      if (recherche_variable_globale(s_etat_processus, ds_sdat) == d_faux)
     {      {
         /*          /*
          * Aucune variable SIGMA, donc il faut la créer en fonction           * Aucune variable SIGMA, donc il faut la créer en fonction
Line 108  instruction_s_plus(struct_processus *s_e Line 106  instruction_s_plus(struct_processus *s_e
     }      }
     else      else
     {      {
         /*          creation_variable_sigma = d_faux;
          * Il existe une variable locale SIGMA. Reste à vérifier l'existence  
          * d'une variable SIGMA globale...  
          */  
   
         i = (*s_etat_processus).position_variable_courante;          if ((*(*s_etat_processus).pointeur_variable_courante)
         presence_variable = d_faux;                  .variable_verrouillee == d_vrai)
   
         while(i >= 0)  
         {          {
             if ((strcmp((*s_etat_processus).s_liste_variables[i].nom,              (*s_etat_processus).erreur_execution =
                     ds_sdat) == 0) && ((*s_etat_processus)                      d_ex_variable_verrouillee;
                     .s_liste_variables[i].niveau == 1))              return;
             {  
                 presence_variable = d_vrai;  
                 break;  
             }  
   
             i--;  
         }          }
   
         if (presence_variable == d_faux)          if (((*(*(*s_etat_processus).pointeur_variable_courante).objet)
                   .type != MIN) && ((*(*(*s_etat_processus)
                   .pointeur_variable_courante).objet).type != MRL))
         {          {
             creation_variable_sigma = d_vrai;              (*s_etat_processus).erreur_execution =
             nombre_colonnes = 0;                      d_ex_matrice_statistique_invalide;
               return;
         }          }
         else  
         {  
             creation_variable_sigma = d_faux;  
   
             (*s_etat_processus).position_variable_courante = i;  
   
             if ((*s_etat_processus).s_liste_variables[(*s_etat_processus)          if ((s_copie_statistique = copie_objet(s_etat_processus,
                     .position_variable_courante].variable_verrouillee ==                  (*(*s_etat_processus).pointeur_variable_courante).objet, 'Q'))
                     d_vrai)                  == NULL)
             {          {
                 (*s_etat_processus).erreur_execution =              (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
                         d_ex_variable_verrouillee;              return;
                 return;          }
             }  
   
             if ((*s_etat_processus).s_liste_variables[i].objet == NULL)  
             {  
                 (*s_etat_processus).erreur_execution = d_ex_variable_partagee;  
                 return;  
             }  
   
             if (((*((*s_etat_processus).s_liste_variables  
                     [(*s_etat_processus).position_variable_courante].objet))  
                     .type != MIN) && ((*((*s_etat_processus)  
                     .s_liste_variables[(*s_etat_processus)  
                     .position_variable_courante].objet)).type != MRL))  
             {  
                 (*s_etat_processus).erreur_execution =  
                         d_ex_matrice_statistique_invalide;  
                 return;  
             }  
   
             if ((s_copie_statistique = copie_objet(s_etat_processus,          liberation(s_etat_processus, (*(*s_etat_processus)
                     (*s_etat_processus)                  .pointeur_variable_courante).objet);
                     .s_liste_variables[(*s_etat_processus)          (*(*s_etat_processus).pointeur_variable_courante).objet =
                     .position_variable_courante].objet, 'Q')) == NULL)                  s_copie_statistique;
             {  
                 (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;  
                 return;  
             }  
   
             liberation(s_etat_processus, (*s_etat_processus).s_liste_variables          nombre_colonnes = (*((struct_matrice *) (*(*(*s_etat_processus)
                     [(*s_etat_processus).position_variable_courante].objet);                  .pointeur_variable_courante).objet).objet)).nombre_colonnes;
             (*s_etat_processus).s_liste_variables[(*s_etat_processus)  
                     .position_variable_courante].objet = s_copie_statistique;  
   
             nombre_colonnes = (*((struct_matrice *) (*((*s_etat_processus)  
                     .s_liste_variables[(*s_etat_processus)  
                     .position_variable_courante].objet)).objet))  
                     .nombre_colonnes;  
         }  
     }      }
   
     if (depilement(s_etat_processus, &((*s_etat_processus).l_base_pile),      if (depilement(s_etat_processus, &((*s_etat_processus).l_base_pile),
Line 299  instruction_s_plus(struct_processus *s_e Line 254  instruction_s_plus(struct_processus *s_e
                 return;                  return;
             }              }
   
             s_objet_statistique = ((*s_etat_processus).s_liste_variables              s_objet_statistique = (*(*s_etat_processus)
                     [(*s_etat_processus).position_variable_courante]).objet;                      .pointeur_variable_courante).objet;
   
             if (((*s_objet_statistique).type == MIN) &&              if (((*s_objet_statistique).type == MIN) &&
                     ((*s_objet).type == INT))                      ((*s_objet).type == INT))
Line 311  instruction_s_plus(struct_processus *s_e Line 266  instruction_s_plus(struct_processus *s_e
                         .nombre_lignes++;                          .nombre_lignes++;
   
                 if (((*((struct_matrice *) (*s_objet_statistique).objet))                  if (((*((struct_matrice *) (*s_objet_statistique).objet))
                         .tableau = malloc((*((struct_matrice *)                          .tableau = malloc(((size_t) (*((struct_matrice *)
                         (*s_objet_statistique).objet)).nombre_lignes *                          (*s_objet_statistique).objet)).nombre_lignes) *
                         sizeof(integer8 *))) == NULL)                          sizeof(integer8 *))) == NULL)
                 {                  {
                     (*s_etat_processus).erreur_systeme =                      (*s_etat_processus).erreur_systeme =
Line 320  instruction_s_plus(struct_processus *s_e Line 275  instruction_s_plus(struct_processus *s_e
                     return;                      return;
                 }                  }
   
                 for(i = 0; i < (long) ((*((struct_matrice *)                  for(i = 0; i < ((*((struct_matrice *)
                         (*s_objet_statistique).objet)).nombre_lignes - 1); i++)                          (*s_objet_statistique).objet)).nombre_lignes - 1); i++)
                 {                  {
                     ((integer8 **) (*((struct_matrice *) (*s_objet_statistique)                      ((integer8 **) (*((struct_matrice *) (*s_objet_statistique)
Line 344  instruction_s_plus(struct_processus *s_e Line 299  instruction_s_plus(struct_processus *s_e
                         .nombre_lignes++;                          .nombre_lignes++;
   
                 if (((*((struct_matrice *) (*s_objet_statistique).objet))                  if (((*((struct_matrice *) (*s_objet_statistique).objet))
                         .tableau = malloc((*((struct_matrice *)                          .tableau = malloc(((size_t) (*((struct_matrice *)
                         (*s_objet_statistique).objet)).nombre_lignes *                          (*s_objet_statistique).objet)).nombre_lignes) *
                         sizeof(real8 *))) == NULL)                          sizeof(real8 *))) == NULL)
                 {                  {
                     (*s_etat_processus).erreur_systeme =                      (*s_etat_processus).erreur_systeme =
Line 353  instruction_s_plus(struct_processus *s_e Line 308  instruction_s_plus(struct_processus *s_e
                     return;                      return;
                 }                  }
   
                 for(i = 0; i < (long) ((*((struct_matrice *)                  for(i = 0; i < ((*((struct_matrice *)
                         (*s_objet_statistique).objet)).nombre_lignes - 1); i++)                          (*s_objet_statistique).objet)).nombre_lignes - 1); i++)
                 {                  {
                     ((real8 **) (*((struct_matrice *) (*s_objet_statistique)                      ((real8 **) (*((struct_matrice *) (*s_objet_statistique)
Line 377  instruction_s_plus(struct_processus *s_e Line 332  instruction_s_plus(struct_processus *s_e
                         .nombre_lignes++;                          .nombre_lignes++;
   
                 if (((*((struct_matrice *) (*s_objet_statistique).objet))                  if (((*((struct_matrice *) (*s_objet_statistique).objet))
                         .tableau = malloc((*((struct_matrice *)                          .tableau = malloc(((size_t) (*((struct_matrice *)
                         (*s_objet_statistique).objet)).nombre_lignes *                          (*s_objet_statistique).objet)).nombre_lignes) *
                         sizeof(real8 *))) == NULL)                          sizeof(real8 *))) == NULL)
                 {                  {
                     (*s_etat_processus).erreur_systeme =                      (*s_etat_processus).erreur_systeme =
Line 386  instruction_s_plus(struct_processus *s_e Line 341  instruction_s_plus(struct_processus *s_e
                     return;                      return;
                 }                  }
   
                 for(i = 0; i < (long) ((*((struct_matrice *)                  for(i = 0; i < ((*((struct_matrice *)
                         (*s_objet_statistique).objet)).nombre_lignes - 1); i++)                          (*s_objet_statistique).objet)).nombre_lignes - 1); i++)
                 {                  {
                     ((real8 **) (*((struct_matrice *) (*s_objet_statistique)                      ((real8 **) (*((struct_matrice *) (*s_objet_statistique)
Line 416  instruction_s_plus(struct_processus *s_e Line 371  instruction_s_plus(struct_processus *s_e
                         .nombre_lignes++;                          .nombre_lignes++;
   
                 if (((*((struct_matrice *) (*s_objet_statistique).objet))                  if (((*((struct_matrice *) (*s_objet_statistique).objet))
                         .tableau = malloc((*((struct_matrice *)                          .tableau = malloc(((size_t) (*((struct_matrice *)
                         (*s_objet_statistique).objet)).nombre_lignes *                          (*s_objet_statistique).objet)).nombre_lignes) *
                         sizeof(real8 *))) == NULL)                          sizeof(real8 *))) == NULL)
                 {                  {
                     (*s_etat_processus).erreur_systeme =                      (*s_etat_processus).erreur_systeme =
Line 425  instruction_s_plus(struct_processus *s_e Line 380  instruction_s_plus(struct_processus *s_e
                     return;                      return;
                 }                  }
   
                 for(i = 0; i < (long) ((*((struct_matrice *)                  for(i = 0; i < ((*((struct_matrice *)
                         (*s_objet_statistique).objet)).nombre_lignes - 1); i++)                          (*s_objet_statistique).objet)).nombre_lignes - 1); i++)
                 {                  {
                     if ((((real8 **) (*((struct_matrice *)                      if ((((real8 **) (*((struct_matrice *)
Line 566  instruction_s_plus(struct_processus *s_e Line 521  instruction_s_plus(struct_processus *s_e
                 return;                  return;
             }              }
   
             s_objet_statistique = ((*s_etat_processus).s_liste_variables              s_objet_statistique = (*(*s_etat_processus)
                     [(*s_etat_processus).position_variable_courante]).objet;                      .pointeur_variable_courante).objet;
   
             if (((*s_objet_statistique).type == MIN) &&              if (((*s_objet_statistique).type == MIN) &&
                     ((*s_objet).type == VIN))                      ((*s_objet).type == VIN))
Line 578  instruction_s_plus(struct_processus *s_e Line 533  instruction_s_plus(struct_processus *s_e
                         .nombre_lignes++;                          .nombre_lignes++;
   
                 if (((*((struct_matrice *) (*s_objet_statistique).objet))                  if (((*((struct_matrice *) (*s_objet_statistique).objet))
                         .tableau = malloc((*((struct_matrice *)                          .tableau = malloc(((size_t) (*((struct_matrice *)
                         (*s_objet_statistique).objet)).nombre_lignes *                          (*s_objet_statistique).objet)).nombre_lignes) *
                         sizeof(integer8 *))) == NULL)                          sizeof(integer8 *))) == NULL)
                 {                  {
                     (*s_etat_processus).erreur_systeme =                      (*s_etat_processus).erreur_systeme =
Line 587  instruction_s_plus(struct_processus *s_e Line 542  instruction_s_plus(struct_processus *s_e
                     return;                      return;
                 }                  }
   
                 for(i = 0; i < (long) ((*((struct_matrice *)                  for(i = 0; i < ((*((struct_matrice *)
                         (*s_objet_statistique).objet)).nombre_lignes - 1); i++)                          (*s_objet_statistique).objet)).nombre_lignes - 1); i++)
                 {                  {
                     ((integer8 **) (*((struct_matrice *) (*s_objet_statistique)                      ((integer8 **) (*((struct_matrice *) (*s_objet_statistique)
Line 613  instruction_s_plus(struct_processus *s_e Line 568  instruction_s_plus(struct_processus *s_e
                         .nombre_lignes++;                          .nombre_lignes++;
   
                 if (((*((struct_matrice *) (*s_objet_statistique).objet))                  if (((*((struct_matrice *) (*s_objet_statistique).objet))
                         .tableau = malloc((*((struct_matrice *)                          .tableau = malloc(((size_t) (*((struct_matrice *)
                         (*s_objet_statistique).objet)).nombre_lignes *                          (*s_objet_statistique).objet)).nombre_lignes) *
                         sizeof(real8 *))) == NULL)                          sizeof(real8 *))) == NULL)
                 {                  {
                     (*s_etat_processus).erreur_systeme =                      (*s_etat_processus).erreur_systeme =
Line 622  instruction_s_plus(struct_processus *s_e Line 577  instruction_s_plus(struct_processus *s_e
                     return;                      return;
                 }                  }
   
                 for(i = 0; i < (long) ((*((struct_matrice *)                  for(i = 0; i < ((*((struct_matrice *)
                         (*s_objet_statistique).objet)).nombre_lignes - 1); i++)                          (*s_objet_statistique).objet)).nombre_lignes - 1); i++)
                 {                  {
                     ((real8 **) (*((struct_matrice *) (*s_objet_statistique)                      ((real8 **) (*((struct_matrice *) (*s_objet_statistique)
Line 648  instruction_s_plus(struct_processus *s_e Line 603  instruction_s_plus(struct_processus *s_e
                         .nombre_lignes++;                          .nombre_lignes++;
   
                 if (((*((struct_matrice *) (*s_objet_statistique).objet))                  if (((*((struct_matrice *) (*s_objet_statistique).objet))
                         .tableau = malloc((*((struct_matrice *)                          .tableau = malloc(((size_t) (*((struct_matrice *)
                         (*s_objet_statistique).objet)).nombre_lignes *                          (*s_objet_statistique).objet)).nombre_lignes) *
                         sizeof(real8 *))) == NULL)                          sizeof(real8 *))) == NULL)
                 {                  {
                     (*s_etat_processus).erreur_systeme =                      (*s_etat_processus).erreur_systeme =
Line 657  instruction_s_plus(struct_processus *s_e Line 612  instruction_s_plus(struct_processus *s_e
                     return;                      return;
                 }                  }
   
                 for(i = 0; i < (long) ((*((struct_matrice *)                  for(i = 0; i < ((*((struct_matrice *)
                         (*s_objet_statistique).objet)).nombre_lignes - 1); i++)                          (*s_objet_statistique).objet)).nombre_lignes - 1); i++)
                 {                  {
                     ((real8 **) (*((struct_matrice *) (*s_objet_statistique)                      ((real8 **) (*((struct_matrice *) (*s_objet_statistique)
Line 667  instruction_s_plus(struct_processus *s_e Line 622  instruction_s_plus(struct_processus *s_e
                 free(tampon);                  free(tampon);
   
                 if ((((real8 **) (*((struct_matrice *) (*s_objet_statistique)                  if ((((real8 **) (*((struct_matrice *) (*s_objet_statistique)
                         .objet)).tableau)[i] =                          .objet)).tableau)[i] = malloc(((size_t)
                         malloc(nombre_colonnes * sizeof(real8))) == NULL)                          nombre_colonnes) * sizeof(real8))) == NULL)
                 {                  {
                     (*s_etat_processus).erreur_systeme =                      (*s_etat_processus).erreur_systeme =
                             d_es_allocation_memoire;                              d_es_allocation_memoire;
Line 691  instruction_s_plus(struct_processus *s_e Line 646  instruction_s_plus(struct_processus *s_e
                         .nombre_lignes++;                          .nombre_lignes++;
   
                 if (((*((struct_matrice *) (*s_objet_statistique).objet))                  if (((*((struct_matrice *) (*s_objet_statistique).objet))
                         .tableau = malloc((*((struct_matrice *)                          .tableau = malloc(((size_t) (*((struct_matrice *)
                         (*s_objet_statistique).objet)).nombre_lignes *                          (*s_objet_statistique).objet)).nombre_lignes) *
                         sizeof(real8 *))) == NULL)                          sizeof(real8 *))) == NULL)
                 {                  {
                     (*s_etat_processus).erreur_systeme =                      (*s_etat_processus).erreur_systeme =
Line 700  instruction_s_plus(struct_processus *s_e Line 655  instruction_s_plus(struct_processus *s_e
                     return;                      return;
                 }                  }
   
                 for(i = 0; i < (long) ((*((struct_matrice *)                  for(i = 0; i < ((*((struct_matrice *)
                         (*s_objet_statistique).objet)).nombre_lignes - 1); i++)                          (*s_objet_statistique).objet)).nombre_lignes - 1); i++)
                 {                  {
                     if ((((real8 **) (*((struct_matrice *)                      if ((((real8 **) (*((struct_matrice *)
                             (*s_objet_statistique).objet)).tableau)[i] =                              (*s_objet_statistique).objet)).tableau)[i] =
                             malloc(nombre_colonnes * sizeof(real8))) == NULL)                              malloc(((size_t) nombre_colonnes) *
                               sizeof(real8))) == NULL)
                     {                      {
                         (*s_etat_processus).erreur_systeme =                          (*s_etat_processus).erreur_systeme =
                                 d_es_allocation_memoire;                                  d_es_allocation_memoire;
Line 813  instruction_s_plus(struct_processus *s_e Line 769  instruction_s_plus(struct_processus *s_e
                 return;                  return;
             }              }
   
             s_objet_statistique = ((*s_etat_processus).s_liste_variables              s_objet_statistique = (*(*s_etat_processus)
                     [(*s_etat_processus).position_variable_courante]).objet;                      .pointeur_variable_courante).objet;
   
             nombre_lignes = (*((struct_matrice *) (*s_objet).objet))              nombre_lignes = (*((struct_matrice *) (*s_objet).objet))
                     .nombre_lignes;                      .nombre_lignes;
Line 828  instruction_s_plus(struct_processus *s_e Line 784  instruction_s_plus(struct_processus *s_e
                         .nombre_lignes += nombre_lignes;                          .nombre_lignes += nombre_lignes;
   
                 if (((*((struct_matrice *) (*s_objet_statistique).objet))                  if (((*((struct_matrice *) (*s_objet_statistique).objet))
                         .tableau = malloc((*((struct_matrice *)                          .tableau = malloc(((size_t) (*((struct_matrice *)
                         (*s_objet_statistique).objet)).nombre_lignes *                          (*s_objet_statistique).objet)).nombre_lignes) *
                         sizeof(integer8 *))) == NULL)                          sizeof(integer8 *))) == NULL)
                 {                  {
                     (*s_etat_processus).erreur_systeme =                      (*s_etat_processus).erreur_systeme =
Line 837  instruction_s_plus(struct_processus *s_e Line 793  instruction_s_plus(struct_processus *s_e
                     return;                      return;
                 }                  }
   
                 for(i = 0; i < (long) ((*((struct_matrice *)                  for(i = 0; i < ((*((struct_matrice *)
                         (*s_objet_statistique).objet)).nombre_lignes                          (*s_objet_statistique).objet)).nombre_lignes
                         - nombre_lignes); i++)                          - nombre_lignes); i++)
                 {                  {
Line 847  instruction_s_plus(struct_processus *s_e Line 803  instruction_s_plus(struct_processus *s_e
   
                 free(tampon);                  free(tampon);
   
                 for(k = 0; i < (long) ((*((struct_matrice *)                  for(k = 0; i < ((*((struct_matrice *)
                         (*s_objet_statistique).objet)).nombre_lignes); i++, k++)                          (*s_objet_statistique).objet)).nombre_lignes); i++, k++)
                 {                  {
                     ((integer8 **) (*((struct_matrice *) (*s_objet_statistique)                      ((integer8 **) (*((struct_matrice *) (*s_objet_statistique)
Line 871  instruction_s_plus(struct_processus *s_e Line 827  instruction_s_plus(struct_processus *s_e
                         .nombre_lignes += nombre_lignes;                          .nombre_lignes += nombre_lignes;
   
                 if (((*((struct_matrice *) (*s_objet_statistique).objet))                  if (((*((struct_matrice *) (*s_objet_statistique).objet))
                         .tableau = malloc((*((struct_matrice *)                          .tableau = malloc(((size_t) (*((struct_matrice *)
                         (*s_objet_statistique).objet)).nombre_lignes *                          (*s_objet_statistique).objet)).nombre_lignes) *
                         sizeof(real8 *))) == NULL)                          sizeof(real8 *))) == NULL)
                 {                  {
                     (*s_etat_processus).erreur_systeme =                      (*s_etat_processus).erreur_systeme =
Line 880  instruction_s_plus(struct_processus *s_e Line 836  instruction_s_plus(struct_processus *s_e
                     return;                      return;
                 }                  }
   
                 for(i = 0; i < (long) ((*((struct_matrice *)                  for(i = 0; i < ((*((struct_matrice *)
                         (*s_objet_statistique).objet)).nombre_lignes                          (*s_objet_statistique).objet)).nombre_lignes
                         - nombre_lignes); i++)                          - nombre_lignes); i++)
                 {                  {
Line 890  instruction_s_plus(struct_processus *s_e Line 846  instruction_s_plus(struct_processus *s_e
   
                 free(tampon);                  free(tampon);
   
                 for(k = 0; i < (long) ((*((struct_matrice *)                  for(k = 0; i < ((*((struct_matrice *)
                         (*s_objet_statistique).objet)).nombre_lignes); i++, k++)                          (*s_objet_statistique).objet)).nombre_lignes); i++, k++)
                 {                  {
                     ((real8 **) (*((struct_matrice *) (*s_objet_statistique)                      ((real8 **) (*((struct_matrice *) (*s_objet_statistique)
Line 914  instruction_s_plus(struct_processus *s_e Line 870  instruction_s_plus(struct_processus *s_e
                         .nombre_lignes += nombre_lignes;                          .nombre_lignes += nombre_lignes;
   
                 if (((*((struct_matrice *) (*s_objet_statistique).objet))                  if (((*((struct_matrice *) (*s_objet_statistique).objet))
                         .tableau = malloc((*((struct_matrice *)                          .tableau = malloc(((size_t) (*((struct_matrice *)
                         (*s_objet_statistique).objet)).nombre_lignes *                          (*s_objet_statistique).objet)).nombre_lignes) *
                         sizeof(real8 *))) == NULL)                          sizeof(real8 *))) == NULL)
                 {                  {
                     (*s_etat_processus).erreur_systeme =                      (*s_etat_processus).erreur_systeme =
Line 923  instruction_s_plus(struct_processus *s_e Line 879  instruction_s_plus(struct_processus *s_e
                     return;                      return;
                 }                  }
   
                 for(i = 0; i < (long) ((*((struct_matrice *)                  for(i = 0; i < ((*((struct_matrice *)
                         (*s_objet_statistique).objet)).nombre_lignes                          (*s_objet_statistique).objet)).nombre_lignes
                         - nombre_lignes); i++)                          - nombre_lignes); i++)
                 {                  {
Line 933  instruction_s_plus(struct_processus *s_e Line 889  instruction_s_plus(struct_processus *s_e
   
                 free(tampon);                  free(tampon);
   
                 for(k = 0; i < (long) ((*((struct_matrice *)                  for(k = 0; i < ((*((struct_matrice *)
                         (*s_objet_statistique).objet)).nombre_lignes); i++, k++)                          (*s_objet_statistique).objet)).nombre_lignes); i++, k++)
                 {                  {
                     if ((((real8 **) (*((struct_matrice *)                      if ((((real8 **) (*((struct_matrice *)
                             (*s_objet_statistique).objet)).tableau)[i] =                              (*s_objet_statistique).objet)).tableau)[i] =
                             malloc(nombre_colonnes * sizeof(real8))) == NULL)                              malloc(((size_t) nombre_colonnes) *
                               sizeof(real8))) == NULL)
                     {                      {
                         (*s_etat_processus).erreur_systeme =                          (*s_etat_processus).erreur_systeme =
                                 d_es_allocation_memoire;                                  d_es_allocation_memoire;
Line 962  instruction_s_plus(struct_processus *s_e Line 919  instruction_s_plus(struct_processus *s_e
                         .nombre_lignes += nombre_lignes;                          .nombre_lignes += nombre_lignes;
   
                 if (((*((struct_matrice *) (*s_objet_statistique).objet))                  if (((*((struct_matrice *) (*s_objet_statistique).objet))
                         .tableau = malloc((*((struct_matrice *)                          .tableau = malloc(((size_t) (*((struct_matrice *)
                         (*s_objet_statistique).objet)).nombre_lignes *                          (*s_objet_statistique).objet)).nombre_lignes) *
                         sizeof(real8 *))) == NULL)                          sizeof(real8 *))) == NULL)
                 {                  {
                     (*s_etat_processus).erreur_systeme =                      (*s_etat_processus).erreur_systeme =
Line 971  instruction_s_plus(struct_processus *s_e Line 928  instruction_s_plus(struct_processus *s_e
                     return;                      return;
                 }                  }
   
                 for(i = 0; i < (long) ((*((struct_matrice *)                  for(i = 0; i < ((*((struct_matrice *)
                         (*s_objet_statistique).objet)).nombre_lignes                          (*s_objet_statistique).objet)).nombre_lignes
                         - nombre_lignes); i++)                          - nombre_lignes); i++)
                 {                  {
                     if ((((real8 **) (*((struct_matrice *)                      if ((((real8 **) (*((struct_matrice *)
                             (*s_objet_statistique).objet)).tableau)[i] =                              (*s_objet_statistique).objet)).tableau)[i] =
                             malloc(nombre_colonnes * sizeof(real8)))                              malloc(((size_t) nombre_colonnes) * sizeof(real8)))
                             == NULL)                              == NULL)
                     {                      {
                         (*s_etat_processus).erreur_systeme =                          (*s_etat_processus).erreur_systeme =
Line 997  instruction_s_plus(struct_processus *s_e Line 954  instruction_s_plus(struct_processus *s_e
   
                 free(tampon);                  free(tampon);
   
                 for(k = 0; i < (long) ((*((struct_matrice *)                  for(k = 0; i < ((*((struct_matrice *)
                         (*s_objet_statistique).objet)).nombre_lignes); i++, k++)                          (*s_objet_statistique).objet)).nombre_lignes); i++, k++)
                 {                  {
                     ((real8 **) (*((struct_matrice *) (*s_objet_statistique)                      ((real8 **) (*((struct_matrice *) (*s_objet_statistique)
Line 1051  instruction_s_plus(struct_processus *s_e Line 1008  instruction_s_plus(struct_processus *s_e
 void  void
 instruction_s_moins(struct_processus *s_etat_processus)  instruction_s_moins(struct_processus *s_etat_processus)
 {  {
     logical1                            presence_variable;  
   
     long                                i;  
   
     struct_objet                        *s_copie_statistique;      struct_objet                        *s_copie_statistique;
     struct_objet                        *s_objet;      struct_objet                        *s_objet;
     struct_objet                        *s_objet_statistique;      struct_objet                        *s_objet_statistique;
   
     unsigned long                       nombre_colonnes;      integer8                            i;
     unsigned long                       nombre_lignes;      integer8                            nombre_colonnes;
       integer8                            nombre_lignes;
   
     void                                *tampon;      void                                *tampon;
   
Line 1101  instruction_s_moins(struct_processus *s_ Line 1055  instruction_s_moins(struct_processus *s_
      * Recherche d'une variable globale référencée par SIGMA       * Recherche d'une variable globale référencée par SIGMA
      */       */
   
     if (recherche_variable(s_etat_processus, ds_sdat) == d_faux)      if (recherche_variable_globale(s_etat_processus, ds_sdat) == d_faux)
     {      {
         /*          /*
          * Aucune variable SIGMA           * Aucune variable SIGMA
          */           */
   
         (*s_etat_processus).erreur_systeme = d_es;          (*s_etat_processus).erreur_systeme = d_es;
         (*s_etat_processus).erreur_execution = d_ex_absence_observations;  
           if ((*s_etat_processus).erreur_execution == d_ex)
           {
               (*s_etat_processus).erreur_execution = d_ex_absence_observations;
           }
   
         return;          return;
     }      }
     else      else
     {      {
         /*          if ((*(*s_etat_processus).pointeur_variable_courante)
          * Il existe une variable locale SIGMA. Reste à vérifier l'existence                  .variable_verrouillee == d_vrai)
          * d'une variable SIGMA globale...  
          */  
   
         i = (*s_etat_processus).position_variable_courante;  
         presence_variable = d_faux;  
   
         while(i >= 0)  
         {          {
             if ((strcmp((*s_etat_processus).s_liste_variables[i].nom,              (*s_etat_processus).erreur_execution =
                     ds_sdat) == 0) && ((*s_etat_processus)                      d_ex_variable_verrouillee;
                     .s_liste_variables[i].niveau == 1))              return;
             {  
                 presence_variable = d_vrai;  
                 break;  
             }  
   
             i--;  
         }          }
   
         if (presence_variable == d_faux)          if (((*(*(*s_etat_processus).pointeur_variable_courante).objet)
                   .type != MIN) && ((*(*(*s_etat_processus)
                   .pointeur_variable_courante).objet).type != MRL))
         {          {
             (*s_etat_processus).erreur_execution = d_ex_absence_observations;              (*s_etat_processus).erreur_execution =
                       d_ex_matrice_statistique_invalide;
             return;              return;
         }          }
         else  
         {  
             (*s_etat_processus).position_variable_courante = i;  
   
             if ((*s_etat_processus).s_liste_variables[(*s_etat_processus)  
                     .position_variable_courante].variable_verrouillee ==  
                     d_vrai)  
             {  
                 (*s_etat_processus).erreur_execution =  
                         d_ex_variable_verrouillee;  
                 return;  
             }  
   
             if ((*s_etat_processus).s_liste_variables[i].objet == NULL)          if ((s_copie_statistique = copie_objet(s_etat_processus,
             {                  (*(*s_etat_processus).pointeur_variable_courante).objet, 'O'))
                 (*s_etat_processus).erreur_execution = d_ex_variable_partagee;                  == NULL)
                 return;          {
             }              (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
               return;
             if (((*((*s_etat_processus).s_liste_variables  
                     [(*s_etat_processus).position_variable_courante].objet))  
                     .type != MIN) && ((*((*s_etat_processus)  
                     .s_liste_variables[(*s_etat_processus)  
                     .position_variable_courante].objet)).type != MRL))  
             {  
                 (*s_etat_processus).erreur_execution =  
                         d_ex_matrice_statistique_invalide;  
                 return;  
             }  
   
             if ((s_copie_statistique = copie_objet(s_etat_processus,  
                     (*s_etat_processus)  
                     .s_liste_variables[(*s_etat_processus)  
                     .position_variable_courante].objet, 'O')) == NULL)  
             {  
                 (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;  
                 return;  
             }  
   
             liberation(s_etat_processus, (*s_etat_processus).s_liste_variables  
                     [(*s_etat_processus).position_variable_courante].objet);  
             (*s_etat_processus).s_liste_variables[(*s_etat_processus)  
                     .position_variable_courante].objet = s_copie_statistique;  
   
             nombre_colonnes = (*((struct_matrice *) (*((*s_etat_processus)  
                     .s_liste_variables[(*s_etat_processus)  
                     .position_variable_courante].objet)).objet))  
                     .nombre_colonnes;  
   
             nombre_lignes = (*((struct_matrice *) (*((*s_etat_processus)  
                     .s_liste_variables[(*s_etat_processus)  
                     .position_variable_courante].objet)).objet))  
                     .nombre_lignes;  
         }          }
   
           liberation(s_etat_processus, (*(*s_etat_processus)
                   .pointeur_variable_courante).objet);
           (*(*s_etat_processus).pointeur_variable_courante).objet =
                   s_copie_statistique;
   
           nombre_colonnes = (*((struct_matrice *) (*(*(*s_etat_processus)
                   .pointeur_variable_courante).objet).objet)).nombre_colonnes;
           nombre_lignes = (*((struct_matrice *) (*(*(*s_etat_processus)
                   .pointeur_variable_courante).objet).objet)).nombre_lignes;
     }      }
   
     s_objet_statistique = ((*s_etat_processus).s_liste_variables      s_objet_statistique = (*(*s_etat_processus).pointeur_variable_courante)
             [(*s_etat_processus).position_variable_courante]).objet;              .objet;
   
     if ((*s_objet_statistique).type == MIN)      if ((*s_objet_statistique).type == MIN)
     {      {
Line 1259  instruction_s_moins(struct_processus *s_ Line 1172  instruction_s_moins(struct_processus *s_
             if (nombre_lignes == 1)              if (nombre_lignes == 1)
             {              {
                 if (((*((struct_vecteur *) (*s_objet).objet))                  if (((*((struct_vecteur *) (*s_objet).objet))
                         .tableau = malloc(nombre_colonnes *                          .tableau = malloc(((size_t) nombre_colonnes) *
                         sizeof(integer8))) == NULL)                          sizeof(integer8))) == NULL)
                 {                  {
                     (*s_etat_processus).erreur_systeme =                      (*s_etat_processus).erreur_systeme =
Line 1267  instruction_s_moins(struct_processus *s_ Line 1180  instruction_s_moins(struct_processus *s_
                     return;                      return;
                 }                  }
   
                 for(i = 0; i < (long) nombre_colonnes; i++)                  for(i = 0; i < nombre_colonnes; i++)
                 {                  {
                     ((integer8 *) (*((struct_vecteur *) (*s_objet).objet))                      ((integer8 *) (*((struct_vecteur *) (*s_objet).objet))
                             .tableau)[i] = ((integer8 **) (*((struct_matrice *)                              .tableau)[i] = ((integer8 **) (*((struct_matrice *)
Line 1307  instruction_s_moins(struct_processus *s_ Line 1220  instruction_s_moins(struct_processus *s_
                     .nombre_lignes--;                      .nombre_lignes--;
   
             if (((*((struct_matrice *) (*s_objet_statistique)              if (((*((struct_matrice *) (*s_objet_statistique)
                     .objet)).tableau = malloc(                      .objet)).tableau = malloc(((size_t)
                     (*((struct_matrice *) (*s_objet_statistique).objet))                      (*((struct_matrice *) (*s_objet_statistique).objet))
                     .nombre_lignes * sizeof(integer8 *))) == NULL)                      .nombre_lignes) * sizeof(integer8 *))) == NULL)
             {              {
                 (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;                  (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
                 return;                  return;
             }              }
   
             for(i = 0; i < (long) (*((struct_matrice *) (*s_objet_statistique)              for(i = 0; i < (*((struct_matrice *) (*s_objet_statistique)
                     .objet)).nombre_lignes; i++)                      .objet)).nombre_lignes; i++)
             {              {
                 ((integer8 **) (*((struct_matrice *) (*s_objet_statistique)                  ((integer8 **) (*((struct_matrice *) (*s_objet_statistique)
Line 1387  instruction_s_moins(struct_processus *s_ Line 1300  instruction_s_moins(struct_processus *s_
             if (nombre_lignes == 1)              if (nombre_lignes == 1)
             {              {
                 if (((*((struct_vecteur *) (*s_objet).objet))                  if (((*((struct_vecteur *) (*s_objet).objet))
                         .tableau = malloc(nombre_colonnes *                          .tableau = malloc(((size_t) nombre_colonnes) *
                         sizeof(real8))) == NULL)                          sizeof(real8))) == NULL)
                 {                  {
                     (*s_etat_processus).erreur_systeme =                      (*s_etat_processus).erreur_systeme =
Line 1395  instruction_s_moins(struct_processus *s_ Line 1308  instruction_s_moins(struct_processus *s_
                     return;                      return;
                 }                  }
   
                 for(i = 0; i < (long) nombre_colonnes; i++)                  for(i = 0; i < nombre_colonnes; i++)
                 {                  {
                     ((real8 *) (*((struct_vecteur *) (*s_objet).objet))                      ((real8 *) (*((struct_vecteur *) (*s_objet).objet))
                             .tableau)[i] = ((real8 **) (*((struct_matrice *)                              .tableau)[i] = ((real8 **) (*((struct_matrice *)
Line 1435  instruction_s_moins(struct_processus *s_ Line 1348  instruction_s_moins(struct_processus *s_
                     .nombre_lignes--;                      .nombre_lignes--;
   
             if (((*((struct_matrice *) (*s_objet_statistique).objet))              if (((*((struct_matrice *) (*s_objet_statistique).objet))
                     .tableau = malloc((*((struct_matrice *)                      .tableau = malloc(((size_t) (*((struct_matrice *)
                     (*s_objet_statistique).objet)).nombre_lignes *                      (*s_objet_statistique).objet)).nombre_lignes) *
                     sizeof(real8 *))) == NULL)                      sizeof(real8 *))) == NULL)
             {              {
                 (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;                  (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
                 return;                  return;
             }              }
   
             for(i = 0; i < (long) (*((struct_matrice *) (*s_objet_statistique)              for(i = 0; i < (*((struct_matrice *) (*s_objet_statistique)
                     .objet)).nombre_lignes; i++)                      .objet)).nombre_lignes; i++)
             {              {
                 ((real8 **) (*((struct_matrice *) (*s_objet_statistique)                  ((real8 **) (*((struct_matrice *) (*s_objet_statistique)

Removed from v.1.16.2.1  
changed lines
  Added in v.1.53


CVSweb interface <joel.bertrand@systella.fr>