--- rpl/src/instructions_d4.c 2010/08/06 15:33:00 1.14 +++ rpl/src/instructions_d4.c 2012/12/19 09:58:24 1.45 @@ -1,7 +1,7 @@ /* ================================================================================ - RPL/2 (R) version 4.0.18 - Copyright (C) 1989-2010 Dr. BERTRAND Joël + RPL/2 (R) version 4.1.12 + Copyright (C) 1989-2012 Dr. BERTRAND Joël This file is part of RPL/2. @@ -666,11 +666,8 @@ instruction_drws(struct_processus *s_eta int dimensions; - logical1 presence_variable; logical1 matrice_entiere; - long i; - struct_objet *s_objet_statistique; unsigned char *nom_fichier; @@ -717,46 +714,24 @@ instruction_drws(struct_processus *s_eta * 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. */ - (*s_etat_processus).erreur_execution = d_ex_absence_observations; - (*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)) + if ((*s_etat_processus).erreur_execution == d_ex) { - presence_variable = d_vrai; - break; + (*s_etat_processus).erreur_execution = d_ex_absence_observations; } - 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; - } + s_objet_statistique = (*(*s_etat_processus).pointeur_variable_courante) + .objet; if ((*s_objet_statistique).type == MIN) { @@ -1083,8 +1058,7 @@ instruction_decr(struct_processus *s_eta liberation(s_etat_processus, s_objet_argument); - if ((*s_etat_processus).s_liste_variables - [(*s_etat_processus).position_variable_courante] + if ((*(*s_etat_processus).pointeur_variable_courante) .variable_verrouillee == d_vrai) { (*s_etat_processus).erreur_execution = @@ -1092,25 +1066,14 @@ instruction_decr(struct_processus *s_eta return; } - if ((*s_etat_processus).s_liste_variables - [(*s_etat_processus).position_variable_courante].objet + if ((*(*s_etat_processus).pointeur_variable_courante).objet == NULL) { - if (pthread_mutex_lock(&((*(*s_etat_processus) - .s_liste_variables_partagees).mutex)) != 0) - { - (*s_etat_processus).erreur_systeme = d_es_processus; - return; - } - if (recherche_variable_partagee(s_etat_processus, - (*s_etat_processus).s_liste_variables - [(*s_etat_processus).position_variable_courante].nom, - (*s_etat_processus).s_liste_variables - [(*s_etat_processus).position_variable_courante] - .variable_partagee, (*s_etat_processus).s_liste_variables - [(*s_etat_processus).position_variable_courante] - .origine) == d_faux) + (*(*s_etat_processus).pointeur_variable_courante).nom, + (*(*s_etat_processus).pointeur_variable_courante) + .variable_partagee, (*(*s_etat_processus) + .pointeur_variable_courante).origine) == NULL) { (*s_etat_processus).erreur_systeme = d_es; (*s_etat_processus).erreur_execution = @@ -1120,15 +1083,13 @@ instruction_decr(struct_processus *s_eta } s_objet_argument = (*(*s_etat_processus) - .s_liste_variables_partagees).table - [(*(*s_etat_processus).s_liste_variables_partagees) - .position_variable].objet; + .pointeur_variable_partagee_courante).objet; variable_partagee = d_vrai; } else { - s_objet_argument = (*s_etat_processus).s_liste_variables - [(*s_etat_processus).position_variable_courante].objet; + s_objet_argument = (*(*s_etat_processus).pointeur_variable_courante) + .objet; variable_partagee = d_faux; } @@ -1138,7 +1099,7 @@ instruction_decr(struct_processus *s_eta if (variable_partagee == d_vrai) { if (pthread_mutex_unlock(&((*(*s_etat_processus) - .s_liste_variables_partagees).mutex)) != 0) + .pointeur_variable_partagee_courante).mutex)) != 0) { (*s_etat_processus).erreur_systeme = d_es_processus; return; @@ -1153,17 +1114,14 @@ instruction_decr(struct_processus *s_eta if (variable_partagee == d_vrai) { - (*s_etat_processus).s_liste_variables[(*s_etat_processus) - .position_variable_courante].objet = NULL; - (*(*s_etat_processus) - .s_liste_variables_partagees).table - [(*(*s_etat_processus).s_liste_variables_partagees) - .position_variable].objet = s_copie_argument; + (*(*s_etat_processus).pointeur_variable_courante).objet = NULL; + (*(*s_etat_processus).pointeur_variable_partagee_courante).objet = + s_copie_argument; } else { - (*s_etat_processus).s_liste_variables[(*s_etat_processus) - .position_variable_courante].objet = s_copie_argument; + (*(*s_etat_processus).pointeur_variable_courante).objet = + s_copie_argument; } if ((*s_copie_argument).type == INT) @@ -1173,7 +1131,7 @@ instruction_decr(struct_processus *s_eta if (variable_partagee == d_vrai) { if (pthread_mutex_unlock(&((*(*s_etat_processus) - .s_liste_variables_partagees).mutex)) != 0) + .pointeur_variable_partagee_courante).mutex)) != 0) { (*s_etat_processus).erreur_systeme = d_es_processus; return; @@ -1185,7 +1143,7 @@ instruction_decr(struct_processus *s_eta if (variable_partagee == d_vrai) { if (pthread_mutex_unlock(&((*(*s_etat_processus) - .s_liste_variables_partagees).mutex)) != 0) + .pointeur_variable_partagee_courante).mutex)) != 0) { (*s_etat_processus).erreur_systeme = d_es_processus; return;