Logo BPI
Accueil TCAO  |  Remerciements  |  Un aperçu  |  Licence BPI  |  Distribution  |  Installation  | 
Claviers  |  Pointeurs  |  Alibi  |  Concorde  |  Recode  |  Ventile  |  Vocable  |  Accueil BPI

Progiciels de TCAO - Vocable - Exemples

Table des matières - Vocable - Exemples

Résumé

Le progiciel Vocable permet de produire des listes du vocabulaire des mots contenus dans des fichiers textuels. Ces listes de vocables peuvent être triées selon divers critères: en ordre alphabétique habituel (de gauche à droite), en ordre alphabétique inverse (de droite à gauche), en ordre de fréquence décroissante. Chaque vocable peut être accompagné de la fréquence de ses occurrences et de la liste de toutes les références de type nom-de-fichier:ligne pour chaque occurrence. Des options permettent de produire ces listes de vocables sous divers formats: en une colonne selon une largeur désirée; en plusieurs colonnes par tranche de n lignes.

Comme données d'entrée, Vocable accepte un ou plusieurs fichiers textuels en même temps. Ces fichiers peuvent être soit en format plein texte, soit en format HTML ou soit en tout format SGML. Tout comme les progiciels Ventile, Concorde et Alibi, le progiciel Vocable supporte la notion de régions textuelles à l'aide de raffineurs internes et de raffineurs externes.

Vocable permet de trier alphabétiquement les vocables d'un texte écrit dans l'une ou l'autre des 13 langues indo-européennes suivantes: français, allemand, anglais, danois, espagnol, féroïen, finnois, irlandais, islandais, italien, norvégien, portugais, suédois. À ces langues indo-européennes s'ajoutent les 12 langues africaines suivantes: bambara, éwondo, fulfulde-sokoto, fulfulde-adamawa, fulfulde-maasina, fulfulde-jelgoore, fuuta-jalon, fulfulde-pulaar, lingala, sango, sango-riverain, wolof. Pour mieux comprendre les commandes d'appel de Vocable formulées dans les prochains exemples, consultez le Menu d'aide de Vocable.


Exemple 1 - Vocabulaire français en ordre alphabétique avec références au contexte

Lors de la production de listes de vocabulaire, Vocable doit trier alphabétiquement les vocables. Avant de s'exécuter, Vocable s'assure que les variables d'environnement DEFAULT_CHARSET et COLLATE_LANGUAGE ont été initialisées. Si ces variables d'environnement n'ont pas une valeur appropriée, alors Vocable produit un diagnostic d'erreur. Pour plus de détails, voir Variables d'environnement.

La commande suivante demande de lire le fichier français xlinfr.l1, de produire une liste alphabétique des vocables de ce texte (selon le raffineur interne W), de produire pour chaque vocable une référence au numéro de ligne de chaque occurrence (option -r), et d'afficher les résultats sur une largeur de 70 colonnes (selon l'option -w70).

vocable  -w70 -r  W  xlinfr.l1

La liste du vocabulaire suivant est un extrait de la liste originale produite avec cette commande.

139             xlinfr.l1:7 6 7
118-120-124-126).  xlinfr.l1:8
à               xlinfr.l1:47 51 58
accepta.        xlinfr.l1:36
acceptèrent.    xlinfr.l1:46
alla.           xlinfr.l1:15
allèrent.       xlinfr.l1:46 48
allez-vous?     xlinfr.l1:21
allons          xlinfr.l1:22 23
alors           xlinfr.l1:36
ami,            xlinfr.l1:17
amis            xlinfr.l1:21 47
animaux         xlinfr.l1:71
appela          xlinfr.l1:34 38 42
Appliquée       xlinfr.l1:6
apporte         xlinfr.l1:69
apporter        xlinfr.l1:71
après,          xlinfr.l1:65 27 46
arriva          xlinfr.l1:16 50 53 61
...
un              xlinfr.l1:14 16 16 20 21 27 32 32 32 34 14 15 65
une             xlinfr.l1:15 18 50 71
vais            xlinfr.l1:15 17
vas-tu?         xlinfr.l1:17
venons          xlinfr.l1:27
veux            xlinfr.l1:68
village         xlinfr.l1:14 25 16 20
vint,           xlinfr.l1:31
vite,           xlinfr.l1:59
vivait          xlinfr.l1:14
voici;          xlinfr.l1:35
voilà,          xlinfr.l1:62
vous            xlinfr.l1:31 31
y               xlinfr.l1:16 21 50 54
YANTÚKÚ         xlinfr.l1:3

