Annotation of rpl/src/messages.c, revision 1.42

1.1       bertrand    1: /*
                      2: ================================================================================
1.42    ! bertrand    3:   RPL/2 (R) version 4.1.4
1.27      bertrand    4:   Copyright (C) 1989-2011 Dr. BERTRAND Joël
1.1       bertrand    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: 
1.16      bertrand   23: #define MESSAGES
1.22      bertrand   24: #include "rpl-conv.h"
1.1       bertrand   25: 
                     26: 
                     27: /*
                     28: ================================================================================
                     29:   Affichage des messages d'erreur
                     30: ================================================================================
                     31:   Entrées : structure sur l'état du processus
                     32: --------------------------------------------------------------------------------
                     33:   Sorties : néant
                     34: --------------------------------------------------------------------------------
                     35:   Effets de bord : néant
                     36: ================================================================================
                     37: */
                     38: 
                     39: unsigned char *
                     40: messages(struct_processus *s_etat_processus)
                     41: {
                     42:    logical1                erreur_fonction_externe;
                     43: 
                     44:    unsigned char           *message;
                     45:    unsigned char           *chaine;
                     46:    unsigned char           *argument;
                     47: 
                     48:    chaine = NULL;
                     49:    argument = NULL;
                     50: 
                     51:    erreur_fonction_externe = d_faux;
                     52: 
                     53:    (*s_etat_processus).derniere_exception = d_ep;
                     54:    (*s_etat_processus).derniere_erreur_execution = d_ex;
                     55:    (*s_etat_processus).derniere_erreur_systeme = d_es;
                     56: 
                     57:    if ((*s_etat_processus).erreur_execution != d_ex)
                     58:    {
                     59:        (*s_etat_processus).derniere_erreur_execution =
                     60:                (*s_etat_processus).erreur_execution;
                     61: 
                     62: /*
                     63: --------------------------------------------------------------------------------
                     64:   Erreurs dues aux définitions
                     65: --------------------------------------------------------------------------------
                     66: */
                     67: 
                     68:        switch((*s_etat_processus).erreur_execution)
                     69:        {
                     70:            case d_ex_pile_vide :
                     71:            {
                     72:                if ((*s_etat_processus).langue == 'F')
                     73:                {
                     74:                    chaine = "+++Erreur : Pile opérationnelle vide";
                     75:                }
                     76:                else
                     77:                {
                     78:                    chaine = "+++Error : Empty stack";
                     79:                }
                     80: 
                     81:                break;
                     82:            }
                     83: 
                     84:            case d_ex_manque_argument :
                     85:            {
                     86:                if ((*s_etat_processus).langue == 'F')
                     87:                {
                     88:                    chaine ="+++Erreur : Arguments insuffisants pour la "
                     89:                            "commande %s";
                     90:                    argument = (*s_etat_processus).instruction_derniere_erreur;
                     91:                }
                     92:                else
                     93:                {
                     94:                    chaine = "+++Error : Too few arguments for %s "
                     95:                            "command";
                     96:                    argument = (*s_etat_processus).instruction_derniere_erreur;
                     97:                }
                     98: 
                     99:                break;
                    100:            }
                    101: 
                    102:            case d_ex_argument_invalide :
                    103:            {
                    104:                if ((*s_etat_processus).langue == 'F')
                    105:                {
                    106:                    chaine = "+++Erreur : Argument invalide pour la "
                    107:                            "commande %s";
                    108:                    argument = (*s_etat_processus).instruction_derniere_erreur;
                    109:                }
                    110:                else
                    111:                {
                    112:                    chaine = "+++Error : Invalid argument for "
                    113:                            "%s command";
                    114:                    argument = (*s_etat_processus).instruction_derniere_erreur;
                    115:                }
                    116: 
                    117:                break;
                    118:            }
                    119: 
                    120:            case d_ex_nom_reserve :
                    121:            {
                    122:                if ((*s_etat_processus).langue == 'F')
                    123:                {
                    124:                    chaine = "Erreur : Nom '%s' réservé";
                    125:                    argument = (*s_etat_processus).instruction_derniere_erreur;
                    126:                }
                    127:                else
                    128:                {
                    129:                    chaine = "Error : '%s' reserved name";
                    130:                    argument = (*s_etat_processus).instruction_derniere_erreur;
                    131:                }
                    132: 
                    133:                break;
                    134:            }
                    135: 
                    136:            case d_ex_erreur_type_argument :
                    137:            {
                    138:                if ((*s_etat_processus).langue == 'F')
                    139:                {
                    140:                    chaine = "+++Erreur : Type d'argument invalide pour la "
                    141:                            "commande %s";
                    142:                    argument = (*s_etat_processus).instruction_derniere_erreur;
                    143:                }
                    144:                else
                    145:                {
                    146:                    chaine = "+++Error : Invalid argument type for "
                    147:                            "%s command";
                    148:                    argument = (*s_etat_processus).instruction_derniere_erreur;
                    149:                }
                    150: 
                    151:                break;
                    152:            }
                    153: 
                    154:            case d_ex_nombre_arguments :
                    155:            {
                    156:                if ((*s_etat_processus).langue == 'F')
                    157:                {
                    158:                    chaine = "+++Erreur : Une même fonction apparaît avec "
                    159:                            "des nombres d'arguments différents (%s)";
                    160:                    argument = (*s_etat_processus).instruction_derniere_erreur;
                    161:                }
                    162:                else
                    163:                {
                    164:                    chaine = "+++Error : The same function seems to have "
                    165:                            "different numbers of arguments (%s)";
                    166:                    argument = (*s_etat_processus).instruction_derniere_erreur;
                    167:                }
                    168: 
                    169:                break;
                    170:            }
                    171: 
                    172:            case d_ex_dimensions_invalides :
                    173:            {
                    174:                if ((*s_etat_processus).langue == 'F')
                    175:                {
                    176:                    chaine = "+++Erreur : Dimensions invalides pour "
                    177:                            "l'instruction %s";
                    178:                    argument = (*s_etat_processus).instruction_derniere_erreur;
                    179:                }
                    180:                else
                    181:                {
                    182:                    chaine = "+++Erreur : Invalid dimensions for "
                    183:                            "%s instruction";
                    184:                    argument = (*s_etat_processus).instruction_derniere_erreur;
                    185:                }
                    186: 
                    187:                break;
                    188:            }
                    189: 
                    190:            case d_ex_expression_invalide :
                    191:            {
                    192:                if ((*s_etat_processus).langue == 'F')
                    193:                {
                    194:                    chaine = "+++Erreur : Expression %s invalide";
                    195:                    argument = (*s_etat_processus).instruction_derniere_erreur;
                    196:                }
                    197:                else
                    198:                {
                    199:                    chaine = "+++Error : Invalid %s expression";
                    200:                    argument = (*s_etat_processus).instruction_derniere_erreur;
                    201:                }
                    202: 
                    203:                break;
                    204:            }
                    205: 
                    206:            case d_ex_erreur_traitement_condition :
                    207:            {
                    208:                if ((*s_etat_processus).langue == 'F')
                    209:                {
                    210:                    chaine = "+++Erreur : Traitement impossible d'une clause "
                    211:                            "conditionnelle";
                    212:                }
                    213:                else
                    214:                {
                    215:                    chaine = "+++Error : Illegal conditional structure";
                    216:                }
                    217: 
                    218:                break;
                    219:            }
                    220: 
                    221:            case d_ex_erreur_traitement_boucle :
                    222:            {
                    223:                if ((*s_etat_processus).langue == 'F')
                    224:                {
                    225:                    chaine = "+++Erreur : Traitement impossible "
                    226:                            "d'une boucle";
                    227:                }
                    228:                else
                    229:                {
                    230:                    chaine = "+++Error : Illegal loop structure";
                    231:                }
                    232: 
                    233:                break;
                    234:            }
                    235: 
                    236:            case d_ex_variable_non_definie :
                    237:            {
                    238:                if ((*s_etat_processus).langue == 'F')
                    239:                {
                    240:                    chaine = "+++Erreur : Variable non définie";
                    241:                }
                    242:                else
                    243:                {
                    244:                    chaine = "+++Error : Undefined variable";
                    245:                }
                    246: 
                    247:                break;
                    248:            }
                    249: 
                    250:            case d_ex_drapeau_inexistant :
                    251:            {
                    252:                if ((*s_etat_processus).langue == 'F')
                    253:                {
                    254:                    chaine = "+++Erreur : Drapeau inexistant";
                    255:                }
                    256:                else
                    257:                {
                    258:                    chaine = "+++Error : Non-existent flag";
                    259:                }
                    260: 
                    261:                break;
                    262:            }
                    263: 
                    264:            case d_ex_nom_invalide :
                    265:            {
                    266:                if ((*s_etat_processus).langue == 'F')
                    267:                {
                    268:                    chaine = "+++Erreur : Nom de variable invalide (%s)";
                    269:                    argument = (*s_etat_processus).instruction_derniere_erreur;
                    270:                }
                    271:                else
                    272:                {
                    273:                    chaine = "+++Error : Invalid variable name (%s)";
                    274:                    argument = (*s_etat_processus).instruction_derniere_erreur;
                    275:                }
                    276: 
                    277:                break;
                    278:            }
                    279: 
                    280:            case d_ex_element_inexistant :
                    281:            {
                    282:                if ((*s_etat_processus).langue == 'F')
                    283:                {
                    284:                    chaine = "+++Erreur : Indice invalide";
                    285:                }
                    286:                else
                    287:                {
                    288:                    chaine = "+++Error : Invalid index";
                    289:                }
                    290: 
                    291:                break;
                    292:            }
                    293: 
                    294:            case d_ex_absence_variable :
                    295:            {
                    296:                if ((*s_etat_processus).langue == 'F')
                    297:                {
                    298:                    chaine = "+++Erreur : Absence de variable";
                    299:                }
                    300:                else
                    301:                {
                    302:                    chaine = "+++Error : Variable omission";
                    303:                }
                    304: 
                    305:                break;
                    306:            }
                    307: 
                    308:            case d_ex_erreur_evaluation :
                    309:            {
                    310:                if ((*s_etat_processus).langue == 'F')
                    311:                {
                    312:                    chaine = "+++Erreur : Erreur dans l'évaluation d'une "
                    313:                            "expression";
                    314:                }
                    315:                else
                    316:                {
                    317:                    chaine = "+++Error : Error in expression evaluation";
                    318:                }
                    319: 
                    320:                break;
                    321:            }
                    322: 
                    323:            case d_ex_longueur_fft :
                    324:            {
                    325:                if ((*s_etat_processus).langue == 'F')
                    326:                {
                    327:                    chaine = "+++Erreur : Longueur de FFT invalide";
                    328:                }
                    329:                else
                    330:                {
                    331:                    chaine = "+++Error : Invalid FFT length";
                    332:                }
                    333: 
                    334:                break;
                    335:            }
                    336: 
                    337:            case d_ex_longueur_dft :
                    338:            {
                    339:                if ((*s_etat_processus).langue == 'F')
                    340:                {
                    341:                    chaine = "+++Erreur : Longueur de DFT invalide";
                    342:                }
                    343:                else
                    344:                {
                    345:                    chaine = "+++Error : Invalid DFT length";
                    346:                }
                    347: 
                    348:                break;
                    349:            }
                    350: 
                    351:            case d_ex_queue_impression :
                    352:            {
                    353:                if ((*s_etat_processus).langue == 'F')
                    354:                {
                    355:                    chaine = "+++Erreur : Queue d'impression vide";
                    356:                }
                    357:                else
                    358:                {
                    359:                    chaine = "+++Error : Empty printing spool queue";
                    360:                }
                    361: 
                    362:                break;
                    363:            }
                    364: 
                    365:            case d_ex_type_trace_invalide :
                    366:            {
                    367:                if ((*s_etat_processus).langue == 'F')
                    368:                {
                    369:                    chaine = "+++Erreur : Type de tracé invalide";
                    370:                }
                    371:                else
                    372:                {
                    373:                    chaine = "+++Error : Invalid graph type";
                    374:                }
                    375: 
                    376:                break;
                    377:            }
                    378: 
                    379:            case d_ex_erreur_fichier :
                    380:            {
                    381:                if ((*s_etat_processus).langue == 'F')
                    382:                {
                    383:                    chaine = "+++Erreur : Erreur d'entrée/sortie sur un"
                    384:                            " fichier ou une socket";
                    385:                }
                    386:                else
                    387:                {
                    388:                    chaine = "+++Error : file or socket input/output error";
                    389:                }
                    390: 
                    391:                break;
                    392:            }
                    393: 
                    394:            case d_ex_absence_equation :
                    395:            {
                    396:                if ((*s_etat_processus).langue == 'F')
                    397:                {
                    398:                    chaine = "+++Erreur : Absence d'équation";
                    399:                }
                    400:                else
                    401:                {
                    402:                    chaine = "+++Error : Equation omission";
                    403:                }
                    404: 
                    405:                break;
                    406:            }
                    407: 
                    408:            case d_ex_erreur_bibliotheque :
                    409:            {
                    410:                if ((*s_etat_processus).langue == 'F')
                    411:                {
                    412:                    chaine = "+++Erreur : Erreur portant sur une "
                    413:                            "bibliothèque dynamique";
                    414:                }
                    415:                else
                    416:                {
                    417:                    chaine = "+++Error : Dynamic library error";
                    418:                }
                    419: 
                    420:                break;
                    421:            }
                    422: 
                    423:            case d_ex_execution_bibliotheque :
                    424:            {
                    425:                if ((*s_etat_processus).langue == 'F')
                    426:                {
                    427:                    chaine = "+++Erreur : Problème lors de l'exécution d'une "
                    428:                            "fonction externe";
                    429:                }
                    430:                else
                    431:                {
                    432:                    chaine = "+++Error : External function execution "
                    433:                            "error";
                    434:                }
                    435: 
                    436:                break;
                    437:            }
                    438: 
                    439:            case d_ex_matrice_statistique_invalide :
                    440:            {
                    441:                if ((*s_etat_processus).langue == 'F')
                    442:                {
                    443:                    chaine = "+++Erreur : Matrice statistique invalide";
                    444:                }
                    445:                else
                    446:                {
                    447:                    chaine = "+++Error : Invalid statistical matrix";
                    448:                }
                    449: 
                    450:                break;
                    451:            }
                    452: 
                    453:            case d_ex_dimensions_matrice_statistique :
                    454:            {
                    455:                if ((*s_etat_processus).langue == 'F')
                    456:                {
                    457:                    chaine = "+++Erreur : Dimensions différentes des "
                    458:                            "observations et de la matrice statistique";
                    459:                }
                    460:                else
                    461:                {
                    462:                    chaine = "+++Error : Invalid dimensions between "
                    463:                            "observations and statistical matrix";
                    464:                }
                    465: 
                    466:                break;
                    467:            }
                    468: 
                    469:            case d_ex_absence_observations :
                    470:            {
                    471:                if ((*s_etat_processus).langue == 'F')
                    472:                {
                    473:                    chaine = "+++Erreur : Absence de matrice statistique";
                    474:                }
                    475:                else
                    476:                {
                    477:                    chaine = "+++Error : Statistical matrix omission";
                    478:                }
                    479: 
                    480:                break;
                    481:            }
                    482: 
                    483:            case d_ex_statistiques_echantillon :
                    484:            {
                    485:                if ((*s_etat_processus).langue == 'F')
                    486:                {
                    487:                    chaine = "+++Erreur : Echantillon trop restreint pour un "
                    488:                            "calcul de statistique";
                    489:                }
                    490:                else
                    491:                {
                    492:                    chaine = "+++Error : Too few statistical observations";
                    493:                }
                    494: 
                    495:                break;
                    496:            }
                    497: 
                    498:            case d_ex_observations_inexistantes :
                    499:            {
                    500:                if ((*s_etat_processus).langue == 'F')
                    501:                {
                    502:                    chaine = "+++Erreur : Colonne d'observations "
                    503:                            "inexistante";
                    504:                }
                    505:                else
                    506:                {
                    507:                    chaine = "+++Error : Non-existent observations column";
                    508:                }
                    509: 
                    510:                break;
                    511:            }
                    512: 
                    513:            case d_ex_syntaxe :
                    514:            {
                    515:                if ((*s_etat_processus).langue == 'F')
                    516:                {
                    517:                    chaine = "+++Erreur : Erreur de syntaxe";
                    518:                }
                    519:                else
                    520:                {
                    521:                    chaine = "+++Error : Syntax error";
                    522:                }
                    523: 
                    524:                break;
                    525:            }
                    526: 
                    527:            case d_ex_cycle_hors_boucle :
                    528:            {
                    529:                if ((*s_etat_processus).langue == 'F')
                    530:                {
                    531:                    chaine = "+++Erreur : Instruction 'CYCLE' hors d'une"
                    532:                            " boucle définie";
                    533:                }
                    534:                else
                    535:                {
                    536:                    chaine = "+++Error : 'CYCLE' instruction out of any "
                    537:                            "defined loop";
                    538:                }
                    539: 
                    540:                break;
                    541:            }
                    542: 
                    543:            case d_ex_conversion_unite :
                    544:            {
                    545:                if ((*s_etat_processus).langue == 'F')
                    546:                {
                    547:                    chaine = "+++Erreur : Conversion d'unité impossible";
                    548:                }
                    549:                else
                    550:                {
                    551:                    chaine = "+++Error : Unit translation impossible";
                    552:                }
                    553: 
                    554:                break;
                    555:            }
                    556: 
                    557:            case d_ex_erreur_parametre_fichier :
                    558:            {
                    559:                if ((*s_etat_processus).langue == 'F')
                    560:                {
                    561:                    chaine = "+++Erreur : Paramètre de fichier ou de socket "
                    562:                            "invalide";
                    563:                }
                    564:                else
                    565:                {
                    566:                    chaine = "+++Error : Invalid file or socket parameter";
                    567:                }
                    568: 
                    569:                break;
                    570:            }
                    571: 
                    572:            case d_ex_erreur_acces_fichier :
                    573:            {
                    574:                if ((*s_etat_processus).langue == 'F')
                    575:                {
                    576:                    chaine = "+++Erreur : Erreur d'accès à un fichier ou à une"
                    577:                            " socket";
                    578:                }
                    579:                else
                    580:                {
                    581:                    chaine = "+++Error : File or socket access error";
                    582:                }
                    583: 
                    584:                break;
                    585:            }
                    586: 
                    587:            case d_ex_erreur_requete_fichier :
                    588:            {
                    589:                if ((*s_etat_processus).langue == 'F')
                    590:                {
                    591:                    chaine = "+++Erreur : Erreur de requête envers un "
                    592:                            "fichier";
                    593:                }
                    594:                else
                    595:                {
                    596:                    chaine = "+++Error : File request error";
                    597:                }
                    598: 
                    599:                break;
                    600:            }
                    601: 
                    602:            case d_ex_erreur_format_fichier :
                    603:            {
                    604:                if ((*s_etat_processus).langue == 'F')
                    605:                {
                    606:                    chaine = "+++Erreur : Erreur de format";
                    607:                }
                    608:                else
                    609:                {
                    610:                    chaine = "+++Error : Format error";
                    611:                }
                    612: 
                    613:                break;
                    614:            }
                    615: 
                    616:            case d_ex_fichier_verrouille :
                    617:            {
                    618:                if ((*s_etat_processus).langue == 'F')
                    619:                {
                    620:                    chaine = "+++Erreur : Fichier verrouillé";
                    621:                }
                    622:                else
                    623:                {
                    624:                    chaine = "+++Error : Locked file";
                    625:                }
                    626: 
                    627:                break;
                    628:            }
                    629: 
                    630:            case d_ex_verrou_indefini :
                    631:            {
                    632:                if ((*s_etat_processus).langue == 'F')
                    633:                {
                    634:                    chaine = "+++Erreur : Verrou indéfini";
                    635:                }
                    636:                else
                    637:                {
                    638:                    chaine = "+++Error : Undefined lock";
                    639:                }
                    640: 
                    641:                break;
                    642:            }
                    643: 
                    644:            case d_ex_fin_de_fichier_atteinte :
                    645:            {
                    646:                if ((*s_etat_processus).langue == 'F')
                    647:                {
                    648:                    chaine = "+++Erreur : Fin de fichier atteinte";
                    649:                }
                    650:                else
                    651:                {
                    652:                    chaine = "+++Error : End of file reached";
                    653:                }
                    654: 
                    655:                break;
                    656:            }
                    657: 
                    658:            case d_ex_debut_de_fichier_atteint :
                    659:            {
                    660:                if ((*s_etat_processus).langue == 'F')
                    661:                {
                    662:                    chaine = "+++Erreur : Début de fichier atteint";
                    663:                }
                    664:                else
                    665:                {
                    666:                    chaine = "+++Error : Beginning of file reached";
                    667:                }
                    668: 
                    669:                break;
                    670:            }
                    671: 
                    672:            case d_ex_erreur_type_fichier :
                    673:            {
                    674:                if ((*s_etat_processus).langue == 'F')
                    675:                {
                    676:                    chaine = "+++Erreur : Type de fichier invalide";
                    677:                }
                    678:                else
                    679:                {
                    680:                    chaine = "+++Error : Invalid file type";
                    681:                }
                    682: 
                    683:                break;
                    684:            }
                    685: 
                    686:            case d_ex_fichier_vide :
                    687:            {
                    688:                if ((*s_etat_processus).langue == 'F')
                    689:                {
                    690:                    chaine = "+++Erreur : Fichier vide";
                    691:                }
                    692:                else
                    693:                {
                    694:                    chaine = "+++Error : Empty file";
                    695:                }
                    696: 
                    697:                break;
                    698:            }
                    699: 
                    700:            case d_ex_dimensions_differentes :
                    701:            {
                    702:                if ((*s_etat_processus).langue == 'F')
                    703:                {
                    704:                    chaine = "+++Erreur : Dimensions différentes pour "
                    705:                            "deux graphiques à superposer";
                    706:                }
                    707:                else
                    708:                {
                    709:                    chaine = "+++Error : Invalid graphical dimension";
                    710:                }
                    711: 
                    712:                break;
                    713:            }
                    714: 
                    715:            case d_ex_routines_mathematiques :
                    716:            {
                    717:                if ((*s_etat_processus).langue == 'F')
                    718:                {
                    719:                    chaine = "+++Erreur : Erreur interne dans la routine"
                    720:                            " mathématique %s";
                    721:                    argument = (*s_etat_processus).instruction_derniere_erreur;
                    722:                }
                    723:                else
                    724:                {
                    725:                    chaine = "+++Error : Internal error in mathematical"
                    726:                         " subroutine %s";
                    727:                    argument = (*s_etat_processus).instruction_derniere_erreur;
                    728:                }
                    729: 
                    730:                break;
                    731:            }
                    732: 
                    733:            case d_ex_exit_hors_boucle :
                    734:            {
                    735:                if ((*s_etat_processus).langue == 'F')
                    736:                {
                    737:                    chaine = "+++Erreur : Instruction 'EXIT' hors d'une"
                    738:                            " boucle";
                    739:                }
                    740:                else
                    741:                {
                    742:                    chaine = "+++Error : 'EXIT' instruction out of any "
                    743:                            "loop";
                    744:                }
                    745: 
                    746:                break;
                    747:            }
                    748: 
                    749:            case d_ex_processus :
                    750:            {
                    751:                if ((*s_etat_processus).langue == 'F')
                    752:                {
                    753:                    chaine = "+++Erreur : Processus inexistant";
                    754:                }
                    755:                else
                    756:                {
                    757:                    chaine = "+++Error : Non-existent process";
                    758:                }
                    759: 
                    760:                break;
                    761:            }
                    762: 
                    763:            case d_ex_image_processus :
                    764:            {
                    765:                if ((*s_etat_processus).langue == 'F')
                    766:                {
                    767:                    chaine = "+++Erreur : Création impossible de l'image"
                    768:                            " du processus courant";
                    769:                }
                    770:                else
                    771:                {
                    772:                    chaine = "+++Error : Cannot create dump of current process";
                    773:                }
                    774: 
                    775:                break;
                    776:            }
                    777: 
                    778:            case d_ex_erreur_sql :
                    779:            {
                    780:                if ((*s_etat_processus).langue == 'F')
                    781:                {
                    782:                    chaine = "+++Erreur : Requête SQL invalide";
                    783:                }
                    784:                else
                    785:                {
                    786:                    chaine = "+++Error : Invalid SQL query";
                    787:                }
                    788: 
                    789:                break;
                    790:            }
                    791: 
                    792:            case d_ex_variable_verrouillee :
                    793:            {
                    794:                if ((*s_etat_processus).langue == 'F')
                    795:                {
                    796:                    chaine = "+++Erreur : Variable verrouillée";
                    797:                }
                    798:                else
                    799:                {
                    800:                    chaine = "+++Error : Locked variable";
                    801:                }
                    802: 
                    803:                break;
                    804:            }
                    805: 
                    806:            case d_ex_variable_volatile :
                    807:            {
                    808:                if ((*s_etat_processus).langue == 'F')
                    809:                {
                    810:                    chaine = "+++Erreur : Variable volatile";
                    811:                }
                    812:                else
                    813:                {
                    814:                    chaine = "+++Error : Volatile variable";
                    815:                }
                    816: 
                    817:                break;
                    818:            }
                    819: 
                    820:            case d_ex_erreur_processus :
                    821:            {
                    822:                if ((*s_etat_processus).langue == 'F')
                    823:                {
                    824:                    chaine = "+++Erreur : Commande inconnue";
                    825:                }
                    826:                else
                    827:                {
                    828:                    chaine = "+++Error : Unknown command";
                    829:                }
                    830: 
                    831:                break;
                    832:            }
                    833: 
                    834:            case d_ex_erreur_impression :
                    835:            {
                    836:                if ((*s_etat_processus).langue == 'F')
                    837:                {
                    838:                    chaine = "+++Erreur : Fichier d'impression erroné";
                    839:                }
                    840:                else
                    841:                {
                    842:                    chaine = "+++Error : Erroneous print file";
                    843:                }
                    844: 
                    845:                break;
                    846:            }
                    847: 
                    848:            case d_ex_nombre_arguments_fonction :
                    849:            {
                    850:                if ((*s_etat_processus).langue == 'F')
                    851:                {
                    852:                    chaine = "+++Erreur : Nombre d'arguments invalide";
                    853:                }
                    854:                else
                    855:                {
                    856:                    chaine = "+++Error : Invalid number of arguments";
                    857:                }
                    858: 
                    859:                break;
                    860:            }
                    861: 
                    862:            case d_ex_fonction_indisponible :
                    863:            {
                    864:                if ((*s_etat_processus).langue == 'F')
                    865:                {
                    866:                    chaine = "+++Erreur : Fonction indisponible";
                    867:                }
                    868:                else
                    869:                {
                    870:                    chaine = "+++Error : Unavailable function";
                    871:                }
                    872: 
                    873:                break;
                    874:            }
                    875: 
                    876:            case d_ex_bibliotheque_chargee :
                    877:            {
                    878:                if ((*s_etat_processus).langue == 'F')
                    879:                {
                    880:                    chaine = "+++Erreur : Bibliothèque ouverte";
                    881:                }
                    882:                else
                    883:                {
                    884:                    chaine = "+++Error : Opened library";
                    885:                }
                    886: 
                    887:                break;
                    888:            }
                    889: 
                    890:            case d_ex_aucun_symbole :
                    891:            {
                    892:                if ((*s_etat_processus).langue == 'F')
                    893:                {
                    894:                    chaine = "+++Erreur : Aucun symbole déclaré";
                    895:                }
                    896:                else
                    897:                {
                    898:                    chaine = "+++Error : Too few symbols";
                    899:                }
                    900: 
                    901:                break;
                    902:            }
                    903: 
                    904:            case d_ex_definition_ambigue :
                    905:            {
                    906:                if ((*s_etat_processus).langue == 'F')
                    907:                {
                    908:                    chaine = "+++Erreur : Définition externe ambiguë";
                    909:                }
                    910:                else
                    911:                {
                    912:                    chaine = "+++Error : Ambiguous external definition";
                    913:                }
                    914: 
                    915:                break;
                    916:            }
                    917: 
                    918:            case d_ex_fichier_hors_contexte :
                    919:            {
                    920:                if ((*s_etat_processus).langue == 'F')
                    921:                {
                    922:                    chaine = "+++Erreur : Descripteur hors contexte";
                    923:                }
                    924:                else
                    925:                {
                    926:                    chaine = "+++Error : Context mismatch";
                    927:                }
                    928: 
                    929:                break;
                    930:            }
                    931: 
                    932:            case d_ex_socket_en_ecoute :
                    933:            {
                    934:                if ((*s_etat_processus).langue == 'F')
                    935:                {
                    936:                    chaine = "+++Erreur : Connexion refusée sur une socket"
                    937:                            " en attente";
                    938:                }
                    939:                else
                    940:                {
                    941:                    chaine = "+++Error : Connexion refused on a"
                    942:                            " waiting socket";
                    943:                }
                    944: 
                    945:                break;
                    946:            }
                    947: 
                    948:            case d_ex_interruption_invalide :
                    949:            {
                    950:                if ((*s_etat_processus).langue == 'F')
                    951:                {
                    952:                    chaine = "+++Erreur : Interruption invalide";
                    953:                }
                    954:                else
                    955:                {
                    956:                    chaine = "+++Error : Unavailable interrupt";
                    957:                }
                    958: 
                    959:                break;
                    960:            }
                    961: 
                    962:            case d_ex_erreur_transcodage :
                    963:            {
                    964:                if ((*s_etat_processus).langue == 'F')
                    965:                {
                    966:                    chaine = "+++Erreur : Erreur de transcodage";
                    967:                }
                    968:                else
                    969:                {
                    970:                    chaine = "+++Error : Transcodage error";
                    971:                }
                    972: 
                    973:                break;
                    974:            }
                    975: 
                    976:            case d_ex_contexte :
                    977:            {
                    978:                if ((*s_etat_processus).langue == 'F')
                    979:                {
                    980:                    chaine = "+++Erreur : Aucun contexte sauvegardé";
                    981:                }
                    982:                else
                    983:                {
                    984:                    chaine = "+++Error : No stacked context";
                    985:                }
                    986: 
                    987:                break;
                    988:            }
                    989: 
                    990:            case d_ex_absence_processus_pere :
                    991:            {
                    992:                if ((*s_etat_processus).langue == 'F')
                    993:                {
                    994:                    chaine = "+++Erreur : Absence de processus père";
                    995:                }
                    996:                else
                    997:                {
                    998:                    chaine = "+++Error : No parent process";
                    999:                }
                   1000: 
                   1001:                break;
                   1002:            }
                   1003: 
                   1004:            case d_ex_creation_variable :
                   1005:            {
                   1006:                if ((*s_etat_processus).langue == 'F')
                   1007:                {
                   1008:                    chaine = "+++Erreur : Création de variable impossible";
                   1009:                }
                   1010:                else
                   1011:                {
                   1012:                    chaine = "+++Error : Variable initialization failed";
                   1013:                }
                   1014: 
                   1015:                break;
                   1016:            }
                   1017: 
                   1018:            case d_ex_fusible :
                   1019:            {
                   1020:                if ((*s_etat_processus).langue == 'F')
                   1021:                {
                   1022:                    chaine = "+++Erreur : Fusible préexistant";
                   1023:                }
                   1024:                else
                   1025:                {
                   1026:                    chaine = "+++Error : Fuse error";
                   1027:                }
                   1028: 
                   1029:                break;
                   1030:            }
                   1031: 
                   1032:            case d_ex_iswi_hors_interruption :
                   1033:            {
                   1034:                if ((*s_etat_processus).langue == 'F')
                   1035:                {
                   1036:                    chaine = "+++Erreur : Aucune interruption en cours";
                   1037:                }
                   1038:                else
                   1039:                {
                   1040:                    chaine = "+++Error : No current interrupt";
                   1041:                }
                   1042: 
                   1043:                break;
                   1044:            }
                   1045: 
                   1046:            case d_ex_daemon :
                   1047:            {
                   1048:                if ((*s_etat_processus).langue == 'F')
                   1049:                {
                   1050:                    chaine = "+++Erreur : Conversion en daemon impossible";
                   1051:                }
                   1052:                else
                   1053:                {
                   1054:                    chaine = "+++Error : Unable to convert to daemon";
                   1055:                }
                   1056: 
                   1057:                break;
                   1058:            }
                   1059: 
                   1060:            case d_ex_mutex :
                   1061:            {
                   1062:                if ((*s_etat_processus).langue == 'F')
                   1063:                {
                   1064:                    chaine = "+++Erreur : Mutex non initialisé";
                   1065:                }
                   1066:                else
                   1067:                {
                   1068:                    chaine = "+++Error : Uninitialized mutex";
                   1069:                }
                   1070: 
                   1071:                break;
                   1072:            }
                   1073: 
                   1074:            case d_ex_semaphore :
                   1075:            {
                   1076:                if ((*s_etat_processus).langue == 'F')
                   1077:                {
                   1078:                    chaine = "+++Erreur : Erreur d'accès à un sémaphore";
                   1079:                }
                   1080:                else
                   1081:                {
                   1082:                    chaine = "+++Error : Semaphore access error";
                   1083:                }
                   1084: 
                   1085:                break;
                   1086:            }
                   1087: 
                   1088:            case d_ex_variable_statique_partagee :
                   1089:            {
                   1090:                if ((*s_etat_processus).langue == 'F')
                   1091:                {
                   1092:                    chaine = "+++Erreur : Variable statique partagée";
                   1093:                }
                   1094:                else
                   1095:                {
                   1096:                    chaine = "+++Error : Static shared variable";
                   1097:                }
                   1098: 
                   1099:                break;
                   1100:            }
                   1101: 
                   1102:            case d_ex_variable_partagee :
                   1103:            {
                   1104:                if ((*s_etat_processus).langue == 'F')
                   1105:                {
                   1106:                    chaine = "+++Erreur : Variable partagée";
                   1107:                }
                   1108:                else
                   1109:                {
                   1110:                    chaine = "+++Error : Shared variable";
                   1111:                }
                   1112: 
                   1113:                break;
                   1114:            }
                   1115: 
                   1116:            case d_ex_graphique_memorise :
                   1117:            {
                   1118:                if ((*s_etat_processus).langue == 'F')
                   1119:                {
                   1120:                    chaine = "+++Erreur : Données mémorisées non affichées";
                   1121:                }
                   1122:                else
                   1123:                {
                   1124:                    chaine = "+++Error : Non plotted buffered data";
                   1125:                }
                   1126: 
                   1127:                break;
                   1128:            }
                   1129: 
                   1130:            case d_ex_absence_graphique_courant :
                   1131:            {
                   1132:                if ((*s_etat_processus).langue == 'F')
                   1133:                {
                   1134:                    chaine = "+++Erreur : Aucun graphique en cours";
                   1135:                }
                   1136:                else
                   1137:                {
                   1138:                    chaine = "+++Error : No current graphic";
                   1139:                }
                   1140: 
                   1141:                break;
                   1142:            }
                   1143: 
                   1144:            case d_ex_stop :
                   1145:            {
                   1146:                if ((*s_etat_processus).langue == 'F')
                   1147:                {
                   1148:                    chaine = "+++Erreur : Masque du signal STOP";
                   1149:                }
                   1150:                else
                   1151:                {
                   1152:                    chaine = "+++Error : STOP signal mask";
                   1153:                }
                   1154: 
                   1155:                break;
                   1156:            }
                   1157: 
                   1158:            case d_ex_matrice_non_diagonale :
                   1159:            {
                   1160:                if ((*s_etat_processus).langue == 'F')
                   1161:                {
                   1162:                    chaine = "+++Erreur : Matrice non diagonale";
                   1163:                }
                   1164:                else
                   1165:                {
                   1166:                    chaine = "+++Error : Non diagonal matrix";
                   1167:                }
                   1168: 
                   1169:                break;
                   1170:            }
                   1171: 
                   1172:            case d_ex_locales :
                   1173:            {
                   1174:                if ((*s_etat_processus).langue == 'F')
                   1175:                {
                   1176:                    chaine = "+++Erreur : Variable de localisation "
                   1177:                            "indisponible";
                   1178:                }
                   1179:                else
                   1180:                {
                   1181:                    chaine = "+++Error : Unavailable locale";
                   1182:                }
                   1183: 
                   1184:                break;
                   1185:            }
                   1186: 
                   1187:            case d_ex_representation :
                   1188:            {
                   1189:                if ((*s_etat_processus).langue == 'F')
                   1190:                {
                   1191:                    chaine = "+++Erreur : Erreur de représentation";
                   1192:                }
                   1193:                else
                   1194:                {
                   1195:                    chaine = "+++Error : Mapping error";
                   1196:                }
                   1197: 
                   1198:                break;
                   1199:            }
                   1200: 
                   1201:            case d_ex_erreur_profilage :
                   1202:            {
                   1203:                if ((*s_etat_processus).langue == 'F')
                   1204:                {
                   1205:                    chaine = "+++Erreur : Pile de profilage vide";
                   1206:                }
                   1207:                else
                   1208:                {
                   1209:                    chaine = "+++Error : Empty profiles stack";
                   1210:                }
                   1211: 
                   1212:                break;
                   1213:            }
                   1214: 
1.6       bertrand 1215:            case d_ex_enregistrement_inexistant :
                   1216:            {
                   1217:                if ((*s_etat_processus).langue == 'F')
                   1218:                {
                   1219:                    chaine = "+++Erreur : Enregistrement inexistant";
                   1220:                }
                   1221:                else
                   1222:                {
                   1223:                    chaine = "+++Error : Record not found";
                   1224:                }
                   1225: 
                   1226:                break;
                   1227:            }
                   1228: 
1.7       bertrand 1229:            case d_ex_clef_inexistante :
                   1230:            {
                   1231:                if ((*s_etat_processus).langue == 'F')
                   1232:                {
                   1233:                    chaine = "+++Erreur : Clef inexistante";
                   1234:                }
                   1235:                else
                   1236:                {
                   1237:                    chaine = "+++Error : Key not found";
                   1238:                }
                   1239: 
                   1240:                break;
                   1241:            }
                   1242: 
1.12      bertrand 1243:            case d_ex_nom_implicite :
                   1244:            {
                   1245:                if ((*s_etat_processus).langue == 'F')
                   1246:                {
                   1247:                    chaine = "+++Erreur : Nom implicite indéfini";
                   1248:                }
                   1249:                else
                   1250:                {
                   1251:                    chaine = "+++Error : Undefined implicit name";
                   1252:                }
                   1253: 
                   1254:                break;
                   1255:            }
                   1256: 
1.18      bertrand 1257:            case d_ex_version_bibliotheque :
                   1258:            {
                   1259:                if ((*s_etat_processus).langue == 'F')
                   1260:                {
                   1261:                    chaine = "+++Erreur : Version de bibliothèque incompatible";
                   1262:                }
                   1263:                else
                   1264:                {
                   1265:                    chaine = "+++Error : Library version mismatch";
                   1266:                }
                   1267: 
                   1268:                break;
                   1269:            }
                   1270: 
1.30      bertrand 1271:            case d_ex_creation_variable_globale :
                   1272:            {
                   1273:                if ((*s_etat_processus).langue == 'F')
                   1274:                {
                   1275:                    chaine = "+++Erreur : Création de variable globale "
                   1276:                            "impossible";
                   1277:                }
                   1278:                else
                   1279:                {
1.37      bertrand 1280:                    chaine = "+++Error : Cannot create global variable";
                   1281:                }
                   1282: 
                   1283:                break;
                   1284:            }
                   1285: 
                   1286:            case d_ex_erreur_interne_rplcas :
                   1287:            {
                   1288:                if ((*s_etat_processus).langue == 'F')
                   1289:                {
                   1290:                    chaine = "+++Erreur : Erreur interne RPL/CAS";
                   1291:                }
                   1292:                else
                   1293:                {
                   1294:                    chaine = "+++Error : Internal RPL/CAS error";
1.30      bertrand 1295:                }
                   1296: 
                   1297:                break;
                   1298:            }
                   1299: 
1.1       bertrand 1300:            case -1 : // Fonction externe
                   1301:            {
                   1302:                if ((*s_etat_processus).langue == 'F')
                   1303:                {
                   1304:                    chaine = "+++Erreur : Fonction dynamique %s (ligne %lld)";
                   1305:                    argument = (*s_etat_processus).instruction_derniere_erreur;
                   1306:                    erreur_fonction_externe = d_vrai;
                   1307:                }
                   1308:                else
                   1309:                {
                   1310:                    chaine = "+++Error : %s dynamic function (line %lld)";
                   1311:                    argument = (*s_etat_processus).instruction_derniere_erreur;
                   1312:                    erreur_fonction_externe = d_vrai;
                   1313:                }
                   1314: 
                   1315:                break;
                   1316:            }
                   1317: 
                   1318:            default :
                   1319:            {
                   1320:                if ((*s_etat_processus).langue == 'F')
                   1321:                {
                   1322:                    chaine = "+++Erreur : Erreur d'exécution";
                   1323:                }
                   1324:                else
                   1325:                {
                   1326:                    chaine = "+++Error : Execution error";
                   1327:                }
                   1328: 
                   1329:                break;
                   1330:            }
                   1331:        }
                   1332:    }
                   1333:    else if ((*s_etat_processus).erreur_systeme != d_es)
                   1334:    {
                   1335:        (*s_etat_processus).derniere_erreur_systeme =
                   1336:                (*s_etat_processus).erreur_systeme;
                   1337: 
                   1338: /*
                   1339: --------------------------------------------------------------------------------
                   1340:   Erreurs dues au système et au séquenceur
                   1341: --------------------------------------------------------------------------------
                   1342: */
                   1343: 
                   1344:        switch((*s_etat_processus).erreur_systeme)
                   1345:        {
                   1346:            case d_es_allocation_memoire :
                   1347:            {
                   1348:                if ((*s_etat_processus).langue == 'F')
                   1349:                {
                   1350:                    chaine = "+++Système : Erreur d'allocation mémoire";
                   1351:                }
                   1352:                else
                   1353:                {
                   1354:                    chaine = "+++System : Memory allocation error";
                   1355:                }
                   1356: 
                   1357:                break;
                   1358:            }
                   1359: 
                   1360:            case d_es_variable_introuvable :
                   1361:            {
                   1362:                if ((*s_etat_processus).langue == 'F')
                   1363:                {
                   1364:                    chaine = "+++Système : Variable non définie";
                   1365:                }
                   1366:                else
                   1367:                {
                   1368:                    chaine = "+++System : Undefined variable";
                   1369:                }
                   1370: 
                   1371:                break;
                   1372:            }
                   1373: 
                   1374:            case d_es_pile_vide :
                   1375:            {
                   1376:                if ((*s_etat_processus).langue == 'F')
                   1377:                {
                   1378:                    chaine = "+++Système : Pile système vide";
                   1379:                }
                   1380:                else
                   1381:                {
                   1382:                    chaine = "+++System : Empty system stack";
                   1383:                }
                   1384: 
                   1385:                break;
                   1386:            }
                   1387: 
                   1388:            case d_es_pile_operationnelle_vide :
                   1389:            {
                   1390:                if ((*s_etat_processus).langue == 'F')
                   1391:                {
                   1392:                    chaine = "+++Système : Pile vide";
                   1393:                }
                   1394:                else
                   1395:                {
                   1396:                    chaine = "+++System : Empty stack";
                   1397:                }
                   1398: 
                   1399:                break;
                   1400:            }
                   1401: 
                   1402:            case d_es_end_incoherent :
                   1403:            {
                   1404:                if ((*s_etat_processus).langue == 'F')
                   1405:                {
                   1406:                    chaine = "+++Système : Instruction END incohérente";
                   1407:                }
                   1408:                else
                   1409:                {
                   1410:                    chaine = "+++Systeme : Incoherent END instruction";
                   1411:                }
                   1412: 
                   1413:                break;
                   1414:            }
                   1415: 
                   1416:            case d_es_peripherique_stdin :
                   1417:            {
                   1418:                if ((*s_etat_processus).langue == 'F')
                   1419:                {
                   1420:                    chaine = "+++Système : Erreur de lecture sur stdin";
                   1421:                }
                   1422:                else
                   1423:                {
                   1424:                    chaine = "+++System : Read error on stdin";
                   1425:                }
                   1426: 
                   1427:                break;
                   1428:            }
                   1429: 
                   1430:            case d_es_erreur_fichier :
                   1431:            {
                   1432:                if ((*s_etat_processus).langue == 'F')
                   1433:                {
                   1434:                    chaine = "+++Système : Erreur d'entrée/sortie sur un"
                   1435:                            " fichier";
                   1436:                }
                   1437:                else
                   1438:                {
                   1439:                    chaine = "+++System : File input/output error";
                   1440:                }
                   1441: 
                   1442:                break;
                   1443:            }
                   1444: 
                   1445:            case d_es_execution_bibliotheque :
                   1446:            {
                   1447:                if ((*s_etat_processus).langue == 'F')
                   1448:                {
                   1449:                    chaine = "+++Système : Problème lors de l'exécution "
                   1450:                            "d'une fonction externe";
                   1451:                }
                   1452:                else
                   1453:                {
                   1454:                    chaine = "+++System : Extern function execution error";
                   1455:                }
                   1456: 
                   1457:                break;
                   1458:            }
                   1459: 
                   1460:            case d_es_signal :
                   1461:            {
                   1462:                if ((*s_etat_processus).langue == 'F')
                   1463:                {
                   1464:                    chaine = "+++Système : Problème de gestion de signaux "
                   1465:                            "POSIX";
                   1466:                }
                   1467:                else
                   1468:                {
                   1469:                    chaine = "+++System : POSIX signal error";
                   1470:                }
                   1471: 
                   1472:                break;
                   1473:            }
                   1474: 
                   1475:        case d_es_processus :
                   1476:        {
                   1477:                if ((*s_etat_processus).langue == 'F')
                   1478:                {
                   1479:                    chaine = "+++Système : Erreur dans la gestion des"
                   1480:                            " processus";
                   1481:                }
                   1482:                else
                   1483:                {
                   1484:                    chaine = "+++System : Process management error";
                   1485:                }
                   1486: 
                   1487:                break;
                   1488:            }
                   1489: 
                   1490:            case d_es_nombre_max_descripteurs :
                   1491:            {
                   1492:                if ((*s_etat_processus).langue == 'F')
                   1493:                {
                   1494:                    chaine = "+++Système : Nombre maximal de descripteurs"
                   1495:                            " de fichiers atteint";
                   1496:                }
                   1497:                else
                   1498:                {
                   1499:                    chaine = "+++System : Too much file descriptors";
                   1500:                }
                   1501: 
                   1502:                break;
                   1503:            }
                   1504: 
                   1505:            case d_es_interruption_invalide :
                   1506:            {
                   1507:                if ((*s_etat_processus).langue == 'F')
                   1508:                {
                   1509:                    chaine = "+++Système : Interruption invalide";
                   1510:                }
                   1511:                else
                   1512:                {
                   1513:                    chaine = "+++System : Unavailable interrupt";
                   1514:                }
                   1515: 
                   1516:                break;
                   1517:            }
                   1518: 
                   1519:            case d_es_contexte :
                   1520:            {
                   1521:                if ((*s_etat_processus).langue == 'F')
                   1522:                {
                   1523:                    chaine = "+++Système : Erreur dans la gestion des"
                   1524:                            " contextes";
                   1525:                }
                   1526:                else
                   1527:                {
                   1528:                    chaine = "+++System : Context management error";
                   1529:                }
                   1530: 
                   1531:                break;
                   1532:            }
                   1533: 
1.5       bertrand 1534:            case d_es_somme_controle :
                   1535:            {
                   1536:                if ((*s_etat_processus).langue == 'F')
                   1537:                {
                   1538:                    chaine = "+++Système : Somme de contrôle invalide";
                   1539:                }
                   1540:                else
                   1541:                {
                   1542:                    chaine = "+++System : Invalid hash sum";
                   1543:                }
                   1544: 
                   1545:                break;
                   1546:            }
                   1547: 
1.24      bertrand 1548:            case d_es_semaphore :
                   1549:            {
                   1550:                if ((*s_etat_processus).langue == 'F')
                   1551:                {
                   1552:                    chaine = "+++Système : Erreur d'accès à un sémaphore";
                   1553:                }
                   1554:                else
                   1555:                {
                   1556:                    chaine = "+++System : Semaphore access error";
                   1557:                }
                   1558: 
                   1559:                break;
                   1560:            }
                   1561: 
1.1       bertrand 1562:            case -1 : // Fonction externe
                   1563:            {
                   1564:                if ((*s_etat_processus).langue == 'F')
                   1565:                {
                   1566:                    chaine = "+++Système : Fonction dynamique %s (ligne %lld)";
                   1567:                    argument = (*s_etat_processus).instruction_derniere_erreur;
                   1568:                    erreur_fonction_externe = d_vrai;
                   1569:                }
                   1570:                else
                   1571:                {
                   1572:                    chaine = "+++System : %s dynamic function (line %lld)";
                   1573:                    argument = (*s_etat_processus).instruction_derniere_erreur;
                   1574:                    erreur_fonction_externe = d_vrai;
                   1575:                }
                   1576: 
                   1577:                break;
                   1578:            }
                   1579: 
                   1580:            default :
                   1581:            {
                   1582:                if ((*s_etat_processus).langue == 'F')
                   1583:                {
                   1584:                    chaine = "+++Système : Erreur interne";
                   1585:                }
                   1586:                else
                   1587:                {
                   1588:                    chaine = "+++System : Internal error";
                   1589:                }
                   1590: 
                   1591:                break;
                   1592:            }
                   1593:        }
                   1594:    }
                   1595:    else if ((*s_etat_processus).exception != d_ep)
                   1596:    {
                   1597:        (*s_etat_processus).derniere_exception =
                   1598:                (*s_etat_processus).exception;
                   1599: 
                   1600: /*
                   1601: --------------------------------------------------------------------------------
                   1602:   Exceptions mathématiques
                   1603: --------------------------------------------------------------------------------
                   1604: */
                   1605: 
                   1606:        switch((*s_etat_processus).exception)
                   1607:        {
                   1608:            case d_ep_division_par_zero :
                   1609:            {
                   1610:                if ((*s_etat_processus).langue == 'F')
                   1611:                {
                   1612:                    chaine = "+++Exception : Division par zéro";
                   1613:                }
                   1614:                else
                   1615:                {
                   1616:                    chaine = "+++Exception : Division by zero";
                   1617:                }
                   1618: 
                   1619:                break;
                   1620:            }
                   1621: 
                   1622:            case d_ep_matrice_non_inversible :
                   1623:            {
                   1624:                if ((*s_etat_processus).langue == 'F')
                   1625:                {
                   1626:                    chaine = "+++Exception : Matrice non inversible";
                   1627:                }
                   1628:                else
                   1629:                {
                   1630:                    chaine = "+++Exception : Non inversible matrix";
                   1631:                }
                   1632: 
                   1633:                break;
                   1634:            }
                   1635: 
                   1636:            case d_ep_resultat_indefini :
                   1637:            {
                   1638:                if ((*s_etat_processus).langue == 'F')
                   1639:                {
                   1640:                    chaine = "+++Exception : Résultat indéfini";
                   1641:                }
                   1642:                else
                   1643:                {
                   1644:                    chaine = "+++Exception : Undefined result";
                   1645:                }
                   1646: 
                   1647:                break;
                   1648:            }
                   1649: 
                   1650:            case d_ep_underflow :
                   1651:            {
                   1652:                if ((*s_etat_processus).langue == 'F')
                   1653:                {
                   1654:                    chaine = "+++Exception : Dépassement de capacité"
                   1655:                            " (underflow)";
                   1656:                }
                   1657:                else
                   1658:                {
                   1659:                    chaine = "+++Exception : Underflow exception";
                   1660:                }
                   1661: 
                   1662:                break;
                   1663:            }
                   1664: 
                   1665:            case d_ep_overflow :
                   1666:            {
                   1667:                if ((*s_etat_processus).langue == 'F')
                   1668:                {
                   1669:                    chaine = "+++Exception : Dépassement de capacité"
                   1670:                            " (overflow)";
                   1671:                }
                   1672:                else
                   1673:                {
                   1674:                    chaine = "+++Exception : Overflow exception";
                   1675:                }
                   1676: 
                   1677:                break;
                   1678:            }
                   1679: 
                   1680:            case d_ep_domaine_definition :
                   1681:            {
                   1682:                if ((*s_etat_processus).langue == 'F')
                   1683:                {
                   1684:                    chaine = "+++Exception : Domaine de définition";
                   1685:                }
                   1686:                else
                   1687:                {
                   1688:                    chaine = "+++Exception : Domain exception";
                   1689:                }
                   1690: 
                   1691:                break;
                   1692:            }
                   1693: 
                   1694:            case d_ep_perte_precision :
                   1695:            {
                   1696:                if ((*s_etat_processus).langue == 'F')
                   1697:                {
                   1698:                    chaine = "+++Exception : Perte de précision";
                   1699:                }
                   1700:                else
                   1701:                {
                   1702:                    chaine = "+++Exception : Loss of precision";
                   1703:                }
                   1704: 
                   1705:                break;
                   1706:            }
                   1707: 
                   1708:            case d_ep_decomposition_QR :
                   1709:            {
                   1710:                if ((*s_etat_processus).langue == 'F')
                   1711:                {
                   1712:                    chaine = "+++Exception : Décomposition QR impossible";
                   1713:                }
                   1714:                else
                   1715:                {
                   1716:                    chaine = "+++Exception : QR decomposition failed";
                   1717:                }
                   1718: 
                   1719:                break;
                   1720:            }
                   1721: 
                   1722:            case d_ep_matrice_non_definie_positive :
                   1723:            {
                   1724:                if ((*s_etat_processus).langue == 'F')
                   1725:                {
                   1726:                    chaine = "+++Exception : Matrice non définie positive";
                   1727:                }
                   1728:                else
                   1729:                {
                   1730:                    chaine = "+++Exception : Non positive defined matrix";
                   1731:                }
                   1732: 
                   1733:                break;
                   1734:            }
                   1735: 
                   1736:            case d_ep_decomposition_QZ :
                   1737:            {
                   1738:                if ((*s_etat_processus).langue == 'F')
                   1739:                {
                   1740:                    chaine = "+++Exception : Décomposition QZ impossible";
                   1741:                }
                   1742:                else
                   1743:                {
                   1744:                    chaine = "+++Exception : QZ decomposition failed";
                   1745:                }
                   1746: 
                   1747:                break;
                   1748:            }
                   1749: 
                   1750:            case d_ep_decomposition_SVD :
                   1751:            {
                   1752:                if ((*s_etat_processus).langue == 'F')
                   1753:                {
                   1754:                    chaine = "+++Exception : Décomposition SVD impossible";
                   1755:                }
                   1756:                else
                   1757:                {
                   1758:                    chaine = "+++Exception : SVD decomposition failed";
                   1759:                }
                   1760: 
                   1761:                break;
                   1762:            }
                   1763: 
                   1764:            default :
                   1765:            {
                   1766:                if ((*s_etat_processus).langue == 'F')
                   1767:                {
                   1768:                    chaine = "+++Exception : Exception mathématique";
                   1769:                }
                   1770:                else
                   1771:                {
                   1772:                    chaine = "+++Exception : Mathematical exception";
                   1773:                }
                   1774: 
                   1775:                break;
                   1776:            }
                   1777:        }
                   1778:    }
                   1779:    else if ((*s_etat_processus).erreur_compilation != d_ec)
                   1780:    {
                   1781: 
                   1782: /*
                   1783: --------------------------------------------------------------------------------
                   1784:   Erreurs de compilation
                   1785: --------------------------------------------------------------------------------
                   1786: */
                   1787: 
                   1788:        switch((*s_etat_processus).erreur_compilation)
                   1789:        {
                   1790:            case d_ec_niveau_definition_negatif :
                   1791:            {
                   1792:                if ((*s_etat_processus).langue == 'F')
                   1793:                {
                   1794:                    chaine = "+++Fatal : Niveau de définition négatif";
                   1795:                }
                   1796:                else
                   1797:                {
                   1798:                    chaine = "+++Fatal : Negative definition level";
                   1799:                }
                   1800: 
                   1801:                break;
                   1802:            }
                   1803: 
                   1804:            case d_ec_nom_definition_invalide :
                   1805:            {
                   1806:                if ((*s_etat_processus).langue == 'F')
                   1807:                {
                   1808:                    chaine = "+++Fatal : Nom de définition invalide";
                   1809:                }
                   1810:                else
                   1811:                {
                   1812:                    chaine = "+++Fatal : Invalid definition name";
                   1813:                }
                   1814: 
                   1815:                break;
                   1816:            }
                   1817: 
                   1818:            case d_ec_erreur_boucle_definie :
                   1819:            {
                   1820:                if ((*s_etat_processus).langue == 'F')
                   1821:                {
                   1822:                    chaine = "+++Fatal : Définition illégale "
                   1823:                            "d'une boucle définie";
                   1824:                }
                   1825:                else
                   1826:                {
                   1827:                    chaine = "+++Fatal : Illegal use of a defined loop";
                   1828:                }
                   1829: 
                   1830:                break;
                   1831:            }
                   1832: 
                   1833:            case d_ec_erreur_instruction_end :
                   1834:            {
                   1835:                if ((*s_etat_processus).langue == 'F')
                   1836:                {
                   1837:                    chaine = "+++Fatal : Erreur dans une structure terminée "
                   1838:                            "par l'instruction END";
                   1839:                }
                   1840:                else
                   1841:                {
                   1842:                    chaine = "+++Fatal : Error in an END-closed structure";
                   1843:                }
                   1844: 
                   1845:                break;
                   1846:            }
                   1847: 
                   1848:            case d_ec_erreur_instruction_until :
                   1849:            {
                   1850:                if ((*s_etat_processus).langue == 'F')
                   1851:                {
                   1852:                    chaine = "+++Fatal : Erreur dans une boucle DO/UNTIL/END";
                   1853:                }
                   1854:                else
                   1855:                {
                   1856:                    chaine = "+++Fatal : Error in a DO/UNTIL/END loop";
                   1857:                }
                   1858: 
                   1859:                break;
                   1860:            }
                   1861: 
                   1862:            case d_ec_source_incoherent :
                   1863:            {
                   1864:                if ((*s_etat_processus).langue == 'F')
                   1865:                {
                   1866:                    chaine = "+++Fatal : Définitions incohérentes";
                   1867:                }
                   1868:                else
                   1869:                {
                   1870:                    chaine = "+++Fatal : Incoherent definitions";
                   1871:                }
                   1872: 
                   1873:                break;
                   1874:            }
                   1875: 
                   1876:            case d_ec_erreur_instruction_while :
                   1877:            {
                   1878:                if ((*s_etat_processus).langue == 'F')
                   1879:                {
                   1880:                    chaine = "+++Fatal : Erreur dans une boucle WHILE/REPEAT/"
                   1881:                            "END";
                   1882:                }
                   1883:                else
                   1884:                {
                   1885:                    chaine = "+++Fatal : Error in a WHILE/REPEAT/END loop";
                   1886:                }
                   1887: 
                   1888:                break;
                   1889:            }
                   1890: 
                   1891:            case d_ec_erreur_instruction_select :
                   1892:            {
                   1893:                if ((*s_etat_processus).langue == 'F')
                   1894:                {
                   1895:                    chaine = "+++Fatal : Erreur dans une structure SELECT"
                   1896:                            "/DEFAULT/END";
                   1897:                }
                   1898:                else
                   1899:                {
                   1900:                    chaine = "+++Fatal : Error in a SELECT/DEFAULT/END "
                   1901:                            "structure";
                   1902:                }
                   1903: 
                   1904:                break;
                   1905:            }
                   1906: 
                   1907:            case d_ec_erreur_instruction_case :
                   1908:            {
                   1909:                if ((*s_etat_processus).langue == 'F')
                   1910:                {
                   1911:                    chaine = "+++Fatal : Erreur dans une structure CASE"
                   1912:                            "/THEN/END";
                   1913:                }
                   1914:                else
                   1915:                {
                   1916:                    chaine = "+++Fatal : Error in a CASE/THEN/END "
                   1917:                            "structure";
                   1918:                }
                   1919: 
                   1920:                break;
                   1921:            }
                   1922: 
                   1923:            case d_ec_erreur_instruction_then :
                   1924:            {
                   1925:                if ((*s_etat_processus).langue == 'F')
                   1926:                {
                   1927:                    chaine = "+++Fatal : Erreur dans une structure IF, "
                   1928:                            "IFERR ou CASE/THEN/END";
                   1929:                }
                   1930:                else
                   1931:                {
                   1932:                    chaine = "+++Fatal : Error in a IF, IFERR or "
                   1933:                            "CASE/THEN/END structure";
                   1934:                }
                   1935: 
                   1936:                break;
                   1937:            }
                   1938: 
                   1939:            case d_ec_erreur_instruction_else :
                   1940:            {
                   1941:                if ((*s_etat_processus).langue == 'F')
                   1942:                {
                   1943:                    chaine = "+++Fatal : Erreur dans une structure ELSE";
                   1944:                }
                   1945:                else
                   1946:                {
                   1947:                    chaine = "+++Fatal : Error in a ELSE structure";
                   1948:                }
                   1949: 
                   1950:                break;
                   1951:            }
                   1952: 
                   1953:            case d_ec_erreur_instruction_elseif :
                   1954:            {
                   1955:                if ((*s_etat_processus).langue == 'F')
                   1956:                {
                   1957:                    chaine = "+++Fatal : Erreur dans une structure ELSEIF";
                   1958:                }
                   1959:                else
                   1960:                {
                   1961:                    chaine = "+++Fatal : Error in a ELSEIF structure";
                   1962:                }
                   1963: 
                   1964:                break;
                   1965:            }
                   1966: 
                   1967:            default :
                   1968:            {
                   1969:                if ((*s_etat_processus).langue == 'F')
                   1970:                {
                   1971:                    chaine = "+++Fatal : Erreur de compilation";
                   1972:                }
                   1973:                else
                   1974:                {
                   1975:                    chaine = "+++Fatal : compilation error";
                   1976:                }
                   1977: 
                   1978:                break;
                   1979:            }
                   1980:        }
                   1981:    }
                   1982:    else
                   1983:    {
                   1984:        if ((*s_etat_processus).langue == 'F')
                   1985:        {
                   1986:            chaine = "";
                   1987:        }
                   1988:        else
                   1989:        {
                   1990:            chaine = "";
                   1991:        }
                   1992:    }
                   1993: 
                   1994:    if (argument == NULL)
                   1995:    {
                   1996:        if ((message = malloc((strlen(chaine) + 1) * sizeof(unsigned char)))
                   1997:                == NULL)
                   1998:        {
                   1999:            (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
                   2000:            return NULL;
                   2001:        }
                   2002: 
                   2003:        strcpy(message, chaine);
                   2004:    }
                   2005:    else
                   2006:    {
                   2007:        if (erreur_fonction_externe == d_faux)
                   2008:        {
                   2009:            if ((message = malloc((strlen(chaine) + strlen(argument) - 1) *
                   2010:                    sizeof(unsigned char))) == NULL)
                   2011:            {
                   2012:                (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
                   2013:                return NULL;
                   2014:            }
                   2015: 
                   2016:            sprintf(message, chaine, argument);
                   2017:        }
                   2018:        else
                   2019:        {
                   2020:            if ((message = malloc((strlen(chaine) + strlen(argument) + 64
                   2021:                    - 1) * sizeof(unsigned char))) == NULL)
                   2022:            {
                   2023:                (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
                   2024:                return NULL;
                   2025:            }
                   2026: 
                   2027:            sprintf(message, chaine, argument,
                   2028:                    (*s_etat_processus).derniere_erreur_fonction_externe);
                   2029:        }
                   2030:    }
                   2031: 
                   2032:    return(message);
                   2033: }
                   2034: 
                   2035: // vim: ts=4

CVSweb interface <joel.bertrand@systella.fr>