Vous êtes sur la page 1sur 14

Procéduré dé Misé à jour dés Convértisséurs

Ouvrir un convertisseur dans USEMARCON


1. Copier le dossier du traducteur à modifier sur son P : avant de
commencer à le modifier. Les convertisseurs se trouvent à T:\Préparation
des collections\Traitement documentaire\Traitement
interne\Conversion et traduction de notices

2. Double-clic sur Usemarcongui.exe (ou un raccourci) pour ouvrir l’interface


USEMARCON.
3. Dans le haut de cet interface, cliquer sur l’icône à la droite de la boîte
intitulée Input File

4. Sélectionner un fichier avec lequel tester le convertisseur (fichier .mrc)


5. Cliquer sur l’icône à la droite de la boîte intitulée USEMARCON
Conversion (INI)
6. Sélectionner le fichier .ini dans le dossier du convertisseur, il devrait
habituellement être le seul fichier visible dans la fenêtre de sélection.

7. Le convertisseur étant maintenant chargé dans USEMARCON, il est


possible de le modifier en cliquant sur Edit Rule File

8. Dans la fenêtre d’édition, on peut observer le code du convertisseur et le


modifier
.
9. Une fois les modifications terminées, cliquer sur Save & Run, pour
sauvegarder les modifications et effectuer un test.
10. Au bas de l’interface, on peut observer le rapport de conversion qui
indique si des erreurs sont présentes dans le code ou les notices.
Quelques principes du codage

La Première ligne contient le titre du convertisseur