Les résultats de cette commande nécessitent quelques commentaires. Dans cette liste de vocabulaire, les vocables sont triés en ordre alphabétique et les signes de ponctuation ne sont pas détachés du vocable. Une référence aux occurrences est constitué du nom du fichier d'entrée, d'un deux-points et d'une liste de chiffres. Ces chiffres correspondent à la numérotation des lignes que Vocable a faite automatiquement en lisant le fichier source xlinfr.l1. Dans cette liste de chiffres, chaque chiffre est le numéro d'une ligne du fichier source qui contient une occurrence du vocable correspondant.

Pour dresser la liste des vocables, Vocable utilise des routines d'équivalence afin de déterminer si un mot donné est soit une occurrence d'un vocable déjà identifié ou soit un nouveau vocable à ajouter à la liste de vocabulaire. Pour illustrer le comportement de ces routines d'équivalence, examinons le cas du vocable après, (avec la virgule) qui se trouve dans la liste plus haut. Dans le texte xlinfr.l1 les occurrences orthographiques de ce vocable sont les suivantes: après, (à ligne 65); Après (à ligne 27); Après (à ligne 46). Vocable considère que ces trois formes orthographiques sont des occurrences du même vocable après et, pour l'affichage des résultats, il sélectionne parmi les occurrences d'un vocable la forme qui possède le poids le plus élevé en terme de tri alphabétique. Dans ce cas-ci, c'est la forme après, qui a été retenue pour figurer dans la liste des vocables. Si la forme après (sans virgule) avait été actualisée dans le texte d'entrée, elle aurait été retenue à la place de la forme après, que l'on retrouve dans cet exemple-ci.


Exemple 2 - Vocabulaire bambara en ordre de fréquence

La commande suivante demande de lire le fichier bambara xbam.bra, de produire une liste des vocables de ce texte (selon le raffineur interne W), et de trier ces vocables par ordre de fréquence décroissante (option -f).

vocable -w70 -f  W  xbam.bra

La liste du vocabulaire suivant est un extrait de la liste originale produite avec cette dernière commande.

311 a
184 ko
180 ka
140 ye
112 u
 90 o
 84 be
 61 Amadu
 59 nin
 57 na
 56 Tara
 53 ni
 47 tagara
...
  2 taama
  2 tèmèna
  2 terikè
  2 tòw
  2 wele
  2 yenninnò
  1 --
  1 anonyme
  1 aprè
  1 Auteur:
  1 avec
  1 ayiwa,
  1 bagènnaw
  1 bam
  1 banana
...
  1 tuguni.
  1 Veronika
  1 wa
  1 wolo
  1 wulila
  1 yafa
  1 yala
  1 yanninnò
  1 yèlèma

Cette dernière liste de vocabulaire contient trois extraits de la liste produite originalement. Nous avons séparés ces extraits avec un symbole ... et, à l'aide de ces extraits, on peut noter qu'une telle liste de fréquence est constituée de deux tris:

  1. un premier tri pour ordonner par ordre de fréquence décroissante;
  2. un deuxième tri pour ordonner par ordre alphabétique les vocables qui ont le même nombre d'occurrences.

Par exemple dans la liste plus haut, les vocables ayant une occurrence de 1 sont triés alphabétiquement entre eux mais, en plus, ils se retrouvent après les vocables ayant une fréquence de 2 occurrences. Sur un corpus de grande taille, les mots avec une faute d'orthographe se retrouvent habituellement dans la liste des vocables de fréquence 1.


Exemple 3 - Vocabulaire sango en ordre alphabétique inverse

Le but du prochain exemple consiste d'une part à montrer un cas de traitement du sango avec Vocable et, d'autre part, à examiner de plus près le tri alphabétique inverse des digraphes et des trigraphes africains en se servant du sango comme exemple. Avant d'exécuter la prochaine commande sur un texte en sango, rappelons que la valeur des variables d'environnement ont été initialisée avec les commandes suivantes:

export DEFAULT_CHARSET=lin
export COLLATE_LANGUAGE=snj

