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