Diff for /rpl/src/instructions_t1.c between versions 1.3 and 1.31

version 1.3, 2010/02/10 10:14:25 version 1.31, 2011/08/09 11:31:35
Line 1 Line 1
 /*  /*
 ================================================================================  ================================================================================
   RPL/2 (R) version 4.0.11    RPL/2 (R) version 4.1.3
   Copyright (C) 1989-2010 Dr. BERTRAND Joël    Copyright (C) 1989-2011 Dr. BERTRAND Joël
   
   This file is part of RPL/2.    This file is part of RPL/2.
   
Line 20 Line 20
 */  */
   
   
 #include "rpl.conv.h"  #include "rpl-conv.h"
   
   
 /*  /*
Line 64  instruction_type(struct_processus *s_eta Line 64  instruction_type(struct_processus *s_eta
                 d_TAB,                  d_TAB,
                 d_BIN, d_NOM, d_CHN, d_LST, d_ALG, d_RPN, d_FCH, d_SLB, d_SCK,                  d_BIN, d_NOM, d_CHN, d_LST, d_ALG, d_RPN, d_FCH, d_SLB, d_SCK,
                 d_PRC);                  d_PRC);
         printf("->  1: %s\n", d_INT);          printf("->  1: %s\n\n", d_INT);
   
           if ((*s_etat_processus).langue == 'F')
           {
               printf("  Valeurs renvoyées : \n\n");
               printf("    0  : scalaire (entier ou réel)\n");
               printf("    1  : complexe\n");
               printf("    2  : chaîne de caractères\n");
               printf("    3  : vecteur ou matrice de scalaires\n");
               printf("    4  : vecteur ou matrice de complexes\n");
               printf("    5  : liste\n");
               printf("    6  : adresse\n");
               printf("    7  : nom\n");
               printf("    8  : expression en notation polonaire inversée\n");
               printf("    9  : expression algébrique\n");
               printf("    10 : entier binaire\n");
               printf("    11 : descripteur de fichier\n");
               printf("    12 : descripteur de bibliothèque partagée\n");
               printf("    13 : descripteur de socket\n");
               printf("    14 : processus\n");
               printf("    15 : fonction\n");
               printf("    16 : table\n");
           }
           else
           {
               printf("  Returned values : \n\n");
               printf("    0  : scalar, integer or real number\n");
               printf("    1  : complex\n");
               printf("    2  : string\n");
               printf("    3  : scalar vector or scalar matrix\n");
               printf("    4  : complex vector or complex matrix\n");
               printf("    5  : list\n");
               printf("    6  : address\n");
               printf("    7  : name\n");
               printf("    8  : RPN expression\n");
               printf("    9  : algebraic expression\n");
               printf("    10 : binary integer\n");
               printf("    11 : file descriptor\n");
               printf("    12 : shared library descriptor\n");
               printf("    13 : socket descriptor\n");
               printf("    14 : process\n");
               printf("    15 : function\n");
               printf("    16 : table\n");
           }
   
         return;          return;
     }      }
Line 214  instruction_then(struct_processus *s_eta Line 257  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 343  instruction_then(struct_processus *s_eta Line 388  instruction_then(struct_processus *s_eta
         return;          return;
     }      }
   
     if (((*s_objet).type == INT) ||      if (((*s_objet).type == INT) || ((*s_objet).type == REL))
             ((*s_objet).type == REL))  
     {      {
         if ((*s_objet).type == INT)          if ((*s_objet).type == INT)
         {          {
Line 365  instruction_then(struct_processus *s_eta Line 409  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'))                      == 'X'))
             {              {
                 (*(*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 542  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 655  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 702  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 763  instruction_then(struct_processus *s_eta
     }      }
   
     liberation(s_etat_processus, s_objet);      liberation(s_etat_processus, s_objet);
   
     return;      return;
 }  }
   

Removed from v.1.3  
changed lines
  Added in v.1.31


CVSweb interface <joel.bertrand@systella.fr>