La commande suivante demande de lire le fichier sango xsaj.lin, de produire la liste des vocables de ce texte (raffineur interne W), de trier ces vocables par ordre alphabétique inverse (option -i), d'afficher les résultats sur une largeur de 70 colonnes (option -w70), et enfin de paginer cette liste en plusieurs colonnes par tranche de 10 lignes à la fois (option -p10).

vocable -w70 -p10 -i  W  xsaj.lin

La liste du vocabulaire suivant est un extrait de la liste originale produite avec cette dernière commande.

...
    tombôka 1     singîla 3      ndimä 2     atomba 1       gbândä 2
     zûsûka 4      sukûla 6   govoromä 3         na 1023     hânda 1
       akpa 1     tambûla 4        mbâ 9   Marâbänä 7       ahânda 2
   kerekpâ. 1          ma 28      Ambâ 11     mbänä 6       nganda 4
         lâ 5         amä 10    «Kâmba 1    Yângânä 5      ânganda 1
        Ala 293    madäma 1      Sâmba 14   töngana 57     ngbëndä 1
fütängö-âla 1        mamâ 10    âsämba 2      kpêna 1     ângbëndä 1
     kusâla 1       nyama 3     yamba. 1       gïna 1      wayînda 1
       wala 34   govorama 1       Ömba 1        ndâ 21     ngonda. 1
     kobêla 4       luemä 3      tomba 2    yabändä 1      ngbondâ 1

   atönda 1   ngângângâ 1    âlïngä 1      angbâ 10       mâpa 1
    hûnda 41  âwanganga 1   malînga 2     dângbâ 1       nzapä 1
   ahûnda 18    ngbanga 33    nînga 2    ndângbâ 1    ngûnzapä 1
  nïhûnda 1     farânga 1    anînga 6   ngbângbâ 2        papa 1
      ngâ 40      tanga 6     sînga 1     bengbä 1        bâra 2
  Ngbanga 4      âtanga 2   Ngbonga 3    âkûngbâ 4      âbâra, 1
    kânga 4       yângâ 37  ngbonga 3     Nginza 1        garâ 1
   akânga 3       yenga 2     zonga 6     ânînza 2    wâlïgarâ 2
   ngängä 1       hînga 29   azonga 2     nginza 135      kâra 6
danganga, 2      ahînga 7      ngbâ 11        pä 1      Pakara 3

  âbämarä 1      pâsä 3     «Aîtä, 1        ndokua 2   wâ-na-wâ 1
âwandarä, 1    girisa 3        otâ 1   särängö-kua 1       sëwä 9
    nzara 6   agirisa 1   balê-otâ 2         tokua 6      Asëwä 18
     sâra 52     AAta 1       kötä 16       atokua 1      ndowâ 2
    asâra 30     bata 3      Akötä 6       watokua 1         yâ 88
     tara 1   kamâta! 3       fûta 26           wa 34       aya 2
   pätärä 2     mbätä 5      afûta 8          dawä 1       yayâ 1
     wara 57     pâta 14       kua 78         kâwa 6      suîya 1
    awara 16  ngarata 1      wakua 5         lâwa, 1       kôya 3
    ngäsa 2       îtä 2     âwakua 12         mawa 10   kangoya 2
...

Avant d'examiner ces résultats, rappelons que les digraphes et les trigraphes sango sont les suivants: gb, kp, mb, mv, nd, ng, ngb, ny, nz. Dans le premier bloc de 10 lignes, on peut constater que le digraphe kp dans le vocable kerekpâ est trié après le vocable zûsûka mais avant le vocable . Ainsi la lettre p du digraphe kp se trouve avant la lettre l du vocable . Comme autre exemple dans le deuxième bloc de 10 lignes, le vocable ngûnzapä est trié avant le vocable papa car le digraphe nz est une lettre avant la lettre p.

Cette dernière liste de résultats démontrent que Vocable est en mesure de trier correctement par ordre alphabétique inverse les digraphes et les trigraphes. Notons que le tri inverse de digraphes et de trigraphes n'est pas une chose simple à programmer. En effet, dans un tri inverse, le mot est examiné physiquement de droite à gauche pendant qu'en terme logique un digraphe ou un trigraphe doit plutôt se lire de droite à gauche.

