--- rpl/src/instructions_s6.c 2011/04/21 16:00:59 1.19 +++ rpl/src/instructions_s6.c 2011/06/10 11:35:13 1.20 @@ -38,10 +38,6 @@ void instruction_sdev(struct_processus *s_etat_processus) { - logical1 presence_variable; - - long i; - struct_objet *s_objet_statistique; struct_objet *s_objet_resultat; struct_objet *s_objet_temporaire; @@ -85,74 +81,38 @@ instruction_sdev(struct_processus *s_eta * 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 */ (*s_etat_processus).erreur_systeme = d_es; - (*s_etat_processus).erreur_execution = d_ex_absence_observations; - return; - } - else - { - /* - * Il existe une variable locale SIGMA. Reste à vérifier l'existence - * d'une variable SIGMA globale... - */ - i = (*s_etat_processus).position_variable_courante; - presence_variable = d_faux; - - while(i >= 0) + if ((*s_etat_processus).erreur_execution == d_ex) { - 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; - break; - } - - i--; + (*s_etat_processus).erreur_execution = d_ex_absence_observations; } - if (presence_variable == d_faux) + return; + } + else + { + 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; } - else - { - (*s_etat_processus).position_variable_courante = i; - - 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; - } - nombre_colonnes = (*((struct_matrice *) (*((*s_etat_processus) - .s_liste_variables[(*s_etat_processus) - .position_variable_courante].objet)).objet)) - .nombre_colonnes; - } + nombre_colonnes = (*((struct_matrice *) (*(*(*s_etat_processus) + .pointeur_variable_courante).objet).objet)).nombre_colonnes; } - s_objet_statistique = ((*s_etat_processus).s_liste_variables - [(*s_etat_processus).position_variable_courante]).objet; + s_objet_statistique = (*(*s_etat_processus).pointeur_variable_courante) + .objet; if (((*s_objet_statistique).type == MIN) || ((*s_objet_statistique).type == MRL)) @@ -1239,11 +1199,8 @@ instruction_scale(struct_processus *s_et void instruction_scls(struct_processus *s_etat_processus) { - logical1 presence_variable; logical1 matrice_entiere; - long i; - real8 valeur_courante; struct_objet *s_objet_statistique; @@ -1287,47 +1244,23 @@ instruction_scls(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--; - } - - if (presence_variable == d_faux) - { - (*s_etat_processus).erreur_execution = d_ex_absence_observations; - return; - } - - if ((*s_etat_processus).s_liste_variables[i].objet == NULL) - { - (*s_etat_processus).erreur_execution = d_ex_variable_partagee; + (*s_etat_processus).erreur_systeme = d_es; return; } - s_objet_statistique = (*s_etat_processus).s_liste_variables[i].objet; + s_objet_statistique = (*(*s_etat_processus).pointeur_variable_courante) + .objet; if ((*s_objet_statistique).type == MIN) { @@ -1601,9 +1534,6 @@ void instruction_spar(struct_processus *s_etat_processus) { logical1 presence_matrice_statistique; - logical1 presence_variable; - - long i; struct_liste_chainee *l_ancienne_base; struct_liste_chainee *l_nouvelle_base; @@ -1713,54 +1643,24 @@ instruction_spar(struct_processus *s_eta return; } - if (recherche_variable(s_etat_processus, ds_sdat) == d_faux) + if (recherche_variable_globale(s_etat_processus, ds_sdat) == d_faux) { /* * Aucune variable SIGMA */ (*s_etat_processus).erreur_systeme = d_es; - (*s_etat_processus).erreur_execution = d_ex; - presence_matrice_statistique = d_faux; - } - else - { - /* - * Il existe une variable locale SIGMA. Reste à vérifier l'existence - * d'une variable SIGMA globale... - */ - - i = (*s_etat_processus).position_variable_courante; - presence_variable = d_faux; - while(i >= 0) + if ((*s_etat_processus).erreur_execution == d_ex) { - 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; - break; - } - - i--; + (*s_etat_processus).erreur_execution = d_ex; } - if (presence_variable == d_faux) - { - presence_matrice_statistique = d_faux; - } - else - { - if ((*s_etat_processus).s_liste_variables[i].objet == NULL) - { - (*s_etat_processus).erreur_execution = d_ex_variable_partagee; - return; - } - - presence_matrice_statistique = d_vrai; - (*s_etat_processus).position_variable_courante = i; - } + presence_matrice_statistique = d_faux; + } + else + { + presence_matrice_statistique = d_vrai; } if (presence_matrice_statistique == d_faux) @@ -1778,11 +1678,9 @@ instruction_spar(struct_processus *s_eta } else { - 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)) + if (((*(*(*s_etat_processus).pointeur_variable_courante).objet) + .type != MIN) && ((*(*(*s_etat_processus) + .pointeur_variable_courante).objet).type != MRL)) { if (((*(*l_nouvelle_base).donnee).objet = malloc(9 * sizeof(unsigned char))) == NULL) @@ -1816,8 +1714,7 @@ instruction_spar(struct_processus *s_eta (*((integer8 *) (*((*((struct_liste_chainee *) (*(*l_nouvelle_base) .donnee).objet)).donnee)).objet)) = (*((struct_matrice *) - (*((*s_etat_processus).s_liste_variables - [(*s_etat_processus).position_variable_courante].objet)) + (*(*(*s_etat_processus).pointeur_variable_courante).objet) .objet)).nombre_lignes; if (((*((struct_liste_chainee *) (*(*l_nouvelle_base).donnee) @@ -1841,9 +1738,8 @@ instruction_spar(struct_processus *s_eta (*((integer8 *) (*((*(*((struct_liste_chainee *) (*(*l_nouvelle_base).donnee).objet)).suivant).donnee)) - .objet)) = (*((struct_matrice *) (*((*s_etat_processus) - .s_liste_variables[(*s_etat_processus) - .position_variable_courante].objet)).objet)) + .objet)) = (*((struct_matrice *) (*(*(*s_etat_processus) + .pointeur_variable_courante).objet).objet)) .nombre_colonnes; } }