Datenfelder, Unterfelder und Nutzervariablen einfügen
insert #xyz avanti
Insert #xyz
insert $abc avanti
Inhalt der internen Variablen (iV) in das Feld #xyz kopieren bzw. in die freie Variable $abc.
Der Inhalt der iV wird vorher meistens mit dem Befehl var vorbereitet.
#xyz kann auch eine #u-Variable sein.
Nach Insert wird die Anzeige neu aufgebaut, d.h. der Datensatz erscheint sofort mit dem veränderten Feld auch in der Anzeige und Auswahlliste.
Steht hinter insert nichts, wird statt dessen der Inhalt der iV genommen. Dort muß dann sowohl #xyz bzw. $abc als auch der Text stehen.
Es kann sich auch um mehrere Datenfelder handeln, getrennt durch Zeilenvorschub: var "#nnn text" n "#mmm text"\insert. Jedoch geht das nicht mit #u-Variablen. Für avanti gilt als Trennung ;# (Sicherheitsmaßnahme gegen "code injection").
Ist die iV leer, wird das Feld #xyz bzw. die Variable $abc gelöscht.
Wenn man ins #ux~ schreibt. werden alle Variablen mit x an der zweiten Stelle gelöscht (wie bei dx~ in den Exportparametern).
Wenn man insert #xyzABC schreibt, bleibt ABC vor dem Inhalt der iV stehen. Der Befehl hängt also die iV hinten an ABC an, und das Ganze ist der neue Feldinhalt.
Tip: Nach insert-Befehlen kann man stets mit display\show rec den Neuaufbau der Anzeige auslösen.
Mit if no ... kann man prüfen, ob ein Fehler auftrat, in der iV steht dann die Fehlermeldung. Gilt auch für folgende Varianten:
Hinweis: Die folgenden zwei Varianten gelten erst ab V27.3 auch für #u-Variablen:
insert $a+#xyz avanti
Inhalt der internen Variablen als Teilfeld $a an #xyz anhängen. (Auch wenn in #xyz schon ein Teilfeld $a vorhanden ist).
insert $a-#xyz avanti
Teilfeld $a ersetzen, wenn es vorh. ist, sonst anhängen.
Wenn die interne Variable leer ist: Teilfeld $a löschen (z.B. var ""\ins $a-#nnn)
Sonderfall: insert $$-#xyz Setzt die iV an den Anfang des Kategorietextes, ohne Teifeldzeichen.
Freie Variable: Statt #xyz kann auch der Name $Abc einer freien Variablen stehen (mehr siehe dort).
Hinweis: Bei avanti kann das $ durch ein S ersetzt werden (bei $$ nur das erste), um Probleme mit PHP-Variablen zu vermeiden. Noch einfacher kann man jedoch auch insert ##xyz schreiben, um den Anfangstext durch den iV-Inhalt zu ersetzen, oder
##xyz Text
um den Anfangstext direkt durch Text zu ersetzen. Alles nur bei avanti, eingeführt mit Version 2.2.12.
Sonderversion: Befehl für Lokale Ersetzung
insert _abc_XYZ_ insert ,abc,XYZ, avanti
Im Inhalt der internen Variablen wird abc durch XYZ ersetzt. Wenn abc mehrfach vorkommt, wird jedes Vorkommnis ersetzt.
Nachfolgendes ins #nnn kopiert dann den veränderten Inhalt in eine Kategorie oder eine #u-Variable.
Zu beachten:
o abc darf an jeder Stelle der iV vorkommen.
o Es gilt exakte Schreibung: aBc oder ABC würden z.B. nicht ersetzt.
o Maskierung und Trunkierung gibt es nicht, d.h. $ und ? und andere Sonderzeichen haben keine Sonderwirkung.
o XYZ darf leer sein, dann wird abc beseitigt.
o XYZ darf länger oder kürzer sein als abc.
o Die iV darf mit Leerzeichen beginnen und enden, diese bleiben erhalten.
o abc muß aus mindestens einem Zeichen bestehen - klar, denn sonst weiß das
Programm ja nicht, wo XYZ hin soll.
o Das abschließende _ bzw. Komma darf man vergessen, das mittlere nicht,
denn dann passiert nichts (auch kein Absturz und keine Meldung).
o Steuerzeichen (control codes) können so angegeben werden: z.B. ^M^J für 13 10
sowohl in abc wie in XYZ. D.h. ^A steht für Code 1 usw. , ^T für Code 20 = ¶ [ab V27.6]
Für das Zeichen ^ selbst ist ^~ anzugeben.
Direkte Einfügung in den Datensatz oder Reservespeicher:
Feste Inhalte kann man unmittelbar in eine Kategorie oder #u-Variable einfügen, indem man diese schlicht hinschreibt, in dieser Form (siehe Sonderbefehle ):
#xyzText
Anm.: Mehrfach-Leerzeichen verschwinden, falls nicht per CFG erlaubt. Ist #xyz eine #u-Variable, werden ALLE Leerzeichen am Anfang und Ende des Textes entfernt, jedoch nicht im Innern!
Vor dem insert kann man den Befehl spaces geben, um Mehrfach-Leerz. in der iV auszumerzen.
Beispiel: Ausprobieren
var I
ins _^T_^M^J_
Aresqa
Mit var I wird die Liste der symbolischen Registernamen in die iV geschrieben, aber mit Code 20 (= ¶ = ^T) als Trenner. Für eine Anzeige mit Aresqa braucht man jedoch die Codes 13 10 (= ^M^J). Der ins-Befehl besorgt dies und Aresqa zeigt dann die Liste an.