Anordnung der römischen Zahlen in Al
Thomas Berger
ThB.com at t-online.de
Mo Feb 14 13:23:11 CET 2000
Bernhard Eversberg wrote:
>
> J. Pautz schreibt:
>
> > Problem: unsere Signaturen haben als Bestandteil römische Zahlen. Bei
> > der Index-Anzeige wird "IX" nach "IV" platziert.
aber "IX" wird vor "V" sortiert...
>
> Was ja voellig korrekt ist. In der Tat und interessanterweise werden die
> roemischen Zahlen bis einschl. 18 korrekt sortiert, ohne dass man was tut.
Aber nur, falls die 9 als "VIIII" notiert ist, bei
"IX" geht es schief.
Eine der Insuffizienzen von Allegro ist, dass im
Register genau das zu sehen ist, was dort steht
(das laesst sich, zumindest fuer WWW-OPACs, leicht
aendern). Und sortiert wird ebenfalls nach dem, was
dort steht (das wird sich eher nie aendern).
Dies wird zum Problem vor allem bei Zeichen mit
Zahlbedeutung, also etwa negativen Erscheinungsjahren
(beim Katalogisieren von Tontaefelchen etwa) und bei
roemischen Zahlen, insbesondere in Signaturen
(wobei natuerlich nicht jedes "X" in einer Signatur
eine Zahl ist). Denn wegen der stets lexikographischen
Sortierung kommt es dazu, dass "2a" hinter "10"
zu stehen kommt.
Fuer eine korrekte Sortierung muessen also alle
Zahlen in den Zeichenketten durch rechtsbuendiges
ausruecken in eine positionale Darstellung
ueberfuehrt werden, fuer roemische Zahlzeichen
bedeutet das m.E., dass diese auch noch von der
Subtraktionsschreibweise in eine andere Form
ueberfuehrt werden muessen.
Durch Parametrierung koennte man es also erreichen,
dass man eine Signatur
Kongr. Athen MDCCCXCIV/14a(IV 7
im Register umwandelt zu
Kongr Athen 001894/000014a(000004 000007 = Kongr. Athen
MDCCCXCIV/14a(IV 7
Aber damit waere natuerlich auch niemand gluecklich...
Folgender Code fuer die Exportsprache wandelt uebrigens
roemische in Dezimalzahlen um (nicht getestet)
% #ucc enthaelt die roemische Zahl
% #urs enthaelt das Resultat
% #ucd, #umx Hilfsvariable
#nr x"=0" =rs
#nr x"=0" =mx
#-A
#ucc T1 =cd
#ucd +#98z c"I" x="1" =cd
#ucd +#98z c"V" x="5" =cd
#ucd +#98z c"X" x="10" =cd
#ucd +#98z c"L" x="50" =cd
#ucd +#98z c"C" x="100" =cd
#ucd +#98z c"D" x="500" =cd
#ucd +#98z c"M" x"=1000" =cd
#nr +#98y Z
#98z
#ucd +#98z x"<mx" Z
#urs +#98y x"+cd" =rs
#98z
#urs x"-cd" =rs
#ucd =mx
#98y
#ucc +A dcc dcd t1 b0 acc
#urs dmx e"." =rs
% fertig
viele Gruesse
Thomas Berger
Mehr Informationen über die Mailingliste Allegro