Annotation of rpl/src/formateur_fichiers.c, revision 1.1

1.1     ! bertrand    1: /*
        !             2: ================================================================================
        !             3:   RPL/2 (R) version 4.0.9
        !             4:   Copyright (C) 1989-2010 Dr. BERTRAND Joël
        !             5: 
        !             6:   This file is part of RPL/2.
        !             7: 
        !             8:   RPL/2 is free software; you can redistribute it and/or modify it
        !             9:   under the terms of the CeCILL V2 License as published by the french
        !            10:   CEA, CNRS and INRIA.
        !            11:  
        !            12:   RPL/2 is distributed in the hope that it will be useful, but WITHOUT
        !            13:   ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
        !            14:   FITNESS FOR A PARTICULAR PURPOSE.  See the CeCILL V2 License
        !            15:   for more details.
        !            16:  
        !            17:   You should have received a copy of the CeCILL License
        !            18:   along with RPL/2. If not, write to info@cecill.info.
        !            19: ================================================================================
        !            20: */
        !            21: 
        !            22: 
        !            23: #include "rpl.conv.h"
        !            24: 
        !            25: 
        !            26: /*
        !            27: ================================================================================
        !            28:   Routine de formation des données pour l'écriture dans les fichiers
        !            29: ================================================================================
        !            30:   Entrées : structure sur l'état du processus et objet à afficher
        !            31:   Longueur est la précision requise et longueur_champ, le nombre maximal
        !            32:   de caractères de la chaîne résultat (-1 signifiant une absence de contrainte)
        !            33:   Type = 'F/U'
        !            34: --------------------------------------------------------------------------------
        !            35:   Sorties : chaine de caractères et longueur du tableau de caractères
        !            36: --------------------------------------------------------------------------------
        !            37:   Effets de bord : néant
        !            38: ================================================================================
        !            39: */
        !            40: 
        !            41: unsigned char *
        !            42: formateur_fichier(struct_processus *s_etat_processus, struct_objet *s_objet,
        !            43:        struct_objet *s_format, long longueur, long longueur_champ,
        !            44:        unsigned char format_sortie, unsigned char type,
        !            45:        long *longueur_effective, long *recursivite)
        !            46: {
        !            47:    /*
        !            48:     * Traitement du format des fichiers formatés :
        !            49:     *
        !            50:     * { "standard*(*)" (format classique sans limitation)
        !            51:     *   "standard*(Y)" (format classique limité à Y caractères)
        !            52:     *   "fixed*X(*)"   (format virgule fixe avec une partie
        !            53:     *                   fractionnaire composée de X chiffres,
        !            54:     *                   mais dont la longueur est limité par
        !            55:     *                   la précision de la représentation interne)
        !            56:     *   "fixed*X(Y)"   (idem, mais longueur totale inférieure ou égale à
        !            57:     *                   Y caractères)
        !            58:     *   "scientific*X(*)"
        !            59:     *   "scientific*X(Y)"
        !            60:     *   "engineer*X(*)"
        !            61:     *   "engineer*X(Y)"
        !            62:     *   "binary*X(*)"
        !            63:     *   "binary*X(Y)"  (X est la base : 2, 8, 10, 16)
        !            64:     *   "character*(*)"
        !            65:     *   "character*(Y)" }
        !            66:     *
        !            67:     * Traitement du format des fichiers non formatés :
        !            68:     *
        !            69:     * { "integer*1", "integer*2", "integer*4", "integer*8",
        !            70:     *   "real*4", "real*8", ["real*16",]
        !            71:     *   "complex*8", "complex*16", ["complex*32",]
        !            72:     *   "logical*1", "logical*2", "logical*4", logical*8",
        !            73:     *   "character" }
        !            74:     */
        !            75: 
        !            76:    logical1                    autorisation_parenthese;
        !            77:    logical1                    format_degenere;
        !            78:    logical1                    longueur_3bits;
        !            79:    logical1                    longueur_6bits;
        !            80:    logical1                    presence_signe;
        !            81: 
        !            82:    struct_liste_chainee        *l_atome;
        !            83:    struct_liste_chainee        *l_element_courant;
        !            84:    struct_liste_chainee        *l_element_courant_format;
        !            85:    struct_liste_chainee        *l_liste1;
        !            86:    struct_liste_chainee        *l_liste2;
        !            87: 
        !            88:    struct_objet                *s_sous_objet;
        !            89:    struct_objet                *s_sous_objet_1;
        !            90:    struct_objet                *s_sous_objet_2;
        !            91:    struct_objet                *s_sous_objet_3;
        !            92: 
        !            93:    unsigned char               base[1 + 1];
        !            94:    unsigned char               *chaine;
        !            95:    unsigned char               *chaine_fonction;
        !            96:    unsigned char               *chaine_formatee;
        !            97:    unsigned char               *chaine_tampon;
        !            98:    unsigned char               *chaine_sauvegarde;
        !            99:    unsigned char               *format_chaine;
        !           100:    unsigned char               longueur_optimale;
        !           101:    unsigned char               parametre_longueur;
        !           102:    unsigned char               *ptre;
        !           103:    unsigned char               *ptrl;
        !           104:    unsigned char               tampon[64 + 1];
        !           105: 
        !           106:    unsigned long               i;
        !           107:    unsigned long               j;
        !           108:    unsigned long               longueur_binaire;
        !           109:    unsigned long               longueur_champ_final;
        !           110:    unsigned long               nombre_arguments;
        !           111:    unsigned long               nombre_arguments_fonction;
        !           112:    unsigned long               nombre_colonnes;
        !           113:    unsigned long               nombre_elements;
        !           114:    unsigned long               nombre_lignes;
        !           115: 
        !           116:    integer8                    longueur_liste;
        !           117:    integer8                    longueur_entete;
        !           118:    integer8                    longueur_objet;
        !           119:    integer8                    longueur_totale;
        !           120:    integer8                    masque_binaire;
        !           121:    integer8                    position_1;
        !           122:    integer8                    position_2;
        !           123:    integer8                    position_3;
        !           124: 
        !           125:    long                        offset;
        !           126: 
        !           127:    (*recursivite)++;
        !           128: 
        !           129:    if (type == 'F')
        !           130:    {
        !           131:        /*
        !           132:         * Fichiers formatés
        !           133:         */
        !           134: 
        !           135:        chaine = NULL;
        !           136:        chaine_formatee = NULL;
        !           137:        chaine_sauvegarde = NULL;
        !           138: 
        !           139:        strcpy(base, " ");
        !           140: 
        !           141:        longueur_binaire = 0;
        !           142:        masque_binaire = 0;
        !           143: 
        !           144:        if ((*s_objet).type == ALG)
        !           145:        {
        !           146: 
        !           147: /*
        !           148: --------------------------------------------------------------------------------
        !           149:   Expression algébrique
        !           150: --------------------------------------------------------------------------------
        !           151: */
        !           152: 
        !           153:            l_element_courant = (struct_liste_chainee *) (*s_objet).objet;
        !           154: 
        !           155:            while(l_element_courant != NULL)
        !           156:            {
        !           157:                if ((*(*l_element_courant).donnee).type == FCT)
        !           158:                {
        !           159:                    if ((strcmp((*((struct_fonction *) (*(*l_element_courant)
        !           160:                            .donnee).objet)).nom_fonction, "<<") != 0) &&
        !           161:                            (strcmp((*((struct_fonction *)
        !           162:                            (*(*l_element_courant)
        !           163:                            .donnee).objet)).nom_fonction, ">>") != 0))
        !           164:                    {
        !           165:                        if ((strcmp((*((struct_fonction *)
        !           166:                                (*(*l_element_courant)
        !           167:                                .donnee).objet)).nom_fonction, "+") == 0) ||
        !           168:                                (strcmp((*((struct_fonction *)
        !           169:                                (*(*l_element_courant).donnee).objet))
        !           170:                                .nom_fonction, "-") == 0) || (strcmp(
        !           171:                                (*((struct_fonction *) (*(*l_element_courant)
        !           172:                                .donnee).objet)).nom_fonction, "*") == 0) ||
        !           173:                                (strcmp((*((struct_fonction *)
        !           174:                                (*(*l_element_courant).donnee).objet))
        !           175:                                .nom_fonction,
        !           176:                                "/") == 0) || (strcmp((*((struct_fonction *)
        !           177:                                (*(*l_element_courant).donnee).objet))
        !           178:                                .nom_fonction,
        !           179:                                "^") == 0) || (strcmp((*((struct_fonction *)
        !           180:                                (*(*l_element_courant).donnee).objet))
        !           181:                                .nom_fonction,
        !           182:                                "<") == 0) || (strcmp((*((struct_fonction *)
        !           183:                                (*(*l_element_courant).donnee).objet))
        !           184:                                .nom_fonction,
        !           185:                                ">") == 0) || (strcmp((*((struct_fonction *)
        !           186:                                (*(*l_element_courant).donnee).objet))
        !           187:                                .nom_fonction,
        !           188:                                "==") == 0) || (strcmp((*((struct_fonction *)
        !           189:                                (*(*l_element_courant).donnee).objet))
        !           190:                                .nom_fonction,
        !           191:                                "<>") == 0) || (strcmp((*((struct_fonction *)
        !           192:                                (*(*l_element_courant).donnee).objet))
        !           193:                                .nom_fonction,
        !           194:                                "<=") == 0) || (strcmp((*((struct_fonction *)
        !           195:                                (*(*l_element_courant).donnee).objet))
        !           196:                                .nom_fonction,
        !           197:                                "=<") == 0) || (strcmp((*((struct_fonction *)
        !           198:                                (*(*l_element_courant).donnee).objet))
        !           199:                                .nom_fonction,
        !           200:                                ">=") == 0) || (strcmp((*((struct_fonction *)
        !           201:                                (*(*l_element_courant).donnee).objet))
        !           202:                                .nom_fonction,
        !           203:                                "=>") == 0))
        !           204:                        {
        !           205:                            if (depilement(s_etat_processus,
        !           206:                                    &((*s_etat_processus)
        !           207:                                    .l_base_pile), &s_sous_objet_2) == d_erreur)
        !           208:                            {
        !           209:                                return(NULL);
        !           210:                            }
        !           211: 
        !           212:                            chaine_sauvegarde = (*s_etat_processus)
        !           213:                                    .instruction_courante;
        !           214: 
        !           215:                            if (((*s_etat_processus).instruction_courante =
        !           216:                                    (unsigned char *) malloc((strlen(
        !           217:                                    (unsigned char *) (*s_sous_objet_2).objet)
        !           218:                                    + 2 + 1) * sizeof(unsigned char))) == NULL)
        !           219:                            {
        !           220:                                (*s_etat_processus).instruction_courante =
        !           221:                                        chaine_sauvegarde;
        !           222:                                (*s_etat_processus).erreur_systeme =
        !           223:                                        d_es_allocation_memoire;
        !           224:                                return(NULL);
        !           225:                            }
        !           226: 
        !           227:                            sprintf((*s_etat_processus).instruction_courante,
        !           228:                                    "'%s'", (unsigned char *)
        !           229:                                    (*s_sous_objet_2).objet);
        !           230: 
        !           231:                            presence_signe = (((*s_etat_processus)
        !           232:                                    .instruction_courante[1] == '+')
        !           233:                                    || ((*s_etat_processus)
        !           234:                                    .instruction_courante[1]
        !           235:                                    == '-')) ? d_vrai : d_faux;
        !           236: 
        !           237:                            recherche_type(s_etat_processus);
        !           238: 
        !           239:                            if ((*s_etat_processus).erreur_execution != d_ex)
        !           240:                            {
        !           241:                                // Aucune erreur ne peut être renvoyée.
        !           242: 
        !           243:                                return(NULL);
        !           244:                            }
        !           245: 
        !           246:                            if (depilement(s_etat_processus,
        !           247:                                    &((*s_etat_processus)
        !           248:                                    .l_base_pile), &s_sous_objet_3) == d_erreur)
        !           249:                            {
        !           250:                                return(NULL);
        !           251:                            }
        !           252: 
        !           253:                            free((*s_etat_processus).instruction_courante);
        !           254: 
        !           255:                            (*s_etat_processus).instruction_courante =
        !           256:                                    chaine_sauvegarde;
        !           257: 
        !           258:                            autorisation_parenthese = d_faux;
        !           259: 
        !           260:                            if ((*s_sous_objet_3).type == ALG)
        !           261:                            {
        !           262:                                l_atome = (struct_liste_chainee *)
        !           263:                                        (*s_sous_objet_3).objet;
        !           264:                                chaine_fonction = "";
        !           265:                                nombre_arguments_fonction = 0;
        !           266: 
        !           267:                                while(l_atome != NULL)
        !           268:                                {
        !           269:                                    if ((*(*l_atome).donnee).type == FCT)
        !           270:                                    {
        !           271:                                        if (strcmp((*((struct_fonction *)
        !           272:                                                (*(*l_atome).donnee).objet))
        !           273:                                                .nom_fonction, ">>") != 0)
        !           274:                                        {
        !           275:                                            chaine_fonction =
        !           276:                                                    (*((struct_fonction *)
        !           277:                                                    (*(*l_atome).donnee).objet))
        !           278:                                                    .nom_fonction;
        !           279:                                            nombre_arguments_fonction =
        !           280:                                                    (*((struct_fonction *)
        !           281:                                                    (*(*l_atome).donnee).objet))
        !           282:                                                    .nombre_arguments;
        !           283:                                        }
        !           284:                                    }
        !           285: 
        !           286:                                    l_atome = (*l_atome).suivant;
        !           287:                                }
        !           288: 
        !           289:                                if (strcmp((*((struct_fonction *)
        !           290:                                        (*(*l_element_courant).donnee).objet))
        !           291:                                        .nom_fonction, "+") == 0)
        !           292:                                {
        !           293:                                    if ((strcmp(chaine_fonction, "AND") == 0) ||
        !           294:                                            (strcmp(chaine_fonction, "XOR") ==
        !           295:                                            0) || (strcmp(chaine_fonction, "OR")
        !           296:                                            == 0))
        !           297:                                    {
        !           298:                                        autorisation_parenthese = d_vrai;
        !           299:                                    }
        !           300:                                }
        !           301:                                else if (strcmp((*((struct_fonction *)
        !           302:                                        (*(*l_element_courant).donnee).objet))
        !           303:                                        .nom_fonction, "-") == 0)
        !           304:                                {
        !           305:                                    if (nombre_arguments_fonction != 0)
        !           306:                                    {
        !           307:                                        autorisation_parenthese = d_faux;
        !           308:                                    }
        !           309:                                    else
        !           310:                                    {
        !           311:                                        autorisation_parenthese = d_vrai;
        !           312:                                    }
        !           313:                                }
        !           314:                                else if (strcmp((*((struct_fonction *)
        !           315:                                        (*(*l_element_courant).donnee).objet))
        !           316:                                        .nom_fonction, "*") == 0)
        !           317:                                {
        !           318:                                    if ((strcmp(chaine_fonction, "+") == 0) ||
        !           319:                                            (strcmp(chaine_fonction, "-") == 0)
        !           320:                                            || (strcmp(chaine_fonction, "AND")
        !           321:                                            == 0) || (strcmp(chaine_fonction,
        !           322:                                            "XOR") == 0) || (strcmp(
        !           323:                                            chaine_fonction, "OR") == 0))
        !           324:                                    {
        !           325:                                        autorisation_parenthese = d_vrai;
        !           326:                                    }
        !           327:                                }
        !           328:                                else if (strcmp((*((struct_fonction *)
        !           329:                                        (*(*l_element_courant).donnee).objet))
        !           330:                                        .nom_fonction, "/") == 0)
        !           331:                                {
        !           332:                                    if (nombre_arguments_fonction != 0)
        !           333:                                    {
        !           334:                                        autorisation_parenthese = d_faux;
        !           335:                                    }
        !           336:                                    else
        !           337:                                    {
        !           338:                                        autorisation_parenthese = d_vrai;
        !           339:                                    }
        !           340:                                }
        !           341:                                else if ((strcmp((*((struct_fonction *)
        !           342:                                        (*(*l_element_courant).donnee).objet))
        !           343:                                        .nom_fonction, "^") == 0))
        !           344:                                {
        !           345:                                    if (nombre_arguments_fonction != 0)
        !           346:                                    {
        !           347:                                        autorisation_parenthese = d_faux;
        !           348:                                    }
        !           349:                                    else
        !           350:                                    {
        !           351:                                        autorisation_parenthese = d_vrai;
        !           352:                                    }
        !           353:                                }
        !           354:                            }
        !           355: 
        !           356:                            if ((autorisation_parenthese == d_vrai) ||
        !           357:                                    (presence_signe == d_vrai))
        !           358:                            {
        !           359:                                chaine_sauvegarde = (unsigned char *)
        !           360:                                        (*s_sous_objet_2).objet;
        !           361: 
        !           362:                                if (((*s_sous_objet_2).objet = (void *)
        !           363:                                        malloc((strlen(chaine_sauvegarde) + 2
        !           364:                                        + 1) * sizeof(unsigned char))) == NULL)
        !           365:                                {
        !           366:                                    (*s_etat_processus).erreur_systeme =
        !           367:                                            d_es_allocation_memoire;
        !           368:                                    return(NULL);
        !           369:                                }
        !           370: 
        !           371:                                sprintf((unsigned char *) (*s_sous_objet_2)
        !           372:                                        .objet, "(%s)", chaine_sauvegarde);
        !           373:                                free(chaine_sauvegarde);
        !           374:                            }
        !           375: 
        !           376:                            liberation(s_etat_processus, s_sous_objet_3);
        !           377: 
        !           378:                            if (depilement(s_etat_processus,
        !           379:                                    &((*s_etat_processus)
        !           380:                                    .l_base_pile), &s_sous_objet_1) == d_erreur)
        !           381:                            {
        !           382:                                return(NULL);
        !           383:                            }
        !           384: 
        !           385:                            chaine_sauvegarde = (*s_etat_processus)
        !           386:                                    .instruction_courante;
        !           387: 
        !           388:                            if (((*s_etat_processus).instruction_courante =
        !           389:                                    (unsigned char *) malloc((strlen(
        !           390:                                    (unsigned char *) (*s_sous_objet_1).objet)
        !           391:                                    + 2 + 1) * sizeof(unsigned char))) == NULL)
        !           392:                            {
        !           393:                                (*s_etat_processus).instruction_courante =
        !           394:                                        chaine_sauvegarde;
        !           395:                                (*s_etat_processus).erreur_systeme =
        !           396:                                        d_es_allocation_memoire;
        !           397:                                return(NULL);
        !           398:                            }
        !           399: 
        !           400:                            sprintf((*s_etat_processus).instruction_courante,
        !           401:                                    "'%s'", (unsigned char *)
        !           402:                                    (*s_sous_objet_1).objet);
        !           403: 
        !           404:                            recherche_type(s_etat_processus);
        !           405: 
        !           406:                            if ((*s_etat_processus).erreur_execution != d_ex)
        !           407:                            {
        !           408:                                // Aucune erreur ne peut être renvoyée.
        !           409: 
        !           410:                                return(NULL);
        !           411:                            }
        !           412: 
        !           413:                            if (depilement(s_etat_processus,
        !           414:                                    &((*s_etat_processus)
        !           415:                                    .l_base_pile), &s_sous_objet_3) == d_erreur)
        !           416:                            {
        !           417:                                return(NULL);
        !           418:                            }
        !           419: 
        !           420:                            free((*s_etat_processus).instruction_courante);
        !           421: 
        !           422:                            (*s_etat_processus).instruction_courante =
        !           423:                                    chaine_sauvegarde;
        !           424: 
        !           425:                            autorisation_parenthese = d_faux;
        !           426: 
        !           427:                            if ((*s_sous_objet_3).type == ALG)
        !           428:                            {
        !           429:                                l_atome = (struct_liste_chainee *)
        !           430:                                        (*s_sous_objet_3).objet;
        !           431:                                chaine_fonction = "";
        !           432: 
        !           433:                                while(l_atome != NULL)
        !           434:                                {
        !           435:                                    if ((*(*l_atome).donnee).type == FCT)
        !           436:                                    {
        !           437:                                        if (strcmp((*((struct_fonction *)
        !           438:                                                (*(*l_atome).donnee).objet))
        !           439:                                                .nom_fonction, ">>") != 0)
        !           440:                                        {
        !           441:                                            chaine_fonction =
        !           442:                                                    (*((struct_fonction *)
        !           443:                                                    (*(*l_atome).donnee).objet))
        !           444:                                                    .nom_fonction;
        !           445:                                        }
        !           446:                                    }
        !           447: 
        !           448:                                    l_atome = (*l_atome).suivant;
        !           449:                                }
        !           450: 
        !           451:                                if ((strcmp((*((struct_fonction *)
        !           452:                                        (*(*l_element_courant).donnee).objet))
        !           453:                                        .nom_fonction, "+") == 0) ||
        !           454:                                        (strcmp((*((struct_fonction *)
        !           455:                                        (*(*l_element_courant).donnee).objet))
        !           456:                                        .nom_fonction, "-") == 0))
        !           457:                                {
        !           458:                                    if ((strcmp(chaine_fonction, "AND") == 0) ||
        !           459:                                            (strcmp(chaine_fonction, "XOR") ==
        !           460:                                            0) || (strcmp(chaine_fonction, "OR")
        !           461:                                            == 0))
        !           462:                                    {
        !           463:                                        autorisation_parenthese = d_vrai;
        !           464:                                    }
        !           465:                                }
        !           466:                                else if ((strcmp((*((struct_fonction *)
        !           467:                                        (*(*l_element_courant).donnee).objet))
        !           468:                                        .nom_fonction, "*") == 0) ||
        !           469:                                        (strcmp((*((struct_fonction *)
        !           470:                                        (*(*l_element_courant).donnee).objet))
        !           471:                                        .nom_fonction, "/") == 0))
        !           472:                                {
        !           473:                                    if ((strcmp(chaine_fonction, "+") == 0) ||
        !           474:                                            (strcmp(chaine_fonction, "-") == 0)
        !           475:                                            || (strcmp(chaine_fonction, "AND")
        !           476:                                            == 0) || (strcmp(chaine_fonction,
        !           477:                                            "XOR") == 0) || (strcmp(
        !           478:                                            chaine_fonction, "OR") == 0))
        !           479:                                    {
        !           480:                                        autorisation_parenthese = d_vrai;
        !           481:                                    }
        !           482:                                }
        !           483:                                else if ((strcmp((*((struct_fonction *)
        !           484:                                        (*(*l_element_courant).donnee).objet))
        !           485:                                        .nom_fonction, "^") == 0))
        !           486:                                {
        !           487:                                    autorisation_parenthese = d_vrai;
        !           488:                                }
        !           489:                            }
        !           490: 
        !           491:                            if (autorisation_parenthese == d_vrai)
        !           492:                            {
        !           493:                                chaine_sauvegarde = (unsigned char *)
        !           494:                                        (*s_sous_objet_1).objet;
        !           495: 
        !           496:                                if (((*s_sous_objet_1).objet = (void *)
        !           497:                                        malloc((strlen(chaine_sauvegarde) + 2
        !           498:                                        + 1) * sizeof(unsigned char))) == NULL)
        !           499:                                {
        !           500:                                    (*s_etat_processus).erreur_systeme =
        !           501:                                            d_es_allocation_memoire;
        !           502:                                    return(NULL);
        !           503:                                }
        !           504: 
        !           505:                                sprintf((unsigned char *) (*s_sous_objet_1)
        !           506:                                        .objet, "(%s)", chaine_sauvegarde);
        !           507:                                free(chaine_sauvegarde);
        !           508:                            }
        !           509: 
        !           510:                            liberation(s_etat_processus, s_sous_objet_3);
        !           511: 
        !           512:                            if ((s_sous_objet = allocation(s_etat_processus,
        !           513:                                    CHN)) == NULL)
        !           514:                            {
        !           515:                                (*s_etat_processus).erreur_systeme =
        !           516:                                        d_es_allocation_memoire;
        !           517:                                return(NULL);
        !           518:                            }
        !           519: 
        !           520:                            if (((*s_sous_objet).objet = (void *)
        !           521:                                    malloc((strlen(
        !           522:                                    (unsigned char *) (*s_sous_objet_1).objet) +
        !           523:                                    strlen((*((struct_fonction *)
        !           524:                                    (*(*l_element_courant).donnee).objet))
        !           525:                                    .nom_fonction) + strlen((unsigned char *)
        !           526:                                    (*s_sous_objet_2).objet) + 1) *
        !           527:                                    sizeof(unsigned char))) == NULL)
        !           528:                            {
        !           529:                                (*s_etat_processus).erreur_systeme =
        !           530:                                        d_es_allocation_memoire;
        !           531:                                return(NULL);
        !           532:                            }
        !           533: 
        !           534:                            sprintf((unsigned char *) (*s_sous_objet).objet,
        !           535:                                    "%s%s%s", (unsigned char *)
        !           536:                                    (*s_sous_objet_1)
        !           537:                                    .objet, (*((struct_fonction *)
        !           538:                                    (*(*l_element_courant).donnee).objet))
        !           539:                                    .nom_fonction, (unsigned char *)
        !           540:                                    (*s_sous_objet_2).objet);
        !           541: 
        !           542:                            liberation(s_etat_processus, s_sous_objet_1);
        !           543:                            liberation(s_etat_processus, s_sous_objet_2);
        !           544: 
        !           545:                            if (empilement(s_etat_processus,
        !           546:                                    &((*s_etat_processus)
        !           547:                                    .l_base_pile), s_sous_objet) == d_erreur)
        !           548:                            {
        !           549:                                return(NULL);
        !           550:                            }
        !           551:                        }
        !           552:                        else if (strcmp((*((struct_fonction *)
        !           553:                                (*(*l_element_courant).donnee).objet))
        !           554:                                .nom_fonction, "=") == 0)
        !           555:                        {
        !           556:                            if (depilement(s_etat_processus,
        !           557:                                    &((*s_etat_processus).l_base_pile),
        !           558:                                    &s_sous_objet_2) == d_erreur)
        !           559:                            {
        !           560:                                return(NULL);
        !           561:                            }
        !           562: 
        !           563:                            if (depilement(s_etat_processus,
        !           564:                                    &((*s_etat_processus).l_base_pile),
        !           565:                                    &s_sous_objet_1) == d_erreur)
        !           566:                            {
        !           567:                                return(NULL);
        !           568:                            }
        !           569: 
        !           570:                            if ((s_sous_objet = allocation(s_etat_processus,
        !           571:                                    CHN)) == NULL)
        !           572:                            {
        !           573:                                (*s_etat_processus).erreur_systeme =
        !           574:                                        d_es_allocation_memoire;
        !           575:                                return(NULL);
        !           576:                            }
        !           577: 
        !           578:                            autorisation_parenthese = d_vrai;
        !           579:                            l_atome = l_element_courant;
        !           580: 
        !           581:                            if (l_atome != NULL)
        !           582:                            {
        !           583:                                if ((*l_atome).suivant != NULL)
        !           584:                                {
        !           585:                                    l_atome = (*l_atome).suivant;
        !           586: 
        !           587:                                    if ((*(*l_atome).donnee).type == FCT)
        !           588:                                    {
        !           589:                                        if (strcmp((*((struct_fonction *)
        !           590:                                                (*(*l_atome).donnee).objet))
        !           591:                                                .nom_fonction, ">>") == 0)
        !           592:                                        {
        !           593:                                            if ((*l_atome).suivant == NULL)
        !           594:                                            {
        !           595:                                                autorisation_parenthese =
        !           596:                                                        d_faux;
        !           597:                                            }
        !           598:                                        }
        !           599:                                    }
        !           600:                                }
        !           601:                            }
        !           602: 
        !           603:                            if (autorisation_parenthese == d_vrai)
        !           604:                            {
        !           605:                                if (((*s_sous_objet).objet =
        !           606:                                        (void *) malloc((strlen(
        !           607:                                        (unsigned char *) (*s_sous_objet_1)
        !           608:                                        .objet) + strlen((*((struct_fonction *)
        !           609:                                        (*(*l_element_courant).donnee).objet))
        !           610:                                        .nom_fonction) +
        !           611:                                        strlen((unsigned char *)
        !           612:                                        (*s_sous_objet_2).objet) + 2 + 1) *
        !           613:                                        sizeof(unsigned char))) == NULL)
        !           614:                                {
        !           615:                                    (*s_etat_processus).erreur_systeme =
        !           616:                                            d_es_allocation_memoire;
        !           617:                                    return(NULL);
        !           618:                                }
        !           619: 
        !           620:                                sprintf((unsigned char *) (*s_sous_objet).objet,
        !           621:                                        "(%s%s%s)", (unsigned char *)
        !           622:                                        (*s_sous_objet_1)
        !           623:                                        .objet, (*((struct_fonction *)
        !           624:                                        (*(*l_element_courant).donnee).objet))
        !           625:                                        .nom_fonction, (unsigned char *)
        !           626:                                        (*s_sous_objet_2).objet);
        !           627:                            }
        !           628:                            else
        !           629:                            {
        !           630:                                if (((*s_sous_objet).objet =
        !           631:                                        (void *) malloc((strlen(
        !           632:                                        (unsigned char *) (*s_sous_objet_1)
        !           633:                                        .objet) + strlen((*((struct_fonction *)
        !           634:                                        (*(*l_element_courant).donnee).objet))
        !           635:                                        .nom_fonction) + strlen(
        !           636:                                        (unsigned char *) (*s_sous_objet_2)
        !           637:                                        .objet) + 1) * sizeof(unsigned char)))
        !           638:                                        == NULL)
        !           639:                                {
        !           640:                                    (*s_etat_processus).erreur_systeme =
        !           641:                                            d_es_allocation_memoire;
        !           642:                                    return(NULL);
        !           643:                                }
        !           644: 
        !           645:                                sprintf((unsigned char *) (*s_sous_objet).objet,
        !           646:                                        "%s%s%s", (unsigned char *)
        !           647:                                        (*s_sous_objet_1)
        !           648:                                        .objet, (*((struct_fonction *)
        !           649:                                        (*(*l_element_courant).donnee).objet))
        !           650:                                        .nom_fonction, (unsigned char *)
        !           651:                                        (*s_sous_objet_2).objet);
        !           652:                            }
        !           653: 
        !           654:                            liberation(s_etat_processus, s_sous_objet_1);
        !           655:                            liberation(s_etat_processus, s_sous_objet_2);
        !           656: 
        !           657:                            if (empilement(s_etat_processus,
        !           658:                                    &((*s_etat_processus).l_base_pile),
        !           659:                                    s_sous_objet) == d_erreur)
        !           660:                            {
        !           661:                                return(NULL);
        !           662:                            }
        !           663:                        }
        !           664:                        else if (strcmp((*((struct_fonction *)
        !           665:                                (*(*l_element_courant).donnee).objet))
        !           666:                                .nom_fonction,
        !           667:                                "NOT") == 0)
        !           668:                        {
        !           669:                            if (depilement(s_etat_processus,
        !           670:                                    &((*s_etat_processus)
        !           671:                                    .l_base_pile), &s_sous_objet_1) == d_erreur)
        !           672:                            {
        !           673:                                return(NULL);
        !           674:                            }
        !           675: 
        !           676:                            if ((s_sous_objet = allocation(s_etat_processus,
        !           677:                                    CHN)) == NULL)
        !           678:                            {
        !           679:                                (*s_etat_processus).erreur_systeme =
        !           680:                                        d_es_allocation_memoire;
        !           681:                                return(NULL);
        !           682:                            }
        !           683: 
        !           684:                            if (((*s_sous_objet).objet = (unsigned char *)
        !           685:                                    malloc(
        !           686:                                    (strlen((unsigned char *) (*s_sous_objet_1)
        !           687:                                    .objet) + 4 + 1) * sizeof(unsigned char)))
        !           688:                                    == NULL)
        !           689:                            {
        !           690:                                (*s_etat_processus).erreur_systeme =
        !           691:                                        d_es_allocation_memoire;
        !           692:                                return(NULL);
        !           693:                            }
        !           694: 
        !           695:                            sprintf((unsigned char *) (*s_sous_objet).objet,
        !           696:                                    "%s %s", (*((struct_fonction *)
        !           697:                                    (*(*l_element_courant).donnee).objet))
        !           698:                                    .nom_fonction, (unsigned char *)
        !           699:                                    (*s_sous_objet_1).objet );
        !           700: 
        !           701:                            liberation(s_etat_processus, s_sous_objet_1);
        !           702: 
        !           703:                            if (empilement(s_etat_processus,
        !           704:                                    &((*s_etat_processus)
        !           705:                                    .l_base_pile), s_sous_objet) == d_erreur)
        !           706:                            {
        !           707:                                return(NULL);
        !           708:                            }
        !           709:                        }
        !           710:                        else if ((strcmp((*((struct_fonction *)
        !           711:                                (*(*l_element_courant).donnee).objet))
        !           712:                                .nom_fonction,
        !           713:                                "OR") == 0) || (strcmp((*((struct_fonction *)
        !           714:                                (*(*l_element_courant).donnee).objet))
        !           715:                                .nom_fonction,
        !           716:                                "XOR") == 0) || (strcmp((*((struct_fonction *)
        !           717:                                (*(*l_element_courant).donnee).objet))
        !           718:                                .nom_fonction,
        !           719:                                "AND") == 0))
        !           720:                        {
        !           721:                            if (depilement(s_etat_processus,
        !           722:                                    &((*s_etat_processus)
        !           723:                                    .l_base_pile), &s_sous_objet_2) == d_erreur)
        !           724:                            {
        !           725:                                return(NULL);
        !           726:                            }
        !           727: 
        !           728:                            if (depilement(s_etat_processus,
        !           729:                                    &((*s_etat_processus)
        !           730:                                    .l_base_pile), &s_sous_objet_1) == d_erreur)
        !           731:                            {
        !           732:                                return(NULL);
        !           733:                            }
        !           734: 
        !           735:                            if ((s_sous_objet = allocation(s_etat_processus,
        !           736:                                    CHN)) == NULL)
        !           737:                            {
        !           738:                                (*s_etat_processus).erreur_systeme =
        !           739:                                        d_es_allocation_memoire;
        !           740:                                return(NULL);
        !           741:                            }
        !           742: 
        !           743:                            if (((*s_sous_objet).objet = (void *)
        !           744:                                    malloc((strlen(
        !           745:                                    (unsigned char *) (*s_sous_objet_1).objet) +
        !           746:                                    strlen((*((struct_fonction *)
        !           747:                                    (*(*l_element_courant).donnee).objet))
        !           748:                                    .nom_fonction) + strlen((unsigned char *)
        !           749:                                    (*s_sous_objet_2).objet) + 2 + 1) *
        !           750:                                    sizeof(unsigned char))) == NULL)
        !           751:                            {
        !           752:                                (*s_etat_processus).erreur_systeme =
        !           753:                                        d_es_allocation_memoire;
        !           754:                                return(NULL);
        !           755:                            }
        !           756: 
        !           757:                            sprintf((unsigned char *) (*s_sous_objet).objet,
        !           758:                                    "%s %s %s", (unsigned char *)
        !           759:                                    (*s_sous_objet_1)
        !           760:                                    .objet, (*((struct_fonction *)
        !           761:                                    (*(*l_element_courant).donnee).objet))
        !           762:                                    .nom_fonction, (unsigned char *)
        !           763:                                    (*s_sous_objet_2).objet);
        !           764: 
        !           765:                            liberation(s_etat_processus, s_sous_objet_1);
        !           766:                            liberation(s_etat_processus, s_sous_objet_2);
        !           767: 
        !           768:                            if (empilement(s_etat_processus,
        !           769:                                    &((*s_etat_processus)
        !           770:                                    .l_base_pile), s_sous_objet) == d_erreur)
        !           771:                            {
        !           772:                                return(NULL);
        !           773:                            }
        !           774:                        }
        !           775:                        else
        !           776:                        {
        !           777:                            nombre_arguments = (*((struct_fonction *)
        !           778:                                    (*(*l_element_courant).donnee).objet))
        !           779:                                    .nombre_arguments;
        !           780: 
        !           781:                            if ((chaine = (unsigned char *)
        !           782:                                    malloc(sizeof(unsigned char))) == NULL)
        !           783:                            {
        !           784:                                (*s_etat_processus).erreur_systeme =
        !           785:                                        d_es_allocation_memoire;
        !           786:                                return(NULL);
        !           787:                            }
        !           788:                            
        !           789:                            chaine[0] = d_code_fin_chaine;
        !           790: 
        !           791:                            for(i = 0; i < nombre_arguments; i++)
        !           792:                            {
        !           793:                                if ((nombre_arguments - i) > 1)
        !           794:                                {
        !           795:                                    l_liste1 = (*s_etat_processus).l_base_pile;
        !           796: 
        !           797:                                    for(j = 2; j < (nombre_arguments - i); j++)
        !           798:                                    {
        !           799:                                        l_liste1 = (*l_liste1).suivant;
        !           800:                                    }
        !           801: 
        !           802:                                    l_liste2 = (*l_liste1).suivant;
        !           803:                                    (*l_liste1).suivant = (*l_liste2).suivant;
        !           804:                                    (*l_liste2).suivant = (*s_etat_processus)
        !           805:                                            .l_base_pile;
        !           806:                                    (*s_etat_processus).l_base_pile = l_liste2;
        !           807:                                }
        !           808:                                
        !           809:                                if (depilement(s_etat_processus,
        !           810:                                        &((*s_etat_processus).l_base_pile),
        !           811:                                        &s_sous_objet) == d_erreur)
        !           812:                                {
        !           813:                                    return(NULL);
        !           814:                                }
        !           815: 
        !           816:                                chaine_sauvegarde = chaine;
        !           817: 
        !           818:                                if (strlen(chaine_sauvegarde) == 0)
        !           819:                                {
        !           820:                                    if ((chaine = (unsigned char *)
        !           821:                                            malloc((strlen((unsigned char *)
        !           822:                                            (*s_sous_objet).objet) + 1) *
        !           823:                                            sizeof(unsigned char))) == NULL)
        !           824:                                    {
        !           825:                                        (*s_etat_processus).erreur_systeme =
        !           826:                                                d_es_allocation_memoire;
        !           827:                                        return(NULL);
        !           828:                                    }
        !           829: 
        !           830:                                    sprintf(chaine, "%s", (unsigned char *)
        !           831:                                            (*s_sous_objet).objet);
        !           832:                                }
        !           833:                                else
        !           834:                                {
        !           835:                                    if ((chaine = (unsigned char *)
        !           836:                                            malloc((strlen(chaine_sauvegarde)
        !           837:                                            + 1 + strlen((unsigned char *)
        !           838:                                            (*s_sous_objet).objet) + 1) *
        !           839:                                            sizeof(unsigned char))) == NULL)
        !           840:                                    {
        !           841:                                        (*s_etat_processus).erreur_systeme =
        !           842:                                                d_es_allocation_memoire;
        !           843:                                        return(NULL);
        !           844:                                    }
        !           845: 
        !           846:                                    sprintf(chaine, "%s,%s", chaine_sauvegarde,
        !           847:                                            (unsigned char *) (*s_sous_objet)
        !           848:                                            .objet);
        !           849:                                }
        !           850: 
        !           851:                                free(chaine_sauvegarde);
        !           852:                                liberation(s_etat_processus, s_sous_objet);
        !           853:                            }
        !           854: 
        !           855:                            chaine_sauvegarde = chaine;
        !           856: 
        !           857:                            if ((chaine = (unsigned char *) malloc((strlen(
        !           858:                                    (*((struct_fonction *)
        !           859:                                    (*(*l_element_courant)
        !           860:                                    .donnee).objet)).nom_fonction) + 2 +
        !           861:                                    strlen(chaine_sauvegarde) + 1) *
        !           862:                                    sizeof(unsigned char))) == NULL)
        !           863:                            {
        !           864:                                (*s_etat_processus).erreur_systeme =
        !           865:                                        d_es_allocation_memoire;
        !           866:                                return(NULL);
        !           867:                            }
        !           868: 
        !           869:                            sprintf(chaine, "%s(%s)", (*((struct_fonction *)
        !           870:                                    (*(*l_element_courant).donnee).objet))
        !           871:                                    .nom_fonction, chaine_sauvegarde);
        !           872:                            free(chaine_sauvegarde);
        !           873: 
        !           874:                            if ((s_sous_objet = allocation(s_etat_processus,
        !           875:                                            CHN)) == NULL)
        !           876:                            {
        !           877:                                (*s_etat_processus).erreur_systeme =
        !           878:                                        d_es_allocation_memoire;
        !           879:                                return(NULL);
        !           880:                            }
        !           881: 
        !           882:                            (*s_sous_objet).objet = (void *) chaine;
        !           883: 
        !           884:                            if (empilement(s_etat_processus,
        !           885:                                    &((*s_etat_processus)
        !           886:                                    .l_base_pile), s_sous_objet) == d_erreur)
        !           887:                            {
        !           888:                                return(NULL);
        !           889:                            }
        !           890:                        }
        !           891:                    }
        !           892:                }
        !           893:                else
        !           894:                {
        !           895:                    if ((s_sous_objet = allocation(s_etat_processus, CHN))
        !           896:                            == NULL)
        !           897:                    {
        !           898:                        (*s_etat_processus).erreur_systeme =
        !           899:                                d_es_allocation_memoire;
        !           900:                        return(NULL);
        !           901:                    }
        !           902: 
        !           903:                    if (((*s_sous_objet).objet = (void *) formateur_fichier(
        !           904:                            s_etat_processus, (*l_element_courant).donnee,
        !           905:                            s_format, longueur, longueur_champ, format_sortie,
        !           906:                            type, longueur_effective, recursivite)) == NULL)
        !           907:                    {
        !           908:                        (*s_etat_processus).erreur_systeme =
        !           909:                                d_es_allocation_memoire;
        !           910:                        return(NULL);
        !           911:                    }
        !           912: 
        !           913:                    if (((*(*l_element_courant).donnee).type == ALG)
        !           914:                            || ((*(*l_element_courant).donnee).type == NOM))
        !           915:                    {
        !           916:                        chaine_sauvegarde = (unsigned char *)
        !           917:                                (*s_sous_objet).objet;
        !           918: 
        !           919:                        if (((*s_sous_objet).objet = malloc((strlen(
        !           920:                                chaine_sauvegarde) - 1) *
        !           921:                                sizeof(unsigned char))) == NULL)
        !           922:                        {
        !           923:                            (*s_etat_processus).erreur_systeme =
        !           924:                                    d_es_allocation_memoire;
        !           925:                            return(NULL);
        !           926:                        }
        !           927: 
        !           928:                        ptrl = chaine_sauvegarde;
        !           929:                        ptre = (unsigned char *) (*s_sous_objet).objet;
        !           930: 
        !           931:                        for(ptrl++, i = strlen(chaine_sauvegarde) - 2; i > 0;
        !           932:                                i--, *ptre++ = *ptrl++);
        !           933: 
        !           934:                        (*ptre) = d_code_fin_chaine;
        !           935: 
        !           936:                        free(chaine_sauvegarde);
        !           937:                    }
        !           938:                    else if ((*(*l_element_courant).donnee).type == CHN)
        !           939:                    {
        !           940:                        chaine_sauvegarde = (unsigned char *)
        !           941:                                (*s_sous_objet).objet;
        !           942: 
        !           943:                        if (((*s_sous_objet).objet = malloc((strlen(
        !           944:                                chaine_sauvegarde) + 3) *
        !           945:                                sizeof(unsigned char))) == NULL)
        !           946:                        {
        !           947:                            (*s_etat_processus).erreur_systeme =
        !           948:                                    d_es_allocation_memoire;
        !           949:                            return(NULL);
        !           950:                        }
        !           951: 
        !           952:                        sprintf((unsigned char *) (*s_sous_objet).objet,
        !           953:                                "\"%s\"", chaine_sauvegarde);
        !           954: 
        !           955:                        free(chaine_sauvegarde);
        !           956:                    }
        !           957: 
        !           958:                    if (empilement(s_etat_processus, &((*s_etat_processus)
        !           959:                            .l_base_pile), s_sous_objet) == d_erreur)
        !           960:                    {
        !           961:                        return(NULL);
        !           962:                    }
        !           963:                }
        !           964: 
        !           965:                l_element_courant = (*l_element_courant).suivant;
        !           966:            }
        !           967: 
        !           968:            if (depilement(s_etat_processus, &((*s_etat_processus).l_base_pile),
        !           969:                    &s_sous_objet) == d_erreur)
        !           970:            {
        !           971:                return(NULL);
        !           972:            }
        !           973: 
        !           974:            if ((chaine = (unsigned char *) malloc((strlen((unsigned char *)
        !           975:                    (*s_sous_objet).objet) + 2 + 1) * sizeof(unsigned char)))
        !           976:                    == NULL)
        !           977:            {
        !           978:                (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
        !           979:                return(NULL);
        !           980:            }
        !           981: 
        !           982:            sprintf(chaine, "'%s'", (unsigned char *) (*s_sous_objet).objet);
        !           983:            liberation(s_etat_processus, s_sous_objet);
        !           984:        }
        !           985:        else if ((*s_objet).type == BIN)
        !           986:        {
        !           987: 
        !           988: /*
        !           989: --------------------------------------------------------------------------------
        !           990:   Entier binaire en base 2, 8, 10 ou 16
        !           991: --------------------------------------------------------------------------------
        !           992: */
        !           993: 
        !           994:            if (format_sortie != 'B')
        !           995:            {
        !           996:                (*s_etat_processus).erreur_execution =
        !           997:                        d_ex_erreur_format_fichier;
        !           998:                return(NULL);
        !           999:            }
        !          1000: 
        !          1001:            longueur_binaire = longueur_entiers_binaires(s_etat_processus);
        !          1002:            masque_binaire = masque_entiers_binaires(s_etat_processus);
        !          1003: 
        !          1004:            if ((test_cfsf(s_etat_processus, 43) == d_faux) &&
        !          1005:                    (test_cfsf(s_etat_processus, 44) == d_faux))
        !          1006:            {
        !          1007: 
        !          1008: /*
        !          1009: -- Base décimale ---------------------------------------------------------------
        !          1010: */
        !          1011: 
        !          1012:                sprintf(tampon, "%llu", (*((logical8 *)
        !          1013:                        ((*s_objet).objet))) & masque_binaire);
        !          1014:                strcpy(base, "d");
        !          1015:            }
        !          1016:            else if ((test_cfsf(s_etat_processus, 43) == d_vrai) &&
        !          1017:                    (test_cfsf(s_etat_processus, 44) == d_faux))
        !          1018:            {
        !          1019: 
        !          1020: /*
        !          1021: -- Base octale -----------------------------------------------------------------
        !          1022: */
        !          1023: 
        !          1024:                sprintf(tampon, "%llo", (*((logical8 *)
        !          1025:                        ((*s_objet).objet))) & masque_binaire);
        !          1026:                strcpy(base, "o");
        !          1027:            }
        !          1028:            else if (test_cfsf(s_etat_processus, 44) == d_vrai)
        !          1029:            {
        !          1030: 
        !          1031: /*
        !          1032: -- Bases hexadécimale et binaire -----------------------------------------------
        !          1033: */
        !          1034: 
        !          1035:                sprintf(tampon, "%llX", (*((logical8 *)
        !          1036:                        ((*s_objet).objet))) & masque_binaire);
        !          1037: 
        !          1038:                if (test_cfsf(s_etat_processus, 43) == d_vrai)
        !          1039:                {
        !          1040:                    strcpy(base, "h");
        !          1041:                }
        !          1042:                else
        !          1043:                {
        !          1044:                    chaine = (unsigned char *) malloc((strlen(tampon) + 1)
        !          1045:                            * sizeof(unsigned char));
        !          1046: 
        !          1047:                    if (chaine == NULL)
        !          1048:                    {
        !          1049:                        (*s_etat_processus).erreur_systeme =
        !          1050:                                d_es_allocation_memoire;
        !          1051:                        return(NULL);
        !          1052:                    }
        !          1053: 
        !          1054:                    strcpy(chaine, tampon);
        !          1055:                    tampon[0] = 0;
        !          1056: 
        !          1057:                    for(i = 0; i < strlen(chaine); i++)
        !          1058:                    {
        !          1059:                        switch(chaine[i])
        !          1060:                        {
        !          1061:                            case '0' :
        !          1062:                            {
        !          1063:                                strcat(tampon, (i != 0) ? "0000" : "0");
        !          1064:                                break;
        !          1065:                            }
        !          1066:                            case '1' :
        !          1067:                            {
        !          1068:                                    strcat(tampon, (i != 0) ? "0001" : "1");
        !          1069:                                break;
        !          1070:                            }
        !          1071:                            case '2' :
        !          1072:                            {
        !          1073:                                strcat(tampon, (i != 0) ? "0010" : "10");
        !          1074:                                break;
        !          1075:                            }
        !          1076:                            case '3' :
        !          1077:                            {
        !          1078:                                strcat(tampon, (i != 0) ? "0011" : "11");
        !          1079:                                break;
        !          1080:                            }
        !          1081:                            case '4' :
        !          1082:                            {
        !          1083:                                strcat(tampon, (i != 0) ? "0100" : "100");
        !          1084:                                break;
        !          1085:                            }
        !          1086:                            case '5' :
        !          1087:                            {
        !          1088:                                strcat(tampon, (i != 0) ? "0101" : "101");
        !          1089:                                break;
        !          1090:                            }
        !          1091:                            case '6' :
        !          1092:                            {
        !          1093:                                strcat(tampon, (i != 0) ? "0110" : "110");
        !          1094:                                break;
        !          1095:                            }
        !          1096:                            case '7' :
        !          1097:                            {
        !          1098:                                strcat(tampon, (i != 0) ? "0111" : "111");
        !          1099:                                break;
        !          1100:                            }
        !          1101:                            case '8' :
        !          1102:                            {
        !          1103:                                strcat(tampon, "1000");
        !          1104:                                break;
        !          1105:                            }
        !          1106:                            case '9' :
        !          1107:                            {
        !          1108:                                strcat(tampon, "1001");
        !          1109:                                break;
        !          1110:                            }
        !          1111:                            case 'A' :
        !          1112:                            {
        !          1113:                                strcat(tampon, "1010");
        !          1114:                                break;
        !          1115:                            }
        !          1116:                            case 'B' :
        !          1117:                            {
        !          1118:                                strcat(tampon, "1011");
        !          1119:                                break;
        !          1120:                            }
        !          1121:                            case 'C' :
        !          1122:                            {
        !          1123:                                strcat(tampon, "1100");
        !          1124:                                break;
        !          1125:                            }
        !          1126:                            case 'D' :
        !          1127:                            {
        !          1128:                                strcat(tampon, "1101");
        !          1129:                                break;
        !          1130:                            }
        !          1131:                            case 'E' :
        !          1132:                            {
        !          1133:                                strcat(tampon, "1110");
        !          1134:                                break;
        !          1135:                            }
        !          1136:                            case 'F' :
        !          1137:                            {
        !          1138:                                strcat(tampon, "1111");
        !          1139:                                break;
        !          1140:                            }
        !          1141:                        }
        !          1142:                    }
        !          1143: 
        !          1144:                    free(chaine);
        !          1145:                    strcpy(base, "b");
        !          1146:                }
        !          1147:            }
        !          1148: 
        !          1149:            chaine = (unsigned char *) malloc((strlen(tampon) + 4)
        !          1150:                    * sizeof(unsigned char));
        !          1151: 
        !          1152:            if (chaine == NULL)
        !          1153:            {
        !          1154:                (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
        !          1155:                return(NULL);
        !          1156:            }
        !          1157: 
        !          1158:            strcpy(chaine, "# ");
        !          1159: 
        !          1160:            strcat(chaine, tampon);
        !          1161:            strcat(chaine, base);
        !          1162:        }
        !          1163:        else if ((*s_objet).type == CHN)
        !          1164:        {
        !          1165: 
        !          1166: /*
        !          1167: --------------------------------------------------------------------------------
        !          1168:   Chaîne de caractères
        !          1169: --------------------------------------------------------------------------------
        !          1170: */
        !          1171: 
        !          1172:            if (format_sortie != 'C')
        !          1173:            {
        !          1174:                (*s_etat_processus).erreur_execution =
        !          1175:                        d_ex_erreur_format_fichier;
        !          1176:                return(NULL);
        !          1177:            }
        !          1178: 
        !          1179:            chaine = (unsigned char *) malloc((strlen((unsigned char *)
        !          1180:                    ((*s_objet).objet)) + 1) * sizeof(unsigned char));
        !          1181: 
        !          1182:            if (chaine == NULL)
        !          1183:            {
        !          1184:                (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
        !          1185:                return(NULL);
        !          1186:            }
        !          1187: 
        !          1188:            strcpy(chaine, (unsigned char *) ((*s_objet).objet));
        !          1189:        }
        !          1190:        else if ((*s_objet).type == CPL)
        !          1191:        {
        !          1192: 
        !          1193: /*
        !          1194: --------------------------------------------------------------------------------
        !          1195:   Complexe
        !          1196: --------------------------------------------------------------------------------
        !          1197: */
        !          1198: 
        !          1199:            if ((format_sortie != 'S') && (format_sortie != 'F') &&
        !          1200:                    (format_sortie != 'I') && (format_sortie != 'E'))
        !          1201:            {
        !          1202:                (*s_etat_processus).erreur_execution =
        !          1203:                        d_ex_erreur_format_fichier;
        !          1204:                return(NULL);
        !          1205:            }
        !          1206: 
        !          1207:            if ((chaine_formatee = formateur_fichier_nombre(s_etat_processus,
        !          1208:                    (void *) ((struct_complexe16 *) ((*s_objet).objet)), 'C',
        !          1209:                    longueur, longueur_champ, format_sortie)) == NULL)
        !          1210:            {
        !          1211:                (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
        !          1212:                return(NULL);
        !          1213:            }
        !          1214: 
        !          1215:            chaine = (unsigned char *) malloc((strlen(chaine_formatee)
        !          1216:                    + 1) * sizeof(unsigned char));
        !          1217: 
        !          1218:            if (chaine == NULL)
        !          1219:            {
        !          1220:                (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
        !          1221:                return(NULL);
        !          1222:            }
        !          1223: 
        !          1224:            strcpy(chaine, chaine_formatee);
        !          1225:            free(chaine_formatee);
        !          1226:        }
        !          1227:        else if ((*s_objet).type == RPN)
        !          1228:        {
        !          1229: 
        !          1230: /*
        !          1231: --------------------------------------------------------------------------------
        !          1232:   Définition
        !          1233: --------------------------------------------------------------------------------
        !          1234: */
        !          1235: 
        !          1236:            l_element_courant = (struct_liste_chainee *) ((*s_objet).objet);
        !          1237:            chaine_sauvegarde = chaine;
        !          1238: 
        !          1239:            while(l_element_courant != NULL)
        !          1240:            {
        !          1241:                if ((chaine_formatee = formateur_fichier(s_etat_processus,
        !          1242:                        (*l_element_courant).donnee, s_format,
        !          1243:                        longueur, longueur_champ, format_sortie, type,
        !          1244:                        longueur_effective, recursivite)) == NULL)
        !          1245:                {
        !          1246:                    return(NULL);
        !          1247:                }
        !          1248: 
        !          1249:                if ((*(*l_element_courant).donnee).type == CHN)
        !          1250:                {
        !          1251:                    chaine_tampon = chaine_formatee;
        !          1252: 
        !          1253:                    if ((chaine_formatee = (unsigned char *) malloc((strlen(
        !          1254:                            chaine_tampon) + 3) * sizeof(unsigned char)))
        !          1255:                            == NULL)
        !          1256:                    {
        !          1257:                        (*s_etat_processus).erreur_systeme =
        !          1258:                                d_es_allocation_memoire;
        !          1259:                        return(NULL);
        !          1260:                    }
        !          1261: 
        !          1262:                    sprintf(chaine_formatee, "\"%s\"", chaine_tampon);
        !          1263:                    free(chaine_tampon);
        !          1264:                }
        !          1265: 
        !          1266:                l_element_courant = (*l_element_courant).suivant;
        !          1267: 
        !          1268:                if (chaine != NULL)
        !          1269:                {
        !          1270:                    chaine_sauvegarde = chaine;
        !          1271: 
        !          1272:                    if ((chaine = (unsigned char *) malloc((strlen(
        !          1273:                            chaine_sauvegarde) + strlen(chaine_formatee) + 2) *
        !          1274:                            sizeof(unsigned char))) == NULL)
        !          1275:                    {
        !          1276:                        (*s_etat_processus).erreur_systeme =
        !          1277:                                d_es_allocation_memoire;
        !          1278:                        return(NULL);
        !          1279:                    }
        !          1280: 
        !          1281:                    strcpy(chaine, chaine_sauvegarde);
        !          1282:                    free(chaine_sauvegarde);
        !          1283:                    strcat(chaine, " ");
        !          1284:                    strcat(chaine, chaine_formatee);
        !          1285:                    free(chaine_formatee);
        !          1286:                }
        !          1287:                else
        !          1288:                {
        !          1289:                    chaine = chaine_formatee;
        !          1290:                }
        !          1291:            }
        !          1292: 
        !          1293:            chaine_sauvegarde = chaine;
        !          1294:            chaine = (unsigned char *) malloc((strlen(chaine_sauvegarde) + 1) *
        !          1295:                    sizeof(unsigned char));
        !          1296: 
        !          1297:            if (chaine == NULL)
        !          1298:            {
        !          1299:                (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
        !          1300:                free(chaine_sauvegarde);
        !          1301:                return(NULL);
        !          1302:            }
        !          1303: 
        !          1304:            chaine_sauvegarde[strlen(chaine_sauvegarde)] = d_code_fin_chaine;
        !          1305:            strcpy(chaine, chaine_sauvegarde);
        !          1306:            free(chaine_sauvegarde);
        !          1307:        }
        !          1308:        else if ((*s_objet).type == INT)
        !          1309:        {
        !          1310: 
        !          1311: /*
        !          1312: --------------------------------------------------------------------------------
        !          1313:   Entier
        !          1314: --------------------------------------------------------------------------------
        !          1315: */
        !          1316: 
        !          1317:            if ((format_sortie != 'S') && (format_sortie != 'F') &&
        !          1318:                    (format_sortie != 'I') && (format_sortie != 'E'))
        !          1319:            {
        !          1320:                (*s_etat_processus).erreur_execution =
        !          1321:                        d_ex_erreur_format_fichier;
        !          1322:                return(NULL);
        !          1323:            }
        !          1324: 
        !          1325:            if ((chaine_formatee = formateur_fichier_nombre(s_etat_processus,
        !          1326:                    (void *) ((integer8 *) ((*s_objet).objet)), 'I',
        !          1327:                    longueur, longueur_champ, format_sortie)) == NULL)
        !          1328:            {
        !          1329:                (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
        !          1330:                return(NULL);
        !          1331:            }
        !          1332: 
        !          1333:            chaine = (unsigned char *) malloc((strlen(chaine_formatee) + 1)
        !          1334:                    * sizeof(unsigned char));
        !          1335: 
        !          1336:            if (chaine == NULL)
        !          1337:            {
        !          1338:                (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
        !          1339:                return(NULL);
        !          1340:            }
        !          1341: 
        !          1342:            strcpy(chaine, chaine_formatee);
        !          1343:            free(chaine_formatee);
        !          1344:        }
        !          1345:        else if ((*s_objet).type == FCT)
        !          1346:        {
        !          1347: 
        !          1348: /*
        !          1349: --------------------------------------------------------------------------------
        !          1350:   Fonction
        !          1351: --------------------------------------------------------------------------------
        !          1352: */
        !          1353: 
        !          1354:            chaine = (unsigned char *) malloc((strlen((*((struct_fonction *)
        !          1355:                    ((*s_objet).objet))).nom_fonction) + 1) *
        !          1356:                    sizeof(unsigned char));
        !          1357: 
        !          1358:            if (chaine == NULL)
        !          1359:            {
        !          1360:                (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
        !          1361:                return(NULL);
        !          1362:            }
        !          1363: 
        !          1364:            strcpy(chaine, (unsigned char *) (*((struct_fonction *)
        !          1365:                    ((*s_objet).objet))).nom_fonction);
        !          1366:        }
        !          1367:        else if ((*s_objet).type == LST)
        !          1368:        {
        !          1369: 
        !          1370: /*
        !          1371: --------------------------------------------------------------------------------
        !          1372:   Liste
        !          1373: --------------------------------------------------------------------------------
        !          1374: */
        !          1375: 
        !          1376:            chaine = (unsigned char *) malloc(2 * sizeof(unsigned char));
        !          1377: 
        !          1378:            if (chaine == NULL)
        !          1379:            {
        !          1380:                (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
        !          1381:                return(NULL);
        !          1382:            }
        !          1383: 
        !          1384:            strcpy(chaine, "{");
        !          1385: 
        !          1386:            l_element_courant = (struct_liste_chainee *) (*s_objet).objet;
        !          1387:            l_element_courant_format = (struct_liste_chainee *)
        !          1388:                    (*s_format).objet;
        !          1389:            nombre_elements = 0;
        !          1390: 
        !          1391:            while((l_element_courant != NULL) &&
        !          1392:                    (l_element_courant_format != NULL))
        !          1393:            {
        !          1394:                if ((((*(*l_element_courant_format).donnee).type == LST)
        !          1395:                        && ((*(*l_element_courant).donnee).type == LST)) ||
        !          1396:                        (((*(*l_element_courant_format).donnee).type == TBL)
        !          1397:                        && ((*(*l_element_courant).donnee).type == TBL)))
        !          1398:                {
        !          1399:                    chaine_sauvegarde = chaine;
        !          1400: 
        !          1401:                    if ((chaine_formatee = formateur_fichier(s_etat_processus,
        !          1402:                            (*l_element_courant).donnee,
        !          1403:                            (*l_element_courant_format).donnee,
        !          1404:                            0, 0, ' ', 'F', longueur_effective, recursivite))
        !          1405:                            == NULL)
        !          1406:                    {
        !          1407:                        return(NULL);
        !          1408:                    }
        !          1409: 
        !          1410:                    chaine = (unsigned char *) malloc((strlen(chaine_formatee)
        !          1411:                            + strlen(chaine_sauvegarde) + 2)
        !          1412:                            * sizeof(unsigned char));
        !          1413: 
        !          1414:                    if (chaine == NULL)
        !          1415:                    {
        !          1416:                        (*s_etat_processus).erreur_systeme =
        !          1417:                                d_es_allocation_memoire;
        !          1418:                        return(NULL);
        !          1419:                    }
        !          1420: 
        !          1421:                    strcpy(chaine, chaine_sauvegarde);
        !          1422:                    free(chaine_sauvegarde);
        !          1423:                    strcat(chaine, " ");
        !          1424:                    strcat(chaine, chaine_formatee);
        !          1425:                    free(chaine_formatee);
        !          1426:                }
        !          1427:                else if ((*(*l_element_courant_format).donnee).type != CHN)
        !          1428:                {
        !          1429:                    free(chaine);
        !          1430: 
        !          1431:                    (*s_etat_processus).erreur_execution =
        !          1432:                            d_ex_erreur_format_fichier;
        !          1433:                    return(NULL);
        !          1434:                }
        !          1435:                else
        !          1436:                {
        !          1437:                    if ((format_chaine = conversion_majuscule((unsigned char *)
        !          1438:                            (*(*l_element_courant_format).donnee).objet))
        !          1439:                            == NULL)
        !          1440:                    {
        !          1441:                        (*s_etat_processus).erreur_systeme =
        !          1442:                                d_es_allocation_memoire;
        !          1443:                        return(NULL);
        !          1444:                    }
        !          1445: 
        !          1446:                    format_degenere = d_faux;
        !          1447: 
        !          1448:                    if (strncmp("STANDARD*", format_chaine, 9) == 0)
        !          1449:                    {
        !          1450:                        format_sortie = 'S';
        !          1451:                        position_1 = 9;
        !          1452:                        format_degenere = d_vrai;
        !          1453:                    }
        !          1454:                    else if (strncmp("BINARY*", format_chaine, 7) == 0)
        !          1455:                    {
        !          1456:                        format_sortie = 'B';
        !          1457:                        position_1 = 7;
        !          1458:                    }
        !          1459:                    else if (strncmp("FIXED*", format_chaine, 6) == 0)
        !          1460:                    {
        !          1461:                        format_sortie = 'F';
        !          1462:                        position_1 = 6;
        !          1463:                    }
        !          1464:                    else if (strncmp("SCIENTIFIC*", format_chaine, 11) == 0)
        !          1465:                    {
        !          1466:                        format_sortie = 'I';
        !          1467:                        position_1 = 11;
        !          1468:                    }
        !          1469:                    else if (strncmp("ENGINEER*", format_chaine, 9) == 0)
        !          1470:                    {
        !          1471:                        format_sortie = 'E';
        !          1472:                        position_1 = 9;
        !          1473:                    }
        !          1474:                    else if (strncmp("CHARACTER*", format_chaine, 10) == 0)
        !          1475:                    {
        !          1476:                        format_sortie = 'C';
        !          1477:                        position_1 = 10;
        !          1478:                        format_degenere = d_vrai;
        !          1479:                    }
        !          1480:                    else
        !          1481:                    {
        !          1482:                        free(chaine);
        !          1483:                        free(format_chaine);
        !          1484: 
        !          1485:                        (*s_etat_processus).erreur_execution =
        !          1486:                                d_ex_erreur_format_fichier;
        !          1487:                        return(NULL);
        !          1488:                    }
        !          1489: 
        !          1490:                    position_3 = strlen(format_chaine);
        !          1491:                    format_chaine[--position_3] = d_code_fin_chaine;
        !          1492: 
        !          1493:                    position_2 = position_1;
        !          1494: 
        !          1495:                    while(format_chaine[position_2] != '(')
        !          1496:                    {
        !          1497:                        if (format_chaine[position_2] == d_code_fin_chaine)
        !          1498:                        {
        !          1499:                            free(chaine);
        !          1500:                            free(format_chaine);
        !          1501: 
        !          1502:                            (*s_etat_processus).erreur_execution =
        !          1503:                                    d_ex_erreur_format_fichier;
        !          1504:                            return(NULL);
        !          1505:                        }
        !          1506: 
        !          1507:                        position_2++;
        !          1508:                    }
        !          1509: 
        !          1510:                    format_chaine[position_2++] = d_code_fin_chaine;
        !          1511: 
        !          1512:                    if (format_degenere == d_faux)
        !          1513:                    {
        !          1514:                        if (sscanf(&(format_chaine[position_1]), "%ld",
        !          1515:                                &longueur) != 1)
        !          1516:                        {
        !          1517:                            free(chaine);
        !          1518:                            free(format_chaine);
        !          1519: 
        !          1520:                            (*s_etat_processus).erreur_execution =
        !          1521:                                    d_ex_erreur_format_fichier;
        !          1522:                            return(NULL);
        !          1523:                        }
        !          1524:                    }
        !          1525:                    else
        !          1526:                    {
        !          1527:                        longueur = -1;
        !          1528:                    }
        !          1529: 
        !          1530:                    if (strcmp(&(format_chaine[position_2]), "*") != 0)
        !          1531:                    {
        !          1532:                        if (sscanf(&(format_chaine[position_2]), "%ld",
        !          1533:                                &longueur_champ) != 1)
        !          1534:                        {
        !          1535:                            free(chaine);
        !          1536:                            free(format_chaine);
        !          1537: 
        !          1538:                            (*s_etat_processus).erreur_execution =
        !          1539:                                    d_ex_erreur_format_fichier;
        !          1540:                            return(NULL);
        !          1541:                        }
        !          1542:                    }
        !          1543:                    else
        !          1544:                    {
        !          1545:                        longueur_champ = -1;
        !          1546:                    }
        !          1547: 
        !          1548:                    if ((longueur >= 0) && (longueur_champ >= 0) && (longueur >
        !          1549:                            longueur_champ))
        !          1550:                    {
        !          1551:                        free(chaine);
        !          1552:                        free(format_chaine);
        !          1553: 
        !          1554:                        (*s_etat_processus).erreur_execution =
        !          1555:                                d_ex_erreur_format_fichier;
        !          1556:                        return(NULL);
        !          1557:                    }
        !          1558: 
        !          1559:                    free(format_chaine);
        !          1560:                
        !          1561:                    chaine_sauvegarde = chaine;
        !          1562: 
        !          1563:                    if ((chaine_formatee = formateur_fichier(s_etat_processus,
        !          1564:                            (*l_element_courant).donnee, s_format,
        !          1565:                            longueur, longueur_champ, format_sortie, type,
        !          1566:                            longueur_effective, recursivite)) == NULL)
        !          1567:                    {
        !          1568:                        return(NULL);
        !          1569:                    }
        !          1570: 
        !          1571:                    if ((*(*l_element_courant).donnee).type == CHN)
        !          1572:                    {
        !          1573:                        chaine = (unsigned char *)
        !          1574:                                malloc((strlen(chaine_formatee)
        !          1575:                                + strlen(chaine_sauvegarde) + 4)
        !          1576:                                * sizeof(unsigned char));
        !          1577: 
        !          1578:                        if (chaine == NULL)
        !          1579:                        {
        !          1580:                            (*s_etat_processus).erreur_systeme =
        !          1581:                                    d_es_allocation_memoire;
        !          1582:                            return(NULL);
        !          1583:                        }
        !          1584: 
        !          1585:                        strcpy(chaine, chaine_sauvegarde);
        !          1586:                        free(chaine_sauvegarde);
        !          1587:                        strcat(chaine, " \"");
        !          1588:                        strcat(chaine, chaine_formatee);
        !          1589:                        free(chaine_formatee);
        !          1590:                        strcat(chaine, "\"");
        !          1591:                    }
        !          1592:                    else if ((*(*l_element_courant).donnee).type == NOM)
        !          1593:                    {
        !          1594:                        chaine = (unsigned char *)
        !          1595:                                malloc((strlen(chaine_formatee)
        !          1596:                                + strlen(chaine_sauvegarde) + 2)
        !          1597:                                * sizeof(unsigned char));
        !          1598: 
        !          1599:                        if (chaine == NULL)
        !          1600:                        {
        !          1601:                            (*s_etat_processus).erreur_systeme =
        !          1602:                                    d_es_allocation_memoire;
        !          1603:                            return(NULL);
        !          1604:                        }
        !          1605: 
        !          1606:                        sprintf(chaine, "%s %s", chaine_sauvegarde,
        !          1607:                                chaine_formatee);
        !          1608:                        free(chaine_formatee);
        !          1609:                    }
        !          1610:                    else
        !          1611:                    {
        !          1612:                        chaine = (unsigned char *)
        !          1613:                                malloc((strlen(chaine_formatee)
        !          1614:                                + strlen(chaine_sauvegarde) + 2)
        !          1615:                                * sizeof(unsigned char));
        !          1616: 
        !          1617:                        if (chaine == NULL)
        !          1618:                        {
        !          1619:                            (*s_etat_processus).erreur_systeme =
        !          1620:                                    d_es_allocation_memoire;
        !          1621:                            return(NULL);
        !          1622:                        }
        !          1623: 
        !          1624:                        strcpy(chaine, chaine_sauvegarde);
        !          1625:                        free(chaine_sauvegarde);
        !          1626:                        strcat(chaine, " ");
        !          1627:                        strcat(chaine, chaine_formatee);
        !          1628:                        free(chaine_formatee);
        !          1629:                    }
        !          1630:                }
        !          1631: 
        !          1632:                nombre_elements++;
        !          1633:                l_element_courant = (*l_element_courant).suivant;
        !          1634:                l_element_courant_format = (*l_element_courant_format).suivant;
        !          1635:            }
        !          1636: 
        !          1637:            if ((l_element_courant != NULL) ||
        !          1638:                    (l_element_courant_format != NULL))
        !          1639:            {
        !          1640:                free(chaine);
        !          1641: 
        !          1642:                (*s_etat_processus).erreur_execution =
        !          1643:                        d_ex_erreur_format_fichier;
        !          1644:                return(NULL);
        !          1645:            }
        !          1646: 
        !          1647:            chaine_sauvegarde = chaine;
        !          1648:            chaine = (unsigned char *) malloc((strlen(chaine_sauvegarde) + 3)
        !          1649:                    * sizeof(unsigned char));
        !          1650: 
        !          1651:            if (chaine == NULL)
        !          1652:            {
        !          1653:                (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
        !          1654:                return(NULL);
        !          1655:            }
        !          1656: 
        !          1657:            strcpy(chaine, chaine_sauvegarde);
        !          1658:            free(chaine_sauvegarde);
        !          1659:            strcat(chaine, " }");
        !          1660:        }
        !          1661:        else if ((*s_objet).type == TBL)
        !          1662:        {
        !          1663: 
        !          1664: /*
        !          1665: --------------------------------------------------------------------------------
        !          1666:   Table
        !          1667: --------------------------------------------------------------------------------
        !          1668: */
        !          1669: 
        !          1670:            if ((*s_format).type != TBL)
        !          1671:            {
        !          1672:                (*s_etat_processus).erreur_execution =
        !          1673:                        d_ex_erreur_format_fichier;
        !          1674:                return(NULL);
        !          1675:            }
        !          1676: 
        !          1677:            l_element_courant = (struct_liste_chainee *) (*s_objet).objet;
        !          1678:            l_element_courant_format = (struct_liste_chainee *)
        !          1679:                    (*s_format).objet;
        !          1680: 
        !          1681:            if ((*((struct_tableau *) (*s_objet).objet)).nombre_elements !=
        !          1682:                    (*((struct_tableau *) (*s_format).objet)).nombre_elements)
        !          1683:            {
        !          1684:                (*s_etat_processus).erreur_execution =
        !          1685:                        d_ex_erreur_format_fichier;
        !          1686:                return(NULL);
        !          1687:            }
        !          1688: 
        !          1689:            chaine = (unsigned char *) malloc(3 * sizeof(unsigned char));
        !          1690: 
        !          1691:            if (chaine == NULL)
        !          1692:            {
        !          1693:                (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
        !          1694:                return(NULL);
        !          1695:            }
        !          1696: 
        !          1697:            strcpy(chaine, "<[");
        !          1698: 
        !          1699:            for(i = 0; i < (*((struct_tableau *) (*s_objet).objet))
        !          1700:                    .nombre_elements; i++)
        !          1701:            {
        !          1702:                if ((((*(*((struct_tableau *) (*s_format).objet))
        !          1703:                        .elements[i]).type == LST) &&
        !          1704:                        ((*(*((struct_tableau *) (*s_objet).objet)).elements[i])
        !          1705:                        .type == LST)) ||
        !          1706:                        (((*(*((struct_tableau *) (*s_format).objet))
        !          1707:                        .elements[i]).type == TBL) &&
        !          1708:                        ((*(*((struct_tableau *) (*s_objet).objet)).elements[i])
        !          1709:                        .type == TAB)))
        !          1710:                {
        !          1711:                    chaine_sauvegarde = chaine;
        !          1712: 
        !          1713:                    if ((chaine_formatee = formateur_fichier(s_etat_processus,
        !          1714:                            (*l_element_courant).donnee,
        !          1715:                            (*l_element_courant_format).donnee,
        !          1716:                            0, 0, ' ', 'F', longueur_effective, recursivite))
        !          1717:                            == NULL)
        !          1718:                    {
        !          1719:                        return(NULL);
        !          1720:                    }
        !          1721: 
        !          1722:                    chaine = (unsigned char *) malloc((strlen(chaine_formatee)
        !          1723:                            + strlen(chaine_sauvegarde) + 2)
        !          1724:                            * sizeof(unsigned char));
        !          1725: 
        !          1726:                    if (chaine == NULL)
        !          1727:                    {
        !          1728:                        (*s_etat_processus).erreur_systeme =
        !          1729:                                d_es_allocation_memoire;
        !          1730:                        return(NULL);
        !          1731:                    }
        !          1732: 
        !          1733:                    strcpy(chaine, chaine_sauvegarde);
        !          1734:                    free(chaine_sauvegarde);
        !          1735:                    strcat(chaine, " ");
        !          1736:                    strcat(chaine, chaine_formatee);
        !          1737:                    free(chaine_formatee);
        !          1738:                }
        !          1739:                else if ((*(*((struct_tableau *) (*s_format).objet))
        !          1740:                        .elements[i]).type != CHN)
        !          1741:                {
        !          1742:                    free(chaine);
        !          1743: 
        !          1744:                    (*s_etat_processus).erreur_execution =
        !          1745:                            d_ex_erreur_format_fichier;
        !          1746:                    return(NULL);
        !          1747:                }
        !          1748:                else
        !          1749:                {
        !          1750:                    if ((format_chaine = conversion_majuscule((unsigned char *)
        !          1751:                            (*(*((struct_tableau *) (*s_format).objet))
        !          1752:                            .elements[i]).objet)) == NULL)
        !          1753:                    {
        !          1754:                        (*s_etat_processus).erreur_systeme =
        !          1755:                                d_es_allocation_memoire;
        !          1756:                        return(NULL);
        !          1757:                    }
        !          1758: 
        !          1759:                    format_degenere = d_faux;
        !          1760: 
        !          1761:                    if (strncmp("STANDARD*", format_chaine, 9) == 0)
        !          1762:                    {
        !          1763:                        format_sortie = 'S';
        !          1764:                        position_1 = 9;
        !          1765:                        format_degenere = d_vrai;
        !          1766:                    }
        !          1767:                    else if (strncmp("BINARY*", format_chaine, 7) == 0)
        !          1768:                    {
        !          1769:                        format_sortie = 'B';
        !          1770:                        position_1 = 7;
        !          1771:                    }
        !          1772:                    else if (strncmp("FIXED*", format_chaine, 6) == 0)
        !          1773:                    {
        !          1774:                        format_sortie = 'F';
        !          1775:                        position_1 = 6;
        !          1776:                    }
        !          1777:                    else if (strncmp("SCIENTIFIC*", format_chaine, 11) == 0)
        !          1778:                    {
        !          1779:                        format_sortie = 'I';
        !          1780:                        position_1 = 11;
        !          1781:                    }
        !          1782:                    else if (strncmp("ENGINEER*", format_chaine, 9) == 0)
        !          1783:                    {
        !          1784:                        format_sortie = 'E';
        !          1785:                        position_1 = 9;
        !          1786:                    }
        !          1787:                    else if (strncmp("CHARACTER*", format_chaine, 10) == 0)
        !          1788:                    {
        !          1789:                        format_sortie = 'C';
        !          1790:                        position_1 = 10;
        !          1791:                        format_degenere = d_vrai;
        !          1792:                    }
        !          1793:                    else
        !          1794:                    {
        !          1795:                        free(chaine);
        !          1796:                        free(format_chaine);
        !          1797: 
        !          1798:                        (*s_etat_processus).erreur_execution =
        !          1799:                                d_ex_erreur_format_fichier;
        !          1800:                        return(NULL);
        !          1801:                    }
        !          1802: 
        !          1803:                    position_3 = strlen(format_chaine);
        !          1804:                    format_chaine[--position_3] = d_code_fin_chaine;
        !          1805: 
        !          1806:                    position_2 = position_1;
        !          1807: 
        !          1808:                    while(format_chaine[position_2] != '(')
        !          1809:                    {
        !          1810:                        if (format_chaine[position_2] == d_code_fin_chaine)
        !          1811:                        {
        !          1812:                            free(chaine);
        !          1813:                            free(format_chaine);
        !          1814: 
        !          1815:                            (*s_etat_processus).erreur_execution =
        !          1816:                                    d_ex_erreur_format_fichier;
        !          1817:                            return(NULL);
        !          1818:                        }
        !          1819: 
        !          1820:                        position_2++;
        !          1821:                    }
        !          1822: 
        !          1823:                    format_chaine[position_2++] = d_code_fin_chaine;
        !          1824: 
        !          1825:                    if (format_degenere == d_faux)
        !          1826:                    {
        !          1827:                        if (sscanf(&(format_chaine[position_1]), "%ld",
        !          1828:                                &longueur) != 1)
        !          1829:                        {
        !          1830:                            free(chaine);
        !          1831:                            free(format_chaine);
        !          1832: 
        !          1833:                            (*s_etat_processus).erreur_execution =
        !          1834:                                    d_ex_erreur_format_fichier;
        !          1835:                            return(NULL);
        !          1836:                        }
        !          1837:                    }
        !          1838:                    else
        !          1839:                    {
        !          1840:                        longueur = -1;
        !          1841:                    }
        !          1842: 
        !          1843:                    if (strcmp(&(format_chaine[position_2]), "*") != 0)
        !          1844:                    {
        !          1845:                        if (sscanf(&(format_chaine[position_2]), "%ld",
        !          1846:                                &longueur_champ) != 1)
        !          1847:                        {
        !          1848:                            free(chaine);
        !          1849:                            free(format_chaine);
        !          1850: 
        !          1851:                            (*s_etat_processus).erreur_execution =
        !          1852:                                    d_ex_erreur_format_fichier;
        !          1853:                            return(NULL);
        !          1854:                        }
        !          1855:                    }
        !          1856:                    else
        !          1857:                    {
        !          1858:                        longueur_champ = -1;
        !          1859:                    }
        !          1860: 
        !          1861:                    if ((longueur >= 0) && (longueur_champ >= 0) && (longueur >
        !          1862:                            longueur_champ))
        !          1863:                    {
        !          1864:                        free(chaine);
        !          1865:                        free(format_chaine);
        !          1866: 
        !          1867:                        (*s_etat_processus).erreur_execution =
        !          1868:                                d_ex_erreur_format_fichier;
        !          1869:                        return(NULL);
        !          1870:                    }
        !          1871: 
        !          1872:                    free(format_chaine);
        !          1873:                
        !          1874:                    chaine_sauvegarde = chaine;
        !          1875: 
        !          1876:                    if ((chaine_formatee = formateur_fichier(s_etat_processus,
        !          1877:                            (*((struct_tableau *) (*s_objet).objet))
        !          1878:                            .elements[i], s_format,
        !          1879:                            longueur, longueur_champ, format_sortie, type,
        !          1880:                            longueur_effective, recursivite)) == NULL)
        !          1881:                    {
        !          1882:                        return(NULL);
        !          1883:                    }
        !          1884: 
        !          1885:                    if ((*(*((struct_tableau *) (*s_objet).objet))
        !          1886:                            .elements[i]).type == CHN)
        !          1887:                    {
        !          1888:                        chaine = (unsigned char *)
        !          1889:                                malloc((strlen(chaine_formatee)
        !          1890:                                + strlen(chaine_sauvegarde) + 4)
        !          1891:                                * sizeof(unsigned char));
        !          1892: 
        !          1893:                        if (chaine == NULL)
        !          1894:                        {
        !          1895:                            (*s_etat_processus).erreur_systeme =
        !          1896:                                    d_es_allocation_memoire;
        !          1897:                            return(NULL);
        !          1898:                        }
        !          1899: 
        !          1900:                        strcpy(chaine, chaine_sauvegarde);
        !          1901:                        free(chaine_sauvegarde);
        !          1902:                        strcat(chaine, " \"");
        !          1903:                        strcat(chaine, chaine_formatee);
        !          1904:                        free(chaine_formatee);
        !          1905:                        strcat(chaine, "\"");
        !          1906:                    }
        !          1907:                    else if ((*(*((struct_tableau *) (*s_objet).objet))
        !          1908:                            .elements[i]).type == NOM)
        !          1909:                    {
        !          1910:                        chaine = (unsigned char *)
        !          1911:                                malloc((strlen(chaine_formatee)
        !          1912:                                + strlen(chaine_sauvegarde) + 2)
        !          1913:                                * sizeof(unsigned char));
        !          1914: 
        !          1915:                        if (chaine == NULL)
        !          1916:                        {
        !          1917:                            (*s_etat_processus).erreur_systeme =
        !          1918:                                    d_es_allocation_memoire;
        !          1919:                            return(NULL);
        !          1920:                        }
        !          1921: 
        !          1922:                        sprintf(chaine, "%s %s", chaine_sauvegarde,
        !          1923:                                chaine_formatee);
        !          1924:                        free(chaine_formatee);
        !          1925:                    }
        !          1926:                    else
        !          1927:                    {
        !          1928:                        chaine = (unsigned char *)
        !          1929:                                malloc((strlen(chaine_formatee)
        !          1930:                                + strlen(chaine_sauvegarde) + 2)
        !          1931:                                * sizeof(unsigned char));
        !          1932: 
        !          1933:                        if (chaine == NULL)
        !          1934:                        {
        !          1935:                            (*s_etat_processus).erreur_systeme =
        !          1936:                                    d_es_allocation_memoire;
        !          1937:                            return(NULL);
        !          1938:                        }
        !          1939: 
        !          1940:                        strcpy(chaine, chaine_sauvegarde);
        !          1941:                        free(chaine_sauvegarde);
        !          1942:                        strcat(chaine, " ");
        !          1943:                        strcat(chaine, chaine_formatee);
        !          1944:                        free(chaine_formatee);
        !          1945:                    }
        !          1946:                }
        !          1947:            }
        !          1948: 
        !          1949:            chaine_sauvegarde = chaine;
        !          1950:            chaine = (unsigned char *) malloc((strlen(chaine_sauvegarde) + 4)
        !          1951:                    * sizeof(unsigned char));
        !          1952: 
        !          1953:            if (chaine == NULL)
        !          1954:            {
        !          1955:                (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
        !          1956:                return(NULL);
        !          1957:            }
        !          1958: 
        !          1959:            strcpy(chaine, chaine_sauvegarde);
        !          1960:            free(chaine_sauvegarde);
        !          1961:            strcat(chaine, " ]>");
        !          1962:        }
        !          1963:        else if ((*s_objet).type == MCX)
        !          1964:        {
        !          1965: 
        !          1966: /*
        !          1967: --------------------------------------------------------------------------------
        !          1968:   Matrice complexe
        !          1969: --------------------------------------------------------------------------------
        !          1970: */
        !          1971: 
        !          1972:            if ((format_sortie != 'S') && (format_sortie != 'F') &&
        !          1973:                    (format_sortie != 'I') && (format_sortie != 'E'))
        !          1974:            {
        !          1975:                (*s_etat_processus).erreur_execution =
        !          1976:                        d_ex_erreur_format_fichier;
        !          1977:                return(NULL);
        !          1978:            }
        !          1979: 
        !          1980:            nombre_lignes = (*((struct_matrice *) ((*s_objet).objet)))
        !          1981:                    .nombre_lignes;
        !          1982:            nombre_colonnes = (*((struct_matrice *) ((*s_objet).objet)))
        !          1983:                    .nombre_colonnes;
        !          1984: 
        !          1985:            chaine = (unsigned char *) malloc(3 * sizeof(unsigned char));
        !          1986: 
        !          1987:            if (chaine != NULL)
        !          1988:            {
        !          1989:                strcpy(chaine, "[[");
        !          1990: 
        !          1991:                for(i = 0; i < nombre_lignes; i++)
        !          1992:                {
        !          1993:                    for(j = 0; j < nombre_colonnes; j++)
        !          1994:                    {
        !          1995:                        if ((chaine_formatee =
        !          1996:                                formateur_fichier_nombre(s_etat_processus,
        !          1997:                                (void *) &(((struct_complexe16 **)
        !          1998:                                ((*((struct_matrice *)
        !          1999:                                ((*s_objet).objet))).tableau))[i][j]), 'C',
        !          2000:                                longueur, longueur_champ, format_sortie))
        !          2001:                                == NULL)
        !          2002:                        {
        !          2003:                            (*s_etat_processus).erreur_systeme =
        !          2004:                                    d_es_allocation_memoire;
        !          2005:                            return(NULL);
        !          2006:                        }
        !          2007: 
        !          2008:                        chaine_sauvegarde = chaine;
        !          2009:                        chaine = (unsigned char *) malloc(
        !          2010:                                (strlen(chaine_sauvegarde) +
        !          2011:                                strlen(chaine_formatee) + 2)
        !          2012:                                * sizeof(unsigned char));
        !          2013: 
        !          2014:                        if (chaine == NULL)
        !          2015:                        {
        !          2016:                            (*s_etat_processus).erreur_systeme =
        !          2017:                                    d_es_allocation_memoire;
        !          2018:                            return(NULL);
        !          2019:                        }
        !          2020: 
        !          2021:                        strcpy(chaine, chaine_sauvegarde);
        !          2022:                        free(chaine_sauvegarde);
        !          2023:                        strcat(chaine, " ");
        !          2024:                        strcat(chaine, chaine_formatee);
        !          2025:                        free(chaine_formatee);
        !          2026:                    }
        !          2027: 
        !          2028:                    chaine_sauvegarde = chaine;
        !          2029:                    if (test_cfsf(s_etat_processus, 45) == d_vrai)
        !          2030:                    {
        !          2031:                        chaine = (unsigned char *) malloc(
        !          2032:                                (strlen(chaine_sauvegarde) + 6)
        !          2033:                                * sizeof(unsigned char));
        !          2034: 
        !          2035:                        if (chaine == NULL)
        !          2036:                        {
        !          2037:                            (*s_etat_processus).erreur_systeme =
        !          2038:                                    d_es_allocation_memoire;
        !          2039:                            return(NULL);
        !          2040:                        }
        !          2041: 
        !          2042:                        strcpy(chaine, chaine_sauvegarde);
        !          2043:                        free(chaine_sauvegarde);
        !          2044:                        strcat(chaine, " ]\n [");
        !          2045:                    }
        !          2046:                    else
        !          2047:                    {
        !          2048:                        chaine = (unsigned char *) malloc(
        !          2049:                                (strlen(chaine_sauvegarde) + 4)
        !          2050:                                * sizeof(unsigned char));
        !          2051: 
        !          2052:                        if (chaine == NULL)
        !          2053:                        {
        !          2054:                            (*s_etat_processus).erreur_systeme =
        !          2055:                                    d_es_allocation_memoire;
        !          2056:                            return(NULL);
        !          2057:                        }
        !          2058: 
        !          2059:                        strcpy(chaine, chaine_sauvegarde);
        !          2060:                        free(chaine_sauvegarde);
        !          2061:                        strcat(chaine, " ][");
        !          2062:                    }
        !          2063:                }
        !          2064: 
        !          2065:                if (test_cfsf(s_etat_processus, 45) == d_vrai)
        !          2066:                {
        !          2067:                    chaine[strlen(chaine) - 3] = ']';
        !          2068:                    chaine[strlen(chaine) - 2] = 0;
        !          2069: 
        !          2070:                    chaine_sauvegarde = chaine;
        !          2071:                    chaine = (unsigned char *) malloc((strlen(chaine_sauvegarde)
        !          2072:                            + 1) * sizeof(unsigned char));
        !          2073: 
        !          2074:                    if (chaine == NULL)
        !          2075:                    {
        !          2076:                        (*s_etat_processus).erreur_systeme =
        !          2077:                                d_es_allocation_memoire;
        !          2078:                        return(NULL);
        !          2079:                    }
        !          2080: 
        !          2081:                    strcpy(chaine, chaine_sauvegarde);
        !          2082:                    free(chaine_sauvegarde);
        !          2083:                }
        !          2084:                else
        !          2085:                {
        !          2086:                    chaine[strlen(chaine) - 2] = ']';
        !          2087:                    chaine[strlen(chaine) - 1] = 0;
        !          2088: 
        !          2089:                    chaine_sauvegarde = chaine;
        !          2090:                    chaine = (unsigned char *) malloc((strlen(chaine_sauvegarde)
        !          2091:                            + 2) * sizeof(unsigned char));
        !          2092: 
        !          2093:                    if (chaine == NULL)
        !          2094:                    {
        !          2095:                        (*s_etat_processus).erreur_systeme =
        !          2096:                                d_es_allocation_memoire;
        !          2097:                        return(NULL);
        !          2098:                    }
        !          2099: 
        !          2100:                    strcpy(chaine, chaine_sauvegarde);
        !          2101:                    free(chaine_sauvegarde);
        !          2102:                    strcat(chaine, "]");
        !          2103:                }
        !          2104:            }
        !          2105:        }
        !          2106:        else if ((*s_objet).type == MIN)
        !          2107:        {
        !          2108: 
        !          2109: /*
        !          2110: --------------------------------------------------------------------------------
        !          2111:   Matrice entière
        !          2112: --------------------------------------------------------------------------------
        !          2113: */
        !          2114: 
        !          2115:            if ((format_sortie != 'S') && (format_sortie != 'F') &&
        !          2116:                    (format_sortie != 'I') && (format_sortie != 'E'))
        !          2117:            {
        !          2118:                (*s_etat_processus).erreur_execution =
        !          2119:                        d_ex_erreur_format_fichier;
        !          2120:                return(NULL);
        !          2121:            }
        !          2122: 
        !          2123:            nombre_lignes = (*((struct_matrice *) ((*s_objet).objet)))
        !          2124:                    .nombre_lignes;
        !          2125:            nombre_colonnes = (*((struct_matrice *) ((*s_objet).objet)))
        !          2126:                    .nombre_colonnes;
        !          2127: 
        !          2128:            chaine = (unsigned char *) malloc(3 * sizeof(unsigned char));
        !          2129: 
        !          2130:            if (chaine != NULL)
        !          2131:            {
        !          2132:                strcpy(chaine, "[[");
        !          2133: 
        !          2134:                for(i = 0; i < nombre_lignes; i++)
        !          2135:                {
        !          2136:                    for(j = 0; j < nombre_colonnes; j++)
        !          2137:                    {
        !          2138:                        if ((chaine_formatee =
        !          2139:                                formateur_fichier_nombre(s_etat_processus,
        !          2140:                                (void *) &(((integer8 **) ((*((struct_matrice *)
        !          2141:                                ((*s_objet).objet))).tableau))[i][j]), 'I',
        !          2142:                                longueur, longueur_champ, format_sortie))
        !          2143:                                == NULL)
        !          2144:                        {
        !          2145:                            (*s_etat_processus).erreur_systeme =
        !          2146:                                    d_es_allocation_memoire;
        !          2147:                            return(NULL);
        !          2148:                        }
        !          2149: 
        !          2150:                        chaine_sauvegarde = chaine;
        !          2151:                        chaine = (unsigned char *) malloc(
        !          2152:                                (strlen(chaine_sauvegarde) +
        !          2153:                                strlen(chaine_formatee) + 2)
        !          2154:                                * sizeof(unsigned char));
        !          2155: 
        !          2156:                        if (chaine == NULL)
        !          2157:                        {
        !          2158:                            (*s_etat_processus).erreur_systeme =
        !          2159:                                    d_es_allocation_memoire;
        !          2160:                            return(NULL);
        !          2161:                        }
        !          2162: 
        !          2163:                        strcpy(chaine, chaine_sauvegarde);
        !          2164:                        free(chaine_sauvegarde);
        !          2165:                        strcat(chaine, " ");
        !          2166:                        strcat(chaine, chaine_formatee);
        !          2167:                        free(chaine_formatee);
        !          2168:                    }
        !          2169: 
        !          2170:                    chaine_sauvegarde = chaine;
        !          2171:                    if (test_cfsf(s_etat_processus, 45) == d_vrai)
        !          2172:                    {
        !          2173:                        chaine = (unsigned char *) malloc(
        !          2174:                                (strlen(chaine_sauvegarde) + 6)
        !          2175:                                * sizeof(unsigned char));
        !          2176: 
        !          2177:                        if (chaine == NULL)
        !          2178:                        {
        !          2179:                            (*s_etat_processus).erreur_systeme =
        !          2180:                                    d_es_allocation_memoire;
        !          2181:                            return(NULL);
        !          2182:                        }
        !          2183: 
        !          2184:                        strcpy(chaine, chaine_sauvegarde);
        !          2185:                        free(chaine_sauvegarde);
        !          2186:                        strcat(chaine, " ]\n [");
        !          2187:                    }
        !          2188:                    else
        !          2189:                    {
        !          2190:                        chaine = (unsigned char *) malloc(
        !          2191:                                (strlen(chaine_sauvegarde) + 4)
        !          2192:                                * sizeof(unsigned char));
        !          2193: 
        !          2194:                        if (chaine == NULL)
        !          2195:                        {
        !          2196:                            (*s_etat_processus).erreur_systeme =
        !          2197:                                    d_es_allocation_memoire;
        !          2198:                            return(NULL);
        !          2199:                        }
        !          2200: 
        !          2201:                        strcpy(chaine, chaine_sauvegarde);
        !          2202:                        free(chaine_sauvegarde);
        !          2203:                        strcat(chaine, " ][");
        !          2204:                    }
        !          2205:                }
        !          2206: 
        !          2207:                if (test_cfsf(s_etat_processus, 45) == d_vrai)
        !          2208:                {
        !          2209:                    chaine[strlen(chaine) - 3] = ']';
        !          2210:                    chaine[strlen(chaine) - 2] = 0;
        !          2211: 
        !          2212:                    chaine_sauvegarde = chaine;
        !          2213:                    chaine = (unsigned char *) malloc((strlen(chaine_sauvegarde)
        !          2214:                            + 1) * sizeof(unsigned char));
        !          2215: 
        !          2216:                    if (chaine == NULL)
        !          2217:                    {
        !          2218:                        (*s_etat_processus).erreur_systeme =
        !          2219:                                d_es_allocation_memoire;
        !          2220:                        return(NULL);
        !          2221:                    }
        !          2222: 
        !          2223:                    strcpy(chaine, chaine_sauvegarde);
        !          2224:                    free(chaine_sauvegarde);
        !          2225:                }
        !          2226:                else
        !          2227:                {
        !          2228:                    chaine[strlen(chaine) - 2] = ']';
        !          2229:                    chaine[strlen(chaine) - 1] = 0;
        !          2230: 
        !          2231:                    chaine_sauvegarde = chaine;
        !          2232:                    chaine = (unsigned char *) malloc((strlen(chaine_sauvegarde)
        !          2233:                            + 2) * sizeof(unsigned char));
        !          2234: 
        !          2235:                    if (chaine == NULL)
        !          2236:                    {
        !          2237:                        (*s_etat_processus).erreur_systeme =
        !          2238:                                d_es_allocation_memoire;
        !          2239:                        return(NULL);
        !          2240:                    }
        !          2241: 
        !          2242:                    strcpy(chaine, chaine_sauvegarde);
        !          2243:                    free(chaine_sauvegarde);
        !          2244:                    strcat(chaine, "]");
        !          2245:                }
        !          2246:            }
        !          2247:        }
        !          2248:        else if ((*s_objet).type == MRL)
        !          2249:        {
        !          2250: 
        !          2251: /*
        !          2252: --------------------------------------------------------------------------------
        !          2253:   Matrice réelle
        !          2254: --------------------------------------------------------------------------------
        !          2255: */
        !          2256: 
        !          2257:            if ((format_sortie != 'S') && (format_sortie != 'F') &&
        !          2258:                    (format_sortie != 'I') && (format_sortie != 'E'))
        !          2259:            {
        !          2260:                (*s_etat_processus).erreur_execution =
        !          2261:                        d_ex_erreur_format_fichier;
        !          2262:                return(NULL);
        !          2263:            }
        !          2264: 
        !          2265:            nombre_lignes = (*((struct_matrice *) ((*s_objet).objet)))
        !          2266:                    .nombre_lignes;
        !          2267:            nombre_colonnes = (*((struct_matrice *) ((*s_objet).objet)))
        !          2268:                    .nombre_colonnes;
        !          2269: 
        !          2270:            chaine = (unsigned char *) malloc(3 * sizeof(unsigned char));
        !          2271: 
        !          2272:            if (chaine != NULL)
        !          2273:            {
        !          2274:                strcpy(chaine, "[[");
        !          2275: 
        !          2276:                for(i = 0; i < nombre_lignes; i++)
        !          2277:                {
        !          2278:                    for(j = 0; j < nombre_colonnes; j++)
        !          2279:                    {
        !          2280:                        if ((chaine_formatee =
        !          2281:                                formateur_fichier_nombre(s_etat_processus,
        !          2282:                                (void *) &(((real8 **) ((*((struct_matrice *)
        !          2283:                                ((*s_objet).objet))).tableau))[i][j]), 'R',
        !          2284:                                longueur, longueur_champ, format_sortie))
        !          2285:                                == NULL)
        !          2286:                        {
        !          2287:                            (*s_etat_processus).erreur_systeme =
        !          2288:                                    d_es_allocation_memoire;
        !          2289:                            return(NULL);
        !          2290:                        }
        !          2291: 
        !          2292:                        chaine_sauvegarde = chaine;
        !          2293:                        chaine = (unsigned char *) malloc(
        !          2294:                                (strlen(chaine_sauvegarde) +
        !          2295:                                strlen(chaine_formatee) + 2)
        !          2296:                                * sizeof(unsigned char));
        !          2297: 
        !          2298:                        if (chaine == NULL)
        !          2299:                        {
        !          2300:                            (*s_etat_processus).erreur_systeme =
        !          2301:                                    d_es_allocation_memoire;
        !          2302:                            return(NULL);
        !          2303:                        }
        !          2304: 
        !          2305:                        strcpy(chaine, chaine_sauvegarde);
        !          2306:                        free(chaine_sauvegarde);
        !          2307:                        strcat(chaine, " ");
        !          2308:                        strcat(chaine, chaine_formatee);
        !          2309:                        free(chaine_formatee);
        !          2310:                    }
        !          2311: 
        !          2312:                    chaine_sauvegarde = chaine;
        !          2313:                    if (test_cfsf(s_etat_processus, 45) == d_vrai)
        !          2314:                    {
        !          2315:                        chaine = (unsigned char *) malloc(
        !          2316:                                (strlen(chaine_sauvegarde) + 6)
        !          2317:                                * sizeof(unsigned char));
        !          2318: 
        !          2319:                        if (chaine == NULL)
        !          2320:                        {
        !          2321:                            (*s_etat_processus).erreur_systeme =
        !          2322:                                    d_es_allocation_memoire;
        !          2323:                            return(NULL);
        !          2324:                        }
        !          2325: 
        !          2326:                        strcpy(chaine, chaine_sauvegarde);
        !          2327:                        free(chaine_sauvegarde);
        !          2328:                        strcat(chaine, " ]\n [");
        !          2329:                    }
        !          2330:                    else
        !          2331:                    {
        !          2332:                        chaine = (unsigned char *) malloc(
        !          2333:                                (strlen(chaine_sauvegarde) + 4)
        !          2334:                                * sizeof(unsigned char));
        !          2335: 
        !          2336:                        if (chaine == NULL)
        !          2337:                        {
        !          2338:                            (*s_etat_processus).erreur_systeme =
        !          2339:                                    d_es_allocation_memoire;
        !          2340:                            return(NULL);
        !          2341:                        }
        !          2342: 
        !          2343:                        strcpy(chaine, chaine_sauvegarde);
        !          2344:                        free(chaine_sauvegarde);
        !          2345:                        strcat(chaine, " ][");
        !          2346:                    }
        !          2347:                }
        !          2348: 
        !          2349:                if (test_cfsf(s_etat_processus, 45) == d_vrai)
        !          2350:                {
        !          2351:                    chaine[strlen(chaine) - 3] = ']';
        !          2352:                    chaine[strlen(chaine) - 2] = 0;
        !          2353: 
        !          2354:                    chaine_sauvegarde = chaine;
        !          2355:                    chaine = (unsigned char *) malloc((strlen(chaine_sauvegarde)
        !          2356:                            + 1) * sizeof(unsigned char));
        !          2357: 
        !          2358:                    if (chaine == NULL)
        !          2359:                    {
        !          2360:                        (*s_etat_processus).erreur_systeme =
        !          2361:                                d_es_allocation_memoire;
        !          2362:                        return(NULL);
        !          2363:                    }
        !          2364: 
        !          2365:                    strcpy(chaine, chaine_sauvegarde);
        !          2366:                    free(chaine_sauvegarde);
        !          2367:                }
        !          2368:                else
        !          2369:                {
        !          2370:                    chaine[strlen(chaine) - 2] = ']';
        !          2371:                    chaine[strlen(chaine) - 1] = 0;
        !          2372: 
        !          2373:                    chaine_sauvegarde = chaine;
        !          2374:                    chaine = (unsigned char *) malloc((strlen(chaine_sauvegarde)
        !          2375:                            + 2) * sizeof(unsigned char));
        !          2376: 
        !          2377:                    if (chaine == NULL)
        !          2378:                    {
        !          2379:                        (*s_etat_processus).erreur_systeme =
        !          2380:                                d_es_allocation_memoire;
        !          2381:                        return(NULL);
        !          2382:                    }
        !          2383: 
        !          2384:                    strcpy(chaine, chaine_sauvegarde);
        !          2385:                    free(chaine_sauvegarde);
        !          2386:                    strcat(chaine, "]");
        !          2387:                }
        !          2388:            }
        !          2389:        }
        !          2390:        else if ((*s_objet).type == NOM)
        !          2391:        {
        !          2392: 
        !          2393: /*
        !          2394: --------------------------------------------------------------------------------
        !          2395:   Nom
        !          2396: --------------------------------------------------------------------------------
        !          2397: */
        !          2398: 
        !          2399:            chaine = (unsigned char *) malloc((strlen((*((struct_nom *)
        !          2400:                    (*s_objet).objet)).nom) + 3) * sizeof(unsigned char));
        !          2401: 
        !          2402:            if (chaine == NULL)
        !          2403:            {
        !          2404:                (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
        !          2405:                return(NULL);
        !          2406:            }
        !          2407: 
        !          2408:            sprintf(chaine, "'%s'", (*((struct_nom *) (*s_objet).objet)).nom);
        !          2409:        }
        !          2410:        else if ((*s_objet).type == REL)
        !          2411:        {
        !          2412: 
        !          2413: /*
        !          2414: --------------------------------------------------------------------------------
        !          2415:   Réel
        !          2416: --------------------------------------------------------------------------------
        !          2417: */
        !          2418: 
        !          2419:            if ((format_sortie != 'S') && (format_sortie != 'F') &&
        !          2420:                    (format_sortie != 'I') && (format_sortie != 'E'))
        !          2421:            {
        !          2422:                (*s_etat_processus).erreur_execution =
        !          2423:                        d_ex_erreur_format_fichier;
        !          2424:                return(NULL);
        !          2425:            }
        !          2426: 
        !          2427:            if ((chaine_formatee = formateur_fichier_nombre(s_etat_processus,
        !          2428:                    (void *) ((real8 *) ((*s_objet).objet)), 'R',
        !          2429:                    longueur, longueur_champ, format_sortie)) == NULL)
        !          2430:            {
        !          2431:                (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
        !          2432:                return(NULL);
        !          2433:            }
        !          2434: 
        !          2435:            chaine = (unsigned char *) malloc((strlen(chaine_formatee) + 1)
        !          2436:                    * sizeof(unsigned char));
        !          2437: 
        !          2438:            if (chaine == NULL)
        !          2439:            {
        !          2440:                (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
        !          2441:                return(NULL);
        !          2442:            }
        !          2443: 
        !          2444:            strcpy(chaine, chaine_formatee);
        !          2445:            free(chaine_formatee);
        !          2446:        }
        !          2447:        else if ((*s_objet).type == VCX)
        !          2448:        {
        !          2449: 
        !          2450: /*
        !          2451: --------------------------------------------------------------------------------
        !          2452:   Vecteur complexe
        !          2453: --------------------------------------------------------------------------------
        !          2454: */
        !          2455: 
        !          2456:            if ((format_sortie != 'S') && (format_sortie != 'F') &&
        !          2457:                    (format_sortie != 'I') && (format_sortie != 'E'))
        !          2458:            {
        !          2459:                (*s_etat_processus).erreur_execution =
        !          2460:                        d_ex_erreur_format_fichier;
        !          2461:                return(NULL);
        !          2462:            }
        !          2463: 
        !          2464:            nombre_colonnes = (*((struct_vecteur *) ((*s_objet).objet)))
        !          2465:                    .taille;
        !          2466: 
        !          2467:            chaine = (unsigned char *) malloc(2 * sizeof(unsigned char));
        !          2468: 
        !          2469:            if (chaine != NULL)
        !          2470:            {
        !          2471:                strcpy(chaine, "[");
        !          2472: 
        !          2473:                for(i = 0; i < nombre_colonnes; i++)
        !          2474:                {
        !          2475:                    if ((chaine_formatee =
        !          2476:                            formateur_fichier_nombre(s_etat_processus,
        !          2477:                            (void *) &(((struct_complexe16 *)
        !          2478:                            ((*((struct_vecteur *)
        !          2479:                            ((*s_objet).objet))).tableau))[i]), 'C',
        !          2480:                            longueur, longueur_champ, format_sortie)) == NULL)
        !          2481:                    {
        !          2482:                        (*s_etat_processus).erreur_systeme =
        !          2483:                                d_es_allocation_memoire;
        !          2484:                        return(NULL);
        !          2485:                    }
        !          2486: 
        !          2487:                    chaine_sauvegarde = chaine;
        !          2488:                    chaine = (unsigned char *) malloc(
        !          2489:                            (strlen(chaine_sauvegarde) + strlen(chaine_formatee)
        !          2490:                            + 2) * sizeof(unsigned char));
        !          2491: 
        !          2492:                    if (chaine == NULL)
        !          2493:                    {
        !          2494:                        (*s_etat_processus).erreur_systeme =
        !          2495:                                d_es_allocation_memoire;
        !          2496:                        return(NULL);
        !          2497:                    }
        !          2498: 
        !          2499:                    strcpy(chaine, chaine_sauvegarde);
        !          2500:                    free(chaine_sauvegarde);
        !          2501:                    strcat(chaine, " ");
        !          2502:                    strcat(chaine, chaine_formatee);
        !          2503:                    free(chaine_formatee);
        !          2504:                }
        !          2505: 
        !          2506:                chaine_sauvegarde = chaine;
        !          2507:                chaine = (unsigned char *) malloc(
        !          2508:                        (strlen(chaine_sauvegarde) + 3)
        !          2509:                        * sizeof(unsigned char));
        !          2510: 
        !          2511:                if (chaine == NULL)
        !          2512:                {
        !          2513:                    (*s_etat_processus).erreur_systeme =
        !          2514:                            d_es_allocation_memoire;
        !          2515:                    return(NULL);
        !          2516:                }
        !          2517: 
        !          2518:                strcpy(chaine, chaine_sauvegarde);
        !          2519:                free(chaine_sauvegarde);
        !          2520:                strcat(chaine, " ]");
        !          2521:            }
        !          2522:        }
        !          2523:        else if ((*s_objet).type == VIN)
        !          2524:        {
        !          2525: 
        !          2526: /*
        !          2527: --------------------------------------------------------------------------------
        !          2528:   Vecteur entier
        !          2529: --------------------------------------------------------------------------------
        !          2530: */
        !          2531: 
        !          2532:            if ((format_sortie != 'S') && (format_sortie != 'F') &&
        !          2533:                    (format_sortie != 'I') && (format_sortie != 'E'))
        !          2534:            {
        !          2535:                (*s_etat_processus).erreur_execution =
        !          2536:                        d_ex_erreur_format_fichier;
        !          2537:                return(NULL);
        !          2538:            }
        !          2539: 
        !          2540:            nombre_colonnes = (*((struct_vecteur *) ((*s_objet).objet)))
        !          2541:                    .taille;
        !          2542: 
        !          2543:            chaine = (unsigned char *) malloc(2 * sizeof(unsigned char));
        !          2544: 
        !          2545:            if (chaine != NULL)
        !          2546:            {
        !          2547:                strcpy(chaine, "[");
        !          2548: 
        !          2549:                for(i = 0; i < nombre_colonnes; i++)
        !          2550:                {
        !          2551:                    if ((chaine_formatee =
        !          2552:                            formateur_fichier_nombre(s_etat_processus,
        !          2553:                            (void *) &(((integer8 *) ((*((struct_vecteur *)
        !          2554:                            ((*s_objet).objet))).tableau))[i]), 'I',
        !          2555:                            longueur, longueur_champ, format_sortie)) == NULL)
        !          2556:                    {
        !          2557:                        (*s_etat_processus).erreur_systeme =
        !          2558:                                d_es_allocation_memoire;
        !          2559:                        return(NULL);
        !          2560:                    }
        !          2561: 
        !          2562:                    chaine_sauvegarde = chaine;
        !          2563:                    chaine = (unsigned char *) malloc(
        !          2564:                            (strlen(chaine_sauvegarde) + strlen(chaine_formatee)
        !          2565:                            + 2) * sizeof(unsigned char));
        !          2566: 
        !          2567:                    if (chaine == NULL)
        !          2568:                    {
        !          2569:                        (*s_etat_processus).erreur_systeme =
        !          2570:                                d_es_allocation_memoire;
        !          2571:                        return(NULL);
        !          2572:                    }
        !          2573: 
        !          2574:                    strcpy(chaine, chaine_sauvegarde);
        !          2575:                    free(chaine_sauvegarde);
        !          2576:                    strcat(chaine, " ");
        !          2577:                    strcat(chaine, chaine_formatee);
        !          2578:                    free(chaine_formatee);
        !          2579:                }
        !          2580: 
        !          2581:                chaine_sauvegarde = chaine;
        !          2582:                chaine = (unsigned char *) malloc(
        !          2583:                        (strlen(chaine_sauvegarde) + 3)
        !          2584:                        * sizeof(unsigned char));
        !          2585: 
        !          2586:                if (chaine == NULL)
        !          2587:                {
        !          2588:                    (*s_etat_processus).erreur_systeme =
        !          2589:                            d_es_allocation_memoire;
        !          2590:                    return(NULL);
        !          2591:                }
        !          2592: 
        !          2593:                strcpy(chaine, chaine_sauvegarde);
        !          2594:                free(chaine_sauvegarde);
        !          2595:                strcat(chaine, " ]");
        !          2596:            }
        !          2597:        }
        !          2598:        else if ((*s_objet).type == VRL)
        !          2599:        {
        !          2600: 
        !          2601: /*
        !          2602: --------------------------------------------------------------------------------
        !          2603:   Vecteur réel
        !          2604: --------------------------------------------------------------------------------
        !          2605: */
        !          2606: 
        !          2607:            if ((format_sortie != 'S') && (format_sortie != 'F') &&
        !          2608:                    (format_sortie != 'I') && (format_sortie != 'E'))
        !          2609:            {
        !          2610:                (*s_etat_processus).erreur_execution =
        !          2611:                        d_ex_erreur_format_fichier;
        !          2612:                return(NULL);
        !          2613:            }
        !          2614: 
        !          2615:            nombre_colonnes = (*((struct_vecteur *) ((*s_objet).objet)))
        !          2616:                    .taille;
        !          2617: 
        !          2618:            chaine = (unsigned char *) malloc(2 * sizeof(unsigned char));
        !          2619: 
        !          2620:            if (chaine != NULL)
        !          2621:            {
        !          2622:                strcpy(chaine, "[");
        !          2623: 
        !          2624:                for(i = 0; i < nombre_colonnes; i++)
        !          2625:                {
        !          2626:                    if ((chaine_formatee =
        !          2627:                            formateur_fichier_nombre(s_etat_processus,
        !          2628:                            (void *) &(((real8 *) ((*((struct_vecteur *)
        !          2629:                            ((*s_objet).objet))).tableau))[i]), 'R',
        !          2630:                            longueur, longueur_champ, format_sortie)) == NULL)
        !          2631:                    {
        !          2632:                        (*s_etat_processus).erreur_systeme =
        !          2633:                                d_es_allocation_memoire;
        !          2634:                        return(NULL);
        !          2635:                    }
        !          2636: 
        !          2637:                    chaine_sauvegarde = chaine;
        !          2638:                    chaine = (unsigned char *) malloc(
        !          2639:                            (strlen(chaine_sauvegarde) + strlen(chaine_formatee)
        !          2640:                            + 2) * sizeof(unsigned char));
        !          2641: 
        !          2642:                    if (chaine == NULL)
        !          2643:                    {
        !          2644:                        (*s_etat_processus).erreur_systeme =
        !          2645:                                d_es_allocation_memoire;
        !          2646:                        return(NULL);
        !          2647:                    }
        !          2648: 
        !          2649:                    strcpy(chaine, chaine_sauvegarde);
        !          2650:                    free(chaine_sauvegarde);
        !          2651:                    strcat(chaine, " ");
        !          2652:                    strcat(chaine, chaine_formatee);
        !          2653:                    free(chaine_formatee);
        !          2654:                }
        !          2655: 
        !          2656:                chaine_sauvegarde = chaine;
        !          2657:                chaine = (unsigned char *) malloc(
        !          2658:                        (strlen(chaine_sauvegarde) + 3)
        !          2659:                        * sizeof(unsigned char));
        !          2660: 
        !          2661:                if (chaine == NULL)
        !          2662:                {
        !          2663:                    (*s_etat_processus).erreur_systeme =
        !          2664:                            d_es_allocation_memoire;
        !          2665:                    return(NULL);
        !          2666:                }
        !          2667: 
        !          2668:                strcpy(chaine, chaine_sauvegarde);
        !          2669:                free(chaine_sauvegarde);
        !          2670:                strcat(chaine, " ]");
        !          2671:            }
        !          2672:        }
        !          2673:        else
        !          2674:        {
        !          2675:            // Type non exportable
        !          2676: 
        !          2677:            (*s_etat_processus).erreur_execution = d_ex_erreur_format_fichier;
        !          2678:            free(chaine);
        !          2679: 
        !          2680:            return(NULL);
        !          2681:        }
        !          2682: 
        !          2683:        (*longueur_effective) = strlen(chaine) + 1;
        !          2684:    }
        !          2685:    else
        !          2686:    {
        !          2687:        /*
        !          2688:         * Fichiers non formatés
        !          2689:         */
        !          2690: 
        !          2691: #define __zone() \
        !          2692:        do { int _i; for(_i = 0; _i < longueur_totale; _i++) \
        !          2693:            printf("%02X ", chaine[_i]); printf("\b\n"); } while(0)
        !          2694: 
        !          2695:        /*
        !          2696:         * Chaque enregistrement est composé d'une donnée (une liste)
        !          2697:         * suivie de sa longueur en octets et d'un champ binaire indiquant
        !          2698:         * le format (integer*1,2,4 ou 8) d'écriture de cette longueur.
        !          2699:         * Les données contenues dans ces fichiers sont associées à un
        !          2700:         * descripteur de type.
        !          2701:         *
        !          2702:         * Attention : les fichiers non formatés ne sont pas portables
        !          2703:         * d'une architecture à l'autre.
        !          2704:         *
        !          2705:         * Structure d'un enregistrement :
        !          2706:         * [en-tête][.........données..........][longueur + type de longueur]
        !          2707:         *
        !          2708:         * Longueur : (pour l'instruction backspace)
        !          2709:         *
        !          2710:         * 00 XXXXXX                longueur sur 6 bits
        !          2711:         * 01 ------                longueur sur 16 bits
        !          2712:         * 10 ------                longueur sur 32 bits
        !          2713:         * 11 ------                longueur sur 64 bits
        !          2714:         *
        !          2715:         * Structures des enregistrements :
        !          2716:         * chaque type de donnée est associé à une en-tête binaire comprenant
        !          2717:         * le type de données ainsi que toutes autres informations utiles.
        !          2718:         *
        !          2719:         * Représentation binaire :
        !          2720:         *
        !          2721:         * 1/ scalaires
        !          2722:         * 0000 XXXX                Binaire sur XXXX octets
        !          2723:         *
        !          2724:         * TYPE
        !          2725:         * 0001 00 00               integer*1
        !          2726:         * 0001 00 01               integer*2
        !          2727:         * 0001 00 10               integer*4
        !          2728:         * 0001 00 11               integer*8
        !          2729:         *
        !          2730:         * 0001 01 00               real*4
        !          2731:         * 0001 01 01               real*8
        !          2732:         *
        !          2733:         * 0001 10 00               complex*8
        !          2734:         * 0001 10 01               complex*16
        !          2735:         *
        !          2736:         * 0010 00 00               vecteur integer*1 (dimensions integer*1)
        !          2737:         * 0010 01 00               vecteur integer*1 (dimensions integer*2)
        !          2738:         * 0010 10 00               vecteur integer*1 (dimensions integer*4)
        !          2739:         * 0010 11 00               vecteur integer*1 (dimensions integer*8)
        !          2740:         * 0010 00 01               vecteur integer*2 (dimensions integer*1)
        !          2741:         * 0010 01 01               vecteur integer*2 (dimensions integer*2)
        !          2742:         * 0010 10 01               vecteur integer*2 (dimensions integer*4)
        !          2743:         * 0010 11 01               vecteur integer*2 (dimensions integer*8)
        !          2744:         * 0010 00 10               vecteur integer*4 (dimensions integer*1)
        !          2745:         * 0010 01 10               vecteur integer*4 (dimensions integer*2)
        !          2746:         * 0010 10 10               vecteur integer*4 (dimensions integer*4)
        !          2747:         * 0010 11 10               vecteur integer*4 (dimensions integer*8)
        !          2748:         * 0010 00 11               vecteur integer*8 (dimensions integer*1)
        !          2749:         * 0010 01 11               vecteur integer*8 (dimensions integer*2)
        !          2750:         * 0010 10 11               vecteur integer*8 (dimensions integer*4)
        !          2751:         * 0010 11 11               vecteur integer*8 (dimensions integer*8)
        !          2752:         *
        !          2753:         * 0011 00 00               matrice integer*1 (dimensions integer*1)
        !          2754:         * 0011 01 00               matrice integer*1 (dimensions integer*2)
        !          2755:         * 0011 10 00               matrice integer*1 (dimensions integer*4)
        !          2756:         * 0011 11 00               matrice integer*1 (dimensions integer*8)
        !          2757:         * 0011 00 01               matrice integer*2 (dimensions integer*1)
        !          2758:         * 0011 01 01               matrice integer*2 (dimensions integer*2)
        !          2759:         * 0011 10 01               matrice integer*2 (dimensions integer*4)
        !          2760:         * 0011 11 01               matrice integer*2 (dimensions integer*8)
        !          2761:         * 0011 00 10               matrice integer*4 (dimensions integer*1)
        !          2762:         * 0011 01 10               matrice integer*4 (dimensions integer*2)
        !          2763:         * 0011 10 10               matrice integer*4 (dimensions integer*4)
        !          2764:         * 0011 11 10               matrice integer*4 (dimensions integer*8)
        !          2765:         * 0011 00 11               matrice integer*8 (dimensions integer*1)
        !          2766:         * 0011 01 11               matrice integer*8 (dimensions integer*2)
        !          2767:         * 0011 10 11               matrice integer*8 (dimensions integer*4)
        !          2768:         * 0011 11 11               matrice integer*8 (dimensions integer*8)
        !          2769:         *
        !          2770:         * 0100 0 XXX               liste de longueur XXX
        !          2771:         * 0100 10 00               liste de longueur integer*1
        !          2772:         * 0100 10 01               liste de longueur integer*2
        !          2773:         * 0100 10 10               liste de longueur integer*4
        !          2774:         * 0100 10 11               liste de longueur integer*8
        !          2775:         *
        !          2776:         * 0101 0 XXX               nom de longueur XXX
        !          2777:         * 0101 10 LL               nom de longueur integer*LL
        !          2778:         *
        !          2779:         * 0110 0 XXX               expression RPN
        !          2780:         * 0110 10 LL
        !          2781:         *
        !          2782:         * 0111 0 XXX               expression algébrique
        !          2783:         * 0111 10 LL
        !          2784:         *
        !          2785:         * 1000 0 XXX               chaîne de caractères
        !          2786:         * 1000 10 LL
        !          2787:         *
        !          2788:         * 1001 0 XXX               table de longueur XXX
        !          2789:         * 1001 10 00               table de longueur integer*1
        !          2790:         * 1001 10 01               table de longueur integer*2
        !          2791:         * 1001 10 10               table de longueur integer*4
        !          2792:         * 1001 10 11               table de longueur integer*8
        !          2793:         *
        !          2794:         * Les longueurs indiquées par le champ LL suivent l'en-tête :
        !          2795:         * [En-tête][longueur_1][longueur_2][données]
        !          2796:         * le nombre de champs longueur dépendant des types d'enregistrement.
        !          2797:         *
        !          2798:         * Toutes les autres combinaisons sont invalides.
        !          2799:         */
        !          2800: 
        !          2801:        chaine = NULL;
        !          2802:        chaine_formatee = NULL;
        !          2803:        chaine_sauvegarde = NULL;
        !          2804: 
        !          2805:        strcpy(base, " ");
        !          2806: 
        !          2807:        longueur_binaire = 0;
        !          2808:        masque_binaire = 0;
        !          2809: 
        !          2810:        if ((*s_objet).type == ALG)
        !          2811:        {
        !          2812: 
        !          2813: /*
        !          2814: --------------------------------------------------------------------------------
        !          2815:   Expression algébrique
        !          2816: --------------------------------------------------------------------------------
        !          2817: */
        !          2818: 
        !          2819:            l_element_courant = (struct_liste_chainee *) (*s_objet).objet;
        !          2820: 
        !          2821:            while(l_element_courant != NULL)
        !          2822:            {
        !          2823:                if ((*(*l_element_courant).donnee).type == FCT)
        !          2824:                {
        !          2825:                    if ((strcmp((*((struct_fonction *) (*(*l_element_courant)
        !          2826:                            .donnee).objet)).nom_fonction, "<<") != 0) &&
        !          2827:                            (strcmp((*((struct_fonction *)
        !          2828:                            (*(*l_element_courant)
        !          2829:                            .donnee).objet)).nom_fonction, ">>") != 0))
        !          2830:                    {
        !          2831:                        if ((strcmp((*((struct_fonction *)
        !          2832:                                (*(*l_element_courant)
        !          2833:                                .donnee).objet)).nom_fonction, "+") == 0) ||
        !          2834:                                (strcmp((*((struct_fonction *)
        !          2835:                                (*(*l_element_courant).donnee).objet))
        !          2836:                                .nom_fonction, "-") == 0) || (strcmp(
        !          2837:                                (*((struct_fonction *) (*(*l_element_courant)
        !          2838:                                .donnee).objet)).nom_fonction, "*") == 0) ||
        !          2839:                                (strcmp((*((struct_fonction *)
        !          2840:                                (*(*l_element_courant).donnee).objet))
        !          2841:                                .nom_fonction,
        !          2842:                                "/") == 0) || (strcmp((*((struct_fonction *)
        !          2843:                                (*(*l_element_courant).donnee).objet))
        !          2844:                                .nom_fonction,
        !          2845:                                "^") == 0) || (strcmp((*((struct_fonction *)
        !          2846:                                (*(*l_element_courant).donnee).objet))
        !          2847:                                .nom_fonction,
        !          2848:                                "<") == 0) || (strcmp((*((struct_fonction *)
        !          2849:                                (*(*l_element_courant).donnee).objet))
        !          2850:                                .nom_fonction,
        !          2851:                                ">") == 0) || (strcmp((*((struct_fonction *)
        !          2852:                                (*(*l_element_courant).donnee).objet))
        !          2853:                                .nom_fonction,
        !          2854:                                "==") == 0) || (strcmp((*((struct_fonction *)
        !          2855:                                (*(*l_element_courant).donnee).objet))
        !          2856:                                .nom_fonction,
        !          2857:                                "<>") == 0) || (strcmp((*((struct_fonction *)
        !          2858:                                (*(*l_element_courant).donnee).objet))
        !          2859:                                .nom_fonction,
        !          2860:                                "<=") == 0) || (strcmp((*((struct_fonction *)
        !          2861:                                (*(*l_element_courant).donnee).objet))
        !          2862:                                .nom_fonction,
        !          2863:                                "=<") == 0) || (strcmp((*((struct_fonction *)
        !          2864:                                (*(*l_element_courant).donnee).objet))
        !          2865:                                .nom_fonction,
        !          2866:                                ">=") == 0) || (strcmp((*((struct_fonction *)
        !          2867:                                (*(*l_element_courant).donnee).objet))
        !          2868:                                .nom_fonction,
        !          2869:                                "=>") == 0))
        !          2870:                        {
        !          2871:                            if (depilement(s_etat_processus,
        !          2872:                                    &((*s_etat_processus)
        !          2873:                                    .l_base_pile), &s_sous_objet_2) == d_erreur)
        !          2874:                            {
        !          2875:                                return(NULL);
        !          2876:                            }
        !          2877: 
        !          2878:                            chaine_sauvegarde = (*s_etat_processus)
        !          2879:                                    .instruction_courante;
        !          2880: 
        !          2881:                            if (((*s_etat_processus).instruction_courante =
        !          2882:                                    (unsigned char *) malloc((strlen(
        !          2883:                                    (unsigned char *) (*s_sous_objet_2).objet)
        !          2884:                                    + 2 + 1) * sizeof(unsigned char))) == NULL)
        !          2885:                            {
        !          2886:                                (*s_etat_processus).instruction_courante =
        !          2887:                                        chaine_sauvegarde;
        !          2888:                                (*s_etat_processus).erreur_systeme =
        !          2889:                                        d_es_allocation_memoire;
        !          2890:                                return(NULL);
        !          2891:                            }
        !          2892: 
        !          2893:                            sprintf((*s_etat_processus).instruction_courante,
        !          2894:                                    "'%s'", (unsigned char *)
        !          2895:                                    (*s_sous_objet_2).objet);
        !          2896: 
        !          2897:                            presence_signe = (((*s_etat_processus)
        !          2898:                                    .instruction_courante[1] == '+')
        !          2899:                                    || ((*s_etat_processus)
        !          2900:                                    .instruction_courante[1]
        !          2901:                                    == '-')) ? d_vrai : d_faux;
        !          2902: 
        !          2903:                            recherche_type(s_etat_processus);
        !          2904: 
        !          2905:                            if ((*s_etat_processus).erreur_execution != d_ex)
        !          2906:                            {
        !          2907:                                // Aucune erreur ne peut être renvoyée.
        !          2908: 
        !          2909:                                return(NULL);
        !          2910:                            }
        !          2911: 
        !          2912:                            if (depilement(s_etat_processus,
        !          2913:                                    &((*s_etat_processus)
        !          2914:                                    .l_base_pile), &s_sous_objet_3) == d_erreur)
        !          2915:                            {
        !          2916:                                return(NULL);
        !          2917:                            }
        !          2918: 
        !          2919:                            free((*s_etat_processus).instruction_courante);
        !          2920: 
        !          2921:                            (*s_etat_processus).instruction_courante =
        !          2922:                                    chaine_sauvegarde;
        !          2923: 
        !          2924:                            autorisation_parenthese = d_faux;
        !          2925: 
        !          2926:                            if ((*s_sous_objet_3).type == ALG)
        !          2927:                            {
        !          2928:                                l_atome = (struct_liste_chainee *)
        !          2929:                                        (*s_sous_objet_3).objet;
        !          2930:                                chaine_fonction = "";
        !          2931:                                nombre_arguments_fonction = 0;
        !          2932: 
        !          2933:                                while(l_atome != NULL)
        !          2934:                                {
        !          2935:                                    if ((*(*l_atome).donnee).type == FCT)
        !          2936:                                    {
        !          2937:                                        if (strcmp((*((struct_fonction *)
        !          2938:                                                (*(*l_atome).donnee).objet))
        !          2939:                                                .nom_fonction, ">>") != 0)
        !          2940:                                        {
        !          2941:                                            chaine_fonction =
        !          2942:                                                    (*((struct_fonction *)
        !          2943:                                                    (*(*l_atome).donnee).objet))
        !          2944:                                                    .nom_fonction;
        !          2945:                                            nombre_arguments_fonction =
        !          2946:                                                    (*((struct_fonction *)
        !          2947:                                                    (*(*l_atome).donnee).objet))
        !          2948:                                                    .nombre_arguments;
        !          2949:                                        }
        !          2950:                                    }
        !          2951: 
        !          2952:                                    l_atome = (*l_atome).suivant;
        !          2953:                                }
        !          2954: 
        !          2955:                                if (strcmp((*((struct_fonction *)
        !          2956:                                        (*(*l_element_courant).donnee).objet))
        !          2957:                                        .nom_fonction, "+") == 0)
        !          2958:                                {
        !          2959:                                    if ((strcmp(chaine_fonction, "AND") == 0) ||
        !          2960:                                            (strcmp(chaine_fonction, "XOR") ==
        !          2961:                                            0) || (strcmp(chaine_fonction, "OR")
        !          2962:                                            == 0))
        !          2963:                                    {
        !          2964:                                        autorisation_parenthese = d_vrai;
        !          2965:                                    }
        !          2966:                                }
        !          2967:                                else if (strcmp((*((struct_fonction *)
        !          2968:                                        (*(*l_element_courant).donnee).objet))
        !          2969:                                        .nom_fonction, "-") == 0)
        !          2970:                                {
        !          2971:                                    if (nombre_arguments_fonction != 0)
        !          2972:                                    {
        !          2973:                                        autorisation_parenthese = d_faux;
        !          2974:                                    }
        !          2975:                                    else
        !          2976:                                    {
        !          2977:                                        autorisation_parenthese = d_vrai;
        !          2978:                                    }
        !          2979:                                }
        !          2980:                                else if (strcmp((*((struct_fonction *)
        !          2981:                                        (*(*l_element_courant).donnee).objet))
        !          2982:                                        .nom_fonction, "*") == 0)
        !          2983:                                {
        !          2984:                                    if ((strcmp(chaine_fonction, "+") == 0) ||
        !          2985:                                            (strcmp(chaine_fonction, "-") == 0)
        !          2986:                                            || (strcmp(chaine_fonction, "AND")
        !          2987:                                            == 0) || (strcmp(chaine_fonction,
        !          2988:                                            "XOR") == 0) || (strcmp(
        !          2989:                                            chaine_fonction, "OR") == 0))
        !          2990:                                    {
        !          2991:                                        autorisation_parenthese = d_vrai;
        !          2992:                                    }
        !          2993:                                }
        !          2994:                                else if (strcmp((*((struct_fonction *)
        !          2995:                                        (*(*l_element_courant).donnee).objet))
        !          2996:                                        .nom_fonction, "/") == 0)
        !          2997:                                {
        !          2998:                                    if (nombre_arguments_fonction != 0)
        !          2999:                                    {
        !          3000:                                        autorisation_parenthese = d_faux;
        !          3001:                                    }
        !          3002:                                    else
        !          3003:                                    {
        !          3004:                                        autorisation_parenthese = d_vrai;
        !          3005:                                    }
        !          3006:                                }
        !          3007:                                else if ((strcmp((*((struct_fonction *)
        !          3008:                                        (*(*l_element_courant).donnee).objet))
        !          3009:                                        .nom_fonction, "^") == 0))
        !          3010:                                {
        !          3011:                                    if (nombre_arguments_fonction != 0)
        !          3012:                                    {
        !          3013:                                        autorisation_parenthese = d_faux;
        !          3014:                                    }
        !          3015:                                    else
        !          3016:                                    {
        !          3017:                                        autorisation_parenthese = d_vrai;
        !          3018:                                    }
        !          3019:                                }
        !          3020:                            }
        !          3021: 
        !          3022:                            if ((autorisation_parenthese == d_vrai) ||
        !          3023:                                    (presence_signe == d_vrai))
        !          3024:                            {
        !          3025:                                chaine_sauvegarde = (unsigned char *)
        !          3026:                                        (*s_sous_objet_2).objet;
        !          3027: 
        !          3028:                                if (((*s_sous_objet_2).objet = (void *)
        !          3029:                                        malloc((strlen(chaine_sauvegarde) + 2
        !          3030:                                        + 1) * sizeof(unsigned char))) == NULL)
        !          3031:                                {
        !          3032:                                    (*s_etat_processus).erreur_systeme =
        !          3033:                                            d_es_allocation_memoire;
        !          3034:                                    return(NULL);
        !          3035:                                }
        !          3036: 
        !          3037:                                sprintf((unsigned char *) (*s_sous_objet_2)
        !          3038:                                        .objet, "(%s)", chaine_sauvegarde);
        !          3039:                                free(chaine_sauvegarde);
        !          3040:                            }
        !          3041: 
        !          3042:                            liberation(s_etat_processus, s_sous_objet_3);
        !          3043: 
        !          3044:                            if (depilement(s_etat_processus,
        !          3045:                                    &((*s_etat_processus)
        !          3046:                                    .l_base_pile), &s_sous_objet_1) == d_erreur)
        !          3047:                            {
        !          3048:                                return(NULL);
        !          3049:                            }
        !          3050: 
        !          3051:                            chaine_sauvegarde = (*s_etat_processus)
        !          3052:                                    .instruction_courante;
        !          3053: 
        !          3054:                            if (((*s_etat_processus).instruction_courante =
        !          3055:                                    (unsigned char *) malloc((strlen(
        !          3056:                                    (unsigned char *) (*s_sous_objet_1).objet)
        !          3057:                                    + 2 + 1) * sizeof(unsigned char))) == NULL)
        !          3058:                            {
        !          3059:                                (*s_etat_processus).instruction_courante =
        !          3060:                                        chaine_sauvegarde;
        !          3061:                                (*s_etat_processus).erreur_systeme =
        !          3062:                                        d_es_allocation_memoire;
        !          3063:                                return(NULL);
        !          3064:                            }
        !          3065: 
        !          3066:                            sprintf((*s_etat_processus).instruction_courante,
        !          3067:                                    "'%s'", (unsigned char *)
        !          3068:                                    (*s_sous_objet_1).objet);
        !          3069: 
        !          3070:                            recherche_type(s_etat_processus);
        !          3071: 
        !          3072:                            if ((*s_etat_processus).erreur_execution != d_ex)
        !          3073:                            {
        !          3074:                                // Aucune erreur ne peut être renvoyée.
        !          3075: 
        !          3076:                                return(NULL);
        !          3077:                            }
        !          3078: 
        !          3079:                            if (depilement(s_etat_processus,
        !          3080:                                    &((*s_etat_processus)
        !          3081:                                    .l_base_pile), &s_sous_objet_3) == d_erreur)
        !          3082:                            {
        !          3083:                                return(NULL);
        !          3084:                            }
        !          3085: 
        !          3086:                            free((*s_etat_processus).instruction_courante);
        !          3087: 
        !          3088:                            (*s_etat_processus).instruction_courante =
        !          3089:                                    chaine_sauvegarde;
        !          3090: 
        !          3091:                            autorisation_parenthese = d_faux;
        !          3092: 
        !          3093:                            if ((*s_sous_objet_3).type == ALG)
        !          3094:                            {
        !          3095:                                l_atome = (struct_liste_chainee *)
        !          3096:                                        (*s_sous_objet_3).objet;
        !          3097:                                chaine_fonction = "";
        !          3098: 
        !          3099:                                while(l_atome != NULL)
        !          3100:                                {
        !          3101:                                    if ((*(*l_atome).donnee).type == FCT)
        !          3102:                                    {
        !          3103:                                        if (strcmp((*((struct_fonction *)
        !          3104:                                                (*(*l_atome).donnee).objet))
        !          3105:                                                .nom_fonction, ">>") != 0)
        !          3106:                                        {
        !          3107:                                            chaine_fonction =
        !          3108:                                                    (*((struct_fonction *)
        !          3109:                                                    (*(*l_atome).donnee).objet))
        !          3110:                                                    .nom_fonction;
        !          3111:                                        }
        !          3112:                                    }
        !          3113: 
        !          3114:                                    l_atome = (*l_atome).suivant;
        !          3115:                                }
        !          3116: 
        !          3117:                                if ((strcmp((*((struct_fonction *)
        !          3118:                                        (*(*l_element_courant).donnee).objet))
        !          3119:                                        .nom_fonction, "+") == 0) ||
        !          3120:                                        (strcmp((*((struct_fonction *)
        !          3121:                                        (*(*l_element_courant).donnee).objet))
        !          3122:                                        .nom_fonction, "-") == 0))
        !          3123:                                {
        !          3124:                                    if ((strcmp(chaine_fonction, "AND") == 0) ||
        !          3125:                                            (strcmp(chaine_fonction, "XOR") ==
        !          3126:                                            0) || (strcmp(chaine_fonction, "OR")
        !          3127:                                            == 0))
        !          3128:                                    {
        !          3129:                                        autorisation_parenthese = d_vrai;
        !          3130:                                    }
        !          3131:                                }
        !          3132:                                else if ((strcmp((*((struct_fonction *)
        !          3133:                                        (*(*l_element_courant).donnee).objet))
        !          3134:                                        .nom_fonction, "*") == 0) ||
        !          3135:                                        (strcmp((*((struct_fonction *)
        !          3136:                                        (*(*l_element_courant).donnee).objet))
        !          3137:                                        .nom_fonction, "/") == 0))
        !          3138:                                {
        !          3139:                                    if ((strcmp(chaine_fonction, "+") == 0) ||
        !          3140:                                            (strcmp(chaine_fonction, "-") == 0)
        !          3141:                                            || (strcmp(chaine_fonction, "AND")
        !          3142:                                            == 0) || (strcmp(chaine_fonction,
        !          3143:                                            "XOR") == 0) || (strcmp(
        !          3144:                                            chaine_fonction, "OR") == 0))
        !          3145:                                    {
        !          3146:                                        autorisation_parenthese = d_vrai;
        !          3147:                                    }
        !          3148:                                }
        !          3149:                                else if ((strcmp((*((struct_fonction *)
        !          3150:                                        (*(*l_element_courant).donnee).objet))
        !          3151:                                        .nom_fonction, "^") == 0))
        !          3152:                                {
        !          3153:                                    autorisation_parenthese = d_vrai;
        !          3154:                                }
        !          3155:                            }
        !          3156: 
        !          3157:                            if (autorisation_parenthese == d_vrai)
        !          3158:                            {
        !          3159:                                chaine_sauvegarde = (unsigned char *)
        !          3160:                                        (*s_sous_objet_1).objet;
        !          3161: 
        !          3162:                                if (((*s_sous_objet_1).objet = (void *)
        !          3163:                                        malloc((strlen(chaine_sauvegarde) + 2
        !          3164:                                        + 1) * sizeof(unsigned char))) == NULL)
        !          3165:                                {
        !          3166:                                    (*s_etat_processus).erreur_systeme =
        !          3167:                                            d_es_allocation_memoire;
        !          3168:                                    return(NULL);
        !          3169:                                }
        !          3170: 
        !          3171:                                sprintf((unsigned char *) (*s_sous_objet_1)
        !          3172:                                        .objet, "(%s)", chaine_sauvegarde);
        !          3173:                                free(chaine_sauvegarde);
        !          3174:                            }
        !          3175: 
        !          3176:                            liberation(s_etat_processus, s_sous_objet_3);
        !          3177: 
        !          3178:                            if ((s_sous_objet = allocation(s_etat_processus,
        !          3179:                                    CHN)) == NULL)
        !          3180:                            {
        !          3181:                                (*s_etat_processus).erreur_systeme =
        !          3182:                                        d_es_allocation_memoire;
        !          3183:                                return(NULL);
        !          3184:                            }
        !          3185: 
        !          3186:                            if (((*s_sous_objet).objet = (void *)
        !          3187:                                    malloc((strlen(
        !          3188:                                    (unsigned char *) (*s_sous_objet_1).objet) +
        !          3189:                                    strlen((*((struct_fonction *)
        !          3190:                                    (*(*l_element_courant).donnee).objet))
        !          3191:                                    .nom_fonction) + strlen((unsigned char *)
        !          3192:                                    (*s_sous_objet_2).objet) + 1) *
        !          3193:                                    sizeof(unsigned char))) == NULL)
        !          3194:                            {
        !          3195:                                (*s_etat_processus).erreur_systeme =
        !          3196:                                        d_es_allocation_memoire;
        !          3197:                                return(NULL);
        !          3198:                            }
        !          3199: 
        !          3200:                            sprintf((unsigned char *) (*s_sous_objet).objet,
        !          3201:                                    "%s%s%s", (unsigned char *)
        !          3202:                                    (*s_sous_objet_1)
        !          3203:                                    .objet, (*((struct_fonction *)
        !          3204:                                    (*(*l_element_courant).donnee).objet))
        !          3205:                                    .nom_fonction, (unsigned char *)
        !          3206:                                    (*s_sous_objet_2).objet);
        !          3207: 
        !          3208:                            liberation(s_etat_processus, s_sous_objet_1);
        !          3209:                            liberation(s_etat_processus, s_sous_objet_2);
        !          3210: 
        !          3211:                            if (empilement(s_etat_processus,
        !          3212:                                    &((*s_etat_processus)
        !          3213:                                    .l_base_pile), s_sous_objet) == d_erreur)
        !          3214:                            {
        !          3215:                                return(NULL);
        !          3216:                            }
        !          3217:                        }
        !          3218:                        else if (strcmp((*((struct_fonction *)
        !          3219:                                (*(*l_element_courant).donnee).objet))
        !          3220:                                .nom_fonction, "=") == 0)
        !          3221:                        {
        !          3222:                            if (depilement(s_etat_processus,
        !          3223:                                    &((*s_etat_processus).l_base_pile),
        !          3224:                                    &s_sous_objet_2) == d_erreur)
        !          3225:                            {
        !          3226:                                return(NULL);
        !          3227:                            }
        !          3228: 
        !          3229:                            if (depilement(s_etat_processus,
        !          3230:                                    &((*s_etat_processus).l_base_pile),
        !          3231:                                    &s_sous_objet_1) == d_erreur)
        !          3232:                            {
        !          3233:                                return(NULL);
        !          3234:                            }
        !          3235: 
        !          3236:                            if ((s_sous_objet = allocation(s_etat_processus,
        !          3237:                                    CHN)) == NULL)
        !          3238:                            {
        !          3239:                                (*s_etat_processus).erreur_systeme =
        !          3240:                                        d_es_allocation_memoire;
        !          3241:                                return(NULL);
        !          3242:                            }
        !          3243: 
        !          3244:                            autorisation_parenthese = d_vrai;
        !          3245:                            l_atome = l_element_courant;
        !          3246: 
        !          3247:                            if (l_atome != NULL)
        !          3248:                            {
        !          3249:                                if ((*l_atome).suivant != NULL)
        !          3250:                                {
        !          3251:                                    l_atome = (*l_atome).suivant;
        !          3252: 
        !          3253:                                    if ((*(*l_atome).donnee).type == FCT)
        !          3254:                                    {
        !          3255:                                        if (strcmp((*((struct_fonction *)
        !          3256:                                                (*(*l_atome).donnee).objet))
        !          3257:                                                .nom_fonction, ">>") == 0)
        !          3258:                                        {
        !          3259:                                            if ((*l_atome).suivant == NULL)
        !          3260:                                            {
        !          3261:                                                autorisation_parenthese =
        !          3262:                                                        d_faux;
        !          3263:                                            }
        !          3264:                                        }
        !          3265:                                    }
        !          3266:                                }
        !          3267:                            }
        !          3268: 
        !          3269:                            if (autorisation_parenthese == d_vrai)
        !          3270:                            {
        !          3271:                                if (((*s_sous_objet).objet =
        !          3272:                                        (void *) malloc((strlen(
        !          3273:                                        (unsigned char *) (*s_sous_objet_1)
        !          3274:                                        .objet) + strlen((*((struct_fonction *)
        !          3275:                                        (*(*l_element_courant).donnee).objet))
        !          3276:                                        .nom_fonction) +
        !          3277:                                        strlen((unsigned char *)
        !          3278:                                        (*s_sous_objet_2).objet) + 2 + 1) *
        !          3279:                                        sizeof(unsigned char))) == NULL)
        !          3280:                                {
        !          3281:                                    (*s_etat_processus).erreur_systeme =
        !          3282:                                            d_es_allocation_memoire;
        !          3283:                                    return(NULL);
        !          3284:                                }
        !          3285: 
        !          3286:                                sprintf((unsigned char *) (*s_sous_objet).objet,
        !          3287:                                        "(%s%s%s)", (unsigned char *)
        !          3288:                                        (*s_sous_objet_1)
        !          3289:                                        .objet, (*((struct_fonction *)
        !          3290:                                        (*(*l_element_courant).donnee).objet))
        !          3291:                                        .nom_fonction, (unsigned char *)
        !          3292:                                        (*s_sous_objet_2).objet);
        !          3293:                            }
        !          3294:                            else
        !          3295:                            {
        !          3296:                                if (((*s_sous_objet).objet =
        !          3297:                                        (void *) malloc((strlen(
        !          3298:                                        (unsigned char *) (*s_sous_objet_1)
        !          3299:                                        .objet) + strlen((*((struct_fonction *)
        !          3300:                                        (*(*l_element_courant).donnee).objet))
        !          3301:                                        .nom_fonction) + strlen(
        !          3302:                                        (unsigned char *) (*s_sous_objet_2)
        !          3303:                                        .objet) + 1) * sizeof(unsigned char)))
        !          3304:                                        == NULL)
        !          3305:                                {
        !          3306:                                    (*s_etat_processus).erreur_systeme =
        !          3307:                                            d_es_allocation_memoire;
        !          3308:                                    return(NULL);
        !          3309:                                }
        !          3310: 
        !          3311:                                sprintf((unsigned char *) (*s_sous_objet).objet,
        !          3312:                                        "%s%s%s", (unsigned char *)
        !          3313:                                        (*s_sous_objet_1)
        !          3314:                                        .objet, (*((struct_fonction *)
        !          3315:                                        (*(*l_element_courant).donnee).objet))
        !          3316:                                        .nom_fonction, (unsigned char *)
        !          3317:                                        (*s_sous_objet_2).objet);
        !          3318:                            }
        !          3319: 
        !          3320:                            liberation(s_etat_processus, s_sous_objet_1);
        !          3321:                            liberation(s_etat_processus, s_sous_objet_2);
        !          3322: 
        !          3323:                            if (empilement(s_etat_processus,
        !          3324:                                    &((*s_etat_processus).l_base_pile),
        !          3325:                                    s_sous_objet) == d_erreur)
        !          3326:                            {
        !          3327:                                return(NULL);
        !          3328:                            }
        !          3329:                        }
        !          3330:                        else if (strcmp((*((struct_fonction *)
        !          3331:                                (*(*l_element_courant).donnee).objet))
        !          3332:                                .nom_fonction,
        !          3333:                                "NOT") == 0)
        !          3334:                        {
        !          3335:                            if (depilement(s_etat_processus,
        !          3336:                                    &((*s_etat_processus)
        !          3337:                                    .l_base_pile), &s_sous_objet_1) == d_erreur)
        !          3338:                            {
        !          3339:                                return(NULL);
        !          3340:                            }
        !          3341: 
        !          3342:                            if ((s_sous_objet = allocation(s_etat_processus,
        !          3343:                                    CHN)) == NULL)
        !          3344:                            {
        !          3345:                                (*s_etat_processus).erreur_systeme =
        !          3346:                                        d_es_allocation_memoire;
        !          3347:                                return(NULL);
        !          3348:                            }
        !          3349: 
        !          3350:                            if (((*s_sous_objet).objet = (unsigned char *)
        !          3351:                                    malloc(
        !          3352:                                    (strlen((unsigned char *) (*s_sous_objet_1)
        !          3353:                                    .objet) + 4 + 1) * sizeof(unsigned char)))
        !          3354:                                    == NULL)
        !          3355:                            {
        !          3356:                                (*s_etat_processus).erreur_systeme =
        !          3357:                                        d_es_allocation_memoire;
        !          3358:                                return(NULL);
        !          3359:                            }
        !          3360: 
        !          3361:                            sprintf((unsigned char *) (*s_sous_objet).objet,
        !          3362:                                    "%s %s", (*((struct_fonction *)
        !          3363:                                    (*(*l_element_courant).donnee).objet))
        !          3364:                                    .nom_fonction, (unsigned char *)
        !          3365:                                    (*s_sous_objet_1).objet );
        !          3366: 
        !          3367:                            liberation(s_etat_processus, s_sous_objet_1);
        !          3368: 
        !          3369:                            if (empilement(s_etat_processus,
        !          3370:                                    &((*s_etat_processus)
        !          3371:                                    .l_base_pile), s_sous_objet) == d_erreur)
        !          3372:                            {
        !          3373:                                return(NULL);
        !          3374:                            }
        !          3375:                        }
        !          3376:                        else if ((strcmp((*((struct_fonction *)
        !          3377:                                (*(*l_element_courant).donnee).objet))
        !          3378:                                .nom_fonction,
        !          3379:                                "OR") == 0) || (strcmp((*((struct_fonction *)
        !          3380:                                (*(*l_element_courant).donnee).objet))
        !          3381:                                .nom_fonction,
        !          3382:                                "XOR") == 0) || (strcmp((*((struct_fonction *)
        !          3383:                                (*(*l_element_courant).donnee).objet))
        !          3384:                                .nom_fonction,
        !          3385:                                "AND") == 0))
        !          3386:                        {
        !          3387:                            if (depilement(s_etat_processus,
        !          3388:                                    &((*s_etat_processus)
        !          3389:                                    .l_base_pile), &s_sous_objet_2) == d_erreur)
        !          3390:                            {
        !          3391:                                return(NULL);
        !          3392:                            }
        !          3393: 
        !          3394:                            if (depilement(s_etat_processus,
        !          3395:                                    &((*s_etat_processus)
        !          3396:                                    .l_base_pile), &s_sous_objet_1) == d_erreur)
        !          3397:                            {
        !          3398:                                return(NULL);
        !          3399:                            }
        !          3400: 
        !          3401:                            if ((s_sous_objet = allocation(s_etat_processus,
        !          3402:                                    CHN)) == NULL)
        !          3403:                            {
        !          3404:                                (*s_etat_processus).erreur_systeme =
        !          3405:                                        d_es_allocation_memoire;
        !          3406:                                return(NULL);
        !          3407:                            }
        !          3408: 
        !          3409:                            if (((*s_sous_objet).objet = (void *)
        !          3410:                                    malloc((strlen(
        !          3411:                                    (unsigned char *) (*s_sous_objet_1).objet) +
        !          3412:                                    strlen((*((struct_fonction *)
        !          3413:                                    (*(*l_element_courant).donnee).objet))
        !          3414:                                    .nom_fonction) + strlen((unsigned char *)
        !          3415:                                    (*s_sous_objet_2).objet) + 2 + 1) *
        !          3416:                                    sizeof(unsigned char))) == NULL)
        !          3417:                            {
        !          3418:                                (*s_etat_processus).erreur_systeme =
        !          3419:                                        d_es_allocation_memoire;
        !          3420:                                return(NULL);
        !          3421:                            }
        !          3422: 
        !          3423:                            sprintf((unsigned char *) (*s_sous_objet).objet,
        !          3424:                                    "%s %s %s", (unsigned char *)
        !          3425:                                    (*s_sous_objet_1)
        !          3426:                                    .objet, (*((struct_fonction *)
        !          3427:                                    (*(*l_element_courant).donnee).objet))
        !          3428:                                    .nom_fonction, (unsigned char *)
        !          3429:                                    (*s_sous_objet_2).objet);
        !          3430: 
        !          3431:                            liberation(s_etat_processus, s_sous_objet_1);
        !          3432:                            liberation(s_etat_processus, s_sous_objet_2);
        !          3433: 
        !          3434:                            if (empilement(s_etat_processus,
        !          3435:                                    &((*s_etat_processus)
        !          3436:                                    .l_base_pile), s_sous_objet) == d_erreur)
        !          3437:                            {
        !          3438:                                return(NULL);
        !          3439:                            }
        !          3440:                        }
        !          3441:                        else
        !          3442:                        {
        !          3443:                            nombre_arguments = (*((struct_fonction *)
        !          3444:                                    (*(*l_element_courant).donnee).objet))
        !          3445:                                    .nombre_arguments;
        !          3446: 
        !          3447:                            if ((chaine = (unsigned char *)
        !          3448:                                    malloc(sizeof(unsigned char))) == NULL)
        !          3449:                            {
        !          3450:                                (*s_etat_processus).erreur_systeme =
        !          3451:                                        d_es_allocation_memoire;
        !          3452:                                return(NULL);
        !          3453:                            }
        !          3454:                            
        !          3455:                            chaine[0] = d_code_fin_chaine;
        !          3456: 
        !          3457:                            for(i = 0; i < nombre_arguments; i++)
        !          3458:                            {
        !          3459:                                if ((nombre_arguments - i) > 1)
        !          3460:                                {
        !          3461:                                    l_liste1 = (*s_etat_processus).l_base_pile;
        !          3462: 
        !          3463:                                    for(j = 2; j < (nombre_arguments - i); j++)
        !          3464:                                    {
        !          3465:                                        l_liste1 = (*l_liste1).suivant;
        !          3466:                                    }
        !          3467: 
        !          3468:                                    l_liste2 = (*l_liste1).suivant;
        !          3469:                                    (*l_liste1).suivant = (*l_liste2).suivant;
        !          3470:                                    (*l_liste2).suivant = (*s_etat_processus)
        !          3471:                                            .l_base_pile;
        !          3472:                                    (*s_etat_processus).l_base_pile = l_liste2;
        !          3473:                                }
        !          3474:                                
        !          3475:                                if (depilement(s_etat_processus,
        !          3476:                                        &((*s_etat_processus).l_base_pile),
        !          3477:                                        &s_sous_objet) == d_erreur)
        !          3478:                                {
        !          3479:                                    return(NULL);
        !          3480:                                }
        !          3481: 
        !          3482:                                chaine_sauvegarde = chaine;
        !          3483: 
        !          3484:                                if (strlen(chaine_sauvegarde) == 0)
        !          3485:                                {
        !          3486:                                    if ((chaine = (unsigned char *)
        !          3487:                                            malloc((strlen((unsigned char *)
        !          3488:                                            (*s_sous_objet).objet) + 1) *
        !          3489:                                            sizeof(unsigned char))) == NULL)
        !          3490:                                    {
        !          3491:                                        (*s_etat_processus).erreur_systeme =
        !          3492:                                                d_es_allocation_memoire;
        !          3493:                                        return(NULL);
        !          3494:                                    }
        !          3495: 
        !          3496:                                    sprintf(chaine, "%s", (unsigned char *)
        !          3497:                                            (*s_sous_objet).objet);
        !          3498:                                }
        !          3499:                                else
        !          3500:                                {
        !          3501:                                    if ((chaine = (unsigned char *)
        !          3502:                                            malloc((strlen(chaine_sauvegarde)
        !          3503:                                            + 1 + strlen((unsigned char *)
        !          3504:                                            (*s_sous_objet).objet) + 1) *
        !          3505:                                            sizeof(unsigned char))) == NULL)
        !          3506:                                    {
        !          3507:                                        (*s_etat_processus).erreur_systeme =
        !          3508:                                                d_es_allocation_memoire;
        !          3509:                                        return(NULL);
        !          3510:                                    }
        !          3511: 
        !          3512:                                    sprintf(chaine, "%s,%s", chaine_sauvegarde,
        !          3513:                                            (unsigned char *) (*s_sous_objet)
        !          3514:                                            .objet);
        !          3515:                                }
        !          3516: 
        !          3517:                                free(chaine_sauvegarde);
        !          3518:                                liberation(s_etat_processus, s_sous_objet);
        !          3519:                            }
        !          3520: 
        !          3521:                            chaine_sauvegarde = chaine;
        !          3522: 
        !          3523:                            if ((chaine = (unsigned char *) malloc((strlen(
        !          3524:                                    (*((struct_fonction *)
        !          3525:                                    (*(*l_element_courant)
        !          3526:                                    .donnee).objet)).nom_fonction) + 2 +
        !          3527:                                    strlen(chaine_sauvegarde) + 1) *
        !          3528:                                    sizeof(unsigned char))) == NULL)
        !          3529:                            {
        !          3530:                                (*s_etat_processus).erreur_systeme =
        !          3531:                                        d_es_allocation_memoire;
        !          3532:                                return(NULL);
        !          3533:                            }
        !          3534: 
        !          3535:                            sprintf(chaine, "%s(%s)", (*((struct_fonction *)
        !          3536:                                    (*(*l_element_courant).donnee).objet))
        !          3537:                                    .nom_fonction, chaine_sauvegarde);
        !          3538:                            free(chaine_sauvegarde);
        !          3539: 
        !          3540:                            if ((s_sous_objet = allocation(s_etat_processus,
        !          3541:                                            CHN)) == NULL)
        !          3542:                            {
        !          3543:                                (*s_etat_processus).erreur_systeme =
        !          3544:                                        d_es_allocation_memoire;
        !          3545:                                return(NULL);
        !          3546:                            }
        !          3547: 
        !          3548:                            (*s_sous_objet).objet = (void *) chaine;
        !          3549: 
        !          3550:                            if (empilement(s_etat_processus,
        !          3551:                                    &((*s_etat_processus)
        !          3552:                                    .l_base_pile), s_sous_objet) == d_erreur)
        !          3553:                            {
        !          3554:                                return(NULL);
        !          3555:                            }
        !          3556:                        }
        !          3557:                    }
        !          3558:                }
        !          3559:                else
        !          3560:                {
        !          3561:                    if ((s_sous_objet = allocation(s_etat_processus, CHN))
        !          3562:                            == NULL)
        !          3563:                    {
        !          3564:                        (*s_etat_processus).erreur_systeme =
        !          3565:                                d_es_allocation_memoire;
        !          3566:                        return(NULL);
        !          3567:                    }
        !          3568: 
        !          3569:                    if (((*s_sous_objet).objet = (void *) formateur_fichier(
        !          3570:                            s_etat_processus, (*l_element_courant).donnee,
        !          3571:                            s_format, longueur, longueur_champ, format_sortie,
        !          3572:                            type, longueur_effective, recursivite)) == NULL)
        !          3573:                    {
        !          3574:                        (*s_etat_processus).erreur_systeme =
        !          3575:                                d_es_allocation_memoire;
        !          3576:                        return(NULL);
        !          3577:                    }
        !          3578: 
        !          3579:                    if (((*(*l_element_courant).donnee).type == ALG)
        !          3580:                            || ((*(*l_element_courant).donnee).type == NOM))
        !          3581:                    {
        !          3582:                        chaine_sauvegarde = (unsigned char *)
        !          3583:                                (*s_sous_objet).objet;
        !          3584: 
        !          3585:                        if (((*s_sous_objet).objet = malloc((strlen(
        !          3586:                                chaine_sauvegarde) - 1) *
        !          3587:                                sizeof(unsigned char))) == NULL)
        !          3588:                        {
        !          3589:                            (*s_etat_processus).erreur_systeme =
        !          3590:                                    d_es_allocation_memoire;
        !          3591:                            return(NULL);
        !          3592:                        }
        !          3593: 
        !          3594:                        ptrl = chaine_sauvegarde;
        !          3595:                        ptre = (unsigned char *) (*s_sous_objet).objet;
        !          3596: 
        !          3597:                        for(ptrl++, i = strlen(chaine_sauvegarde) - 2; i > 0;
        !          3598:                                i--, *ptre++ = *ptrl++);
        !          3599: 
        !          3600:                        (*ptre) = d_code_fin_chaine;
        !          3601: 
        !          3602:                        free(chaine_sauvegarde);
        !          3603:                    }
        !          3604:                    else if ((*(*l_element_courant).donnee).type == CHN)
        !          3605:                    {
        !          3606:                        chaine_sauvegarde = (unsigned char *)
        !          3607:                                (*s_sous_objet).objet;
        !          3608: 
        !          3609:                        if (((*s_sous_objet).objet = malloc((strlen(
        !          3610:                                chaine_sauvegarde) + 3) *
        !          3611:                                sizeof(unsigned char))) == NULL)
        !          3612:                        {
        !          3613:                            (*s_etat_processus).erreur_systeme =
        !          3614:                                    d_es_allocation_memoire;
        !          3615:                            return(NULL);
        !          3616:                        }
        !          3617: 
        !          3618:                        sprintf((unsigned char *) (*s_sous_objet).objet,
        !          3619:                                "\"%s\"", chaine_sauvegarde);
        !          3620: 
        !          3621:                        free(chaine_sauvegarde);
        !          3622:                    }
        !          3623: 
        !          3624:                    if (empilement(s_etat_processus, &((*s_etat_processus)
        !          3625:                            .l_base_pile), s_sous_objet) == d_erreur)
        !          3626:                    {
        !          3627:                        return(NULL);
        !          3628:                    }
        !          3629:                }
        !          3630: 
        !          3631:                l_element_courant = (*l_element_courant).suivant;
        !          3632:            }
        !          3633: 
        !          3634:            if (depilement(s_etat_processus, &((*s_etat_processus).l_base_pile),
        !          3635:                    &s_sous_objet) == d_erreur)
        !          3636:            {
        !          3637:                return(NULL);
        !          3638:            }
        !          3639: 
        !          3640:            if ((chaine = (unsigned char *) malloc((strlen((unsigned char *)
        !          3641:                    (*s_sous_objet).objet) + 2 + 1) * sizeof(unsigned char)))
        !          3642:                    == NULL)
        !          3643:            {
        !          3644:                (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
        !          3645:                return(NULL);
        !          3646:            }
        !          3647: 
        !          3648:            sprintf(chaine, "'%s'", (unsigned char *) (*s_sous_objet).objet);
        !          3649:            liberation(s_etat_processus, s_sous_objet);
        !          3650:        }
        !          3651:        else if ((*s_objet).type == BIN)
        !          3652:        {
        !          3653: 
        !          3654: /*
        !          3655: --------------------------------------------------------------------------------
        !          3656:   Entier binaire en base 2, 8, 10 ou 16
        !          3657: --------------------------------------------------------------------------------
        !          3658: */
        !          3659: 
        !          3660:            if (format_sortie != 'B')
        !          3661:            {
        !          3662:                (*s_etat_processus).erreur_execution =
        !          3663:                        d_ex_erreur_format_fichier;
        !          3664:                return(NULL);
        !          3665:            }
        !          3666: 
        !          3667:            longueur_binaire = longueur_entiers_binaires(s_etat_processus);
        !          3668:            masque_binaire = masque_entiers_binaires(s_etat_processus);
        !          3669: 
        !          3670:            if ((test_cfsf(s_etat_processus, 43) == d_faux) &&
        !          3671:                    (test_cfsf(s_etat_processus, 44) == d_faux))
        !          3672:            {
        !          3673: 
        !          3674: /*
        !          3675: -- Base décimale ---------------------------------------------------------------
        !          3676: */
        !          3677: 
        !          3678:                sprintf(tampon, "%llu", (*((logical8 *)
        !          3679:                        ((*s_objet).objet))) & masque_binaire);
        !          3680:                strcpy(base, "d");
        !          3681:            }
        !          3682:            else if ((test_cfsf(s_etat_processus, 43) == d_vrai) &&
        !          3683:                    (test_cfsf(s_etat_processus, 44) == d_faux))
        !          3684:            {
        !          3685: 
        !          3686: /*
        !          3687: -- Base octale -----------------------------------------------------------------
        !          3688: */
        !          3689: 
        !          3690:                sprintf(tampon, "%llo", (*((logical8 *)
        !          3691:                        ((*s_objet).objet))) & masque_binaire);
        !          3692:                strcpy(base, "o");
        !          3693:            }
        !          3694:            else if (test_cfsf(s_etat_processus, 44) == d_vrai)
        !          3695:            {
        !          3696: 
        !          3697: /*
        !          3698: -- Bases hexadécimale et binaire -----------------------------------------------
        !          3699: */
        !          3700: 
        !          3701:                sprintf(tampon, "%llX", (*((logical8 *)
        !          3702:                        ((*s_objet).objet))) & masque_binaire);
        !          3703: 
        !          3704:                if (test_cfsf(s_etat_processus, 43) == d_vrai)
        !          3705:                {
        !          3706:                    strcpy(base, "h");
        !          3707:                }
        !          3708:                else
        !          3709:                {
        !          3710:                    chaine = (unsigned char *) malloc((strlen(tampon) + 1)
        !          3711:                            * sizeof(unsigned char));
        !          3712: 
        !          3713:                    if (chaine == NULL)
        !          3714:                    {
        !          3715:                        (*s_etat_processus).erreur_systeme =
        !          3716:                                d_es_allocation_memoire;
        !          3717:                        return(NULL);
        !          3718:                    }
        !          3719: 
        !          3720:                    strcpy(chaine, tampon);
        !          3721:                    tampon[0] = 0;
        !          3722: 
        !          3723:                    for(i = 0; i < strlen(chaine); i++)
        !          3724:                    {
        !          3725:                        switch(chaine[i])
        !          3726:                        {
        !          3727:                            case '0' :
        !          3728:                            {
        !          3729:                                strcat(tampon, (i != 0) ? "0000" : "0");
        !          3730:                                break;
        !          3731:                            }
        !          3732:                            case '1' :
        !          3733:                            {
        !          3734:                                    strcat(tampon, (i != 0) ? "0001" : "1");
        !          3735:                                break;
        !          3736:                            }
        !          3737:                            case '2' :
        !          3738:                            {
        !          3739:                                strcat(tampon, (i != 0) ? "0010" : "10");
        !          3740:                                break;
        !          3741:                            }
        !          3742:                            case '3' :
        !          3743:                            {
        !          3744:                                strcat(tampon, (i != 0) ? "0011" : "11");
        !          3745:                                break;
        !          3746:                            }
        !          3747:                            case '4' :
        !          3748:                            {
        !          3749:                                strcat(tampon, (i != 0) ? "0100" : "100");
        !          3750:                                break;
        !          3751:                            }
        !          3752:                            case '5' :
        !          3753:                            {
        !          3754:                                strcat(tampon, (i != 0) ? "0101" : "101");
        !          3755:                                break;
        !          3756:                            }
        !          3757:                            case '6' :
        !          3758:                            {
        !          3759:                                strcat(tampon, (i != 0) ? "0110" : "110");
        !          3760:                                break;
        !          3761:                            }
        !          3762:                            case '7' :
        !          3763:                            {
        !          3764:                                strcat(tampon, (i != 0) ? "0111" : "111");
        !          3765:                                break;
        !          3766:                            }
        !          3767:                            case '8' :
        !          3768:                            {
        !          3769:                                strcat(tampon, "1000");
        !          3770:                                break;
        !          3771:                            }
        !          3772:                            case '9' :
        !          3773:                            {
        !          3774:                                strcat(tampon, "1001");
        !          3775:                                break;
        !          3776:                            }
        !          3777:                            case 'A' :
        !          3778:                            {
        !          3779:                                strcat(tampon, "1010");
        !          3780:                                break;
        !          3781:                            }
        !          3782:                            case 'B' :
        !          3783:                            {
        !          3784:                                strcat(tampon, "1011");
        !          3785:                                break;
        !          3786:                            }
        !          3787:                            case 'C' :
        !          3788:                            {
        !          3789:                                strcat(tampon, "1100");
        !          3790:                                break;
        !          3791:                            }
        !          3792:                            case 'D' :
        !          3793:                            {
        !          3794:                                strcat(tampon, "1101");
        !          3795:                                break;
        !          3796:                            }
        !          3797:                            case 'E' :
        !          3798:                            {
        !          3799:                                strcat(tampon, "1110");
        !          3800:                                break;
        !          3801:                            }
        !          3802:                            case 'F' :
        !          3803:                            {
        !          3804:                                strcat(tampon, "1111");
        !          3805:                                break;
        !          3806:                            }
        !          3807:                        }
        !          3808:                    }
        !          3809: 
        !          3810:                    free(chaine);
        !          3811:                    strcpy(base, "b");
        !          3812:                }
        !          3813:            }
        !          3814: 
        !          3815:            chaine = (unsigned char *) malloc((strlen(tampon) + 4)
        !          3816:                    * sizeof(unsigned char));
        !          3817: 
        !          3818:            if (chaine == NULL)
        !          3819:            {
        !          3820:                (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
        !          3821:                return(NULL);
        !          3822:            }
        !          3823: 
        !          3824:            strcpy(chaine, "# ");
        !          3825: 
        !          3826:            strcat(chaine, tampon);
        !          3827:            strcat(chaine, base);
        !          3828:        }
        !          3829:        else if ((*s_objet).type == CHN)
        !          3830:        {
        !          3831: 
        !          3832: /*
        !          3833: --------------------------------------------------------------------------------
        !          3834:   Chaîne de caractères
        !          3835: --------------------------------------------------------------------------------
        !          3836: */
        !          3837: 
        !          3838:            if (format_sortie != 'C')
        !          3839:            {
        !          3840:                (*s_etat_processus).erreur_execution =
        !          3841:                        d_ex_erreur_format_fichier;
        !          3842:                return(NULL);
        !          3843:            }
        !          3844: 
        !          3845:            chaine = (unsigned char *) malloc((strlen((unsigned char *)
        !          3846:                    ((*s_objet).objet)) + 1) * sizeof(unsigned char));
        !          3847: 
        !          3848:            if (chaine == NULL)
        !          3849:            {
        !          3850:                (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
        !          3851:                return(NULL);
        !          3852:            }
        !          3853: 
        !          3854:            strcpy(chaine, (unsigned char *) ((*s_objet).objet));
        !          3855:        }
        !          3856:        else if ((*s_objet).type == CPL)
        !          3857:        {
        !          3858: 
        !          3859: /*
        !          3860: --------------------------------------------------------------------------------
        !          3861:   Complexe
        !          3862: --------------------------------------------------------------------------------
        !          3863: */
        !          3864: 
        !          3865:            if ((format_sortie != 'S') && (format_sortie != 'F') &&
        !          3866:                    (format_sortie != 'I') && (format_sortie != 'E'))
        !          3867:            {
        !          3868:                (*s_etat_processus).erreur_execution =
        !          3869:                        d_ex_erreur_format_fichier;
        !          3870:                return(NULL);
        !          3871:            }
        !          3872: 
        !          3873:            if ((chaine_formatee = formateur_fichier_nombre(s_etat_processus,
        !          3874:                    (void *) ((struct_complexe16 *) ((*s_objet).objet)), 'C',
        !          3875:                    longueur, longueur_champ, format_sortie)) == NULL)
        !          3876:            {
        !          3877:                (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
        !          3878:                return(NULL);
        !          3879:            }
        !          3880: 
        !          3881:            chaine = (unsigned char *) malloc((strlen(chaine_formatee)
        !          3882:                    + 1) * sizeof(unsigned char));
        !          3883: 
        !          3884:            if (chaine == NULL)
        !          3885:            {
        !          3886:                (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
        !          3887:                return(NULL);
        !          3888:            }
        !          3889: 
        !          3890:            strcpy(chaine, chaine_formatee);
        !          3891:            free(chaine_formatee);
        !          3892:        }
        !          3893:        else if ((*s_objet).type == RPN)
        !          3894:        {
        !          3895: 
        !          3896: /*
        !          3897: --------------------------------------------------------------------------------
        !          3898:   Définition
        !          3899: --------------------------------------------------------------------------------
        !          3900: */
        !          3901: 
        !          3902:            l_element_courant = (struct_liste_chainee *) ((*s_objet).objet);
        !          3903:            chaine_sauvegarde = chaine;
        !          3904: 
        !          3905:            while(l_element_courant != NULL)
        !          3906:            {
        !          3907:                if ((chaine_formatee = formateur_fichier(s_etat_processus,
        !          3908:                        (*l_element_courant).donnee, s_format,
        !          3909:                        longueur, longueur_champ, format_sortie, type,
        !          3910:                        longueur_effective, recursivite)) == NULL)
        !          3911:                {
        !          3912:                    return(NULL);
        !          3913:                }
        !          3914: 
        !          3915:                if ((*(*l_element_courant).donnee).type == CHN)
        !          3916:                {
        !          3917:                    chaine_tampon = chaine_formatee;
        !          3918: 
        !          3919:                    if ((chaine_formatee = (unsigned char *) malloc((strlen(
        !          3920:                            chaine_tampon) + 3) * sizeof(unsigned char)))
        !          3921:                            == NULL)
        !          3922:                    {
        !          3923:                        (*s_etat_processus).erreur_systeme =
        !          3924:                                d_es_allocation_memoire;
        !          3925:                        return(NULL);
        !          3926:                    }
        !          3927: 
        !          3928:                    sprintf(chaine_formatee, "\"%s\"", chaine_tampon);
        !          3929:                    free(chaine_tampon);
        !          3930:                }
        !          3931: 
        !          3932:                l_element_courant = (*l_element_courant).suivant;
        !          3933: 
        !          3934:                if (chaine != NULL)
        !          3935:                {
        !          3936:                    chaine_sauvegarde = chaine;
        !          3937: 
        !          3938:                    if ((chaine = (unsigned char *) malloc((strlen(
        !          3939:                            chaine_sauvegarde) + strlen(chaine_formatee) + 2) *
        !          3940:                            sizeof(unsigned char))) == NULL)
        !          3941:                    {
        !          3942:                        (*s_etat_processus).erreur_systeme =
        !          3943:                                d_es_allocation_memoire;
        !          3944:                        return(NULL);
        !          3945:                    }
        !          3946: 
        !          3947:                    strcpy(chaine, chaine_sauvegarde);
        !          3948:                    free(chaine_sauvegarde);
        !          3949:                    strcat(chaine, " ");
        !          3950:                    strcat(chaine, chaine_formatee);
        !          3951:                    free(chaine_formatee);
        !          3952:                }
        !          3953:                else
        !          3954:                {
        !          3955:                    chaine = chaine_formatee;
        !          3956:                }
        !          3957:            }
        !          3958: 
        !          3959:            chaine_sauvegarde = chaine;
        !          3960:            chaine = (unsigned char *) malloc((strlen(chaine_sauvegarde) + 1) *
        !          3961:                    sizeof(unsigned char));
        !          3962: 
        !          3963:            if (chaine == NULL)
        !          3964:            {
        !          3965:                (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
        !          3966:                free(chaine_sauvegarde);
        !          3967:                return(NULL);
        !          3968:            }
        !          3969: 
        !          3970:            chaine_sauvegarde[strlen(chaine_sauvegarde)] = d_code_fin_chaine;
        !          3971:            strcpy(chaine, chaine_sauvegarde);
        !          3972:            free(chaine_sauvegarde);
        !          3973:        }
        !          3974:        else if ((*s_objet).type == INT)
        !          3975:        {
        !          3976: 
        !          3977: /*
        !          3978: --------------------------------------------------------------------------------
        !          3979:   Entier
        !          3980: --------------------------------------------------------------------------------
        !          3981: */
        !          3982: 
        !          3983:            if (format_sortie != 'I')
        !          3984:            {
        !          3985:                (*s_etat_processus).erreur_execution =
        !          3986:                        d_ex_erreur_format_fichier;
        !          3987:                return(NULL);
        !          3988:            }
        !          3989: 
        !          3990:            switch(longueur)
        !          3991:            {
        !          3992:                case 1:
        !          3993:                {
        !          3994:                    if ((*((integer8 *) (*s_objet).objet)) !=
        !          3995:                            ((integer1) (*((integer8 *) (*s_objet).objet))))
        !          3996:                    {
        !          3997:                        (*s_etat_processus).erreur_execution =
        !          3998:                                d_ex_representation;
        !          3999:                        return(NULL);
        !          4000:                    }
        !          4001: 
        !          4002:                    if ((chaine = malloc(2 * sizeof(unsigned char))) == NULL)
        !          4003:                    {
        !          4004:                        (*s_etat_processus).erreur_systeme =
        !          4005:                                d_es_allocation_memoire;
        !          4006:                        return(NULL);
        !          4007:                    }
        !          4008: 
        !          4009:                    longueur_totale = 2;
        !          4010:                    chaine[0] = 0x10;
        !          4011:                    chaine[1] = (*((integer8 *) (*s_objet).objet)) & 0xFF;
        !          4012:                    break;
        !          4013:                }
        !          4014: 
        !          4015:                case 2:
        !          4016:                {
        !          4017:                    if ((*((integer8 *) (*s_objet).objet)) !=
        !          4018:                            ((integer2) (*((integer8 *) (*s_objet).objet))))
        !          4019:                    {
        !          4020:                        (*s_etat_processus).erreur_execution =
        !          4021:                                d_ex_representation;
        !          4022:                        return(NULL);
        !          4023:                    }
        !          4024: 
        !          4025:                    if ((chaine = malloc(3 * sizeof(unsigned char))) == NULL)
        !          4026:                    {
        !          4027:                        (*s_etat_processus).erreur_systeme =
        !          4028:                                d_es_allocation_memoire;
        !          4029:                        return(NULL);
        !          4030:                    }
        !          4031: 
        !          4032:                    longueur_totale = 3;
        !          4033:                    chaine[0] = 0x11;
        !          4034:                    chaine[1] = ((*((integer8 *) (*s_objet).objet)) >> 8)
        !          4035:                            & 0xFF;
        !          4036:                    chaine[2] = (*((integer8 *) (*s_objet).objet)) & 0xFF;
        !          4037:                    break;
        !          4038:                }
        !          4039: 
        !          4040:                case 4:
        !          4041:                {
        !          4042:                    if ((*((integer4 *) (*s_objet).objet)) !=
        !          4043:                            ((integer2) (*((integer8 *) (*s_objet).objet))))
        !          4044:                    {
        !          4045:                        (*s_etat_processus).erreur_execution =
        !          4046:                                d_ex_representation;
        !          4047:                        return(NULL);
        !          4048:                    }
        !          4049: 
        !          4050:                    if ((chaine = malloc(5 * sizeof(unsigned char))) == NULL)
        !          4051:                    {
        !          4052:                        (*s_etat_processus).erreur_systeme =
        !          4053:                                d_es_allocation_memoire;
        !          4054:                        return(NULL);
        !          4055:                    }
        !          4056: 
        !          4057:                    longueur_totale = 5;
        !          4058:                    chaine[0] = 0x12;
        !          4059:                    chaine[1] = ((*((integer8 *) (*s_objet).objet)) >> 24)
        !          4060:                            & 0xFF;
        !          4061:                    chaine[2] = ((*((integer8 *) (*s_objet).objet)) >> 16)
        !          4062:                            & 0xFF;
        !          4063:                    chaine[3] = ((*((integer8 *) (*s_objet).objet)) >> 8)
        !          4064:                            & 0xFF;
        !          4065:                    chaine[4] = (*((integer8 *) (*s_objet).objet)) & 0xFF;
        !          4066:                    break;
        !          4067:                }
        !          4068: 
        !          4069:                case 8:
        !          4070:                {
        !          4071:                    if ((chaine = malloc(9 * sizeof(unsigned char))) == NULL)
        !          4072:                    {
        !          4073:                        (*s_etat_processus).erreur_systeme =
        !          4074:                                d_es_allocation_memoire;
        !          4075:                        return(NULL);
        !          4076:                    }
        !          4077: 
        !          4078:                    longueur_totale = 9;
        !          4079:                    chaine[0] = 0x13;
        !          4080:                    chaine[1] = ((*((integer8 *) (*s_objet).objet)) >> 56)
        !          4081:                            & 0xFF;
        !          4082:                    chaine[2] = ((*((integer8 *) (*s_objet).objet)) >> 48)
        !          4083:                            & 0xFF;
        !          4084:                    chaine[3] = ((*((integer8 *) (*s_objet).objet)) >> 40)
        !          4085:                            & 0xFF;
        !          4086:                    chaine[4] = ((*((integer8 *) (*s_objet).objet)) >> 32)
        !          4087:                            & 0xFF;
        !          4088:                    chaine[5] = ((*((integer8 *) (*s_objet).objet)) >> 24)
        !          4089:                            & 0xFF;
        !          4090:                    chaine[6] = ((*((integer8 *) (*s_objet).objet)) >> 16)
        !          4091:                            & 0xFF;
        !          4092:                    chaine[7] = ((*((integer8 *) (*s_objet).objet)) >> 8)
        !          4093:                            & 0xFF;
        !          4094:                    chaine[8] = (*((integer8 *) (*s_objet).objet)) & 0xFF;
        !          4095:                    break;
        !          4096:                }
        !          4097: 
        !          4098:                default :
        !          4099:                {
        !          4100:                    (*s_etat_processus).erreur_execution =
        !          4101:                            d_ex_erreur_format_fichier;
        !          4102:                    return(NULL);
        !          4103:                }
        !          4104:            }
        !          4105: 
        !          4106:            (*longueur_effective) = longueur_totale;
        !          4107:        }
        !          4108:        else if ((*s_objet).type == FCT)
        !          4109:        {
        !          4110: 
        !          4111: /*
        !          4112: --------------------------------------------------------------------------------
        !          4113:   Fonction
        !          4114: --------------------------------------------------------------------------------
        !          4115: */
        !          4116: 
        !          4117:            chaine = (unsigned char *) malloc((strlen((*((struct_fonction *)
        !          4118:                    ((*s_objet).objet))).nom_fonction) + 1) *
        !          4119:                    sizeof(unsigned char));
        !          4120: 
        !          4121:            if (chaine == NULL)
        !          4122:            {
        !          4123:                (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
        !          4124:                return(NULL);
        !          4125:            }
        !          4126: 
        !          4127:            strcpy(chaine, (unsigned char *) (*((struct_fonction *)
        !          4128:                    ((*s_objet).objet))).nom_fonction);
        !          4129:        }
        !          4130:        else if ((*s_objet).type == LST)
        !          4131:        {
        !          4132: 
        !          4133: /*
        !          4134: --------------------------------------------------------------------------------
        !          4135:   Liste
        !          4136:   Poids fort 0100
        !          4137: --------------------------------------------------------------------------------
        !          4138: */
        !          4139: 
        !          4140:            chaine = malloc(sizeof(unsigned char));
        !          4141: 
        !          4142:            if (chaine == NULL)
        !          4143:            {
        !          4144:                (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
        !          4145:                return(NULL);
        !          4146:            }
        !          4147: 
        !          4148:            // Calcul de la longueur de la liste.
        !          4149: 
        !          4150:            longueur_liste = 0;
        !          4151:            l_element_courant = (struct_liste_chainee *) (*s_objet).objet;
        !          4152: 
        !          4153:            while(l_element_courant != NULL)
        !          4154:            {
        !          4155:                l_element_courant = (*l_element_courant).suivant;
        !          4156:                longueur_liste++;
        !          4157:            }
        !          4158: 
        !          4159:            if (longueur_liste < (1LL << 3))
        !          4160:            {
        !          4161:                chaine[0] = 0x40 | (longueur_liste & 0x7);
        !          4162:            }
        !          4163:            else if (longueur_liste < (1LL << 8))
        !          4164:            {
        !          4165:                chaine[0] = 0x48;
        !          4166:            }
        !          4167:            else if (longueur_liste < (1LL << 16))
        !          4168:            {
        !          4169:                chaine[0] = 0x49;
        !          4170:            }
        !          4171:            else if (longueur_liste < (1LL << 32))
        !          4172:            {
        !          4173:                chaine[0] = 0x4A;
        !          4174:            }
        !          4175:            else
        !          4176:            {
        !          4177:                chaine[0] = 0x4B;
        !          4178:            }
        !          4179: 
        !          4180:            longueur_totale = 1;
        !          4181: 
        !          4182:            if ((chaine[0] & 0x8) != 0)
        !          4183:            {
        !          4184:                switch(chaine[0] & 0x03)
        !          4185:                {
        !          4186:                    case 0x00 :
        !          4187:                    {
        !          4188:                        longueur_totale += 1;
        !          4189: 
        !          4190:                        if ((chaine = realloc(chaine, longueur_totale *
        !          4191:                                sizeof(unsigned char))) == NULL)
        !          4192:                        {
        !          4193:                            (*s_etat_processus).erreur_systeme =
        !          4194:                                    d_es_allocation_memoire;
        !          4195:                            return(NULL);
        !          4196:                        }
        !          4197: 
        !          4198:                        chaine[longueur_totale - 1] =
        !          4199:                                (unsigned char) (longueur_liste & 0xFF);
        !          4200:                        break;
        !          4201:                    }
        !          4202: 
        !          4203:                    case 0x01 :
        !          4204:                    {
        !          4205:                        longueur_totale += 2;
        !          4206: 
        !          4207:                        if ((chaine = realloc(chaine, longueur_totale *
        !          4208:                                sizeof(unsigned char))) == NULL)
        !          4209:                        {
        !          4210:                            (*s_etat_processus).erreur_systeme =
        !          4211:                                    d_es_allocation_memoire;
        !          4212:                            return(NULL);
        !          4213:                        }
        !          4214: 
        !          4215:                        chaine[longueur_totale - 2] =
        !          4216:                                (unsigned char) ((longueur_liste >> 8) & 0xFF);
        !          4217:                        chaine[longueur_totale - 1] =
        !          4218:                                (unsigned char) (longueur_liste & 0xFF);
        !          4219:                        break;
        !          4220:                    }
        !          4221: 
        !          4222:                    case 0x02 :
        !          4223:                    {
        !          4224:                        longueur_totale += 4;
        !          4225: 
        !          4226:                        if ((chaine = realloc(chaine, longueur_totale *
        !          4227:                                sizeof(unsigned char))) == NULL)
        !          4228:                        {
        !          4229:                            (*s_etat_processus).erreur_systeme =
        !          4230:                                    d_es_allocation_memoire;
        !          4231:                            return(NULL);
        !          4232:                        }
        !          4233: 
        !          4234:                        chaine[longueur_totale - 4] =
        !          4235:                                (unsigned char) ((longueur_liste >> 24) & 0xFF);
        !          4236:                        chaine[longueur_totale - 3] =
        !          4237:                                (unsigned char) ((longueur_liste >> 16) & 0xFF);
        !          4238:                        chaine[longueur_totale - 2] =
        !          4239:                                (unsigned char) ((longueur_liste >> 8) & 0xFF);
        !          4240:                        chaine[longueur_totale - 1] =
        !          4241:                                (unsigned char) (longueur_liste & 0xFF);
        !          4242:                        break;
        !          4243:                    }
        !          4244: 
        !          4245:                    case 0x03 :
        !          4246:                    {
        !          4247:                        longueur_totale += 8;
        !          4248: 
        !          4249:                        if ((chaine = realloc(chaine, longueur_totale *
        !          4250:                                sizeof(unsigned char))) == NULL)
        !          4251:                        {
        !          4252:                            (*s_etat_processus).erreur_systeme =
        !          4253:                                    d_es_allocation_memoire;
        !          4254:                            return(NULL);
        !          4255:                        }
        !          4256: 
        !          4257:                        chaine[longueur_totale - 8] =
        !          4258:                                (unsigned char) ((longueur_liste >> 56) & 0xFF);
        !          4259:                        chaine[longueur_totale - 7] =
        !          4260:                                (unsigned char) ((longueur_liste >> 48) & 0xFF);
        !          4261:                        chaine[longueur_totale - 6] =
        !          4262:                                (unsigned char) ((longueur_liste >> 40) & 0xFF);
        !          4263:                        chaine[longueur_totale - 5] =
        !          4264:                                (unsigned char) ((longueur_liste >> 32) & 0xFF);
        !          4265:                        chaine[longueur_totale - 4] =
        !          4266:                                (unsigned char) ((longueur_liste >> 24) & 0xFF);
        !          4267:                        chaine[longueur_totale - 3] =
        !          4268:                                (unsigned char) ((longueur_liste >> 16) & 0xFF);
        !          4269:                        chaine[longueur_totale - 2] =
        !          4270:                                (unsigned char) ((longueur_liste >> 8) & 0xFF);
        !          4271:                        chaine[longueur_totale - 1] =
        !          4272:                                (unsigned char) (longueur_liste & 0xFF);
        !          4273:                        break;
        !          4274:                    }
        !          4275: 
        !          4276:                    default :
        !          4277:                    {
        !          4278:                        BUG(1, printf("Internal format error\n"));
        !          4279:                    }
        !          4280:                }
        !          4281:            }
        !          4282: 
        !          4283:            l_element_courant = (struct_liste_chainee *) (*s_objet).objet;
        !          4284:            l_element_courant_format = (struct_liste_chainee *)
        !          4285:                    (*s_format).objet;
        !          4286:            nombre_elements = 0;
        !          4287: 
        !          4288:            while((l_element_courant != NULL) &&
        !          4289:                    (l_element_courant_format != NULL))
        !          4290:            {
        !          4291:                if ((((*(*l_element_courant_format).donnee).type == LST)
        !          4292:                        && ((*(*l_element_courant).donnee).type == LST)) ||
        !          4293:                        (((*(*l_element_courant_format).donnee).type == TBL)
        !          4294:                        && ((*(*l_element_courant).donnee).type == TBL)))
        !          4295:                {
        !          4296:                    if ((chaine_formatee = formateur_fichier(s_etat_processus,
        !          4297:                            (*l_element_courant).donnee,
        !          4298:                            (*l_element_courant_format).donnee,
        !          4299:                            0, 0, ' ', 'U', longueur_effective, recursivite))
        !          4300:                            == NULL)
        !          4301:                    {
        !          4302:                        return(NULL);
        !          4303:                    }
        !          4304: 
        !          4305:                    if ((chaine = realloc(chaine, (longueur_totale +
        !          4306:                            (*longueur_effective)) * sizeof(unsigned char)))
        !          4307:                            == NULL)
        !          4308:                    {
        !          4309:                        (*s_etat_processus).erreur_systeme =
        !          4310:                                d_es_allocation_memoire;
        !          4311:                        return(NULL);
        !          4312:                    }
        !          4313: 
        !          4314:                    memcpy(&(chaine[longueur_totale]), chaine_formatee,
        !          4315:                            (*longueur_effective));
        !          4316:                    longueur_totale += (*longueur_effective);
        !          4317:                    free(chaine_formatee);
        !          4318:                }
        !          4319:                else if ((*(*l_element_courant_format).donnee).type != CHN)
        !          4320:                {
        !          4321:                    free(chaine);
        !          4322: 
        !          4323:                    (*s_etat_processus).erreur_execution =
        !          4324:                            d_ex_erreur_format_fichier;
        !          4325:                    return(NULL);
        !          4326:                }
        !          4327:                else
        !          4328:                {
        !          4329:                    if ((format_chaine = conversion_majuscule((unsigned char *)
        !          4330:                            (*(*l_element_courant_format).donnee).objet))
        !          4331:                            == NULL)
        !          4332:                    {
        !          4333:                        (*s_etat_processus).erreur_systeme =
        !          4334:                                d_es_allocation_memoire;
        !          4335:                        return(NULL);
        !          4336:                    }
        !          4337: 
        !          4338:                    format_degenere = d_faux;
        !          4339: 
        !          4340:                    if (strncmp("INTEGER*", format_chaine, 8) == 0)
        !          4341:                    {
        !          4342:                        format_sortie = 'I';
        !          4343:                        position_1 = 8;
        !          4344:                    }
        !          4345:                    else if (strncmp("LOGICAL*", format_chaine, 8) == 0)
        !          4346:                    {
        !          4347:                        format_sortie = 'L';
        !          4348:                        position_1 = 8;
        !          4349:                    }
        !          4350:                    else if (strncmp("REAL*", format_chaine, 5) == 0)
        !          4351:                    {
        !          4352:                        format_sortie = 'R';
        !          4353:                        position_1 = 5;
        !          4354:                    }
        !          4355:                    else if (strncmp("COMPLEX*", format_chaine, 8) == 0)
        !          4356:                    {
        !          4357:                        format_sortie = 'C';
        !          4358:                        position_1 = 8;
        !          4359:                    }
        !          4360:                    else if (strcmp("CHARACTER", format_chaine) == 0)
        !          4361:                    {
        !          4362:                        format_sortie = 'S';
        !          4363:                        position_1 = 10;
        !          4364:                        format_degenere = d_vrai;
        !          4365:                    }
        !          4366:                    else
        !          4367:                    {
        !          4368:                        free(chaine);
        !          4369:                        free(format_chaine);
        !          4370: 
        !          4371:                        (*s_etat_processus).erreur_execution =
        !          4372:                                d_ex_erreur_format_fichier;
        !          4373:                        return(NULL);
        !          4374:                    }
        !          4375: 
        !          4376:                    if (format_degenere == d_faux)
        !          4377:                    {
        !          4378:                        if (format_chaine[position_1] == d_code_fin_chaine)
        !          4379:                        {
        !          4380:                            free(chaine);
        !          4381:                            free(format_chaine);
        !          4382: 
        !          4383:                            (*s_etat_processus).erreur_execution =
        !          4384:                                    d_ex_erreur_format_fichier;
        !          4385:                            return(NULL);
        !          4386:                        }
        !          4387: 
        !          4388:                        if (sscanf(&(format_chaine[position_1]), "%ld",
        !          4389:                                &longueur) != 1)
        !          4390:                        {
        !          4391:                            free(chaine);
        !          4392:                            free(format_chaine);
        !          4393: 
        !          4394:                            (*s_etat_processus).erreur_execution =
        !          4395:                                    d_ex_erreur_format_fichier;
        !          4396:                            return(NULL);
        !          4397:                        }
        !          4398:                    }
        !          4399:                    else
        !          4400:                    {
        !          4401:                        longueur = -1;
        !          4402:                    }
        !          4403: 
        !          4404:                    free(format_chaine);
        !          4405:                
        !          4406:                    if ((chaine_formatee = formateur_fichier(s_etat_processus,
        !          4407:                            (*l_element_courant).donnee, s_format,
        !          4408:                            longueur, longueur_champ, format_sortie, type,
        !          4409:                            longueur_effective, recursivite)) == NULL)
        !          4410:                    {
        !          4411:                        free(chaine);
        !          4412:                        return(NULL);
        !          4413:                    }
        !          4414: 
        !          4415:                    if ((chaine = realloc(chaine,
        !          4416:                            (longueur_totale + (*longueur_effective))
        !          4417:                            * sizeof(unsigned char))) == NULL)
        !          4418:                    {
        !          4419:                        (*s_etat_processus).erreur_systeme =
        !          4420:                                d_es_allocation_memoire;
        !          4421:                        return(NULL);
        !          4422:                    }
        !          4423: 
        !          4424:                    memcpy(&(chaine[longueur_totale]), chaine_formatee,
        !          4425:                            (*longueur_effective));
        !          4426:                    longueur_totale += (*longueur_effective);
        !          4427:                    free(chaine_formatee);
        !          4428:                }
        !          4429: 
        !          4430:                nombre_elements++;
        !          4431:                l_element_courant = (*l_element_courant).suivant;
        !          4432:                l_element_courant_format = (*l_element_courant_format).suivant;
        !          4433:            }
        !          4434: 
        !          4435:            if ((l_element_courant != NULL) ||
        !          4436:                    (l_element_courant_format != NULL))
        !          4437:            {
        !          4438:                free(chaine);
        !          4439: 
        !          4440:                (*s_etat_processus).erreur_execution =
        !          4441:                        d_ex_erreur_format_fichier;
        !          4442:                return(NULL);
        !          4443:            }
        !          4444: 
        !          4445:            if ((*recursivite) == 1)
        !          4446:            {
        !          4447:                // Ajout de la longueur totale en fin d'enregistrement.
        !          4448: 
        !          4449:                if (longueur_totale < (((integer8) 1) << 6))
        !          4450:                {
        !          4451:                    tampon[0] = longueur_totale + 1;
        !          4452: 
        !          4453:                    if ((chaine = realloc(chaine, (longueur_totale + 1)
        !          4454:                            * sizeof(unsigned char))) == NULL)
        !          4455:                    {
        !          4456:                        (*s_etat_processus).erreur_systeme =
        !          4457:                                d_es_allocation_memoire;
        !          4458:                        return(NULL);
        !          4459:                    }
        !          4460: 
        !          4461:                    memcpy(&(chaine[longueur_totale]), tampon, 1);
        !          4462:                    longueur_totale += 1;
        !          4463:                }
        !          4464:                else if (longueur_totale < (((integer8) 1) << 16))
        !          4465:                {
        !          4466:                    tampon[2] = 0x40;
        !          4467:                    tampon[1] = (longueur_totale + 1) & 0xFF;
        !          4468:                    tampon[0] = ((longueur_totale + 1) >> 8) & 0xFF;
        !          4469: 
        !          4470:                    if ((chaine = realloc(chaine, (longueur_totale + 3)
        !          4471:                            * sizeof(unsigned char))) == NULL)
        !          4472:                    {
        !          4473:                        (*s_etat_processus).erreur_systeme =
        !          4474:                                d_es_allocation_memoire;
        !          4475:                        return(NULL);
        !          4476:                    }
        !          4477: 
        !          4478:                    memcpy(&(chaine[longueur_totale]), tampon, 3);
        !          4479:                    longueur_totale += 3;
        !          4480:                }
        !          4481:                else if (longueur_totale < (((integer8) 1) << 32))
        !          4482:                {
        !          4483:                    tampon[4] = 0x80;
        !          4484:                    tampon[3] = (longueur_totale + 1) & 0xFF;
        !          4485:                    tampon[2] = ((longueur_totale + 1) >> 8) & 0xFF;
        !          4486:                    tampon[1] = ((longueur_totale + 1) >> 16) & 0xFF;
        !          4487:                    tampon[0] = ((longueur_totale + 1) >> 24) & 0xFF;
        !          4488: 
        !          4489:                    if ((chaine = realloc(chaine, (longueur_totale + 5)
        !          4490:                            * sizeof(unsigned char))) == NULL)
        !          4491:                    {
        !          4492:                        (*s_etat_processus).erreur_systeme =
        !          4493:                                d_es_allocation_memoire;
        !          4494:                        return(NULL);
        !          4495:                    }
        !          4496: 
        !          4497:                    memcpy(&(chaine[longueur_totale]), tampon, 5);
        !          4498:                    longueur_totale += 5;
        !          4499:                }
        !          4500:                else
        !          4501:                {
        !          4502:                    tampon[8] = 0xC0;
        !          4503:                    tampon[7] = (longueur_totale + 1) & 0xFF;
        !          4504:                    tampon[6] = ((longueur_totale + 1) >> 8) & 0xFF;
        !          4505:                    tampon[5] = ((longueur_totale + 1) >> 16) & 0xFF;
        !          4506:                    tampon[4] = ((longueur_totale + 1) >> 24) & 0xFF;
        !          4507:                    tampon[3] = ((longueur_totale + 1) >> 32) & 0xFF;
        !          4508:                    tampon[2] = ((longueur_totale + 1) >> 40) & 0xFF;
        !          4509:                    tampon[1] = ((longueur_totale + 1) >> 48) & 0xFF;
        !          4510:                    tampon[0] = ((longueur_totale + 1) >> 56) & 0xFF;
        !          4511: 
        !          4512:                    if ((chaine = realloc(chaine, (longueur_totale + 9)
        !          4513:                            * sizeof(unsigned char))) == NULL)
        !          4514:                    {
        !          4515:                        (*s_etat_processus).erreur_systeme =
        !          4516:                                d_es_allocation_memoire;
        !          4517:                        return(NULL);
        !          4518:                    }
        !          4519: 
        !          4520:                    memcpy(&(chaine[longueur_totale]), tampon, 9);
        !          4521:                    longueur_totale += 9;
        !          4522:                }
        !          4523: 
        !          4524:                __zone();
        !          4525:            }
        !          4526: 
        !          4527:            (*longueur_effective) = longueur_totale;
        !          4528:        }
        !          4529:        else if ((*s_objet).type == TBL)
        !          4530:        {
        !          4531: 
        !          4532: /*
        !          4533: --------------------------------------------------------------------------------
        !          4534:   Table
        !          4535: --------------------------------------------------------------------------------
        !          4536: */
        !          4537: 
        !          4538:            if ((*s_format).type != TBL)
        !          4539:            {
        !          4540:                (*s_etat_processus).erreur_execution =
        !          4541:                        d_ex_erreur_format_fichier;
        !          4542:                return(NULL);
        !          4543:            }
        !          4544: 
        !          4545:            l_element_courant = (struct_liste_chainee *) (*s_objet).objet;
        !          4546:            l_element_courant_format = (struct_liste_chainee *)
        !          4547:                    (*s_format).objet;
        !          4548: 
        !          4549:            if ((*((struct_tableau *) (*s_objet).objet)).nombre_elements !=
        !          4550:                    (*((struct_tableau *) (*s_format).objet)).nombre_elements)
        !          4551:            {
        !          4552:                (*s_etat_processus).erreur_execution =
        !          4553:                        d_ex_erreur_format_fichier;
        !          4554:                return(NULL);
        !          4555:            }
        !          4556: 
        !          4557:            chaine = (unsigned char *) malloc(3 * sizeof(unsigned char));
        !          4558: 
        !          4559:            if (chaine == NULL)
        !          4560:            {
        !          4561:                (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
        !          4562:                return(NULL);
        !          4563:            }
        !          4564: 
        !          4565:            strcpy(chaine, "<[");
        !          4566: 
        !          4567:            for(i = 0; i < (*((struct_tableau *) (*s_objet).objet))
        !          4568:                    .nombre_elements; i++)
        !          4569:            {
        !          4570:                if ((((*(*((struct_tableau *) (*s_format).objet))
        !          4571:                        .elements[i]).type == LST) &&
        !          4572:                        ((*(*((struct_tableau *) (*s_objet).objet)).elements[i])
        !          4573:                        .type == LST)) ||
        !          4574:                        (((*(*((struct_tableau *) (*s_format).objet))
        !          4575:                        .elements[i]).type == TBL) &&
        !          4576:                        ((*(*((struct_tableau *) (*s_objet).objet)).elements[i])
        !          4577:                        .type == TAB)))
        !          4578:                {
        !          4579:                    chaine_sauvegarde = chaine;
        !          4580: 
        !          4581:                    if ((chaine_formatee = formateur_fichier(s_etat_processus,
        !          4582:                            (*l_element_courant).donnee,
        !          4583:                            (*l_element_courant_format).donnee,
        !          4584:                            0, 0, ' ', 'F', longueur_effective, recursivite))
        !          4585:                            == NULL)
        !          4586:                    {
        !          4587:                        return(NULL);
        !          4588:                    }
        !          4589: 
        !          4590:                    chaine = (unsigned char *) malloc((strlen(chaine_formatee)
        !          4591:                            + strlen(chaine_sauvegarde) + 2)
        !          4592:                            * sizeof(unsigned char));
        !          4593: 
        !          4594:                    if (chaine == NULL)
        !          4595:                    {
        !          4596:                        (*s_etat_processus).erreur_systeme =
        !          4597:                                d_es_allocation_memoire;
        !          4598:                        return(NULL);
        !          4599:                    }
        !          4600: 
        !          4601:                    strcpy(chaine, chaine_sauvegarde);
        !          4602:                    free(chaine_sauvegarde);
        !          4603:                    strcat(chaine, " ");
        !          4604:                    strcat(chaine, chaine_formatee);
        !          4605:                    free(chaine_formatee);
        !          4606:                }
        !          4607:                else if ((*(*((struct_tableau *) (*s_format).objet))
        !          4608:                        .elements[i]).type != CHN)
        !          4609:                {
        !          4610:                    free(chaine);
        !          4611: 
        !          4612:                    (*s_etat_processus).erreur_execution =
        !          4613:                            d_ex_erreur_format_fichier;
        !          4614:                    return(NULL);
        !          4615:                }
        !          4616:                else
        !          4617:                {
        !          4618:                    if ((format_chaine = conversion_majuscule((unsigned char *)
        !          4619:                            (*(*((struct_tableau *) (*s_format).objet))
        !          4620:                            .elements[i]).objet)) == NULL)
        !          4621:                    {
        !          4622:                        (*s_etat_processus).erreur_systeme =
        !          4623:                                d_es_allocation_memoire;
        !          4624:                        return(NULL);
        !          4625:                    }
        !          4626: 
        !          4627:                    format_degenere = d_faux;
        !          4628: 
        !          4629:                    if (strncmp("STANDARD*", format_chaine, 9) == 0)
        !          4630:                    {
        !          4631:                        format_sortie = 'S';
        !          4632:                        position_1 = 9;
        !          4633:                        format_degenere = d_vrai;
        !          4634:                    }
        !          4635:                    else if (strncmp("BINARY*", format_chaine, 7) == 0)
        !          4636:                    {
        !          4637:                        format_sortie = 'B';
        !          4638:                        position_1 = 7;
        !          4639:                    }
        !          4640:                    else if (strncmp("FIXED*", format_chaine, 6) == 0)
        !          4641:                    {
        !          4642:                        format_sortie = 'F';
        !          4643:                        position_1 = 6;
        !          4644:                    }
        !          4645:                    else if (strncmp("SCIENTIFIC*", format_chaine, 11) == 0)
        !          4646:                    {
        !          4647:                        format_sortie = 'I';
        !          4648:                        position_1 = 11;
        !          4649:                    }
        !          4650:                    else if (strncmp("ENGINEER*", format_chaine, 9) == 0)
        !          4651:                    {
        !          4652:                        format_sortie = 'E';
        !          4653:                        position_1 = 9;
        !          4654:                    }
        !          4655:                    else if (strncmp("CHARACTER*", format_chaine, 10) == 0)
        !          4656:                    {
        !          4657:                        format_sortie = 'C';
        !          4658:                        position_1 = 10;
        !          4659:                        format_degenere = d_vrai;
        !          4660:                    }
        !          4661:                    else
        !          4662:                    {
        !          4663:                        free(chaine);
        !          4664:                        free(format_chaine);
        !          4665: 
        !          4666:                        (*s_etat_processus).erreur_execution =
        !          4667:                                d_ex_erreur_format_fichier;
        !          4668:                        return(NULL);
        !          4669:                    }
        !          4670: 
        !          4671:                    position_3 = strlen(format_chaine);
        !          4672:                    format_chaine[--position_3] = d_code_fin_chaine;
        !          4673: 
        !          4674:                    position_2 = position_1;
        !          4675: 
        !          4676:                    while(format_chaine[position_2] != '(')
        !          4677:                    {
        !          4678:                        if (format_chaine[position_2] == d_code_fin_chaine)
        !          4679:                        {
        !          4680:                            free(chaine);
        !          4681:                            free(format_chaine);
        !          4682: 
        !          4683:                            (*s_etat_processus).erreur_execution =
        !          4684:                                    d_ex_erreur_format_fichier;
        !          4685:                            return(NULL);
        !          4686:                        }
        !          4687: 
        !          4688:                        position_2++;
        !          4689:                    }
        !          4690: 
        !          4691:                    format_chaine[position_2++] = d_code_fin_chaine;
        !          4692: 
        !          4693:                    if (format_degenere == d_faux)
        !          4694:                    {
        !          4695:                        if (sscanf(&(format_chaine[position_1]), "%ld",
        !          4696:                                &longueur) != 1)
        !          4697:                        {
        !          4698:                            free(chaine);
        !          4699:                            free(format_chaine);
        !          4700: 
        !          4701:                            (*s_etat_processus).erreur_execution =
        !          4702:                                    d_ex_erreur_format_fichier;
        !          4703:                            return(NULL);
        !          4704:                        }
        !          4705:                    }
        !          4706:                    else
        !          4707:                    {
        !          4708:                        longueur = -1;
        !          4709:                    }
        !          4710: 
        !          4711:                    if (strcmp(&(format_chaine[position_2]), "*") != 0)
        !          4712:                    {
        !          4713:                        if (sscanf(&(format_chaine[position_2]), "%ld",
        !          4714:                                &longueur_champ) != 1)
        !          4715:                        {
        !          4716:                            free(chaine);
        !          4717:                            free(format_chaine);
        !          4718: 
        !          4719:                            (*s_etat_processus).erreur_execution =
        !          4720:                                    d_ex_erreur_format_fichier;
        !          4721:                            return(NULL);
        !          4722:                        }
        !          4723:                    }
        !          4724:                    else
        !          4725:                    {
        !          4726:                        longueur_champ = -1;
        !          4727:                    }
        !          4728: 
        !          4729:                    if ((longueur >= 0) && (longueur_champ >= 0) && (longueur >
        !          4730:                            longueur_champ))
        !          4731:                    {
        !          4732:                        free(chaine);
        !          4733:                        free(format_chaine);
        !          4734: 
        !          4735:                        (*s_etat_processus).erreur_execution =
        !          4736:                                d_ex_erreur_format_fichier;
        !          4737:                        return(NULL);
        !          4738:                    }
        !          4739: 
        !          4740:                    free(format_chaine);
        !          4741:                
        !          4742:                    chaine_sauvegarde = chaine;
        !          4743: 
        !          4744:                    if ((chaine_formatee = formateur_fichier(s_etat_processus,
        !          4745:                            (*((struct_tableau *) (*s_objet).objet))
        !          4746:                            .elements[i], s_format,
        !          4747:                            longueur, longueur_champ, format_sortie, type,
        !          4748:                            longueur_effective, recursivite)) == NULL)
        !          4749:                    {
        !          4750:                        return(NULL);
        !          4751:                    }
        !          4752: 
        !          4753:                    if ((*(*((struct_tableau *) (*s_objet).objet))
        !          4754:                            .elements[i]).type == CHN)
        !          4755:                    {
        !          4756:                        chaine = (unsigned char *)
        !          4757:                                malloc((strlen(chaine_formatee)
        !          4758:                                + strlen(chaine_sauvegarde) + 4)
        !          4759:                                * sizeof(unsigned char));
        !          4760: 
        !          4761:                        if (chaine == NULL)
        !          4762:                        {
        !          4763:                            (*s_etat_processus).erreur_systeme =
        !          4764:                                    d_es_allocation_memoire;
        !          4765:                            return(NULL);
        !          4766:                        }
        !          4767: 
        !          4768:                        strcpy(chaine, chaine_sauvegarde);
        !          4769:                        free(chaine_sauvegarde);
        !          4770:                        strcat(chaine, " \"");
        !          4771:                        strcat(chaine, chaine_formatee);
        !          4772:                        free(chaine_formatee);
        !          4773:                        strcat(chaine, "\"");
        !          4774:                    }
        !          4775:                    else if ((*(*((struct_tableau *) (*s_objet).objet))
        !          4776:                            .elements[i]).type == NOM)
        !          4777:                    {
        !          4778:                        chaine = (unsigned char *)
        !          4779:                                malloc((strlen(chaine_formatee)
        !          4780:                                + strlen(chaine_sauvegarde) + 2)
        !          4781:                                * sizeof(unsigned char));
        !          4782: 
        !          4783:                        if (chaine == NULL)
        !          4784:                        {
        !          4785:                            (*s_etat_processus).erreur_systeme =
        !          4786:                                    d_es_allocation_memoire;
        !          4787:                            return(NULL);
        !          4788:                        }
        !          4789: 
        !          4790:                        sprintf(chaine, "%s %s", chaine_sauvegarde,
        !          4791:                                chaine_formatee);
        !          4792:                        free(chaine_formatee);
        !          4793:                    }
        !          4794:                    else
        !          4795:                    {
        !          4796:                        chaine = (unsigned char *)
        !          4797:                                malloc((strlen(chaine_formatee)
        !          4798:                                + strlen(chaine_sauvegarde) + 2)
        !          4799:                                * sizeof(unsigned char));
        !          4800: 
        !          4801:                        if (chaine == NULL)
        !          4802:                        {
        !          4803:                            (*s_etat_processus).erreur_systeme =
        !          4804:                                    d_es_allocation_memoire;
        !          4805:                            return(NULL);
        !          4806:                        }
        !          4807: 
        !          4808:                        strcpy(chaine, chaine_sauvegarde);
        !          4809:                        free(chaine_sauvegarde);
        !          4810:                        strcat(chaine, " ");
        !          4811:                        strcat(chaine, chaine_formatee);
        !          4812:                        free(chaine_formatee);
        !          4813:                    }
        !          4814:                }
        !          4815:            }
        !          4816: 
        !          4817:            chaine_sauvegarde = chaine;
        !          4818:            chaine = (unsigned char *) malloc((strlen(chaine_sauvegarde) + 4)
        !          4819:                    * sizeof(unsigned char));
        !          4820: 
        !          4821:            if (chaine == NULL)
        !          4822:            {
        !          4823:                (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
        !          4824:                return(NULL);
        !          4825:            }
        !          4826: 
        !          4827:            strcpy(chaine, chaine_sauvegarde);
        !          4828:            free(chaine_sauvegarde);
        !          4829:            strcat(chaine, " ]>");
        !          4830:        }
        !          4831:        else if ((*s_objet).type == MCX)
        !          4832:        {
        !          4833: 
        !          4834: /*
        !          4835: --------------------------------------------------------------------------------
        !          4836:   Matrice complexe
        !          4837: --------------------------------------------------------------------------------
        !          4838: */
        !          4839: 
        !          4840:            if ((format_sortie != 'S') && (format_sortie != 'F') &&
        !          4841:                    (format_sortie != 'I') && (format_sortie != 'E'))
        !          4842:            {
        !          4843:                (*s_etat_processus).erreur_execution =
        !          4844:                        d_ex_erreur_format_fichier;
        !          4845:                return(NULL);
        !          4846:            }
        !          4847: 
        !          4848:            nombre_lignes = (*((struct_matrice *) ((*s_objet).objet)))
        !          4849:                    .nombre_lignes;
        !          4850:            nombre_colonnes = (*((struct_matrice *) ((*s_objet).objet)))
        !          4851:                    .nombre_colonnes;
        !          4852: 
        !          4853:            chaine = (unsigned char *) malloc(3 * sizeof(unsigned char));
        !          4854: 
        !          4855:            if (chaine != NULL)
        !          4856:            {
        !          4857:                strcpy(chaine, "[[");
        !          4858: 
        !          4859:                for(i = 0; i < nombre_lignes; i++)
        !          4860:                {
        !          4861:                    for(j = 0; j < nombre_colonnes; j++)
        !          4862:                    {
        !          4863:                        if ((chaine_formatee =
        !          4864:                                formateur_fichier_nombre(s_etat_processus,
        !          4865:                                (void *) &(((struct_complexe16 **)
        !          4866:                                ((*((struct_matrice *)
        !          4867:                                ((*s_objet).objet))).tableau))[i][j]), 'C',
        !          4868:                                longueur, longueur_champ, format_sortie))
        !          4869:                                == NULL)
        !          4870:                        {
        !          4871:                            (*s_etat_processus).erreur_systeme =
        !          4872:                                    d_es_allocation_memoire;
        !          4873:                            return(NULL);
        !          4874:                        }
        !          4875: 
        !          4876:                        chaine_sauvegarde = chaine;
        !          4877:                        chaine = (unsigned char *) malloc(
        !          4878:                                (strlen(chaine_sauvegarde) +
        !          4879:                                strlen(chaine_formatee) + 2)
        !          4880:                                * sizeof(unsigned char));
        !          4881: 
        !          4882:                        if (chaine == NULL)
        !          4883:                        {
        !          4884:                            (*s_etat_processus).erreur_systeme =
        !          4885:                                    d_es_allocation_memoire;
        !          4886:                            return(NULL);
        !          4887:                        }
        !          4888: 
        !          4889:                        strcpy(chaine, chaine_sauvegarde);
        !          4890:                        free(chaine_sauvegarde);
        !          4891:                        strcat(chaine, " ");
        !          4892:                        strcat(chaine, chaine_formatee);
        !          4893:                        free(chaine_formatee);
        !          4894:                    }
        !          4895: 
        !          4896:                    chaine_sauvegarde = chaine;
        !          4897:                    if (test_cfsf(s_etat_processus, 45) == d_vrai)
        !          4898:                    {
        !          4899:                        chaine = (unsigned char *) malloc(
        !          4900:                                (strlen(chaine_sauvegarde) + 6)
        !          4901:                                * sizeof(unsigned char));
        !          4902: 
        !          4903:                        if (chaine == NULL)
        !          4904:                        {
        !          4905:                            (*s_etat_processus).erreur_systeme =
        !          4906:                                    d_es_allocation_memoire;
        !          4907:                            return(NULL);
        !          4908:                        }
        !          4909: 
        !          4910:                        strcpy(chaine, chaine_sauvegarde);
        !          4911:                        free(chaine_sauvegarde);
        !          4912:                        strcat(chaine, " ]\n [");
        !          4913:                    }
        !          4914:                    else
        !          4915:                    {
        !          4916:                        chaine = (unsigned char *) malloc(
        !          4917:                                (strlen(chaine_sauvegarde) + 4)
        !          4918:                                * sizeof(unsigned char));
        !          4919: 
        !          4920:                        if (chaine == NULL)
        !          4921:                        {
        !          4922:                            (*s_etat_processus).erreur_systeme =
        !          4923:                                    d_es_allocation_memoire;
        !          4924:                            return(NULL);
        !          4925:                        }
        !          4926: 
        !          4927:                        strcpy(chaine, chaine_sauvegarde);
        !          4928:                        free(chaine_sauvegarde);
        !          4929:                        strcat(chaine, " ][");
        !          4930:                    }
        !          4931:                }
        !          4932: 
        !          4933:                if (test_cfsf(s_etat_processus, 45) == d_vrai)
        !          4934:                {
        !          4935:                    chaine[strlen(chaine) - 3] = ']';
        !          4936:                    chaine[strlen(chaine) - 2] = 0;
        !          4937: 
        !          4938:                    chaine_sauvegarde = chaine;
        !          4939:                    chaine = (unsigned char *) malloc((strlen(chaine_sauvegarde)
        !          4940:                            + 1) * sizeof(unsigned char));
        !          4941: 
        !          4942:                    if (chaine == NULL)
        !          4943:                    {
        !          4944:                        (*s_etat_processus).erreur_systeme =
        !          4945:                                d_es_allocation_memoire;
        !          4946:                        return(NULL);
        !          4947:                    }
        !          4948: 
        !          4949:                    strcpy(chaine, chaine_sauvegarde);
        !          4950:                    free(chaine_sauvegarde);
        !          4951:                }
        !          4952:                else
        !          4953:                {
        !          4954:                    chaine[strlen(chaine) - 2] = ']';
        !          4955:                    chaine[strlen(chaine) - 1] = 0;
        !          4956: 
        !          4957:                    chaine_sauvegarde = chaine;
        !          4958:                    chaine = (unsigned char *) malloc((strlen(chaine_sauvegarde)
        !          4959:                            + 2) * sizeof(unsigned char));
        !          4960: 
        !          4961:                    if (chaine == NULL)
        !          4962:                    {
        !          4963:                        (*s_etat_processus).erreur_systeme =
        !          4964:                                d_es_allocation_memoire;
        !          4965:                        return(NULL);
        !          4966:                    }
        !          4967: 
        !          4968:                    strcpy(chaine, chaine_sauvegarde);
        !          4969:                    free(chaine_sauvegarde);
        !          4970:                    strcat(chaine, "]");
        !          4971:                }
        !          4972:            }
        !          4973:        }
        !          4974:        else if ((*s_objet).type == MIN)
        !          4975:        {
        !          4976: 
        !          4977: /*
        !          4978: --------------------------------------------------------------------------------
        !          4979:   Matrice entière
        !          4980: --------------------------------------------------------------------------------
        !          4981: */
        !          4982: 
        !          4983:            if ((format_sortie != 'S') && (format_sortie != 'F') &&
        !          4984:                    (format_sortie != 'I') && (format_sortie != 'E'))
        !          4985:            {
        !          4986:                (*s_etat_processus).erreur_execution =
        !          4987:                        d_ex_erreur_format_fichier;
        !          4988:                return(NULL);
        !          4989:            }
        !          4990: 
        !          4991:            nombre_lignes = (*((struct_matrice *) ((*s_objet).objet)))
        !          4992:                    .nombre_lignes;
        !          4993:            nombre_colonnes = (*((struct_matrice *) ((*s_objet).objet)))
        !          4994:                    .nombre_colonnes;
        !          4995: 
        !          4996:            chaine = (unsigned char *) malloc(3 * sizeof(unsigned char));
        !          4997: 
        !          4998:            if (chaine != NULL)
        !          4999:            {
        !          5000:                strcpy(chaine, "[[");
        !          5001: 
        !          5002:                for(i = 0; i < nombre_lignes; i++)
        !          5003:                {
        !          5004:                    for(j = 0; j < nombre_colonnes; j++)
        !          5005:                    {
        !          5006:                        if ((chaine_formatee =
        !          5007:                                formateur_fichier_nombre(s_etat_processus,
        !          5008:                                (void *) &(((integer8 **) ((*((struct_matrice *)
        !          5009:                                ((*s_objet).objet))).tableau))[i][j]), 'I',
        !          5010:                                longueur, longueur_champ, format_sortie))
        !          5011:                                == NULL)
        !          5012:                        {
        !          5013:                            (*s_etat_processus).erreur_systeme =
        !          5014:                                    d_es_allocation_memoire;
        !          5015:                            return(NULL);
        !          5016:                        }
        !          5017: 
        !          5018:                        chaine_sauvegarde = chaine;
        !          5019:                        chaine = (unsigned char *) malloc(
        !          5020:                                (strlen(chaine_sauvegarde) +
        !          5021:                                strlen(chaine_formatee) + 2)
        !          5022:                                * sizeof(unsigned char));
        !          5023: 
        !          5024:                        if (chaine == NULL)
        !          5025:                        {
        !          5026:                            (*s_etat_processus).erreur_systeme =
        !          5027:                                    d_es_allocation_memoire;
        !          5028:                            return(NULL);
        !          5029:                        }
        !          5030: 
        !          5031:                        strcpy(chaine, chaine_sauvegarde);
        !          5032:                        free(chaine_sauvegarde);
        !          5033:                        strcat(chaine, " ");
        !          5034:                        strcat(chaine, chaine_formatee);
        !          5035:                        free(chaine_formatee);
        !          5036:                    }
        !          5037: 
        !          5038:                    chaine_sauvegarde = chaine;
        !          5039:                    if (test_cfsf(s_etat_processus, 45) == d_vrai)
        !          5040:                    {
        !          5041:                        chaine = (unsigned char *) malloc(
        !          5042:                                (strlen(chaine_sauvegarde) + 6)
        !          5043:                                * sizeof(unsigned char));
        !          5044: 
        !          5045:                        if (chaine == NULL)
        !          5046:                        {
        !          5047:                            (*s_etat_processus).erreur_systeme =
        !          5048:                                    d_es_allocation_memoire;
        !          5049:                            return(NULL);
        !          5050:                        }
        !          5051: 
        !          5052:                        strcpy(chaine, chaine_sauvegarde);
        !          5053:                        free(chaine_sauvegarde);
        !          5054:                        strcat(chaine, " ]\n [");
        !          5055:                    }
        !          5056:                    else
        !          5057:                    {
        !          5058:                        chaine = (unsigned char *) malloc(
        !          5059:                                (strlen(chaine_sauvegarde) + 4)
        !          5060:                                * sizeof(unsigned char));
        !          5061: 
        !          5062:                        if (chaine == NULL)
        !          5063:                        {
        !          5064:                            (*s_etat_processus).erreur_systeme =
        !          5065:                                    d_es_allocation_memoire;
        !          5066:                            return(NULL);
        !          5067:                        }
        !          5068: 
        !          5069:                        strcpy(chaine, chaine_sauvegarde);
        !          5070:                        free(chaine_sauvegarde);
        !          5071:                        strcat(chaine, " ][");
        !          5072:                    }
        !          5073:                }
        !          5074: 
        !          5075:                if (test_cfsf(s_etat_processus, 45) == d_vrai)
        !          5076:                {
        !          5077:                    chaine[strlen(chaine) - 3] = ']';
        !          5078:                    chaine[strlen(chaine) - 2] = 0;
        !          5079: 
        !          5080:                    chaine_sauvegarde = chaine;
        !          5081:                    chaine = (unsigned char *) malloc((strlen(chaine_sauvegarde)
        !          5082:                            + 1) * sizeof(unsigned char));
        !          5083: 
        !          5084:                    if (chaine == NULL)
        !          5085:                    {
        !          5086:                        (*s_etat_processus).erreur_systeme =
        !          5087:                                d_es_allocation_memoire;
        !          5088:                        return(NULL);
        !          5089:                    }
        !          5090: 
        !          5091:                    strcpy(chaine, chaine_sauvegarde);
        !          5092:                    free(chaine_sauvegarde);
        !          5093:                }
        !          5094:                else
        !          5095:                {
        !          5096:                    chaine[strlen(chaine) - 2] = ']';
        !          5097:                    chaine[strlen(chaine) - 1] = 0;
        !          5098: 
        !          5099:                    chaine_sauvegarde = chaine;
        !          5100:                    chaine = (unsigned char *) malloc((strlen(chaine_sauvegarde)
        !          5101:                            + 2) * sizeof(unsigned char));
        !          5102: 
        !          5103:                    if (chaine == NULL)
        !          5104:                    {
        !          5105:                        (*s_etat_processus).erreur_systeme =
        !          5106:                                d_es_allocation_memoire;
        !          5107:                        return(NULL);
        !          5108:                    }
        !          5109: 
        !          5110:                    strcpy(chaine, chaine_sauvegarde);
        !          5111:                    free(chaine_sauvegarde);
        !          5112:                    strcat(chaine, "]");
        !          5113:                }
        !          5114:            }
        !          5115:        }
        !          5116:        else if ((*s_objet).type == MRL)
        !          5117:        {
        !          5118: 
        !          5119: /*
        !          5120: --------------------------------------------------------------------------------
        !          5121:   Matrice réelle
        !          5122: --------------------------------------------------------------------------------
        !          5123: */
        !          5124: 
        !          5125:            if ((format_sortie != 'S') && (format_sortie != 'F') &&
        !          5126:                    (format_sortie != 'I') && (format_sortie != 'E'))
        !          5127:            {
        !          5128:                (*s_etat_processus).erreur_execution =
        !          5129:                        d_ex_erreur_format_fichier;
        !          5130:                return(NULL);
        !          5131:            }
        !          5132: 
        !          5133:            nombre_lignes = (*((struct_matrice *) ((*s_objet).objet)))
        !          5134:                    .nombre_lignes;
        !          5135:            nombre_colonnes = (*((struct_matrice *) ((*s_objet).objet)))
        !          5136:                    .nombre_colonnes;
        !          5137: 
        !          5138:            chaine = (unsigned char *) malloc(3 * sizeof(unsigned char));
        !          5139: 
        !          5140:            if (chaine != NULL)
        !          5141:            {
        !          5142:                strcpy(chaine, "[[");
        !          5143: 
        !          5144:                for(i = 0; i < nombre_lignes; i++)
        !          5145:                {
        !          5146:                    for(j = 0; j < nombre_colonnes; j++)
        !          5147:                    {
        !          5148:                        if ((chaine_formatee =
        !          5149:                                formateur_fichier_nombre(s_etat_processus,
        !          5150:                                (void *) &(((real8 **) ((*((struct_matrice *)
        !          5151:                                ((*s_objet).objet))).tableau))[i][j]), 'R',
        !          5152:                                longueur, longueur_champ, format_sortie))
        !          5153:                                == NULL)
        !          5154:                        {
        !          5155:                            (*s_etat_processus).erreur_systeme =
        !          5156:                                    d_es_allocation_memoire;
        !          5157:                            return(NULL);
        !          5158:                        }
        !          5159: 
        !          5160:                        chaine_sauvegarde = chaine;
        !          5161:                        chaine = (unsigned char *) malloc(
        !          5162:                                (strlen(chaine_sauvegarde) +
        !          5163:                                strlen(chaine_formatee) + 2)
        !          5164:                                * sizeof(unsigned char));
        !          5165: 
        !          5166:                        if (chaine == NULL)
        !          5167:                        {
        !          5168:                            (*s_etat_processus).erreur_systeme =
        !          5169:                                    d_es_allocation_memoire;
        !          5170:                            return(NULL);
        !          5171:                        }
        !          5172: 
        !          5173:                        strcpy(chaine, chaine_sauvegarde);
        !          5174:                        free(chaine_sauvegarde);
        !          5175:                        strcat(chaine, " ");
        !          5176:                        strcat(chaine, chaine_formatee);
        !          5177:                        free(chaine_formatee);
        !          5178:                    }
        !          5179: 
        !          5180:                    chaine_sauvegarde = chaine;
        !          5181:                    if (test_cfsf(s_etat_processus, 45) == d_vrai)
        !          5182:                    {
        !          5183:                        chaine = (unsigned char *) malloc(
        !          5184:                                (strlen(chaine_sauvegarde) + 6)
        !          5185:                                * sizeof(unsigned char));
        !          5186: 
        !          5187:                        if (chaine == NULL)
        !          5188:                        {
        !          5189:                            (*s_etat_processus).erreur_systeme =
        !          5190:                                    d_es_allocation_memoire;
        !          5191:                            return(NULL);
        !          5192:                        }
        !          5193: 
        !          5194:                        strcpy(chaine, chaine_sauvegarde);
        !          5195:                        free(chaine_sauvegarde);
        !          5196:                        strcat(chaine, " ]\n [");
        !          5197:                    }
        !          5198:                    else
        !          5199:                    {
        !          5200:                        chaine = (unsigned char *) malloc(
        !          5201:                                (strlen(chaine_sauvegarde) + 4)
        !          5202:                                * sizeof(unsigned char));
        !          5203: 
        !          5204:                        if (chaine == NULL)
        !          5205:                        {
        !          5206:                            (*s_etat_processus).erreur_systeme =
        !          5207:                                    d_es_allocation_memoire;
        !          5208:                            return(NULL);
        !          5209:                        }
        !          5210: 
        !          5211:                        strcpy(chaine, chaine_sauvegarde);
        !          5212:                        free(chaine_sauvegarde);
        !          5213:                        strcat(chaine, " ][");
        !          5214:                    }
        !          5215:                }
        !          5216: 
        !          5217:                if (test_cfsf(s_etat_processus, 45) == d_vrai)
        !          5218:                {
        !          5219:                    chaine[strlen(chaine) - 3] = ']';
        !          5220:                    chaine[strlen(chaine) - 2] = 0;
        !          5221: 
        !          5222:                    chaine_sauvegarde = chaine;
        !          5223:                    chaine = (unsigned char *) malloc((strlen(chaine_sauvegarde)
        !          5224:                            + 1) * sizeof(unsigned char));
        !          5225: 
        !          5226:                    if (chaine == NULL)
        !          5227:                    {
        !          5228:                        (*s_etat_processus).erreur_systeme =
        !          5229:                                d_es_allocation_memoire;
        !          5230:                        return(NULL);
        !          5231:                    }
        !          5232: 
        !          5233:                    strcpy(chaine, chaine_sauvegarde);
        !          5234:                    free(chaine_sauvegarde);
        !          5235:                }
        !          5236:                else
        !          5237:                {
        !          5238:                    chaine[strlen(chaine) - 2] = ']';
        !          5239:                    chaine[strlen(chaine) - 1] = 0;
        !          5240: 
        !          5241:                    chaine_sauvegarde = chaine;
        !          5242:                    chaine = (unsigned char *) malloc((strlen(chaine_sauvegarde)
        !          5243:                            + 2) * sizeof(unsigned char));
        !          5244: 
        !          5245:                    if (chaine == NULL)
        !          5246:                    {
        !          5247:                        (*s_etat_processus).erreur_systeme =
        !          5248:                                d_es_allocation_memoire;
        !          5249:                        return(NULL);
        !          5250:                    }
        !          5251: 
        !          5252:                    strcpy(chaine, chaine_sauvegarde);
        !          5253:                    free(chaine_sauvegarde);
        !          5254:                    strcat(chaine, "]");
        !          5255:                }
        !          5256:            }
        !          5257:        }
        !          5258:        else if ((*s_objet).type == NOM)
        !          5259:        {
        !          5260: 
        !          5261: /*
        !          5262: --------------------------------------------------------------------------------
        !          5263:   Nom
        !          5264: --------------------------------------------------------------------------------
        !          5265: */
        !          5266: 
        !          5267:            chaine = (unsigned char *) malloc((strlen((*((struct_nom *)
        !          5268:                    (*s_objet).objet)).nom) + 3) * sizeof(unsigned char));
        !          5269: 
        !          5270:            if (chaine == NULL)
        !          5271:            {
        !          5272:                (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
        !          5273:                return(NULL);
        !          5274:            }
        !          5275: 
        !          5276:            sprintf(chaine, "'%s'", (*((struct_nom *) (*s_objet).objet)).nom);
        !          5277:        }
        !          5278:        else if ((*s_objet).type == REL)
        !          5279:        {
        !          5280: 
        !          5281: /*
        !          5282: --------------------------------------------------------------------------------
        !          5283:   Réel
        !          5284: --------------------------------------------------------------------------------
        !          5285: */
        !          5286: 
        !          5287:            if ((format_sortie != 'S') && (format_sortie != 'F') &&
        !          5288:                    (format_sortie != 'I') && (format_sortie != 'E'))
        !          5289:            {
        !          5290:                (*s_etat_processus).erreur_execution =
        !          5291:                        d_ex_erreur_format_fichier;
        !          5292:                return(NULL);
        !          5293:            }
        !          5294: 
        !          5295:            if ((chaine_formatee = formateur_fichier_nombre(s_etat_processus,
        !          5296:                    (void *) ((real8 *) ((*s_objet).objet)), 'R',
        !          5297:                    longueur, longueur_champ, format_sortie)) == NULL)
        !          5298:            {
        !          5299:                (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
        !          5300:                return(NULL);
        !          5301:            }
        !          5302: 
        !          5303:            chaine = (unsigned char *) malloc((strlen(chaine_formatee) + 1)
        !          5304:                    * sizeof(unsigned char));
        !          5305: 
        !          5306:            if (chaine == NULL)
        !          5307:            {
        !          5308:                (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
        !          5309:                return(NULL);
        !          5310:            }
        !          5311: 
        !          5312:            strcpy(chaine, chaine_formatee);
        !          5313:            free(chaine_formatee);
        !          5314:        }
        !          5315:        else if ((*s_objet).type == VCX)
        !          5316:        {
        !          5317: 
        !          5318: /*
        !          5319: --------------------------------------------------------------------------------
        !          5320:   Vecteur complexe
        !          5321: --------------------------------------------------------------------------------
        !          5322: */
        !          5323: 
        !          5324:            if ((format_sortie != 'S') && (format_sortie != 'F') &&
        !          5325:                    (format_sortie != 'I') && (format_sortie != 'E'))
        !          5326:            {
        !          5327:                (*s_etat_processus).erreur_execution =
        !          5328:                        d_ex_erreur_format_fichier;
        !          5329:                return(NULL);
        !          5330:            }
        !          5331: 
        !          5332:            nombre_colonnes = (*((struct_vecteur *) ((*s_objet).objet)))
        !          5333:                    .taille;
        !          5334: 
        !          5335:            chaine = (unsigned char *) malloc(2 * sizeof(unsigned char));
        !          5336: 
        !          5337:            if (chaine != NULL)
        !          5338:            {
        !          5339:                strcpy(chaine, "[");
        !          5340: 
        !          5341:                for(i = 0; i < nombre_colonnes; i++)
        !          5342:                {
        !          5343:                    if ((chaine_formatee =
        !          5344:                            formateur_fichier_nombre(s_etat_processus,
        !          5345:                            (void *) &(((struct_complexe16 *)
        !          5346:                            ((*((struct_vecteur *)
        !          5347:                            ((*s_objet).objet))).tableau))[i]), 'C',
        !          5348:                            longueur, longueur_champ, format_sortie)) == NULL)
        !          5349:                    {
        !          5350:                        (*s_etat_processus).erreur_systeme =
        !          5351:                                d_es_allocation_memoire;
        !          5352:                        return(NULL);
        !          5353:                    }
        !          5354: 
        !          5355:                    chaine_sauvegarde = chaine;
        !          5356:                    chaine = (unsigned char *) malloc(
        !          5357:                            (strlen(chaine_sauvegarde) + strlen(chaine_formatee)
        !          5358:                            + 2) * sizeof(unsigned char));
        !          5359: 
        !          5360:                    if (chaine == NULL)
        !          5361:                    {
        !          5362:                        (*s_etat_processus).erreur_systeme =
        !          5363:                                d_es_allocation_memoire;
        !          5364:                        return(NULL);
        !          5365:                    }
        !          5366: 
        !          5367:                    strcpy(chaine, chaine_sauvegarde);
        !          5368:                    free(chaine_sauvegarde);
        !          5369:                    strcat(chaine, " ");
        !          5370:                    strcat(chaine, chaine_formatee);
        !          5371:                    free(chaine_formatee);
        !          5372:                }
        !          5373: 
        !          5374:                chaine_sauvegarde = chaine;
        !          5375:                chaine = (unsigned char *) malloc(
        !          5376:                        (strlen(chaine_sauvegarde) + 3)
        !          5377:                        * sizeof(unsigned char));
        !          5378: 
        !          5379:                if (chaine == NULL)
        !          5380:                {
        !          5381:                    (*s_etat_processus).erreur_systeme =
        !          5382:                            d_es_allocation_memoire;
        !          5383:                    return(NULL);
        !          5384:                }
        !          5385: 
        !          5386:                strcpy(chaine, chaine_sauvegarde);
        !          5387:                free(chaine_sauvegarde);
        !          5388:                strcat(chaine, " ]");
        !          5389:            }
        !          5390:        }
        !          5391:        else if ((*s_objet).type == VIN)
        !          5392:        {
        !          5393: 
        !          5394: /*
        !          5395: --------------------------------------------------------------------------------
        !          5396:   Vecteur entier
        !          5397: --------------------------------------------------------------------------------
        !          5398: */
        !          5399: 
        !          5400:            if ((format_sortie != 'S') && (format_sortie != 'F') &&
        !          5401:                    (format_sortie != 'I') && (format_sortie != 'E'))
        !          5402:            {
        !          5403:                (*s_etat_processus).erreur_execution =
        !          5404:                        d_ex_erreur_format_fichier;
        !          5405:                return(NULL);
        !          5406:            }
        !          5407: 
        !          5408:            nombre_colonnes = (*((struct_vecteur *) ((*s_objet).objet)))
        !          5409:                    .taille;
        !          5410: 
        !          5411:            chaine = (unsigned char *) malloc(2 * sizeof(unsigned char));
        !          5412: 
        !          5413:            if (chaine != NULL)
        !          5414:            {
        !          5415:                strcpy(chaine, "[");
        !          5416: 
        !          5417:                for(i = 0; i < nombre_colonnes; i++)
        !          5418:                {
        !          5419:                    if ((chaine_formatee =
        !          5420:                            formateur_fichier_nombre(s_etat_processus,
        !          5421:                            (void *) &(((integer8 *) ((*((struct_vecteur *)
        !          5422:                            ((*s_objet).objet))).tableau))[i]), 'I',
        !          5423:                            longueur, longueur_champ, format_sortie)) == NULL)
        !          5424:                    {
        !          5425:                        (*s_etat_processus).erreur_systeme =
        !          5426:                                d_es_allocation_memoire;
        !          5427:                        return(NULL);
        !          5428:                    }
        !          5429: 
        !          5430:                    chaine_sauvegarde = chaine;
        !          5431:                    chaine = (unsigned char *) malloc(
        !          5432:                            (strlen(chaine_sauvegarde) + strlen(chaine_formatee)
        !          5433:                            + 2) * sizeof(unsigned char));
        !          5434: 
        !          5435:                    if (chaine == NULL)
        !          5436:                    {
        !          5437:                        (*s_etat_processus).erreur_systeme =
        !          5438:                                d_es_allocation_memoire;
        !          5439:                        return(NULL);
        !          5440:                    }
        !          5441: 
        !          5442:                    strcpy(chaine, chaine_sauvegarde);
        !          5443:                    free(chaine_sauvegarde);
        !          5444:                    strcat(chaine, " ");
        !          5445:                    strcat(chaine, chaine_formatee);
        !          5446:                    free(chaine_formatee);
        !          5447:                }
        !          5448: 
        !          5449:                chaine_sauvegarde = chaine;
        !          5450:                chaine = (unsigned char *) malloc(
        !          5451:                        (strlen(chaine_sauvegarde) + 3)
        !          5452:                        * sizeof(unsigned char));
        !          5453: 
        !          5454:                if (chaine == NULL)
        !          5455:                {
        !          5456:                    (*s_etat_processus).erreur_systeme =
        !          5457:                            d_es_allocation_memoire;
        !          5458:                    return(NULL);
        !          5459:                }
        !          5460: 
        !          5461:                strcpy(chaine, chaine_sauvegarde);
        !          5462:                free(chaine_sauvegarde);
        !          5463:                strcat(chaine, " ]");
        !          5464:            }
        !          5465:        }
        !          5466:        else if ((*s_objet).type == VRL)
        !          5467:        {
        !          5468: 
        !          5469: /*
        !          5470: --------------------------------------------------------------------------------
        !          5471:   Vecteur réel
        !          5472: --------------------------------------------------------------------------------
        !          5473: */
        !          5474: 
        !          5475:            if ((format_sortie != 'S') && (format_sortie != 'F') &&
        !          5476:                    (format_sortie != 'I') && (format_sortie != 'E'))
        !          5477:            {
        !          5478:                (*s_etat_processus).erreur_execution =
        !          5479:                        d_ex_erreur_format_fichier;
        !          5480:                return(NULL);
        !          5481:            }
        !          5482: 
        !          5483:            nombre_colonnes = (*((struct_vecteur *) ((*s_objet).objet)))
        !          5484:                    .taille;
        !          5485: 
        !          5486:            chaine = (unsigned char *) malloc(2 * sizeof(unsigned char));
        !          5487: 
        !          5488:            if (chaine != NULL)
        !          5489:            {
        !          5490:                strcpy(chaine, "[");
        !          5491: 
        !          5492:                for(i = 0; i < nombre_colonnes; i++)
        !          5493:                {
        !          5494:                    if ((chaine_formatee =
        !          5495:                            formateur_fichier_nombre(s_etat_processus,
        !          5496:                            (void *) &(((real8 *) ((*((struct_vecteur *)
        !          5497:                            ((*s_objet).objet))).tableau))[i]), 'R',
        !          5498:                            longueur, longueur_champ, format_sortie)) == NULL)
        !          5499:                    {
        !          5500:                        (*s_etat_processus).erreur_systeme =
        !          5501:                                d_es_allocation_memoire;
        !          5502:                        return(NULL);
        !          5503:                    }
        !          5504: 
        !          5505:                    chaine_sauvegarde = chaine;
        !          5506:                    chaine = (unsigned char *) malloc(
        !          5507:                            (strlen(chaine_sauvegarde) + strlen(chaine_formatee)
        !          5508:                            + 2) * sizeof(unsigned char));
        !          5509: 
        !          5510:                    if (chaine == NULL)
        !          5511:                    {
        !          5512:                        (*s_etat_processus).erreur_systeme =
        !          5513:                                d_es_allocation_memoire;
        !          5514:                        return(NULL);
        !          5515:                    }
        !          5516: 
        !          5517:                    strcpy(chaine, chaine_sauvegarde);
        !          5518:                    free(chaine_sauvegarde);
        !          5519:                    strcat(chaine, " ");
        !          5520:                    strcat(chaine, chaine_formatee);
        !          5521:                    free(chaine_formatee);
        !          5522:                }
        !          5523: 
        !          5524:                chaine_sauvegarde = chaine;
        !          5525:                chaine = (unsigned char *) malloc(
        !          5526:                        (strlen(chaine_sauvegarde) + 3)
        !          5527:                        * sizeof(unsigned char));
        !          5528: 
        !          5529:                if (chaine == NULL)
        !          5530:                {
        !          5531:                    (*s_etat_processus).erreur_systeme =
        !          5532:                            d_es_allocation_memoire;
        !          5533:                    return(NULL);
        !          5534:                }
        !          5535: 
        !          5536:                strcpy(chaine, chaine_sauvegarde);
        !          5537:                free(chaine_sauvegarde);
        !          5538:                strcat(chaine, " ]");
        !          5539:            }
        !          5540:        }
        !          5541:        else
        !          5542:        {
        !          5543:            // Type non exportable
        !          5544: 
        !          5545:            (*s_etat_processus).erreur_execution = d_ex_erreur_format_fichier;
        !          5546:            free(chaine);
        !          5547: 
        !          5548:            return(NULL);
        !          5549:        }
        !          5550:    }
        !          5551: 
        !          5552:    (*recursivite)--;
        !          5553: 
        !          5554:    return(chaine);
        !          5555: }
        !          5556: 
        !          5557: 
        !          5558: /*
        !          5559: ================================================================================
        !          5560:   Routines qui transforment un nombre entier, réel ou complexe en chaîne de
        !          5561:   caractères suivant le format courant
        !          5562: ================================================================================
        !          5563:   Entrées : pointeur générique sur la donnée numérique à convertir,
        !          5564:   type de l'entité (I, R ou C).
        !          5565: --------------------------------------------------------------------------------
        !          5566:   Sorties : chaîne de caractères allouée dans la routine
        !          5567: --------------------------------------------------------------------------------
        !          5568:   Effets de bord : néant
        !          5569: ================================================================================
        !          5570: */
        !          5571: 
        !          5572: /*
        !          5573: --------------------------------------------------------------------------------
        !          5574:   Formatage des complexes, réels et entiers
        !          5575: --------------------------------------------------------------------------------
        !          5576: */
        !          5577: 
        !          5578: unsigned char *
        !          5579: formateur_fichier_nombre(struct_processus *s_etat_processus,
        !          5580:        void *valeur_numerique, unsigned char type,
        !          5581:        long longueur, long longueur_champ, unsigned char format)
        !          5582: {
        !          5583:    unsigned char               *chaine;
        !          5584:    unsigned char               *construction_chaine;
        !          5585:    unsigned char               *sauvegarde;
        !          5586:    unsigned char               *tampon;
        !          5587: 
        !          5588:    chaine = NULL;
        !          5589: 
        !          5590:    switch(type)
        !          5591:    {
        !          5592:        case 'C' :
        !          5593:        {
        !          5594:            construction_chaine = (unsigned char *) malloc(
        !          5595:                    2 * sizeof(unsigned char));
        !          5596: 
        !          5597:            if (construction_chaine == NULL)
        !          5598:            {
        !          5599:                (*s_etat_processus).erreur_systeme =
        !          5600:                        d_es_allocation_memoire;
        !          5601:                return(NULL);
        !          5602:            }
        !          5603: 
        !          5604:            strcpy(construction_chaine, "(");
        !          5605: 
        !          5606:            tampon = formateur_fichier_reel(s_etat_processus,
        !          5607:                    (void *) &((*((struct_complexe16 *)
        !          5608:                    valeur_numerique)).partie_reelle), 'R',
        !          5609:                    longueur, longueur_champ, format);
        !          5610: 
        !          5611:            if (tampon == NULL)
        !          5612:            {
        !          5613:                (*s_etat_processus).erreur_systeme =
        !          5614:                        d_es_allocation_memoire;
        !          5615:                return(NULL);
        !          5616:            }
        !          5617: 
        !          5618:            sauvegarde = construction_chaine;
        !          5619: 
        !          5620:            construction_chaine = (unsigned char *) malloc(
        !          5621:                    (strlen(sauvegarde) + strlen(tampon) + 2)
        !          5622:                    * sizeof(unsigned char));
        !          5623: 
        !          5624:            if (construction_chaine == NULL)
        !          5625:            {
        !          5626:                (*s_etat_processus).erreur_systeme =
        !          5627:                        d_es_allocation_memoire;
        !          5628:                return(NULL);
        !          5629:            }
        !          5630: 
        !          5631:            strcpy(construction_chaine, sauvegarde);
        !          5632:            free(sauvegarde);
        !          5633:            strcat(construction_chaine, tampon);
        !          5634:            free(tampon);
        !          5635: 
        !          5636:            if (test_cfsf(s_etat_processus, 48) == d_faux)
        !          5637:            {
        !          5638:                strcat(construction_chaine, ",");
        !          5639:            }
        !          5640:            else
        !          5641:            {
        !          5642:                strcat(construction_chaine, ".");
        !          5643:            }
        !          5644: 
        !          5645:            tampon = formateur_fichier_reel(s_etat_processus,
        !          5646:                    (void *) &((*((struct_complexe16 *)
        !          5647:                    valeur_numerique)).partie_imaginaire), 'R',
        !          5648:                    longueur, longueur_champ, format);
        !          5649: 
        !          5650:            if (tampon == NULL)
        !          5651:            {
        !          5652:                (*s_etat_processus).erreur_systeme =
        !          5653:                        d_es_allocation_memoire;
        !          5654:                return(NULL);
        !          5655:            }
        !          5656: 
        !          5657:            sauvegarde = construction_chaine;
        !          5658: 
        !          5659:            construction_chaine = (unsigned char *) malloc(
        !          5660:                    (strlen(sauvegarde) + strlen(tampon) + 2)
        !          5661:                    * sizeof(unsigned char));
        !          5662: 
        !          5663:            if (construction_chaine == NULL)
        !          5664:            {
        !          5665:                (*s_etat_processus).erreur_systeme =
        !          5666:                        d_es_allocation_memoire;
        !          5667:                return(NULL);
        !          5668:            }
        !          5669: 
        !          5670:            strcpy(construction_chaine, sauvegarde);
        !          5671:            free(sauvegarde);
        !          5672:            strcat(construction_chaine, tampon);
        !          5673:            free(tampon);
        !          5674:            strcat(construction_chaine, ")");
        !          5675: 
        !          5676:            chaine = construction_chaine;
        !          5677: 
        !          5678:            break;
        !          5679:        }
        !          5680: 
        !          5681:        case 'R' :
        !          5682:        {
        !          5683:            chaine = formateur_fichier_reel(s_etat_processus,
        !          5684:                    valeur_numerique, 'R', longueur, longueur_champ,
        !          5685:                    format);
        !          5686: 
        !          5687:            if (chaine == NULL)
        !          5688:            {
        !          5689:                (*s_etat_processus).erreur_systeme =
        !          5690:                        d_es_allocation_memoire;
        !          5691:                return(NULL);
        !          5692:            }
        !          5693: 
        !          5694:            break;
        !          5695:        }
        !          5696: 
        !          5697:        default :
        !          5698:        case 'I' :
        !          5699:        {
        !          5700:            chaine = formateur_fichier_reel(s_etat_processus,
        !          5701:                    valeur_numerique, 'I', longueur, longueur_champ,
        !          5702:                    format);
        !          5703: 
        !          5704:            if (chaine == NULL)
        !          5705:            {
        !          5706:                (*s_etat_processus).erreur_systeme =
        !          5707:                        d_es_allocation_memoire;
        !          5708:                return(NULL);
        !          5709:            }
        !          5710: 
        !          5711:            break;
        !          5712:        }
        !          5713:    }
        !          5714: 
        !          5715:    return(chaine);
        !          5716: }
        !          5717: 
        !          5718: 
        !          5719: /*
        !          5720: --------------------------------------------------------------------------------
        !          5721:   Recherche de la longueur de l'entier minimale pour représenter la donnée
        !          5722: --------------------------------------------------------------------------------
        !          5723: */
        !          5724: 
        !          5725: unsigned char
        !          5726: recherche_longueur_optimale(integer8 parametre)
        !          5727: {
        !          5728:    if (parametre == (integer8) ((integer1) parametre))
        !          5729:    {
        !          5730:        return(0x0);
        !          5731:    }
        !          5732:    else if (parametre == (integer8) ((integer2) parametre))
        !          5733:    {
        !          5734:        return(0x1);
        !          5735:    }
        !          5736:    else if (parametre == (integer8) ((integer4) parametre))
        !          5737:    {
        !          5738:        return(0x2);
        !          5739:    }
        !          5740:    else
        !          5741:    {
        !          5742:        return(0x3);
        !          5743:    }
        !          5744: }
        !          5745: 
        !          5746: 
        !          5747: /*
        !          5748: --------------------------------------------------------------------------------
        !          5749:   Formateur des réels et entiers
        !          5750: --------------------------------------------------------------------------------
        !          5751: */
        !          5752: 
        !          5753: unsigned char *
        !          5754: formateur_fichier_reel(struct_processus *s_etat_processus,
        !          5755:        void *valeur_numerique, unsigned char type,
        !          5756:        long longueur, long longueur_champ,
        !          5757:        unsigned char format_sortie)
        !          5758: {
        !          5759:    real8                   mantisse;
        !          5760:    real8                   tampon_reel;
        !          5761: 
        !          5762:    integer8                tampon_entier;
        !          5763: 
        !          5764:    long                    correction;
        !          5765:    long                    exposant;
        !          5766:    long                    longueur_utile;
        !          5767:    long                    longueur_utile_limite;
        !          5768: 
        !          5769:    unsigned char           *chaine;
        !          5770:    unsigned char           format[16 + 1];
        !          5771:    unsigned char           mode[3 + 1];
        !          5772:    unsigned char           tampon[16 + 1];
        !          5773: 
        !          5774:    unsigned long           i;
        !          5775: 
        !          5776:    chaine = (unsigned char *) malloc((32 + 1) * sizeof(unsigned char));
        !          5777: 
        !          5778:    if (chaine == NULL)
        !          5779:    {
        !          5780:        (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
        !          5781:        return(NULL);
        !          5782:    }
        !          5783: 
        !          5784:    if (type == 'R')
        !          5785:    {
        !          5786:        tampon_reel = *((real8 *) valeur_numerique);
        !          5787: 
        !          5788:        if (tampon_reel > ((real8) 0))
        !          5789:        {
        !          5790:            exposant = (long) floor(log10(tampon_reel));
        !          5791:        }
        !          5792:        else if (tampon_reel < ((real8) 0))
        !          5793:        {
        !          5794:            exposant = (long) floor(log10(-tampon_reel));
        !          5795:        }
        !          5796:        else
        !          5797:        {
        !          5798:            exposant = 0;
        !          5799:        }
        !          5800: 
        !          5801:        mantisse = (*((real8 *) valeur_numerique)) / pow(10, exposant);
        !          5802:    }
        !          5803:    else
        !          5804:    {
        !          5805:        tampon_entier = *((integer8 *) valeur_numerique);
        !          5806: 
        !          5807:        if (tampon_entier > ((integer8) 0))
        !          5808:        {
        !          5809:            exposant = (long) floor(log10(tampon_entier));
        !          5810:        }
        !          5811:        else if (tampon_entier < ((integer8) 0))
        !          5812:        {
        !          5813:            exposant = (long) floor(log10(-tampon_entier));
        !          5814:        }
        !          5815:        else
        !          5816:        {
        !          5817:            exposant = 0;
        !          5818:        }
        !          5819: 
        !          5820:        mantisse = (*((integer8 *) valeur_numerique)) / pow(10, exposant);
        !          5821:    }
        !          5822: 
        !          5823:    longueur_utile = longueur;
        !          5824:    longueur_utile_limite = 15;
        !          5825: 
        !          5826:    if (longueur_utile > longueur_utile_limite)
        !          5827:    {
        !          5828:        longueur_utile = longueur_utile_limite;
        !          5829:    }
        !          5830: 
        !          5831:    if (format_sortie == 'S')
        !          5832:    {
        !          5833:        strcpy(mode, "STD");
        !          5834:    }
        !          5835:    else if (format_sortie == 'C')
        !          5836:    {
        !          5837:        strcpy(mode, "SCI");
        !          5838:    }
        !          5839:    else if (format_sortie == 'F')
        !          5840:    {
        !          5841:        strcpy(mode, "FIX");
        !          5842:    }
        !          5843:    else
        !          5844:    {
        !          5845:        strcpy(mode, "ENG");
        !          5846:    }
        !          5847: 
        !          5848:    if ((strcmp(mode, "SCI") == 0) ||
        !          5849:            ((strcmp(mode, "STD") == 0) && ((exposant >
        !          5850:            longueur_utile_limite) ||
        !          5851:            (exposant < -longueur_utile_limite))) ||
        !          5852:            ((strcmp(mode, "FIX") == 0) &&
        !          5853:            ((exposant >= longueur_utile_limite) ||
        !          5854:            (exposant < -longueur_utile))))
        !          5855:    {
        !          5856:        chaine[0] = 0;
        !          5857:        format[0] = 0;
        !          5858: 
        !          5859:        if (strcmp(mode, "STD") == 0)
        !          5860:        {
        !          5861:            longueur_utile = longueur_utile_limite - 1;
        !          5862:        }
        !          5863: 
        !          5864:        sprintf(format, "%%.%luf", longueur_utile);
        !          5865:            
        !          5866:        sprintf(tampon, format, mantisse);
        !          5867:        strcpy(chaine, tampon);
        !          5868:        strcat(chaine, "E");
        !          5869:        sprintf(tampon, "%ld", exposant);
        !          5870:        strcat(chaine, tampon);
        !          5871:    }
        !          5872:    else if (strcmp(mode, "FIX") == 0)
        !          5873:    {
        !          5874:        chaine[0] = 0;
        !          5875:        format[0] = 0;
        !          5876: 
        !          5877:        if (longueur_utile + exposant >= longueur_utile_limite)
        !          5878:        {
        !          5879:            longueur_utile = longueur_utile_limite - (exposant + 1);
        !          5880:        }
        !          5881: 
        !          5882:        sprintf(format, "%%.%luf", longueur_utile);
        !          5883: 
        !          5884:        sprintf(tampon, format, (mantisse * pow(10, exposant)));
        !          5885:        strcpy(chaine, tampon);
        !          5886:    }
        !          5887:    else if (strcmp(mode, "ENG") == 0)
        !          5888:    {
        !          5889:        chaine[0] = 0;
        !          5890:        format[0] = 0;
        !          5891: 
        !          5892:        correction = labs(exposant) % 3;
        !          5893: 
        !          5894:        if (exposant < 0)
        !          5895:        {
        !          5896:            if (correction == 0)
        !          5897:            {
        !          5898:                correction = 3;
        !          5899:            }
        !          5900: 
        !          5901:            correction =  3 - correction;
        !          5902:        }
        !          5903: 
        !          5904:        longueur_utile -= correction;
        !          5905:        sprintf(format, "%%.%luf", longueur_utile);
        !          5906: 
        !          5907:        sprintf(tampon, format, (mantisse * pow(10, correction)));
        !          5908:        strcpy(chaine, tampon);
        !          5909:        strcat(chaine, "E");
        !          5910:        sprintf(tampon, "%ld", (exposant - correction));
        !          5911:        strcat(chaine, tampon);
        !          5912:    }
        !          5913:    else
        !          5914:    {
        !          5915:        if (type == 'I')
        !          5916:        {
        !          5917:            chaine[0] = 0;
        !          5918:            sprintf(tampon, "%lld", *((integer8 *) valeur_numerique));
        !          5919:        }
        !          5920:        else
        !          5921:        {
        !          5922:            chaine[0] = 0;
        !          5923:            format[0] = 0;
        !          5924: 
        !          5925:            if (exposant >= 0)
        !          5926:            {
        !          5927:                sprintf(format, "%%.%luf", (longueur_utile_limite - exposant
        !          5928:                        - 1));
        !          5929:            }
        !          5930:            else
        !          5931:            {
        !          5932:                sprintf(format, "%%.%luf", longueur_utile_limite);
        !          5933:            }
        !          5934: 
        !          5935:            sprintf(tampon, format, *((real8 *) valeur_numerique));
        !          5936: 
        !          5937:            i = strlen(tampon) - 1;
        !          5938:            while(tampon[i] == '0')
        !          5939:            {
        !          5940:                tampon[i] = 0;
        !          5941:                i--;
        !          5942:            }
        !          5943: 
        !          5944:            if (ds_imposition_separateur_decimal == d_faux)
        !          5945:            {
        !          5946:                i = strlen(tampon) - 1;
        !          5947:                if (tampon[i] == '.')
        !          5948:                {
        !          5949:                    tampon[i] = 0;
        !          5950:                }
        !          5951:            }
        !          5952:        }
        !          5953:        strcpy(chaine, tampon);
        !          5954:    }
        !          5955: 
        !          5956:    if (longueur_champ >= 0)
        !          5957:    {
        !          5958:        if (strlen(chaine) > (size_t) longueur_champ)
        !          5959:        {
        !          5960:            for(i = 0; i < (unsigned long) longueur_champ; i++)
        !          5961:            {
        !          5962:                chaine[i] = '*';
        !          5963:            }
        !          5964: 
        !          5965:            chaine[i] = d_code_fin_chaine;
        !          5966:        }
        !          5967:    }
        !          5968: 
        !          5969:    return(chaine);
        !          5970: }

CVSweb interface <joel.bertrand@systella.fr>