Diff for /rpl/src/instructions_t1.c between versions 1.4 and 1.78

version 1.4, 2010/03/04 10:17:53 version 1.78, 2023/08/07 17:42:58
Line 1 Line 1
 /*  /*
 ================================================================================  ================================================================================
   RPL/2 (R) version 4.0.12    RPL/2 (R) version 4.1.35
   Copyright (C) 1989-2010 Dr. BERTRAND Joël    Copyright (C) 1989-2023 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 59  instruction_type(struct_processus *s_eta Line 59  instruction_type(struct_processus *s_eta
         printf("    1: %s, %s, %s, %s, %s, %s,\n"          printf("    1: %s, %s, %s, %s, %s, %s,\n"
                 "       %s, %s, %s, %s, %s,\n"                  "       %s, %s, %s, %s, %s,\n"
                 "       %s, %s, %s, %s, %s,\n"                  "       %s, %s, %s, %s, %s,\n"
                 "       %s, %s, %s, %s\n",                  "       %s, %s, %s, %s,\n"
                   "       %s, %s, %s, %s\n"
                   "       %s\n",
                 d_INT, d_REL, d_CPL, d_VIN, d_VRL, d_VCX, d_MIN, d_MRL, d_MCX,                  d_INT, d_REL, d_CPL, d_VIN, d_VRL, d_VCX, d_MIN, d_MRL, d_MCX,
                 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, d_TAB, d_SQL, d_MTX, d_SPH, d_REC);
         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");
               printf("    17 : connecteur SQL\n");
               printf("    18 : mutex\n");
               printf("    19 : sémaphore\n");
               printf("    20 : enregistrement\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");
               printf("    17 : SQL connector\n");
               printf("    18 : mutex\n");
               printf("    19 : semaphore\n");
               printf("    20 : record\n");
           }
   
         return;          return;
     }      }
Line 168  instruction_type(struct_processus *s_eta Line 220  instruction_type(struct_processus *s_eta
     {      {
         (*((integer8 *) (*s_objet_resultat).objet)) = 16;          (*((integer8 *) (*s_objet_resultat).objet)) = 16;
     }      }
       else if ((*s_objet_argument).type == SQL)
       {
           (*((integer8 *) (*s_objet_resultat).objet)) = 17;
       }
       else if ((*s_objet_argument).type == MTX)
       {
           (*((integer8 *) (*s_objet_resultat).objet)) = 18;
       }
       else if ((*s_objet_argument).type == SPH)
       {
           (*((integer8 *) (*s_objet_resultat).objet)) = 19;
       }
       else if ((*s_objet_argument).type == REC)
       {
           (*((integer8 *) (*s_objet_resultat).objet)) = 20;
       }
       else if ((*s_objet_argument).type == EXT)
       {
           (*((integer8 *) (*s_objet_resultat).objet)) = 21;
       }
     else      else
     {      {
         /*          /*
Line 214  instruction_then(struct_processus *s_eta Line 286  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;
     unsigned char                   *tampon;      unsigned char                   *tampon;
   
     unsigned long                   niveau;      integer8                        niveau;
   
     void                            (*fonction)();      void                            (*fonction)();
   
Line 343  instruction_then(struct_processus *s_eta Line 417  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 438  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 423  instruction_then(struct_processus *s_eta Line 514  instruction_then(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)
                     {                      {
                         liberation(s_etat_processus, s_objet);                          liberation(s_etat_processus, s_objet);
Line 451  instruction_then(struct_processus *s_eta Line 543  instruction_then(struct_processus *s_eta
                                     "ELSEIF") == 0))                                      "ELSEIF") == 0))
                             {                              {
                                 (*s_etat_processus).position_courante                                  (*s_etat_processus).position_courante
                                         -= (strlen(instruction_majuscule) + 1);                                          -= (integer8) (strlen(
                                           instruction_majuscule) + 1);
                                 drapeau_fin = d_vrai;                                  drapeau_fin = d_vrai;
                             }                              }
                             else                              else
Line 480  instruction_then(struct_processus *s_eta Line 573  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 686  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 733  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 794  instruction_then(struct_processus *s_eta
     }      }
   
     liberation(s_etat_processus, s_objet);      liberation(s_etat_processus, s_objet);
   
     return;      return;
 }  }
   

Removed from v.1.4  
changed lines
  Added in v.1.78


CVSweb interface <joel.bertrand@systella.fr>