--- rpl/src/instructions_c4.c 2010/08/26 19:07:37 1.16 +++ rpl/src/instructions_c4.c 2023/08/07 17:42:52 1.81 @@ -1,7 +1,7 @@ /* ================================================================================ - RPL/2 (R) version 4.0.19 - Copyright (C) 1989-2010 Dr. BERTRAND Joël + RPL/2 (R) version 4.1.35 + Copyright (C) 1989-2023 Dr. BERTRAND Joël This file is part of RPL/2. @@ -39,16 +39,13 @@ void instruction_cov(struct_processus *s_etat_processus) { - integer8 nombre_colonnes; - logical1 erreur; - logical1 presence_variable; - - long i; struct_objet *s_objet_statistique; struct_objet *s_objet_resultat; + integer8 nombre_colonnes; + (*s_etat_processus).erreur_execution = d_ex; if ((*s_etat_processus).affichage_arguments == 'Y') @@ -86,7 +83,7 @@ instruction_cov(struct_processus *s_etat * Recherche d'une variable globale référencée par SIGMA */ - if (recherche_variable(s_etat_processus, ds_sdat) == d_faux) + if (recherche_variable_globale(s_etat_processus, ds_sdat) == d_faux) { /* * Aucune variable SIGMA @@ -98,64 +95,21 @@ instruction_cov(struct_processus *s_etat } else { - /* - * Il existe une variable locale SIGMA. Reste à vérifier l'existence - * d'une variable SIGMA globale... - */ - - i = (*s_etat_processus).position_variable_courante; - presence_variable = d_faux; - - while(i >= 0) + if (((*(*(*s_etat_processus).pointeur_variable_courante).objet) + .type != MIN) && ((*(*(*s_etat_processus) + .pointeur_variable_courante).objet).type != MRL)) { - if ((strcmp((*s_etat_processus).s_liste_variables[i].nom, - ds_sdat) == 0) && ((*s_etat_processus) - .s_liste_variables[i].niveau == 1)) - { - presence_variable = d_vrai; - break; - } - - i--; - } - - if (presence_variable == d_faux) - { - (*s_etat_processus).erreur_execution = d_ex_absence_observations; + (*s_etat_processus).erreur_execution = + d_ex_matrice_statistique_invalide; return; } - else - { - (*s_etat_processus).position_variable_courante = i; - - if ((*s_etat_processus).s_liste_variables - [(*s_etat_processus).position_variable_courante].objet - == NULL) - { - (*s_etat_processus).erreur_execution = d_ex_variable_partagee; - return; - } - - if (((*((*s_etat_processus).s_liste_variables - [(*s_etat_processus).position_variable_courante].objet)) - .type != MIN) && ((*((*s_etat_processus) - .s_liste_variables[(*s_etat_processus) - .position_variable_courante].objet)).type != MRL)) - { - (*s_etat_processus).erreur_execution = - d_ex_matrice_statistique_invalide; - return; - } - nombre_colonnes = (*((struct_matrice *) (*((*s_etat_processus) - .s_liste_variables[(*s_etat_processus) - .position_variable_courante].objet)).objet)) - .nombre_colonnes; - } + nombre_colonnes = (*((struct_matrice *) (*(*(*s_etat_processus) + .pointeur_variable_courante).objet).objet)).nombre_colonnes; } - s_objet_statistique = ((*s_etat_processus).s_liste_variables - [(*s_etat_processus).position_variable_courante]).objet; + s_objet_statistique = (*(*s_etat_processus).pointeur_variable_courante) + .objet; if (((*s_objet_statistique).type == MIN) || ((*s_objet_statistique).type == MRL)) @@ -221,14 +175,11 @@ void instruction_corr(struct_processus *s_etat_processus) { logical1 erreur; - logical1 presence_variable; - - long i; struct_objet *s_objet_statistique; struct_objet *s_objet_resultat; - unsigned long nombre_colonnes; + integer8 nombre_colonnes; (*s_etat_processus).erreur_execution = d_ex; @@ -267,7 +218,7 @@ instruction_corr(struct_processus *s_eta * Recherche d'une variable globale référencée par SIGMA */ - if (recherche_variable(s_etat_processus, ds_sdat) == d_faux) + if (recherche_variable_globale(s_etat_processus, ds_sdat) == d_faux) { /* * Aucune variable SIGMA @@ -279,64 +230,22 @@ instruction_corr(struct_processus *s_eta } else { - /* - * Il existe une variable locale SIGMA. Reste à vérifier l'existence - * d'une variable SIGMA globale... - */ - - i = (*s_etat_processus).position_variable_courante; - presence_variable = d_faux; - - while(i >= 0) - { - if ((strcmp((*s_etat_processus).s_liste_variables[i].nom, - ds_sdat) == 0) && ((*s_etat_processus) - .s_liste_variables[i].niveau == 1)) - { - presence_variable = d_vrai; - break; - } - - i--; - } - - if (presence_variable == d_faux) + if (((*(*(*s_etat_processus).pointeur_variable_courante).objet) + .type != MIN) && ((*(*(*s_etat_processus) + .pointeur_variable_courante).objet).type != MRL)) { - (*s_etat_processus).erreur_execution = d_ex_absence_observations; + (*s_etat_processus).erreur_execution = + d_ex_matrice_statistique_invalide; return; } - else - { - (*s_etat_processus).position_variable_courante = i; - - if ((*s_etat_processus).s_liste_variables - [(*s_etat_processus).position_variable_courante].objet - == NULL) - { - (*s_etat_processus).erreur_execution = d_ex_variable_partagee; - return; - } - if (((*((*s_etat_processus).s_liste_variables - [(*s_etat_processus).position_variable_courante].objet)) - .type != MIN) && ((*((*s_etat_processus) - .s_liste_variables[(*s_etat_processus) - .position_variable_courante].objet)).type != MRL)) - { - (*s_etat_processus).erreur_execution = - d_ex_matrice_statistique_invalide; - return; - } - - nombre_colonnes = (*((struct_matrice *) (*((*s_etat_processus) - .s_liste_variables[(*s_etat_processus) - .position_variable_courante].objet)).objet)) - .nombre_colonnes; - } + nombre_colonnes = (*((struct_matrice *) (*(*(*s_etat_processus) + .pointeur_variable_courante).objet).objet)) + .nombre_colonnes; } - s_objet_statistique = ((*s_etat_processus).s_liste_variables - [(*s_etat_processus).position_variable_courante]).objet; + s_objet_statistique = (*(*s_etat_processus).pointeur_variable_courante) + .objet; if (((*s_objet_statistique).type == MIN) || ((*s_objet_statistique).type == MRL)) @@ -463,7 +372,7 @@ instruction_convert(struct_processus *s_ logical1 last_valide; - long longueur_chaine; + size_t longueur_chaine; logical1 presence_resultat; @@ -562,22 +471,15 @@ instruction_convert(struct_processus *s_ (unsigned char *) (*s_objet_argument_2).objet, (unsigned char *) (*s_objet_argument_1).objet); - if (alsprintf(&executable_candidat, "%s/bin/rplconvert", - d_exec_path) < 0) + if (alsprintf(s_etat_processus, &executable_candidat, + "%s/bin/rplconvert", d_exec_path) < 0) { (*s_etat_processus).erreur_systeme = d_es_allocation_memoire; return; } - if (controle(s_etat_processus, executable_candidat, "md5", - rplconvert_md5) != d_vrai) - { - (*s_etat_processus).erreur_systeme = d_es_somme_controle; - return; - } - - if (controle(s_etat_processus, executable_candidat, "sha1", - rplconvert_sha1) != d_vrai) + if (controle_integrite(s_etat_processus, executable_candidat, + "rplconvert") != d_vrai) { (*s_etat_processus).erreur_systeme = d_es_somme_controle; return; @@ -604,22 +506,15 @@ instruction_convert(struct_processus *s_ (unsigned char *) (*s_objet_argument_2).objet, (unsigned char *) (*s_objet_argument_1).objet); - if (alsprintf(&executable_candidat, "%s/bin/rplconvert", - (*s_etat_processus).rpl_home) < 0) + if (alsprintf(s_etat_processus, &executable_candidat, + "%s/bin/rplconvert", (*s_etat_processus).rpl_home) < 0) { (*s_etat_processus).erreur_systeme = d_es_allocation_memoire; return; } - if (controle(s_etat_processus, executable_candidat, "md5", - rplconvert_md5) != d_vrai) - { - (*s_etat_processus).erreur_systeme = d_es_somme_controle; - return; - } - - if (controle(s_etat_processus, executable_candidat, "sha1", - rplconvert_sha1) != d_vrai) + if (controle_integrite(s_etat_processus, executable_candidat, + "rplconvert") != d_vrai) { (*s_etat_processus).erreur_systeme = d_es_somme_controle; return; @@ -654,6 +549,7 @@ instruction_convert(struct_processus *s_ (*s_etat_processus).instruction_courante; (*s_etat_processus).instruction_courante = ligne; + (*s_etat_processus).type_en_cours = NON; recherche_type(s_etat_processus); (*s_etat_processus).instruction_courante = @@ -1190,10 +1086,9 @@ instruction_cswp(struct_processus *s_eta struct_objet *s_objet_argument_2; struct_objet *s_objet_argument_3; - signed long colonne_1; - signed long colonne_2; - - unsigned long i; + integer8 colonne_1; + integer8 colonne_2; + integer8 i; (*s_etat_processus).erreur_execution = d_ex; @@ -1265,11 +1160,11 @@ instruction_cswp(struct_processus *s_eta if ((*s_objet_argument_3).type == MIN) { - if ((colonne_1 < 0) || (colonne_1 > ((signed long) + if ((colonne_1 < 0) || (colonne_1 > (*((struct_matrice *) (*s_objet_argument_3).objet)) - .nombre_colonnes) - 1) || (colonne_2 < 0) || (colonne_2 > - ((signed long) (*((struct_matrice *) - (*s_objet_argument_3).objet)).nombre_colonnes) - 1)) + .nombre_colonnes - 1) || (colonne_2 < 0) || (colonne_2 > + (*((struct_matrice *) + (*s_objet_argument_3).objet)).nombre_colonnes - 1)) { liberation(s_etat_processus, s_objet_argument_1); liberation(s_etat_processus, s_objet_argument_2); @@ -1302,11 +1197,11 @@ instruction_cswp(struct_processus *s_eta } else if ((*s_objet_argument_3).type == MRL) { - if ((colonne_1 < 0) || (colonne_1 > ((signed long) + if ((colonne_1 < 0) || (colonne_1 > (*((struct_matrice *) (*s_objet_argument_3).objet)) - .nombre_colonnes) - 1) || (colonne_2 < 0) || (colonne_2 > - ((signed long) (*((struct_matrice *) - (*s_objet_argument_3).objet)).nombre_colonnes) - 1)) + .nombre_colonnes - 1) || (colonne_2 < 0) || (colonne_2 > + (*((struct_matrice *) + (*s_objet_argument_3).objet)).nombre_colonnes - 1)) { liberation(s_etat_processus, s_objet_argument_1); liberation(s_etat_processus, s_objet_argument_2); @@ -1339,11 +1234,11 @@ instruction_cswp(struct_processus *s_eta } else if ((*s_objet_argument_3).type == MCX) { - if ((colonne_1 < 0) || (colonne_1 > ((signed long) + if ((colonne_1 < 0) || (colonne_1 > (*((struct_matrice *) (*s_objet_argument_3).objet)) - .nombre_colonnes) - 1) || (colonne_2 < 0) || (colonne_2 > - ((signed long) (*((struct_matrice *) - (*s_objet_argument_3).objet)).nombre_colonnes) - 1)) + .nombre_colonnes - 1) || (colonne_2 < 0) || (colonne_2 > + (*((struct_matrice *) + (*s_objet_argument_3).objet)).nombre_colonnes - 1)) { liberation(s_etat_processus, s_objet_argument_1); liberation(s_etat_processus, s_objet_argument_2);