Diff for /rpl/src/instructions_t1.c between versions 1.8 and 1.11

version 1.8, 2010/05/24 10:58:35 version 1.11, 2010/07/13 08:59:20
Line 1 Line 1
 /*  /*
 ================================================================================  ================================================================================
   RPL/2 (R) version 4.0.16    RPL/2 (R) version 4.0.17
   Copyright (C) 1989-2010 Dr. BERTRAND Joël    Copyright (C) 1989-2010 Dr. BERTRAND Joël
   
   This file is part of RPL/2.    This file is part of RPL/2.
Line 214  instruction_then(struct_processus *s_eta Line 214  instruction_then(struct_processus *s_eta
   
     struct_liste_chainee            *s_registre;      struct_liste_chainee            *s_registre;
   
       struct_liste_pile_systeme       *l_element_courant;
   
     struct_objet                    *s_objet;      struct_objet                    *s_objet;
   
     unsigned char                   *instruction_majuscule;      unsigned char                   *instruction_majuscule;
Line 365  instruction_then(struct_processus *s_eta Line 367  instruction_then(struct_processus *s_eta
              * THEN et ELSE ou END.               * THEN et ELSE ou END.
              */               */
   
             if (((*(*s_etat_processus).l_base_pile_systeme).clause !=              if (((*(*s_etat_processus).l_base_pile_systeme).clause ==
                     'K') && ((*(*s_etat_processus).l_base_pile_systeme)                      'I') || ((*(*s_etat_processus).l_base_pile_systeme).clause
                     .clause != 'C'))                      == 'R'))
             {              {
                 (*(*s_etat_processus).l_base_pile_systeme).clause = 'T';                  (*(*s_etat_processus).l_base_pile_systeme).clause = 'T';
             }              }
             else              else
             {              {
                 (*(*s_etat_processus).l_base_pile_systeme).clause = 'Q';                  if ((*s_etat_processus).l_base_pile_systeme == NULL)
                   {
                       (*s_etat_processus).erreur_systeme = d_es_pile_vide;
                       return;
                   }
   
                   l_element_courant = (*(*s_etat_processus).l_base_pile_systeme)
                           .suivant;
   
                   while(l_element_courant != NULL)
                   {
                       if ((*l_element_courant).clause == 'K')
                       {
                           (*l_element_courant).clause = 'Q';
                           break;
                       }
   
                       l_element_courant = (*l_element_courant).suivant;
                   }
             }              }
         }          }
         else          else
Line 480  instruction_then(struct_processus *s_eta Line 500  instruction_then(struct_processus *s_eta
                             }                              }
                             else if (strcmp(instruction_majuscule, "END") == 0)                              else if (strcmp(instruction_majuscule, "END") == 0)
                             {                              {
                                   instruction_end(s_etat_processus);
                                 drapeau_fin = d_vrai;                                  drapeau_fin = d_vrai;
                             }                              }
                             else                              else
Line 592  instruction_then(struct_processus *s_eta Line 613  instruction_then(struct_processus *s_eta
                                 if (((*(*s_etat_processus).l_base_pile_systeme)                                  if (((*(*s_etat_processus).l_base_pile_systeme)
                                         .clause != 'K') &&                                          .clause != 'K') &&
                                         ((*(*s_etat_processus)                                          ((*(*s_etat_processus)
                                         .l_base_pile_systeme) .clause != 'C'))                                          .l_base_pile_systeme).clause != 'C'))
                                 {                                  {
   
                                     /*                                      /*
                                      * Traitement de IF/THEN/ELSEIF/THEN/                                       * Traitement de IF/THEN/ELSEIF/THEN/
                                      * ELSE/END                                       * ELSE/END
Line 640  instruction_then(struct_processus *s_eta Line 660  instruction_then(struct_processus *s_eta
                                     }                                      }
                                     else if (fonction == instruction_end)                                      else if (fonction == instruction_end)
                                     {                                      {
                                           fonction(s_etat_processus);
                                           execution = d_vrai;
                                         drapeau_fin = d_vrai;                                          drapeau_fin = d_vrai;
                                     }                                      }
                                     else                                      else
Line 699  instruction_then(struct_processus *s_eta Line 721  instruction_then(struct_processus *s_eta
     }      }
   
     liberation(s_etat_processus, s_objet);      liberation(s_etat_processus, s_objet);
   
     return;      return;
 }  }
   

Removed from v.1.8  
changed lines
  Added in v.1.11


CVSweb interface <joel.bertrand@systella.fr>