Diff for /rpl/src/instructions_g2.c between versions 1.64 and 1.65

version 1.64, 2018/05/30 09:27:34 version 1.65, 2018/12/22 10:13:10
Line 35 Line 35
 ================================================================================  ================================================================================
 */  */
   
   static int
   fonction_comparaison(const void *argument_1, const void *argument_2)
   {
       /*
       uprintf("%p->%s\n",(unsigned char *) (**((struct_objet **) argument_2)).objet, (unsigned char *) (**((struct_objet **) argument_2)).objet);
       uprintf("%p->%s\n",(unsigned char *) (**((struct_objet **) argument_1)).objet, (unsigned char *) (**((struct_objet **) argument_1)).objet);
       */
       return(strcmp((unsigned char *) (**((struct_objet **) argument_1)).objet,
               (unsigned char *) (**((struct_objet **) argument_2)).objet));
   }
   
   
 void  void
 instruction_get(struct_processus *s_etat_processus)  instruction_get(struct_processus *s_etat_processus)
 {  {
Line 46  instruction_get(struct_processus *s_etat Line 58  instruction_get(struct_processus *s_etat
     struct_objet                        *s_objet_2;      struct_objet                        *s_objet_2;
     struct_objet                        *s_objet_3;      struct_objet                        *s_objet_3;
     struct_objet                        *s_objet_element;      struct_objet                        *s_objet_element;
       struct_objet                        *s_objet_noms;
     struct_objet                        *s_objet_resultat;      struct_objet                        *s_objet_resultat;
   
     integer8                            indice_i;      integer8                            indice_i;
Line 90  instruction_get(struct_processus *s_etat Line 103  instruction_get(struct_processus *s_etat
                 d_TAB, d_BIN, d_NOM, d_CHN, d_LST, d_ALG, d_RPN, d_FCH, d_SCK,                  d_TAB, d_BIN, d_NOM, d_CHN, d_LST, d_ALG, d_RPN, d_FCH, d_SCK,
                 d_SQL, d_SLB, d_PRC, d_MTX);                  d_SQL, d_SLB, d_PRC, d_MTX);
   
           printf("    2: %s\n", d_REC);
           printf("    1: %s\n", d_CHN);
           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,\n"
                   "       %s, %s\n\n",
                   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_SCK,
                   d_SQL, d_SLB, d_PRC, d_MTX);
   
         printf("    2: %s, %s\n", d_LST, d_NOM);          printf("    2: %s, %s\n", d_LST, d_NOM);
         printf("    1: %s\n", d_INT);          printf("    1: %s\n", d_INT);
         printf("->  1: %s, %s, %s, %s, %s, %s,\n"          printf("->  1: %s, %s, %s, %s, %s, %s,\n"
Line 519  instruction_get(struct_processus *s_etat Line 543  instruction_get(struct_processus *s_etat
   
 /*  /*
 --------------------------------------------------------------------------------  --------------------------------------------------------------------------------
     Traitement des enregistrements
   --------------------------------------------------------------------------------
   */
   
       else if ((*s_objet_2).type == REC)
       {
           if ((*s_objet_1).type != CHN)
           {
               liberation(s_etat_processus, s_objet_1);
               liberation(s_etat_processus, s_objet_2);
   
               (*s_etat_processus).erreur_execution = d_ex_erreur_type_argument;
               return;
           }
   
           s_objet_noms = (*((struct_record *) (*s_objet_2).objet)).noms;
   
           int i;
           for(i = 0; i < (*((struct_tableau *) (*s_objet_noms).objet)).nombre_elements; uprintf("%d->%p (%s)\n", i,
       (unsigned char *) (*(*((struct_tableau *) (*s_objet_noms).objet)).elements[i]).objet,
       (unsigned char *) (*(*((struct_tableau *) (*s_objet_noms).objet)).elements[i]).objet), i++);
   
           s_objet_element = bsearch((unsigned char *) (*s_objet_1).objet,
                   (*((struct_tableau *) (*s_objet_noms).objet)).elements,
                   (size_t) (*((struct_tableau *) (*s_objet_noms).objet))
                   .nombre_elements, sizeof(struct_objet *), fonction_comparaison);
   
           uprintf("%d\n", s_objet_element - (*((struct_tableau *) (*s_objet_2).objet)).elements[0]);
   
           /*
           l_element_courant = (*s_objet_1).objet;
           s_objet_element = s_objet_2;
   
   
           while(l_element_courant != NULL)
           {
               if ((*(*l_element_courant).donnee).type != INT)
               {
                   liberation(s_etat_processus, s_objet_1);
                   liberation(s_etat_processus, s_objet_2);
   
                   (*s_etat_processus).erreur_execution =
                           d_ex_erreur_type_argument;
                   return;
               }
   
               if ((*s_objet_element).type != TBL)
               {
                   liberation(s_etat_processus, s_objet_1);
                   liberation(s_etat_processus, s_objet_2);
   
                   (*s_etat_processus).erreur_execution = d_ex_element_inexistant;
                   return;
               }
   
               indice_i = (*((integer8 *) (*(*l_element_courant).donnee).objet));
   
               if ((indice_i < 1) || (indice_i > (*((struct_tableau *)
                       (*s_objet_element).objet)).nombre_elements))
               {
                   liberation(s_etat_processus, s_objet_1);
                   liberation(s_etat_processus, s_objet_2);
   
                   (*s_etat_processus).erreur_execution = d_ex_element_inexistant;
                   return;
               }
   
               s_objet_element = (*((struct_tableau *) (*s_objet_element)
                       .objet)).elements[indice_i - 1];
               l_element_courant = (*l_element_courant).suivant;
           }
           if ((s_objet_resultat = copie_objet(s_etat_processus,
                   s_objet_element, 'P')) == NULL)
           {
               (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
               return;
           }
           */
       }
   /*
   --------------------------------------------------------------------------------
   Traitement des variables    Traitement des variables
 --------------------------------------------------------------------------------  --------------------------------------------------------------------------------
 */  */

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


CVSweb interface <joel.bertrand@systella.fr>