--- rpl/src/instructions_e2.c 2012/12/19 09:58:24 1.43 +++ rpl/src/instructions_e2.c 2015/06/08 14:11:35 1.61 @@ -1,7 +1,7 @@ /* ================================================================================ - RPL/2 (R) version 4.1.12 - Copyright (C) 1989-2012 Dr. BERTRAND Joël + RPL/2 (R) version 4.1.22 + Copyright (C) 1989-2015 Dr. BERTRAND Joël This file is part of RPL/2. @@ -623,9 +623,9 @@ instruction_errm(struct_processus *s_eta { struct_objet *s_objet_resultat; - unsigned int registre_erreur_execution; - unsigned int registre_erreur_systeme; - unsigned int registre_exception; + int registre_erreur_execution; + int registre_erreur_systeme; + int registre_exception; (*s_etat_processus).erreur_execution = d_ex; @@ -1018,7 +1018,7 @@ instruction_externals(struct_processus * { logical1 ambiguite; - unsigned long i; + integer8 i; struct_liste_chainee *l_element_courant; @@ -1187,7 +1187,7 @@ instruction_exit(struct_processus *s_eta unsigned char *instruction_majuscule; unsigned char *tampon; - unsigned long niveau; + integer8 niveau; void (*fonction)(); @@ -1287,7 +1287,7 @@ instruction_exit(struct_processus *s_eta tampon = (*s_etat_processus).instruction_courante; niveau = 1; - instruction_majuscule = conversion_majuscule(""); + instruction_majuscule = conversion_majuscule(s_etat_processus, ""); if (drapeau_boucle_definie == d_vrai) { @@ -1305,7 +1305,7 @@ instruction_exit(struct_processus *s_eta } (*s_etat_processus).erreur_systeme = d_es; - instruction_majuscule = conversion_majuscule( + instruction_majuscule = conversion_majuscule(s_etat_processus, (*s_etat_processus).instruction_courante); if (instruction_majuscule == NULL) @@ -1323,6 +1323,7 @@ instruction_exit(struct_processus *s_eta (strcmp(instruction_majuscule, "DO") == 0) || (strcmp(instruction_majuscule, "WHILE") == 0) || (strcmp(instruction_majuscule, "FOR") == 0) || + (strcmp(instruction_majuscule, "FORALL") == 0) || (strcmp(instruction_majuscule, "START") == 0) || (strcmp(instruction_majuscule, "SELECT") == 0) || (strcmp(instruction_majuscule, "CRITICAL") == 0) @@ -1336,7 +1337,8 @@ instruction_exit(struct_processus *s_eta else { if ((strcmp(instruction_majuscule, "FOR") == 0) || - (strcmp(instruction_majuscule, "START") + (strcmp(instruction_majuscule, "FORALL") == 0) + || (strcmp(instruction_majuscule, "START") == 0)) { niveau++; @@ -1431,7 +1433,7 @@ instruction_exit(struct_processus *s_eta return; } - instruction_majuscule = conversion_majuscule( + instruction_majuscule = conversion_majuscule(s_etat_processus, (*s_etat_processus).instruction_courante); if (instruction_majuscule == NULL) @@ -1449,6 +1451,7 @@ instruction_exit(struct_processus *s_eta (strcmp(instruction_majuscule, "DO") == 0) || (strcmp(instruction_majuscule, "WHILE") == 0) || (strcmp(instruction_majuscule, "FOR") == 0) || + (strcmp(instruction_majuscule, "FORALL") == 0) || (strcmp(instruction_majuscule, "START") == 0) || (strcmp(instruction_majuscule, "SELECT") == 0) || (strcmp(instruction_majuscule, "CRITICAL") == 0) @@ -1592,6 +1595,7 @@ instruction_exit(struct_processus *s_eta (fonction == instruction_do) || (fonction == instruction_while) || (fonction == instruction_for) || + (fonction == instruction_forall) || (fonction == instruction_start) || (fonction == instruction_select) || (fonction == instruction_case) || @@ -1606,6 +1610,7 @@ instruction_exit(struct_processus *s_eta else { if ((fonction == instruction_for) || + (fonction == instruction_forall) || (fonction == instruction_start)) { niveau++; @@ -1715,6 +1720,7 @@ instruction_exit(struct_processus *s_eta (fonction == instruction_do) || (fonction == instruction_while) || (fonction == instruction_for) || + (fonction == instruction_forall) || (fonction == instruction_start) || (fonction == instruction_select) || (fonction == instruction_critical) || @@ -1823,8 +1829,9 @@ instruction_exit(struct_processus *s_eta if ((drapeau_boucle_definie == d_vrai) && (drapeau_presence_fin_boucle == d_vrai)) { - presence_compteur = ((*(*s_etat_processus).l_base_pile_systeme) - .type_cloture == 'F') ? d_vrai : d_faux; + presence_compteur = (((*(*s_etat_processus).l_base_pile_systeme) + .type_cloture == 'F') || ((*(*s_etat_processus) + .l_base_pile_systeme).type_cloture == 'A')) ? d_vrai : d_faux; if (((*(*s_etat_processus).l_base_pile_systeme).type_cloture != 'S') && (presence_compteur == d_faux))