Dans cette liste, il y a par contre le vocable Ngbonga et le vocable ngbonga qui sont en fait deux variantes orthographiques d'un même mot. Que se passe-t-il? L'explication est fort simple. Dans le vocable ngbonga, le ng a été analysé comme un digraphe tandis que dans le vocable Ngbonga, le Ng a été analysé comme deux caractères distincts. Cette chaîne Ng est une instance du digraphe ng se trouvant dans un mot en début de phrase, ce qui justifie le N majuscule.

Dans la déclaration de d'alphabet du sango, les digraphes et trigraphes sont uniquement les variantes en minuscule et en majuscule suivantes: gb, GB, kp, KP, mb, MB, mv, MV, nd, ND, ng, NG, ngb, NGB, ny, NY, nz, NZ. Selon cette déclaration d'alphabet, la variante Ng n'est donc pas un digraphe.

Pour résoudre ce genre de phénomène typographique, il faudrait convertir les variantes textuelles en normalisant la chaîne Ng en ng pour en faire un digraphe. De plus, une telle normalisation devrait se faire au moment de la lecture d'un texte pendant l'identification des lettres de l'alphabet de la langue de ce texte. Convertir au vol la chaîne Ng en digraphe ng n'est pas du ressort des routines d'équivalence et ni du ressort du programme Vocable. À notre avis, la tâche de convertir une simple majuscule en minuscule appartient plutôt à une grammaire de pré-édition textuelle car tout texte est écrit selon une quelconque grammaire typographique. Ne serait-ce que pour l'usage des signes de ponctuation et les conventions de majuscule et de minuscule selon la région textuelle, par exemple: en début de phrase, dans un titre, dans une énumération, dans un nom propre, dans un acronyme.

Ce petit exemple nous permet de signaler qu'une grammaire de pré-édition automatique de langues africaines pourrait servir entre autres à normaliser ce genre de variantes typographiques des digraphes et des trigraphes.


Exemple 4 - Vocabulaire extrait de plusieurs fichiers

La commande suivante demande de lire cinq fichiers de textes en français, de produire la liste alphabétique des vocables de ces textes (raffineur interne W), et de fournir la référence des occurrences pour chaque vocable (option -r).

vocable -w70 -r W xbamfr.l1 xengfr.l1 xfulfr.l1 xlinfr.l1 xwolfr.l1

La liste du vocabulaire suivant est un extrait de la liste originale produite avec cette dernière commande.

...
ainsi           xbamfr.l1:52 xengfr.l1:55 xfulfr.l1:93 xengfr.l1:127
                xbamfr.l1:54
ait             xfulfr.l1:141
ajouta:         xfulfr.l1:86
ajoutait        xbamfr.l1:18
Alberta;        xengfr.l1:190 191
albinos!»       xfulfr.l1:149
ALIYYU          xwolfr.l1:2 69
alla            xbamfr.l1:56 99 124 161 227 xfulfr.l1:54 178
                xbamfr.l1:68 68 xlinfr.l1:15
Allah           xbamfr.l1:41 42 86
allaient        xbamfr.l1:174 181 xfulfr.l1:139
allait          xbamfr.l1:27 65 107 139 xfulfr.l1:119 xwolfr.l1:30
                xbamfr.l1:206
allé            xbamfr.l1:190
Allemands       xengfr.l1:78 xwolfr.l1:26
aller           xbamfr.l1:165 169 205 xfulfr.l1:159 xbamfr.l1:141 143
allèrent        xbamfr.l1:26 215 218 188 xlinfr.l1:46 48
allés,          xbamfr.l1:135
Allez           xfulfr.l1:50
allez-vous      xfulfr.l1:104 40 xlinfr.l1:21
allons          xfulfr.l1:73 106 xlinfr.l1:22 23 xbamfr.l1:147
allumé          xbamfr.l1:202
alors           xbamfr.l1:42 xfulfr.l1:124 xlinfr.l1:36 xbamfr.l1:85
                xfulfr.l1:44 xbamfr.l1:35 122 205 233 237 xfulfr.l1:42
                71 147 149 153 xbamfr.l1:41 60 98 104 109 149 160 174
                208 218 xengfr.l1:128 xfulfr.l1:174 112
