Rastell Toull

Site web consacrée à la Bretagne,
à l'Afrique du nord
à la chanson française,
à la recherche scientifique,
et à bien d'autres sujets ...

Les formats Rastell Toull

par Jacques-Deric Rouault

Article original
Page publique
Page opérationnelle

Version 4.4 du
9 Mai 2012

Table thématique
Table chronologique
Administrateur du site
Comment citer ce document ?
Jacques-Deric Rouault, 2012. Les formats Rastell Toull. Rastell Toull page C127.

1  Présentation

    Dans les différents articles de Rastell Toull qui décrivent des méthodes ou algorithmes spécifiques, et où des programmes d'application sont offerts en exemple d'implémentation, il est fait appel à des fichiers textes auxilliaires qui contiennent les valeurs des paramètres utilisés par le programme. Ces paramètres permettent à l'utilisateur de modifier simplement l'exécution du programme sans avoir à avoir à intervenir directement sur celui-ci.

    Cet article décrit la syntaxe de la structure interne de ces fichiers textes auxilliaires, qui suivent un format totalement défini selon une syntaxe bien précise.  Ce format interne répond à deux impératifs :

    1) Permettre à l'utilisateur de comprendre la nature des paramètres, et pouvoir aisément en modifier les valeurs sans risque d'erreur à l'aide d'un éditeur de textes simple comme Notepad ou Bloc-notes sous Windows.

    2) Permettre au programme d'identifier le fichier comme étant au format correct, en vérifier la syntaxe, et lire sans erreur les valeurs des paramètres.

    Les formats décrits ici sont des exemples. Les différents formats Rastell Toull de fichiers auxilliaires seront décrits avec les programmes correspondants.

    Une règle générale importante : pour tous les programmes Rastell Toull, les programmes comme les fichiers lus doivent tous se trouver impérativement dans le même répertoire.

2  Syntaxe générale

    Les fichiers auxilliaires au format Rastell Toull suivent tous une syntaxe générale qui est précisée dans cette section. Ces fichiers sont des fichiers textes avec une organisation séquentielle en lignes. Chaque ligne présente une information particulière. Il existe trois types de lignes : I (pour Identificateur), C (pour Commentaire) et V (pour valeur) :

    I)  Les lignes qui contiennent des identificateurs commencent par \\ suivi d'un nom en majuscules. Ce nom est impératif et sa position et sa valeur sont controlées par le programme de lecture.

    C)  Les lignes qui contiennent des commentaires commencent par //. Le texte qui suit n'est pas controlé par le programme et est là pour aider l'utilisateur. C'est en général une phrase qui définit la valeur figurant sur la ligne suivante.

    V)  Les lignes qui contiennent des valeurs associées à des paramètres. Il peut s'agir de valeurs numériques entières ou réelles ou de chaines de caractères.

    La première ligne (I) contient l'identificateur \\RASTELL-TOULL. Cet identificateur permet au programme de reconnaitre que le fichier lu appartient bien à la famille de fichiers recherchée.

    La seconde ligne (I) contient l'identificateur \\FORMAT.

    La troisième ligne (V) contient un entier qui code le format.

    Les autres identificateurs, paramètres et valeurs se trouvent placés ici

    La dernière ligne (I) contient l'identificateur \\FINEND.

    Ce qui suit est ignoré, et on peut placer là tous les commentaires que l'on souhaite, par exemple d'anciennes lignes de commentaires et de valeurs.

    Entre la troisième et la dernière ligne, on a des sections qui commencent par une ligne identificateur (I) et ensuite autant de lignes commentaires (C) que de lignes valeurs (V).

    On trouvera ci dessous les descriptions détaillées des différents formats, ainsi que des programmes aptes à les lire et à les vérifier.

3  Noms des fichiers auxilliaires

    A chaque programme Scilab .sce est associé un fichier texte de même nom .txt

    A chaque programme Ada .adb est associé un fichier exécutable sous Windows de même nom .exe et un fichier texte de même nom .txt

    Les noms des fichiers de programmes et de données sont codés suivant le modèle :

     rt_p_a1a1.sce et rt_p_a1a1.txt s'il s'agit d'un programme Scilab et de son fichier auxilliaire associé,
     rt_p_a1a2.adb, rt_p_a1a2.exe et  rt_p_a1a2.txt s'il s'agit d'un programme source Ada, de son exécutable et de son fichier auxilliaire associé.

    Une règle générale importante : pour tous les programmes Rastell Toull, les programmes comme les fichiers doivent tous se trouver impérativement dans le même répertoire.


4  Le format 0 lu avec un programme Scilab

    Le format 0 décrit un format Rastell Toull minimaliste, avec seulement 4 lignes. Ce format 0 est également utilisé quand on ne veut pas formaliser le format du fichier auxilliaire.

    Télécharger le fichier rt_p_a1a1.txt.

    Le programme Scilab rt_p_a1a1.sce permet de lire le fichier rt_p_a1a1.txt et d'en vérifier la structure.

    Télécharger le programme rt_p_a1a1.sce. Ce programme Scilab est organisé en 9 sections, que nous allons commenter

   Après la déclaration de 3 chaines constantes qui permettent d'identifier le programme, la section A1 (5-11) les affiche.

    Dans la section A2 (13-20) on vérifie que le répertoire courant est bien le répertoire où se trouve le programme. Pour cela on ouvre le fichier
