Annotation of rpl/src/instructions_s7.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: Fonction 'slice'
! 29: ================================================================================
! 30: Entrées :
! 31: --------------------------------------------------------------------------------
! 32: Sorties :
! 33: --------------------------------------------------------------------------------
! 34: Effets de bord : néant
! 35: ================================================================================
! 36: */
! 37:
! 38: void
! 39: instruction_slice(struct_processus *s_etat_processus)
! 40: {
! 41: (*s_etat_processus).erreur_execution = d_ex;
! 42:
! 43: if ((*s_etat_processus).affichage_arguments == 'Y')
! 44: {
! 45: printf("\n SLICE ");
! 46:
! 47: if ((*s_etat_processus).langue == 'F')
! 48: {
! 49: printf("(graphique tridimensionnel avec courbes de niveau)\n\n");
! 50: printf(" Aucun argument\n");
! 51: }
! 52: else
! 53: {
! 54: printf("(3D graph with contour lines)\n\n");
! 55: printf(" No argument\n");
! 56: }
! 57:
! 58: return;
! 59: }
! 60: else if ((*s_etat_processus).test_instruction == 'Y')
! 61: {
! 62: (*s_etat_processus).nombre_arguments = -1;
! 63: return;
! 64: }
! 65:
! 66: # ifndef GNUPLOT_SUPPORT
! 67: if ((*s_etat_processus).langue == 'F')
! 68: {
! 69: printf("+++Attention : Support de GnuPlot non compilé !\n");
! 70: }
! 71: else
! 72: {
! 73: printf("+++Warning : GnuPlot not available !\n");
! 74: }
! 75:
! 76: fflush(stdout);
! 77:
! 78: return;
! 79: # endif
! 80:
! 81: strcpy((*s_etat_processus).type_trace_eq, "COURBES DE NIVEAU");
! 82:
! 83: return;
! 84: }
! 85:
! 86:
! 87: /*
! 88: ================================================================================
! 89: Fonction 'slicescale'
! 90: ================================================================================
! 91: Entrées :
! 92: --------------------------------------------------------------------------------
! 93: Sorties :
! 94: --------------------------------------------------------------------------------
! 95: Effets de bord : néant
! 96: ================================================================================
! 97: */
! 98:
! 99: void
! 100: instruction_slicescale(struct_processus *s_etat_processus)
! 101: {
! 102: int automatique;
! 103: int discret;
! 104: int incremental;
! 105:
! 106: long nombre_arguments;
! 107:
! 108: struct_liste_chainee *l_element_courant;
! 109: struct_liste_chainee *l_element_courant_resultat;
! 110:
! 111: struct_objet *s_objet_argument;
! 112: struct_objet *s_objet_auxiliaire;
! 113: struct_objet *s_objet_resultat;
! 114:
! 115: unsigned char *tampon;
! 116:
! 117: (*s_etat_processus).erreur_execution = d_ex;
! 118:
! 119: if ((*s_etat_processus).affichage_arguments == 'Y')
! 120: {
! 121: printf("\n SLICESCALE ");
! 122:
! 123: if ((*s_etat_processus).langue == 'F')
! 124: {
! 125: printf("(définition des courbes de niveau)\n\n");
! 126: }
! 127: else
! 128: {
! 129: printf("(definition of contour lines)\n\n");
! 130: }
! 131:
! 132: printf(" 1: %s\n\n", d_LST);
! 133:
! 134: if ((*s_etat_processus).langue == 'F')
! 135: {
! 136: printf(" Utilisation :\n\n");
! 137: }
! 138: else
! 139: {
! 140: printf(" Usage:\n\n");
! 141: }
! 142:
! 143: printf(" { { Xmin Xmax} { Ymin Ymax } { Zmin Zmax} } SCALE\n");
! 144: printf(" To be fixed!\n");
! 145: /*
! 146: AUTOMATIC
! 147: DISCRETE
! 148: INCREMENTAL
! 149: */
! 150:
! 151: return;
! 152: }
! 153: else if ((*s_etat_processus).test_instruction == 'Y')
! 154: {
! 155: (*s_etat_processus).nombre_arguments = -1;
! 156: return;
! 157: }
! 158:
! 159: if (test_cfsf(s_etat_processus, 31) == d_vrai)
! 160: {
! 161: if (empilement_pile_last(s_etat_processus, 1) == d_erreur)
! 162: {
! 163: return;
! 164: }
! 165: }
! 166:
! 167: if (depilement(s_etat_processus, &((*s_etat_processus).l_base_pile),
! 168: &s_objet_argument) == d_erreur)
! 169: {
! 170: (*s_etat_processus).erreur_execution = d_ex_manque_argument;
! 171: return;
! 172: }
! 173:
! 174: if ((*s_objet_argument).type == LST)
! 175: {
! 176: l_element_courant = (struct_liste_chainee *) (*s_objet_argument).objet;
! 177:
! 178: automatique = 0;
! 179: discret = 0;
! 180: incremental = 0;
! 181:
! 182: nombre_arguments = 0;
! 183:
! 184: while(l_element_courant != NULL)
! 185: {
! 186: if ((*(*l_element_courant).donnee).type == CHN)
! 187: {
! 188: if ((tampon = conversion_majuscule((unsigned char *)
! 189: (*(*l_element_courant).donnee).objet)) == NULL)
! 190: {
! 191: (*s_etat_processus).erreur_systeme =
! 192: d_es_allocation_memoire;
! 193: return;
! 194: }
! 195:
! 196: if (strcmp(tampon, "AUTOMATIC") == 0)
! 197: {
! 198: automatique++;
! 199: }
! 200: else if (strcmp(tampon, "DISCRETE") == 0)
! 201: {
! 202: discret++;
! 203: }
! 204: else if (strcmp(tampon, "INCREMENTAL") == 0)
! 205: {
! 206: incremental++;
! 207: }
! 208: else
! 209: {
! 210: free(tampon);
! 211: liberation(s_etat_processus, s_objet_argument);
! 212:
! 213: (*s_etat_processus).erreur_execution =
! 214: d_ex_argument_invalide;
! 215: return;
! 216: }
! 217:
! 218: free(tampon);
! 219: }
! 220:
! 221: l_element_courant = (*l_element_courant).suivant;
! 222: nombre_arguments++;
! 223: }
! 224:
! 225: if ((automatique + discret + incremental) == 1)
! 226: {
! 227: if (automatique == 1)
! 228: {
! 229: if (nombre_arguments > 2)
! 230: {
! 231: liberation(s_etat_processus, s_objet_argument);
! 232:
! 233: (*s_etat_processus).erreur_execution =
! 234: d_ex_argument_invalide;
! 235: return;
! 236: }
! 237: }
! 238: else if (discret == 1)
! 239: {
! 240: if (nombre_arguments < 2)
! 241: {
! 242: liberation(s_etat_processus, s_objet_argument);
! 243:
! 244: (*s_etat_processus).erreur_execution =
! 245: d_ex_argument_invalide;
! 246: return;
! 247: }
! 248: }
! 249: else if (incremental == 1)
! 250: {
! 251: if ((nombre_arguments < 3) || (nombre_arguments > 4))
! 252: {
! 253: liberation(s_etat_processus, s_objet_argument);
! 254:
! 255: (*s_etat_processus).erreur_execution =
! 256: d_ex_argument_invalide;
! 257: return;
! 258: }
! 259: }
! 260: else
! 261: {
! 262: liberation(s_etat_processus, s_objet_argument);
! 263:
! 264: (*s_etat_processus).erreur_execution = d_ex_argument_invalide;
! 265: return;
! 266: }
! 267:
! 268: if ((s_objet_resultat = allocation(s_etat_processus, LST))
! 269: == NULL)
! 270: {
! 271: (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
! 272: return;
! 273: }
! 274:
! 275: if (((*s_objet_resultat).objet =
! 276: allocation_maillon(s_etat_processus)) == NULL)
! 277: {
! 278: (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
! 279: return;
! 280: }
! 281:
! 282: l_element_courant_resultat = (*s_objet_resultat).objet;
! 283: (*l_element_courant_resultat).suivant = NULL;
! 284:
! 285: if (((*l_element_courant_resultat).donnee =
! 286: allocation(s_etat_processus, CHN)) == NULL)
! 287: {
! 288: (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
! 289: return;
! 290: }
! 291:
! 292: if (automatique == 1)
! 293: {
! 294: if (((*(*l_element_courant_resultat).donnee).objet = malloc(
! 295: 10 * sizeof(unsigned char))) == NULL)
! 296: {
! 297: (*s_etat_processus).erreur_systeme =
! 298: d_es_allocation_memoire;
! 299: return;
! 300: }
! 301:
! 302: strcpy((*(*l_element_courant_resultat).donnee).objet,
! 303: "AUTOMATIC");
! 304: }
! 305: else if (discret == 1)
! 306: {
! 307: if (((*(*l_element_courant_resultat).donnee).objet = malloc(
! 308: 9 * sizeof(unsigned char))) == NULL)
! 309: {
! 310: (*s_etat_processus).erreur_systeme =
! 311: d_es_allocation_memoire;
! 312: return;
! 313: }
! 314:
! 315: strcpy((*(*l_element_courant_resultat).donnee).objet,
! 316: "DISCRETE");
! 317: }
! 318: else
! 319: {
! 320: if (((*(*l_element_courant_resultat).donnee).objet = malloc(
! 321: 12 * sizeof(unsigned char))) == NULL)
! 322: {
! 323: (*s_etat_processus).erreur_systeme =
! 324: d_es_allocation_memoire;
! 325: return;
! 326: }
! 327:
! 328: strcpy((*(*l_element_courant_resultat).donnee).objet,
! 329: "INCREMENTAL");
! 330: }
! 331:
! 332: // Récupération des paramètres numériques
! 333:
! 334: l_element_courant = (struct_liste_chainee *)
! 335: (*s_objet_argument).objet;
! 336:
! 337: while(l_element_courant != NULL)
! 338: {
! 339: if ((*(*l_element_courant).donnee).type != CHN)
! 340: {
! 341: if (((*(*l_element_courant).donnee).type == ALG) ||
! 342: ((*(*l_element_courant).donnee).type == RPN) ||
! 343: ((*(*l_element_courant).donnee).type == NOM))
! 344: {
! 345: if (evaluation(s_etat_processus,
! 346: (*l_element_courant).donnee, 'N')
! 347: == d_erreur)
! 348: {
! 349: liberation(s_etat_processus, s_objet_argument);
! 350: liberation(s_etat_processus, s_objet_resultat);
! 351:
! 352: return;
! 353: }
! 354:
! 355: if (depilement(s_etat_processus,
! 356: &((*s_etat_processus).l_base_pile),
! 357: &s_objet_auxiliaire) == d_erreur)
! 358: {
! 359: liberation(s_etat_processus, s_objet_argument);
! 360: liberation(s_etat_processus, s_objet_resultat);
! 361:
! 362: (*s_etat_processus).erreur_execution =
! 363: d_ex_manque_argument;
! 364: return;
! 365: }
! 366:
! 367: liberation(s_etat_processus,
! 368: (*l_element_courant).donnee);
! 369: (*l_element_courant).donnee = s_objet_auxiliaire;
! 370: }
! 371:
! 372: if (((*(*l_element_courant).donnee).type == INT) ||
! 373: ((*(*l_element_courant).donnee).type == REL))
! 374: {
! 375: if (((*l_element_courant_resultat).suivant =
! 376: allocation_maillon(s_etat_processus)) == NULL)
! 377: {
! 378: (*s_etat_processus).erreur_systeme =
! 379: d_es_allocation_memoire;
! 380: return;
! 381: }
! 382:
! 383: l_element_courant_resultat =
! 384: (*l_element_courant_resultat).suivant;
! 385: (*l_element_courant_resultat).suivant = NULL;
! 386:
! 387: if (((*l_element_courant_resultat).donnee =
! 388: copie_objet(s_etat_processus,
! 389: (*l_element_courant).donnee, 'O'))
! 390: == NULL)
! 391: {
! 392: (*s_etat_processus).erreur_systeme =
! 393: d_es_allocation_memoire;
! 394: return;
! 395: }
! 396: }
! 397: else
! 398: {
! 399: liberation(s_etat_processus, s_objet_argument);
! 400: liberation(s_etat_processus, s_objet_resultat);
! 401:
! 402: (*s_etat_processus).erreur_execution =
! 403: d_ex_erreur_type_argument;
! 404: return;
! 405: }
! 406: }
! 407:
! 408: l_element_courant = (*l_element_courant).suivant;
! 409: }
! 410:
! 411: liberation(s_etat_processus,
! 412: (*s_etat_processus).parametres_courbes_de_niveau);
! 413: (*s_etat_processus).parametres_courbes_de_niveau =
! 414: s_objet_resultat;
! 415: }
! 416: else
! 417: {
! 418: liberation(s_etat_processus, s_objet_argument);
! 419:
! 420: (*s_etat_processus).erreur_execution = d_ex_argument_invalide;
! 421: return;
! 422: }
! 423: }
! 424: else
! 425: {
! 426: liberation(s_etat_processus, s_objet_argument);
! 427:
! 428: (*s_etat_processus).erreur_execution = d_ex_erreur_type_argument;
! 429: return;
! 430: }
! 431:
! 432: liberation(s_etat_processus, s_objet_argument);
! 433:
! 434: if (test_cfsf(s_etat_processus, 52) == d_faux)
! 435: {
! 436: if ((*s_etat_processus).fichiers_graphiques != NULL)
! 437: {
! 438: appel_gnuplot(s_etat_processus, 'N');
! 439: }
! 440: }
! 441:
! 442: return;
! 443: }
! 444:
! 445:
! 446: /*
! 447: ================================================================================
! 448: Fonction 'sx'
! 449: ================================================================================
! 450: Entrées : pointeur sur une structure struct_processus
! 451: --------------------------------------------------------------------------------
! 452: Sorties :
! 453: --------------------------------------------------------------------------------
! 454: Effets de bord : néant
! 455: ================================================================================
! 456: */
! 457:
! 458: void
! 459: instruction_sx(struct_processus *s_etat_processus)
! 460: {
! 461: logical1 presence_variable;
! 462:
! 463: long i;
! 464:
! 465: struct_objet *s_objet_statistique;
! 466: struct_objet *s_objet_resultat;
! 467:
! 468: struct_vecteur *resultat;
! 469:
! 470: unsigned long nombre_colonnes;
! 471:
! 472: (*s_etat_processus).erreur_execution = d_ex;
! 473:
! 474: if ((*s_etat_processus).affichage_arguments == 'Y')
! 475: {
! 476: printf("\n SX ");
! 477:
! 478: if ((*s_etat_processus).langue == 'F')
! 479: {
! 480: printf("(somme sur la colonne X)\n\n");
! 481: }
! 482: else
! 483: {
! 484: printf("(sum on X column)\n\n");
! 485: }
! 486:
! 487: printf("-> 1: %s, %s\n", d_INT, d_REL);
! 488:
! 489: return;
! 490: }
! 491: else if ((*s_etat_processus).test_instruction == 'Y')
! 492: {
! 493: (*s_etat_processus).nombre_arguments = -1;
! 494: return;
! 495: }
! 496:
! 497: if (test_cfsf(s_etat_processus, 31) == d_vrai)
! 498: {
! 499: if (empilement_pile_last(s_etat_processus, 0) == d_erreur)
! 500: {
! 501: return;
! 502: }
! 503: }
! 504:
! 505: /*
! 506: * Recherche d'une variable globale référencée par SIGMA
! 507: */
! 508:
! 509: if (recherche_variable(s_etat_processus, ds_sdat) == d_faux)
! 510: {
! 511: /*
! 512: * Aucune variable SIGMA
! 513: */
! 514:
! 515: (*s_etat_processus).erreur_systeme = d_es;
! 516: (*s_etat_processus).erreur_execution = d_ex_absence_observations;
! 517: return;
! 518: }
! 519: else
! 520: {
! 521: /*
! 522: * Il existe une variable locale SIGMA. Reste à vérifier l'existence
! 523: * d'une variable SIGMA globale...
! 524: */
! 525:
! 526: i = (*s_etat_processus).position_variable_courante;
! 527: presence_variable = d_faux;
! 528:
! 529: while(i >= 0)
! 530: {
! 531: if ((strcmp((*s_etat_processus).s_liste_variables[i].nom,
! 532: ds_sdat) == 0) && ((*s_etat_processus)
! 533: .s_liste_variables[i].niveau == 1))
! 534: {
! 535: presence_variable = d_vrai;
! 536: break;
! 537: }
! 538:
! 539: i--;
! 540: }
! 541:
! 542: if (presence_variable == d_faux)
! 543: {
! 544: (*s_etat_processus).erreur_execution = d_ex_absence_observations;
! 545: return;
! 546: }
! 547: else
! 548: {
! 549: (*s_etat_processus).position_variable_courante = i;
! 550:
! 551: if ((*s_etat_processus).s_liste_variables[i].objet == NULL)
! 552: {
! 553: (*s_etat_processus).erreur_execution = d_ex_variable_partagee;
! 554: return;
! 555: }
! 556:
! 557: if (((*((*s_etat_processus).s_liste_variables
! 558: [(*s_etat_processus).position_variable_courante].objet))
! 559: .type != MIN) && ((*((*s_etat_processus)
! 560: .s_liste_variables[(*s_etat_processus)
! 561: .position_variable_courante].objet)).type != MRL))
! 562: {
! 563: (*s_etat_processus).erreur_execution =
! 564: d_ex_matrice_statistique_invalide;
! 565: return;
! 566: }
! 567:
! 568: nombre_colonnes = (*((struct_matrice *) (*((*s_etat_processus)
! 569: .s_liste_variables[(*s_etat_processus)
! 570: .position_variable_courante].objet)).objet))
! 571: .nombre_colonnes;
! 572: }
! 573: }
! 574:
! 575: if (((*s_etat_processus).colonne_statistique_1 < 1) ||
! 576: ((*s_etat_processus).colonne_statistique_1 > (integer8)
! 577: nombre_colonnes))
! 578: {
! 579: (*s_etat_processus).erreur_execution = d_ex_observations_inexistantes;
! 580: return;
! 581: }
! 582:
! 583: s_objet_statistique = ((*s_etat_processus).s_liste_variables
! 584: [(*s_etat_processus).position_variable_courante]).objet;
! 585:
! 586: if (((*s_objet_statistique).type == MIN) ||
! 587: ((*s_objet_statistique).type == MRL))
! 588: {
! 589: if ((s_objet_resultat = allocation(s_etat_processus, NON)) == NULL)
! 590: {
! 591: (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
! 592: return;
! 593: }
! 594:
! 595: if ((resultat = sommation_colonne_statistique(
! 596: (struct_matrice *) (*s_objet_statistique).objet,
! 597: (*s_etat_processus).colonne_statistique_1)) == NULL)
! 598: {
! 599: (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
! 600: return;
! 601: }
! 602:
! 603: if ((*resultat).type == 'I')
! 604: {
! 605: (*s_objet_resultat).type = INT;
! 606:
! 607: if (((*s_objet_resultat).objet = malloc(sizeof(integer8))) == NULL)
! 608: {
! 609: (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
! 610: return;
! 611: }
! 612:
! 613: (*((integer8 *) (*s_objet_resultat).objet)) = (*((integer8 *)
! 614: (*resultat).tableau));
! 615: }
! 616: else
! 617: {
! 618: (*s_objet_resultat).type = REL;
! 619:
! 620: if (((*s_objet_resultat).objet = malloc(sizeof(real8))) == NULL)
! 621: {
! 622: (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
! 623: return;
! 624: }
! 625:
! 626: (*((real8 *) (*s_objet_resultat).objet)) = (*((real8 *)
! 627: (*resultat).tableau));
! 628: }
! 629:
! 630: free((*resultat).tableau);
! 631: free(resultat);
! 632:
! 633: if (empilement(s_etat_processus, &((*s_etat_processus).l_base_pile),
! 634: s_objet_resultat) == d_erreur)
! 635: {
! 636: return;
! 637: }
! 638: }
! 639: else
! 640: {
! 641: (*s_etat_processus).erreur_execution =
! 642: d_ex_matrice_statistique_invalide;
! 643: return;
! 644: }
! 645:
! 646: return;
! 647: }
! 648:
! 649:
! 650: /*
! 651: ================================================================================
! 652: Fonction 'sy'
! 653: ================================================================================
! 654: Entrées : pointeur sur une structure struct_processus
! 655: --------------------------------------------------------------------------------
! 656: Sorties :
! 657: --------------------------------------------------------------------------------
! 658: Effets de bord : néant
! 659: ================================================================================
! 660: */
! 661:
! 662: void
! 663: instruction_sy(struct_processus *s_etat_processus)
! 664: {
! 665: logical1 presence_variable;
! 666:
! 667: long i;
! 668:
! 669: struct_objet *s_objet_statistique;
! 670: struct_objet *s_objet_resultat;
! 671:
! 672: struct_vecteur *resultat;
! 673:
! 674: unsigned long nombre_colonnes;
! 675:
! 676: (*s_etat_processus).erreur_execution = d_ex;
! 677:
! 678: if ((*s_etat_processus).affichage_arguments == 'Y')
! 679: {
! 680: printf("\n SY ");
! 681:
! 682: if ((*s_etat_processus).langue == 'F')
! 683: {
! 684: printf("(somme sur la colonne Y)\n\n");
! 685: }
! 686: else
! 687: {
! 688: printf("(sum on Y column)\n\n");
! 689: }
! 690:
! 691: printf("-> 1: %s, %s\n", d_INT, d_REL);
! 692:
! 693: return;
! 694: }
! 695: else if ((*s_etat_processus).test_instruction == 'Y')
! 696: {
! 697: (*s_etat_processus).nombre_arguments = -1;
! 698: return;
! 699: }
! 700:
! 701: if (test_cfsf(s_etat_processus, 31) == d_vrai)
! 702: {
! 703: if (empilement_pile_last(s_etat_processus, 0) == d_erreur)
! 704: {
! 705: return;
! 706: }
! 707: }
! 708:
! 709: /*
! 710: * Recherche d'une variable globale référencée par SIGMA
! 711: */
! 712:
! 713: if (recherche_variable(s_etat_processus, ds_sdat) == d_faux)
! 714: {
! 715: /*
! 716: * Aucune variable SIGMA
! 717: */
! 718:
! 719: (*s_etat_processus).erreur_systeme = d_es;
! 720: (*s_etat_processus).erreur_execution = d_ex_absence_observations;
! 721: return;
! 722: }
! 723: else
! 724: {
! 725: /*
! 726: * Il existe une variable locale SIGMA. Reste à vérifier l'existence
! 727: * d'une variable SIGMA globale...
! 728: */
! 729:
! 730: i = (*s_etat_processus).position_variable_courante;
! 731: presence_variable = d_faux;
! 732:
! 733: while(i >= 0)
! 734: {
! 735: if ((strcmp((*s_etat_processus).s_liste_variables[i].nom,
! 736: ds_sdat) == 0) && ((*s_etat_processus)
! 737: .s_liste_variables[i].niveau == 1))
! 738: {
! 739: presence_variable = d_vrai;
! 740: break;
! 741: }
! 742:
! 743: i--;
! 744: }
! 745:
! 746: if (presence_variable == d_faux)
! 747: {
! 748: (*s_etat_processus).erreur_execution = d_ex_absence_observations;
! 749: return;
! 750: }
! 751: else
! 752: {
! 753: (*s_etat_processus).position_variable_courante = i;
! 754:
! 755: if ((*s_etat_processus).s_liste_variables[i].objet == NULL)
! 756: {
! 757: (*s_etat_processus).erreur_execution = d_ex_variable_partagee;
! 758: return;
! 759: }
! 760:
! 761: if (((*((*s_etat_processus).s_liste_variables
! 762: [(*s_etat_processus).position_variable_courante].objet))
! 763: .type != MIN) && ((*((*s_etat_processus)
! 764: .s_liste_variables[(*s_etat_processus)
! 765: .position_variable_courante].objet)).type != MRL))
! 766: {
! 767: (*s_etat_processus).erreur_execution =
! 768: d_ex_matrice_statistique_invalide;
! 769: return;
! 770: }
! 771:
! 772: nombre_colonnes = (*((struct_matrice *) (*((*s_etat_processus)
! 773: .s_liste_variables[(*s_etat_processus)
! 774: .position_variable_courante].objet)).objet))
! 775: .nombre_colonnes;
! 776: }
! 777: }
! 778:
! 779: if (((*s_etat_processus).colonne_statistique_2 < 1) ||
! 780: ((*s_etat_processus).colonne_statistique_2 > (integer8)
! 781: nombre_colonnes))
! 782: {
! 783: (*s_etat_processus).erreur_execution = d_ex_observations_inexistantes;
! 784: return;
! 785: }
! 786:
! 787: s_objet_statistique = ((*s_etat_processus).s_liste_variables
! 788: [(*s_etat_processus).position_variable_courante]).objet;
! 789:
! 790: if (((*s_objet_statistique).type == MIN) ||
! 791: ((*s_objet_statistique).type == MRL))
! 792: {
! 793: if ((s_objet_resultat = allocation(s_etat_processus, NON)) == NULL)
! 794: {
! 795: (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
! 796: return;
! 797: }
! 798:
! 799: if ((resultat = sommation_colonne_statistique(
! 800: (struct_matrice *) (*s_objet_statistique).objet,
! 801: (*s_etat_processus).colonne_statistique_2)) == NULL)
! 802: {
! 803: (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
! 804: return;
! 805: }
! 806:
! 807: if ((*resultat).type == 'I')
! 808: {
! 809: (*s_objet_resultat).type = INT;
! 810:
! 811: if (((*s_objet_resultat).objet = malloc(sizeof(integer8))) == NULL)
! 812: {
! 813: (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
! 814: return;
! 815: }
! 816:
! 817: (*((integer8 *) (*s_objet_resultat).objet)) = (*((integer8 *)
! 818: (*resultat).tableau));
! 819: }
! 820: else
! 821: {
! 822: (*s_objet_resultat).type = REL;
! 823:
! 824: if (((*s_objet_resultat).objet = malloc(sizeof(real8))) == NULL)
! 825: {
! 826: (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
! 827: return;
! 828: }
! 829:
! 830: (*((real8 *) (*s_objet_resultat).objet)) = (*((real8 *)
! 831: (*resultat).tableau));
! 832: }
! 833:
! 834: free((*resultat).tableau);
! 835: free(resultat);
! 836:
! 837: if (empilement(s_etat_processus, &((*s_etat_processus).l_base_pile),
! 838: s_objet_resultat) == d_erreur)
! 839: {
! 840: return;
! 841: }
! 842: }
! 843: else
! 844: {
! 845: (*s_etat_processus).erreur_execution =
! 846: d_ex_matrice_statistique_invalide;
! 847: return;
! 848: }
! 849:
! 850: return;
! 851: }
! 852:
! 853:
! 854: /*
! 855: ================================================================================
! 856: Fonction 'sxy'
! 857: ================================================================================
! 858: Entrées : pointeur sur une structure struct_processus
! 859: --------------------------------------------------------------------------------
! 860: Sorties :
! 861: --------------------------------------------------------------------------------
! 862: Effets de bord : néant
! 863: ================================================================================
! 864: */
! 865:
! 866: void
! 867: instruction_sxy(struct_processus *s_etat_processus)
! 868: {
! 869: logical1 presence_variable;
! 870:
! 871: long i;
! 872:
! 873: struct_objet *s_objet_statistique;
! 874: struct_objet *s_objet_resultat;
! 875:
! 876: struct_vecteur *resultat;
! 877:
! 878: unsigned long nombre_colonnes;
! 879:
! 880: (*s_etat_processus).erreur_execution = d_ex;
! 881:
! 882: if ((*s_etat_processus).affichage_arguments == 'Y')
! 883: {
! 884: printf("\n SXY ");
! 885:
! 886: if ((*s_etat_processus).langue == 'F')
! 887: {
! 888: printf("(somme des produits des colonne X et Y)\n\n");
! 889: }
! 890: else
! 891: {
! 892: printf("(sum of X and Y colums products)\n\n");
! 893: }
! 894:
! 895: printf("-> 1: %s, %s\n", d_INT, d_REL);
! 896:
! 897: return;
! 898: }
! 899: else if ((*s_etat_processus).test_instruction == 'Y')
! 900: {
! 901: (*s_etat_processus).nombre_arguments = -1;
! 902: return;
! 903: }
! 904:
! 905: if (test_cfsf(s_etat_processus, 31) == d_vrai)
! 906: {
! 907: if (empilement_pile_last(s_etat_processus, 0) == d_erreur)
! 908: {
! 909: return;
! 910: }
! 911: }
! 912:
! 913: /*
! 914: * Recherche d'une variable globale référencée par SIGMA
! 915: */
! 916:
! 917: if (recherche_variable(s_etat_processus, ds_sdat) == d_faux)
! 918: {
! 919: /*
! 920: * Aucune variable SIGMA
! 921: */
! 922:
! 923: (*s_etat_processus).erreur_systeme = d_es;
! 924: (*s_etat_processus).erreur_execution = d_ex_absence_observations;
! 925: return;
! 926: }
! 927: else
! 928: {
! 929: /*
! 930: * Il existe une variable locale SIGMA. Reste à vérifier l'existence
! 931: * d'une variable SIGMA globale...
! 932: */
! 933:
! 934: i = (*s_etat_processus).position_variable_courante;
! 935: presence_variable = d_faux;
! 936:
! 937: while(i >= 0)
! 938: {
! 939: if ((strcmp((*s_etat_processus).s_liste_variables[i].nom,
! 940: ds_sdat) == 0) && ((*s_etat_processus)
! 941: .s_liste_variables[i].niveau == 1))
! 942: {
! 943: presence_variable = d_vrai;
! 944: break;
! 945: }
! 946:
! 947: i--;
! 948: }
! 949:
! 950: if (presence_variable == d_faux)
! 951: {
! 952: (*s_etat_processus).erreur_execution = d_ex_absence_observations;
! 953: return;
! 954: }
! 955: else
! 956: {
! 957: (*s_etat_processus).position_variable_courante = i;
! 958:
! 959: if ((*s_etat_processus).s_liste_variables[i].objet == NULL)
! 960: {
! 961: (*s_etat_processus).erreur_execution = d_ex_variable_partagee;
! 962: return;
! 963: }
! 964:
! 965: if (((*((*s_etat_processus).s_liste_variables
! 966: [(*s_etat_processus).position_variable_courante].objet))
! 967: .type != MIN) && ((*((*s_etat_processus)
! 968: .s_liste_variables[(*s_etat_processus)
! 969: .position_variable_courante].objet)).type != MRL))
! 970: {
! 971: (*s_etat_processus).erreur_execution =
! 972: d_ex_matrice_statistique_invalide;
! 973: return;
! 974: }
! 975:
! 976: nombre_colonnes = (*((struct_matrice *) (*((*s_etat_processus)
! 977: .s_liste_variables[(*s_etat_processus)
! 978: .position_variable_courante].objet)).objet))
! 979: .nombre_colonnes;
! 980: }
! 981: }
! 982:
! 983: if (((*s_etat_processus).colonne_statistique_1 < 1) ||
! 984: ((*s_etat_processus).colonne_statistique_1 > (integer8)
! 985: nombre_colonnes) || ((*s_etat_processus).colonne_statistique_2 < 1)
! 986: || ((*s_etat_processus).colonne_statistique_2 > (integer8)
! 987: nombre_colonnes))
! 988: {
! 989: (*s_etat_processus).erreur_execution = d_ex_observations_inexistantes;
! 990: return;
! 991: }
! 992:
! 993: s_objet_statistique = ((*s_etat_processus).s_liste_variables
! 994: [(*s_etat_processus).position_variable_courante]).objet;
! 995:
! 996: if (((*s_objet_statistique).type == MIN) ||
! 997: ((*s_objet_statistique).type == MRL))
! 998: {
! 999: if ((s_objet_resultat = allocation(s_etat_processus, NON)) == NULL)
! 1000: {
! 1001: (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
! 1002: return;
! 1003: }
! 1004:
! 1005: if ((resultat = sommation_produits_colonnes_statistiques(
! 1006: (struct_matrice *) (*s_objet_statistique).objet,
! 1007: (*s_etat_processus).colonne_statistique_1,
! 1008: (*s_etat_processus).colonne_statistique_2)) == NULL)
! 1009: {
! 1010: (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
! 1011: return;
! 1012: }
! 1013:
! 1014: if ((*resultat).type == 'I')
! 1015: {
! 1016: (*s_objet_resultat).type = INT;
! 1017:
! 1018: if (((*s_objet_resultat).objet = malloc(sizeof(integer8))) == NULL)
! 1019: {
! 1020: (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
! 1021: return;
! 1022: }
! 1023:
! 1024: (*((integer8 *) (*s_objet_resultat).objet)) = (*((integer8 *)
! 1025: (*resultat).tableau));
! 1026: }
! 1027: else
! 1028: {
! 1029: (*s_objet_resultat).type = REL;
! 1030:
! 1031: if (((*s_objet_resultat).objet = malloc(sizeof(real8))) == NULL)
! 1032: {
! 1033: (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
! 1034: return;
! 1035: }
! 1036:
! 1037: (*((real8 *) (*s_objet_resultat).objet)) = (*((real8 *)
! 1038: (*resultat).tableau));
! 1039: }
! 1040:
! 1041: free((*resultat).tableau);
! 1042: free(resultat);
! 1043:
! 1044: if (empilement(s_etat_processus, &((*s_etat_processus).l_base_pile),
! 1045: s_objet_resultat) == d_erreur)
! 1046: {
! 1047: return;
! 1048: }
! 1049: }
! 1050: else
! 1051: {
! 1052: (*s_etat_processus).erreur_execution =
! 1053: d_ex_matrice_statistique_invalide;
! 1054: return;
! 1055: }
! 1056:
! 1057: return;
! 1058: }
! 1059:
! 1060:
! 1061: /*
! 1062: ================================================================================
! 1063: Fonction 'sx2'
! 1064: ================================================================================
! 1065: Entrées : pointeur sur une structure struct_processus
! 1066: --------------------------------------------------------------------------------
! 1067: Sorties :
! 1068: --------------------------------------------------------------------------------
! 1069: Effets de bord : néant
! 1070: ================================================================================
! 1071: */
! 1072:
! 1073: void
! 1074: instruction_sx2(struct_processus *s_etat_processus)
! 1075: {
! 1076: logical1 presence_variable;
! 1077:
! 1078: long i;
! 1079:
! 1080: struct_objet *s_objet_statistique;
! 1081: struct_objet *s_objet_resultat;
! 1082:
! 1083: struct_vecteur *resultat;
! 1084:
! 1085: unsigned long nombre_colonnes;
! 1086:
! 1087: (*s_etat_processus).erreur_execution = d_ex;
! 1088:
! 1089: if ((*s_etat_processus).affichage_arguments == 'Y')
! 1090: {
! 1091: printf("\n SX2 ");
! 1092:
! 1093: if ((*s_etat_processus).langue == 'F')
! 1094: {
! 1095: printf("(somme des carrés de la colonne X)\n\n");
! 1096: }
! 1097: else
! 1098: {
! 1099: printf("(sum of column X squares)\n\n");
! 1100: }
! 1101:
! 1102: printf("-> 1: %s, %s\n", d_INT, d_REL);
! 1103:
! 1104: return;
! 1105: }
! 1106: else if ((*s_etat_processus).test_instruction == 'Y')
! 1107: {
! 1108: (*s_etat_processus).nombre_arguments = -1;
! 1109: return;
! 1110: }
! 1111:
! 1112: if (test_cfsf(s_etat_processus, 31) == d_vrai)
! 1113: {
! 1114: if (empilement_pile_last(s_etat_processus, 0) == d_erreur)
! 1115: {
! 1116: return;
! 1117: }
! 1118: }
! 1119:
! 1120: /*
! 1121: * Recherche d'une variable globale référencée par SIGMA
! 1122: */
! 1123:
! 1124: if (recherche_variable(s_etat_processus, ds_sdat) == d_faux)
! 1125: {
! 1126: /*
! 1127: * Aucune variable SIGMA
! 1128: */
! 1129:
! 1130: (*s_etat_processus).erreur_systeme = d_es;
! 1131: (*s_etat_processus).erreur_execution = d_ex_absence_observations;
! 1132: return;
! 1133: }
! 1134: else
! 1135: {
! 1136: /*
! 1137: * Il existe une variable locale SIGMA. Reste à vérifier l'existence
! 1138: * d'une variable SIGMA globale...
! 1139: */
! 1140:
! 1141: i = (*s_etat_processus).position_variable_courante;
! 1142: presence_variable = d_faux;
! 1143:
! 1144: while(i >= 0)
! 1145: {
! 1146: if ((strcmp((*s_etat_processus).s_liste_variables[i].nom,
! 1147: ds_sdat) == 0) && ((*s_etat_processus)
! 1148: .s_liste_variables[i].niveau == 1))
! 1149: {
! 1150: presence_variable = d_vrai;
! 1151: break;
! 1152: }
! 1153:
! 1154: i--;
! 1155: }
! 1156:
! 1157: if (presence_variable == d_faux)
! 1158: {
! 1159: (*s_etat_processus).erreur_execution = d_ex_absence_observations;
! 1160: return;
! 1161: }
! 1162: else
! 1163: {
! 1164: (*s_etat_processus).position_variable_courante = i;
! 1165:
! 1166: if ((*s_etat_processus).s_liste_variables[i].objet == NULL)
! 1167: {
! 1168: (*s_etat_processus).erreur_execution = d_ex_variable_partagee;
! 1169: return;
! 1170: }
! 1171:
! 1172: if (((*((*s_etat_processus).s_liste_variables
! 1173: [(*s_etat_processus).position_variable_courante].objet))
! 1174: .type != MIN) && ((*((*s_etat_processus)
! 1175: .s_liste_variables[(*s_etat_processus)
! 1176: .position_variable_courante].objet)).type != MRL))
! 1177: {
! 1178: (*s_etat_processus).erreur_execution =
! 1179: d_ex_matrice_statistique_invalide;
! 1180: return;
! 1181: }
! 1182:
! 1183: nombre_colonnes = (*((struct_matrice *) (*((*s_etat_processus)
! 1184: .s_liste_variables[(*s_etat_processus)
! 1185: .position_variable_courante].objet)).objet))
! 1186: .nombre_colonnes;
! 1187: }
! 1188: }
! 1189:
! 1190: if (((*s_etat_processus).colonne_statistique_1 < 1) ||
! 1191: ((*s_etat_processus).colonne_statistique_1 > (integer8)
! 1192: nombre_colonnes))
! 1193: {
! 1194: (*s_etat_processus).erreur_execution = d_ex_observations_inexistantes;
! 1195: return;
! 1196: }
! 1197:
! 1198: s_objet_statistique = ((*s_etat_processus).s_liste_variables
! 1199: [(*s_etat_processus).position_variable_courante]).objet;
! 1200:
! 1201: if (((*s_objet_statistique).type == MIN) ||
! 1202: ((*s_objet_statistique).type == MRL))
! 1203: {
! 1204: if ((s_objet_resultat = allocation(s_etat_processus, NON)) == NULL)
! 1205: {
! 1206: (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
! 1207: return;
! 1208: }
! 1209:
! 1210: if ((resultat = sommation_produits_colonnes_statistiques(
! 1211: (struct_matrice *) (*s_objet_statistique).objet,
! 1212: (*s_etat_processus).colonne_statistique_1,
! 1213: (*s_etat_processus).colonne_statistique_1)) == NULL)
! 1214: {
! 1215: (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
! 1216: return;
! 1217: }
! 1218:
! 1219: if ((*resultat).type == 'I')
! 1220: {
! 1221: (*s_objet_resultat).type = INT;
! 1222:
! 1223: if (((*s_objet_resultat).objet = malloc(sizeof(integer8))) == NULL)
! 1224: {
! 1225: (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
! 1226: return;
! 1227: }
! 1228:
! 1229: (*((integer8 *) (*s_objet_resultat).objet)) = (*((integer8 *)
! 1230: (*resultat).tableau));
! 1231: }
! 1232: else
! 1233: {
! 1234: (*s_objet_resultat).type = REL;
! 1235:
! 1236: if (((*s_objet_resultat).objet = malloc(sizeof(real8))) == NULL)
! 1237: {
! 1238: (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
! 1239: return;
! 1240: }
! 1241:
! 1242: (*((real8 *) (*s_objet_resultat).objet)) = (*((real8 *)
! 1243: (*resultat).tableau));
! 1244: }
! 1245:
! 1246: free((*resultat).tableau);
! 1247: free(resultat);
! 1248:
! 1249: if (empilement(s_etat_processus, &((*s_etat_processus).l_base_pile),
! 1250: s_objet_resultat) == d_erreur)
! 1251: {
! 1252: return;
! 1253: }
! 1254: }
! 1255: else
! 1256: {
! 1257: (*s_etat_processus).erreur_execution =
! 1258: d_ex_matrice_statistique_invalide;
! 1259: return;
! 1260: }
! 1261:
! 1262: return;
! 1263: }
! 1264:
! 1265:
! 1266: /*
! 1267: ================================================================================
! 1268: Fonction 'sy2'
! 1269: ================================================================================
! 1270: Entrées : pointeur sur une structure struct_processus
! 1271: --------------------------------------------------------------------------------
! 1272: Sorties :
! 1273: --------------------------------------------------------------------------------
! 1274: Effets de bord : néant
! 1275: ================================================================================
! 1276: */
! 1277:
! 1278: void
! 1279: instruction_sy2(struct_processus *s_etat_processus)
! 1280: {
! 1281: logical1 presence_variable;
! 1282:
! 1283: long i;
! 1284:
! 1285: struct_objet *s_objet_statistique;
! 1286: struct_objet *s_objet_resultat;
! 1287:
! 1288: struct_vecteur *resultat;
! 1289:
! 1290: unsigned long nombre_colonnes;
! 1291:
! 1292: (*s_etat_processus).erreur_execution = d_ex;
! 1293:
! 1294: if ((*s_etat_processus).affichage_arguments == 'Y')
! 1295: {
! 1296: printf("\n SY2 ");
! 1297:
! 1298: if ((*s_etat_processus).langue == 'F')
! 1299: {
! 1300: printf("(somme des carrés de la colonne Y)\n\n");
! 1301: }
! 1302: else
! 1303: {
! 1304: printf("(sum of column Y squares)\n\n");
! 1305: }
! 1306:
! 1307: printf("-> 1: %s, %s\n", d_INT, d_REL);
! 1308:
! 1309: return;
! 1310: }
! 1311: else if ((*s_etat_processus).test_instruction == 'Y')
! 1312: {
! 1313: (*s_etat_processus).nombre_arguments = -1;
! 1314: return;
! 1315: }
! 1316:
! 1317: if (test_cfsf(s_etat_processus, 31) == d_vrai)
! 1318: {
! 1319: if (empilement_pile_last(s_etat_processus, 0) == d_erreur)
! 1320: {
! 1321: return;
! 1322: }
! 1323: }
! 1324:
! 1325: /*
! 1326: * Recherche d'une variable globale référencée par SIGMA
! 1327: */
! 1328:
! 1329: if (recherche_variable(s_etat_processus, ds_sdat) == d_faux)
! 1330: {
! 1331: /*
! 1332: * Aucune variable SIGMA
! 1333: */
! 1334:
! 1335: (*s_etat_processus).erreur_systeme = d_es;
! 1336: (*s_etat_processus).erreur_execution = d_ex_absence_observations;
! 1337: return;
! 1338: }
! 1339: else
! 1340: {
! 1341: /*
! 1342: * Il existe une variable locale SIGMA. Reste à vérifier l'existence
! 1343: * d'une variable SIGMA globale...
! 1344: */
! 1345:
! 1346: i = (*s_etat_processus).position_variable_courante;
! 1347: presence_variable = d_faux;
! 1348:
! 1349: while(i >= 0)
! 1350: {
! 1351: if ((strcmp((*s_etat_processus).s_liste_variables[i].nom,
! 1352: ds_sdat) == 0) && ((*s_etat_processus)
! 1353: .s_liste_variables[i].niveau == 1))
! 1354: {
! 1355: presence_variable = d_vrai;
! 1356: break;
! 1357: }
! 1358:
! 1359: i--;
! 1360: }
! 1361:
! 1362: if (presence_variable == d_faux)
! 1363: {
! 1364: (*s_etat_processus).erreur_execution = d_ex_absence_observations;
! 1365: return;
! 1366: }
! 1367: else
! 1368: {
! 1369: (*s_etat_processus).position_variable_courante = i;
! 1370:
! 1371: if ((*s_etat_processus).s_liste_variables[i].objet == NULL)
! 1372: {
! 1373: (*s_etat_processus).erreur_execution = d_ex_variable_partagee;
! 1374: return;
! 1375: }
! 1376:
! 1377: if (((*((*s_etat_processus).s_liste_variables
! 1378: [(*s_etat_processus).position_variable_courante].objet))
! 1379: .type != MIN) && ((*((*s_etat_processus)
! 1380: .s_liste_variables[(*s_etat_processus)
! 1381: .position_variable_courante].objet)).type != MRL))
! 1382: {
! 1383: (*s_etat_processus).erreur_execution =
! 1384: d_ex_matrice_statistique_invalide;
! 1385: return;
! 1386: }
! 1387:
! 1388: nombre_colonnes = (*((struct_matrice *) (*((*s_etat_processus)
! 1389: .s_liste_variables[(*s_etat_processus)
! 1390: .position_variable_courante].objet)).objet))
! 1391: .nombre_colonnes;
! 1392: }
! 1393: }
! 1394:
! 1395: if (((*s_etat_processus).colonne_statistique_2 < 1) ||
! 1396: ((*s_etat_processus).colonne_statistique_2 > (integer8)
! 1397: nombre_colonnes))
! 1398: {
! 1399: (*s_etat_processus).erreur_execution = d_ex_observations_inexistantes;
! 1400: return;
! 1401: }
! 1402:
! 1403: s_objet_statistique = ((*s_etat_processus).s_liste_variables
! 1404: [(*s_etat_processus).position_variable_courante]).objet;
! 1405:
! 1406: if (((*s_objet_statistique).type == MIN) ||
! 1407: ((*s_objet_statistique).type == MRL))
! 1408: {
! 1409: if ((s_objet_resultat = allocation(s_etat_processus, NON)) == NULL)
! 1410: {
! 1411: (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
! 1412: return;
! 1413: }
! 1414:
! 1415: if ((resultat = sommation_produits_colonnes_statistiques(
! 1416: (struct_matrice *) (*s_objet_statistique).objet,
! 1417: (*s_etat_processus).colonne_statistique_2,
! 1418: (*s_etat_processus).colonne_statistique_2)) == NULL)
! 1419: {
! 1420: (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
! 1421: return;
! 1422: }
! 1423:
! 1424: if ((*resultat).type == 'I')
! 1425: {
! 1426: (*s_objet_resultat).type = INT;
! 1427:
! 1428: if (((*s_objet_resultat).objet = malloc(sizeof(integer8))) == NULL)
! 1429: {
! 1430: (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
! 1431: return;
! 1432: }
! 1433:
! 1434: (*((integer8 *) (*s_objet_resultat).objet)) = (*((integer8 *)
! 1435: (*resultat).tableau));
! 1436: }
! 1437: else
! 1438: {
! 1439: (*s_objet_resultat).type = REL;
! 1440:
! 1441: if (((*s_objet_resultat).objet = malloc(sizeof(real8))) == NULL)
! 1442: {
! 1443: (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
! 1444: return;
! 1445: }
! 1446:
! 1447: (*((real8 *) (*s_objet_resultat).objet)) = (*((real8 *)
! 1448: (*resultat).tableau));
! 1449: }
! 1450:
! 1451: free((*resultat).tableau);
! 1452: free(resultat);
! 1453:
! 1454: if (empilement(s_etat_processus, &((*s_etat_processus).l_base_pile),
! 1455: s_objet_resultat) == d_erreur)
! 1456: {
! 1457: return;
! 1458: }
! 1459: }
! 1460: else
! 1461: {
! 1462: (*s_etat_processus).erreur_execution =
! 1463: d_ex_matrice_statistique_invalide;
! 1464: return;
! 1465: }
! 1466:
! 1467: return;
! 1468: }
! 1469:
! 1470: // vim: ts=4
CVSweb interface <joel.bertrand@systella.fr>