...
cas,            xfulfr.l1:150
case            xbamfr.l1:202 201 201
catégorie       xengfr.l1:250
cause           xengfr.l1:141
ce              xbamfr.l1:29 35 38 44 47 61 92 95 105 122 170 178 182
                202 230 xengfr.l1:35 41 44 66 80 86 119 141 179 244
                251 xfulfr.l1:28 32 52 60 67 140 150 173 194
                xlinfr.l1:39 44 xwolfr.l1:26 27 34 34 45 51 61 95 110
                113 113 114 139 139 149 156 161 162 172 181 204 223
                xbamfr.l1:16 xengfr.l1:160 xwolfr.l1:66 142 158
                xfulfr.l1:71 xengfr.l1:148 xwolfr.l1:3 13
Ceci            xwolfr.l1:162
cela            xbamfr.l1:41 xengfr.l1:130 xwolfr.l1:38 166
                xbamfr.l1:163 xengfr.l1:114 xfulfr.l1:104
                xengfr.l1:100 243
célébra         xbamfr.l1:104 106 162
célébrer        xbamfr.l1:158
celle           xengfr.l1:69 99 xfulfr.l1:74 84 170 xwolfr.l1:109
celle-ci        xbamfr.l1:98 xfulfr.l1:137 xbamfr.l1:57 151 172
                xfulfr.l1:73
celles          xbamfr.l1:111 xfulfr.l1:78 xwolfr.l1:33 98 99
celles-ci.      xwolfr.l1:143
(CELTA),        xlinfr.l1:6
celui           xbamfr.l1:18 47 47 51 xengfr.l1:98 xwolfr.l1:153 224
                xbamfr.l1:49 194 219 xfulfr.l1:22
celui-ci        xbamfr.l1:59 90 200 157 154 xwolfr.l1:206 225
                xbamfr.l1:229 xengfr.l1:101

Dans les résultats affichés plus haut, les vocables sont triés par ordre alphabétique. À chaque vocable est associée une liste des références aux occurrences dans laquelle chaque fichier d'entrée est identifié suivi d'un numéro de ligne pour chaque occurrence de ce vocable.


Exemple 5 - Vocabulaire espagnol extrait d'un fichier HTML

Dans une commande d'appel de Vocable, si une balise HTML est utilisée comme raffineur externe, alors cette balise sera utilisée par Vocable comme étant une borne contextuelle et cette dite balise fera alors partie de la structure textuelle plutôt que de la structure du mot. Dans le cas d'un fichier d'entrée en format HTML, c'est en fait l'utilisateur qui décide si une balise doit faire partie ou non d'un vocable. Le présent exemple a été formulé afin d'illustrer l'usage des raffineurs externes et leur traitement avec le progiciel Vocable.

La commande suivante demande de lire le fichier espagnol resums.html, de produire la liste des vocables de ce texte (raffineur interne W), d'afficher les résultats sur une largeur de 70 colonnes (option -w70), et enfin de paginer cette liste en plusieurs colonnes par tranche de 10 lignes à la fois (option -p10).

vocable -w70 -p10  html,tr+th+td,p+font+P,S+F+a+i,W  resums.html

Dans cette commande, la liste de raffineurs html,tr+th+td,p+font+P,S+F+a+i,W sera expliquée plus bas. Notons en passant qu'il n'est pas obligatoire de spécifier une telle liste de raffineurs externes pour obtenir des résultats à partir de fichiers en format HTML.

La liste du vocabulaire suivant est un extrait de la liste originale produite avec cette dernière commande.

...
1 escuelas           1 están      1 examinar     1 Finalmente,
2 ese                2 Estas      1 exhaustivo,  1 financieros
2 esencial           5 este       1 existencia   1 físicos
1 esenciales         1 Esto       1 explica      1 fondos
1 esfera             1 Estos      1 exterior     3 forma
1 Especialista       1 estudiar   1 facilita     4 formación
1 especialistas      1 estudio    1 facilitar    1 forman
1 ésta               1 etapas     2 Facultad     1 française
2 establecimientos,  1 evalua     1 facultades   1 France
1 estado             3 evolución  1 favorecer    3 francesa

1 franceses     1 funcionamiento  1 G1N
1 Francia.      1 funcionar.      1 Gracias
1 francofonía,  3 funciones       1 grandes
1 francófono    3 futuro          1 gratuita
1 fronteras     1 3G4</b><br>     1 Grembloux,
1 fructífera    1 generación      3 Grupo
1 fue           1 general         1 Guez
1 fuentes       1 generalización  1 Guy
1 fueran        1 gestion.<br>    4 ha
1 fulgurante    1 Gilles          4 habilidades

