u7.02.03 Opérateur LIRE_TABLE#
Syntaxe#
Détail de la syntaxe
table = LIRE_TABLE(
◆ UNITE = unit,
◇ FORMAT = / "ASTER",
/ "LIBRE",
/ "TABLEAU" (par défaut),
◇ NUME_TABLE = int (défaut: 1),
◇ SEPARATEUR = text (défaut: " "),
◇ RENOMME_PARA = "UNIQUE" (ou non renseigné),
◇ TITRE = text,
◇ INFO = / 1,
/ 2,
)
◆ : obligatoire
◇ : optionnel
⟐ : présent par défaut
& : ensemble
/ : un seul parmi
| : plusieurs choix possibles
Opérandes#
Opérande UNITE#
Numéro d’unité logique du fichier contenant la ou les tables à lire.
Opérande FORMAT#
Nom du format sous lequel a été écrit la table du fichier.
Remarques#
Lors de la lecture des valeurs, on essaie d’interpréter la valeur comme entière, réelle, réelle avec la virgule au lieu du point comme séparateur décimal, à défaut comme une chaine de caractères.
La valeur de cellule vide n’est pas la même au format TABLEAU, ASTER et LIBRE.
Format TABLEAU#
Il s’agit du format par défaut.
Au format TABLEAU, la commande estime le nombre de colonnes présentes dans le fichier. Pour cela, les lignes sont découpées en utilisant le SEPARATEUR. Le nombre de colonnes de la table est alors censé être le maximum trouvé sur l’ensemble des lignes.
Les lignes commençant par le caractère # sont considérées comme des commentaires et ajoutées au titre de la table.
Parmi les valeurs on peut trouver (-), qui signifie qu’il n’y a pas de valeur pour ce paramètre.
Il n’y a pas de délimitations pour séparer plusieurs tables dans un fichier. On considère qu’on a atteint la fin d’une table quand le nombre de colonnes diminue.
Le format TABLEAU doit permettre de relire les tables imprimées avec IMPR_TABLE au même format. Toutefois, contrairement au format ASTER, le type est automatiquement déterminé en fonction des valeurs lues. Le type de chaînes de caractères peut ainsi être différent.
Format ASTER#
Le format ASTER requiert certaines caractéristiques illustrées dans le tableau suivant:
#DEBUT_TABLE |
|||||||
#TITRE ligne 1 du texte du titre |
|||||||
#TITRE ligne 2 et suivantes |
|||||||
INTITULE |
CHEMIN |
SEGMENT |
RESU |
NOM_CHAM |
INST |
SIXX |
|
K8 |
K16 |
I |
K8 |
K16 |
R |
R |
|
GLOBAL |
CHEM1 |
1 |
SIG |
SIGM_ELNO |
0.00000E+00 |
–1.48981E+07 |
|
GLOBAL |
CHEM1 |
SIG |
1.00000E+00 |
–2.48981E+07 |
|||
GLOBAL |
CHEM1 |
2 |
SIG |
SIGM_ELNO |
1.00000E+00 |
–3.48981E+07 |
|
… |
|||||||
#FIN_TABLE |
|||||||
Toute table au format ASTER débute par le mot clé #DEBUT_TABLE et se termine par #FIN_TABLE . Ce sont les délimitations qui permettent de savoir où commence la lecture et où elle s’arrête.
#DEBUT_TABLE est ensuite suivi par des lignes de titres qui sont obligatoirement précédées du mot clé #TITRE .
Suivent ensuite une ligne contenant tous les noms des paramètres, puis une ligne contenant tous les types de ces paramètres. Ces types appartiennent obligatoirement à la liste suivante: K8, K16, K24, K32, K80, I, R.
Les lignes suivantes donnent la valeur de tous les paramètres.
Parmi les valeurs on peut trouver (-), qui signifie qu’il n’y a pas de valeur pour ce paramètre.
Le format ASTER doit permettre de relire les tables imprimées avec IMPR_TABLE au même format.
Format LIBRE#
Le format LIBRE est très proche du format TABLEAU sauf que le caractère # n’a pas de signification particulière et que l’absence de valeur pour un paramètre correspond à une chaîne vide.
Opérande NUME_TABLE#
Il est possible de lire une table parmi plusieurs dans un fichier. On indique le numéro de la ième table à lire. Par défaut, la première table est lue.
Opérande SEPARATEUR#
Plusieurs séparateurs consécutifs ne comptent que pour un. Le séparateur par défaut est un espace.
Pour indiquer que les champs sont séparés par une tabulation, on indiquera: SEPARATEUR=”t”.
Opérande RENOMME_PARA#
Dans une table, tous les paramètres doivent être distincts. Si ce n’est pas le cas dans le fichier à lire, la lecture échoue car la table ne peut être produite.
En précisant, RENOMME_PARA = “UNIQUE” (seul choix possible si le mot-clé est renseigné), si un paramètre lu a déjà été rencontré, on lui ajoute un suffixe numéroté de la forme: «_i».
Exemple: deux colonnes sont nommées INST dans le fichier. La table sera produite avec un paramètre nommé INST et le second nommé INST_1.
Opérande TITRE#
Titre attaché au concept produit par cet opérande [U4.03.01].
Ce titre remplace celui de la table lue.
Opérande INFO#
Avec INFO = 2, des détails sur les données lues sont affichées. Elles sont très nombreuses et n’ont d’intérêt que pour comprendre pourquoi un fichier n’est pas lu comme on l’attendait.
Exemples#
Création d’une table au format “ASTER” avec IMPR_TABLE#
Dans cet exemple (extrait de zzz128b), on écrit plusieurs tables au format ‘ASTER’ dans un fichier.
TT=POST_RELEVE_T( ACTION=_F( INTITULE = “RESU_U2”,
NOEUD = ( “B”, “C”, “D”, “E”, “F”, ),
RESULTAT = U2,
NOM_CHAM = “DEPL”,
TOUT_ORDRE = “OUI”,
TOUT_CMP = “OUI”,
OPERATION = “EXTRACTION”))
IMPR_TABLE( UNITE=37,
TABLE=TT,
FORMAT=”ASTER”)
IMPR_TABLE( UNITE=37,
TABLE=TT,
FORMAT=”ASTER”,
NOM_PARA=( “NOEUD”, “INST”, “ABSC_CURV”,
“DX”, “DY”, “DZ”, “DRX”, )
)
Lecture de tables au format “ASTER” avec LIRE_TABLE#
TT2=LIRE_TABLE( UNITE=37,
FORMAT=”ASTER”,
NUME_TABLE=1,
TITRE=”VALIDATION DE LIRE_TABLE”,)
TT_RED=LIRE_TABLE( UNITE=37,
FORMAT=”ASTER”,
NUME_TABLE=2,
TITRE=”VALIDATION DE LIRE_TABLE”,
)
Lecture de tableau au format LIBRE#
Soit par exemple un tableau tel que celui-ci dans OpenOffice Calc:
Tableau produit dans OpenOffice |
||
enregistré au format csv avec le point-virgule comme séparateur |
||
et sans séparateur de texte |
||
Colonne A |
Colonne B |
Colonne C |
label1 |
111 |
0,09 |
nom 2 |
222 |
10,09 |
valeur3 |
444 |
2240,18 |
exemple4 |
888 |
994640,73 |
ligne5 |
1776 |
883240965,82 |
On l’enregistre en format texte (format CSV) avec le point-virgule comme séparateur de colonnes et sans encadrer les chaînes de caractères (sans séparateur de texte).
On obtient le fichier texte suivant:
Tableau produit dans OpenOffice;;
enregistre au format csv avec le point-virgule comme separateur;;
et sans separateur de texte;;
;;
Colonne A;Colonne B;Colonne C
label1;111;0,09
nom 2;222;10,09
valeur3;444;2240,18
exemple4;888;994640,73
ligne5;1776;883240965,82
Pour le lire dans Code_Aster, on peut faire:
tab = LIRE_TABLE( UNITE=55,
FORMAT=”LIBRE”,
SEPARATEUR=”;”, )