File:  [local] / rpl / src / instructions_r5.c
Revision 1.41: download - view: text, annotated - select for diffs - revision graph
Thu Dec 13 16:59:42 2012 UTC (11 years, 4 months ago) by bertrand
Branches: MAIN
CVS tags: HEAD
Première série de patches pour inclure les variables partagées dans
l'arbre des variables. Attention, le résultat ne compile pas.

    1: /*
    2: ================================================================================
    3:   RPL/2 (R) version 4.1.11
    4:   Copyright (C) 1989-2012 Dr. BERTRAND Joël
    5: 
    6:   This file is part of RPL/2.
    7: 
    8:   RPL/2 is free software; you can redistribute it and/or modify it
    9:   under the terms of the CeCILL V2 License as published by the french
   10:   CEA, CNRS and INRIA.
   11:  
   12:   RPL/2 is distributed in the hope that it will be useful, but WITHOUT
   13:   ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
   14:   FITNESS FOR A PARTICULAR PURPOSE.  See the CeCILL V2 License
   15:   for more details.
   16:  
   17:   You should have received a copy of the CeCILL License
   18:   along with RPL/2. If not, write to info@cecill.info.
   19: ================================================================================
   20: */
   21: 
   22: 
   23: #include "rpl-conv.h"
   24: 
   25: 
   26: /*
   27: ================================================================================
   28:   Fonction 'rswp'
   29: ================================================================================
   30:   Entrées : pointeur sur une structure struct_processus
   31: --------------------------------------------------------------------------------
   32:   Sorties :
   33: --------------------------------------------------------------------------------
   34:   Effets de bord : néant
   35: ================================================================================
   36: */
   37: 
   38: void
   39: instruction_rswp(struct_processus *s_etat_processus)
   40: {
   41:     struct_objet                *s_copie_argument_3;
   42:     struct_objet                *s_objet_argument_1;
   43:     struct_objet                *s_objet_argument_2;
   44:     struct_objet                *s_objet_argument_3;
   45: 
   46:     signed long                 ligne_1;
   47:     signed long                 ligne_2;
   48: 
   49:     void                        *tampon;
   50: 
   51:     (*s_etat_processus).erreur_execution = d_ex;
   52: 
   53:     if ((*s_etat_processus).affichage_arguments == 'Y')
   54:     {
   55:         printf("\n  RSWP ");
   56: 
   57:         if ((*s_etat_processus).langue == 'F')
   58:         {
   59:             printf("(échange de deux lignes d'une matrice)\n\n");
   60:         }
   61:         else
   62:         {
   63:             printf("(swap two rows of a matrix)\n\n");
   64:         }
   65: 
   66:         printf("    3: %s, %s, %s\n", d_MIN, d_MRL, d_MCX);
   67:         printf("    2: %s\n", d_INT);
   68:         printf("    1: %s\n", d_INT);
   69:         printf("->  1: %s, %s, %s\n", d_MIN, d_MRL, d_MCX);
   70: 
   71:         return;
   72:     }
   73:     else if ((*s_etat_processus).test_instruction == 'Y')
   74:     {
   75:         (*s_etat_processus).nombre_arguments = -1;
   76:         return;
   77:     }
   78: 
   79:     if (test_cfsf(s_etat_processus, 31) == d_vrai)
   80:     {
   81:         if (empilement_pile_last(s_etat_processus, 3) == d_erreur)
   82:         {
   83:             return;
   84:         }
   85:     }
   86: 
   87:     if (depilement(s_etat_processus, &((*s_etat_processus).l_base_pile),
   88:             &s_objet_argument_1) == d_erreur)
   89:     {
   90:         (*s_etat_processus).erreur_execution = d_ex_manque_argument;
   91:         return;
   92:     }
   93: 
   94:     if (depilement(s_etat_processus, &((*s_etat_processus).l_base_pile),
   95:             &s_objet_argument_2) == d_erreur)
   96:     {
   97:         liberation(s_etat_processus, s_objet_argument_1);
   98: 
   99:         (*s_etat_processus).erreur_execution = d_ex_manque_argument;
  100:         return;
  101:     }
  102: 
  103:     if (depilement(s_etat_processus, &((*s_etat_processus).l_base_pile),
  104:             &s_objet_argument_3) == d_erreur)
  105:     {
  106:         liberation(s_etat_processus, s_objet_argument_1);
  107:         liberation(s_etat_processus, s_objet_argument_2);
  108: 
  109:         (*s_etat_processus).erreur_execution = d_ex_manque_argument;
  110:         return;
  111:     }
  112: 
  113:     if (((*s_objet_argument_1).type == INT) &&
  114:             ((*s_objet_argument_2).type == INT))
  115:     {
  116:         if (((*s_objet_argument_3).type == MIN) ||
  117:                 ((*s_objet_argument_3).type == MRL) ||
  118:                 ((*s_objet_argument_3).type == MCX))
  119:         {
  120:             ligne_1 = (*((integer8 *) (*s_objet_argument_1).objet)) - 1;
  121:             ligne_2 = (*((integer8 *) (*s_objet_argument_2).objet)) - 1;
  122: 
  123:             if ((ligne_1 < 0) || (ligne_1 >= (long) (*((struct_matrice *)
  124:                     (*s_objet_argument_3).objet)).nombre_lignes) ||
  125:                     (ligne_2 < 0) || (ligne_2 >= (long) (*((struct_matrice *)
  126:                     (*s_objet_argument_3).objet)).nombre_lignes))
  127:             {
  128:                 liberation(s_etat_processus, s_objet_argument_1);
  129:                 liberation(s_etat_processus, s_objet_argument_2);
  130:                 liberation(s_etat_processus, s_objet_argument_3);
  131: 
  132:                 (*s_etat_processus).erreur_execution =
  133:                         d_ex_dimensions_invalides;
  134:                 return;
  135:             }
  136: 
  137:             if ((s_copie_argument_3 = copie_objet(s_etat_processus,
  138:                     s_objet_argument_3, 'Q')) == NULL)
  139:             {
  140:                 (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
  141:                 return;
  142:             }
  143: 
  144:             liberation(s_etat_processus, s_objet_argument_3);
  145:             s_objet_argument_3 = s_copie_argument_3;
  146: 
  147:             tampon = (*((struct_matrice *) (*s_objet_argument_3).objet))
  148:                     .tableau[ligne_1];
  149:             (*((struct_matrice *) (*s_objet_argument_3).objet)).tableau[ligne_1]
  150:                     = (*((struct_matrice *) (*s_objet_argument_3).objet))
  151:                     .tableau[ligne_2];
  152:             (*((struct_matrice *) (*s_objet_argument_3).objet)).tableau[ligne_2]
  153:                     = tampon;
  154:         }
  155:         else
  156:         {
  157:             liberation(s_etat_processus, s_objet_argument_1);
  158:             liberation(s_etat_processus, s_objet_argument_2);
  159:             liberation(s_etat_processus, s_objet_argument_3);
  160: 
  161:             (*s_etat_processus).erreur_execution = d_ex_erreur_type_argument;
  162:             return;
  163:         }
  164:     }
  165:     else
  166:     {
  167:         liberation(s_etat_processus, s_objet_argument_1);
  168:         liberation(s_etat_processus, s_objet_argument_2);
  169:         liberation(s_etat_processus, s_objet_argument_3);
  170: 
  171:         (*s_etat_processus).erreur_execution = d_ex_erreur_type_argument;
  172:         return;
  173:     }
  174: 
  175:     liberation(s_etat_processus, s_objet_argument_1);
  176:     liberation(s_etat_processus, s_objet_argument_2);
  177: 
  178:     if (empilement(s_etat_processus, &((*s_etat_processus).l_base_pile),
  179:             s_objet_argument_3) == d_erreur)
  180:     {
  181:         return;
  182:     }
  183: 
  184:     return;
  185: }
  186: 
  187: 
  188: /*
  189: ================================================================================
  190:   Fonction 'row+'
  191: ================================================================================
  192:   Entrées :
  193: --------------------------------------------------------------------------------
  194:   Sorties :
  195: --------------------------------------------------------------------------------
  196:   Effets de bord : néant
  197: ================================================================================
  198: */
  199: 
  200: void
  201: instruction_row_plus(struct_processus *s_etat_processus)
  202: {
  203:     integer8                        position;
  204: 
  205:     logical1                        matrice_vide;
  206:     logical1                        presence_nom;
  207:     logical1                        variable_partagee;
  208: 
  209:     struct_objet                    *s_copie_argument_1;
  210:     struct_objet                    *s_copie_argument_3;
  211:     struct_objet                    *s_objet_argument_1;
  212:     struct_objet                    *s_objet_argument_2;
  213:     struct_objet                    *s_objet_argument_3;
  214: 
  215:     unsigned long                   i;
  216:     unsigned long                   j;
  217: 
  218:     void                            **tableau;
  219:     void                            *tampon;
  220: 
  221:     (*s_etat_processus).erreur_execution = d_ex;
  222: 
  223:     if ((*s_etat_processus).affichage_arguments == 'Y')
  224:     {
  225:         printf("\n  ROW+ ");
  226: 
  227:         if ((*s_etat_processus).langue == 'F')
  228:         {
  229:             printf("(ajout d'une ligne dans une matrice)\n\n");
  230:         }
  231:         else
  232:         {
  233:             printf("(add a row in a matrix)\n\n");
  234:         }
  235: 
  236:         printf("    3: %s, %s, %s\n", d_MIN, d_MRL, d_MCX);
  237:         printf("    2: %s\n", d_INT);
  238:         printf("    1: %s, %s, %s\n\n", d_MIN, d_MRL, d_MCX);
  239:         printf("->  1: %s, %s, %s\n\n", d_MIN, d_MRL, d_MCX);
  240: 
  241:         printf("    3: %s\n", d_NOM);
  242:         printf("    2: %s\n", d_INT);
  243:         printf("    1: %s, %s, %s\n", d_MIN, d_MRL, d_MCX);
  244: 
  245:         return;
  246:     }
  247:     else if ((*s_etat_processus).test_instruction == 'Y')
  248:     {
  249:         (*s_etat_processus).nombre_arguments = -1;
  250:         return;
  251:     }
  252: 
  253:     if (test_cfsf(s_etat_processus, 31) == d_vrai)
  254:     {
  255:         if (empilement_pile_last(s_etat_processus, 3) == d_erreur)
  256:         {
  257:             return;
  258:         }
  259:     }
  260: 
  261:     if (depilement(s_etat_processus, &((*s_etat_processus).l_base_pile),
  262:             &s_objet_argument_1) == d_erreur)
  263:     {
  264:         (*s_etat_processus).erreur_execution = d_ex_manque_argument;
  265:         return;
  266:     }
  267: 
  268:     if ((s_copie_argument_1 = copie_objet(s_etat_processus, s_objet_argument_1,
  269:             'O')) == NULL)
  270:     {
  271:         (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
  272:         return;
  273:     }
  274: 
  275:     liberation(s_etat_processus, s_objet_argument_1);
  276:     s_objet_argument_1 = s_copie_argument_1;
  277: 
  278:     if (depilement(s_etat_processus, &((*s_etat_processus).l_base_pile),
  279:             &s_objet_argument_2) == d_erreur)
  280:     {
  281:         liberation(s_etat_processus, s_objet_argument_1);
  282: 
  283:         (*s_etat_processus).erreur_execution = d_ex_manque_argument;
  284:         return;
  285:     }
  286: 
  287:     if (depilement(s_etat_processus, &((*s_etat_processus).l_base_pile),
  288:             &s_objet_argument_3) == d_erreur)
  289:     {
  290:         liberation(s_etat_processus, s_objet_argument_1);
  291:         liberation(s_etat_processus, s_objet_argument_2);
  292: 
  293:         (*s_etat_processus).erreur_execution = d_ex_manque_argument;
  294:         return;
  295:     }
  296: 
  297:     if (((*s_objet_argument_1).type != MIN) &&
  298:             ((*s_objet_argument_1).type != MRL) &&
  299:             ((*s_objet_argument_1).type != MCX))
  300:     {
  301:         liberation(s_etat_processus, s_objet_argument_1);
  302:         liberation(s_etat_processus, s_objet_argument_2);
  303:         liberation(s_etat_processus, s_objet_argument_3);
  304: 
  305:         (*s_etat_processus).erreur_execution = d_ex_erreur_type_argument;
  306:         return;
  307:     }
  308: 
  309:     if ((*((struct_matrice *) (*s_objet_argument_1).objet)).nombre_lignes
  310:             != 1)
  311:     {
  312:         liberation(s_etat_processus, s_objet_argument_1);
  313:         liberation(s_etat_processus, s_objet_argument_2);
  314:         liberation(s_etat_processus, s_objet_argument_3);
  315: 
  316:         (*s_etat_processus).erreur_execution = d_ex_dimensions_invalides;
  317:         return;
  318:     }
  319: 
  320:     if ((*s_objet_argument_2).type != INT)
  321:     {
  322:         liberation(s_etat_processus, s_objet_argument_1);
  323:         liberation(s_etat_processus, s_objet_argument_2);
  324:         liberation(s_etat_processus, s_objet_argument_3);
  325: 
  326:         (*s_etat_processus).erreur_execution = d_ex_erreur_type_argument;
  327:         return;
  328:     }
  329: 
  330:     variable_partagee = d_faux;
  331: 
  332:     if ((*s_objet_argument_3).type == NOM)
  333:     {
  334:         presence_nom = d_vrai;
  335: 
  336:         if (recherche_variable(s_etat_processus, (*((struct_nom *)
  337:                 (*s_objet_argument_3).objet)).nom) == d_faux)
  338:         {
  339:             (*s_etat_processus).erreur_systeme = d_es;
  340:             (*s_etat_processus).erreur_execution = d_ex_variable_non_definie;
  341: 
  342:             liberation(s_etat_processus, s_objet_argument_1);
  343:             liberation(s_etat_processus, s_objet_argument_2);
  344:             liberation(s_etat_processus, s_objet_argument_3);
  345: 
  346:             return;
  347:         }
  348: 
  349:         liberation(s_etat_processus, s_objet_argument_3);
  350: 
  351:         if ((*(*s_etat_processus).pointeur_variable_courante)
  352:                 .variable_verrouillee == d_vrai)
  353:         {
  354:             (*s_etat_processus).erreur_execution = d_ex_variable_verrouillee;
  355: 
  356:             liberation(s_etat_processus, s_objet_argument_1);
  357:             liberation(s_etat_processus, s_objet_argument_2);
  358: 
  359:             return;
  360:         }
  361: 
  362:         s_objet_argument_3 = (*(*s_etat_processus).pointeur_variable_courante)
  363:                 .objet;
  364: 
  365:         if (s_objet_argument_3 == NULL)
  366:         {
  367:             if (recherche_variable_partagee(s_etat_processus,
  368:                     (*(*s_etat_processus).pointeur_variable_courante).nom,
  369:                     (*(*s_etat_processus).pointeur_variable_courante)
  370:                     .variable_partagee, (*(*s_etat_processus)
  371:                     .pointeur_variable_courante).origine)
  372:                     == d_faux)
  373:             {
  374:                 (*s_etat_processus).erreur_systeme = d_es;
  375:                 (*s_etat_processus).erreur_execution =
  376:                         d_ex_variable_non_definie;
  377: 
  378:                 liberation(s_etat_processus, s_objet_argument_1);
  379:                 liberation(s_etat_processus, s_objet_argument_2);
  380: 
  381:                 return;
  382:             }
  383: 
  384:             s_objet_argument_3 = (*(*s_etat_processus)
  385:                     .pointeur_variable_partagee_courante).objet;
  386:             variable_partagee = d_vrai;
  387:         }
  388: 
  389:         if ((s_copie_argument_3 = copie_objet(s_etat_processus,
  390:                 s_objet_argument_3, 'Q')) == NULL)
  391:         {
  392:             if (variable_partagee == d_vrai)
  393:             {
  394:                 if (pthread_mutex_unlock(&((*(*s_etat_processus)
  395:                         .pointeur_variable_partagee_courante).mutex)) != 0)
  396:                 {
  397:                     (*s_etat_processus).erreur_systeme = d_es_processus;
  398:                     return;
  399:                 }
  400:             }
  401: 
  402:             (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
  403:             return;
  404:         }
  405: 
  406:         liberation(s_etat_processus, s_objet_argument_3);
  407:         s_objet_argument_3 = s_copie_argument_3;
  408: 
  409:         (*(*s_etat_processus).pointeur_variable_courante).objet =
  410:                 s_objet_argument_3;
  411:     }
  412:     else
  413:     {
  414:         presence_nom = d_faux;
  415: 
  416:         if ((s_copie_argument_3 = copie_objet(s_etat_processus,
  417:                 s_objet_argument_3, 'Q')) == NULL)
  418:         {
  419:             (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
  420:             return;
  421:         }
  422: 
  423:         liberation(s_etat_processus, s_objet_argument_3);
  424:         s_objet_argument_3 = s_copie_argument_3;
  425:     }
  426: 
  427:     if (((*((struct_matrice *) (*s_objet_argument_3).objet)).nombre_colonnes
  428:             == 0) && ((*((struct_matrice *) (*s_objet_argument_3).objet))
  429:             .nombre_lignes == 1))
  430:     {
  431:         matrice_vide = d_vrai;
  432:     }
  433:     else
  434:     {
  435:         matrice_vide = d_faux;
  436: 
  437:         if ((*((struct_matrice *) (*s_objet_argument_1).objet)).nombre_colonnes
  438:                 != (*((struct_matrice *) (*s_objet_argument_3).objet))
  439:                 .nombre_colonnes)
  440:         {
  441:             if (variable_partagee == d_vrai)
  442:             {
  443:                 if (pthread_mutex_unlock(&((*(*s_etat_processus)
  444:                         .pointeur_variable_partagee_courante).mutex)) != 0)
  445:                 {
  446:                     (*s_etat_processus).erreur_systeme = d_es_processus;
  447:                     return;
  448:                 }
  449:             }
  450: 
  451:             liberation(s_etat_processus, s_objet_argument_1);
  452:             liberation(s_etat_processus, s_objet_argument_2);
  453: 
  454:             if (presence_nom == d_faux)
  455:             {
  456:                 liberation(s_etat_processus, s_objet_argument_3);
  457:             }
  458: 
  459:             (*s_etat_processus).erreur_execution = d_ex_dimensions_invalides;
  460:             return;
  461:         }
  462:     }
  463: 
  464:     if ((*s_objet_argument_1).type == MRL)
  465:     {
  466:         if ((*s_objet_argument_3).type == MIN)
  467:         {
  468:             // Conversion de la matrice entière en matrice réelle
  469: 
  470:             for(i = 0; i < (*((struct_matrice *) (*s_objet_argument_3).objet))
  471:                     .nombre_lignes; i++)
  472:             {
  473:                 tampon = (*((struct_matrice *) (*s_objet_argument_3).objet))
  474:                         .tableau[i];
  475: 
  476:                 if (((*((struct_matrice *) (*s_objet_argument_3).objet))
  477:                         .tableau[i] = malloc((*((struct_matrice *)
  478:                         (*s_objet_argument_3).objet)).nombre_colonnes *
  479:                         sizeof(real8))) == NULL)
  480:                 {
  481:                     if (variable_partagee == d_vrai)
  482:                     {
  483:                         if (pthread_mutex_unlock(&((*(*s_etat_processus)
  484:                                 .pointeur_variable_partagee_courante).mutex))
  485:                                 != 0)
  486:                         {
  487:                             (*s_etat_processus).erreur_systeme = d_es_processus;
  488:                             return;
  489:                         }
  490:                     }
  491: 
  492:                     (*s_etat_processus).erreur_systeme =
  493:                             d_es_allocation_memoire;
  494:                     return;
  495:                 }
  496: 
  497:                 for(j = 0; j < (*((struct_matrice *) (*s_objet_argument_3)
  498:                         .objet)).nombre_colonnes; j++)
  499:                 {
  500:                     ((real8 **) (*((struct_matrice *) (*s_objet_argument_3)
  501:                             .objet)).tableau)[i][j] = (real8) (((integer8 *)
  502:                             tampon)[j]);
  503:                 }
  504: 
  505:                 free(tampon);
  506:             }
  507: 
  508:             (*((struct_matrice *) (*s_objet_argument_3).objet)).type = 'R';
  509:             (*s_objet_argument_3).type = MRL;
  510:         }
  511:     }
  512:     else if ((*s_objet_argument_1).type == MCX)
  513:     {
  514:         if ((*s_objet_argument_3).type == MIN)
  515:         {
  516:             // Conversion de la matrice entière en matrice complexe
  517: 
  518:             for(i = 0; i < (*((struct_matrice *) (*s_objet_argument_3).objet))
  519:                     .nombre_lignes; i++)
  520:             {
  521:                 tampon = (*((struct_matrice *) (*s_objet_argument_3).objet))
  522:                         .tableau[i];
  523: 
  524:                 if (((*((struct_matrice *) (*s_objet_argument_3).objet))
  525:                         .tableau[i] = malloc((*((struct_matrice *)
  526:                         (*s_objet_argument_3).objet)).nombre_colonnes *
  527:                         sizeof(complex16))) == NULL)
  528:                 {
  529:                     if (variable_partagee == d_vrai)
  530:                     {
  531:                         if (pthread_mutex_unlock(&((*(*s_etat_processus)
  532:                                 .pointeur_variable_partagee_courante).mutex))
  533:                                 != 0)
  534:                         {
  535:                             (*s_etat_processus).erreur_systeme = d_es_processus;
  536:                             return;
  537:                         }
  538:                     }
  539: 
  540:                     (*s_etat_processus).erreur_systeme =
  541:                             d_es_allocation_memoire;
  542:                     return;
  543:                 }
  544: 
  545:                 for(j = 0; j < (*((struct_matrice *) (*s_objet_argument_3)
  546:                         .objet)).nombre_colonnes; j++)
  547:                 {
  548:                     ((complex16 **) (*((struct_matrice *) (*s_objet_argument_3)
  549:                             .objet)).tableau)[i][j].partie_reelle =
  550:                             (real8) (((integer8 *) tampon)[j]);
  551:                     ((complex16 **) (*((struct_matrice *) (*s_objet_argument_3)
  552:                             .objet)).tableau)[i][j].partie_imaginaire = 0;
  553:                 }
  554: 
  555:                 free(tampon);
  556:             }
  557: 
  558:             (*((struct_matrice *) (*s_objet_argument_3).objet)).type = 'C';
  559:             (*s_objet_argument_3).type = MCX;
  560:         }
  561:         else if ((*s_objet_argument_3).type == MRL)
  562:         {
  563:             // Conversion de la matrice réelle en matrice complexe
  564: 
  565:             for(i = 0; i < (*((struct_matrice *) (*s_objet_argument_3).objet))
  566:                     .nombre_lignes; i++)
  567:             {
  568:                 tampon = (*((struct_matrice *) (*s_objet_argument_3).objet))
  569:                         .tableau[i];
  570: 
  571:                 if (((*((struct_matrice *) (*s_objet_argument_3).objet))
  572:                         .tableau[i] = malloc((*((struct_matrice *)
  573:                         (*s_objet_argument_3).objet)).nombre_colonnes *
  574:                         sizeof(complex16))) == NULL)
  575:                 {
  576:                     if (variable_partagee == d_vrai)
  577:                     {
  578:                         if (pthread_mutex_unlock(&((*(*s_etat_processus)
  579:                                 .pointeur_variable_partagee_courante).mutex))
  580:                                 != 0)
  581:                         {
  582:                             (*s_etat_processus).erreur_systeme = d_es_processus;
  583:                             return;
  584:                         }
  585:                     }
  586: 
  587:                     (*s_etat_processus).erreur_systeme =
  588:                             d_es_allocation_memoire;
  589:                     return;
  590:                 }
  591: 
  592:                 for(j = 0; j < (*((struct_matrice *) (*s_objet_argument_3)
  593:                         .objet)).nombre_colonnes; j++)
  594:                 {
  595:                     ((complex16 **) (*((struct_matrice *) (*s_objet_argument_3)
  596:                             .objet)).tableau)[i][j].partie_reelle =
  597:                             ((real8 *) tampon)[j];
  598:                     ((complex16 **) (*((struct_matrice *) (*s_objet_argument_3)
  599:                             .objet)).tableau)[i][j].partie_imaginaire = 0;
  600:                 }
  601: 
  602:                 free(tampon);
  603:             }
  604: 
  605:             (*((struct_matrice *) (*s_objet_argument_3).objet)).type = 'C';
  606:             (*s_objet_argument_3).type = MCX;
  607:         }
  608:     }   
  609: 
  610:     if ((*s_objet_argument_3).type == MRL)
  611:     {
  612:         if ((*s_objet_argument_1).type == MIN)
  613:         {
  614:             // Conversion de la matrice entière en matrice réelle
  615: 
  616:             for(i = 0; i < (*((struct_matrice *) (*s_objet_argument_1).objet))
  617:                     .nombre_lignes; i++)
  618:             {
  619:                 tampon = (*((struct_matrice *) (*s_objet_argument_1).objet))
  620:                         .tableau[i];
  621: 
  622:                 if (((*((struct_matrice *) (*s_objet_argument_1).objet))
  623:                         .tableau[i] = malloc((*((struct_matrice *)
  624:                         (*s_objet_argument_1).objet)).nombre_colonnes *
  625:                         sizeof(real8))) == NULL)
  626:                 {
  627:                     if (variable_partagee == d_vrai)
  628:                     {
  629:                         if (pthread_mutex_unlock(&((*(*s_etat_processus)
  630:                                 .pointeur_variable_partagee_courante).mutex))
  631:                                 != 0)
  632:                         {
  633:                             (*s_etat_processus).erreur_systeme = d_es_processus;
  634:                             return;
  635:                         }
  636:                     }
  637: 
  638:                     (*s_etat_processus).erreur_systeme =
  639:                             d_es_allocation_memoire;
  640:                     return;
  641:                 }
  642: 
  643:                 for(j = 0; j < (*((struct_matrice *) (*s_objet_argument_1)
  644:                         .objet)).nombre_colonnes; j++)
  645:                 {
  646:                     ((real8 **) (*((struct_matrice *) (*s_objet_argument_1)
  647:                             .objet)).tableau)[i][j] = (real8) (((integer8 *)
  648:                             tampon)[j]);
  649:                 }
  650: 
  651:                 free(tampon);
  652:             }
  653: 
  654:             (*((struct_matrice *) (*s_objet_argument_1).objet)).type = 'R';
  655:             (*s_objet_argument_1).type = MRL;
  656:         }
  657:     }
  658:     else if ((*s_objet_argument_3).type == MCX)
  659:     {
  660:         if ((*s_objet_argument_1).type == MIN)
  661:         {
  662:             // Conversion de la matrice entière en matrice complexe
  663: 
  664:             for(i = 0; i < (*((struct_matrice *) (*s_objet_argument_1).objet))
  665:                     .nombre_lignes; i++)
  666:             {
  667:                 tampon = (*((struct_matrice *) (*s_objet_argument_1).objet))
  668:                         .tableau[i];
  669: 
  670:                 if (((*((struct_matrice *) (*s_objet_argument_1).objet))
  671:                         .tableau[i] = malloc((*((struct_matrice *)
  672:                         (*s_objet_argument_1).objet)).nombre_colonnes *
  673:                         sizeof(complex16))) == NULL)
  674:                 {
  675:                     if (variable_partagee == d_vrai)
  676:                     {
  677:                         if (pthread_mutex_unlock(&((*(*s_etat_processus)
  678:                                 .pointeur_variable_partagee_courante).mutex))
  679:                                 != 0)
  680:                         {
  681:                             (*s_etat_processus).erreur_systeme = d_es_processus;
  682:                             return;
  683:                         }
  684:                     }
  685: 
  686:                     (*s_etat_processus).erreur_systeme =
  687:                             d_es_allocation_memoire;
  688:                     return;
  689:                 }
  690: 
  691:                 for(j = 0; j < (*((struct_matrice *) (*s_objet_argument_1)
  692:                         .objet)).nombre_colonnes; j++)
  693:                 {
  694:                     ((complex16 **) (*((struct_matrice *) (*s_objet_argument_1)
  695:                             .objet)).tableau)[i][j].partie_reelle =
  696:                             (real8) (((integer8 *) tampon)[j]);
  697:                     ((complex16 **) (*((struct_matrice *) (*s_objet_argument_1)
  698:                             .objet)).tableau)[i][j].partie_imaginaire = 0;
  699:                 }
  700: 
  701:                 free(tampon);
  702:             }
  703: 
  704:             (*((struct_matrice *) (*s_objet_argument_1).objet)).type = 'C';
  705:             (*s_objet_argument_1).type = MCX;
  706:         }
  707:         else if ((*s_objet_argument_1).type == MRL)
  708:         {
  709:             // Conversion de la matrice réelle en matrice complexe
  710: 
  711:             for(i = 0; i < (*((struct_matrice *) (*s_objet_argument_1).objet))
  712:                     .nombre_lignes; i++)
  713:             {
  714:                 tampon = (*((struct_matrice *) (*s_objet_argument_1).objet))
  715:                         .tableau[i];
  716: 
  717:                 if (((*((struct_matrice *) (*s_objet_argument_1).objet))
  718:                         .tableau[i] = malloc((*((struct_matrice *)
  719:                         (*s_objet_argument_1).objet)).nombre_colonnes *
  720:                         sizeof(complex16))) == NULL)
  721:                 {
  722:                     if (variable_partagee == d_vrai)
  723:                     {
  724:                         if (pthread_mutex_unlock(&((*(*s_etat_processus)
  725:                                 .pointeur_variable_partagee_courante).mutex))
  726:                                 != 0)
  727:                         {
  728:                             (*s_etat_processus).erreur_systeme = d_es_processus;
  729:                             return;
  730:                         }
  731:                     }
  732: 
  733:                     (*s_etat_processus).erreur_systeme =
  734:                             d_es_allocation_memoire;
  735:                     return;
  736:                 }
  737: 
  738:                 for(j = 0; j < (*((struct_matrice *) (*s_objet_argument_1)
  739:                         .objet)).nombre_colonnes; j++)
  740:                 {
  741:                     ((complex16 **) (*((struct_matrice *) (*s_objet_argument_1)
  742:                             .objet)).tableau)[i][j].partie_reelle =
  743:                             ((real8 *) tampon)[j];
  744:                     ((complex16 **) (*((struct_matrice *) (*s_objet_argument_1)
  745:                             .objet)).tableau)[i][j].partie_imaginaire = 0;
  746:                 }
  747: 
  748:                 free(tampon);
  749:             }
  750: 
  751:             (*((struct_matrice *) (*s_objet_argument_1).objet)).type = 'C';
  752:             (*s_objet_argument_1).type = MCX;
  753:         }
  754:     }
  755: 
  756:     position = (*((integer8 *) (*s_objet_argument_2).objet));
  757: 
  758:     if (((position < 1) || (position > (integer8) ((*((struct_matrice *)
  759:             (*s_objet_argument_3).objet)).nombre_lignes + 1))) ||
  760:             ((position != 1) && (matrice_vide == d_vrai)))
  761:     {
  762:         if (variable_partagee == d_vrai)
  763:         {
  764:             if (pthread_mutex_unlock(&((*(*s_etat_processus)
  765:                     .pointeur_variable_partagee_courante).mutex)) != 0)
  766:             {
  767:                 (*s_etat_processus).erreur_systeme = d_es_processus;
  768:                 return;
  769:             }
  770:         }
  771: 
  772:         liberation(s_etat_processus, s_objet_argument_1);
  773:         liberation(s_etat_processus, s_objet_argument_2);
  774: 
  775:         if (presence_nom == d_faux)
  776:         {
  777:             liberation(s_etat_processus, s_objet_argument_3);
  778:         }
  779: 
  780:         (*s_etat_processus).erreur_execution =
  781:                 d_ex_argument_invalide;
  782:         return;
  783:     }
  784: 
  785:     tableau = (*((struct_matrice *) (*s_objet_argument_3).objet)).tableau;
  786: 
  787:     if (matrice_vide == d_faux)
  788:     {
  789:         if (((*((struct_matrice *) (*s_objet_argument_3).objet)).tableau
  790:                 = malloc(((*((struct_matrice *) (*s_objet_argument_3).objet))
  791:                 .nombre_lignes + 1) * sizeof(void *))) == NULL)
  792:         {
  793:             if (variable_partagee == d_vrai)
  794:             {
  795:                 if (pthread_mutex_unlock(&((*(*s_etat_processus)
  796:                         .pointeur_variable_partagee_courante).mutex)) != 0)
  797:                 {
  798:                     (*s_etat_processus).erreur_systeme = d_es_processus;
  799:                     return;
  800:                 }
  801:             }
  802: 
  803:             (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
  804:             return;
  805:         }
  806: 
  807:         if (position != ((integer8) (*((struct_matrice *)
  808:                 (*s_objet_argument_3).objet)).nombre_lignes + 1))
  809:         {
  810:             for(j = i = 0; i < (*((struct_matrice *)
  811:                     (*s_objet_argument_3).objet)).nombre_lignes; i++)
  812:             {
  813:                 if (i == (unsigned long) (position - 1))
  814:                 {
  815:                     (*((struct_matrice *) (*s_objet_argument_3).objet))
  816:                             .tableau[i] = (*((struct_matrice *)
  817:                             (*s_objet_argument_1).objet)).tableau[0];
  818:                     j = 1;
  819:                 }
  820: 
  821:                 (*((struct_matrice *) (*s_objet_argument_3).objet))
  822:                         .tableau[i + j] = tableau[i];
  823:             }
  824:         }
  825:         else
  826:         {
  827:             for(i = 0; i < (*((struct_matrice *) (*s_objet_argument_3).objet))
  828:                     .nombre_lignes; i++)
  829:             {
  830:                 (*((struct_matrice *) (*s_objet_argument_3).objet)).tableau[i]
  831:                         = tableau[i];
  832:             }
  833: 
  834:             (*((struct_matrice *) (*s_objet_argument_3).objet)).tableau
  835:                     [(*((struct_matrice *) (*s_objet_argument_3).objet))
  836:                     .nombre_lignes] = (*((struct_matrice *)
  837:                     (*s_objet_argument_1).objet)).tableau[0];
  838:         }
  839: 
  840:         (*((struct_matrice *) (*s_objet_argument_3).objet)).nombre_lignes++;
  841:     }
  842:     else
  843:     {
  844:         free((*((struct_matrice *) (*s_objet_argument_3).objet)).tableau[0]);
  845: 
  846:         if (((*((struct_matrice *) (*s_objet_argument_3).objet)).tableau
  847:                 = malloc(sizeof(void *))) == NULL)
  848:         {
  849:             if (variable_partagee == d_vrai)
  850:             {
  851:                 if (pthread_mutex_unlock(&((*(*s_etat_processus)
  852:                         .pointeur_variable_partagee_courante).mutex)) != 0)
  853:                 {
  854:                     (*s_etat_processus).erreur_systeme = d_es_processus;
  855:                     return;
  856:                 }
  857:             }
  858: 
  859:             (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
  860:             return;
  861:         }
  862: 
  863:         (*((struct_matrice *) (*s_objet_argument_3).objet)).tableau[0] =
  864:                 (*((struct_matrice *) (*s_objet_argument_1).objet)).tableau[0];
  865:         (*((struct_matrice *) (*s_objet_argument_3).objet)).nombre_lignes =
  866:                 (*((struct_matrice *) (*s_objet_argument_1).objet))
  867:                 .nombre_lignes;
  868:         (*((struct_matrice *) (*s_objet_argument_3).objet)).nombre_colonnes =
  869:                 (*((struct_matrice *) (*s_objet_argument_1).objet))
  870:                 .nombre_colonnes;
  871:     }
  872: 
  873:     free(tableau);
  874: 
  875:     if (presence_nom == d_faux)
  876:     {
  877:         if (empilement(s_etat_processus, &((*s_etat_processus).l_base_pile),
  878:                 s_objet_argument_3) == d_erreur)
  879:         {
  880:             return;
  881:         }
  882:     }
  883:     else
  884:     {
  885:         if (variable_partagee == d_vrai)
  886:         {
  887:             (*(*s_etat_processus).pointeur_variable_partagee_courante).objet
  888:                     = s_objet_argument_3;
  889: 
  890:             if (pthread_mutex_unlock(&((*(*s_etat_processus)
  891:                     .pointeur_variable_partagee_courante).mutex)) != 0)
  892:             {
  893:                 (*s_etat_processus).erreur_systeme = d_es_processus;
  894:                 return;
  895:             }
  896:         }
  897:     }
  898: 
  899:     free((*((struct_matrice *) (*s_objet_argument_1).objet)).tableau);
  900:     free((*s_objet_argument_1).objet);
  901:     free(s_objet_argument_1);
  902: 
  903:     liberation(s_etat_processus, s_objet_argument_2);
  904: 
  905:     return;
  906: }
  907: 
  908: 
  909: /*
  910: ================================================================================
  911:   Fonction 'row-'
  912: ================================================================================
  913:   Entrées : pointeur sur une structure struct_processus
  914: --------------------------------------------------------------------------------
  915:   Sorties :
  916: --------------------------------------------------------------------------------
  917:   Effets de bord : néant
  918: ================================================================================
  919: */
  920: 
  921: void
  922: instruction_row_moins(struct_processus *s_etat_processus)
  923: {
  924:     integer8                    position;
  925: 
  926:     logical1                    presence_variable;
  927:     logical1                    variable_partagee;
  928: 
  929:     struct_objet                *s_copie_argument_2;
  930:     struct_objet                *s_objet_argument_1;
  931:     struct_objet                *s_objet_argument_2;
  932:     struct_objet                *s_objet_resultat;
  933: 
  934:     unsigned long               i;
  935:     unsigned long               j;
  936:     unsigned long               colonne;
  937: 
  938:     void                        **tableau;
  939: 
  940:     (*s_etat_processus).erreur_execution = d_ex;
  941: 
  942:     if ((*s_etat_processus).affichage_arguments == 'Y')
  943:     {
  944:         printf("\n  ROW- ");
  945: 
  946:         if ((*s_etat_processus).langue == 'F')
  947:         {
  948:             printf("(retrait d'une ligne dans une matrice)\n\n");
  949:         }
  950:         else
  951:         {
  952:             printf("(remove a row from a matrix)\n\n");
  953:         }
  954: 
  955:         printf("    2: %s, %s, %s\n", d_MIN, d_MRL, d_MCX);
  956:         printf("    1: %s\n", d_INT);
  957:         printf("->  2: %s, %s, %s\n\n", d_MIN, d_MRL, d_MCX);
  958:         printf("    1: %s, %s, %s\n\n", d_MIN, d_MRL, d_MCX);
  959: 
  960:         printf("    2: %s\n", d_NOM);
  961:         printf("    1: %s\n", d_INT);
  962:         printf("->  1: %s, %s, %s\n", d_MIN, d_MRL, d_MCX);
  963: 
  964:         return;
  965:     }
  966:     else if ((*s_etat_processus).test_instruction == 'Y')
  967:     {
  968:         (*s_etat_processus).nombre_arguments = -1;
  969:         return;
  970:     }
  971: 
  972:     if (test_cfsf(s_etat_processus, 31) == d_vrai)
  973:     {
  974:         if (empilement_pile_last(s_etat_processus, 2) == d_erreur)
  975:         {
  976:             return;
  977:         }
  978:     }
  979: 
  980:     if (depilement(s_etat_processus, &((*s_etat_processus).l_base_pile),
  981:             &s_objet_argument_1) == d_erreur)
  982:     {
  983:         (*s_etat_processus).erreur_execution = d_ex_manque_argument;
  984:         return;
  985:     }
  986: 
  987:     if (depilement(s_etat_processus, &((*s_etat_processus).l_base_pile),
  988:             &s_objet_argument_2) == d_erreur)
  989:     {
  990:         liberation(s_etat_processus, s_objet_argument_1);
  991: 
  992:         (*s_etat_processus).erreur_execution = d_ex_manque_argument;
  993:         return;
  994:     }
  995: 
  996:     variable_partagee = d_faux;
  997: 
  998:     if ((*s_objet_argument_2).type == NOM)
  999:     {
 1000:         presence_variable = d_vrai;
 1001: 
 1002:         if (recherche_variable(s_etat_processus, (*((struct_nom *)
 1003:                 (*s_objet_argument_2).objet)).nom) == d_faux)
 1004:         {
 1005:             liberation(s_etat_processus, s_objet_argument_1);
 1006:             liberation(s_etat_processus, s_objet_argument_2);
 1007: 
 1008:             (*s_etat_processus).erreur_systeme = d_es;
 1009:             (*s_etat_processus).erreur_execution = d_ex_variable_non_definie;
 1010: 
 1011:             return;
 1012:         }
 1013: 
 1014:         liberation(s_etat_processus, s_objet_argument_2);
 1015: 
 1016:         if ((*(*s_etat_processus).pointeur_variable_courante)
 1017:                 .variable_verrouillee == d_vrai)
 1018:         {
 1019:             liberation(s_etat_processus, s_objet_argument_1);
 1020: 
 1021:             (*s_etat_processus).erreur_execution = d_ex_variable_verrouillee;
 1022:             return;
 1023:         }
 1024: 
 1025:         s_objet_argument_2 = (*(*s_etat_processus).pointeur_variable_courante)
 1026:                 .objet;
 1027: 
 1028:         if (s_objet_argument_2 == NULL)
 1029:         {
 1030:             if (recherche_variable_partagee(s_etat_processus,
 1031:                     (*(*s_etat_processus).pointeur_variable_courante).nom,
 1032:                     (*(*s_etat_processus).pointeur_variable_courante)
 1033:                     .variable_partagee, (*(*s_etat_processus)
 1034:                     .pointeur_variable_courante).origine) == d_faux)
 1035:             {
 1036:                 (*s_etat_processus).erreur_systeme = d_es;
 1037:                 (*s_etat_processus).erreur_execution =
 1038:                         d_ex_variable_non_definie;
 1039: 
 1040:                 liberation(s_etat_processus, s_objet_argument_1);
 1041: 
 1042:                 return;
 1043:             }
 1044: 
 1045:             s_objet_argument_2 = (*(*s_etat_processus)
 1046:                     .pointeur_variable_partagee_courante).objet;
 1047:             variable_partagee = d_vrai;
 1048:         }
 1049: 
 1050:         if ((s_copie_argument_2 = copie_objet(s_etat_processus,
 1051:                 s_objet_argument_2, 'Q')) == NULL)
 1052:         {
 1053:             if (variable_partagee == d_vrai)
 1054:             {
 1055:                 if (pthread_mutex_unlock(&((*(*s_etat_processus)
 1056:                         .pointeur_variable_partagee_courante).mutex)) != 0)
 1057:                 {
 1058:                     (*s_etat_processus).erreur_systeme = d_es_processus;
 1059:                     return;
 1060:                 }
 1061:             }
 1062: 
 1063:             (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
 1064:             return;
 1065:         }
 1066: 
 1067:         liberation(s_etat_processus, s_objet_argument_2);
 1068:         s_objet_argument_2 = s_copie_argument_2;
 1069: 
 1070:         (*(*s_etat_processus).pointeur_variable_courante).objet =
 1071:                 s_objet_argument_2;
 1072:     }
 1073:     else
 1074:     {
 1075:         presence_variable = d_faux;
 1076: 
 1077:         if ((s_copie_argument_2 = copie_objet(s_etat_processus,
 1078:                 s_objet_argument_2, 'Q')) == NULL)
 1079:         {
 1080:             (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
 1081:             return;
 1082:         }
 1083: 
 1084:         liberation(s_etat_processus, s_objet_argument_2);
 1085:         s_objet_argument_2 = s_copie_argument_2;
 1086:     }
 1087: 
 1088:     if (((*s_objet_argument_2).type == MIN) ||
 1089:             ((*s_objet_argument_2).type == MRL) ||
 1090:             ((*s_objet_argument_2).type == MCX))
 1091:     {
 1092:         if ((*s_objet_argument_1).type == INT)
 1093:         {
 1094:             position = (*((integer8 *) (*s_objet_argument_1).objet));
 1095: 
 1096:             if ((position <= 0) || (position > (integer8) (*((struct_matrice *)
 1097:                     (*s_objet_argument_2).objet)).nombre_lignes))
 1098:             {
 1099:                 if (variable_partagee == d_vrai)
 1100:                 {
 1101:                     if (pthread_mutex_unlock(&((*(*s_etat_processus)
 1102:                             .pointeur_variable_partagee_courante).mutex)) != 0)
 1103:                     {
 1104:                         (*s_etat_processus).erreur_systeme = d_es_processus;
 1105:                         return;
 1106:                     }
 1107:                 }
 1108: 
 1109:                 liberation(s_etat_processus, s_objet_argument_1);
 1110: 
 1111:                 if (presence_variable == d_faux)
 1112:                 {
 1113:                     liberation(s_etat_processus, s_objet_argument_2);
 1114:                 }
 1115: 
 1116:                 (*s_etat_processus).erreur_execution =
 1117:                         d_ex_argument_invalide;
 1118:                 return;
 1119:             }
 1120: 
 1121:             if ((s_objet_resultat = allocation(s_etat_processus,
 1122:                     (*s_objet_argument_2).type)) == NULL)
 1123:             {
 1124:                 if (variable_partagee == d_vrai)
 1125:                 {
 1126:                     if (pthread_mutex_unlock(&((*(*s_etat_processus)
 1127:                             .pointeur_variable_partagee_courante).mutex)) != 0)
 1128:                     {
 1129:                         (*s_etat_processus).erreur_systeme = d_es_processus;
 1130:                         return;
 1131:                     }
 1132:                 }
 1133: 
 1134:                 (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
 1135:                 return;
 1136:             }
 1137: 
 1138:             (*((struct_matrice *) (*s_objet_resultat).objet)).nombre_lignes =
 1139:                     1;
 1140:             (*((struct_matrice *) (*s_objet_resultat).objet)).nombre_colonnes =
 1141:                     (*((struct_matrice *) (*s_objet_argument_2).objet))
 1142:                     .nombre_colonnes;
 1143: 
 1144:             if (((*((struct_matrice *) (*s_objet_resultat).objet)).tableau =
 1145:                     malloc(sizeof(void *))) == NULL)
 1146:             {
 1147:                 if (variable_partagee == d_vrai)
 1148:                 {
 1149:                     if (pthread_mutex_unlock(&((*(*s_etat_processus)
 1150:                             .pointeur_variable_partagee_courante).mutex)) != 0)
 1151:                     {
 1152:                         (*s_etat_processus).erreur_systeme = d_es_processus;
 1153:                         return;
 1154:                     }
 1155:                 }
 1156: 
 1157:                 (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
 1158:                 return;
 1159:             }
 1160: 
 1161:             (*((struct_matrice *) (*s_objet_resultat).objet)).tableau[0] =
 1162:                     (*((struct_matrice *) (*s_objet_argument_2).objet)).tableau
 1163:                     [colonne = position - 1];
 1164: 
 1165:             if ((*((struct_matrice *) (*s_objet_argument_2).objet))
 1166:                     .nombre_lignes > 1)
 1167:             {
 1168:                 tableau = (*((struct_matrice *) (*s_objet_argument_2).objet))
 1169:                         .tableau;
 1170: 
 1171:                 if (((*((struct_matrice *) (*s_objet_argument_2).objet)).tableau
 1172:                         = malloc(((*((struct_matrice *) (*s_objet_argument_2)
 1173:                         .objet)).nombre_lignes - 1) * sizeof(void *))) == NULL)
 1174:                 {
 1175:                     if (variable_partagee == d_vrai)
 1176:                     {
 1177:                         if (pthread_mutex_unlock(&((*(*s_etat_processus)
 1178:                                 .pointeur_variable_partagee_courante).mutex))
 1179:                                 != 0)
 1180:                         {
 1181:                             (*s_etat_processus).erreur_systeme = d_es_processus;
 1182:                             return;
 1183:                         }
 1184:                     }
 1185: 
 1186:                     (*s_etat_processus).erreur_systeme =
 1187:                             d_es_allocation_memoire;
 1188:                     return;
 1189:                 }
 1190: 
 1191:                 (*((struct_matrice *) (*s_objet_argument_2).objet))
 1192:                         .nombre_lignes--;
 1193: 
 1194:                 for(i = j = 0; i < (*((struct_matrice *) (*s_objet_argument_2)
 1195:                         .objet)).nombre_lignes; i++)
 1196:                 {
 1197:                     if (i == colonne)
 1198:                     {
 1199:                         j = 1;
 1200:                     }
 1201: 
 1202:                     (*((struct_matrice *) (*s_objet_argument_2).objet))
 1203:                             .tableau[i] = tableau[i + j];
 1204:                 }
 1205: 
 1206:                 free(tableau);
 1207:             }
 1208:             else
 1209:             {
 1210:                 if (((*((struct_matrice *) (*s_objet_argument_2).objet))
 1211:                         .tableau[0] = malloc(0)) == NULL)
 1212:                 {
 1213:                     if (variable_partagee == d_vrai)
 1214:                     {
 1215:                         if (pthread_mutex_unlock(&((*(*s_etat_processus)
 1216:                                 .pointeur_variable_partagee_courante).mutex))
 1217:                                 != 0)
 1218:                         {
 1219:                             (*s_etat_processus).erreur_systeme = d_es_processus;
 1220:                             return;
 1221:                         }
 1222:                     }
 1223: 
 1224:                     (*s_etat_processus).erreur_systeme =
 1225:                             d_es_allocation_memoire;
 1226:                     return;
 1227:                 }
 1228: 
 1229:                 (*((struct_matrice *) (*s_objet_argument_2).objet))
 1230:                         .nombre_colonnes = 0;
 1231:             }
 1232:         }
 1233:         else
 1234:         {
 1235:             if (variable_partagee == d_vrai)
 1236:             {
 1237:                 if (pthread_mutex_unlock(&((*(*s_etat_processus)
 1238:                         .pointeur_variable_partagee_courante).mutex)) != 0)
 1239:                 {
 1240:                     (*s_etat_processus).erreur_systeme = d_es_processus;
 1241:                     return;
 1242:                 }
 1243:             }
 1244: 
 1245:             liberation(s_etat_processus, s_objet_argument_1);
 1246: 
 1247:             if (presence_variable == d_faux)
 1248:             {
 1249:                 liberation(s_etat_processus, s_objet_argument_2);
 1250:             }
 1251: 
 1252:             (*s_etat_processus).erreur_execution = d_ex_erreur_type_argument;
 1253:             return;
 1254:         }
 1255:     }
 1256:     else
 1257:     {
 1258:         if (variable_partagee == d_vrai)
 1259:         {
 1260:             if (pthread_mutex_unlock(&((*(*s_etat_processus)
 1261:                     .pointeur_variable_partagee_courante).mutex)) != 0)
 1262:             {
 1263:                 (*s_etat_processus).erreur_systeme = d_es_processus;
 1264:                 return;
 1265:             }
 1266:         }
 1267: 
 1268:         liberation(s_etat_processus, s_objet_argument_1);
 1269: 
 1270:         if (presence_variable == d_faux)
 1271:         {
 1272:             liberation(s_etat_processus, s_objet_argument_2);
 1273:         }
 1274: 
 1275:         (*s_etat_processus).erreur_execution = d_ex_erreur_type_argument;
 1276:         return;
 1277:     }
 1278: 
 1279:     liberation(s_etat_processus, s_objet_argument_1);
 1280: 
 1281:     if (presence_variable == d_faux)
 1282:     {
 1283:         if (empilement(s_etat_processus, &((*s_etat_processus).l_base_pile),
 1284:                 s_objet_argument_2) == d_erreur)
 1285:         {
 1286:             return;
 1287:         }
 1288:     }
 1289:     else if (variable_partagee == d_vrai)
 1290:     {
 1291:         (*(*s_etat_processus).pointeur_variable_partagee_courante).objet =
 1292:                 s_objet_argument_2;
 1293: 
 1294:         if (pthread_mutex_unlock(&((*(*s_etat_processus)
 1295:                 .pointeur_variable_partagee_courante).mutex)) != 0)
 1296:         {
 1297:             (*s_etat_processus).erreur_systeme = d_es_processus;
 1298:             return;
 1299:         }
 1300:     }
 1301: 
 1302:     if (empilement(s_etat_processus, &((*s_etat_processus).l_base_pile),
 1303:             s_objet_resultat) == d_erreur)
 1304:     {
 1305:         return;
 1306:     }
 1307: 
 1308:     return;
 1309: }
 1310: 
 1311: 
 1312: /*
 1313: ================================================================================
 1314:   Fonction 'rci'
 1315: ================================================================================
 1316:   Entrées : pointeur sur une structure struct_processus
 1317: --------------------------------------------------------------------------------
 1318:   Sorties :
 1319: --------------------------------------------------------------------------------
 1320:   Effets de bord : néant
 1321: ================================================================================
 1322: */
 1323: 
 1324: void
 1325: instruction_rci(struct_processus *s_etat_processus)
 1326: {
 1327:     logical1                    last_valide;
 1328: 
 1329:     struct_objet                *s_objet_argument_1;
 1330:     struct_objet                *s_objet_argument_2;
 1331:     struct_objet                *s_objet_argument_3;
 1332:     struct_objet                *tampon;
 1333: 
 1334:     (*s_etat_processus).erreur_execution = d_ex;
 1335: 
 1336:     if ((*s_etat_processus).affichage_arguments == 'Y')
 1337:     {
 1338:         printf("\n  RCI ");
 1339: 
 1340:         if ((*s_etat_processus).langue == 'F')
 1341:         {
 1342:             printf("(multiplication d'une ligne d'une matrice)\n\n");
 1343:         }
 1344:         else
 1345:         {
 1346:             printf("(multiply a row in a matrix)\n\n");
 1347:         }
 1348: 
 1349:         printf("    3: %s, %s, %s\n", d_MIN, d_MRL, d_MCX);
 1350:         printf("    2: %s, %s, %s\n", d_INT, d_REL, d_CPL);
 1351:         printf("    1: %s\n", d_INT);
 1352:         printf("->  1: %s, %s, %s\n", d_MIN, d_MRL, d_MCX);
 1353: 
 1354:         return;
 1355:     }
 1356:     else if ((*s_etat_processus).test_instruction == 'Y')
 1357:     {
 1358:         (*s_etat_processus).nombre_arguments = -1;
 1359:         return;
 1360:     }
 1361: 
 1362:     if ((last_valide = test_cfsf(s_etat_processus, 31)) == d_vrai)
 1363:     {
 1364:         if (empilement_pile_last(s_etat_processus, 3) == d_erreur)
 1365:         {
 1366:             return;
 1367:         }
 1368: 
 1369:         cf(s_etat_processus, 31);
 1370:     }
 1371: 
 1372:     if (depilement(s_etat_processus, &((*s_etat_processus).l_base_pile),
 1373:             &s_objet_argument_1) == d_erreur)
 1374:     {
 1375:         if (last_valide == d_vrai)
 1376:         {
 1377:             sf(s_etat_processus, 31);
 1378:         }
 1379: 
 1380:         (*s_etat_processus).erreur_execution = d_ex_manque_argument;
 1381:         return;
 1382:     }
 1383: 
 1384:     if (depilement(s_etat_processus, &((*s_etat_processus).l_base_pile),
 1385:             &s_objet_argument_2) == d_erreur)
 1386:     {
 1387:         if (last_valide == d_vrai)
 1388:         {
 1389:             sf(s_etat_processus, 31);
 1390:         }
 1391: 
 1392:         liberation(s_etat_processus, s_objet_argument_1);
 1393: 
 1394:         (*s_etat_processus).erreur_execution = d_ex_manque_argument;
 1395:         return;
 1396:     }
 1397: 
 1398:     if (depilement(s_etat_processus, &((*s_etat_processus).l_base_pile),
 1399:             &s_objet_argument_3) == d_erreur)
 1400:     {
 1401:         if (last_valide == d_vrai)
 1402:         {
 1403:             sf(s_etat_processus, 31);
 1404:         }
 1405: 
 1406:         liberation(s_etat_processus, s_objet_argument_1);
 1407:         liberation(s_etat_processus, s_objet_argument_2);
 1408: 
 1409:         (*s_etat_processus).erreur_execution = d_ex_manque_argument;
 1410:         return;
 1411:     }
 1412: 
 1413:     if ((((*s_objet_argument_3).type == MIN) ||
 1414:             ((*s_objet_argument_3).type == MRL) ||
 1415:             ((*s_objet_argument_3).type == MCX)) &&
 1416:             (((*s_objet_argument_2).type == INT) ||
 1417:             ((*s_objet_argument_2).type == REL) ||
 1418:             ((*s_objet_argument_2).type == CPL)) &&
 1419:             ((*s_objet_argument_1).type == INT))
 1420:     {
 1421:         if (empilement(s_etat_processus, &((*s_etat_processus).l_base_pile),
 1422:                 s_objet_argument_3) == d_erreur)
 1423:         {
 1424:             if (last_valide == d_vrai)
 1425:             {
 1426:                 sf(s_etat_processus, 31);
 1427:             }
 1428: 
 1429:             return;
 1430:         }
 1431: 
 1432:         tampon = s_objet_argument_1;
 1433: 
 1434:         if ((s_objet_argument_1 = allocation(s_etat_processus, LST)) == NULL)
 1435:         {
 1436:             (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
 1437:             return;
 1438:         }
 1439: 
 1440:         if (((*s_objet_argument_1).objet =
 1441:                 allocation_maillon(s_etat_processus)) == NULL)
 1442:         {
 1443:             (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
 1444:             return;
 1445:         }
 1446: 
 1447:         (*((struct_liste_chainee *) (*s_objet_argument_1).objet)).donnee =
 1448:                 tampon;
 1449:         (*((struct_liste_chainee *) (*s_objet_argument_1).objet)).suivant =
 1450:                 NULL;
 1451: 
 1452:         if (empilement(s_etat_processus, &((*s_etat_processus).l_base_pile),
 1453:                 s_objet_argument_1) == d_erreur)
 1454:         {
 1455:             if (last_valide == d_vrai)
 1456:             {
 1457:                 sf(s_etat_processus, 31);
 1458:             }
 1459: 
 1460:             return;
 1461:         }
 1462: 
 1463:         instruction_dup2(s_etat_processus);
 1464: 
 1465:         if (((*s_etat_processus).erreur_systeme != d_es) ||
 1466:                 ((*s_etat_processus).erreur_execution != d_ex) ||
 1467:                 ((*s_etat_processus).exception != d_ep))
 1468:         {
 1469:             liberation(s_etat_processus, s_objet_argument_1);
 1470:             liberation(s_etat_processus, s_objet_argument_2);
 1471:             liberation(s_etat_processus, s_objet_argument_3);
 1472: 
 1473:             if (last_valide == d_vrai)
 1474:             {
 1475:                 sf(s_etat_processus, 31);
 1476:             }
 1477: 
 1478:             return;
 1479:         }
 1480: 
 1481:         instruction_getr(s_etat_processus);
 1482: 
 1483:         if (((*s_etat_processus).erreur_systeme != d_es) ||
 1484:                 ((*s_etat_processus).erreur_execution != d_ex) ||
 1485:                 ((*s_etat_processus).exception != d_ep))
 1486:         {
 1487:             liberation(s_etat_processus, s_objet_argument_1);
 1488:             liberation(s_etat_processus, s_objet_argument_2);
 1489:             liberation(s_etat_processus, s_objet_argument_3);
 1490: 
 1491:             if (last_valide == d_vrai)
 1492:             {
 1493:                 sf(s_etat_processus, 31);
 1494:             }
 1495: 
 1496:             return;
 1497:         }
 1498: 
 1499:         if (empilement(s_etat_processus, &((*s_etat_processus).l_base_pile),
 1500:                 s_objet_argument_2) == d_erreur)
 1501:         {
 1502:             return;
 1503:         }
 1504: 
 1505:         instruction_multiplication(s_etat_processus);
 1506: 
 1507:         if (((*s_etat_processus).erreur_systeme != d_es) ||
 1508:                 ((*s_etat_processus).erreur_execution != d_ex) ||
 1509:                 ((*s_etat_processus).exception != d_ep))
 1510:         {
 1511:             liberation(s_etat_processus, s_objet_argument_1);
 1512:             liberation(s_etat_processus, s_objet_argument_2);
 1513:             liberation(s_etat_processus, s_objet_argument_3);
 1514: 
 1515:             if (last_valide == d_vrai)
 1516:             {
 1517:                 sf(s_etat_processus, 31);
 1518:             }
 1519: 
 1520:             return;
 1521:         }
 1522: 
 1523:         instruction_putr(s_etat_processus);
 1524: 
 1525:         if (((*s_etat_processus).erreur_systeme != d_es) ||
 1526:                 ((*s_etat_processus).erreur_execution != d_ex) ||
 1527:                 ((*s_etat_processus).exception != d_ep))
 1528:         {
 1529:             liberation(s_etat_processus, s_objet_argument_1);
 1530:             liberation(s_etat_processus, s_objet_argument_2);
 1531:             liberation(s_etat_processus, s_objet_argument_3);
 1532: 
 1533:             if (last_valide == d_vrai)
 1534:             {
 1535:                 sf(s_etat_processus, 31);
 1536:             }
 1537: 
 1538:             return;
 1539:         }
 1540:     }
 1541:     else
 1542:     {
 1543:         liberation(s_etat_processus, s_objet_argument_1);
 1544:         liberation(s_etat_processus, s_objet_argument_2);
 1545:         liberation(s_etat_processus, s_objet_argument_3);
 1546: 
 1547:         if (last_valide == d_vrai)
 1548:         {
 1549:             sf(s_etat_processus, 31);
 1550:         }
 1551: 
 1552:         (*s_etat_processus).erreur_execution = d_ex_erreur_type_argument;
 1553:         return;
 1554:     }
 1555: 
 1556:     if (last_valide == d_vrai)
 1557:     {
 1558:         sf(s_etat_processus, 31);
 1559:     }
 1560: 
 1561:     return;
 1562: }
 1563: 
 1564: 
 1565: /*
 1566: ================================================================================
 1567:   Fonction 'rcij'
 1568: ================================================================================
 1569:   Entrées : pointeur sur une structure struct_processus
 1570: --------------------------------------------------------------------------------
 1571:   Sorties :
 1572: --------------------------------------------------------------------------------
 1573:   Effets de bord : néant
 1574: ================================================================================
 1575: */
 1576: 
 1577: void
 1578: instruction_rcij(struct_processus *s_etat_processus)
 1579: {
 1580:     logical1                    last_valide;
 1581: 
 1582:     struct_objet                *s_objet_argument_1;
 1583:     struct_objet                *s_objet_argument_2;
 1584:     struct_objet                *s_objet_argument_3;
 1585:     struct_objet                *s_objet_argument_4;
 1586:     struct_objet                *tampon;
 1587: 
 1588:     (*s_etat_processus).erreur_execution = d_ex;
 1589: 
 1590:     if ((*s_etat_processus).affichage_arguments == 'Y')
 1591:     {
 1592:         printf("\n  RCIJ ");
 1593: 
 1594:         if ((*s_etat_processus).langue == 'F')
 1595:         {
 1596:             printf("(multiplication puis ajout d'une ligne d'une matrice)\n\n");
 1597:         }
 1598:         else
 1599:         {
 1600:             printf("(multiply and add a row in a matrix)\n\n");
 1601:         }
 1602: 
 1603:         printf("    4: %s, %s, %s\n", d_MIN, d_MRL, d_MCX);
 1604:         printf("    3: %s, %s, %s\n", d_INT, d_REL, d_CPL);
 1605:         printf("    2: %s\n", d_INT);
 1606:         printf("    1: %s\n", d_INT);
 1607:         printf("->  1: %s, %s, %s\n", d_MIN, d_MRL, d_MCX);
 1608: 
 1609:         return;
 1610:     }
 1611:     else if ((*s_etat_processus).test_instruction == 'Y')
 1612:     {
 1613:         (*s_etat_processus).nombre_arguments = -1;
 1614:         return;
 1615:     }
 1616: 
 1617:     if ((last_valide = test_cfsf(s_etat_processus, 31)) == d_vrai)
 1618:     {
 1619:         if (empilement_pile_last(s_etat_processus, 4) == d_erreur)
 1620:         {
 1621:             return;
 1622:         }
 1623: 
 1624:         cf(s_etat_processus, 31);
 1625:     }
 1626: 
 1627:     if (depilement(s_etat_processus, &((*s_etat_processus).l_base_pile),
 1628:             &s_objet_argument_1) == d_erreur)
 1629:     {
 1630:         (*s_etat_processus).erreur_execution = d_ex_manque_argument;
 1631:         return;
 1632:     }
 1633: 
 1634:     if (depilement(s_etat_processus, &((*s_etat_processus).l_base_pile),
 1635:             &s_objet_argument_2) == d_erreur)
 1636:     {
 1637:         liberation(s_etat_processus, s_objet_argument_1);
 1638: 
 1639:         (*s_etat_processus).erreur_execution = d_ex_manque_argument;
 1640:         return;
 1641:     }
 1642: 
 1643:     if (depilement(s_etat_processus, &((*s_etat_processus).l_base_pile),
 1644:             &s_objet_argument_3) == d_erreur)
 1645:     {
 1646:         liberation(s_etat_processus, s_objet_argument_1);
 1647:         liberation(s_etat_processus, s_objet_argument_2);
 1648: 
 1649:         (*s_etat_processus).erreur_execution = d_ex_manque_argument;
 1650:         return;
 1651:     }
 1652: 
 1653:     if (depilement(s_etat_processus, &((*s_etat_processus).l_base_pile),
 1654:             &s_objet_argument_4) == d_erreur)
 1655:     {
 1656:         liberation(s_etat_processus, s_objet_argument_1);
 1657:         liberation(s_etat_processus, s_objet_argument_2);
 1658:         liberation(s_etat_processus, s_objet_argument_3);
 1659: 
 1660:         (*s_etat_processus).erreur_execution = d_ex_manque_argument;
 1661:         return;
 1662:     }
 1663: 
 1664:     if ((((*s_objet_argument_4).type == MIN) ||
 1665:             ((*s_objet_argument_4).type == MRL) ||
 1666:             ((*s_objet_argument_4).type == MCX)) &&
 1667:             (((*s_objet_argument_3).type == INT) ||
 1668:             ((*s_objet_argument_3).type == REL) ||
 1669:             ((*s_objet_argument_3).type == CPL)) &&
 1670:             ((*s_objet_argument_2).type == INT) &&
 1671:             ((*s_objet_argument_1).type == INT))
 1672:     {
 1673:         if (empilement(s_etat_processus, &((*s_etat_processus).l_base_pile),
 1674:                 s_objet_argument_4) == d_erreur)
 1675:         {
 1676:             return;
 1677:         }
 1678: 
 1679:         tampon = s_objet_argument_1;
 1680: 
 1681:         if ((s_objet_argument_1 = allocation(s_etat_processus, LST)) == NULL)
 1682:         {
 1683:             (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
 1684:             return;
 1685:         }
 1686: 
 1687:         if (((*s_objet_argument_1).objet =
 1688:                 allocation_maillon(s_etat_processus)) == NULL)
 1689:         {
 1690:             (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
 1691:             return;
 1692:         }
 1693: 
 1694:         (*((struct_liste_chainee *) (*s_objet_argument_1).objet)).donnee =
 1695:                 tampon;
 1696:         (*((struct_liste_chainee *) (*s_objet_argument_1).objet)).suivant =
 1697:                 NULL;
 1698: 
 1699:         tampon = s_objet_argument_2;
 1700: 
 1701:         if ((s_objet_argument_2 = allocation(s_etat_processus, LST)) == NULL)
 1702:         {
 1703:             (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
 1704:             return;
 1705:         }
 1706: 
 1707:         if (((*s_objet_argument_2).objet =
 1708:                 allocation_maillon(s_etat_processus)) == NULL)
 1709:         {
 1710:             (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
 1711:             return;
 1712:         }
 1713: 
 1714:         (*((struct_liste_chainee *) (*s_objet_argument_2).objet)).donnee =
 1715:                 tampon;
 1716:         (*((struct_liste_chainee *) (*s_objet_argument_2).objet)).suivant =
 1717:                 NULL;
 1718: 
 1719:         instruction_dup(s_etat_processus);
 1720: 
 1721:         if (((*s_etat_processus).erreur_systeme != d_es) ||
 1722:                 ((*s_etat_processus).erreur_execution != d_ex) ||
 1723:                 ((*s_etat_processus).exception != d_ep))
 1724:         {
 1725:             liberation(s_etat_processus, s_objet_argument_1);
 1726:             liberation(s_etat_processus, s_objet_argument_2);
 1727:             liberation(s_etat_processus, s_objet_argument_3);
 1728:             liberation(s_etat_processus, s_objet_argument_4);
 1729: 
 1730:             if (last_valide == d_vrai)
 1731:             {
 1732:                 sf(s_etat_processus, 31);
 1733:             }
 1734: 
 1735:             return;
 1736:         }
 1737: 
 1738:         if (empilement(s_etat_processus, &((*s_etat_processus).l_base_pile),
 1739:                 s_objet_argument_2) == d_erreur)
 1740:         {
 1741:             return;
 1742:         }
 1743: 
 1744:         instruction_getr(s_etat_processus);
 1745: 
 1746:         if (((*s_etat_processus).erreur_systeme != d_es) ||
 1747:                 ((*s_etat_processus).erreur_execution != d_ex) ||
 1748:                 ((*s_etat_processus).exception != d_ep))
 1749:         {
 1750:             liberation(s_etat_processus, s_objet_argument_1);
 1751:             liberation(s_etat_processus, s_objet_argument_2);
 1752:             liberation(s_etat_processus, s_objet_argument_3);
 1753:             liberation(s_etat_processus, s_objet_argument_4);
 1754: 
 1755:             if (last_valide == d_vrai)
 1756:             {
 1757:                 sf(s_etat_processus, 31);
 1758:             }
 1759: 
 1760:             return;
 1761:         }
 1762: 
 1763:         if (empilement(s_etat_processus, &((*s_etat_processus).l_base_pile),
 1764:                 s_objet_argument_3) == d_erreur)
 1765:         {
 1766:             return;
 1767:         }
 1768: 
 1769:         instruction_multiplication(s_etat_processus);
 1770: 
 1771:         if (((*s_etat_processus).erreur_systeme != d_es) ||
 1772:                 ((*s_etat_processus).erreur_execution != d_ex) ||
 1773:                 ((*s_etat_processus).exception != d_ep))
 1774:         {
 1775:             liberation(s_etat_processus, s_objet_argument_1);
 1776:             liberation(s_etat_processus, s_objet_argument_2);
 1777:             liberation(s_etat_processus, s_objet_argument_3);
 1778:             liberation(s_etat_processus, s_objet_argument_4);
 1779: 
 1780:             if (last_valide == d_vrai)
 1781:             {
 1782:                 sf(s_etat_processus, 31);
 1783:             }
 1784: 
 1785:             return;
 1786:         }
 1787: 
 1788:         instruction_over(s_etat_processus);
 1789: 
 1790:         if (((*s_etat_processus).erreur_systeme != d_es) ||
 1791:                 ((*s_etat_processus).erreur_execution != d_ex) ||
 1792:                 ((*s_etat_processus).exception != d_ep))
 1793:         {
 1794:             liberation(s_etat_processus, s_objet_argument_1);
 1795:             liberation(s_etat_processus, s_objet_argument_2);
 1796:             liberation(s_etat_processus, s_objet_argument_3);
 1797:             liberation(s_etat_processus, s_objet_argument_4);
 1798: 
 1799:             if (last_valide == d_vrai)
 1800:             {
 1801:                 sf(s_etat_processus, 31);
 1802:             }
 1803: 
 1804:             return;
 1805:         }
 1806: 
 1807:         if (empilement(s_etat_processus, &((*s_etat_processus).l_base_pile),
 1808:                 s_objet_argument_1) == d_erreur)
 1809:         {
 1810:             return;
 1811:         }
 1812: 
 1813:         instruction_swap(s_etat_processus);
 1814: 
 1815:         if (((*s_etat_processus).erreur_systeme != d_es) ||
 1816:                 ((*s_etat_processus).erreur_execution != d_ex) ||
 1817:                 ((*s_etat_processus).exception != d_ep))
 1818:         {
 1819:             liberation(s_etat_processus, s_objet_argument_1);
 1820:             liberation(s_etat_processus, s_objet_argument_2);
 1821:             liberation(s_etat_processus, s_objet_argument_3);
 1822:             liberation(s_etat_processus, s_objet_argument_4);
 1823: 
 1824:             if (last_valide == d_vrai)
 1825:             {
 1826:                 sf(s_etat_processus, 31);
 1827:             }
 1828: 
 1829:             return;
 1830:         }
 1831: 
 1832:         if (((*s_etat_processus).erreur_systeme != d_es) ||
 1833:                 ((*s_etat_processus).erreur_execution != d_ex) ||
 1834:                 ((*s_etat_processus).exception != d_ep))
 1835:         {
 1836:             liberation(s_etat_processus, s_objet_argument_1);
 1837:             liberation(s_etat_processus, s_objet_argument_2);
 1838:             liberation(s_etat_processus, s_objet_argument_3);
 1839:             liberation(s_etat_processus, s_objet_argument_4);
 1840: 
 1841:             if (last_valide == d_vrai)
 1842:             {
 1843:                 sf(s_etat_processus, 31);
 1844:             }
 1845: 
 1846:             return;
 1847:         }
 1848: 
 1849:         instruction_over(s_etat_processus);
 1850: 
 1851:         if (((*s_etat_processus).erreur_systeme != d_es) ||
 1852:                 ((*s_etat_processus).erreur_execution != d_ex) ||
 1853:                 ((*s_etat_processus).exception != d_ep))
 1854:         {
 1855:             liberation(s_etat_processus, s_objet_argument_1);
 1856:             liberation(s_etat_processus, s_objet_argument_2);
 1857:             liberation(s_etat_processus, s_objet_argument_3);
 1858:             liberation(s_etat_processus, s_objet_argument_4);
 1859: 
 1860:             if (last_valide == d_vrai)
 1861:             {
 1862:                 sf(s_etat_processus, 31);
 1863:             }
 1864: 
 1865:             return;
 1866:         }
 1867: 
 1868:         if (((*s_etat_processus).erreur_systeme != d_es) ||
 1869:                 ((*s_etat_processus).erreur_execution != d_ex) ||
 1870:                 ((*s_etat_processus).exception != d_ep))
 1871:         {
 1872:             liberation(s_etat_processus, s_objet_argument_1);
 1873:             liberation(s_etat_processus, s_objet_argument_2);
 1874:             liberation(s_etat_processus, s_objet_argument_3);
 1875:             liberation(s_etat_processus, s_objet_argument_4);
 1876: 
 1877:             if (last_valide == d_vrai)
 1878:             {
 1879:                 sf(s_etat_processus, 31);
 1880:             }
 1881: 
 1882:             return;
 1883:         }
 1884: 
 1885:         instruction_getr(s_etat_processus);
 1886: 
 1887:         if (((*s_etat_processus).erreur_systeme != d_es) ||
 1888:                 ((*s_etat_processus).erreur_execution != d_ex) ||
 1889:                 ((*s_etat_processus).exception != d_ep))
 1890:         {
 1891:             liberation(s_etat_processus, s_objet_argument_1);
 1892:             liberation(s_etat_processus, s_objet_argument_2);
 1893:             liberation(s_etat_processus, s_objet_argument_3);
 1894:             liberation(s_etat_processus, s_objet_argument_4);
 1895: 
 1896:             if (last_valide == d_vrai)
 1897:             {
 1898:                 sf(s_etat_processus, 31);
 1899:             }
 1900: 
 1901:             return;
 1902:         }
 1903: 
 1904:         if (((*s_etat_processus).erreur_systeme != d_es) ||
 1905:                 ((*s_etat_processus).erreur_execution != d_ex) ||
 1906:                 ((*s_etat_processus).exception != d_ep))
 1907:         {
 1908:             liberation(s_etat_processus, s_objet_argument_1);
 1909:             liberation(s_etat_processus, s_objet_argument_2);
 1910:             liberation(s_etat_processus, s_objet_argument_3);
 1911:             liberation(s_etat_processus, s_objet_argument_4);
 1912: 
 1913:             if (last_valide == d_vrai)
 1914:             {
 1915:                 sf(s_etat_processus, 31);
 1916:             }
 1917: 
 1918:             return;
 1919:         }
 1920: 
 1921:         instruction_rot(s_etat_processus);
 1922: 
 1923:         if (((*s_etat_processus).erreur_systeme != d_es) ||
 1924:                 ((*s_etat_processus).erreur_execution != d_ex) ||
 1925:                 ((*s_etat_processus).exception != d_ep))
 1926:         {
 1927:             liberation(s_etat_processus, s_objet_argument_1);
 1928:             liberation(s_etat_processus, s_objet_argument_2);
 1929:             liberation(s_etat_processus, s_objet_argument_3);
 1930:             liberation(s_etat_processus, s_objet_argument_4);
 1931: 
 1932:             if (last_valide == d_vrai)
 1933:             {
 1934:                 sf(s_etat_processus, 31);
 1935:             }
 1936: 
 1937:             return;
 1938:         }
 1939: 
 1940:         if (((*s_etat_processus).erreur_systeme != d_es) ||
 1941:                 ((*s_etat_processus).erreur_execution != d_ex) ||
 1942:                 ((*s_etat_processus).exception != d_ep))
 1943:         {
 1944:             liberation(s_etat_processus, s_objet_argument_1);
 1945:             liberation(s_etat_processus, s_objet_argument_2);
 1946:             liberation(s_etat_processus, s_objet_argument_3);
 1947:             liberation(s_etat_processus, s_objet_argument_4);
 1948: 
 1949:             if (last_valide == d_vrai)
 1950:             {
 1951:                 sf(s_etat_processus, 31);
 1952:             }
 1953: 
 1954:             return;
 1955:         }
 1956: 
 1957:         instruction_plus(s_etat_processus);
 1958: 
 1959:         if (((*s_etat_processus).erreur_systeme != d_es) ||
 1960:                 ((*s_etat_processus).erreur_execution != d_ex) ||
 1961:                 ((*s_etat_processus).exception != d_ep))
 1962:         {
 1963:             liberation(s_etat_processus, s_objet_argument_1);
 1964:             liberation(s_etat_processus, s_objet_argument_2);
 1965:             liberation(s_etat_processus, s_objet_argument_3);
 1966:             liberation(s_etat_processus, s_objet_argument_4);
 1967: 
 1968:             if (last_valide == d_vrai)
 1969:             {
 1970:                 sf(s_etat_processus, 31);
 1971:             }
 1972: 
 1973:             return;
 1974:         }
 1975: 
 1976:         instruction_putr(s_etat_processus);
 1977: 
 1978:         if (((*s_etat_processus).erreur_systeme != d_es) ||
 1979:                 ((*s_etat_processus).erreur_execution != d_ex) ||
 1980:                 ((*s_etat_processus).exception != d_ep))
 1981:         {
 1982:             liberation(s_etat_processus, s_objet_argument_1);
 1983:             liberation(s_etat_processus, s_objet_argument_2);
 1984:             liberation(s_etat_processus, s_objet_argument_3);
 1985:             liberation(s_etat_processus, s_objet_argument_4);
 1986: 
 1987:             if (last_valide == d_vrai)
 1988:             {
 1989:                 sf(s_etat_processus, 31);
 1990:             }
 1991: 
 1992:             return;
 1993:         }
 1994:     }
 1995:     else
 1996:     {
 1997:         liberation(s_etat_processus, s_objet_argument_1);
 1998:         liberation(s_etat_processus, s_objet_argument_2);
 1999:         liberation(s_etat_processus, s_objet_argument_3);
 2000:         liberation(s_etat_processus, s_objet_argument_4);
 2001: 
 2002:         if (last_valide == d_vrai)
 2003:         {
 2004:             sf(s_etat_processus, 31);
 2005:         }
 2006: 
 2007:         (*s_etat_processus).erreur_execution = d_ex_erreur_type_argument;
 2008:         return;
 2009:     }
 2010: 
 2011:     if (last_valide == d_vrai)
 2012:     {
 2013:         sf(s_etat_processus, 31);
 2014:     }
 2015: 
 2016:     return;
 2017: }
 2018: 
 2019: // vim: ts=4

CVSweb interface <joel.bertrand@systella.fr>