--- rpl/src/instructions_f1.c 2014/04/25 07:37:31 1.63 +++ rpl/src/instructions_f1.c 2015/02/19 11:01:23 1.69 @@ -1,7 +1,7 @@ /* ================================================================================ - RPL/2 (R) version 4.1.18 - Copyright (C) 1989-2014 Dr. BERTRAND Joël + RPL/2 (R) version 4.1.21 + Copyright (C) 1989-2015 Dr. BERTRAND Joël This file is part of RPL/2. @@ -189,6 +189,7 @@ instruction_fleche(struct_processus *s_e if ((*s_etat_processus).instruction_valide == 'N') { + (*s_etat_processus).type_en_cours = NON; recherche_type(s_etat_processus); if ((*s_etat_processus).erreur_execution != d_ex) @@ -223,9 +224,19 @@ instruction_fleche(struct_processus *s_e else if ((*((struct_nom *) (*(*(*s_etat_processus).l_base_pile) .donnee).objet)).symbole == d_vrai) { - (*s_etat_processus).erreur_execution = d_ex_nom_invalide; - (*s_etat_processus).instruction_courante = tampon; - return; + (*s_etat_processus).niveau_courant++; + fin_scrutation = d_vrai; + presence_expression_algebrique = d_vrai; + + if (depilement(s_etat_processus, &((*s_etat_processus) + .l_base_pile), &s_expression_algebrique) + == d_erreur) + { + (*s_etat_processus).erreur_execution = + d_ex_manque_argument; + (*s_etat_processus).instruction_courante = tampon; + return; + } } else { @@ -292,6 +303,15 @@ instruction_fleche(struct_processus *s_e (*s_etat_processus).erreur_execution = d_ex_nom_invalide; return; } + else if ((*((struct_nom *) (*(*l_element_courant).donnee).objet)) + .symbole == d_vrai) + { + (*s_etat_processus).niveau_courant++; + fin_scrutation = d_vrai; + presence_expression_algebrique = d_vrai; + + s_expression_algebrique = (*l_element_courant).donnee; + } else { if ((s_objet_elementaire = copie_objet(s_etat_processus, @@ -733,14 +753,13 @@ instruction_fleche(struct_processus *s_e liberation(s_etat_processus, s_expression_algebrique); } + (*s_etat_processus).autorisation_empilement_programme = 'Y'; (*s_etat_processus).niveau_courant--; if (retrait_variables_par_niveau(s_etat_processus) == d_erreur) { return; } - - (*s_etat_processus).autorisation_empilement_programme = 'Y'; } return; @@ -1054,6 +1073,7 @@ instruction_for(struct_processus *s_etat return; } + (*s_etat_processus).type_en_cours = NON; recherche_type(s_etat_processus); free((*s_etat_processus).instruction_courante);