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