Vb.84: NEU: c"#uab"
Bernhard Eversberg
EV at buch.biblio.etc.tu-bs.de
Mi Dez 18 12:59:40 CET 1996
Verlautbarung 84 der Entwicklungsabteilung 961218
------------------------------------------
Exportbefehl fuer Vergleich mit Variablen
-----------------------------------------
Beim Export wird immer wieder mal vermisst, einen Kategorieinhalt mit
einer Anwendervariablen vergleichen zu koennen. Bisher geht das nur mit
Zahlen, aber nicht mit Zeichenketten. Zwar kann man schreiben
#123 +X c"abc" e0
um einen Sprung nach #-X zu bewirken, wenn "abc" in #123 vorkommt.
Was aber, wenn der Sprung von einer Variablen abhaengen soll, z.B.
von #ucd ?
Dieser schon vor laengeren Zeiten erstmals geaeusserte Wunsch hatte
jetzt endlich die Spitze der Prioritaetenliste erreicht und seine
Erfuellung wurde in Angriff genommen.
Aus einem erfuellten Wunsch ergeben sich nach aller Erfahrung sofort
neue. Diesesmal wurde versucht, einige schon gleich zu antizipieren:
Ab morgen kann man schreiben:
#123 +X c"#ucd" e0
und es erfolgt ein Sprung nach #-X, wenn der gesamte Inhalt von #ucd in der
Kategorie #123 irgendwo als Zeichenkette vorkommt.
"Was aber", erhebt sich sogleich eine nachbohrende Frage, "wenn man
feststellen will, ob der Inhalt EXAKT gleich ist, also der Inhalt von #ucd
nicht VORKOMMT, sondern mit dem von #123 UEBEREINSTIMMT?"
Nach einem Moment des Reflektierens weiss jeder eingefleischte
"allegrologe" die Loesung: man belegt #ucd nicht exakt mit dem zu
pruefenden Inhalt, sondern setzt noch etwas davor und dahinter,
was an diesen Stellen garantiert nicht vorkommen kann, z.B. "QQ", .
Sodann braucht man nur noch zu schreiben:
#123 +X p"QQ" P"QQ" c"#ucd" e0
"Und", kommt die naechste Frage, "wenn nicht genau die Gross- oder
Kleinschreibung bekannt ist?"
Dann schreibt man
#123 +X c"~#ucd" e0
sorgt aber dafuer, dass der Inhalt von #ucd aus Kleinbuchstaben besteht.
Dann wird #123 unter Ignorierung von gross/klein geprueft.
"Gut und schoen", geht es weiter, "wenn ich aber in #ucd mehrere Zeichen
zu stehen habe und will springen, wenn IRGENDEINS davon in #123 vorkommt?"
Dann geht das so (die Eingefleischten haben's schon erraten):
Der Inhalt von #ucd muss mit '[' beginnen und mit ']' enden.
Wenn man also testen will, ob einer der Buchstaben "pqrst" vorkommt,
wuerde man setzen:
#dt p"[pqrst]!" e"!" dcd acd
um den Inhalt "[pqrst]" in die Variable #ucd zu bringen.
"Und wenn", es gibt noch immer keine Ruhe, "beides zusammentrifft?"
Das klappt auch, also mit c"~#ucd" .
"Und geht das auch", ist das Nachbohren noch nicht zu Ende, "wenn man
die Variable von aussen belegt, also z.B. mit Option -Ucdpqrst ?
Ja natuerlich. Wie und wo die Variable belegt wird, und womit, das
spielt keine Rolle.
"Hm, es koennte aber auch sein", ist man nun endlich fast zufrieden, "dass
ich nicht exakte Gleichheit feststellen will, sondern ob die Zeichenkette
in #123 alphabetisch GROESSER oder KLEINER ist als der Inhalt von #ucd!"
Ja freilich, das koennte sein. Wie sollte denn dann wohl der Befehl
aussehen?
"Na ganz einfach:
#123 +X ">abcd" e0
wenn der Inhalt von #123 oberhalb von "abcd" liegen soll."
Richtig, so geht's!
"Letzte Frage: kann man das auch wieder mit einer Variablen machen?"
Ja, auch das: man setze
#dt p"abcd" e5 dcd acd #ucd mit "abcd" belegen
und dann
#123 +X ">#ucd" e0
Jetzt warten wir nur noch auf die allerletzte Frage - von IHNEN!
Dieses "Feature" wird in den naechsten Tagen in alle Programme incl.
"avanti"-Server eingebaut.
MfG B.E.
Mehr Informationen über die Mailingliste Allegro