u4.33.03 Procédure CALC_TABLE#
Syntaxe#
Détail de la syntaxe
/ table
/ table_container
/ table_fonction = CALC_TABLE(
◇ reuse = <objet de TABLE>,
◆ TABLE = table,
◆ ACTION = _F(
◆ OPERATION = / "AJOUT_COLONNE",
/ "AJOUT_LIGNE",
/ "CALCUL",
/ "COMB",
/ "EXTR",
/ "FILTRE",
/ "OPER",
/ "RENOMME",
/ "STATISTIQUES",
/ "SUPPRIME",
/ "TRI",
/ "UNIQUE",
# Si: equal_to("OPERATION", 'FILTRE')
◆ NOM_PARA = text,
◇ CRIT_COMP = / "EQ" (par défaut),
/ "GE",
/ "GT",
/ "LE",
/ "LT",
/ "MAXI",
/ "MAXI_ABS",
/ "MINI",
/ "MINI_ABS",
/ "NE",
/ "NON_VIDE",
/ "REGEXP",
/ "VIDE",
# Si: (is_in("CRIT_COMP", ('EQ','NE','GT','LT','GE','LE')))
◆ / VALE = float,
/ VALE_I = int,
/ VALE_K = text,
/ VALE_C = complex,
# Si: equal_to("CRIT_COMP", 'REGEXP')
◆ VALE_K = text,
# Si: is_in("CRIT_COMP", ('EQ','NE'))
◇ CRITERE = / "ABSOLU",
/ "RELATIF" (par défaut),
◇ PRECISION = float (défaut: 0.001),
# Si: equal_to("OPERATION", 'EXTR')
◆ NOM_PARA = text,
# Si: equal_to("OPERATION", 'SUPPRIME')
◆ NOM_PARA = text,
# Si: equal_to("OPERATION", 'UNIQUE')
◆ NOM_PARA = text,
◇ FORMAT_R = text,
# Si: equal_to("OPERATION", 'RENOMME')
◆ NOM_PARA = text,
# Si: equal_to("OPERATION", 'TRI')
◆ NOM_PARA = text,
◇ ORDRE = / "CROISSANT" (par défaut),
/ "DECROISSANT",
# Si: equal_to("OPERATION", 'COMB')
◆ TABLE = table,
◇ NOM_PARA = text,
◇ RESTREINT = / "NON" (par défaut),
/ "OUI",
◇ FORMAT_R = text,
# Si: equal_to("OPERATION", 'AJOUT_LIGNE')
◆ NOM_PARA = text,
◆ VALE = not_checked,
# Si: equal_to("OPERATION", 'AJOUT_COLONNE')
◆ NOM_PARA = text,
◆ / VALE = not_checked,
/ VALE_COLONNE = not_checked,
# Si: equal_to("OPERATION", 'OPER')
◆ FORMULE = formule,
◆ NOM_PARA = text,
◇ NOM_COLONNE = text,
# Si: equal_to("OPERATION", 'CALCUL')
◆ NOM_PARA = text,
◆ TYPE_CALCUL = / "MAXI",
/ "MAXI_ABS",
/ "MINI",
/ "MINI_ABS",
/ "MOY",
/ "SOMM",
/ "SOMM_ABS",
),
◇ TITRE = text,
◇ INFO = / 1 (par défaut),
/ 2,
)
◆ : obligatoire
◇ : optionnel
⟐ : présent par défaut
& : ensemble
/ : un seul parmi
| : plusieurs choix possibles
Opérandes#
Opérande TABLE#
♦ TABLE = matable
Nom de la table initiale sur laquelle on va effectuer des manipulations.
Opérande ACTION#
♦ ACTION = ( _F(OPERATION='xxx', ...), _F(OPERATION='yyy',...), ...)
Les « actions » sont réalisées l’une après l’autre. L’opération “yyy” prend la table dans l’état où l’opération “xxx” l’a laissé.
Il est nettement plus performant de répéter le mot-clé facteur ACTION que de faire autant d’appels successifs à la commande CALC_TABLE.
OPERATION = “COMB” : concaténer/combiner deux tables#
L'opération COMBpermet de concaténer, de combiner deux tables entre elles, avec couture sur une liste de paramètres communs.
Opérande TABLE#
♦ TABLE = table
Nom de la table dont les valeurs doivent venir surcharger et/ou enrichir la table initiale.
Opérande NOM_PARA#
◊ NOM_PARA = l_para
Nom des paramètres dont les valeurs doivent être identiques dans les deux tables.
Opérande FORMAT_R#
Il s’agit d’un format qui sera utilisé avant de comparer deux nombres réels afin de déterminer s’ils sont identiques ou non. Notons que dans la table, on récupère la valeur non arrondie (de la deuxième table).
Opérande RESTREINT#
◊ RESTREINT = “OUI” ou “NON”
Exemple de la combinaison de deux tables:
tab_resu=CALC_TABLE(TABLE=tab1,
ACTION=_F(OPERATION=”COMB”,
TABLE=tab2,
NOM_PARA=(“ABSC_CURV”,”NOEUD”),
RESTREINT=”NON” ) )
Quand ABSC_CURV et NŒUDsont identiques entre tab1et tab2, on insère les valeurs de tab2sur la ligne de tab1 (pour les autres paramètres communs aux 2 tables, c’est donc la valeur de tab2qui écrase celle de tab1).
Si ABSC_CURV et/ou NŒUDdiffèrent entre tab1et tab2, on ajoute la ligne de tab2à la fin de tab1. NOM_PARAagit comme une clé primaire : si on ne trouve pas plus d’une fois le couple ( ABSC_CURV, NOEUD), on ajoute la ligne.
La même opération avec RESTREINT=”OUI” produit les mêmes lignes quand ABSC_CURV et NŒUD sont identiques. En revanche, aucune ligne n’est ajoutée quand les paramètres diffèrent.
OPERATION = “OPER” : Appliquer une formule#
Permet d'appliquer une formule dont les variables sont les paramètres de la table et d'insérer le résultat dans une nouvelle colonne.
Opérande FORMULE#
Nom de la formule à appliquer
Opérande NOM_PARA#
Nom de la nouvelle colonne.
Opérande NOM_COLONNE#
Ce mot clé permet d’utiliser une formule dont les paramètres ne sont pas des paramètres de la table.
Par exemple, on a une formule qui dépend de INST. Si l’on veut évaluer cette formule en utilisant la colonne INST_FIN de la table, il suffit de préciser NOM_COLONNE=”INST_FIN”.
OPERATION = “RENOMME” : Renommer des paramètres d’une table#
L’opération RENOMME permet de renommer un ou plusieurs paramètres d’une table.
Opérande NOM_PARA#
♦ NOM_PARA = l_para
Nom des paramètres : couple de valeurs (ancien nom du paramètre, nouveau nom du paramètre)
OPERATION = “FILTRE” : Filtrer les lignes selon certains critères#
Ce mot-clé facteur permet de filtrer les lignes de la table. Pour l’utilisation de ce mot-clé voir la commande IMPR_TABLE [U4.91.03].
OPERATION = “EXTR” : Extraire certaines colonnes d’une table#
L'opération EXTRpermet d'extraire certaines colonnes d'une table.
Opérande NOM_PARA#
♦ NOM_PARA = l_para
Nom des paramètres que l’on veut extraire.
OPERATION = “TRI” : Ordonner les lignes#
L'opération TRI permet d'ordonner les lignes selon les valeurs des paramètres.
Opérande NOM_PARA#
♦ NOM_PARA = l_para
Noms des paramètres sur lesquelles porte le tri.
Opérande ORDRE#
♦ ORDRE = / “CROISSANT” / “DECROISSANT”
Ce mot clé sert à préciser si on doit utiliser un ordre croissant ou décroissant. Par défaut, on trie par ordre croissant.
Les relations d’ordre utilisées sont :
l’ordre naturel pour les entiers et les réels,
l’ordre alphabétique pour les textes et les noms de concepts.
Remarques :
On ne peut pas se servir d’un paramètre complexe pour classer les lignes d’une table.
Pour les paramètres de type NŒUD(ou MAILLE), l’ordre est alphabétique car ces paramètres contiennent le nom des nœuds (ou des mailles).
Si l’on précise :
TRI=_F (NOM_PARA= ('NOEUD','INST'), ORDRE= 'CROISSANT'),
On triera les lignes de la table dans l’ordre alphabétique des nœuds. S’il existe plusieurs lignes correspondant à un nœud donné, le second critère de tri (INST) sera utilisé pour classer ces lignes.
OPERATION = “AJOUT_LIGNE” : ajouter une ligne#
L'opération AJOUT_LIGNE permet d'ajouter une ligne à une table existante.
Opérande NOM_PARA#
♦ NOM_PARA = lpara
Noms des paramètres (noms des colonnes de la table) de la ligne ajoutée. On peut très bien ne définir des valeurs que pour certaines colonnes de la table.
Si un nom de paramètre n’existe pas dans la table, il est ajouté. Son type est déterminé à partir de la valeur fournie.
Opérande VALE#
♦ VALE = lvale
Liste des valeurs pour chaque paramètre de NOM_PARA. Le type des valeurs doit être compatible avec les types des colonnes de la table.
VALE peut contenir des valeurs hétérogènes parmi entier, réel, chaine de caractères. Le type doit être conforme au type du paramètre de la table.
La première valeur correspond au premier paramètre donné dans NOM_PARA, la deuxième valeur au deuxième paramètre,etc.
Les listes NOM_PARA et VALE ont donc le même cardinal.
OPERATION = “AJOUT_COLONNE” : ajouter une colonne#
L'opération AJOUT_COLONNE permet d'ajouter une ou plusieurs colonnes constantes (valeur identique pour toutes les lignes, en utilisant le mot-clé VALE), ou bien, une seule colonne avec des valeurs distinctes (en utilisant le mot-clé VALE_COLONNE).
Opérande NOM_PARA#
♦ NOM_PARA = lpara
Noms des paramètres, noms des colonnes ajoutées à la table. Aucun de ces paramètres ne doit être déjà présent dans la table.
On ne doit fournir qu’un paramètre si on utilise VALE_COLONNE.
Opérande VALE#
♦ VALE = lvale
Liste des valeurs de chaque colonne.
VALE peut contenir des valeurs hétérogènes parmi entier, réel, chaine de caractères. Le type associé au paramètre est déterminé à partir de cette valeur.
La première valeur correspond au premier paramètre donné dans NOM_PARA, la deuxième valeur au deuxième paramètre, etc.
Les listes NOM_PARA et VALE ont donc le même cardinal.
Opérande VALE_COLONNE#
♦ VALE_COLONNE = lval_col
Liste des valeurs des lignes de la colonne ajoutée.
Le type des valeurs fournies peut être entier, réel, chaîne de caractères. Toutes les valeurs doivent être de même type.
Les valeurs sont ajoutées sur les lignes telles qu’elles sont ordonnées au moment de l’ajout. Il peut y avoir plus ou moins de valeurs ajoutées que de lignes dans la table. Soit la colonne sera plus longue que la table initiale, soit elle contiendra des valeurs vides.
OPERATION = “SUPPRIME” : supprimer des colonnes#
L'opération SUPPRIME permet de supprimer une ou plusieurs colonnes d'une table existante.
Opérande NOM_PARA#
♦ NOM_PARA = lpara
Noms des paramètres, noms des colonnes à supprimer dans la table.
OPERATION = “UNIQUE” : suppression des doublons#
L'opération UNIQUE permet de supprimer les lignes en doublon dans une table.
Opérande NOM_PARA#
♦ NOM_PARA = lpara
Noms des colonnes dans lesquelles on cherche les doublons. Deux lignes sont dites en doublon si tous ces paramètres sont identiques (au format des réels près le cas échéant, voir FORMAT_R).
OPERATION = “STATISTIQUES”#
L'opération STATISTIQUES permet d'ajouter des informations sur la table elle-même.
Les colonnes ajoutées sont nommées STAT_NOM et STAT_VALE. Elles contiennent respectivement le nom du paramètre et sa valeur.
Les statistiques élémentaires ajoutées sont: le nombre de lignes (nommé NB_LIGNES), le nombre de colonnes (NB_COLONNES) et le nombre de cellules vides (NB_VIDE).
Opérande TITRE#
◊ TITRE = tit
Titre de la table produite. Quand celui-ci n’est pas fourni, le titre de la table en entrée est, selon les opérations, complété.
Opérande INFO#
◊ INFO = inf
Imprime dans le fichier « message » des informations complémentaires si inf=2. Rien ne se passe si inf=1.
OPERATION = “CALCUL”#
L'opération CALCUL permet des calculs simples pour des colonnes avec des variables réelles ou entières dans une table.
En présence de reuse, une colonne avec le nom TYPE_CALCUL est ajoutée dans la table. Pour chaque TYPE_CALCUL, une ligne est ajoutée avec des valeurs calculées aux colonnes demandées.
En absence dereuse, une nouvelle table est créée uniquement avec les colonnes à calculer ainsi que une colonne de TYPE_CALCUL. Chaque ligne correspond à un type de calcul.
Opérande NOM_PARA#
♦ NOM_PARA = lpara
Noms des paramètres, noms des colonnes à appliquer les calculs dans la table.
Opérande TYPE_CALCUL#
♦ TYPE_CALCUL = / 'MAXI',
/ “MINI”, / “SOMM”, / “MOY”, / “MAXI_ABS”, / “MINI_ABS”, / “SOMM_ABS”,
Type de calcul à appliquer aux colonnes. C’est possible de choisir plusieurs types de calcul.
Choix des types de calcul:”MAXI’pour le maximum dans la colonne, “MINI’pour leminimum dans la colonne, “SOMM’pour la sommedans la colonne, “MOY’pour la moyenne dans la colonne, “MAXI_ABS’pour lemaximum des variables absoluesdans la colonne, “MINI_ABS’pour leminimum des variables absoluesdans la colonne, “SOMM_ABS’pour la somme des variables absoluesdans la colonne.
Exemples#
Table “TB1” |
|||
N |
Y |
Z |
NOEUD |
0 |
2.0 |
4.5 |
NO1 |
1 |
4.0 |
17.5 |
N03 |
2 |
17.5 |
9.0 |
N06 |
Table “TB2” |
|||
N |
X |
Z |
NOEUD |
1 |
2.0 |
2.5 |
NO1 |
3 |
4.0 |
5.5 |
N031 |
4 |
17.5 |
20.5 |
N062 |
6 |
5.0 |
8.0 |
N013 |
#--- COMBINAISON
TB3=CALC_TABLE(TABLE=TB1,
ACTION =_F(OPERATION='COMB',
TABLE = TB2, NOM_PARA='NOEUD'))
Le contenu de la table TB3 est :
N Y Z NOEUD X
1 2.00000E+00 2.50000E+00 N01 2.00000E+00
1 4.00000E+00 1.75000E+01 N03 -
2 1.75000E+01 9.00000E+00 N06 -
3 - 5.50000E+00 N031 4.00000E+00
4 - 2.05000E+01 N062 1.75000E+01
6 - 8.00000E+00 N013 5.00000E+00
#--- Formule
DNOR=FORMULE(NOM_PARA = ('X','Z'),
VALE = 'sqrt(X*X+Z*Z)')
TB3=CALC_TABLE(TABLE = TB3,
reuse = TB3,
ACTION =_F(OPERATION='OPER',
FORMULE=dnor , NOM_PARA='NOR_COOR'))
Le contenu de la table TB3est :
N Y Z NOEUD X NOR_COOR
1 2.00000E+00 2.50000E+00 N01 2.00000E+00 3.20156E+00
1 4.00000E+00 1.75000E+01 N03 - -
2 1.75000E+01 9.00000E+00 N06 - -
3 - 5.50000E+00 N031 4.00000E+00 6.80074E+00
4 - 2.05000E+01 N062 1.75000E+01 2.69537E+01
6 - 8.00000E+00 N013 5.00000E+00 9.43398E+00
#--- RENOMMER
TB3=CALC_TABLE(TABLE = TB3,
reuse = TB3,
ACTION=_F(OPERATION='RENOMME',
NOM_PARA=('NOR_COOR','NORM_XZ')))
Le contenu de la table TB3est :
N Y Z NOEUD X NORM_XZ
1 2.00000E+00 2.50000E+00 N01 2.00000E+00 3.20156E+00
1 4.00000E+00 1.75000E+01 N03 - -
2 1.75000E+01 9.00000E+00 N06 - -
3 - 5.50000E+00 N031 4.00000E+00 6.80074E+00
4 - 2.05000E+01 N062 1.75000E+01 2.69537E+01
6 - 8.00000E+00 N013 5.00000E+00 9.43398E+00
#--- FILTRE
TB4=CALC_TABLE(TABLE = TB3,
ACTION =_F(OPERATION='FILTRE',
NOM_PARA='NORM_XZ',CRIT_COMP='LE',VALE=30.))
Le contenu de la table TB4est :
N Y Z NOEUD X NORM_XZ
1 2.00000E+00 2.50000E+00 N01 2.00000E+00 3.20156E+00
3 - 5.50000E+00 N031 4.00000E+00 6.80074E+00
4 - 2.05000E+01 N062 1.75000E+01 2.69537E+01
6 - 8.00000E+00 N013 5.00000E+00 9.43398E+00
#--- EXTRACTION
TB3=CALC_TABLE(TABLE = TB3,reuse=TB3,
ACTION =_F(OPERATION='EXTR',
NOM_PARA=('NOEUD','X','Z','NORM_XZ')))
Le contenu de la table TB3est :
NOEUD X Z NORM_XZ N01 2.00000E+00 2.50000E+00 3.20156E+00 N03 - 1.75000E+01 - N06 - 9.00000E+00 - N031 4.00000E+00 5.50000E+00 6.80074E+00 N062 1.75000E+01 2.05000E+01 2.69537E+01 N013 5.00000E+00 8.00000E+00 9.43398E+00
#— TRI
TB3=CALC_TABLE(TABLE = TB3,reuse=TB3,
ACTION = _F(OPERATION=”TRI”,
NOM_PARA=”NORM_XZ”,ORDRE=”DECROISSANT”))
Le contenu de la table TB3est :
NOEUD X Z NORM_XZ N062 1.75000E+01 2.05000E+01 2.69537E+01 N013 5.00000E+00 8.00000E+00 9.43398E+00 N031 4.00000E+00 5.50000E+00 6.80074E+00 N01 2.00000E+00 2.50000E+00 3.20156E+00 N06 - 9.00000E+00 - N03 - 1.75000E+01 -
#— CALCUL
TB1=CALC_TABLE(TABLE = TB1,reuse=TB1,
ACTION =_F(OPERATION=”CALCUL”,
NOM_PARA=(“N”,”Y”),
TYPE_CALCUL=(“maxi”,”somm”),
)
)
Le contenu de la table TB1est :
N YZ NOEUD TYPE_CALCUL 0 2.0 4.5 N01- 14.017.5N03- 217.59.0 N06- 217.5– maxi 323.5 - - somm
TB1_new=CALC_TABLE(TABLE = TB1
ACTION =_F(OPERATION=”CALCUL”,
NOM_PARA=(“N”,”Y”),
TYPE_CALCUL=(“maxi”,”somm”),
)
)
Le contenu de la table TB1_NEWest :
N YTYPE_CALCUL 217.5maxi 323.5 somm