1 hace                             1 humanos
1 han                              1 identifica
1 hasta                            1 <img
1 hecho                            1 impacto
1 height="50"                      1 implantación
2 hora                             1 importante
1 horizonte                        1 indispensables<br>
2 <hr                             26 información
1 http://www.acelf.ca/revue/</b>   1 información,<br>
1 HUDON<br>                        1 información,<br>Universidad
...

Dans une liste de raffineurs telle que html,tr+th+td,p+font+P,S+F+a+i,W énoncée dans la commande plus haut, chaque élément de cette liste est séparé par une virgule. Logiquement, cette dernière liste définit cinq niveaux textuels où chaque niveau est délimité par une virgule. De plus, selon la syntaxe d'une commande TCAO, un même niveau textuel peut contenir plus d'un raffineur. Dans un tel cas, pour distinguer chaque raffineur entre eux, il faut utiliser le signe + entre chaque raffineur. En d'autres mots, la liste de raffineurs html,tr+th+td,p+font+P,S+F+a+i,W peut être paraphrasée de la façon suivante:

  1. le premier niveau textuel est le texte englobé par le raffineur externe html;

  2. le deuxième niveau textuel est le tableau représenté par les raffineurs externes tr+th+td qui sont des éléments de type tableau et qui désignent les balises HTML <tr></tr>, <th></th>, <td></td>;

  3. le troisième niveau textuel est le paragraphe représenté par les raffineurs p+font+P qui désignent respectivement les balises HTML <p></p>, les balises <font></font> et le raffineur interne P;

  4. le quatrième niveau textuel est la phrase représentée par les raffineurs S+F+a+i qui désignent respectivement les raffineurs internes S et F et, au même niveau, les raffineurs externes pour les balises HTML <a></a> et les balises <i></i>;

  5. le cinquième niveau textuel est le mot représenté par le raffineur interne W.

L'utilisateur doit toutefois avoir une certaine connaissance des balises HTML et du niveau textuel auquel ces balises font référence afin de mieux profiter des possibilités TCAO pouvant effectuer un tel balayage sélectif de régions textuelles.


ANNEXE 1 - Menu d'aide Vocable

«Vocable» produit des listes du vocabulaire des mots contenus
dans des fichiers textuels.

Usage: vocable [OPTION]... SCAN-SPEC[,SCAN-SPEC]...  FICHIER...

Options:
  {-}{-}copyright  afficher les conditions de copie, puis terminer
  {-}{-}help       fournir ce message d'aide, puis terminer
  {-}{-}version    identifier le programme, puis terminer

Options de sortie:
  -v         expliquer en mode bavard ce qui se passe
  -d         sortir de l'information interne pour fin de débogage
  -f         trier par ordre de fréquences descendantes
  -r         produire les références aux lignes d'occurrence
  -p SIZE    paginer après SIZE lignes (aucune multi-colonne par défaut)
  -w WIDTH   lister les vocables sur une largeur WIDTH (79 col. par défaut)
  -i         produire les vocables en ordre alphabétique inverse

Chaque SCAN-SPEC est DEMARREUR[/TERMINATEUR].
Tant DEMARREUR que TERMINATEUR sont CHERCHER[+CHERCHER]... et
chaque CHERCHER est soit une balise SGML ou soit un des raffineurs
internes suivants:

   P   paragraphe délimité par une ou plusieurs lignes vides
   S   phrase terminée par .?! et possiblement ])}"» et suivie de 2 blancs
   V   vers terminé par une ou plusieurs fins de ligne
   W   mot délimité par un blanc (caractère espace)
   C   caractère unique (énergivore en CPU)
   T   fournir une balise démarreur/terminateur avant et après le textuel
   F   reconnaître l'espace français après une ponctuation forte
Accueil TCAO  |  Remerciements  |  Un aperçu  |  Licence BPI  |  Distribution  |  Installation  | 
Claviers  |  Pointeurs  |  Alibi  |  Concorde  |  Recode  |  Ventile  |  Vocable  |  Accueil BPI

http://progiciels-bpi.ca  |  bourbeau@progiciels-bpi.ca
Copyright ©  Progiciels Bourbeau Pinard inc., Montréal, 1999. Tous droits réservés / All rights reserved.