[Allegro] Trick 47: Längsten Satz finden

Bernhard Eversberg ev at biblio.tu-bs.de
Do Jun 28 08:58:28 CEST 2007


Trick 47 : Längsten Satz finden

Aufgabe: Schnell mal eben in einer Datenbank den längsten Satz finden!

Warum: allegro-Datenbanken haben keine festgelegte Satzlänge, jeder
Satz nimmt nur soviel Platz ein, wie er eben braucht. Grenzenlos lang
können Sätze jedoch nicht sein und auch nicht grenzenlos zahlreich die
Indexeinträge. Es ist nur nicht leicht zu sagen, wo denn die Grenzen
wirklich verlaufen.  --> Grenzen Schranken, Barrieren
    http://www.allegro-c.de/grenzen.htm

Für Testzwecke kann es also interessant sein, mal den längsten
Datensatz herauszufinden.

Das leistet der folgende FLEX:
(den man sich als Datei  lg.flx  kopieren und mit X lg starten kann)

#ulg 0
first #
:loop
keycheck
   Wurde [Esc] gedrückt?
   Wenn ja und Nachfrage mit ja beantwortet, dann -> :exit
if yes jump exit
var jb
if >#ulg ins #ulg;var i;ins #uis
next #
if yes jump loop
:exit
   Ende, jetzt den Satz noch zeigen
var "#" #uis
find
sho rec
disp
   und Meldung:
var "Laengster Satz : " #uis ", Laenge " #ulg
message

Er findet in der gesamten Datenbank den längsten Satz und zeigt ihn.
Wenn man  first #  und  next #  ersetzt durch  first  bzw.  next,
wird nur die aktuelle Egebnismenge durchgeforstet.
Der Ablauf kann mit Esc unterbrochen werden (Befehl keycheck), dann
erhält man den längsten bis dahin gefundenen Satz.

Der Trick ist nur die interne Sondervariable jb, mit der man die Länge
des jeweils aktuellen Satzes erhält. Die Zeile

if >#ulg ins #ulg;var i;ins #uis

vergleicht die so erhaltene Länge mit dem Wert in der Variablen
#ulg. Ist #ulg kleiner, wird der iV-Wert, also der nun größere,
in #ulg kopiert und die interne Satznummer (denn die wird ja am
Ende gebraucht) wird in #uis aufbewahrt. Am Ende hat man die
gewünschten Werte in diesen beiden Variablen.

Wo ist die Liste der internen Sondervariablen?
Hier:
http://www.allegro-c.de/flex/seite09_3.html#_Kap09_03
oder auch in  xcstring.rtf



Mehr Informationen über die Mailingliste Allegro