diverse Probleme
Thomas Berger
thomas at mpim-bonn.mpg.de
Sa Okt 21 17:19:09 CET 1995
> Herr Winkler schrieb:
> 2) Gibt es eine Moeglichkeit, ein Register mit einer laufenden Nummer zu
> erstellen (wo also 1stellige nach 2stelligen usw. Zahlen aufgefuehrt
> sind). Das geht zwar, wenn die Zahlen rechtbuendig sind, aber dann muss
> man bei der Suche immer fuehrende Leerzeichen oder Nullen eingeben, was
> bei mehrstelligen Zahlen sehr laestig sein kann.
und diverse antworteten...
TMHO fehlt leider die wichtigste Information (ic=1) und da ich sowieso
fuer das allegro.faq eine Zusammenfassung schrieb hier also meine
Variante (mit fuehrenden Leerzeichen, damit es schoener aussieht).
----- Begin Included Message -----
Gibt es eine Moeglichkeit, ein Register mit einer laufenden
Nummer zu erstellen (wo also 1stellige nach 2stelligen usw.
Zahlen aufgefuehrt sind). Das geht zwar, wenn die Zahlen
rechtbuendig sind, aber dann muss man bei der Suche immer
fuehrende Leerzeichen oder Nullen eingeben, was bei
mehrstelligen Zahlen sehr laestig sein kann.
Sie koennen eine Umcodierung der Benutzereingabe einprogrammieren.
Zunaechst muss der Parameter ic in der Indexparameterdatei
ueberprueft werden. Sie benoetigen
ic=1
Wenn nun z.B. Register 7 diese Zahlen enthaelt, basteln Sie
einen Abschnitt #-7 in Ihrer Indexparameterdatei, wo die
Benutzereingabe als Variable #u1 in beliebiger Weise umcodiert
werden kann, also auch rechtsbuendig auf eine bestimmte
Stellenzahl gerueckt und mit fuehrenden Leerzeichen versehen.
Das wuerde so aussehen:
#-7
#u1 +#39Z x">0" Z % 'Z' besser bekannt als 'e0'
!u1 +# % ex and hopp
#39Z
#u1 x"*1" e"." r6, 0 % zwischen ',' und '0' exakt zwei blank!
% 'b' mit eck. Klammer, 'f' ohne:
!u1 b"[0123456789]" f"0123456789"
#+#
Genauer tut dieser Abschnitt folgendes: Ist die Benutzereingabe
plausiblerweise numerisch (hier daran erkannt, ob der _Wert_
der ersten beiden Zeichen der Benuzereingabe groesser als Null
ist) so wird bei der Sprungmarke #39Z mit dem x-Befehl die
erste vorkommende ununterbrochene Folge von Ziffern als Zahl
interpretiert und mittels des r-Befehls mit fuehrenden Leerzeichen
auf sechs Stellen rechtsbuendig ausgegeben. Anschliessend (die
besonders lange Zeile) wird der Teil der Benutzereingabe, der
eventuell noch hinter der ausgewerteten Ziffernfolge vorkam,
durch die Alternativtabelle 'q' umcodiert und angehaengt.
Ansonsten (keine numerische Information am Anfang) wird die
Benutzereingabe 'normal', also entsprechend der Alternativtabelle
'q' in der Indexparameterdatei umcodiert.
Aus historischen Gruenden unternimmt naemlich in den meisten
real existierenden Indexparameterdateien die Alternativtabelle
die (bei weitem haeufiger gewuenschte) Umcodierung in
Kleinbuchstaben.
#39Z wird nur als Sprungmarke benutzt. Sie muss evtl. durch
eine im konkreten Fall definierte Kategorie mit 'unmoeglichem'
Folgebuchstaben ersetzt werden.
Anmerkung: so wie hier beschrieben funktioniert es nur fuer
ganze Zahlen echt groesser als Null.
----- End Included Message -----
Mehr Informationen über die Mailingliste Allegro