Diff for /rpl/src/instructions_d4.c between versions 1.12 and 1.33

version 1.12, 2010/07/14 14:19:35 version 1.33, 2011/11/15 07:01:37
Line 1 Line 1
 /*  /*
 ================================================================================  ================================================================================
   RPL/2 (R) version 4.0.18    RPL/2 (R) version 4.1.4
   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 20 Line 20
 */  */
   
   
 #include "rpl.conv.h"  #include "rpl-conv.h"
   
   
 /*  /*
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;          return;
     }      }
   
     if ((s_objet_statistique = (*s_etat_processus).s_liste_variables[i].objet)      s_objet_statistique = (*(*s_etat_processus).pointeur_variable_courante)
             == NULL)              .objet;
     {  
         (*s_etat_processus).erreur_execution = d_ex_variable_partagee;  
         return;  
     }  
   
     if ((*s_objet_statistique).type == MIN)      if ((*s_objet_statistique).type == MIN)
     {      {
Line 1083  instruction_decr(struct_processus *s_eta Line 1058  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 1066  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 1077  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 1097  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 1123  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 1131  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.12  
changed lines
  Added in v.1.33


CVSweb interface <joel.bertrand@systella.fr>