rt_p_a1a1.sce qui contient le programme dans la variable fsce. Si cela génère une erreur (erreur différent de 0), alors le message d'erreur A2 est affiché, et le programme s'arrête.

    Le fichier auxilliaire qui a le même nom que le programme, mais une suffixe différent (txt au lieu de sce) est ouvert dans la section A3 (22-28). Si ce fichier n'est pas trouvé, le message d'erreur A3 est affiché et le programme s'arrête.

    Dans l'étape A4 (30-38) on lit la première ligne du fichier auxilliaireet on la compare à l'entête attendue \\RASTELL-TOULL. En cas de différence, le message d'erreur A4 est affiché, et le programme s'arrête.
   

    Dans l'étape A5 (40-47) on lit la seconde ligne du fichier auxilliaire et on la compare à l'identificateur attendu \\FORMAT. En cas de différence, le message d'erreur A5 est affiché, et le programme s'arrête.

    L'étape A6 (49-57) consiste à lire la valeur du format. Pour cela, on lit la ligne comme une chaine de caractères puis on la convertit en entier à l'aide de la fonction sscanf. Si la valeur est différente de zéro, le format n'est pas conforme et on affiche le message d'erreur A6 et on arrête le programme.

    Dans l'étape A7 (59-66) on lit la quatrième et dernière ligne du fichier auxilliaire et on la compare à l'identificateur attendu \\FINEND. En cas de différence, le message d'erreur A7 est affiché, et le programme s'arrête.

    Après l'étape A8 (68-69) où le fichier auxilliaire est refermé, le programme s'achève à l'étape A9 (71-72) par l'affichage d'un message de bonne fin d'exécution.

    Voici ce donne l'exécution du programme :


    A la fin de chaque section on affiche un message d'exécution correcte.

    Ce programme didactique est destiné à tester le bon fonctionnement de cette procédure. L'utilisateur peu tout à loisir introduire des modifications dans le fichier texte auxilliaire et vérifier que tous les controles prévus se déclenchent comme attendu.

    A priori, cette procédure de lecture et de controle peut apparaitre trop complexe et inutilement lourde. A l'expérience, il n'en est rien, et tout écart à la syntaxe, qui traduit une erreur ou une confusion, est immédiatement détectée : c'est une garantie de fonctionnement correct du programme.

5  Le format 0 lu avec un programme ADA

    Le format 0 décrit un format Rastell Toull minimaliste, avec seulement 4 lignes. Ce format 0 est également utilisé quand on ne veut pas formaliser le format du fichier auxilliaire.

    Télécharger le fichier rt_p_a1a2.txt. (de contenu identique au fichier rt_p_a1a1.txt)

    Le programme ADA rt_p_a1a2.adb permet de lire le fichier auxilliaire rt_p_a1a2.txt et d'en vérifier la structure.

    Télécharger le programme source ADA rt_p_a1a2.adb et l'exécutable rt_p_a1a2.exe. Ce programme est organisé en 9 sections, que nous allons commenter.


    Au début du programme ADA, nous avons les déclarations des variables globales et la procédure lecture_ligne qui assure la compatibilité de la lecture d'une chaine de caractères dans un fichier texte entre les implémentations du langage ADA dans les systèmes d'exploitation Windows et Linux-Unix.

 
  La section A1 affiche 3 chaines constantes qui permettent d'identifier le programme.

    Dans la section A2, on vérifie que le répertoire courant est bien le répertoire où se trouve le programme. Pour cela on ouvre le fichier
rt_p_a1a2.adb qui contient le programme. Si cela génère une erreur (Name_error), alors le message d'erreur A2 est affiché, et le programme s'arrête.

    Le fichier auxilliaire qui a le même nom que le programme, mais une suffixe différent (txt au lieu de adb) est ouvert dans la section A3. Si ce fichier n'est pas trouvé, le message d'erreur A3 est affiché et le programme s'arrête.

    Dans l'étape A4 on lit la première ligne du fichier auxilliaire et on la compare à l'entête attendue \\RASTELL-TOULL. En cas de différence, le message d'erreur A4 est affiché, et le programme s'arrête.
   

    Dans l'étape A5 on lit la seconde ligne du fichier auxilliaire et on la compare à l'identificateur attendu \\FORMAT. En cas de différence, le message d'erreur A5 est affiché, et le programme s'arrête.

    L'étape A6 consiste à lire la valeur entière du format. Si la valeur est différente de zéro, le format n'est pas conforme et on affiche le message d'erreur A6 et on arrête le programme.

    Dans l'étape A7 on lit la quatrième et dernière ligne du fichier auxilliaire et on la compare à l'identificateur attendu \\FINEND. En cas de différence, le message d'erreur A7 est affiché, et le programme s'arrête.

    Après l'étape A8 où le fichier auxilliaire est refermé, le programme s'achève à l'étape A9 par l'affichage d'un message de bonne fin d'exécution.

    Voici ce donne l'exécution du programme :


    A la fin de chaque section on affiche un message d'exécution correcte.

    Ce programme didactique est destiné à tester le bon fonctionnement de cette procédure. L'utilisateur peu tout à loisir introduire des modifications dans le fichier texte auxilliaire et vérifier que tous les controles prévus se déclenchent comme attendu.

    A priori, cette procédure de lecture et de contrôle peut apparaitre trop complexe et inutilement lourde. A l'expérience, il n'en est rien, et tout écart à la syntaxe, qui traduit une erreur ou une confusion, est immédiatement détectée : c'est une garantie de fonctionnement correct du programme.

