--- rpl/src/sequenceur.c 2010/12/08 20:58:16 1.27 +++ rpl/src/sequenceur.c 2011/09/26 15:57:17 1.45 @@ -1,7 +1,7 @@ /* ================================================================================ - RPL/2 (R) version 4.0.20 - Copyright (C) 1989-2010 Dr. BERTRAND Joël + RPL/2 (R) version 4.1.4 + Copyright (C) 1989-2011 Dr. BERTRAND Joël This file is part of RPL/2. @@ -63,8 +63,6 @@ sequenceur(struct_processus *s_etat_proc unsigned char tampon_retour; unsigned char *t_ligne; - unsigned long i; - unsigned long j; unsigned long niveau; unsigned long position_courante; @@ -109,9 +107,6 @@ sequenceur(struct_processus *s_etat_proc -------------------------------------------------------------------------------- */ - i = 0; - j = 0; - do { drapeau_appel_definition = d_faux; @@ -555,9 +550,8 @@ sequenceur(struct_processus *s_etat_proc d_vrai) && ((*s_etat_processus) .autorisation_evaluation_nom == 'Y')) { - if (((*s_etat_processus).s_liste_variables - [(*s_etat_processus) - .position_variable_courante]).objet == NULL) + if ((*(*s_etat_processus).pointeur_variable_courante) + .objet == NULL) { /* @@ -574,12 +568,10 @@ sequenceur(struct_processus *s_etat_proc { printf("[%d] Empilement de la variable " "partagée %s de type %d\n", - (int) getpid(), - (*s_etat_processus) + (int) getpid(), (*s_etat_processus) .instruction_courante, - (*((*s_etat_processus).s_liste_variables - [(*s_etat_processus) - .position_variable_courante]).objet) + (*(*(*s_etat_processus) + .pointeur_variable_courante).objet) .type); } else @@ -588,9 +580,8 @@ sequenceur(struct_processus *s_etat_proc "variable \n", (int) getpid(), (*s_etat_processus) .instruction_courante, - (*((*s_etat_processus).s_liste_variables - [(*s_etat_processus) - .position_variable_courante]).objet) + (*(*(*s_etat_processus) + .pointeur_variable_courante).objet) .type); } @@ -606,13 +597,11 @@ sequenceur(struct_processus *s_etat_proc } 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, 'P') == d_vrai) + (*(*s_etat_processus) + .pointeur_variable_courante).nom, + (*(*s_etat_processus) + .pointeur_variable_courante).variable_partagee, + 'P') == d_vrai) { // La variable existe. @@ -672,8 +661,7 @@ sequenceur(struct_processus *s_etat_proc -------------------------------------------------------------------------------- */ - else if ((*((*s_etat_processus).s_liste_variables - [(*s_etat_processus).position_variable_courante]) + else if ((*(*(*s_etat_processus).pointeur_variable_courante) .objet).type == ADR) { @@ -742,10 +730,9 @@ sequenceur(struct_processus *s_etat_proc (*s_etat_processus).position_courante = (*((unsigned long *) - ((*((*s_etat_processus).s_liste_variables - [(*s_etat_processus) - .position_variable_courante] - .objet)).objet))); + ((*(*(*s_etat_processus) + .pointeur_variable_courante) + .objet).objet))); drapeau_appel_definition = d_vrai; } @@ -763,9 +750,8 @@ sequenceur(struct_processus *s_etat_proc (int) getpid(), (*s_etat_processus) .instruction_courante, - (*((*s_etat_processus).s_liste_variables - [(*s_etat_processus) - .position_variable_courante]).objet) + (*(*(*s_etat_processus) + .pointeur_variable_courante).objet) .type); } else @@ -774,9 +760,8 @@ sequenceur(struct_processus *s_etat_proc "\n", (int) getpid(), (*s_etat_processus) .instruction_courante, - (*((*s_etat_processus).s_liste_variables - [(*s_etat_processus) - .position_variable_courante]).objet) + (*(*(*s_etat_processus) + .pointeur_variable_courante).objet) .type); } @@ -784,9 +769,8 @@ sequenceur(struct_processus *s_etat_proc } if ((s_objet = copie_objet(s_etat_processus, - ((*s_etat_processus) - .s_liste_variables[(*s_etat_processus) - .position_variable_courante]).objet, 'P')) + (*(*s_etat_processus) + .pointeur_variable_courante).objet, 'P')) == NULL) { (*s_etat_processus).erreur_systeme = @@ -820,8 +804,12 @@ sequenceur(struct_processus *s_etat_proc { if ((*s_etat_processus).l_base_pile == NULL) { - (*s_etat_processus).erreur_execution = - d_ex_manque_argument; + if ((*s_etat_processus).erreur_execution != + d_ex_nom_implicite) + { + (*s_etat_processus).erreur_execution = + d_ex_manque_argument; + } } else if ((*(*(*s_etat_processus).l_base_pile).donnee) .type == NOM) @@ -1167,16 +1155,13 @@ sequenceur(struct_processus *s_etat_proc if (recherche_variable(s_etat_processus, (*s_etat_processus).instruction_courante) == d_vrai) { - if (((*s_etat_processus).s_liste_variables - [(*s_etat_processus) - .position_variable_courante]).objet == NULL) + if ((*(*s_etat_processus).pointeur_variable_courante) + .objet == NULL) { // Variable partagée } - else if ((*((*s_etat_processus).s_liste_variables - [(*s_etat_processus) - .position_variable_courante]).objet).type == - ADR) + else if ((*(*(*s_etat_processus) + .pointeur_variable_courante).objet).type == ADR) { empilement_pile_systeme(s_etat_processus); @@ -1199,10 +1184,9 @@ sequenceur(struct_processus *s_etat_proc (*s_etat_processus).position_courante = (*((unsigned long *) - ((*((*s_etat_processus).s_liste_variables - [(*s_etat_processus) - .position_variable_courante] - .objet)).objet))); + ((*(*(*s_etat_processus) + .pointeur_variable_courante) + .objet).objet))); (*s_etat_processus) .autorisation_empilement_programme = 'N'; @@ -1409,7 +1393,8 @@ sequenceur(struct_processus *s_etat_proc if ((*s_etat_processus).var_volatile_processus_pere == 0) { - kill((*s_etat_processus).pid_processus_pere, SIGALRM); + envoi_signal_processus((*s_etat_processus).pid_processus_pere, + rpl_sigalrm); } else {