Diff for /rpl/src/instructions_e1.c between versions 1.21 and 1.64

version 1.21, 2011/06/21 07:45:24 version 1.64, 2017/08/03 17:17:45
Line 1 Line 1
 /*  /*
 ================================================================================  ================================================================================
   RPL/2 (R) version 4.1.0.prerelease.1    RPL/2 (R) version 4.1.28
   Copyright (C) 1989-2011 Dr. BERTRAND Joël    Copyright (C) 1989-2017 Dr. BERTRAND Joël
   
   This file is part of RPL/2.    This file is part of RPL/2.
   
Line 121  instruction_eval(struct_processus *s_eta Line 121  instruction_eval(struct_processus *s_eta
             sf(s_etat_processus, 31);              sf(s_etat_processus, 31);
         }          }
   
           liberation(s_etat_processus, s_objet);
         return;          return;
     }      }
   
Line 229  instruction_end(struct_processus *s_etat Line 230  instruction_end(struct_processus *s_etat
         printf("        (expression 2)]\n");          printf("        (expression 2)]\n");
         printf("    END\n\n");          printf("    END\n\n");
   
           printf("    CRITICAL\n");
           printf("        (expression)\n");
           printf("    END\n\n");
   
         printf("    DO\n");          printf("    DO\n");
         printf("        (expression)\n");          printf("        (expression)\n");
         printf("    UNTIL\n");          printf("    UNTIL\n");
Line 264  instruction_end(struct_processus *s_etat Line 269  instruction_end(struct_processus *s_etat
         return;          return;
     }      }
   
       if ((*s_etat_processus).l_base_pile_systeme == NULL)
       {
           (*s_etat_processus).erreur_systeme = d_es_processus;
           return;
       }
   
     if (((*(*s_etat_processus).l_base_pile_systeme).type_cloture == 'I')      if (((*(*s_etat_processus).l_base_pile_systeme).type_cloture == 'I')
             || ((*(*s_etat_processus).l_base_pile_systeme).type_cloture == 'J'))              || ((*(*s_etat_processus).l_base_pile_systeme).type_cloture == 'J'))
     {      {
Line 416  instruction_end(struct_processus *s_etat Line 427  instruction_end(struct_processus *s_etat
             return;              return;
         }          }
     }      }
     else       else if ((*(*s_etat_processus).l_base_pile_systeme).type_cloture == 'Q')
       {
           depilement_pile_systeme(s_etat_processus);
   
           if ((*s_etat_processus).erreur_systeme != d_es)
           {
               return;
           }
   
           if (pthread_mutex_unlock(&mutex_sections_critiques) != 0)
           {
               (*s_etat_processus).erreur_systeme = d_es_processus;
               return;
           }
   
           (*s_etat_processus).sections_critiques--;
       }
       else
     {      {
         (*s_etat_processus).erreur_systeme = d_es_end_incoherent;          (*s_etat_processus).erreur_systeme = d_es_end_incoherent;
     }      }
Line 448  instruction_else(struct_processus *s_eta Line 476  instruction_else(struct_processus *s_eta
     unsigned char               *instruction_majuscule;      unsigned char               *instruction_majuscule;
     unsigned char               *tampon;      unsigned char               *tampon;
   
     unsigned long               niveau;      integer8                    niveau;
   
     void                        (*fonction)();      void                        (*fonction)();
   
Line 516  instruction_else(struct_processus *s_eta Line 544  instruction_else(struct_processus *s_eta
                 }                  }
   
                 if ((instruction_majuscule = conversion_majuscule(                  if ((instruction_majuscule = conversion_majuscule(
                           s_etat_processus,
                         (*s_etat_processus).instruction_courante)) == NULL)                          (*s_etat_processus).instruction_courante)) == NULL)
                 {                  {
                     free((*s_etat_processus).instruction_courante);                      free((*s_etat_processus).instruction_courante);
Line 529  instruction_else(struct_processus *s_eta Line 558  instruction_else(struct_processus *s_eta
                 {                  {
                     if (strcmp(instruction_majuscule, "END") == 0)                      if (strcmp(instruction_majuscule, "END") == 0)
                     {                      {
                         (*s_etat_processus).position_courante -= (strlen(                          (*s_etat_processus).position_courante -=
                                 instruction_majuscule) + 1);                                  (((integer8) strlen(
                                   instruction_majuscule)) + 1);
                         drapeau_fin = d_vrai;                          drapeau_fin = d_vrai;
                     }                      }
                     else                      else
Line 727  instruction_elseif(struct_processus *s_e Line 757  instruction_elseif(struct_processus *s_e
     unsigned char               *instruction_majuscule;      unsigned char               *instruction_majuscule;
     unsigned char               *tampon;      unsigned char               *tampon;
   
     unsigned long               niveau;      integer8                    niveau;
   
     void                        (*fonction)();      void                        (*fonction)();
   
Line 806  instruction_elseif(struct_processus *s_e Line 836  instruction_elseif(struct_processus *s_e
                 }                  }
   
                 if ((instruction_majuscule = conversion_majuscule(                  if ((instruction_majuscule = conversion_majuscule(
                           s_etat_processus,
                         (*s_etat_processus).instruction_courante)) == NULL)                          (*s_etat_processus).instruction_courante)) == NULL)
                 {                  {
                     free((*s_etat_processus).instruction_courante);                      free((*s_etat_processus).instruction_courante);
Line 819  instruction_elseif(struct_processus *s_e Line 850  instruction_elseif(struct_processus *s_e
                 {                  {
                     if (strcmp(instruction_majuscule, "END") == 0)                      if (strcmp(instruction_majuscule, "END") == 0)
                     {                      {
                         (*s_etat_processus).position_courante -= (strlen(                          (*s_etat_processus).position_courante -=
                                 instruction_majuscule) + 1);                                  (((integer8) strlen(
                                   instruction_majuscule)) + 1);
                         drapeau_fin = d_vrai;                          drapeau_fin = d_vrai;
                     }                      }
                     else                      else
Line 1008  instruction_elseif(struct_processus *s_e Line 1040  instruction_elseif(struct_processus *s_e
 void  void
 instruction_sensible_e(struct_processus *s_etat_processus)  instruction_sensible_e(struct_processus *s_etat_processus)
 {  {
       (*s_etat_processus).instruction_sensible = 'Y';
   
     if (strcmp((*s_etat_processus).instruction_courante, "e") == 0)      if (strcmp((*s_etat_processus).instruction_courante, "e") == 0)
     {      {
         instruction_e(s_etat_processus);          instruction_e(s_etat_processus);
Line 1168  instruction_eng(struct_processus *s_etat Line 1202  instruction_eng(struct_processus *s_etat
                 return;                  return;
             }              }
   
             (*((logical8 *) (*s_objet).objet)) =              (*((logical8 *) (*s_objet).objet)) = (logical8)
                     (*((integer8 *) (*s_objet_argument).objet));                      (*((integer8 *) (*s_objet_argument).objet));
   
             i43 = test_cfsf(s_etat_processus, 43);              i43 = test_cfsf(s_etat_processus, 43);
Line 1206  instruction_eng(struct_processus *s_etat Line 1240  instruction_eng(struct_processus *s_etat
             {              {
                 if (valeur_binaire[i] == '0')                  if (valeur_binaire[i] == '0')
                 {                  {
                     cf(s_etat_processus, j++);                      cf(s_etat_processus, (unsigned char) j++);
                 }                  }
                 else                  else
                 {                  {
                     sf(s_etat_processus, j++);                      sf(s_etat_processus, (unsigned char) j++);
                 }                  }
             }              }
   
             for(; j <= 56; cf(s_etat_processus, j++));              for(; j <= 56; cf(s_etat_processus, (unsigned char) j++));
   
             sf(s_etat_processus, 49);              sf(s_etat_processus, 49);
             sf(s_etat_processus, 50);              sf(s_etat_processus, 50);

Removed from v.1.21  
changed lines
  Added in v.1.64


CVSweb interface <joel.bertrand@systella.fr>