6  Le format 1 lu avec un programme Scilab

    Dans ce second exemple plus complexe, le format 1 décrit une partie d'une colonne de données dans un tableau stocké dans un fichier (par exemple un tableur au format xls). Nous devons documenter le nom du fichier XLS à lire, le rang de la page, le rang de la colonne et les lignes de début et de fin, soit 4 valeurs entières.

    Après la première section \\FORMAT, on a une seconde section \\FICHIERS où est donné le nom du fichier xls à lire, puis une troisième section \\PARAMETRES où on désigne les rangs de la page, de la colonne et la première et la dernière ligne où se trouvent les valeurs à lire.

 
   Le programme Scilab rt_p_a1a3.sce permet de lire le fichier auxilliaire rt_p_a1a3.txt et d'en vérifier la structure.
Ce programme, calqué sur le programme rt_p_a1a1.sce (voir plus haut) qui lit les fichiers auxilliaires au format 0, est organisé en 17 sections, que nous allons commenter. Les premières sections sont identiques.


    La section A7 (59-66) lit et controle l'identificateur \\FICHIERS et la section A8 (68-71) lit le nom du fichier xls à lire dans la variable nom_fichier_xls.
    La section A9 (73-80) lit et controle l'identificateur \\PARAMETRES et les sections B10 (82-86), B11 (88-92), B12 (94-98) et B13 (100-104) lisent les 4 valeurs entières qui désignent la fraction de colonne du tableau xls contenant les valeurs à considérer.



    Les dernières sections B14 à B17 consistent à détecter la fin de fichier FINEND, à fermer le fichier, à afficher pour controle les valeurs lues et afficher un message de bonne fin d'éxécution.

    Voici ce donne l'exécution du programme :

7  Le format 1 lu avec un programme ADA

    Nous reprenons ici le format 1 qui décrit une partie d'une colonne de données dans un tableau stocké dans un fichier (par exemple un tableur au format xls), mais que nous allons lire cette fois avec un programme ADA. Nous devons documenter le nom du fichier XLS à lire, le rang de la page, le rang de la colonne et les lignes de début et de fin, soit 4 valeurs entières.

    Après la première section \\FORMAT, on a une seconde section \\FICHIERS où est donné le nom du fichier XLS à lire, puis une troisième section \\PARAMETRES où on désigne les rangs de la page, de la colonne et la première et la dernière ligne où se trouvent les valeurs à lire.

    Télécharger le fichier rt_p_a1a4.txt. (de contenu identique au fichier rt_p_a1a3.txt)

    Le programme ADA rt_p_a1a4.adb permet de lire le fichier auxilliaire rt_p_a1a4.txt et d'en vérifier la structure.

    Télécharger le programme source ADA rt_p_a1a4.adb et l'exécutable rt_p_a1a4.exe. Ce programme, calqué sur le programme rt_p_a1a2.adb (voir plus haut) qui lit les fichiers auxilliaires au format 0, est organisé en 17 sections, que nous allons commenter. Les premières sections sont identiques.
 
 




Voici ce que donne l'éxécution du programme rt_p_a1a4.exe.


8  Liste des formats Rastell Toull
 
Format
Programme Scilab
Programme ADA
Article


0
rt_p_a1a1.sce
rt_p_a1a2.adb
C127


1
rt_p_a1a3.sce rt_p_a1a4.abd C127





















Table des correspondances
Article
Section
Figures
Programme
Fichier de données
C127
4
C127A4A1 à A5
rt_p_a1a1.sce


5
C127A5A1 à A5
rt_p_a1a2.adb

6
C127A6A1 à A4
rt_p_a1a3.sce

7
C127A7A1 à A5
rt_p_a1a4.abd

9  Liens internes

Autolien
Numéro
Article
Auteur
Rubrique Sous-rubrique Nature
C127
Les formats Rastell Toull
Jacques-Deric Rouault B42 Informatique
Article original

Cette page utilise les articles
Numéro
Article
Auteur
Rubrique Sous-rubrique Nature
C156
Le langage ADA
Jacques-Deric Rouault
B42 InformatiqueLangages
Article original

Le langage Scilab





Articles utilisant cette page
Numéro
Article
Auteur
Rubrique Sous-rubrique Nature
C123
Le traitement des données statistiques
Jacques-Deric Rouault B42 Informatique
B46 Proba-Stats

Article original
C137
Les fichiers autolisibles
Jacques-Deric Rouault
B42 Informatique
Article original

Articles connexes