File:  [local] / rpl / src / instructions_a4.c
Revision 1.68: download - view: text, annotated - select for diffs - revision graph
Fri Jan 10 11:15:43 2020 UTC (4 years, 3 months ago) by bertrand
Branches: MAIN
CVS tags: rpl-4_1_32, HEAD
Modification du copyright.

    1: /*
    2: ================================================================================
    3:   RPL/2 (R) version 4.1.32
    4:   Copyright (C) 1989-2020 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 'autoscale'
   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_autoscale(struct_processus *s_etat_processus)
   40: {
   41:     logical1                        presence[3];
   42: 
   43:     struct_liste_chainee            *l_element_courant;
   44: 
   45:     struct_objet                    *s_objet;
   46: 
   47:     unsigned char                   *tampon;
   48: 
   49:     (*s_etat_processus).erreur_execution = d_ex;
   50: 
   51:     if ((*s_etat_processus).affichage_arguments == 'Y')
   52:     {
   53:         printf("\n  AUTOSCALE ");
   54: 
   55:         if ((*s_etat_processus).langue == 'F')
   56:         {
   57:             printf("(échelles automatiques)\n\n");
   58:         }
   59:         else
   60:         {
   61:             printf("(automatic scales)\n\n");
   62:         }
   63: 
   64:         printf("    1: %s\n\n", d_NOM);
   65: 
   66:         printf("    1: %s\n\n", d_LST);
   67: 
   68:         if ((*s_etat_processus).langue == 'F')
   69:         {
   70:             printf("  Utilisation :\n\n");
   71:         }
   72:         else
   73:         {
   74:             printf("  Usage:\n\n");
   75:         }
   76: 
   77:         printf("    { X Y } AUTOSCALE\n");
   78:         printf("    { } AUTOSCALE\n");
   79:         printf("    'Z' AUTOSCALE\n");
   80: 
   81:         return;
   82:     }
   83:     else if ((*s_etat_processus).test_instruction == 'Y')
   84:     {
   85:         (*s_etat_processus).nombre_arguments = -1;
   86:         return;
   87:     }
   88: 
   89:     if (test_cfsf(s_etat_processus, 31) == d_vrai)
   90:     {
   91:         if (empilement_pile_last(s_etat_processus, 1) == d_erreur)
   92:         {
   93:             return;
   94:         }
   95:     }
   96: 
   97:     if (depilement(s_etat_processus, &((*s_etat_processus).l_base_pile),
   98:             &s_objet) == d_erreur)
   99:     {
  100:         (*s_etat_processus).erreur_execution = d_ex_manque_argument;
  101:         return;
  102:     }
  103: 
  104:     if ((*s_etat_processus).systeme_axes == 0)
  105:     {
  106:         (*s_etat_processus).echelle_automatique_x = d_faux;
  107:         (*s_etat_processus).echelle_automatique_y = d_faux;
  108:         (*s_etat_processus).echelle_automatique_z = d_faux;
  109:     }
  110:     else
  111:     {
  112:         (*s_etat_processus).echelle_automatique_x2 = d_faux;
  113:         (*s_etat_processus).echelle_automatique_y2 = d_faux;
  114:         (*s_etat_processus).echelle_automatique_z2 = d_faux;
  115:     }
  116: 
  117:     if ((*s_objet).type == NOM)
  118:     {
  119:         tampon = conversion_majuscule(s_etat_processus,
  120:                 (*((struct_nom *) (*s_objet).objet)).nom);
  121: 
  122:         if (tampon == NULL)
  123:         {
  124:             (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
  125:             return;
  126:         }
  127: 
  128:         if ((strcmp(tampon, "X") != 0) && (strcmp(tampon, "Y")!= 0) &&
  129:                 (strcmp(tampon, "Z")!= 0))
  130:         {
  131:             liberation(s_etat_processus, s_objet);
  132:             free(tampon);
  133: 
  134:             (*s_etat_processus).erreur_execution = d_ex_argument_invalide;
  135:             return;
  136:         }
  137: 
  138:         if (tampon[0] == 'X')
  139:         {
  140:             if ((*s_etat_processus).systeme_axes == 0)
  141:             {
  142:                 (*s_etat_processus).echelle_automatique_x = d_vrai;
  143:             }
  144:             else
  145:             {
  146:                 (*s_etat_processus).echelle_automatique_x2 = d_vrai;
  147:             }
  148:         }
  149:         else if (tampon[0] == 'Y')
  150:         {
  151:             if ((*s_etat_processus).systeme_axes == 0)
  152:             {
  153:                 (*s_etat_processus).echelle_automatique_y = d_vrai;
  154:             }
  155:             else
  156:             {
  157:                 (*s_etat_processus).echelle_automatique_y2 = d_vrai;
  158:             }
  159:         }
  160:         else
  161:         {
  162:             if ((*s_etat_processus).systeme_axes == 0)
  163:             {
  164:                 (*s_etat_processus).echelle_automatique_z = d_vrai;
  165:             }
  166:             else
  167:             {
  168:                 (*s_etat_processus).echelle_automatique_z2 = d_vrai;
  169:             }
  170:         }
  171: 
  172:         free(tampon);
  173:     }
  174:     else if ((*s_objet).type == LST)
  175:     {
  176:         presence[0] = d_faux;
  177:         presence[1] = d_faux;
  178:         presence[2] = d_faux;
  179: 
  180:         l_element_courant = (struct_liste_chainee *) (*s_objet).objet;
  181: 
  182:         while(l_element_courant != NULL)
  183:         {
  184:             if ((*(*l_element_courant).donnee).type != NOM)
  185:             {
  186:                 liberation(s_etat_processus, s_objet);
  187: 
  188:                 (*s_etat_processus).erreur_execution = d_ex_argument_invalide;
  189:                 return;
  190:             }
  191: 
  192:             tampon = conversion_majuscule(s_etat_processus, (*((struct_nom *)
  193:                     (*(*l_element_courant).donnee).objet)).nom);
  194: 
  195:             if ((strcmp(tampon, "X") != 0) && (strcmp(tampon, "Y")!= 0) &&
  196:                     (strcmp(tampon, "Z")!= 0))
  197:             {
  198:                 liberation(s_etat_processus, s_objet);
  199:                 free(tampon);
  200: 
  201:                 (*s_etat_processus).erreur_execution = d_ex_argument_invalide;
  202:                 return;
  203:             }
  204: 
  205:             if (tampon[0] == 'X')
  206:             {
  207:                 if (presence[0] == d_vrai)
  208:                 {
  209:                     free(tampon);
  210:                     liberation(s_etat_processus, s_objet);
  211: 
  212:                     (*s_etat_processus).erreur_execution =
  213:                             d_ex_argument_invalide;
  214:                     return;
  215:                 }
  216: 
  217:                 if ((*s_etat_processus).systeme_axes == 0)
  218:                 {
  219:                     (*s_etat_processus).echelle_automatique_x = d_vrai;
  220:                 }
  221:                 else
  222:                 {
  223:                     (*s_etat_processus).echelle_automatique_x2 = d_vrai;
  224:                 }
  225: 
  226:                 presence[0] = d_vrai;
  227:             }
  228:             else if (tampon[0] == 'Y')
  229:             {
  230:                 if (presence[1] == d_vrai)
  231:                 {
  232:                     free(tampon);
  233:                     liberation(s_etat_processus, s_objet);
  234: 
  235:                     (*s_etat_processus).erreur_execution =
  236:                             d_ex_argument_invalide;
  237:                     return;
  238:                 }
  239: 
  240:                 if ((*s_etat_processus).systeme_axes == 0)
  241:                 {
  242:                     (*s_etat_processus).echelle_automatique_y = d_vrai;
  243:                 }
  244:                 else
  245:                 {
  246:                     (*s_etat_processus).echelle_automatique_y2 = d_vrai;
  247:                 }
  248: 
  249:                 presence[1] = d_vrai;
  250:             }
  251:             else
  252:             {
  253:                 if (presence[2] == d_vrai)
  254:                 {
  255:                     free(tampon);
  256:                     liberation(s_etat_processus, s_objet);
  257: 
  258:                     (*s_etat_processus).erreur_execution =
  259:                             d_ex_argument_invalide;
  260:                     return;
  261:                 }
  262: 
  263:                 if ((*s_etat_processus).systeme_axes == 0)
  264:                 {
  265:                     (*s_etat_processus).echelle_automatique_z = d_vrai;
  266:                 }
  267:                 else
  268:                 {
  269:                     (*s_etat_processus).echelle_automatique_z2 = d_vrai;
  270:                 }
  271: 
  272:                 presence[2] = d_vrai;
  273:             }
  274: 
  275:             l_element_courant = (*l_element_courant).suivant;
  276:             free(tampon);
  277:         }
  278:     }
  279:     else
  280:     {
  281:         liberation(s_etat_processus, s_objet);
  282: 
  283:         (*s_etat_processus).erreur_execution = d_ex_erreur_type_argument;
  284:         return;
  285:     }
  286: 
  287:     liberation(s_etat_processus, s_objet);
  288: 
  289:     if (test_cfsf(s_etat_processus, 52) == d_faux)
  290:     {
  291:         if ((*s_etat_processus).fichiers_graphiques != NULL)
  292:         {
  293:             appel_gnuplot(s_etat_processus, 'N');
  294:         }
  295:     }
  296: 
  297:     return;
  298: }
  299: 
  300: 
  301: /*
  302: ================================================================================
  303:   Fonction 'asl'
  304: ================================================================================
  305:   Entrées : pointeur sur une structure struct_processus
  306: --------------------------------------------------------------------------------
  307:   Sorties :
  308: --------------------------------------------------------------------------------
  309:   Effets de bord : néant
  310: ================================================================================
  311: */
  312: 
  313: void
  314: instruction_asl(struct_processus *s_etat_processus)
  315: {
  316:     logical8                            masque;
  317:     logical8                            retenue;
  318:     logical8                            tampon;
  319: 
  320:     struct_objet                        *s_copie;
  321:     struct_objet                        *s_objet;
  322: 
  323:     unsigned long                       i;
  324:     unsigned long                       j;
  325:     unsigned long                       longueur;
  326: 
  327:     (*s_etat_processus).erreur_execution = d_ex;
  328: 
  329:     if ((*s_etat_processus).affichage_arguments == 'Y')
  330:     {
  331:         printf("\n  ASL ");
  332: 
  333:         if ((*s_etat_processus).langue == 'F')
  334:         {
  335:             printf("(décalage arithmétique à gauche)\n\n");
  336:         }
  337:         else
  338:         {
  339:             printf("arithmetic shift left)\n\n");
  340:         }
  341: 
  342:         printf("    1: %s\n", d_BIN);
  343:         printf("->  1: %s\n", d_BIN);
  344: 
  345:         return;
  346:     }
  347:     else if ((*s_etat_processus).test_instruction == 'Y')
  348:     {
  349:         (*s_etat_processus).nombre_arguments = -1;
  350:         return;
  351:     }
  352: 
  353:     if (test_cfsf(s_etat_processus, 31) == d_vrai)
  354:     {
  355:         if (empilement_pile_last(s_etat_processus, 1) == d_erreur)
  356:         {
  357:             return;
  358:         }
  359:     }
  360: 
  361:     if (depilement(s_etat_processus, &((*s_etat_processus).l_base_pile),
  362:             &s_objet) == d_erreur)
  363:     {
  364:         (*s_etat_processus).erreur_execution = d_ex_manque_argument;
  365:         return;
  366:     }
  367: 
  368:     if ((*s_objet).type == BIN)
  369:     {
  370:         if ((s_copie = copie_objet(s_etat_processus, s_objet, 'O')) == NULL)
  371:         {
  372:             (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
  373:             return;
  374:         }
  375: 
  376:         longueur = 1;
  377:         j = 1;
  378: 
  379:         for(i = 37; i <= 42; i++)
  380:         {
  381:             longueur += (test_cfsf(s_etat_processus, (unsigned char) i)
  382:                     == d_vrai) ? j : 0;
  383:             j *= 2;
  384:         }
  385: 
  386:         retenue = (tampon = (*((logical8 *) (*s_copie).objet))) & (logical8) 1;
  387:         tampon <<= 1;
  388: 
  389:         for(masque = 0, i = 1; i < longueur; i++)
  390:         {
  391:             masque <<= 1;
  392:             masque |= (logical8) 1;
  393:         }
  394: 
  395:         masque <<= 1;
  396:         tampon &= masque;
  397:         (*((logical8 *) (*s_copie).objet)) = tampon | retenue;
  398: 
  399:         if (empilement(s_etat_processus, &((*s_etat_processus).l_base_pile),
  400:                 s_copie) == d_erreur)
  401:         {
  402:             return;
  403:         }
  404:     }
  405:     else
  406:     {
  407:         liberation(s_etat_processus, s_objet);
  408: 
  409:         (*s_etat_processus).erreur_execution = d_ex_erreur_type_argument;
  410:         return;
  411:     }
  412: 
  413:     liberation(s_etat_processus, s_objet);
  414: 
  415:     return;
  416: }
  417: 
  418: 
  419: /*
  420: ================================================================================
  421:   Fonction 'asr'
  422: ================================================================================
  423:   Entrées : pointeur sur une structure struct_processus
  424: --------------------------------------------------------------------------------
  425:   Sorties :
  426: --------------------------------------------------------------------------------
  427:   Effets de bord : néant
  428: ================================================================================
  429: */
  430: 
  431: void
  432: instruction_asr(struct_processus *s_etat_processus)
  433: {
  434:     logical8                            masque;
  435:     logical8                            tampon;
  436: 
  437:     struct_objet                        *s_copie;
  438:     struct_objet                        *s_objet;
  439: 
  440:     unsigned long                       i;
  441:     unsigned long                       j;
  442:     unsigned long                       longueur;
  443: 
  444:     (*s_etat_processus).erreur_execution = d_ex;
  445: 
  446:     if ((*s_etat_processus).affichage_arguments == 'Y')
  447:     {
  448:         printf("\n  ASR ");
  449: 
  450:         if ((*s_etat_processus).langue == 'F')
  451:         {
  452:             printf("(décalage arithmétique à droite)\n\n");
  453:         }
  454:         else
  455:         {
  456:             printf("(arithmetic shift right)\n\n");
  457:         }
  458: 
  459:         printf("    1: %s\n", d_BIN);
  460:         printf("->  1: %s\n", d_BIN);
  461: 
  462:         return;
  463:     }
  464:     else if ((*s_etat_processus).test_instruction == 'Y')
  465:     {
  466:         (*s_etat_processus).nombre_arguments = -1;
  467:         return;
  468:     }
  469: 
  470:     if (test_cfsf(s_etat_processus, 31) == d_vrai)
  471:     {
  472:         if (empilement_pile_last(s_etat_processus, 1) == d_erreur)
  473:         {
  474:             return;
  475:         }
  476:     }
  477: 
  478:     if (depilement(s_etat_processus, &((*s_etat_processus).l_base_pile),
  479:             &s_objet) == d_erreur)
  480:     {
  481:         (*s_etat_processus).erreur_execution = d_ex_manque_argument;
  482:         return;
  483:     }
  484: 
  485:     if ((*s_objet).type == BIN)
  486:     {
  487:         if ((s_copie = copie_objet(s_etat_processus, s_objet, 'O')) == NULL)
  488:         {
  489:             (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
  490:             return;
  491:         }
  492: 
  493:         longueur = 1;
  494:         j = 1;
  495: 
  496:         for(i = 37; i <= 42; i++)
  497:         {
  498:             longueur += (test_cfsf(s_etat_processus, (unsigned char) i)
  499:                     == d_vrai) ? j : 0;
  500:             j *= 2;
  501:         }
  502: 
  503:         tampon = (*((logical8 *) (*s_copie).objet));
  504:         masque = ((logical8) 1) << (longueur - 1);
  505: 
  506:         if ((tampon & masque) == 0)
  507:         {
  508:             tampon >>= 1;
  509:         }
  510:         else
  511:         {
  512:             tampon >>= 1;
  513:             tampon |= masque;
  514:         }
  515: 
  516:         for(masque = 0, i = 0; i < longueur; i++)
  517:         {
  518:             masque <<= 1;
  519:             masque |= 1;
  520:         }
  521: 
  522:         tampon &= masque;
  523:         (*((logical8 *) (*s_copie).objet)) = tampon;
  524: 
  525:         if (empilement(s_etat_processus, &((*s_etat_processus).l_base_pile),
  526:                 s_copie) == d_erreur)
  527:         {
  528:             return;
  529:         }
  530:     }
  531:     else
  532:     {
  533:         liberation(s_etat_processus, s_objet);
  534: 
  535:         (*s_etat_processus).erreur_execution = d_ex_erreur_type_argument;
  536:         return;
  537:     }
  538: 
  539:     liberation(s_etat_processus, s_objet);
  540: 
  541:     return;
  542: }
  543: 
  544: 
  545: /*
  546: ================================================================================
  547:   Fonction 'append'
  548: ================================================================================
  549:   Entrées : pointeur sur une structure struct_processus
  550: --------------------------------------------------------------------------------
  551:   Sorties :
  552: --------------------------------------------------------------------------------
  553:   Effets de bord : néant
  554: ================================================================================
  555: */
  556: 
  557: void
  558: instruction_append(struct_processus *s_etat_processus)
  559: {
  560:     struct_descripteur_fichier      *descripteur;
  561: 
  562:     struct_objet                    *s_objet_argument;
  563: 
  564:     (*s_etat_processus).erreur_execution = d_ex;
  565: 
  566:     if ((*s_etat_processus).affichage_arguments == 'Y')
  567:     {
  568:         printf("\n APPEND ");
  569: 
  570:         if ((*s_etat_processus).langue == 'F')
  571:         {
  572:             printf("(positionnement à la fin du fichier)\n\n");
  573:         }
  574:         else
  575:         {
  576:             printf("(to reach the end of the file)\n\n");
  577:         }
  578: 
  579:         printf("    1: %s\n", d_FCH);
  580: 
  581:         return;
  582:     }
  583:     else if ((*s_etat_processus).test_instruction == 'Y')
  584:     {
  585:         (*s_etat_processus).nombre_arguments = -1;
  586:         return;
  587:     }
  588: 
  589:     if (test_cfsf(s_etat_processus, 31) == d_vrai)
  590:     {
  591:         if (empilement_pile_last(s_etat_processus, 1) == d_erreur)
  592:         {
  593:             return;
  594:         }
  595:     }
  596: 
  597:     if (depilement(s_etat_processus, &((*s_etat_processus).l_base_pile),
  598:             &s_objet_argument) == d_erreur)
  599:     {
  600:         (*s_etat_processus).erreur_execution = d_ex_manque_argument;
  601:         return;
  602:     }
  603: 
  604:     if ((*s_objet_argument).type == FCH)
  605:     {
  606:         if ((descripteur = descripteur_fichier(s_etat_processus,
  607:                 (struct_fichier *) (*s_objet_argument).objet)) == NULL)
  608:         {
  609:             liberation(s_etat_processus, s_objet_argument);
  610:             return;
  611:         }
  612: 
  613:         if ((*descripteur).type == 'C')
  614:         {
  615:             if (fseek((*descripteur).descripteur_c, (long) 0, SEEK_END) != 0)
  616:             {
  617:                 liberation(s_etat_processus, s_objet_argument);
  618: 
  619:                 (*s_etat_processus).erreur_systeme = d_es_erreur_fichier;
  620:                 return;
  621:             }
  622:         }
  623:         else
  624:         {
  625:             liberation(s_etat_processus, s_objet_argument);
  626: 
  627:             (*s_etat_processus).erreur_execution = d_ex_erreur_type_fichier;
  628:             return;
  629:         }
  630:     }
  631:     else
  632:     {
  633:         liberation(s_etat_processus, s_objet_argument);
  634: 
  635:         (*s_etat_processus).erreur_execution = d_ex_erreur_type_argument;
  636:         return;
  637:     }
  638: 
  639:     liberation(s_etat_processus, s_objet_argument);
  640: 
  641:     return;
  642: }
  643: 
  644: 
  645: /*
  646: ================================================================================
  647:   Fonction 'axes'
  648: ================================================================================
  649:   Entrées : pointeur sur une structure struct_processus
  650: --------------------------------------------------------------------------------
  651:   Sorties :
  652: --------------------------------------------------------------------------------
  653:   Effets de bord : néant
  654: ================================================================================
  655: */
  656: 
  657: void
  658: instruction_axes(struct_processus *s_etat_processus)
  659: {
  660:     /*
  661:      * Prend comme argument une liste
  662:      */
  663: 
  664:     logical1                        autorisation_trace;
  665:     logical1                        axes_principaux;
  666:     logical1                        presence_type;
  667: 
  668:     long                            nombre_arguments_principaux;
  669:     long                            nombre_arguments_auxiliaires;
  670: 
  671:     struct_liste_chainee            *l_element_courant;
  672:     struct_liste_chainee            *l_element_courant_auxiliaire;
  673: 
  674:     struct_objet                    *s_objet_argument;
  675:     struct_objet                    *s_objet_auxiliaire;
  676: 
  677:     unsigned char                   *tampon;
  678: 
  679:     (*s_etat_processus).erreur_execution = d_ex;
  680: 
  681:     if ((*s_etat_processus).affichage_arguments == 'Y')
  682:     {
  683:         printf("\n  AXES ");
  684: 
  685:         if ((*s_etat_processus).langue == 'F')
  686:         {
  687:             printf("(définition des axes)\n\n");
  688:         }
  689:         else
  690:         {
  691:             printf("(axes definition)\n\n");
  692:         }
  693: 
  694:         printf("    1: %s\n\n", d_LST);
  695: 
  696:         if ((*s_etat_processus).langue == 'F')
  697:         {
  698:             printf("  Utilisation :\n\n");
  699:         }
  700:         else
  701:         {
  702:             printf("  Usage:\n\n");
  703:         }
  704: 
  705:         printf("    { \"MAIN\" } AXES\n");
  706:         printf("    { \"AUXILIARY\" } AXES\n");
  707:         printf("    { \"MAIN\" { (expression 1) (expression 2) }\n");
  708:         printf("            { (expression 3) TICSONLY } } AXES\n\n");
  709:         printf("    { \"MAIN\" { (expression 1) \"TICSONLY\" }\n");
  710:         printf("            { (expression 2) } } AXES\n\n");
  711:         printf("    { \"AUXILIARY\" { \"AUTOMATIC\" }\n");
  712:         printf("            { \"TICSONLY\" \"AUTOMATIC\" } } AXES\n\n");
  713:         printf("    { { (expression 1) \"DEFAULT\" } { \"AUTOMATIC\" } }\n");
  714:         printf("            { \"TICSONLY\" (expression 2) } } AXES\n");
  715: 
  716:         return;
  717:     }
  718:     else if ((*s_etat_processus).test_instruction == 'Y')
  719:     {
  720:         (*s_etat_processus).nombre_arguments = -1;
  721:         return;
  722:     }
  723: 
  724:     if (test_cfsf(s_etat_processus, 31) == d_vrai)
  725:     {
  726:         if (empilement_pile_last(s_etat_processus, 1) == d_erreur)
  727:         {
  728:             return;
  729:         }
  730:     }
  731: 
  732:     if (depilement(s_etat_processus, &((*s_etat_processus).l_base_pile),
  733:             &s_objet_argument) == d_erreur)
  734:     {
  735:         (*s_etat_processus).erreur_execution = d_ex_manque_argument;
  736:         return;
  737:     }
  738: 
  739:     if ((*s_objet_argument).type == LST)
  740:     {
  741:         l_element_courant = (struct_liste_chainee *) (*s_objet_argument).objet;
  742:         nombre_arguments_principaux = 0;
  743:         presence_type = d_faux;
  744:         tampon = NULL;
  745: 
  746:         while(l_element_courant != NULL)
  747:         {
  748:             if ((*(*l_element_courant).donnee).type == CHN)
  749:             {
  750:                 if (presence_type == d_vrai)
  751:                 {
  752:                     free(tampon);
  753: 
  754:                     liberation(s_etat_processus, s_objet_argument);
  755:                     
  756:                     (*s_etat_processus).erreur_execution =
  757:                             d_ex_argument_invalide;
  758:                     return;
  759:                 }
  760: 
  761:                 if ((tampon = conversion_majuscule(s_etat_processus,
  762:                         (unsigned char *) (*(*l_element_courant).donnee).objet))
  763:                         == NULL)
  764:                 {
  765:                     (*s_etat_processus).erreur_systeme =
  766:                             d_es_allocation_memoire;
  767:                     return;
  768:                 }
  769: 
  770:                 presence_type = d_vrai;
  771:             }
  772:             else
  773:             {
  774:                 nombre_arguments_principaux++;
  775:             }
  776: 
  777:             l_element_courant = (*l_element_courant).suivant;
  778:         }
  779: 
  780:         if (presence_type == d_faux)
  781:         {
  782:             if ((*s_etat_processus).systeme_axes == 0)
  783:             {
  784:                 if ((tampon = malloc(5 * sizeof(unsigned char))) == NULL)
  785:                 {
  786:                     (*s_etat_processus).erreur_systeme =
  787:                             d_es_allocation_memoire;
  788:                     return;
  789:                 }
  790: 
  791:                 strcpy(tampon, "MAIN");
  792:             }
  793:             else
  794:             {
  795:                 if ((tampon = malloc(10 * sizeof(unsigned char))) == NULL)
  796:                 {
  797:                     (*s_etat_processus).erreur_systeme =
  798:                             d_es_allocation_memoire;
  799:                     return;
  800:                 }
  801: 
  802:                 strcpy(tampon, "AUXILIARY");
  803:             }
  804:         }
  805: 
  806:         if (strcmp(tampon, "MAIN") == 0)
  807:         {
  808:             axes_principaux = d_vrai;
  809:             (*s_etat_processus).systeme_axes = 0;
  810:         }
  811:         else if (strcmp(tampon, "AUXILIARY") == 0)
  812:         {
  813:             axes_principaux = d_faux;
  814:             (*s_etat_processus).systeme_axes = 1;
  815:         }
  816:         else
  817:         {
  818:             free(tampon);
  819: 
  820:             liberation(s_etat_processus, s_objet_argument);
  821: 
  822:             (*s_etat_processus).erreur_execution = d_ex_argument_invalide;
  823:             return;
  824:         }
  825: 
  826:         free(tampon);
  827: 
  828:         if ((nombre_arguments_principaux != 0) &&
  829:                 (nombre_arguments_principaux != 2) &&
  830:                 (nombre_arguments_principaux != 3))
  831:         {
  832:             liberation(s_etat_processus, s_objet_argument);
  833: 
  834:             (*s_etat_processus).erreur_execution = d_ex_argument_invalide;
  835:             return;
  836:         }
  837: 
  838:         l_element_courant = (struct_liste_chainee *) (*s_objet_argument).objet;
  839:         nombre_arguments_principaux = 0;
  840: 
  841:         while(l_element_courant != NULL)
  842:         {
  843:             nombre_arguments_principaux++;
  844: 
  845:             if ((*(*l_element_courant).donnee).type == CHN)
  846:             {
  847:                 l_element_courant = (*l_element_courant).suivant;
  848:                 nombre_arguments_principaux--;
  849:                 continue;
  850:             }
  851:             else if ((*(*l_element_courant).donnee).type == LST)
  852:             {
  853:                 l_element_courant_auxiliaire = (struct_liste_chainee *)
  854:                         (*(*l_element_courant).donnee).objet;
  855:                 nombre_arguments_auxiliaires = 0;
  856:                 autorisation_trace = d_vrai;
  857: 
  858:                 while(l_element_courant_auxiliaire != NULL)
  859:                 {
  860:                     nombre_arguments_auxiliaires++;
  861: 
  862:                     if (((*(*l_element_courant_auxiliaire).donnee).type ==
  863:                             RPN) || ((*(*l_element_courant_auxiliaire).donnee)
  864:                             .type == ALG) || ((*(*l_element_courant_auxiliaire)
  865:                             .donnee).type == NOM))
  866:                     {
  867:                         if (evaluation(s_etat_processus,
  868:                                 (*l_element_courant_auxiliaire).donnee, 'N')
  869:                                 == d_erreur)
  870:                         {
  871:                             liberation(s_etat_processus, s_objet_argument);
  872: 
  873:                             return;
  874:                         }
  875: 
  876:                         if (depilement(s_etat_processus,
  877:                                 &((*s_etat_processus).l_base_pile),
  878:                                 &s_objet_auxiliaire) == d_erreur)
  879:                         {
  880:                             liberation(s_etat_processus, s_objet_argument);
  881: 
  882:                             (*s_etat_processus).erreur_execution =
  883:                                     d_ex_manque_argument;
  884:                             return;
  885:                         }
  886: 
  887:                         liberation(s_etat_processus,
  888:                                 (*l_element_courant_auxiliaire).donnee);
  889:                         (*l_element_courant_auxiliaire).donnee =
  890:                                 s_objet_auxiliaire;
  891:                     }
  892: 
  893:                     if ((*(*l_element_courant_auxiliaire).donnee).type == INT)
  894:                     {
  895:                         if ((*((integer8 *) (*(*l_element_courant_auxiliaire)
  896:                                 .donnee).objet)) <= 0)
  897:                         {
  898:                             liberation(s_etat_processus, s_objet_argument);
  899: 
  900:                             (*s_etat_processus).erreur_execution =
  901:                                     d_ex_argument_invalide;
  902:                             return;
  903:                         }
  904: 
  905:                         switch(nombre_arguments_principaux)
  906:                         {
  907:                             case 1 :
  908:                             {
  909:                                 if (axes_principaux == d_vrai)
  910:                                 {
  911:                                     if (nombre_arguments_auxiliaires == 1)
  912:                                     {
  913:                                         (*s_etat_processus).x_tics = (real8)
  914:                                                 (*((integer8 *) (*
  915:                                                 (*l_element_courant_auxiliaire)
  916:                                                 .donnee).objet));
  917:                                         (*s_etat_processus).x_lines =
  918:                                                 autorisation_trace;
  919:                                     }
  920:                                     else if (nombre_arguments_auxiliaires == 2)
  921:                                     {
  922:                                         (*s_etat_processus).mx_tics =
  923:                                                 (*((integer8 *) (*
  924:                                                 (*l_element_courant_auxiliaire)
  925:                                                 .donnee).objet));
  926:                                         (*s_etat_processus).mx_lines =
  927:                                                 autorisation_trace;
  928:                                     }
  929:                                     else
  930:                                     {
  931:                                         liberation(s_etat_processus,
  932:                                                 s_objet_argument);
  933: 
  934:                                         (*s_etat_processus).erreur_execution =
  935:                                                 d_ex_argument_invalide;
  936:                                         return;
  937:                                     }
  938:                                 }
  939:                                 else
  940:                                 {
  941:                                     if (nombre_arguments_auxiliaires == 1)
  942:                                     {
  943:                                         (*s_etat_processus).x2_tics = (real8)
  944:                                                 (*((integer8 *) (*
  945:                                                 (*l_element_courant_auxiliaire)
  946:                                                 .donnee).objet));
  947:                                         (*s_etat_processus).x2_lines =
  948:                                                 autorisation_trace;
  949:                                     }
  950:                                     else if (nombre_arguments_auxiliaires == 2)
  951:                                     {
  952:                                         (*s_etat_processus).mx2_tics =
  953:                                                 (*((integer8 *) (*
  954:                                                 (*l_element_courant_auxiliaire)
  955:                                                 .donnee).objet));
  956:                                         (*s_etat_processus).mx2_lines =
  957:                                                 autorisation_trace;
  958:                                     }
  959:                                     else
  960:                                     {
  961:                                         liberation(s_etat_processus,
  962:                                                 s_objet_argument);
  963: 
  964:                                         (*s_etat_processus).erreur_execution =
  965:                                                 d_ex_argument_invalide;
  966:                                         return;
  967:                                     }
  968:                                 }
  969: 
  970:                                 break;
  971:                             }
  972: 
  973:                             case 2 :
  974:                             {
  975:                                 if (axes_principaux == d_vrai)
  976:                                 {
  977:                                     if (nombre_arguments_auxiliaires == 1)
  978:                                     {
  979:                                         (*s_etat_processus).y_tics = (real8)
  980:                                                 (*((integer8 *) (*
  981:                                                 (*l_element_courant_auxiliaire)
  982:                                                 .donnee).objet));
  983:                                         (*s_etat_processus).y_lines =
  984:                                                 autorisation_trace;
  985:                                     }
  986:                                     else if (nombre_arguments_auxiliaires == 2)
  987:                                     {
  988:                                         (*s_etat_processus).my_tics =
  989:                                                 (*((integer8 *) (*
  990:                                                 (*l_element_courant_auxiliaire)
  991:                                                 .donnee).objet));
  992:                                         (*s_etat_processus).my_lines =
  993:                                                 autorisation_trace;
  994:                                     }
  995:                                     else
  996:                                     {
  997:                                         liberation(s_etat_processus,
  998:                                                 s_objet_argument);
  999: 
 1000:                                         (*s_etat_processus).erreur_execution =
 1001:                                                 d_ex_argument_invalide;
 1002:                                         return;
 1003:                                     }
 1004:                                 }
 1005:                                 else
 1006:                                 {
 1007:                                     if (nombre_arguments_auxiliaires == 1)
 1008:                                     {
 1009:                                         (*s_etat_processus).y2_tics = (real8)
 1010:                                                 (*((integer8 *) (*
 1011:                                                 (*l_element_courant_auxiliaire)
 1012:                                                 .donnee).objet));
 1013:                                         (*s_etat_processus).y2_lines =
 1014:                                                 autorisation_trace;
 1015:                                     }
 1016:                                     else if (nombre_arguments_auxiliaires == 2)
 1017:                                     {
 1018:                                         (*s_etat_processus).my2_tics =
 1019:                                                 (*((integer8 *) (*
 1020:                                                 (*l_element_courant_auxiliaire)
 1021:                                                 .donnee).objet));
 1022:                                         (*s_etat_processus).my2_lines =
 1023:                                                 autorisation_trace;
 1024:                                     }
 1025:                                     else
 1026:                                     {
 1027:                                         liberation(s_etat_processus,
 1028:                                                 s_objet_argument);
 1029: 
 1030:                                         (*s_etat_processus).erreur_execution =
 1031:                                                 d_ex_argument_invalide;
 1032:                                         return;
 1033:                                     }
 1034:                                 }
 1035: 
 1036:                                 break;
 1037:                             }
 1038: 
 1039:                             case 3 :
 1040:                             {
 1041:                                 if (axes_principaux == d_vrai)
 1042:                                 {
 1043:                                     if (nombre_arguments_auxiliaires == 1)
 1044:                                     {
 1045:                                         (*s_etat_processus).z_tics = (real8)
 1046:                                                 (*((integer8 *) (*
 1047:                                                 (*l_element_courant_auxiliaire)
 1048:                                                 .donnee).objet));
 1049:                                         (*s_etat_processus).z_lines =
 1050:                                                 autorisation_trace;
 1051:                                     }
 1052:                                     else if (nombre_arguments_auxiliaires == 2)
 1053:                                     {
 1054:                                         (*s_etat_processus).mz_tics =
 1055:                                                 (*((integer8 *) (*
 1056:                                                 (*l_element_courant_auxiliaire)
 1057:                                                 .donnee).objet));
 1058:                                         (*s_etat_processus).mz_lines =
 1059:                                                 autorisation_trace;
 1060:                                     }
 1061:                                     else
 1062:                                     {
 1063:                                         liberation(s_etat_processus,
 1064:                                                 s_objet_argument);
 1065: 
 1066:                                         (*s_etat_processus).erreur_execution =
 1067:                                                 d_ex_argument_invalide;
 1068:                                         return;
 1069:                                     }
 1070:                                 }
 1071:                                 else
 1072:                                 {
 1073:                                     if (nombre_arguments_auxiliaires == 1)
 1074:                                     {
 1075:                                         (*s_etat_processus).z2_tics = (real8)
 1076:                                                 (*((integer8 *) (*
 1077:                                                 (*l_element_courant_auxiliaire)
 1078:                                                 .donnee).objet));
 1079:                                         (*s_etat_processus).z2_lines =
 1080:                                                 autorisation_trace;
 1081:                                     }
 1082:                                     else if (nombre_arguments_auxiliaires == 2)
 1083:                                     {
 1084:                                         (*s_etat_processus).mz2_tics =
 1085:                                                 (*((integer8 *) (*
 1086:                                                 (*l_element_courant_auxiliaire)
 1087:                                                 .donnee).objet));
 1088:                                         (*s_etat_processus).mz2_lines =
 1089:                                                 autorisation_trace;
 1090:                                     }
 1091:                                     else
 1092:                                     {
 1093:                                         liberation(s_etat_processus,
 1094:                                                 s_objet_argument);
 1095: 
 1096:                                         (*s_etat_processus).erreur_execution =
 1097:                                                 d_ex_argument_invalide;
 1098:                                         return;
 1099:                                     }
 1100:                                 }
 1101: 
 1102:                                 break;
 1103:                             }
 1104: 
 1105:                             default :
 1106:                             {
 1107:                                 liberation(s_etat_processus, s_objet_argument);
 1108: 
 1109:                                 (*s_etat_processus).erreur_execution =
 1110:                                         d_ex_argument_invalide;
 1111:                                 return;
 1112:                             }
 1113:                         }
 1114:                     }
 1115:                     else if ((*(*l_element_courant_auxiliaire)
 1116:                             .donnee).type == REL)
 1117:                     {
 1118:                         if ((*((real8 *) (*(*l_element_courant_auxiliaire)
 1119:                                 .donnee).objet)) <= 0)
 1120:                         {
 1121:                             liberation(s_etat_processus, s_objet_argument);
 1122: 
 1123:                             (*s_etat_processus).erreur_execution =
 1124:                                     d_ex_argument_invalide;
 1125:                             return;
 1126:                         }
 1127: 
 1128:                         switch(nombre_arguments_principaux)
 1129:                         {
 1130:                             case 1 :
 1131:                             {
 1132:                                 if (axes_principaux == d_vrai)
 1133:                                 {
 1134:                                     if (nombre_arguments_auxiliaires == 1)
 1135:                                     {
 1136:                                         (*s_etat_processus).x_tics =
 1137:                                                 (*((real8 *) (*
 1138:                                                 (*l_element_courant_auxiliaire)
 1139:                                                 .donnee).objet));
 1140:                                         (*s_etat_processus).x_lines =
 1141:                                                 autorisation_trace;
 1142:                                     }
 1143:                                     else if (nombre_arguments_auxiliaires == 2)
 1144:                                     {
 1145:                                         (*s_etat_processus).mx_tics =
 1146:                                                 (integer8) (*((real8 *) (*
 1147:                                                 (*l_element_courant_auxiliaire)
 1148:                                                 .donnee).objet));
 1149:                                         (*s_etat_processus).mx_lines =
 1150:                                                 autorisation_trace;
 1151:                                     }
 1152:                                     else
 1153:                                     {
 1154:                                         liberation(s_etat_processus,
 1155:                                                 s_objet_argument);
 1156: 
 1157:                                         (*s_etat_processus).erreur_execution =
 1158:                                                 d_ex_argument_invalide;
 1159:                                         return;
 1160:                                     }
 1161:                                 }
 1162:                                 else
 1163:                                 {
 1164:                                     if (nombre_arguments_auxiliaires == 1)
 1165:                                     {
 1166:                                         (*s_etat_processus).x2_tics =
 1167:                                                 (*((real8 *) (*
 1168:                                                 (*l_element_courant_auxiliaire)
 1169:                                                 .donnee).objet));
 1170:                                         (*s_etat_processus).x2_lines =
 1171:                                                 autorisation_trace;
 1172:                                     }
 1173:                                     else if (nombre_arguments_auxiliaires == 2)
 1174:                                     {
 1175:                                         (*s_etat_processus).mx2_tics =
 1176:                                                 (integer8) (*((real8 *) (*
 1177:                                                 (*l_element_courant_auxiliaire)
 1178:                                                 .donnee).objet));
 1179:                                         (*s_etat_processus).mx2_lines =
 1180:                                                 autorisation_trace;
 1181:                                     }
 1182:                                     else
 1183:                                     {
 1184:                                         liberation(s_etat_processus,
 1185:                                                 s_objet_argument);
 1186: 
 1187:                                         (*s_etat_processus).erreur_execution =
 1188:                                                 d_ex_argument_invalide;
 1189:                                         return;
 1190:                                     }
 1191:                                 }
 1192: 
 1193:                                 break;
 1194:                             }
 1195: 
 1196:                             case 2 :
 1197:                             {
 1198:                                 if (axes_principaux == d_vrai)
 1199:                                 {
 1200:                                     if (nombre_arguments_auxiliaires == 1)
 1201:                                     {
 1202:                                         (*s_etat_processus).y_tics =
 1203:                                                 (*((real8 *) (*
 1204:                                                 (*l_element_courant_auxiliaire)
 1205:                                                 .donnee).objet));
 1206:                                         (*s_etat_processus).y_lines =
 1207:                                                 autorisation_trace;
 1208:                                     }
 1209:                                     else if (nombre_arguments_auxiliaires == 2)
 1210:                                     {
 1211:                                         (*s_etat_processus).my_tics =
 1212:                                                 (integer8) (*((real8 *) (*
 1213:                                                 (*l_element_courant_auxiliaire)
 1214:                                                 .donnee).objet));
 1215:                                         (*s_etat_processus).my_lines =
 1216:                                                 autorisation_trace;
 1217:                                     }
 1218:                                     else
 1219:                                     {
 1220:                                         liberation(s_etat_processus,
 1221:                                                 s_objet_argument);
 1222: 
 1223:                                         (*s_etat_processus).erreur_execution =
 1224:                                                 d_ex_argument_invalide;
 1225:                                         return;
 1226:                                     }
 1227:                                 }
 1228:                                 else
 1229:                                 {
 1230:                                     if (nombre_arguments_auxiliaires == 1)
 1231:                                     {
 1232:                                         (*s_etat_processus).y2_tics =
 1233:                                                 (*((real8 *) (*
 1234:                                                 (*l_element_courant_auxiliaire)
 1235:                                                 .donnee).objet));
 1236:                                         (*s_etat_processus).y2_lines =
 1237:                                                 autorisation_trace;
 1238:                                     }
 1239:                                     else if (nombre_arguments_auxiliaires == 2)
 1240:                                     {
 1241:                                         (*s_etat_processus).my2_tics =
 1242:                                                 (integer8) (*((real8 *) (*
 1243:                                                 (*l_element_courant_auxiliaire)
 1244:                                                 .donnee).objet));
 1245:                                         (*s_etat_processus).my2_lines =
 1246:                                                 autorisation_trace;
 1247:                                     }
 1248:                                     else
 1249:                                     {
 1250:                                         liberation(s_etat_processus,
 1251:                                                 s_objet_argument);
 1252: 
 1253:                                         (*s_etat_processus).erreur_execution =
 1254:                                                 d_ex_argument_invalide;
 1255:                                         return;
 1256:                                     }
 1257:                                 }
 1258: 
 1259:                                 break;
 1260:                             }
 1261: 
 1262:                             case 3 :
 1263:                             {
 1264:                                 if (axes_principaux == d_vrai)
 1265:                                 {
 1266:                                     if (nombre_arguments_auxiliaires == 1)
 1267:                                     {
 1268:                                         (*s_etat_processus).z_tics =
 1269:                                                 (*((real8 *) (*
 1270:                                                 (*l_element_courant_auxiliaire)
 1271:                                                 .donnee).objet));
 1272:                                         (*s_etat_processus).z_lines =
 1273:                                                 autorisation_trace;
 1274:                                     }
 1275:                                     else if (nombre_arguments_auxiliaires == 2)
 1276:                                     {
 1277:                                         (*s_etat_processus).mz_tics =
 1278:                                                 (integer8) (*((real8 *) (*
 1279:                                                 (*l_element_courant_auxiliaire)
 1280:                                                 .donnee).objet));
 1281:                                         (*s_etat_processus).mz_lines =
 1282:                                                 autorisation_trace;
 1283:                                     }
 1284:                                     else
 1285:                                     {
 1286:                                         liberation(s_etat_processus,
 1287:                                                 s_objet_argument);
 1288: 
 1289:                                         (*s_etat_processus).erreur_execution =
 1290:                                                 d_ex_argument_invalide;
 1291:                                         return;
 1292:                                     }
 1293:                                 }
 1294:                                 else
 1295:                                 {
 1296:                                     if (nombre_arguments_auxiliaires == 1)
 1297:                                     {
 1298:                                         (*s_etat_processus).z2_tics =
 1299:                                                 (*((real8 *) (*
 1300:                                                 (*l_element_courant_auxiliaire)
 1301:                                                 .donnee).objet));
 1302:                                         (*s_etat_processus).z2_lines =
 1303:                                                 autorisation_trace;
 1304:                                     }
 1305:                                     else if (nombre_arguments_auxiliaires == 2)
 1306:                                     {
 1307:                                         (*s_etat_processus).mz2_tics =
 1308:                                                 (integer8) (*((real8 *) (*
 1309:                                                 (*l_element_courant_auxiliaire)
 1310:                                                 .donnee).objet));
 1311:                                         (*s_etat_processus).mz2_lines =
 1312:                                                 autorisation_trace;
 1313:                                     }
 1314:                                     else
 1315:                                     {
 1316:                                         liberation(s_etat_processus,
 1317:                                                 s_objet_argument);
 1318: 
 1319:                                         (*s_etat_processus).erreur_execution =
 1320:                                                 d_ex_argument_invalide;
 1321:                                         return;
 1322:                                     }
 1323:                                 }
 1324: 
 1325:                                 break;
 1326:                             }
 1327: 
 1328:                             default :
 1329:                             {
 1330:                                 liberation(s_etat_processus, s_objet_argument);
 1331: 
 1332:                                 (*s_etat_processus).erreur_execution =
 1333:                                         d_ex_argument_invalide;
 1334:                                 return;
 1335:                             }
 1336:                         }
 1337:                     }
 1338:                     else if ((*(*l_element_courant_auxiliaire).donnee)
 1339:                             .type == CHN)
 1340:                     {
 1341:                         tampon = conversion_majuscule(s_etat_processus,
 1342:                                 (unsigned char *)
 1343:                                 (*(*l_element_courant_auxiliaire).donnee)
 1344:                                 .objet);
 1345: 
 1346:                         if (tampon == NULL)
 1347:                         {
 1348:                             (*s_etat_processus).erreur_systeme =
 1349:                                     d_es_allocation_memoire;
 1350:                             return;
 1351:                         }
 1352: 
 1353:                         if (strcmp(tampon, "AUTOMATIC") == 0)
 1354:                         {
 1355:                             switch(nombre_arguments_principaux)
 1356:                             {
 1357:                                 case 1 :
 1358:                                 {
 1359:                                     if (axes_principaux == d_vrai)
 1360:                                     {
 1361:                                         if (nombre_arguments_auxiliaires
 1362:                                                 == 1)
 1363:                                         {
 1364:                                             (*s_etat_processus).x_tics = 0;
 1365:                                             (*s_etat_processus).x_lines =
 1366:                                                     autorisation_trace;
 1367:                                         }
 1368:                                         else
 1369:                                         {
 1370:                                             liberation(s_etat_processus,
 1371:                                                     s_objet_argument);
 1372: 
 1373:                                             (*s_etat_processus).erreur_execution
 1374:                                                     = d_ex_argument_invalide;
 1375: 
 1376:                                             return;
 1377:                                         }
 1378:                                     }
 1379:                                     else
 1380:                                     {
 1381:                                         if (nombre_arguments_auxiliaires
 1382:                                                 == 1)
 1383:                                         {
 1384:                                             (*s_etat_processus).x2_tics = 0;
 1385:                                             (*s_etat_processus).x2_lines =
 1386:                                                     autorisation_trace;
 1387:                                         }
 1388:                                         else
 1389:                                         {
 1390:                                             liberation(s_etat_processus,
 1391:                                                     s_objet_argument);
 1392: 
 1393:                                             (*s_etat_processus).erreur_execution
 1394:                                                     = d_ex_argument_invalide;
 1395: 
 1396:                                             return;
 1397:                                         }
 1398:                                     }
 1399: 
 1400:                                     break;
 1401:                                 }
 1402: 
 1403:                                 case 2 :
 1404:                                 {
 1405:                                     if (axes_principaux == d_vrai)
 1406:                                     {
 1407:                                         if (nombre_arguments_auxiliaires
 1408:                                                 == 1)
 1409:                                         {
 1410:                                             (*s_etat_processus).y_tics = 0;
 1411:                                             (*s_etat_processus).y_lines =
 1412:                                                     autorisation_trace;
 1413:                                         }
 1414:                                         else
 1415:                                         {
 1416:                                             liberation(s_etat_processus,
 1417:                                                     s_objet_argument);
 1418: 
 1419:                                             (*s_etat_processus).erreur_execution
 1420:                                                     = d_ex_argument_invalide;
 1421: 
 1422:                                             return;
 1423:                                         }
 1424:                                     }
 1425:                                     else
 1426:                                     {
 1427:                                         if (nombre_arguments_auxiliaires
 1428:                                                 == 1)
 1429:                                         {
 1430:                                             (*s_etat_processus).y2_tics = 0;
 1431:                                             (*s_etat_processus).y2_lines =
 1432:                                                     autorisation_trace;
 1433:                                         }
 1434:                                         else
 1435:                                         {
 1436:                                             liberation(s_etat_processus,
 1437:                                                     s_objet_argument);
 1438: 
 1439:                                             (*s_etat_processus).erreur_execution
 1440:                                                     = d_ex_argument_invalide;
 1441: 
 1442:                                             return;
 1443:                                         }
 1444:                                     }
 1445: 
 1446:                                     break;
 1447:                                 }
 1448: 
 1449:                                 case 3 :
 1450:                                 {
 1451:                                     if (axes_principaux == d_vrai)
 1452:                                     {
 1453:                                         if (nombre_arguments_auxiliaires
 1454:                                                 == 1)
 1455:                                         {
 1456:                                             (*s_etat_processus).z_tics = 0;
 1457:                                             (*s_etat_processus).z_lines =
 1458:                                                     autorisation_trace;
 1459:                                         }
 1460:                                         else
 1461:                                         {
 1462:                                             liberation(s_etat_processus,
 1463:                                                     s_objet_argument);
 1464: 
 1465:                                             (*s_etat_processus).erreur_execution
 1466:                                                     = d_ex_argument_invalide;
 1467: 
 1468:                                             return;
 1469:                                         }
 1470:                                     }
 1471:                                     else
 1472:                                     {
 1473:                                         if (nombre_arguments_auxiliaires
 1474:                                                 == 1)
 1475:                                         {
 1476:                                             (*s_etat_processus).z2_tics = 0;
 1477:                                             (*s_etat_processus).z2_lines =
 1478:                                                     autorisation_trace;
 1479:                                         }
 1480:                                         else
 1481:                                         {
 1482:                                             liberation(s_etat_processus,
 1483:                                                     s_objet_argument);
 1484: 
 1485:                                             (*s_etat_processus).erreur_execution
 1486:                                                     = d_ex_argument_invalide;
 1487: 
 1488:                                             return;
 1489:                                         }
 1490:                                     }
 1491: 
 1492:                                     break;
 1493:                                 }
 1494: 
 1495:                                 default :
 1496:                                 {
 1497:                                     liberation(s_etat_processus,
 1498:                                             s_objet_argument);
 1499: 
 1500:                                     free(tampon);
 1501: 
 1502:                                     (*s_etat_processus).erreur_execution =
 1503:                                             d_ex_argument_invalide;
 1504:                                     return;
 1505:                                 }
 1506:                             }
 1507:                         }
 1508:                         else if (strcmp(tampon, "DEFAULT") == 0)
 1509:                         {
 1510:                             switch(nombre_arguments_principaux)
 1511:                             {
 1512:                                 case 1 :
 1513:                                 {
 1514:                                     if (axes_principaux == d_vrai)
 1515:                                     {
 1516:                                         if (nombre_arguments_auxiliaires
 1517:                                                 == 2)
 1518:                                         {
 1519:                                             (*s_etat_processus).mx_tics = 0;
 1520:                                             (*s_etat_processus).mx_lines =
 1521:                                                     autorisation_trace;
 1522:                                         }
 1523:                                         else
 1524:                                         {
 1525:                                             liberation(s_etat_processus,
 1526:                                                     s_objet_argument);
 1527: 
 1528:                                             (*s_etat_processus).erreur_execution
 1529:                                                     = d_ex_argument_invalide;
 1530: 
 1531:                                             return;
 1532:                                         }
 1533:                                     }
 1534:                                     else
 1535:                                     {
 1536:                                         if (nombre_arguments_auxiliaires
 1537:                                                 == 2)
 1538:                                         {
 1539:                                             (*s_etat_processus).mx2_tics = 0;
 1540:                                             (*s_etat_processus).mx2_lines =
 1541:                                                     autorisation_trace;
 1542:                                         }
 1543:                                         else
 1544:                                         {
 1545:                                             liberation(s_etat_processus,
 1546:                                                     s_objet_argument);
 1547: 
 1548:                                             (*s_etat_processus).erreur_execution
 1549:                                                     = d_ex_argument_invalide;
 1550: 
 1551:                                             return;
 1552:                                         }
 1553:                                     }
 1554: 
 1555:                                     break;
 1556:                                 }
 1557: 
 1558:                                 case 2 :
 1559:                                 {
 1560:                                     if (axes_principaux == d_vrai)
 1561:                                     {
 1562:                                         if (nombre_arguments_auxiliaires
 1563:                                                 == 2)
 1564:                                         {
 1565:                                             (*s_etat_processus).my_tics = 0;
 1566:                                             (*s_etat_processus).my_lines =
 1567:                                                     autorisation_trace;
 1568:                                         }
 1569:                                         else
 1570:                                         {
 1571:                                             liberation(s_etat_processus,
 1572:                                                     s_objet_argument);
 1573: 
 1574:                                             (*s_etat_processus).erreur_execution
 1575:                                                     = d_ex_argument_invalide;
 1576: 
 1577:                                             return;
 1578:                                         }
 1579:                                     }
 1580:                                     else
 1581:                                     {
 1582:                                         if (nombre_arguments_auxiliaires
 1583:                                                 == 2)
 1584:                                         {
 1585:                                             (*s_etat_processus).my2_tics = 0;
 1586:                                             (*s_etat_processus).my2_lines =
 1587:                                                     autorisation_trace;
 1588:                                         }
 1589:                                         else
 1590:                                         {
 1591:                                             liberation(s_etat_processus,
 1592:                                                     s_objet_argument);
 1593: 
 1594:                                             (*s_etat_processus).erreur_execution
 1595:                                                     = d_ex_argument_invalide;
 1596: 
 1597:                                             return;
 1598:                                         }
 1599:                                     }
 1600: 
 1601:                                     break;
 1602:                                 }
 1603: 
 1604:                                 case 3 :
 1605:                                 {
 1606:                                     if (axes_principaux == d_vrai)
 1607:                                     {
 1608:                                         if (nombre_arguments_auxiliaires
 1609:                                                 == 2)
 1610:                                         {
 1611:                                             (*s_etat_processus).mz_tics = 0;
 1612:                                             (*s_etat_processus).mz_lines =
 1613:                                                     autorisation_trace;
 1614:                                         }
 1615:                                         else
 1616:                                         {
 1617:                                             liberation(s_etat_processus,
 1618:                                                     s_objet_argument);
 1619: 
 1620:                                             (*s_etat_processus).erreur_execution
 1621:                                                     = d_ex_argument_invalide;
 1622: 
 1623:                                             return;
 1624:                                         }
 1625:                                     }
 1626:                                     else
 1627:                                     {
 1628:                                         if (nombre_arguments_auxiliaires
 1629:                                                 == 2)
 1630:                                         {
 1631:                                             (*s_etat_processus).mz2_tics = 0;
 1632:                                             (*s_etat_processus).mz2_lines =
 1633:                                                     autorisation_trace;
 1634:                                         }
 1635:                                         else
 1636:                                         {
 1637:                                             liberation(s_etat_processus,
 1638:                                                     s_objet_argument);
 1639: 
 1640:                                             (*s_etat_processus).erreur_execution
 1641:                                                     = d_ex_argument_invalide;
 1642: 
 1643:                                             return;
 1644:                                         }
 1645:                                     }
 1646: 
 1647:                                     break;
 1648:                                 }
 1649: 
 1650:                                 default :
 1651:                                 {
 1652:                                     liberation(s_etat_processus,
 1653:                                             s_objet_argument);
 1654: 
 1655:                                     free(tampon);
 1656: 
 1657:                                     (*s_etat_processus).erreur_execution =
 1658:                                             d_ex_argument_invalide;
 1659:                                     return;
 1660:                                 }
 1661:                             }
 1662:                         }
 1663:                         else if (strcmp(tampon, "TICSONLY") == 0)
 1664:                         {
 1665:                             nombre_arguments_auxiliaires--;
 1666:                             autorisation_trace = d_faux;
 1667:                         }
 1668:                         else
 1669:                         {
 1670:                             liberation(s_etat_processus, s_objet_argument);
 1671: 
 1672:                             free(tampon);
 1673: 
 1674:                             (*s_etat_processus).erreur_execution =
 1675:                                     d_ex_argument_invalide;
 1676:                             return;
 1677:                         }
 1678: 
 1679:                         free(tampon);
 1680:                     }
 1681:                     else
 1682:                     {
 1683:                         liberation(s_etat_processus, s_objet_argument);
 1684: 
 1685:                         (*s_etat_processus).erreur_execution =
 1686:                                 d_ex_erreur_type_argument;
 1687:                         return;
 1688:                     }
 1689: 
 1690:                     l_element_courant_auxiliaire =
 1691:                             (*l_element_courant_auxiliaire).suivant;
 1692:                 }
 1693:             }
 1694:             else
 1695:             {
 1696:                 liberation(s_etat_processus, s_objet_argument);
 1697: 
 1698:                 (*s_etat_processus).erreur_execution =
 1699:                         d_ex_erreur_type_argument;
 1700:                 return;
 1701:             }
 1702: 
 1703:             l_element_courant = (*l_element_courant).suivant;
 1704:         }
 1705:     }
 1706:     else
 1707:     {
 1708:         liberation(s_etat_processus, s_objet_argument);
 1709: 
 1710:         (*s_etat_processus).erreur_execution = d_ex_erreur_type_argument;
 1711:         return;
 1712:     }
 1713: 
 1714:     liberation(s_etat_processus, s_objet_argument);
 1715: 
 1716:     return;
 1717: }
 1718: 
 1719: // vim: ts=4

CVSweb interface <joel.bertrand@systella.fr>