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:

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.

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.