1: /*
2: ================================================================================
3: RPL/2 (R) version 4.1.36
4: Copyright (C) 1989-2025 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 '->table'
29: ================================================================================
30: Entrées : structure processus
31: --------------------------------------------------------------------------------
32: Sorties :
33: --------------------------------------------------------------------------------
34: Effets de bord : néant
35: ================================================================================
36: */
37:
38: void
39: instruction_fleche_table(struct_processus *s_etat_processus)
40: {
41: struct_objet *s_objet;
42:
43: integer8 i;
44: integer8 nombre_elements;
45:
46: (*s_etat_processus).erreur_execution = d_ex;
47:
48: if ((*s_etat_processus).affichage_arguments == 'Y')
49: {
50: printf("\n ->TABLE ");
51:
52: if ((*s_etat_processus).langue == 'F')
53: {
54: printf("(création d'une table)\n\n");
55: }
56: else
57: {
58: printf("(create table)\n\n");
59: }
60:
61: printf(" n: %s, %s, %s, %s, %s, %s,\n"
62: " %s, %s, %s, %s, %s,\n"
63: " %s, %s, %s, %s, %s,\n"
64: " %s, %s\n",
65: d_INT, d_REL, d_CPL, d_VIN, d_VRL, d_VCX, d_MIN, d_MRL, d_MCX,
66: d_TAB, d_BIN, d_NOM, d_CHN, d_LST, d_ALG, d_RPN, d_FCH, d_SLB);
67: printf(" ...\n");
68: printf(" 2: %s, %s, %s, %s, %s, %s,\n"
69: " %s, %s, %s, %s, %s,\n"
70: " %s, %s, %s, %s, %s,\n"
71: " %s, %s\n",
72: d_INT, d_REL, d_CPL, d_VIN, d_VRL, d_VCX, d_MIN, d_MRL, d_MCX,
73: d_TAB, d_BIN, d_NOM, d_CHN, d_LST, d_ALG, d_RPN, d_FCH, d_SLB);
74: printf(" 1: %s\n", d_INT);
75: printf("-> 1: %s\n", d_TAB);
76:
77: return;
78: }
79: else if ((*s_etat_processus).test_instruction == 'Y')
80: {
81: (*s_etat_processus).nombre_arguments = -1;
82: return;
83: }
84:
85: if (test_cfsf(s_etat_processus, 31) == d_vrai)
86: {
87: if (empilement_pile_last(s_etat_processus, 0) == d_erreur)
88: {
89: return;
90: }
91: }
92:
93: if ((*s_etat_processus).hauteur_pile_operationnelle == 0)
94: {
95: (*s_etat_processus).erreur_execution = d_ex_manque_argument;
96: return;
97: }
98:
99: if ((*(*(*s_etat_processus).l_base_pile).donnee).type != INT)
100: {
101: (*s_etat_processus).erreur_execution = d_ex_argument_invalide;
102: return;
103: }
104:
105: nombre_elements = (*((integer8 *) (*(*(*s_etat_processus).l_base_pile)
106: .donnee).objet));
107:
108: if (nombre_elements < 0)
109: {
110:
111: /*
112: -- Opération absurde autorisée sur le calculateur HP-28S -----------------------
113: */
114:
115: (*s_etat_processus).erreur_execution = d_ex_argument_invalide;
116: return;
117: }
118:
119: if (nombre_elements >= (*s_etat_processus).hauteur_pile_operationnelle)
120: {
121: (*s_etat_processus).erreur_execution = d_ex_manque_argument;
122: return;
123: }
124:
125: if (test_cfsf(s_etat_processus, 31) == d_vrai)
126: {
127: if (empilement_pile_last(s_etat_processus, nombre_elements + 1)
128: == d_erreur)
129: {
130: return;
131: }
132: }
133:
134: if (depilement(s_etat_processus, &((*s_etat_processus).l_base_pile),
135: &s_objet) == d_erreur)
136: {
137: return;
138: }
139:
140: liberation(s_etat_processus, s_objet);
141:
142: if ((s_objet = allocation(s_etat_processus, TBL)) == NULL)
143: {
144: (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
145: return;
146: }
147:
148: (*((struct_tableau *) (*s_objet).objet)).nombre_elements =
149: nombre_elements;
150:
151: if (((*((struct_tableau *) (*s_objet).objet)).elements = malloc(((size_t)
152: nombre_elements) * sizeof(struct_objet *))) == NULL)
153: {
154: (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
155: return;
156: }
157:
158: for(i = 0; i < nombre_elements; i++)
159: {
160: if (depilement(s_etat_processus, &((*s_etat_processus).l_base_pile),
161: &((*((struct_tableau *) (*s_objet).objet)).elements
162: [nombre_elements - (i + 1)])) == d_erreur)
163: {
164: return;
165: }
166: }
167:
168: if (empilement(s_etat_processus, &((*s_etat_processus).l_base_pile),
169: s_objet) == d_erreur)
170: {
171: return;
172: }
173:
174: return;
175: }
176:
177:
178: /*
179: ================================================================================
180: Fonction '->diag'
181: ================================================================================
182: Entrées : pointeur sur une structure struct_processus
183: --------------------------------------------------------------------------------
184: Sorties :
185: --------------------------------------------------------------------------------
186: Effets de bord : néant
187: ================================================================================
188: */
189:
190: void
191: instruction_fleche_diag(struct_processus *s_etat_processus)
192: {
193: struct_objet *s_objet_argument;
194: struct_objet *s_objet_resultat;
195:
196: integer8 i;
197: integer8 j;
198:
199: (*s_etat_processus).erreur_execution = d_ex;
200:
201: if ((*s_etat_processus).affichage_arguments == 'Y')
202: {
203: printf("\n ->DIAG ");
204:
205: if ((*s_etat_processus).langue == 'F')
206: {
207: printf("(conversion d'un vecteur en matrice diaginale)\n\n");
208: }
209: else
210: {
211: printf("(vector to diagonal matrix conversion)\n\n");
212: }
213:
214: printf("-> 1: %s, %s, %s\n", d_VIN, d_VRL, d_VCX);
215: printf(" 1: %s, %s, %s\n", d_MIN, d_MRL, d_MCX);
216:
217: return;
218: }
219: else if ((*s_etat_processus).test_instruction == 'Y')
220: {
221: (*s_etat_processus).nombre_arguments = -1;
222: return;
223: }
224:
225: if (test_cfsf(s_etat_processus, 31) == d_vrai)
226: {
227: if (empilement_pile_last(s_etat_processus, 1) == d_erreur)
228: {
229: return;
230: }
231: }
232:
233: if (depilement(s_etat_processus, &((*s_etat_processus).l_base_pile),
234: &s_objet_argument) == d_erreur)
235: {
236: (*s_etat_processus).erreur_execution = d_ex_manque_argument;
237: return;
238: }
239:
240: /*
241: * Conversion d'un vecteur
242: */
243:
244: if ((*s_objet_argument).type == VIN)
245: {
246: if ((s_objet_resultat = allocation(s_etat_processus, MIN)) == NULL)
247: {
248: (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
249: return;
250: }
251:
252: (*((struct_matrice *) (*s_objet_resultat).objet)).nombre_lignes =
253: (*((struct_vecteur *) (*s_objet_argument).objet)).taille;
254: (*((struct_matrice *) (*s_objet_resultat).objet)).nombre_colonnes =
255: (*((struct_vecteur *) (*s_objet_argument).objet)).taille;
256:
257: if (((*((struct_matrice *) (*s_objet_resultat).objet)).tableau =
258: malloc(((size_t) (*((struct_matrice *)
259: (*s_objet_resultat).objet)).nombre_lignes)
260: * sizeof(integer8 *))) == NULL)
261: {
262: (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
263: return;
264: }
265:
266: for(i = 0; i < (*((struct_matrice *) (*s_objet_resultat).objet))
267: .nombre_lignes; i++)
268: {
269: if ((((integer8 **) (*((struct_matrice *)
270: (*s_objet_resultat).objet)).tableau)[i] =
271: malloc(((size_t) (*((struct_matrice *)
272: (*s_objet_resultat).objet)).nombre_colonnes) *
273: sizeof(integer8))) == NULL)
274: {
275: (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
276: return;
277: }
278:
279: for(j = 0; j < (*((struct_matrice *) (*s_objet_resultat).objet))
280: .nombre_colonnes; j++)
281: {
282: if (i != j)
283: {
284: ((integer8 **) (*((struct_matrice *) (*s_objet_resultat)
285: .objet)).tableau)[i][j] = 0;
286: }
287: else
288: {
289: ((integer8 **) (*((struct_matrice *) (*s_objet_resultat)
290: .objet)).tableau)[i][j] = ((integer8 *)
291: (*((struct_vecteur *) (*s_objet_argument)
292: .objet)).tableau)[i];
293: }
294: }
295: }
296: }
297: else if ((*s_objet_argument).type == VRL)
298: {
299: if ((s_objet_resultat = allocation(s_etat_processus, MRL)) == NULL)
300: {
301: (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
302: return;
303: }
304:
305: (*((struct_matrice *) (*s_objet_resultat).objet)).nombre_lignes =
306: (*((struct_vecteur *) (*s_objet_argument).objet)).taille;
307: (*((struct_matrice *) (*s_objet_resultat).objet)).nombre_colonnes =
308: (*((struct_vecteur *) (*s_objet_argument).objet)).taille;
309:
310: if (((*((struct_matrice *) (*s_objet_resultat).objet)).tableau =
311: malloc(((size_t) (*((struct_matrice *) (*s_objet_resultat)
312: .objet)).nombre_lignes) * sizeof(real8 *))) == NULL)
313: {
314: (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
315: return;
316: }
317:
318: for(i = 0; i < (*((struct_matrice *) (*s_objet_resultat).objet))
319: .nombre_lignes; i++)
320: {
321: if ((((real8 **) (*((struct_matrice *)
322: (*s_objet_resultat).objet)).tableau)[i] =
323: malloc(((size_t) (*((struct_matrice *)
324: (*s_objet_resultat).objet)).nombre_colonnes) *
325: sizeof(real8))) == NULL)
326: {
327: (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
328: return;
329: }
330:
331: for(j = 0; j < (*((struct_matrice *) (*s_objet_resultat).objet))
332: .nombre_colonnes; j++)
333: {
334: if (i != j)
335: {
336: ((real8 **) (*((struct_matrice *) (*s_objet_resultat)
337: .objet)).tableau)[i][j] = 0;
338: }
339: else
340: {
341: ((real8 **) (*((struct_matrice *) (*s_objet_resultat)
342: .objet)).tableau)[i][j] = ((real8 *)
343: (*((struct_vecteur *) (*s_objet_argument)
344: .objet)).tableau)[i];
345: }
346: }
347: }
348: }
349: else if ((*s_objet_argument).type == VCX)
350: {
351: if ((s_objet_resultat = allocation(s_etat_processus, MCX)) == NULL)
352: {
353: (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
354: return;
355: }
356:
357: (*((struct_matrice *) (*s_objet_resultat).objet)).nombre_lignes =
358: (*((struct_vecteur *) (*s_objet_argument).objet)).taille;
359: (*((struct_matrice *) (*s_objet_resultat).objet)).nombre_colonnes =
360: (*((struct_vecteur *) (*s_objet_argument).objet)).taille;
361:
362: if (((*((struct_matrice *) (*s_objet_resultat).objet)).tableau =
363: malloc(((size_t) (*((struct_matrice *) (*s_objet_resultat)
364: .objet)).nombre_lignes) * sizeof(complex16 *))) == NULL)
365: {
366: (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
367: return;
368: }
369:
370: for(i = 0; i < (*((struct_matrice *) (*s_objet_resultat).objet))
371: .nombre_lignes; i++)
372: {
373: if ((((complex16 **) (*((struct_matrice *)
374: (*s_objet_resultat).objet)).tableau)[i] =
375: malloc(((size_t) (*((struct_matrice *)
376: (*s_objet_resultat).objet)).nombre_colonnes) *
377: sizeof(complex16))) == NULL)
378: {
379: (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
380: return;
381: }
382:
383: for(j = 0; j < (*((struct_matrice *) (*s_objet_resultat).objet))
384: .nombre_colonnes; j++)
385: {
386: if (i != j)
387: {
388: ((complex16 **) (*((struct_matrice *) (*s_objet_resultat)
389: .objet)).tableau)[i][j].partie_reelle = 0;
390: ((complex16 **) (*((struct_matrice *) (*s_objet_resultat)
391: .objet)).tableau)[i][j].partie_imaginaire = 0;
392: }
393: else
394: {
395: ((complex16 **) (*((struct_matrice *) (*s_objet_resultat)
396: .objet)).tableau)[i][j] = ((complex16 *)
397: (*((struct_vecteur *) (*s_objet_argument)
398: .objet)).tableau)[i];
399: }
400: }
401: }
402: }
403:
404: /*
405: * Conversion impossible impossible
406: */
407:
408: else
409: {
410: liberation(s_etat_processus, s_objet_argument);
411:
412: (*s_etat_processus).erreur_execution = d_ex_erreur_type_argument;
413: return;
414: }
415:
416: liberation(s_etat_processus, s_objet_argument);
417:
418: if (empilement(s_etat_processus, &((*s_etat_processus).l_base_pile),
419: s_objet_resultat) == d_erreur)
420: {
421: return;
422: }
423:
424: return;
425: }
426:
427:
428: /*
429: ================================================================================
430: Fonction 'forall'
431: ================================================================================
432: Entrées : structure processus
433: --------------------------------------------------------------------------------
434: Sorties :
435: --------------------------------------------------------------------------------
436: Effets de bord : néant
437: ================================================================================
438: */
439:
440: void
441: instruction_forall(struct_processus *s_etat_processus)
442: {
443: struct_objet *s_objet_1;
444: struct_objet *s_objet_2;
445:
446: struct_variable s_variable;
447:
448: unsigned char instruction_valide;
449: unsigned char *tampon;
450: unsigned char test_instruction;
451:
452: (*s_etat_processus).erreur_execution = d_ex;
453:
454: if ((*s_etat_processus).affichage_arguments == 'Y')
455: {
456: printf("\n FORALL ");
457:
458: if ((*s_etat_processus).langue == 'F')
459: {
460: printf("(boucle définie sur un objet)\n\n");
461: }
462: else
463: {
464: printf("(define a object-based loop)\n\n");
465: }
466:
467: if ((*s_etat_processus).langue == 'F')
468: {
469: printf(" Utilisation :\n\n");
470: }
471: else
472: {
473: printf(" Usage:\n\n");
474: }
475:
476: printf(" %s FORALL (variable)\n", d_LST);
477: printf(" (expression)\n");
478: printf(" [EXIT]/[CYCLE]\n");
479: printf(" ...\n");
480: printf(" NEXT\n\n");
481:
482: printf(" %s FORALL (variable)\n", d_TAB);
483: printf(" (expression)\n");
484: printf(" [EXIT]/[CYCLE]\n");
485: printf(" ...\n");
486: printf(" NEXT\n");
487: return;
488: }
489: else if ((*s_etat_processus).test_instruction == 'Y')
490: {
491: (*s_etat_processus).nombre_arguments = -1;
492: return;
493: }
494:
495: if ((*s_etat_processus).erreur_systeme != d_es)
496: {
497: return;
498: }
499:
500: if (test_cfsf(s_etat_processus, 31) == d_vrai)
501: {
502: if (empilement_pile_last(s_etat_processus, 1) == d_erreur)
503: {
504: return;
505: }
506: }
507:
508: if (depilement(s_etat_processus, &((*s_etat_processus).l_base_pile),
509: &s_objet_1) == d_erreur)
510: {
511: (*s_etat_processus).erreur_execution = d_ex_manque_argument;
512: return;
513: }
514:
515: if (((*s_objet_1).type != LST) && ((*s_objet_1).type != TBL))
516: {
517: liberation(s_etat_processus, s_objet_1);
518:
519: (*s_etat_processus).erreur_execution = d_ex_erreur_traitement_boucle;
520: return;
521: }
522:
523: empilement_pile_systeme(s_etat_processus);
524:
525: if ((*s_etat_processus).erreur_systeme != d_es)
526: {
527: return;
528: }
529:
530: if ((*s_etat_processus).mode_execution_programme == 'Y')
531: {
532: tampon = (*s_etat_processus).instruction_courante;
533: test_instruction = (*s_etat_processus).test_instruction;
534: instruction_valide = (*s_etat_processus).instruction_valide;
535: (*s_etat_processus).test_instruction = 'Y';
536:
537: if (recherche_instruction_suivante(s_etat_processus) == d_erreur)
538: {
539: return;
540: }
541:
542: analyse(s_etat_processus, NULL);
543:
544: if ((*s_etat_processus).instruction_valide == 'Y')
545: {
546: liberation(s_etat_processus, s_objet_1);
547: free((*s_etat_processus).instruction_courante);
548: (*s_etat_processus).instruction_courante = tampon;
549: (*s_etat_processus).instruction_valide = instruction_valide;
550: (*s_etat_processus).test_instruction = test_instruction;
551:
552: depilement_pile_systeme(s_etat_processus);
553:
554: (*s_etat_processus).erreur_execution = d_ex_nom_reserve;
555: return;
556: }
557:
558: (*s_etat_processus).type_en_cours = NON;
559: recherche_type(s_etat_processus);
560:
561: free((*s_etat_processus).instruction_courante);
562: (*s_etat_processus).instruction_courante = tampon;
563: (*s_etat_processus).instruction_valide = instruction_valide;
564: (*s_etat_processus).test_instruction = test_instruction;
565:
566: if ((*s_etat_processus).erreur_execution != d_ex)
567: {
568: depilement_pile_systeme(s_etat_processus);
569: liberation(s_etat_processus, s_objet_1);
570: return;
571: }
572:
573: if (depilement(s_etat_processus, &((*s_etat_processus).l_base_pile),
574: &s_objet_2) == d_erreur)
575: {
576: liberation(s_etat_processus, s_objet_1);
577:
578: depilement_pile_systeme(s_etat_processus);
579: (*s_etat_processus).erreur_execution = d_ex_manque_argument;
580: return;
581: }
582:
583: (*(*s_etat_processus).l_base_pile_systeme)
584: .origine_routine_evaluation = 'N';
585: }
586: else
587: {
588: if ((*s_etat_processus).expression_courante == NULL)
589: {
590: depilement_pile_systeme(s_etat_processus);
591:
592: (*s_etat_processus).erreur_execution = d_ex_manque_argument;
593: return;
594: }
595:
596: (*s_etat_processus).expression_courante = (*(*s_etat_processus)
597: .expression_courante).suivant;
598:
599: if ((s_objet_2 = copie_objet(s_etat_processus,
600: (*(*s_etat_processus).expression_courante)
601: .donnee, 'P')) == NULL)
602: {
603: (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
604: return;
605: }
606:
607: (*(*s_etat_processus).l_base_pile_systeme)
608: .origine_routine_evaluation = 'Y';
609: }
610:
611: if ((*s_objet_2).type != NOM)
612: {
613: liberation(s_etat_processus, s_objet_1);
614: depilement_pile_systeme(s_etat_processus);
615:
616: (*s_etat_processus).erreur_execution = d_ex_erreur_traitement_boucle;
617: return;
618: }
619: else if ((*((struct_nom *) (*s_objet_2).objet)).symbole == d_vrai)
620: {
621: liberation(s_etat_processus, s_objet_1);
622: depilement_pile_systeme(s_etat_processus);
623:
624: (*s_etat_processus).erreur_execution = d_ex_erreur_traitement_boucle;
625: return;
626: }
627:
628: (*s_etat_processus).niveau_courant++;
629: (*(*s_etat_processus).l_base_pile_systeme).type_cloture = 'A';
630:
631: if ((s_variable.nom = malloc((strlen(
632: (*((struct_nom *) (*s_objet_2).objet)).nom) + 1) *
633: sizeof(unsigned char))) == NULL)
634: {
635: (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
636: return;
637: }
638:
639: strcpy(s_variable.nom, (*((struct_nom *) (*s_objet_2).objet)).nom);
640: s_variable.niveau = (*s_etat_processus).niveau_courant;
641:
642: if ((*s_objet_1).type == LST)
643: {
644: if ((*s_objet_1).objet == NULL)
645: {
646: // La liste est vide. On doit sauter au NEXT correspondant.
647: liberation(s_etat_processus, s_objet_1);
648: liberation(s_etat_processus, s_objet_2);
649: free(s_variable.nom);
650:
651: if (((*(*s_etat_processus).l_base_pile_systeme)
652: .limite_indice_boucle = allocation(s_etat_processus, NON))
653: == NULL)
654: {
655: (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
656: return;
657: }
658:
659: instruction_cycle(s_etat_processus);
660: return;
661: }
662:
663: if ((s_variable.objet = copie_objet(s_etat_processus,
664: (*((struct_liste_chainee *) (*s_objet_1).objet)).donnee, 'P'))
665: == NULL)
666: {
667: (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
668: return;
669: }
670:
671: // Mémorisation de la position courante dans la liste
672:
673: if (((*(*s_etat_processus).l_base_pile_systeme).indice_boucle =
674: allocation(s_etat_processus, NON)) == NULL)
675: {
676: (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
677: return;
678: }
679:
680: (*(*(*s_etat_processus).l_base_pile_systeme).indice_boucle).objet =
681: (struct_objet *) (*s_objet_1).objet;
682: }
683: else
684: {
685: if ((*((struct_tableau *) (*s_objet_1).objet)).nombre_elements == 0)
686: {
687: // La table est vide, il convient de sauter au NEXT correspondant.
688: liberation(s_etat_processus, s_objet_1);
689: liberation(s_etat_processus, s_objet_2);
690: free(s_variable.nom);
691:
692: if (((*(*s_etat_processus).l_base_pile_systeme)
693: .limite_indice_boucle = allocation(s_etat_processus, NON))
694: == NULL)
695: {
696: (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
697: return;
698: }
699:
700: instruction_cycle(s_etat_processus);
701: return;
702: }
703:
704: if ((s_variable.objet = copie_objet(s_etat_processus,
705: (*((struct_tableau *) (*s_objet_1).objet)).elements[0], 'P'))
706: == NULL)
707: {
708: (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
709: return;
710: }
711:
712: // Création d'un objet de type entier contenant la position
713: // de l'élément courant dans la table.
714:
715: if (((*(*s_etat_processus).l_base_pile_systeme).indice_boucle =
716: allocation(s_etat_processus, INT)) == NULL)
717: {
718: (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
719: return;
720: }
721:
722: (*((integer8 *) (*(*(*s_etat_processus).l_base_pile_systeme)
723: .indice_boucle).objet)) = 0;
724: }
725:
726: if (creation_variable(s_etat_processus, &s_variable, 'V', 'P') == d_erreur)
727: {
728: return;
729: }
730:
731: liberation(s_etat_processus, s_objet_2);
732:
733: (*(*s_etat_processus).l_base_pile_systeme).limite_indice_boucle = s_objet_1;
734:
735: if ((*s_etat_processus).mode_execution_programme == 'Y')
736: {
737: (*(*s_etat_processus).l_base_pile_systeme).adresse_retour =
738: (*s_etat_processus).position_courante;
739: }
740: else
741: {
742: (*(*s_etat_processus).l_base_pile_systeme).pointeur_objet_retour =
743: (*s_etat_processus).expression_courante;
744: }
745:
746: if (((*(*s_etat_processus).l_base_pile_systeme).nom_variable =
747: malloc((strlen(s_variable.nom) + 1) *
748: sizeof(unsigned char))) == NULL)
749: {
750: (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
751: return;
752: }
753:
754: strcpy((*(*s_etat_processus).l_base_pile_systeme).nom_variable,
755: s_variable.nom);
756:
757: return;
758: }
759:
760: // vim: ts=4
CVSweb interface <joel.bertrand@systella.fr>