Register
Indexeinträge ohne Parameter einspeisen oder löschen acon [ab V34.1]
ixadd nummer |iabc i = 1 2 ... 9 : ;
ixadd nummer ~ziabc z = Kennbuchstabe eines MultiX-Index
ixadd nummer SYMabc
Die Zeichenfolge abc in das Register i einordnen, und zwar mit der Satznummer nummer (d.h. so, als ob der Satz mit dieser internen Nummer einen solchen Registereintrag hätte).
Die nummer darf fehlen, dann gilt die des aktuellen Satzes.
Die nummer 0 wird in 2000000000 gewandelt, eine real nicht mögliche Nummer.
Achtung: ein Leerzeichen muß nur vor und hinter die nummer, nicht vor abc.
Das gewünschte Register kann somit über seine Ziffer i, aber auch über einen symbolischen Namen (wie in den Indexparametern definiert) angesprochen werden. Hat das symbolische Register ein Präfix, wird es automatisch hinzugefügt, d.h. abc darf dann das Präfix nicht enthalten, es würde ja sonst verdoppelt.
Hinweis: Eine Umcodierung der Eintragung abc erfolgt nicht, sie muß also im FLEX-Befehl so stehen, wie sie ins Register hinein soll. Entsprechendes gilt für den umgekehrten Befehl:
ixdel nummer |iabc
...
Mit del statt add macht man die umgekehrte Aktion, d.h. man entfernt die Eintragung aus dem Register.
Auch hier sind alle drei Formen möglich.
Übrigens: Ab Berechtigung 5 kann man Indexeinträge mit der Taste [Entf] löschen.
Mit if no ... kann man in beiden Fällen prüfen, ob es nicht geklappt hat. Das trifft auch zu, wenn der betr. Schlüssel mit der genannten Satznummer schon drin (bei ixadd) bzw. nicht drin ist (bei ixdel).
close index Sehr wichtig! Diesen Befehl unbedingt geben, wenn man mehrere ixadd und/oder ixdel gemacht hat. Zu empfehlen ist auch, vorher
set tbl loc und hinterher set tbl fre
zu geben , um zu verhindern, daß jemand in der Zeit einen Satz speichert, denn dabei würden ja ebenfalls Indexmanipulationen durchgeführt, da könnte etwas durcheinandergehen...
Wenn hinter ixadd nichts steht, wird der Inhalt der iV genommen, d.h. man kann schreiben:
var "|4" #29 oder var "TAF" #29
xcode iq
ixadd
um den Inhalt von #29 in das Register 4 (symbolisch TAF) einzufügen, vorher aber mit der q-Tabelle umzucodieren.
Wenn man die nummer wegläßt, wird die Satznummer des gerade aktuellen Satzes genommen. Wozu sollte das gut sein? Nicht immer ist es wichtig, die Einträge einem bestimmten Satz zuzuordnen! Z.B. dann nicht, wenn die Einträge eine Hilfsfunktion haben sollen, wie etwa Ersetzungsschlüssel oder Verweisungen. Das bedeutet, man kann damit solche Schlüssel auch ohne besondere Datensätze einschleusen.
ABER: Beim Erneuern des Index sind solche Schlüssel anschließend verschwunden - sie ergeben sich ja allesamt nicht aus irgendwelchen Datensätzen und können deshalb nicht aus diesen heraus neu entstehen. Wenn man auf dauerhafte Speicherung Wert legt, kann man ab V34.1 mit den sog. Persistenten Variablen arbeiten, die in zusätzlichen Indexdateien aufbewahrt werden.
Beispiel 1:
Ein mitgelieferter FLEX namens ixa.flx ermöglicht das manuelle Einspeisen in jedes der physischen und symbolischen Register; die eingegebenen Einträge werden in eine Datei ixa.ixa zusätzlich gespeichert, beim Neuaufbau des Index wird diese ¦Datei dann zum Abschluß der Aktion erneut eingespeist.
Tip: Will man bestimmte, nicht aus Datensätzen entstehende Sonderschlüssel dauerhaft im Index haben, kann man sie auch als u.U. sehr lange Liste von ixadd-Befehle in einen FLEX schreiben, den man gleich nach einer Index-Erneuerung ablaufen läßt.
Aber ACHTUNG: Ein FLEX kann maximal 256.000 Byte groß sein. Deshalb ist es besser, die Sonderschlüssel aus der Datei zeilenweise einzulesen und dann mit ixadd einzuspeisen. Ein solcher FLEX kann so aussehen, wenn die Datei nur die Datenzeilen ohne das Wort ixadd enthält:
open dateiname
if no end
:loop
get
if cancel jump ende
ixadd
jump loop
:ende
Beispiel 2:
Der FLEX umindex.flx kann die Indexierung einer Ergebnismenge auf eine andere Index-Parameterdatei umstellen. Das ist sinnvoll, wenn man die Indexparameter geändert hat, die Datenbank aber sehr groß ist und die Änderungen nur eine bestimmte Ergebnismenge betreffen. Das geht dann viel schneller als eine Neu-Indexierung der Gesamtbank.