Les lignes suivantes sont désactivées (mises en commentaire, donc débutent
par // ) et forment le suivi des modifications apportées au convertisseur dans les
deux dernières années. Ces commentaires contiennent le nom de la personne
ayant effectué des modifications, la date de la modification et un commentaire
sommaire sur les modifications apportées (Un suivi plus complet est disponible
dans le fichier Suivi des Modifications aux Convertisseurs.xlsx

Les convertisseurs sont composés de lignes de commande(Règles), chacune


débutant avec une zone(et sous-zone) de la notice d’origine suivi d’une barre
verticale, puis de la zone sortante et d’une autre barre verticale.

Sans autre instruction, cette commande indique un transfert sans modification


d’une zone vers une autre (possiblement la même). Une zone qui n’est pas
transférée ne se trouve pas dans la notice sortante.
Afin de simplifier la recherche dans le code, il est préférable d’ajouter une seule
commande par ligne. Il est plus facile ainsi de voir ce que chaque ligne effectue.

La première ligne indique dans quelle zone les règles suivantes s’appliqueront,
donc la 100$c d’origine et la 100$c sortante.

Cette règle est la condition nécessaire au transfert, sans quoi les données ne se
trouveront pas dans la notice sortante et les modifications apportées par après
ne seront pas appliquées.

Il est important de terminer chaque règle par un point-virgule, sans quoi le


convertisseur renvoie le code d’erreur 5100 lors de la conversion.

Caractères accentués

Les accents dans USEMARCON ne peuvent êtres écrits normalement, car le


logiciel les interprète différemment et cela peut causer toutes sortes d’erreurs,
dont certaines assez graves.

Dans le fichier excel de suivi des modifications aux convertisseurs se trouve un


onglet « Accents » dans lequel se trouvent deux tables.

La première table concerne les convertisseurs pour les données codées en


UTF8, la deuxième devrait fonctionner pour les autres. La première colonne des
tables indique le caractère désiré, la deuxième le caractère à insérer dans le
convertisseur et la troisième, le caractère à insérer dans un fichier .tbl
Les apostrophes

Puisque le convertisseur utilise les apostrophes ‘…’ pour délimiter certaines


commandes, il faut utiliser le code \27 pour signifier un apostrophe dans le texte.

Exemple de bonne utilisation de l’apostrophe

Exemple d’apostrophe causant une erreur


Suivi des Modifications

Un fichier excel sert à effectuer le suivi des modifications et des demandes de


modifications aux différents convertisseurs.

T:\Préparation des collections\Traitement documentaire\Traitement interne\Conversion et


traduction de notices\Modifications à faire aux convertisseurs\Suivi des Modifications aux
Convertisseurs.xlsx

Ce fichier est divisé en onglets, un pour chacun des convertisseurs. Chaque


onglet comprend plusieurs colonnes de données.

État : Il y a plusieurs choix d’état ; « Fait », « Problématique », « À tester », « En


cours », « Annulé », « Sans objet »; sert à indiquer si la demande est traitée ou pas et si
les tests ont révélé des problèmes.
Date de la demande : Indiquer la date initiale de la demande de modification
Nom du demandeur : Indiquer le nom de la personne demandant la modification (celle
à rejoindre pour avoir plus d’information)
Date de traitement : Date où la modification a été faite
Nom du traiteur : Nom de la personne ayant traité la demande
Fichier MARC utilisé : Indiquer le nom du fichier MARC contenant les notices à
problème. Déposer ce fichier dans le fichier T:\Préparation des collections\Traitement
documentaire\Traitement interne\Conversion et traduction de notices\Modifications à faire aux
convertisseurs\
Identificateur d’exemple : Une chaîne de caractères servant à identifier les notices à
problème (ISBN, RSN, 001, URL, etc.)
Zone et sous-zone MARC (input) : Indiquer dans quelle zone et sous-zone se situe le
problème dans la notice entrante (si les données sont transférées de la 260 à la 264,
indiquer 260)
Zone et sous-zone Marc : Indiquer dans quelle zone et sous-zone se situe le problème
dans la notice sortante
Original : Copier le texte entrant (avant conversion)
Conversion actuelle : Copier le texte sortant problématique (après conversion)
Conversion souhaitée : Indiquer le résultat voulu pour la notice sortante
Commentaires demandeurs : Commentaires par la personne ayant demandé la
modification. Séparer les différents commentaires par une série de barres obliques et la
date.
Commentaires traitement : Commentaires par la personne traitant la demande de
modification. Séparer les différents commentaires par une série de barres obliques et la
date.
Traduction Autorités LC (autorités_LC.rul)

La grande majorité des modifications à apporter à ce convertisseur ne


sont que de simples remplacements. Ces modifications s’écrivent ainsi :

Replace (‘X’ by ‘Y’);

Où X est le texte dans la notice d’origine et Y est le texte de


remplacement dans la notice sortante.

Il est important de remplacer les caractères accentués par les bons


caractères de remplacement, voir l’onglet Accents du fichier Suivis des
Modifications aux Convertisseurs.xlsx

Ministres de l’éducation  Ministres de l\27âeducation

1. Trouver la section où doit être faite la modification


2. Vérifier l’ordre dans lequel doit se trouver la modification
a. Dans plusieurs sections de traduction, on retrouve deux
listes de termes à traduire. La première est constituée de
termes composés, donc ayant plus d’un mot, la deuxième
est constituée de termes simples. Cet ordre est important
afin d’éviter qu’une particule d’un terme composé soit traduit
avant de l’être au complet. (Ex : ‘Music and literature’ devrait
devenir ‘Musique et littérature’ mais si Replace (‘Music’ by
‘Musique’) se trouve avant, on retrouve ‘Musique and
literature’ dans la notice sortante.
3. Vérifier s’il y a des instructions particulières pour la zone
a. Certaines zones comportent des instructions particulières,
notamment la 100, où il est nécessaire d’insérer le terme à
trois endroits dans le code. Ces instructions se trouvent en
commentaire (précédées de // et affichées en gris)
4. Insérer la commande dans le code
5. Sauvegarder et tester
Importance de l’ordre alphabétique (avec exceptions)

Dans une section de code contenant de nombreuses traductions ‘Replace’, il est


important de maintenir l’ordre alphabétique pour plusieurs raisons.

Premièrement, cela permet de repérer plus aisément les cas déjà traités dans
cette section, évitant les répétitions dans le code qui peuvent créer des erreurs

Deuxièmement, cela permet de mieux gérer les interactions problématiques


entre les différentes lignes. Par exemple :

Replace ('research' By 'recherche');


Replace ('researcher' By 'recherchiste');

Si le mot ‘researcher’ se trouve en entrée, il sera d’abord converti par la première


ligne en ‘rechercheer’ puisqu’il contient la séquence de caractères ‘research’ et
ne sera donc pas traité par la deuxième règle.

Pour rendre ces cas plus évidents, il est préférable des les indiquer en
commentaire. Par exemple :

Replace ('researcher' By 'recherchiste'); //Placer avant 'research'


Replace ('research' By 'recherche');
Exemples de messages d’erreur
ERROR (5212) - Invalid character in CD in file 'P:\Convertisseurs\Traduction autorités
LC\autorités_LC.rul' at line 6472 :
100 | 400(new)| If (Exists(%899$a)) then '$wnnna' + S ;

L’erreur 5212 concerne un caractère invalide dans le code, habituellement


un caractère accentué, mais il est possible qu’il se trouve ailleurs. « at line
6472 » indique la ligne où débute la commande contenant l’erreur. Dans
ce cas, le code d’erreur est un peu trompeur, car il s’agit d’un espace
manquant entre (new) et la barre verticale.

ERROR (5100) - Rule analysis error (record 403, ID 443447) : syntax error near Replace
in rule "Replace ('(Actor)' By '(Acteur)');
Replace ('(Banjoist)' by '(Banjoèistes)');
Replace ('(Baritone)' By '(Baryton)');
Replace ('(Bass)' By '(Basse)');
Replace ('(Cellist)' By '(Violoncelliste)');
Replace ('(Clarinetist)' By '(Clarinettiste)');
Replace ('(Countertenor)' By '(Haute-contre)');
Replace ('(Conductor)' By '(Chef d\27orchestre)');
Replace ('(Composer)' By '(Compositeur)');
Replace ('(Costume designer)' by '(Crâeateur de costumes)');
Replace ('(Double bassist)' By '(Contrebassiste)');
Replace ('(Drummer)' by '(Batteur)') ;
Replace ('(Film director)' By '(Râealisateur)');
Replace ('(Film producer)' By '(Producteur)');
Replace ('(Flute player)' By '(Flãutiste)');
Replace ('(Guitarist)' By '(Guitariste)');
Replace ('(Handicrafter)' by '(Artisan)') ;
Replace ('(Harpist)' By '(Harpiste)');
Replace ('(Keyboard player)' by '(Claviâeristes)') ;
Replace ('(Motion picture director)' By '(Râealisateur)');
Replace ('(Motion picture producer)' By '(Producteur)');
Replace ('(Musician)' By '(Musicien)');
Replace ('(Organist)' By '(Organiste)');
Replace ('(Percussionist)' By '(Percussionniste)');
Replace ('(Personal trainer)' by '(Entraãineur personnel)');
Replace ('(Physician)' by '(Mâedecin)') ;
Replace ('(Pianist)' By '(Pianiste)');
Replace ('(Professor)' By '(Professeur)');
Replace ('(Psychologist)' By '(Psychologue)');
Replace ('(Saxophone player)' By '(Saxophoniste)');
Replace ('(Television director)' By '(Râealisateur)');
Replace ('(Television producer)' By '(Producteur)');
Replace ('(Tenor)' By '(Tâenor)');
Replace ('(Translator)' By '(Traducteur)')
Replace ('(Trombonist)' By '(Tromboniste)');
Replace ('(Violinist)' By '(Violoniste)');
Replace ('(Violist)' By '(Altiste)');
Replace ('(Viol player)' by '(Violiste)') ;
Replace ('(Violoncellist)' By '(Violoncelliste)');
Replace ('Countess of,' by 'comtesse de,') ;" at line 6854
Un message d’erreur assez commun, il indique une erreur dans la
construction d’une règle de conversion. Ce cas est le plus commun, causé
par un seul caractère oublié, un point-virgule.

Replace ('(Tenor)' By '(Tâenor)');


Replace ('(Translator)' By '(Traducteur)')
Replace ('(Trombonist)' By '(Tromboniste)');

Code de Nouveauté (Dates à modifier une fois par année)

Cette section de code se trouve dans quelques convertisseurs (LISTE) et doit


être modifiée une fois par année afin de s’appliquer aux bonne notices. Les
années doivent correspondre à celle en cours et la précédente.

Dans la dernière partie de cette section, les dates ajoutées par la fonction
Year+Month+Day sont modifiées par les fonctions Replace. Il faut donc modifier
ces lignes.

Ces règles fonctionnent jusqu’en janvier de l’année suivante. Il est préférable de


le modifier en décembre, car il fonctionne également pour le décembre de
l’année précédente.

Exemple du code en 2018


008/36-38 | <90A | S;
008/08-11 | 908(new)$b | If (S='2017') and (@90A='eng') then 'NOUV-LIVREL';
008/08-11 | 908(new)$b | If (S='2017') and (@90A='fre') then 'NOUV-LIVREL';
008/08-11 | 908(new)$b | If (S='2017') and (@90A!='eng') and (@90A!='fre') then 'NOUV-MULTI';
008/08-11 | 908(new)$b | If (S='2018') and (@90A='eng') then 'NOUV-LIVREL';
008/08-11 | 908(new)$b | If (S='2018') and (@90A='fre') then 'NOUV-LIVREL';
008/08-11 | 908(new)$b | If (S='2018') and (@90A!='eng') and (@90A!='fre') then 'NOUV-MULTI';
008/08-11 | 908(newest)$d | If S='2018' or S='2017' then Year+Month+Day;
008/08-11 | 908(newest)$f | If S='2018' or S='2017' then Year+Month+Day;
Replace ('201901' by '201905');
Replace ('201812' by '201904');
Replace ('201811' by '201903');
Replace ('201810' by '201902');
Replace ('201809' by '201901');
Replace ('201808' by '201812');
Replace ('201807' by '201811');
Replace ('201806' by '201810');
Replace ('201805' by '201809');
Replace ('201804' by '201808');
Replace ('201803' by '201807');
Replace ('201802' by '201806');
Replace ('201801' by '201805');
Replace ('201712' by '201804');
Exemples de fonctions régulièrement utilisées

Replace (‘X’ by ‘Y’);

If (RegFind ('X')>=0) Then ‘Y’


Si X est trouvé au moins une fois dans les données entrantes, alors les données sortantes seront
Y

If (RegFind ('X')<0) Then ‘Y’


Si X n’est pas trouvé dans les données entrantes, alors les données sortantes seront Y

Delete ‘X’
Efface toute occurrence du texte entre apostrophes dans la zone visée

‘X‘
Insère le texte entre les apostrophes, sans modification ni condition

S
Un simple S indique un transfert des données entrantes, on peut s’en servir de plusieurs
manières, dont simplement transférer ou en recherche pour énoncer une condition.

If S=’X‘ then ‘Y’


Si les données entrantes correspondent à X, alors les données sortantes seront Y

If S!=’X‘ then ‘Y’


Si les données entrantes ne correspondent pas à X, alors les données sortantes seront Y

S + ‘X’
Permet d’ajouter du texte à la suite de la chaîne transférée

‘X’ + S
Permet d’ajouter du texte avant la chaîne transférée

Table ('Annexe I RDA.tbl')


Cette fonction appèle la table (dans ce cas, Annexe I RDA.tbl) afin de traduire la section
concernée. Il faut s’assurer que le fichier .tbl en question se trouve dans le même dossier que le
convertisseur et que le nom corresponde à celui du fichier .

Regreplace ('Liner notes written by (.*) inserted into container','Notes de


programme par \\1 insâerâees dans le conteneur') ;
Agit comme la fonction Replace, mais dans ce cas, (.*) signifie, n’importe quelle chaîne de
caractère, comme un nom qui changerait d’une fois à l’autre, puis \\1 indique où cette chaîne de
caractères doit être placée.

RegReplace('January (\\d)(\\d), 19','le \\1\\2 janv. 19') ;


Dans cet exemple, on traduit une date de l’anglais vers le français. les (\\d) indiquent des chiffres
indéterminés qui seront replacés dans la notice sortante là où se trouvent les \\1 et \\2
Regreplace ('(.*)pendisc(.*)','Comprend un lien Internet exclusif (Opendisc).');
Cette fonction renvoie la même chose tant que la partie entre les (.*) est trouvée, permet de
s’adapter à une zone sont la formulation peut différer, mais dont un mot permet de déterminer ce
que l’on veut comme sortie.

If (@040$e=’X') then S ;
Si la zone concernée ne contient que ‘X’ alors elle est transférée. Il est possible que la condition
pointe vers une zone différente de celle transférée.

099 | <08A |
En inscrivant un < devant un code de zone, on créé une zone temporaire qui ne sera pas
transférée dans la notice sortante. Elle peut être réinsérée normalement ou modifiée ou
simplement servir pour une condition.

000/X/
X est la position du caractère dans la zone, contrairement au codage MARC, USEMARCON
considère la première position comme 1 et non 0.

If (Nextsub='X') then
Si la prochaine sous-zone est $X, alors la condition est vraie et le convertisseur accomplit la
prochaine action.

If not (Exists(@336$a)) then S // If (Exists(@336$a)) then S


La première transfère les données si la zone et la sous-zone 336$a ne sont pas présentes dans
la notice entrante. La deuxième transfère si elles le sont.

XXX | YYY(Z) |
Le (Z) est un nombre qui indique quelle instance de la zone à laquelle s’applique la règle.
Méthode d’enquête

Pour trouver la ligne responsable d’une erreur ou d’un problème, il faut parfois
enquêter dans le code, car la ligne responsable n’est pas immédiatement
évidente.

Chercher la ou les lignes qui affectent la zone concernée, vérifier en même


temps si cette ligne comprend une condition qui pourrait dépendre d’une autre
zone. S’assurer que chaque action de cette règle se trouve sur une ligne
séparée par des points-virgules. On désactive les lignes l’une après l’autre et on
fait fonctionner le convertisseur pour tester si la ligne désactivée affecte le
résultat. Cette méthode permet de trouver la ligne responsable d’erreurs lorsque
la responsable n’est pas évidente (il s’agit souvent d’interactions entre plusieurs
lignes qui rend l’analyse difficile).