Diff for /rpl/src/instructions_d4.c between versions 1.15 and 1.22

version 1.15, 2010/08/26 19:07:37 version 1.22, 2011/06/10 11:35:12
Line 1 Line 1
 /*  /*
 ================================================================================  ================================================================================
   RPL/2 (R) version 4.0.19    RPL/2 (R) version 4.1.0.prerelease.0
   Copyright (C) 1989-2010 Dr. BERTRAND Joël    Copyright (C) 1989-2011 Dr. BERTRAND Joël
   
   This file is part of RPL/2.    This file is part of RPL/2.
   
Line 666  instruction_drws(struct_processus *s_eta Line 666  instruction_drws(struct_processus *s_eta
   
     int                         dimensions;      int                         dimensions;
   
     logical1                    presence_variable;  
     logical1                    matrice_entiere;      logical1                    matrice_entiere;
   
     long                        i;  
   
     struct_objet                *s_objet_statistique;      struct_objet                *s_objet_statistique;
   
     unsigned char               *nom_fichier;      unsigned char               *nom_fichier;
Line 717  instruction_drws(struct_processus *s_eta Line 714  instruction_drws(struct_processus *s_eta
      * Vérification de la présence de la matrice statistique       * Vérification de la présence de la matrice statistique
      */       */
   
     if (recherche_variable(s_etat_processus, ds_sdat) == d_faux)      if (recherche_variable_globale(s_etat_processus, ds_sdat) == d_faux)
     {      {
         /*          /*
          * Aucune variable ds_sdat n'existe.           * Aucune variable ds_sdat n'existe.
          */           */
   
         (*s_etat_processus).erreur_execution = d_ex_absence_observations;          if ((*s_etat_processus).erreur_execution == d_ex)
         (*s_etat_processus).erreur_systeme = d_es;  
   
         return;  
     }  
   
     i = (*s_etat_processus).position_variable_courante;  
     presence_variable = d_faux;  
   
     while(i >= 0)  
     {  
         if ((strcmp((*s_etat_processus).s_liste_variables[i].nom,  
                 ds_sdat) == 0) && ((*s_etat_processus)  
                 .s_liste_variables[i].niveau == 1))  
         {          {
             presence_variable = d_vrai;              (*s_etat_processus).erreur_execution = d_ex_absence_observations;
             break;  
         }          }
   
         i--;          (*s_etat_processus).erreur_systeme = d_es;
     }  
   
     if (presence_variable == d_faux)  
     {  
         (*s_etat_processus).erreur_execution = d_ex_absence_observations;  
         return;  
     }  
   
     if ((s_objet_statistique = (*s_etat_processus).s_liste_variables[i].objet)  
             == NULL)  
     {  
         (*s_etat_processus).erreur_execution = d_ex_variable_partagee;  
         return;          return;
     }      }
   
Line 1083  instruction_decr(struct_processus *s_eta Line 1055  instruction_decr(struct_processus *s_eta
   
         liberation(s_etat_processus, s_objet_argument);          liberation(s_etat_processus, s_objet_argument);
   
         if ((*s_etat_processus).s_liste_variables          if ((*(*s_etat_processus).pointeur_variable_courante)
                 [(*s_etat_processus).position_variable_courante]  
                 .variable_verrouillee == d_vrai)                  .variable_verrouillee == d_vrai)
         {          {
             (*s_etat_processus).erreur_execution =              (*s_etat_processus).erreur_execution =
Line 1092  instruction_decr(struct_processus *s_eta Line 1063  instruction_decr(struct_processus *s_eta
             return;              return;
         }          }
   
         if ((*s_etat_processus).s_liste_variables          if ((*(*s_etat_processus).pointeur_variable_courante).objet
                 [(*s_etat_processus).position_variable_courante].objet  
                 == NULL)                  == NULL)
         {          {
             if (pthread_mutex_lock(&((*(*s_etat_processus)              if (pthread_mutex_lock(&((*(*s_etat_processus)
Line 1104  instruction_decr(struct_processus *s_eta Line 1074  instruction_decr(struct_processus *s_eta
             }              }
   
             if (recherche_variable_partagee(s_etat_processus,              if (recherche_variable_partagee(s_etat_processus,
                     (*s_etat_processus).s_liste_variables                      (*(*s_etat_processus).pointeur_variable_courante).nom,
                     [(*s_etat_processus).position_variable_courante].nom,                      (*(*s_etat_processus).pointeur_variable_courante)
                     (*s_etat_processus).s_liste_variables                      .variable_partagee, (*(*s_etat_processus)
                     [(*s_etat_processus).position_variable_courante]                      .pointeur_variable_courante).origine) == d_faux)
                     .variable_partagee, (*s_etat_processus).s_liste_variables  
                     [(*s_etat_processus).position_variable_courante]  
                     .origine) == d_faux)  
             {              {
                 (*s_etat_processus).erreur_systeme = d_es;                  (*s_etat_processus).erreur_systeme = d_es;
                 (*s_etat_processus).erreur_execution =                  (*s_etat_processus).erreur_execution =
Line 1127  instruction_decr(struct_processus *s_eta Line 1094  instruction_decr(struct_processus *s_eta
         }          }
         else          else
         {          {
             s_objet_argument = (*s_etat_processus).s_liste_variables              s_objet_argument = (*(*s_etat_processus).pointeur_variable_courante)
                     [(*s_etat_processus).position_variable_courante].objet;                      .objet;
             variable_partagee = d_faux;              variable_partagee = d_faux;
         }          }
   
Line 1153  instruction_decr(struct_processus *s_eta Line 1120  instruction_decr(struct_processus *s_eta
   
         if (variable_partagee == d_vrai)          if (variable_partagee == d_vrai)
         {          {
             (*s_etat_processus).s_liste_variables[(*s_etat_processus)              (*(*s_etat_processus).pointeur_variable_courante).objet = NULL;
                     .position_variable_courante].objet = NULL;  
             (*(*s_etat_processus)              (*(*s_etat_processus)
                     .s_liste_variables_partagees).table                      .s_liste_variables_partagees).table
                     [(*(*s_etat_processus).s_liste_variables_partagees)                      [(*(*s_etat_processus).s_liste_variables_partagees)
Line 1162  instruction_decr(struct_processus *s_eta Line 1128  instruction_decr(struct_processus *s_eta
         }          }
         else          else
         {          {
             (*s_etat_processus).s_liste_variables[(*s_etat_processus)              (*(*s_etat_processus).pointeur_variable_courante).objet =
                     .position_variable_courante].objet = s_copie_argument;                      s_copie_argument;
         }          }
   
         if ((*s_copie_argument).type == INT)          if ((*s_copie_argument).type == INT)

Removed from v.1.15  
changed lines
  Added in v.1.22


CVSweb interface <joel.bertrand@systella.fr>