--- rpl/src/instructions_s7.c 2010/03/09 10:18:49 1.5 +++ rpl/src/instructions_s7.c 2021/03/13 12:50:47 1.68 @@ -1,7 +1,7 @@ /* ================================================================================ - RPL/2 (R) version 4.0.13 - Copyright (C) 1989-2010 Dr. BERTRAND Joël + RPL/2 (R) version 4.1.33 + Copyright (C) 1989-2021 Dr. BERTRAND Joël This file is part of RPL/2. @@ -20,7 +20,7 @@ */ -#include "rpl.conv.h" +#include "rpl-conv.h" /* @@ -185,8 +185,9 @@ instruction_slicescale(struct_processus { if ((*(*l_element_courant).donnee).type == CHN) { - if ((tampon = conversion_majuscule((unsigned char *) - (*(*l_element_courant).donnee).objet)) == NULL) + if ((tampon = conversion_majuscule(s_etat_processus, + (unsigned char *) (*(*l_element_courant).donnee).objet)) + == NULL) { (*s_etat_processus).erreur_systeme = d_es_allocation_memoire; @@ -458,16 +459,12 @@ instruction_slicescale(struct_processus void instruction_sx(struct_processus *s_etat_processus) { - logical1 presence_variable; - - long i; - struct_objet *s_objet_statistique; struct_objet *s_objet_resultat; struct_vecteur *resultat; - unsigned long nombre_colonnes; + integer8 nombre_colonnes; (*s_etat_processus).erreur_execution = d_ex; @@ -506,70 +503,35 @@ instruction_sx(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 */ (*s_etat_processus).erreur_systeme = d_es; - (*s_etat_processus).erreur_execution = d_ex_absence_observations; - return; - } - 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).erreur_execution == d_ex) { - 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--; + (*s_etat_processus).erreur_execution = d_ex_absence_observations; } - if (presence_variable == d_faux) + return; + } + else + { + 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[i].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; } if (((*s_etat_processus).colonne_statistique_1 < 1) || @@ -580,8 +542,8 @@ instruction_sx(struct_processus *s_etat_ return; } - 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)) @@ -592,7 +554,7 @@ instruction_sx(struct_processus *s_etat_ return; } - if ((resultat = sommation_colonne_statistique( + if ((resultat = sommation_colonne_statistique(s_etat_processus, (struct_matrice *) (*s_objet_statistique).objet, (*s_etat_processus).colonne_statistique_1)) == NULL) { @@ -662,16 +624,12 @@ instruction_sx(struct_processus *s_etat_ void instruction_sy(struct_processus *s_etat_processus) { - logical1 presence_variable; - - long i; - struct_objet *s_objet_statistique; struct_objet *s_objet_resultat; struct_vecteur *resultat; - unsigned long nombre_colonnes; + integer8 nombre_colonnes; (*s_etat_processus).erreur_execution = d_ex; @@ -710,70 +668,35 @@ instruction_sy(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 */ (*s_etat_processus).erreur_systeme = d_es; - (*s_etat_processus).erreur_execution = d_ex_absence_observations; - return; - } - 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).erreur_execution == d_ex) { - 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--; + (*s_etat_processus).erreur_execution = d_ex_absence_observations; } - if (presence_variable == d_faux) + return; + } + else + { + 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[i].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; } if (((*s_etat_processus).colonne_statistique_2 < 1) || @@ -784,8 +707,8 @@ instruction_sy(struct_processus *s_etat_ return; } - 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)) @@ -796,7 +719,7 @@ instruction_sy(struct_processus *s_etat_ return; } - if ((resultat = sommation_colonne_statistique( + if ((resultat = sommation_colonne_statistique(s_etat_processus, (struct_matrice *) (*s_objet_statistique).objet, (*s_etat_processus).colonne_statistique_2)) == NULL) { @@ -866,16 +789,12 @@ instruction_sy(struct_processus *s_etat_ void instruction_sxy(struct_processus *s_etat_processus) { - logical1 presence_variable; - - long i; - struct_objet *s_objet_statistique; struct_objet *s_objet_resultat; struct_vecteur *resultat; - unsigned long nombre_colonnes; + integer8 nombre_colonnes; (*s_etat_processus).erreur_execution = d_ex; @@ -914,70 +833,35 @@ instruction_sxy(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 */ (*s_etat_processus).erreur_systeme = d_es; - (*s_etat_processus).erreur_execution = d_ex_absence_observations; - return; - } - 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).erreur_execution == d_ex) { - 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--; + (*s_etat_processus).erreur_execution = d_ex_absence_observations; } - if (presence_variable == d_faux) + return; + } + else + { + 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[i].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; } if (((*s_etat_processus).colonne_statistique_1 < 1) || @@ -990,8 +874,8 @@ instruction_sxy(struct_processus *s_etat return; } - 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)) @@ -1003,6 +887,7 @@ instruction_sxy(struct_processus *s_etat } if ((resultat = sommation_produits_colonnes_statistiques( + s_etat_processus, (struct_matrice *) (*s_objet_statistique).objet, (*s_etat_processus).colonne_statistique_1, (*s_etat_processus).colonne_statistique_2)) == NULL) @@ -1073,16 +958,12 @@ instruction_sxy(struct_processus *s_etat void instruction_sx2(struct_processus *s_etat_processus) { - logical1 presence_variable; - - long i; - struct_objet *s_objet_statistique; struct_objet *s_objet_resultat; struct_vecteur *resultat; - unsigned long nombre_colonnes; + integer8 nombre_colonnes; (*s_etat_processus).erreur_execution = d_ex; @@ -1121,70 +1002,35 @@ instruction_sx2(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 */ (*s_etat_processus).erreur_systeme = d_es; - (*s_etat_processus).erreur_execution = d_ex_absence_observations; - return; - } - 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).erreur_execution == d_ex) { - 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--; + (*s_etat_processus).erreur_execution = d_ex_absence_observations; } - if (presence_variable == d_faux) + return; + } + else + { + 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[i].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; } if (((*s_etat_processus).colonne_statistique_1 < 1) || @@ -1195,8 +1041,8 @@ instruction_sx2(struct_processus *s_etat return; } - 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)) @@ -1208,6 +1054,7 @@ instruction_sx2(struct_processus *s_etat } if ((resultat = sommation_produits_colonnes_statistiques( + s_etat_processus, (struct_matrice *) (*s_objet_statistique).objet, (*s_etat_processus).colonne_statistique_1, (*s_etat_processus).colonne_statistique_1)) == NULL) @@ -1278,16 +1125,12 @@ instruction_sx2(struct_processus *s_etat void instruction_sy2(struct_processus *s_etat_processus) { - logical1 presence_variable; - - long i; - struct_objet *s_objet_statistique; struct_objet *s_objet_resultat; struct_vecteur *resultat; - unsigned long nombre_colonnes; + integer8 nombre_colonnes; (*s_etat_processus).erreur_execution = d_ex; @@ -1326,70 +1169,35 @@ instruction_sy2(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 */ (*s_etat_processus).erreur_systeme = d_es; - (*s_etat_processus).erreur_execution = d_ex_absence_observations; - return; - } - 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).erreur_execution == d_ex) { - 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--; + (*s_etat_processus).erreur_execution = d_ex_absence_observations; } - if (presence_variable == d_faux) + return; + } + else + { + 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[i].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; } if (((*s_etat_processus).colonne_statistique_2 < 1) || @@ -1400,8 +1208,8 @@ instruction_sy2(struct_processus *s_etat return; } - 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)) @@ -1413,6 +1221,7 @@ instruction_sy2(struct_processus *s_etat } if ((resultat = sommation_produits_colonnes_statistiques( + s_etat_processus, (struct_matrice *) (*s_objet_statistique).objet, (*s_etat_processus).colonne_statistique_2, (*s_etat_processus).colonne_statistique_2)) == NULL)