FLEXikon - Kurzdokumentation 
Strg+f = Finden, Strg+g = Weitersuchen   
ACHTUNG: Dies ist nur eine unvollständige Kurzfassung! 

Umfassende Information inkl. acon bietet die 
`Voll-Dokumentation`
  
`So erstellt man FLEXe`             `Beispiele`  
  
Diese Kurzfassung ist für a99  gedacht und behandelt nicht alle Besonderheiten des acon -Servers. 
Mit einem  *  sind aber diejenigen Befehle markiert, die auch für acon   gelten. 
Wichtig zu wissen, besonders wenn man fremde FLEXe lesen will: Fast jeden Befehl kann man bis auf die ersten drei Buchstaben kürzen. Diese Minimalformen der Befehle sind in der Liste rot geschrieben. 

Zuerst einige Sonderbefehle  
  
#xyzText  *  
Die Kategorie #xyzText wird in den aktuellen Satz eingefügt. Wenn  Text  leer ist, wird #xyz gelöscht.  
#xyz kann auch eine Nutzervariable  (#u-Variable)  sein.   
Wenn der Text auf kompliziertere Weise zusammengesetzt werden soll, dann zuerst mit Hilfe des Befehls variable ... den Text in der internen Variablen erstellen, danach mit  insert #xyz  die iV abspeichern.  
  
$a+#xyzText  *  (acon: auch S statt $ möglich)
Das Teilfeld ²a mit Inhalt  Text  wird an die Kategorie #xyz angehängt.  Wenn #xyz noch nicht da ist, entsteht sie. Statt '$' kann das Teilfeld-Dreieck verwendet werden. z.B.  
²u+#90 Meier      ²uMeier an #90 anhängen  
  
$a-#xyzText  *    (acon: auch S statt $ möglich)
Wenn Teilfeld ²a existiert, wird es ersetzt, sonst wird ²aText an #xyz angehängt.  
Wenn  Text  leer ist, wird das Teilfeld ²a aus  #xyz  beseitigt.  
  
*#nnn_ABC_XYZ_   *  Ersetze in Kategorie  #nnn  die Zeichenfolge  ABC  durch  XYZ  
				Hier darf #nnn keine #u-Variable sein!  
  
_ABC_XYZ_    *    	Ersetze die Zeichenfolge  ABC  im gesamten Satz durch  XYZ  
  
? |i abc  
Register i aufblättern an der Stelle abc,  z.B.  ? |1 goethe  
Der FLEX wird dann erst fortgesetzt, wenn man den Index verläßt. Daher kann man mehrere solche Befehle aufeinander folgen lassen und andere Befehle dazwischenschalten.  
Wurde mit [Enter] der Index verlassen, steht danach in der iV der gewählte Registereintrag, z.B.  |3 natur, wenn im Register 3 die Zeile "natur" ausgewählt wurde.  
  
:label  *  
Sprungmarke. Mit  jump label  wird hierher gesprungen. Wichtig bei if-Befehlen.  
Zugleich kann jede Sprungmarke der Anfangspunkt eines Unterprogramms sein. Man startet es mit perform label , und es endet, sobald irgendwo ein Befehl return  erreicht wird, falls nicht mit einem end der gesamte FLEX abgebrochen wird.  
  
Rechenbefehle   *  für die interne Zahlenvariable iZ.  bzw. den Zähler iz.   
Es wird immer die interne Zahl mit der Zahl N bzw. (wenn N fehlt) mit dem Inhalt der iV verrechnet, wobei diese zuerst in eine Zahl verwandelt wird.  
Wenn in der iV vor der Zahl noch andere Zeichen stehen, macht das nichts aus, es wird die reine Zahl daraus extrahiert!  
Mit  `var Z` bzw. var z  kann man anschließend die interne Zahl bzw. den Zähler in die `iV` kopieren.  
Und so sehen die Befehle aus:  
  
Z = N		N (bzw. wenn N fehlt, die iV ) in eine Zahl umwandeln (andere Zeichen fallen dabei weg) und in iZ speichern  
Z + N		N bzw. iV in Zahl umwandeln und zu iZ addieren, bzw.     
Z - N		iZ-N bzw. iZ - iV bilden, bzw.   
Z / N		iZ/N bzw. iZ / iV  ausrechnen, bzw.   
Z * N		iZ*N bzw. iZ * iV , also das Produkt aus beiden  
Für den internen Zähler ist z statt Z zu setzen.  
  
Alphabetische Liste der Befehle  
  
Von den nachfolgenden Befehlen genügen jeweils die ersten 3 Buchstaben, also z.B. var statt variable,  exp statt export,  aber auch  expo etc. würde funktionieren.  
(Bei acon waren früher die Befehlswörter vollständig anzugeben, das wurde jedoch umgestellt ). Das gilt nicht für  erase  und  include.
  
Nochmal der Hinweis: die genauen Befehlsbeschreibungen erhält man über das `alphabetische Register`. 
  
activate  
 	(Nur in einem ExFLEX sinnvoll) Das Programm rückt in den Vordergrund.  
  
activate i  
	Fokus in das Feld i setzen. Es gibt 4 Felder:  
	1 : Auswahlfeld  
	2 : Schreibfeld  
	3 : Befehlszeile  
	4 : Anzeigefeld  
	Die aktuelle Fokusziffer erhält man mit dem Befehl  var Q   
  
addform dateiname  
Die Datei dateiname muß eine korrekte Formulardatei sein. Sie wird zusätzlich an die bereits geladene Formulardatei hinten angehängt.  Mit  if no befehl   kann man checken, ob es gelungen ist, d.h. ob die Datei existierte.  
  
ansi  *   Die interne Variable ist ASCII-Code, mache daraus ANSI (Windows)  
ascii * Umgekehrt: die iV ist ANSI-Code, mache daraus ASCII (DOS)  
  
aresqa  name 
Aresqa  name 
Die Datei name öffnen und in einem aresqa-Listenfenster anzeigen. A statt a: Keine Editierfunktionen.
Entstanden ist diese Funktion im Zusammenhang mit den `aresqa`-Tabellendateien. Anwendbar ist sie aber auf so gut wie alle Textdateien, egal ob im DOS- oder Windows-Code. 

ask |iprompt=Vorgabe  *
ask +|iprompt=Vorgabe  
Aufforderung zu einer Eingabe. Die eingegebene Zeichenfolge wird in der iV gespeichert.  
Wenn ein  +  gesetzt ist, wird die Eingabe des Nutzers an die iV hinten angehängt.  
Für die Eingabe erscheint ein kleines Dialogfenster mit einer Eingabezeile.  
i   		= Nummer des Index, der aufgeblättert wird, wenn man [Index] drückt  
prompt 	= Aufforderungstext  
Wenn man |i wegläßt, kommt ein rein zufälliger Indexabschnitt  
Hinter |i kann ein Präfix folgen, abgetrennt mit | vom eigentlichen prompt, wenn eine bestimmte Abteilung im Index aufgeblättert werden soll.   
Beispiel:   ask +|1D |Hochschulort=#819    
Leereingabe führt zum Abbruch der Befehlskette.  
Der Teil "=Vorgabe" kann entfallen; der Text  Vorgabe  erscheint sonst im Eingabefeld.  
Vorgabe  kann auch eine Kategorie oder eine #u-Variable sein: z.B.  
ask |1Verf.?=#40    legt den Inhalt von #40 als Vorgabe vor.   
Die Eingabe geht aber nicht direkt zurück in die Kategorie, sondern in die iV ; man muß sie mit  insert #40  zurückübertragen, falls gewünscht.  
Statt der gesamten Angabe  |iprompt=Vorgabe kann auch eine Kategorienummer oder #u-Variable stehen, dann muß deren Inhalt diesem Text entsprechen. So können die Fragetexte und Vorgaben datenspezifisch individualisiert werden. Steht hinter ask gar nichts, wird der Inhalt der iV genommen.  
Mit nachfolgendem if "" ... kann man abchecken, ob etwas eingegeben wurde!   
Wenn die Aufforderung mit [Esc] abgebrochen wurde, kann dies auch mit   
if cancel ...   
festgestellt werden. Die iV ist dann ebenfalls leer.  
Sonderfall:  
   
ask @aufforderung  
Mit @ kommt ein Eingabedialog für Name und Passwort. Das Passwort ist bei der Eingabe nicht lesbar. In der iV hat man anschließend Name und Passwort, getrennt durch '=' und kann damit beliebige Dinge anstellen.  
  
button i / j  
Indexfenster 1 bzw. 2 öffnen /   (In beiden Fällen endet dann der FLEX)  
  
call Programmaufruf  (a99 wartet auf Beendigung)  
cAll Programmaufruf  (a99 wartet auf Beendigung, Fenster des Programms wird nicht sichtbar)  
Call Programmaufruf  (a99 wartet nicht auf Beendigung)  
CAll Programmaufruf  (a99 wartet nicht auf Beendigung, Fenster des Programms wird nicht sichtbar)  
Hinter "call " kann man einen kompletten Startbefehl für ein externes Programm hinschreiben, wie beim Flipbefehl ~.  
Es kann sich auch um einen DOS-Befehl handeln, z.B.     call x d-wrtf.apr     
oder  call del e.adt  
Empfehlung: Soll ein DOS-Programm aufgerufen werden, dann "command.com /c " vor den Befehl setzen, sonst schließt sich das DOS-Fenster nicht automatisch.  
Wenn das externe Prog. eine Datei E.ADT produziert, kann diese anschließend mit "read" (s.u.) eingelesen werden: sie wird dann in den aktuellen Satz eingemischt. So kann man von außen Daten einschleusen.  
Wenn Programmaufruf fehlt, wird der Inhalt der iV genommen.  
Bei call gilt: Die Abarbeitung der Befehlskette geht erst weiter, wenn man das externe Programm verläßt.  
Bei Call, also mit großem C, ist das gestartete Programm anschließend völlig selbständig und a99/alcarta arbeitet weiter, als wäre nichts passiert.  
Bei cAll/CAll gilt: Es erscheint kein Fenster für das externe Programm, dieses läuft unsichtbar ab (bis auf Symbol in der Task-Leiste). Dies sollte man nur machen, wenn das externe Programm nicht anhalten und eine Nutzerreaktion abwarten wird, sondern automatisch bis zum Ende durchläuft.  

Befehle für den Umgang mit der Zwischenablage:  
  
ccopy  
	Der Inhalt der iV wird in die Zwischenablage kopiert.   
cpaste  
	Der Inhalt der Zwischenablage (Clipboard) wird in die iV kopiert.   
  
ccopy d  
	Der gesamte Inhalt des Anzeigefeldes wird in die Zwischenablage kopiert.   
cpaste d  
cpaste d+  
cpaste d0           
	Der Inhalt der Zwischenablage wird in das Anzeigefeld eingefügt an der momentanen Cursorposition.  
Wenn + gesetzt ist, wird der Inhalt am Ende angefügt. Bei 0 wird er am Anfang eingefügt.  
Soll der alte Inhalt überschrieben werden, setzt man vorher  var ""\show IV .  
  
ccopy w  
	Der Inhalt des Schreibfeldes wird in die Zwischenablage kopiert.   
cpaste w  
	Der Inhalt der Zwischenablage wird in das Schreibfeld kopiert.  
  
check   *
check f  
Der iV-Inhalt wird geprüft, ob er mit einer gültigen Kategorienummer laut CFG beginnt. 
Im Fehlerfall steht eine Meldung in der iV, die mit  "  "  beginnt, d.h. Prüfung mit  if "  " ...   
Das  f  bewirkt eine zusätzliche Prüfung der Unterfelder, ob sie denn für das betr. Feld zulässig sind.
  
choose Suchbefehl  
Es wird die Ergebnismenge gebildet und angezeigt. Anders als bei Find wird der FLEX nicht beendet, sondern nach Verlassen der Kurzanzeige fortgesetzt.  
Die Kurzzeile des ausgewählten Satzes wird in die interne Variable kopiert - mehr passiert nicht. Mit dem Befehl load aber kann man gleich danach den ausgewählten Satz laden lassen, wenn damit etwas passieren soll.  Eine Anzeige der Sätze erfolgt, anders als bei Find, nicht. 
Wird die Erg.menge mit [Esc] verlassen, ist die iV leer. Außerdem kann man den Abbruch auch mit  if cancel ...  checken.  
Fehlt der Suchbefehl, wird dafür der Inhalt der iV genommen.  
Steht * statt Suchbefehl, wird ddie aktuelle Erg.Menge genommen.  
  
close  *  
	Die vorher im selben FLEX (!)  mit  open  zum Lesen geöffnete Datei wird geschlossen. Am Ende des FLEX passiert das automatisch.  
  
close res  
	Wenn gerade eine Ergebnismenge besteht, wird diese geschlossen und gelöscht.   
	  
close view    (siehe auch view)  
	Die momentan offene ViewListe wird geschlossen. Mit  if no ...  kann man danach checken, ob sie schon geschlossen war.  
  
close x    (siehe auch export)  
	Die momentan offene Ausgabedatei wird geschlossen. Mit  if no ...  kann man danach checken, ob sie schon geschlossen war.  
  
copy  (*)  
Der aktuelle Datensatz, so wie er gerade ist, wird als neue Kopie behandelt. Nachfolgend gibt man z.B.  #xyz-  oder insert-Befehle und/oder  Ersetzungen,  dann evtl.  put  zum Speichern des neuen Satzes.  
  
crypt  *
Der Inhalt der iV wird mit einem geheimen Algorithmus verschlüsselt. Anschließend kann man die iV beliebig weiter verwenden. Die Verschlüsselung ist nicht reversibel, läßt sich also nur für Passwortzwecke verwenden.  
  
date b  (*)
(b=Breite des Datums, 8-17 Byte; 8 wäre nur das Datum, 17 ist Datum/vollständige Uhrzeit, Form JJJJMMDD/hh:mm:ss)   
2  0  0  0  1  1  1  7  /   0  9  :  0  8  :  0  7  
1 2 3 4 5 6 7 8 9 10  12 14  16  
                    11 13  15  17  
Datum (und Uhrzeit) werden in die interne Variable kopiert.  
Diese speichert man mit  insert ...   in eine Kategorie, ein Teilfeld oder eine #uxy  
	Die so erzeugte Art des Datums hat den großen Vorteil, maschinell sortierbar zu sein.  
  
Tip: Das Tagesdatum in der (nicht maschinell sortierbaren) Form   Mon, 4. Dec 2000  kann man sich so besorgen:  
  
var #dt  
  
dann steht es in der iV.  
  
Sonderbefehle für Datumsrechnungen:  
  
day +x   (*)
Nummer des heutigen Tages +x innerhalb des laufenden Jahres.  
  
Day +x  
Datum des heutigen Tages +x , und zwar in der Form   
   JJJJMMTT/hh:mm:ss = Tag, TT. Monat Jahr  
z.B. 20010423/10:18:56 = Mon, 23. Apr 2001  
  
	Der Wert x darf in beiden Fällen auch negativ sein, dann wird zurückgerechnet.   
	Wenn +x nicht angegeben ist, wird der Inhalt der iV genommen.  
  
delete  ABC  
Datei  ABC  löschen. Das ist nützlich z.B. für die Datei E.ADT, wenn man ein Fremddaten-Kopierverfahren organisieren will.   
Mit if no befehl   kann man checken, ob es gelungen ist.   
  
dir namensmuster   *
	Alle Namen, die mit dem Muster übereinstimmen, werden als Liste in der iV gesammelt, zwischen den Namen steht der Code 20 (^T), bei acon 2 Spatien.   
	Wenn  namensmuster  fehlt, wird der iV-Inhalt als Namensmuster genommen. 

display "xABC"  
display +"xABC"  
deposit "xABC"  
Abschnitt #-x in den Anzeigeparametern ausführen. Die Zeichenfolge ABC ist dann in der Variablen #u1 enthalten.  An der betr. Sprungmarke können z.B. Manipulationen am Datensatz  stattfinden. Die gesamte Mächtigkeit der Exportsprache kann somit in die Tätigkeit eines FLEX einbezogen werden.  
Ist  '+'  gesetzt, wird das Ergebnis an die vorhandene Anzeige angehängt.  
Fehlt die Angabe "xABC" , werden die Anzeigeparameter ganz normal abgearbeitet.  
Der Befehl  deposit  bewirkt keine Anzeige, d.h. die Verarbeitung wird nur intern ausgeführt. Das ist nützlich, wenn man komplizierte Manipulationen machen will, die mit der FLEX-Sprache allein nicht gehen. Man verwendet dann #u1, um in den Anzeigeparametern zu entscheiden, was zu tun ist. Das Ergebnis der Verarbeitung ist dann in der Internen Variablen deponiert - daher der Name "deposit".   Nebeneffekt: mit den zwei Befehlen  
deposit  
write  
kann man die Anzeigeform in die Ausgabedatei überführen! Das wird man selten machen. Im Normalfall wird man einen bestimmten Abschnitt ausführen lassen, um z.B. #u-Variablen zu besetzen oder eine Zusammensetzung aus mehreren Kategorien oder -bestandteilen in die interne Variable zu bringen. Man gibt also normalerweise    
deposit yTEXT.  Damit wird der Abschnitt  #-y  ausgeführt, und es liegt dort  #u1 TEXT  vor.  
Wenn eine Ausgabe entsteht, hat man sie anschließend in der iV und kann sie mit "write" ausgeben lassen oder mit "insert" in eine Kategorie kopieren, oder aber ignorieren, wenn es nur auf die internen Manipulationen ankommt.  
  
display p name  
Lade andere Anzeigeparameter, dann sofort Anzeige d. aktuellen Satzes.  
z.B.  display p d-alfa   Lade D-ALFA.APR  
Die Parameter bleiben aktiv bis Sitzungsende, bis ein erneuter Befehl kommt.  
  
display reserve kurz:  dis r  
Inhalt des Hintergrundspeichers im Anzeigefeld ausgeben  
  
display list kurz:  dis l  
Kurzliste der aktuellen Erg.Menge im Anzeigefeld ausgeben (wie sho List )  
  
display ergeb oder display sets   kurz:  dis e oder  dis s  
Liste der Ergebnismengen (die man sonst mit Alt+e sieht) im Anzeigefeld auswerfen  
 
display fnum  kurz:  dis fnum  
Anzeige zur Zeile num  scrollen. Genutzt wird das z.B. in ausl.flx und rueck.flx (ALFA-Ausleihe). 
Wenn num  fehlt, wird zu der Zeile des zuletzt benutzten Flips gescrollt. 
  
dos befehl  
Dos befehl  
	Damit kann jeder Befehl in einem DOS-Fenster ausgeführt werden. Intern wird   
	%%COMSPEC%% /c  
	davor gesetzt. Beim Befehl `call`muß man das selber machen!  
  	dos 	startet ein minimiertes Fenster und wartet, bis der Vorgang beendet ist (entspr. cAll )  
	Dos 	startet ein sichtbares Fenster, das dann unabhängig ist (entspr. Call )  
  
echo off/on Nur *    
	off unterdrückt sämtliche Meldungen an den Client, die im Verlauf des Auftrags auftreten können, incl. der Fehlermeldungen. 
Evt. auftretende Fehler müssen mit Hilfe der Bedingungsprüfung if error aufgefangen werden. Eine Meldung kann dann im Fehlerfall mit dem write-Befehl selbst generiert werden. 
Der Befehl echo off wird in komplexen Aufträgen eingesetzt, um bei der Weiterbearbeitung von Teilergebnissen nicht zuvor die Meldungen des acon- Servers herausfiltern zu müssen. 
  
end  *    
Der FLEX wird beendet. Sinnvoll oft nach yesno und noyes , z.B.  
if no end   wenn Nein geantwortet wurde, dann Ende  
  
erase  *  
Der aktuelle Satz wird gelöscht. Dazu braucht nicht in der .INI-Datei  access=3  gesetzt zu sein, d.h. man kann das Löschen in erwünschten Fällen per Parametrierung ermöglichen. Sogar unter alcarta! Eine Gefahr besteht dort nicht, weil es kein Schreibfeld zum Eingeben eigener FLEXe gibt.   
Ist der Satz ein Offline-Satz, wird er ungültig gemacht. War er gerade ganz neu, verschwindet er aus der Anzeige und aus dem Offline-Speicher.  
Dieser Befehl muß aus Sicherheitsgründen in voller Länge eingegeben werden, anders als alle anderen Befehle.  
  
erase off   
Der Offline-Speicher von a99 wird geleert. 
Anschließend kann man mit  read file eine neue Datei vom Typ .ALG oder .ADT in den Offline-Speicher laden.  
  
eval rechenbefehl       *   
Z= rechenbefehl       *   
Der  rechenbefehl  wird als arithmetischer Ausdruck interpretiert und das Ergebnis in die `interne Variable` kopiert bzw. im zweiten Fall in die interne Zahl Z. 
Das Ergebnis ist immer eine Zahl mit bis zu 9 Nachkommastellen, letzte Stelle gerundet. Nullen am Ende werden entfernt; wenn danach nur ein Punkt am Ende bleibt (weil die Zahl eine ganze ist), wird dieser auch entfernt. 
Wenn rechenbefehl  fehlt, wird der Inhalt der iV genommen. Man kann also zuerst mittels  var  in der  iV einen beliebigen Ausdruck zusammensetzen und diesen dann auswerten lassen. 

Ein rechenbefehl ist eine Folge von Elementen mit Operatoren dazwischen: 

       elem op elem op ... elem

Jedes  op  ist einer der Operatoren   +  -  *  /  ^ 
Ein elem kann sein: 
-- 	eine Zahl  (sehr große und sehr kleine Zahlen kann man in Exponentialdarstellung schreiben: z.B. 1E15 bzw. 1E-20. 
-- 	eine Feldangabe #nnn oder #nnn$x, wobei #nnn auch eine #u-Variable sein kann. Es ist nicht notwendig, daß ein solches Feld nur aus der Zahl besteht, sondern das Programm wird sich die Zahl selbst heraussuchen, wenn z.B. Buchstaben davor oder Klammern darum herum stehen. (Die Manipulationsbefehle, die es bei var gibt, sind hier nicht anwendbar, siehe aber Beispiel 3.) 
-- 	Eine `freie Variable` $Abc, auch hier bei Bedarf mit Unterfeld-Code:  $Abc$d 
-- 	einer der `internen Zahlenwerte` z oder Z. [Bis V27.1 waren dies die einzigen Rechenvariablen] 

exec flex  
Ein anderer FLEX wird gestartet, der aktuelle FLEX damit beendet. flex  muß mit x oder X beginnen; wenn X, dann muß der Name einer FLEX-Datei folgen.   
  
Export  
export  *  Früher xport und download (beide sind synonym)
Aktuellen Satz exportieren (wie über Menü Export).  
Mit E erfolgt der Export über PrintParameter statt ExportParameter, aber in dieselbe Datei.  
Tip: Soll nur ein bestimmter Abschnitt in den Exportparametern ausgeführt  werden: vorher eine Variable besetzen, z.B. #uFL (mit Befehl  var xxx\ins #uFL), und in den Parametern am Anfang einen Sprung einbauen:   
	#uFL +A e0  
Die Parameter und die Ausgabedatei kann man mit dem Befehl export p/f... ändern, s.u..  
  
export -x   * 
	Abschnitt  #-x  der Exportparameter ausführen, z.B. während eines Update zwecks "globaler Manipulation".
	Ergebnis wird hinten an den iV-Inhalt angehängt!!

export brief   Die Kurzliste der Erg.Menge wird in die Exportdatei geschrieben. Wenn gerade eine ViewListe aktiv ist (d.h. zuletzt angezeigt wurde oder mit view ... geöffnet wurde), dann wird diese Liste geschrieben. Sollen dagegen die Datensätze als solche exportiert werden, muß export view benutzt werden.  
  
export database        Die gesamte Datenbank wird exportiert.  
  
export fam  *   Der aktuelle Satz wird zusammen mit allen per Verknüpfung dazugehörigen Sätzen (wenn es solche gibt) in die Exportdatei geschrieben. Die Reihenfolge ergibt sich durch die Ordnung der Primärschlüssel (s.a. Befehl  family / Family )  
  
export offline  
Wenn eine Offline-Datei existiert, wird diese als Ganzes exportiert (wie auf dem Menü "Export").  
  
Export set  
export set  *  
Aktuelle Erg.menge exportieren (wie über Menü Export). Mit  E werden, wie oben, die PrintParameter benutzt.  
  
export view       [zur View-Technik siehe "allegro news" 58]  
Die momentan geöffnete `ViewListe` wird zum Exportieren benutzt. Die Datensätze werden in der Reihenfolge der ViewListe ausgegeben. In den Exportparametern kann man die Variable #uzV nutzen, die jeweils die Zeile aus der Liste enthält. Auch die Zwischenzeilen (Überschriften, Summen) werden exportiert. 
  
export Ref      acon:  set ai
Hiermit werden die V14-Ersetzungen durchgeführt, d.h. Kürzel und Stammsatz-IdNummern durch Klartexte ersetzt. 
  
export VS  *  
Hiermit kann man gezielt die  Verschlüsselungs-Sequenzen  im gesamten Datensatz ersetzen lassen. Das sind Zeichenfolgen z.B. von der Form &#2345; , die durch Klartext ersetzt werden sollen. Voraussetzungen: im Ersetzungsregister sind die Sequenzen korrekt indexiert in den Indexparametern ist das Zeichen & auf den Wert 9 gesetzt.  Siehe `Verlautbarung 154`. 
Achtung: Den Datensatz in einem solchen FLEX nicht anschließend speichern, denn die Sequenzen sind dann als solche nicht mehr da. Diesen Befehl also nur einsetzen, wenn es nur um Export von Daten geht. 
  
export a / export A / export ai / export Ai  *   
Vertauscht die diakritischen Zeichen (Akzente) mit dem nachfolgenden bzw. vorangehenden Buchstaben. Das ist notwendig, wenn man intern ASCII oder ANSI hat, aber Unicode erzeugen will. Die Codes der Diakritika müssen in einer Variablen pa in den Exportparametern stehen, normalerweise (OstWest-Code) sieht der Befehl so aus: 
pa=181 182 183 184 189 190 198 199 207 208 209 210 211 212 219 222 223 232 

export p name 
export t name  * 
Parameterdatei  name.cPR bzw. name.cPT für den Export laden. Im zweiten Fall wird die Tabellendatei zur schon vorhandenen Export-Parameterdatei hinzugeladen. Das entspricht dem Befehl tname in der Exportsprache. 
Wenn name fehlt, wird der Inhalt der iV genommen. Steht ? statt name, wird eine Dateiauswahl angeboten. 
Mit  if no ...  kann man auf den Fehlerfall reagieren (Param. konnten nicht geladen werden). 
 
export f filename  * 
export f +filename  * 
	Gleichwertig: open x filename 
Nachfolgende Exporte (per exp oder wri) sollen in die Datei  filename  gehen. 
Das '+' bewirkt, daß an die Datei angehängt wird, sonst wird sie überschrieben. 
Fehlt der filename, wird der Inhalt der iV als Dateiname genommen. 
 
export wX  *  
Steuert die Art der Ausführung der nachfolgenden  write -Befehle.    
Dient nur zur Setzung einer Sprungmarke, ersetzt nicht den write-Befehl selbst!!   
Wenn es in den aktuellen Exportparametern eine Sprungmarke #-X gibt, wird der Befehl write nicht direkt ausgeführt, sondern die Zeichenfolge, die write erzeugt hat, wird an den Export übergeben, und zwar an die Sprungmarke #-X der Parameter. Dort ist die Zeichenfolge unter dem Variablennamen #u1 verfügbar. Das Ergebnis des Exports wird in die Exportdatei geschrieben.    
  
extern   (wie Alt+t)  
Der aktuelle Satz wird in eine Datei namens EXX.XXX ausgegeben und der externe Editor aufgerufen.  
	Nach Rückkehr aus dem externen Editor fragt das Programm, ob man die Datei wieder einlesen wolle.  
Der Name der Datei kann mit dem Befehl ExEdFile=... in der `INI-Datei` geändert werden.   
  
Alternativ kann man den FLEX notepad.flx benutzen, wenn man den Datensatz mit NOTEPAD bearbeiten will.  
Also: schlicht im Schreibfeld eingeben  X notepad  
  
family  *  
Family  
Wenn der aktuelle Satz ein Teil eines mehrteiligen Satzes (mit Verknüpfungstechnik) ist, dann bilde die Ergebnismenge aus allen zusammengehörigen Sätzen. Die Ergebnismenge ist dann in der Reihenfolge der Primärschlüssel geordnet. Mit Family wird die Ergebnismenge auch sofort angezeigt, mit family nicht.  
Tip:   Bei  export fam wie bei fam / Fam kann vorher eine Angabe in die iV geschrieben werden (mit var), die mit dem Zeichen '|' und einer Registerziffer beginnt. Dann wird die Ergebnismenge bei dem betr. Schlüssel gebildet, d.h. alle Einträge genommen, deren Schlüssel mit der Angabe in der iV beginnt, und zwar in der Reihenfolge des Registers! Der Eintrag beim Primärschlüssel ist davon ein Spezialfall, der automatisch gebildet wird, wenn in der iV nichts oder etwas anderes steht.   
  
fcopy name1 name2  
Datei name1 wird kopiert auf name2. Fehlen name1 name2, wird der Inhalt der iV genommen, d.h. es müssen darin zwei Namen hintereinander stehen. Beide Namen dürfen vollständige Pfadnamen sein; Vorsicht: innerhalb des FLEX muß jedes \ dann verdoppelt werden, in der iV aber nicht!  
  
fetch number   oder   fetch +number   (*)
fetch ^code    oder   fetch +^code
Aus der mit open geöffneten Datei werden number  Bytes in die interne Variable gelesen.  
Dabei werden die Codes 0,1 ... 32  durch ^@, ^A ... ^` ersetzt, das Zeichen ^ selbst durch ^~.   
Mit dem zweiten Befehl wird alles bis zum nächsten Code code (dezimal, 0...255) inclusive gelesen.  
Mit vorgesetztem + werden die gelesenen Zeichen an den vorhandenen Inhalt der iV angehängt statt diesen zu überschreiben. 
Mit if no ... kann man prüfen, ob überhaupt gelesen werden konnte, mit if cancel ...  ob das Ende der Datei erreicht wurde.   
Maximal werden 8000 Byte gelesen.  
Mit  write ^ kann man die Zeichen entsprechend wieder herausschreiben, d.h. exakt so wie eingelesen.  
Soll eine Zeile gelesen werden (Zeilenende = Codes 13 10): --> get (dabei erfolgt keine Wandlung der Codes 0,..,32!), d.h. das Herausschreiben kann mit normalem  write geschehen.  
  
fetch b2 / b3 / b4   * 
Es werden 2 bzw. 3 bzw. 4 Bytes gelesen und als hexadezimale Zahl interpretiert. Das Ergebnis steht dann als Dezimalzahl in der iV. 

fetch record  *
Aus der mit open geöffneten Datei (.ALG, .ADT, .ALD, .LOG) den nächsten Satz in die iV einlesen. (Dann mit  insert  in den Arb.Speicher kopieren) 
Ist es eine .ALG-Datei, dann zuerst  fetch b,  ist es eine .ALD, dann noch dazu  fetch b4  vor dem  fetch rec.

file dateiname / file +dateiname  
Der Inhalt des Anzeigefensters wird in die Datei ausgegeben. Ist der Dateityp .rtf, wird im RTF-Format ausgegeben, sonst als ASCII-Textdatei, wenn aber set c1 gesetzt wurde, kommt der Text in ANSI  heraus.  
Wenn  '+'  gesetzt ist, wird hinten angehängt, sonst wird die Datei überschrieben.   

find  *  
find suchbefehl  *  
Find  
Find suchbefehl  
Bilde eine Erg.menge. Diese wird nur bei 'F', nicht bei 'f' angezeigt, sondern sie wird anschließend als aktuelle Erg.menge benutzt, wenn man mit den Befehlen  next, prev, oder  export set  arbeitet.   
Der suchbefehl muß genauso aussehen wie bei der Eingabe in der Befehlszeile (Cursor dorthin setzen, F1, dann kommt Hilfe).  
Wenn suchbefehl fehlt, wird der Inhalt der iV benutzt. Wenn man diese vorher geeignet besetzt, kann man den Suchbefehl in Abhängigkeit vom aktuellen Satz gestalten. Der erste Satz der Ergebismenge wird sofort geladen, wird also zum aktuellen Satz.  
Wenn suchbefehl mit einem '+' beginnt, wird die nachfolgende Zeichenfolge im Volltext der aktuellen Erg.menge gesucht, wie bei der Eingabe per Hand im Suchbefehlsfeld.  
Bei  F statt f wird die Erg.Menge sofort angezeigt und der FLEX beendet, d.h. nachfolgende Befehle ignoriert.  
Mit  if empty ...  kann man springen, wenn nichts gefunden wurde.  
Sonderfall: mit find #nnn kann man einen Satz mit seiner internen Nummer nnn laden. Mit if cancel prüfen, ob die Nummer zu groß oder zu klein war, mit if no, ob unbesetzt.  
Zusammen mit  next #  kann man  den nächsten holen, mit if cancel prüfen, ob keiner mehr kommt.  
Eine noch andere Variante ist  choose ...(der FLEX wird dabei nicht beendet)  

f1nd ...   *  
Mit 1 statt i : Es wird keine Erg.Menge angelegt, sondern nur deren erster Satz geladen. Die momentane Erg.Menge bleibt erhalten. 
  
find rnum  
Aus der aktuellen Erg.Menge wird der num-te Satz geladen. Mit if no ... checkt man, ob es diesen nicht gibt.  
  
find edit  
Sonderfall! Die bearbeiteten Sätze werden als Erg.Menge zusammengefaßt. (Wie Menüpunkt "Extras | IN ARBEIT befindl. Sätze") 
  
find new  
Sonderfall! Die neuen Datensätze werden als Ergebnismenge zusammengefaßt. (Wie Menüpunkt "Extras | Neu, noch nicht gespeichert")  
  
find snum 
find :name 
Die Erg.Menge Nummer num bzw. mit der Bezeichnung name wird aktiviert. Die erste hat die Nummer 1 und ist die Boomark-Liste, 2 ist die Liste der vorher angezeigten Sätze. Nummer 0 ist die letzte Erg.Menge. Deren tatsächliche Nummer erhält man mit var q. 

find $nnn  
Sonderfall! Die letzten nnn Bytes der LOG-Datei werden ausgewertet und die darin steckenden korrigierten Datensätze als Erg.Menge zusammengefaßt. Die neuen Sätze kann man nicht auf diese Weise gewinnen, dazu muß man das Register des Erfassungsdatums heranziehen. Eingebettet in `super.rtf` unter "Zuletzt bearbeitete Sätze". Interessant ist das für den Supervisor in einem Netz. (Die LOG-Datei bezieht sich nicht auf die aktuelle Sitzung, sondern ist das Änderungsprotokoll der gesamten Datenbank.)  
  
first   [Gegenteil: last ]  *  
Der erste Satz der Erg.menge, in der vorher eingestellten Sortierfolge, wird geladen und angezeigt. Mit if no ... kann man checken, ob es keinen solchen gibt, weil die Ergebnismenge leer ist.  Mit  first r wird zugleich die Kurzzeile in die iV geladen.  Den letzten Satz läßt man mit last laden.  
  
first #   [Gegenteil:  last # ]   *  
Der erste Satz der Datenbank (Satznummer 1)  wird geladen und angezeigt. Mit  find #1 wird er nicht angezeigt.  
  
first off   [Gegenteil:  last off ]  
Der erste Satz der Offline-Datei wird geladen und angezeigt. Mit  if no ... kann man checken, ob es keinen solchen gibt, weil die Offline-Datei leer ist.  
Der nächste usw. kann danach mit  next off  geladen werden.  
  
first sub   [Gegenteil:  last sub ]  Sinnvoll nur bei hierarchischen Sätzen.  
Ein interner Zeiger wird auf den Hauptsatz (!) gestellt. Das ist deshalb so, damit nicht noch ein Sonderbefehl gebraucht wird, um auf den Hauptsatz zu setzen.   
Mit anschließendem next sub gelangt man zum ersten wirklichen Untersatz.  
Siehe  next sub  und  prev sub.  
  
first view    
Die erste Zeile der aktuellen ViewListe wird in die iV geladen. Mit if cancel ... stellt man fest, ob keine ViewListe geöffnet ist.   
Mit anschließendem next view erhält man die zweite Zeile, usw.  
  
flex xyz  
Senden einer Mitteilung an ein anderes a99/alcarta.  
Es wird eine "ExFLEX"-Botschaft an das System gesendet. Wenn ein anderes a99 oder alcarta läuft, kann es diese auffangen und ausführen. xyz muß der Name einer FLEX-Datei sein (Typ .flx). Das andere a99 liest dann diese Datei und führt sie aus. Wenn xyz fehlt, wird der Inhalt der iV genommen.  
Das zweite a99 kommt nur dann in den Vordergrund, wenn xyz.flx den Befehl activate enthält.  
  
flip ixyz=flex  
Setzen von Text und FLEX auf dem Flip-Button Nummer i (i = 1...8):   
Auf Button i soll xyz stehen, und es soll flex ausgeführt werden. flex muß mit "x " oder "X " beginnen. Auf "x " folgt direkt eine Befehlsfolge, auf "X " folgt der Name einer FLX-Datei.  
Normalerweise steht auf den Flip-Buttons Flip 1 bis Flip 8, und daher können diese Buttons, obwohl unsichtbar, mit Alt+1 bis Alt+8 ausgelöst werden.   
Soll die Aufschrift einen Alt-Key erhalten, muß der betr. Buchstabe bzw. die Ziffer mit vorgestelltem & markiert werden.   
Empfehlung: Weil es keine freien Buchstaben mehr gibt, sollte man die Flip-Aufschrift in der Form  
&i: Text  einrichten. Z.B. erscheint auf dem Button 5  der Text   5 : Pause ,  wenn man    
set 5&5: Pause=...   setzt..  
Es sei denn, man ändert in der `UIF-Datei` auch die eine oder andere Button- oder Menübeschriftung, um einen Buchstaben frei zu bekommen. Auch dort markiert das Zeichen & den Alt-Buchstaben. Die Flip-Buttons selbst haben dort aber keine Einträge, die kann man nur per FLEX setzen, z.B. in der dbn.RTF oder START.FLX.  
  
flow modus    [ab V29.3]
Ablaufverfolgung. Dieser Befehl schaltet die Visualisierung der FLEX-Befehle ein und aus. 

fnam bezeichnung|typ   
Eine Dateiauswahl-Box wird präsentiert. bezeichnung  steht in der Zeile unter dem Eingabefeld, typ ist eine Angabe wie z.B. P-*?PR oder c:\\allegro\\*.*. Dadurch wird gesteuert, was für Dateinamen überhaupt gezeigt werden und evtl. zugeich auf welchem Verzeichnis. Fehlt dies, werden alle gezeigt. Mit if no kann man checken, ob nichts ausgewählt wurde. Wenn ein Name ausgewählt wurde, steht er anschließend in der iV, und zwar als kompletter Pfadname. Anschließend kann man z.B. sofort mit  open  diese Datei öffnen lassen.  

fnam |typ   /   fnam >typ 
Alle zu  typ  passenden Dateinamen werden in die iV geschrieben, getrennt durch | . 
Bei > wird in die Ausgabedatei geschrieben, jeder Name auf neuer Zeile. 
Mit  if no  kann man checken, ob es keine solchen Dateien gibt, mit if cancel , ob es zu viele sind. Die Grenze ist bei | eine Gesamtlänge von 2.000 Zeichen.  

form i  
	Formular i wird aufgeblättert (i = 1...)  (in der Reihenfolge der .FRM-Datei)  
Man kann mehrere solcher Befehle hintereinanderschalten. Statt der Nummer i kann auch die Überschrift des Formulars angegeben werden,  z.B.  form Buch. wenn es ein Formular mit der Überschrift [Buch] gibt.  
Es muß nicht die gesamte Überschrift sein, ein eindeutiger Anfangsteil genügt.  
Mit if cancel ...  kann man checken, ob das Formular mit [Esc] verlassen wurde.  
Mit if no ...  kann man checken, ob das Formular existiert  
  
fsize dateiname   *   
Die Größe der Datei in Bytes wird in die iV übertragen. Wenn dateiname fehlt, wird der Inhalt der iV genommen (anschließend ist dieser dann überschrieben!).  
Mit  if no ...  kann man checken, ob es die Datei gar nicht gibt. Mit if >N ... und  if <N ...  kann man hinterher prüfen, ob sie größer oder kleiner als ein bestimmter Wert N ist.  
  
ftime dateiname   
Die Zeit der letzten Aktualisierung der Datei wird in die iV übertragen, und zwar im Format YYYYMMDD/HH:MM:SS, wie üblich.   
Wenn dateiname fehlt, wird der Inhalt der iV genommen (anschließend ist dieser dann überschrieben!).  
Mit  if no ...  kann man checken, ob es die Datei gar nicht gibt, die iV ist dann leer.   
  
get #xyz  
get [iV]   *  acon:  nur  get
get +[iV]  
Aus der mit open ... geöffneten Datei wird eine Zeile gelesen und in die Kategorie #xyz bzw. in die iV kopiert.  Mit ascii bzw. ansi kann man die iV umwandeln. Wenn also die Datei ANSI-Daten hat, man braucht aber ASCII:  get iv\ascii\ins #uxy statt nur get #uxy.  
Mit if cancel ... kann man checken, ob die Datei zu Ende war (d.h. es konnte nichts mehr gelesen werden), mit if no ... ob sie gar nicht geöffnet war, mit  if yes ... ob es geklappt hat. Wenn '+' gesetzt ist, wird der gelesene Text an die iV angehängt.  
Siehe auch fetch : wenn eine bestimmte Anzahl Bytes gelesen werden soll statt einer Zeile.  
  
get env name      *
Die Environment-Variable name wird in die iV kopiert. (Umgekehrt: --> set env )  
Mit  if no ...  kann man checken, ob sie nicht existierte; die iV ist dann unverändert.   
  
get I url    *
Die hinter url steckende Datei wird aus dem Internet geholt und in die iV kopiert, bis zu einer Länge von 250.000 Byte  
  
help name  *  (bei acon : Angaben zur Datenbank ausgeben)  
help +name  
Hier ist name der Name einer RTF-Datei (ohne .rtf angegeben), welche dann als Hilfetext in das Anzeigefenster geholt wird. Entspricht dem Flip h. Statt RTF darf es auch eine gewöhnliche ASCII-Datei sein. Das Programm setzt als Kopf HELPHEAD.RTF davor, damit sie angezeigt werden kann - sie erscheint dann natürlich in ganz schlichter Form.  
Ist der Name einschl. .RTF angegeben, kann man auch die eingebetteten Flips sehen. Das sind Zeilen, die mit ? beginnen, und zwar nach dem Schema:  
\par ?Fliptext=x ...  
Irgendwo im normalen Text der Hilfedatei muß dann Fliptext stehen, und zwar links und rechts entweder eckige Klammern oder je ein Code 160, den man mit Alt+0160 eingibt.  
Wenn ein '+' vor dem Namen steht, wird die Datei an den Text angehängt, der schon in der Anzeige steht, anstatt ihn zu überschreiben.  
Mit  if no ...  kann man checken, ob die Hilfedatei nicht gefunden wurde.   
Sonderfall: Steht ein ! statt name, kommt die zur Datenbank gehörige Hilfeseite, z.B. catger.rtf.  
Fehlt name völlig, wird der Inhalt der iV statt dessen genommen. So kann eine vom Satzinhalt abhängige Hilfedatei angefordert werden, oder aber ein Suchbefehl für das Anzeigefeld. Soll z.B.  FLEXGER.RTF bzw. FLEXENG.RTF geladen werden, je nach Spracheinstellung. sollte man nur angeben:  help flex  
Mehr über das Hilfesystem: siehe Datei `HELP.RTF`  
  
help =suchwort  
help >suchwort  
Dies sind Suchbefehle für den Inhalt des Anzeigefeldes!  
Im Anzeigefeld wird das erste Vorkommen von suchwort gesucht, wenn = davor steht, bzw. das nächste (in Vorwärtsrichtung), wenn > davor steht. Nützlich ist das vor allem, wenn lange Hilfetexte im Anzeigefeld stehen, es funktioniert aber bei jeder Art von Anzeige, also auch bei  
langen Datensätzen mit vielen Nachladungen.   
Mit zwei FLEXen kann man ein bequemes Suchen organisieren:  
#uX8x var "="\ask +Suchwort?\help\ins #usw  
#uX9x var ">" #usw(1,0)\ins #usw\help   
Mit Alt+8 wird dann nach dem Suchwort gefragt und nach dem ersten Vorkommen gesucht, mit Alt+9 wird die Suche fortgesetzt.   
Alternativ: man gibt im Schreibfeld diese Phrasen ein:  
p ^f x var "="\ask +Suchwort?\help\ins #usw  
p ^g x var ">" #usw(1,0)\ins #usw\help   
Dann erfolgt die Suche bzw. Weitersuche mit Strg+f bzw. Strg+g.  
  
hyphen  * 
Korrekte Bindestriche in der ISBN setzen. 

if bedingung befehl  (*)  
Als bedingung  kann man die nachfolgenden Befehlswörter einsetzen. Für befehl  kann jedes FLEX-Befehl eingesetzt werden, aber immer nur ein einzelner Befehl. Oft wird man deshalb einen  jump ...  verwenden.  befehl  wird jeweils ausgeführt, wenn die bedingung  erfüllt ist.  
  
if not bedingung befehl  *  
befehl  wird jeweils ausgeführt, wenn die bedingung  nicht erfüllt ist.  

Es folgt eine Auswahl. -->  `Alle if-Befehle`
  
Sonderfall:   
Wenn hinter if  nichts steht, wird der Inhalt der iV als  bedingung befehl  interpretiert. Dabei kann die iV auch mit  not  anfangen.  
  
if #nnn befehl  
if #nnn$a befehl  
	Wenn #nnn bzw. Teilfeld a in #nnn existiert (besetzt ist), wird befehl ausgeführt,  
                 z.B. kann es ein jump ... sein.  
  
Die nächsten 3 Befehle können in vielen Fällen benutzt werden, um das Ergebnis des vorhergegangenen Befehls zu checken. Bei den einzelnen Befehlen ist das jeweils vermerkt.  
if yes befehl    [gleichwertig: if ok...]  
	Wurde die letzte yesno oder noyes-Frage mit "Ja" beantwortet ...  
if no befehl  
	bzw. mit "Nein",  dann wird befehl  ausgeführt  
if cancel befehl  
	Wurde die letzte yesno oder noyes-Frage mit "Abbruch" oder [Esc] beantwortet ...   
  
if main befehl  
	Ist der aktuelle Satz ein Hauptsatz einer verknüpften Familie? ...  
if fam befehl  
	Ist der Satz ein Mitglied einer verkn. Familie (Haupt- oder Untersatz)? ...  
if sub befehl  
	Ist der Satz ein verknüpfter Untersatz? ...  
if hiera befehl  
	Ist es ein hierarchischer Satz? ...  
  
if deleted befehl  
	... ein gelöschter Satz? ...  
  
if Lock befehl  
	... ein gesperrter Satz? ...  
  
if New befehl  
	... ein neuer Satz (noch nicht gespeichert)? ...  
  
if diff befehl     
Wenn der aktuelle Satz vorher verändert wurde (Hintergrund gelb!) wird befehl ausgeführt, z.B. put.   
  
if Help befehl     
Wenn momentan ein Hilfetext in der Anzeige steht, wird befehl ausgeführt.   
  
if gN befehl   acon  
if lN befehl   acon  
	Wenn die aktuelle Erg.menge größer bzw. kleiner als N (>= 0) ist, wird befehl ausgeführt.   
Spezialfall:  if g0  Ist bei vorangehenden find-Befehl etwas herausgekommen? Für das Gegenteil kann man auch schreiben:  
  
if empty befehl  
	Wenn die aktuelle Erg.menge leer ist, wird befehl ausgeführt.   
  
if z>N befehl  
if z=N befehl  
if z<N befehl  
	Wenn der Zähler  größer  bzw. gleich bzw. kleiner als N ist, wird befehl ausgeführt. N wird als ganze Zahl behandelt, d.h. ein Dezimalteil nicht berücksichtigt.  
  
if Z>N befehl  
if Z=N befehl  
if Z<N befehl  
	Wenn die interne Zahl  größer  bzw. gleich bzw. kleiner als N ist, wird befehl ausgeführt. N kann eine Dezimalzahl sein.  
  
if >N befehl  
if <N befehl  
	Wenn die iV als Zahl größer  bzw. kleiner als N ist, wird befehl ausgeführt. Mit der iZ hat das nichts zu tun.  
  
if >"abc" befehl  
if <"abc" befehl  
	Wenn die iV als Zeichenfolge alphanumerisch größer  bzw. kleiner als "abc" ist, wird befehl ausgeführt.  
  
if >#nnn befehl 
if <#nnn befehl 
	Wenn die iV  größer  bzw. kleiner als der Inhalt von #nnn  ist, wird befehl ausgeführt. Wenn der Inhalt von #nnn in "..." eingeschlossen ist, wird alphanumerisch verglichen, sonst numerisch. 
 
if off befehl  
Wenn es eine `Offline-Datei` gibt, dann befehl  
  
if res befehl  
Wenn die Datenbank über Restriktionen verfügt  (.RES-Datei), wird befehl ausgeführt.   
  
if v14 befehl  
	Wenn die Datenbank mit V14-Verknüpfungen arbeitet, wird befehl ausgeführt.   
  
if tbl befehl  
	Wenn die TBL-Datei gesperrt ist, wird befehl ausgeführt.   
  
if usr befehl  
	Wenn die Datenbank gerade (durch andere User!) in Benutzung ist, befehl ausgeführt.   
Ob die Nutzung durch a99/alcarta oder PRESTO/APAC etc. erfolgt, spielt dabei keine Rolle.  
  
if "xyz" befehl  oder  if 'xyz' befehl  
if "~xyz" befehl    oder  if '~xyz' befehl 
Wenn die iV mit xyz anfängt, wird befehl ausgeführt. Soll der Inhalt einer Kategorie oder eines Teilfelds abgeprüft werden, bringt man diesen Inhalt zunächst mit var ... in die iV und wendet darauf dann if "xyz" an. Hat man  ~  gesetzt, erfolgt der Vergleich ohne Berücksichtigung von Groß- und Kleinschreibung.  
Sonderfall: Mit if "" ... kann man prüfen, ob die iV leer ist (z.B. nach ask )  
  
if =#nnn befehl    (vgl. oben den Befehl  if #nnn ... : nicht dasselbe!)  
Wenn die iV mit dem Anfang des Inhalts von #nnn übereinstimmt, wird befehl ausgeführt.   
#nnn kann eine Kategorie oder eine #u-Variable sein.  
  
if %%abc%% befehl   
if %%~abc%% befehl     
 Wenn die iV die Zeichenfolge abc enthält, wird befehl ausgeführt.  Ist ~ gegeben, dann ohne Rücksicht auf Groß-/Kleinschreibung  
Wenn man mit dem Befehl fetch eine Anzahl Zeichen eingelesen hat, gilt folgendes:  
Sonderfall:  (Wenn der Inhalt der iV mit  fetch eingelesen wurde) Innerhalb abc setzt man ^A für den ASCII-Code 01, ^B für Code 02 usw., und ^~ steht für das Zeichen ^ selbst Somit kann man auch nach nicht-druckbaren Zeichen suchen.  
  
if _abc_ befehl     
Wenn der aktuelle Datensatz die Zeichenfolge abc enthält, wird befehl ausgeführt.   
  
if *#nnn_abc_ befehl     oder    if *#nnn,abc,  
Wenn Kategorie #nnn im aktuellen Datensatz die Zeichenfolge abc enthält, wird befehl ausgeführt.  
Wenn das Zeichen '_' in abc vorkommt, muß man  ,abc,  schreiben, bzw. umgekehrt.   
#nnn muß keine vollständige Kategorienummer sein: mit  if *#3,abc,  kann man z.B. prüfen, ob in einer Kategorie der Gruppe #3 die Zeichenfolge abc vorkommt!   
  
include dateiname        *
Damit kann man andere Dateien in eine FLEX-Datei an beliebiger Stelle einbauen lassen. Kein FLEX-Befehl! Zur Zeit der Ausführung steht an dieser Stelle der Text aus der Datei, nicht mehr  include dateiname
  	Nicht abkürzbar 

index |i abc        [siehe oben ?...]  
Register i aufblättern an der Stelle abc,  z.B.  ind |1goethe  
  
index p name  
Andere Indexparameterdatei laden. Wichtig zum Testen! Anschließend wirken in allen Funktionen die geladenen Parameter.  
  
input n  
Damit kann die Nummer der Datei verändert werden, in welche die neuen Datensätze zu speichern sind. Sichtbar wird das nicht.  
Allerdings muß die Berechtigung (access=  in der INI-Datei) mindestens 2 sein.  
  
insert #xyz  *  
Insert #xyz  
Inhalt der internen Variablen in die Kat. #xyz kopieren. Es kann auch eine #u-Variable sein. Ist die iV leer, wird die Kategorie gelöscht! Die Anzeige wird danach neu aufgebaut, aber nur bei Insert, d.h. der Datensatz erscheint dann sofort mit der veränderten Kategorie auch in der Anzeige.  
Fehlt #xyz, wird statt dessen der Inhalt der iV genommen (wo dann sowohl #xyz als auch der Text zu stehen hat).  
Wenn man  insert #uxyABC  schreibt, wird noch ABC vor die interne Variable gesetzt.   
Der Befehl nimmt also den Text ABC, hängt die iV hinten an, und das Ganze ist die neue Kategorie.  
Tip: Nach mehreren insert-Befehlen kann man mit  display\show rec  den Neuaufbau der Anzeige erreichen.  
Mit if no ... kann man prüfen, ob ein Fehler auftrat, in der iV steht dann die Fehlermeldung. Gilt auch für folgende Varianten:  
insert $a+#xyz  *  
Inhalt der internen Variablen als Teilfeld $a an #xyz anhängen  
insert $a-#xyz  *  
Teilfeld a ersetzen, wenn es vorh. ist, sonst anhängen. Wenn die interne Variable leer ist: Teilfeld $a löschen    
(z.B. var ""\ins #nnn)  
Sonderfall:  insert $$-#xyz  Setzt die iV an den Anfang des Kategorietextes, ohne Teifeldzeichen.  

insert _abc_XYZ_   
insert ,abc,XYZ,   
Im Inhalt der internen Variablen abc durch XYZ ersetzen, ggfls. mehrfach.  

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. 
Achtung: Leerzeichen nur vor und hinter der 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  soll 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. 

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. 
Mit  if no ... kann man in beiden Fällen prüfen, ob es nicht geklappt hat. 

janas url   startet den JanaS-Browser, dieser zeigt dann die Webseite mit der Adresse url an. 

jump label  *  
Sprung zur Sprungmarke :label  (s. oben)  
  
Jump xTEXT  
wie display, aber Ausgabe per Exportparameter statt Anzeigeparameter.   
Dieser Befehl ist obsolet. Sicherer funktioniert die Ausgabe per  export, siehe dort.  
  
katlist  
erstellt eine Datei KATLIST.ASY und schreibt hinein die Liste der erlaubten Kategorien (laut CFG).  
  
keychk  
Die Tastatur wird geprüft. Wurde [Esc] gedrückt oder 'x', kommt die Frage: "Abbruch? j/n" (wurde nicht [Esc] gedrückt, hat dieser Befehl keine Wirkung)   
Anschließend kann man mit  if yes ... bzw.  if no ...  angeben, was passieren soll, wenn der Nutzer [Ja] bzw. [Nein] geantwortet hat.   
Das Programm macht nicht weiter, solange nicht mit [Ja] oder [Nein] geantwortet wurde.  
Will man in  Schleifen eine Abbruchmöglichkeit einbauen, setzt man also z.B. ein  keychk\if yes jump abbruch  
  
last   [Gegenteil: first , siehe dort für die Optionen sub und view!]  *  
Der letzte Satz der Erg.menge, in der vorher eingestellten Sortierfolge, wird geladen und angezeigt. Mit if no ... kann man checken, ob es keinen solchen gibt, weil die Ergebnismenge leer ist.  Mit  last r wird zugleich die Kurzzeile in die iV geladen.  Den ersten Satz läßt man mit first laden.  
  
last off   [Gegenteil:  first off ]  
Der letzte Satz der Offline-Datei wird geladen und angezeigt. Mit  if no ... kann man checken, ob es keinen solchen gibt, weil die Offline-Datei leer ist.  
Der vorige usw. kann danach mit  prev off  geladen werden.  
  
last #   [Gegenteil:  first # ]   *
Der letzte Satz der Datenbank wird geladen und angezeigt. Mit find #0 wird er nicht angezeigt.  
  
list	nur *
	Ergebnismenge als Kurzliste in die download-Datei des Auftrags ausgeben. 
	Dabei erfolgt Umcodierung gemäß der momentanen Einstellung 
	Achtung: In a99 wird dies mit dem Befehl  export brief  realisiert.

load   
Nur nach vorangegangenem  choose ... (siehe dort)  
Der ausgewählte Satz wird geladen. Nochmaliges load lädt wieder den Ausgangssatz.  
  
menu Text 
Dient zur Flexibilisierung des Hauptmenüs. 
Der anwendungsspezifische Menüpunkt zwischen "Option" und "?" wird auf den Wert Text gesetzt. Dieser Menüpunkt löst den FLEX aus, der in #uXz steht. Dies kann vorher beliebig vorbereitet werden. 
Wenn Text fehlt, wird der Inhalt der iV genommen. Man kann also vorher mit dem var-Befehl die iV vorbereiten. z.B. 
var #uxy 
menu 
Als Default für den anwendungsspezifischen Menüpunkt dient der Text in Zeile 243 der Datei UIFEGER. 
 
message Text 
Text wird in einer Messagebox angezeigt und muß mit [OK] bestätigt werden.  
Wenn der Nutzer etwas entscheiden soll: statt dessen Befehl   yesno 
Wenn er etwas eingeben soll: Befehl    ask 
	Wenn  Text fehlt, wird der Inhalt der iV genommen.  
In   Text  können auch Zeilenschaltungen eingebaut sein: Codes 13 10 einsetzen beim Aufbau der iV mit dem Befehl  var. 
 
Message n,Text 
Text wird in einer Messagebox für  n  Sekunden angezeigt und verschwindet dann.  
Wenn  n  fehlt, sind es 10 Sekunden. 
Wenn  n,Text fehlt, wird der Inhalt der iV genommen. 
Tastenfunktionen: + addiert 10 Sekunden,  - subtrahiert 10 Sekunden 
Esc bricht ab, Enter bestätigt. Anschließend kann man mit "if no .." bzw. "if yes .." testen, ob Esc oder Enter gedrückt wurde. Wenn die Zeit normal abläuft, gilt auch "if yes .." 

mkdir dir 
Ein neues Verzeichnis namens dir wird angelegt.  
Fehlt dir, wird der Inhalt der iV genommen, d.h. es muß ein geeigneter Name darin stehen. Es kann ein absoluter oder ein relativer Pfadname sein.  
Vorsicht: innerhalb des FLEX muß jeder \ dann verdoppelt werden, in der iV aber nicht!  
Mit  if no ...  kann man checken, ob es gelungen ist. 
 
new / new 0  * 
Es wird ein neuer, leerer Datensatz angelegt. Der aktuelle Satz wird vorher in den Offline- und in den Hintergrundspeicher kopiert (bei  new 0  passiert das nicht).  
Nachfolgend manuelle Eingabe oder #- und insert-Befehle, bzw. transfer, um Kategorien aus dem Hintergrundspeicher zu übernehmen! 
 
next   [Gegenteil: prev , weitere Optionen siehe first]  * 
Der nächste Satz der Erg.menge, in der vorher eingestellten Sortierfolge, wird geladen und angezeigt. Mit if yes/no ... kann man checken, ob es einen nächsten Satz gab. Wichtig bei Schleifen! Den ersten Satz läßt man mit first laden, den letzten mit last. 
next r  holt zusätzlich die Kurzzeile des Satzes in die iV. 
Sonderfall:  next # holt den nächsten Satz in interner Nummernfolge. Mit if cancel ... kann man prüfen, ob die Datenbank zu Ende ist, also keiner mehr da war; mit if no , ob die Satznummer unbesetzt ist. Diese Tests muß man beide machen, um sicher zu gehen!     

next off   [Gegenteil:  prev off ] 
Der nächste Satz der Offline-Datei wird geladen und angezeigt.  
Mit  if yes/no ... kann man checken, ob es gelungen ist oder nicht (weil der letzte erreicht war oder die Menge leer ist). 
 
noyes Frage 
	siehe yesno 
 
open name  *
Die Datei name wird zum Lesen geöffnet. Anschließend kann mit get... oder  fetch... daraus gelesen werden.  
Am Ende des FLEX wird die Datei automatisch geschlossen, wenn man sie nicht vorher mit close schließt. 
name kann auch eine URL sei, dann wird so getan, als sei es eine Datei, und man kann sogleich mit  get  und  fetch number  daraus lesen.
Fehlt name, wird die iV genommen. Mit  if yes/no  kann man checken, ob das Öffnen gelungen ist oder nicht.  
Zum Schreiben öffnet man eine Datei mit  export f name, und mit write und export schreibt man hinein. 
Zu einem Zeitpunkt kann stets nur eine Datei zum Lesen geöffnet sein. 
 
open x name 
Die Datei name wird zum Schreiben geöffnet. Anschließend kann mit `write`... oder  `export`... hinein geschrieben werden.  
Fehlt name, wird die `iV `genommen. Mit  `if yes/no`  kann man checken, ob das Öffnen gelungen ist oder nicht.  
Der Befehl ist gleichwertig  mit  `export f` name. 
 
order M P  * 
Erg.menge ordnen (sortieren) 
M = Modus: a=aufsteigend, d=absteigend, n=Nach Satznummern 
P = Position des Sortierfelds in der Kurzliste: Das erste Zeichen ist Position 0 
 
perform  label  * 
	Unterprogramm-Aufruf. 
Es wird, wie bei jump , zu der Sprungmarke  label gesprungen. Sobald aber ein Befehl return erreicht wird, geht es mit der nächsten Zeile weiter, die auf perform folgt.  
Das Unterprogramm muß keine zusammenhängende Zeilenfolge sein. Es kann an jeder Stelle des FLEXes beginnen, d.h. das label kann weiter oben oder weiter unten stehen. 
 
phrase i text 
Hiermit kann man Phrasen belegen. Der  Wert i kann eine Zahl >0 sein oder ein Buchstabe mit ^ davor, z.B. ^y (gleichwertig mit 25). Wenn text ein FLEX-Befehl ist (beginnt mit "x " oder "X "), wird hinterher beim Auslösen der Phrase, also z.B. mit Strg+y, dieser FLEX ausgeführt. 
 (Achtung, nicht benutzen: i=8,9,10,13 bzw. ^h, ^i, ^j, ^m; nicht zu empfehlen sind ferner  ^a, ^c, ^v, ^x, ^z wegen der Cut-and-Paste-Funktionen )  
Frei sind im Normalzustand: ^b, ^e, ^o, ^q, ^w, ^y . 
Wenn  text  fehlt, wird Phrase i gelöscht. 
Wenn  i text  fehlt, wird statt dessen der Inhalt der iV genommen. 
Die Werte von 129 bis 255 sind nicht über die Tastatur zugänglich, aber man kann diesen Bereich als Speicher für eigene Variablen benutzen! Mit var v... kann man die gespeicherten Werte wieder auslesen. Weiterer Vorteil: diese Variablen bleiben zur nächsten Sitzung erhalten (in der Phrasendatei). 
 
pipe programmname
Hiermit wird keine Datei geöffnet, sondern ein Programm gestartet. Mit dem Befehl  get  bekommt man danach zeilenweise das, was das gestartete Programm über seine Standard-Ausgabe ausgibt. 
Mit  if cancel  gleich nach dem  pipe  oder nach einem  get  prüft man, ob das Programm sich beendet hat und somit nichts mehr ausgeben wird. 

prev   [Gegenteil: next , weitere Optionen siehe first]  * 
Der vorige Satz der Erg.menge wird geladen und angezeigt 
Wichtig bei Schleifen! Den ersten Satz läßt man mit first laden, den letzten mit last. 
Mit if yes/no ... kann man checken, ob es einen vorigen Satz gab. Wichtig bei Schleifen! 
Sonderfall:  prev # holt den vorigen Satz in interner Nummernfolge. -->  next . 
 
prev off   [Gegenteil:  next off ] 
Der vorige Satz der Offline-Datei wird geladen und angezeigt.  
Mit  if yes/no ... kann man checken, ob es gelungen ist oder nicht (weil der erste erreicht war oder die Menge leer ist). 
 
print 
Anzeigefenster ausdrucken (wie Print-Button) 
 
print p name 
Print-Parameter wechseln (name.apr laden) 
 
Put       	Speichern mit Rückfrage (Anzeige wird erneuert, denn der Satz kann sich durch PV-Routinen verändern) 
put *	Speichern ohne Rückfrage (Anzeige wird dann nicht erneuert) 
Der aktuelle Satz wird im aktuellen Zustand gespeichert (wie bei [Speichern]-Button) 
Put new 
put new 
Der aktuelle Satz wird als neuer Satz gespeichert. (Dasselbe würde  copy\put  bewirken.) 
War es ein Online-Satz und wurden keine Veränderungen gemacht, entsteht eine Dublette. 
Mit if no ... kann man checken, ob das Schreiben nicht funktioniert hat, es steht dann in der iV eine Fehlermeldung. 
 
qrix N ixn abc  * 
Qrix N ixn abc  * 
Wie index, aber Kopie des Registerabschnitts ab abc  in die iV bzw. bei Qrix direkt in die Exportdatei.  
N gibt die Zahl der gewünschten Zeilen an; wenn N fehlt, wird 20 angenommen. Ist N negativ, wird rückwärts vorgegangen, und dann ist abc die letzte Zeile der Anzeige. In der iV sind die Zeilen durch ¶ getrennt.  Mit show IV kann der Abschnitt sofort in die Anzeige gebracht werden, mit ins ...  in eine Kategorie. 
ixn kann ein symbolischer Registername sein oder eine Angabe wie  |3 für Register 3. 
abc kann aus 2 Teilen bestehen, getrennt durch das Zeichen '<'. Dann endet die Auflistung mit dem letzten Eintrag, der kleiner ist als das, was hinter '<' steht. 
 
qrix f function   *
Der Wert function (0,1,3) steht für die Funktionsweise: 
   (Die Einstellung gilt nur bis zum Ende des FLEXes!)
0 : Registerzeilen genau so, wie sie sind  (default) 
1 : Satznummern hinzugefügt, getrennt durch : RegZeile:nn:nn:nn
3 : gleichfalls, aber für jede Satznummer eine eigene Zeile: nn|RegZeile 
   (Damit hat man sofort eine ViewListe) 
4 : Sonderfall: Schreibt in die Exportdatei nur die Satznummern. Diese kann dann wie eine PRESTO-Ergebnismenge eingelesen werden (read set name ) 

qrix t i  * 
 Der Wert i (>=0) wird als Schwelle für die Indexanzeige genommen. Nur Zeilen mit mindestens i Einträgen werden dann gezeigt. Nützlich z.B. für visuelle Dublettenkontrollen. Der Wert bleibt beim anschließenden Aufblättern des Index erhalten, kann aber durch  
qrix t 0  abgeschaltet werden. 
 
read   (*)
read rec name 
Datei `E.ADT` bzw. Datei  name   wird eingelesen. Diese kann eine Reihe von Kategorien enthalten, die dann alle in den aktuellen Satz eingefügt werden. (Erfassungshilfe; manuell mit ALt+ä oder Menü "Bearbeiten | Read") 
Wenn name fehlt, wird der Inhalt der iV genommen. 
 
read extern 
Datei EXTERN.DAT wird als externe Erg.menge eingelesen (wie über das Menü "Datei"). 
 
read file name 
Datei name wird als Externdatei eingelesen. Es muß sich um eine Datei vom Typ .ADT oder .ALG handeln. Sie wird den schon vorhandenen Offline-Daten hinzugefügt. 
Vorher kann man mit  erase off die Offline-Datei bereinigen. 
 
read set name  * 
Datei name wird als PRESTO-Ergebnismenge eingelesen. Die Datei besteht nur aus einer Titelzeile und dann einer Liste von Satznummern in beliebiger Folge, je eine Nummer pro Zeile. (Eine solche Datei namens X.SET entsteht, wenn man vom Menü "Datei" aus PRESTO aufruft und dann eine Ergebnismenge exportiert.) Es spielt keine Rolle, wie die Datei entstanden ist. Mit if no ...  kann man checken, ob es gelang und die Datei etwas enthielt, bevor man sie mit show list anzeigen läßt. 
 
rename  oldname newname 
Datei mit dem Namen  oldname  umbenennen in newname. Mit if no befehl  kann man checken, ob es gelungen ist.  Fehlen oldname newname, wird der Inhalt der iV genommen. Beide Namen müssen vollständige Pfadnamen sein (anders als bei DOS)! Ist der Pfad der zweiten Datei ein anderer, wird die Datei verschoben.  
Wenn newname schon existiert, gelingt das Verschieben nicht. 
 
repeat  [obsolet]
Die gesamte Befehlskette wird so lange wiederholt, bis ein Befehl nicht ausführbar ist.  
Sinnvoll in Verbindung mit next / prev, um automatische Schleifen zu bilden. Kann nur als letzter Befehl in einer Kette stehen (wenn noch was folgt, wird es ignoriert) 
Während des Ablaufs einer Schleife kann man mit Taste 'x' unterbrechen und dann wahlweise weiterlaufen lassen oder abbrechen. Das geht bei einer mit jump gebildeten Schleife nicht: 
Schleifen kann man auch mit if... und jump... bilden, und diese Methode wird empfohlen. Aber aufpassen:  irgendeine Ende-Bedingung ist zu prüfen, sonst hängt das Programm. 
 
return  * 
Wenn gerade ein Unterprogramm läuft, wird es beendet. Siehe  perform . 
Andernfalls hat dieser Befehl keine Wirkung (d.h. wenn die Zeile in einem normalen Ablauf erreicht wird, dann wird sie übergangen). 
 
save edit/result/offline 
Speicherung aller bearbeiteten (incl. der neuen) Datensätze bzw.  
der aktuellen Ergebnismenge (nur der bearbeiteten Sätze darin) bzw.  
aller Offline-Sätze.  
 
select prompt=antw1|antw2|antw3|... 
select +prompt=antw1|antw2|antw3|... 
Auswahlliste anbieten mit den angegebenen Antworten. Die ausgewählte Antwort wird dann in die iV kopiert. Wenn + vor dem prompt steht, wird die Antwort an die IV angehängt.  
Jede Antwort kann von der Form A=B sein, dann wird nur A benutzt. Sinnvoll ist das, wenn statt Klartext nur ein Code einzugeben ist. 
Mit if "" ...  kann man testen, ob etwas ausgewählt wurde. 
Mit if cancel ...  kann man checken, ob die Auswahl mit [Esc] verlassen wurde. 
Sonderfall: select ?  Liste der benutzten Hilfetexte zur Auswahl. Wenn man anschliessend den Befehl help  gibt, wird die ausgewählte Seite geladen. 
Varianten: 
select prompt=#usp. 
In #usp muß dann die Liste der Antworten stehen  
select #usp. 
In #usp müssen dann  prompt und Antwortliste stehen.  
Wenn hinter select gar nichts steht, wird der Inhalt der iV genommen. 
 
set und switch sind ab V29.10 gleichwertig

set / switch *  
Setzung diverser Werte für den weiteren Verlauf. Wenn auf set nichts folgt, wird der Inhalt der iV genommen. 
Es folgt eine Auswahl. -->  `Alle set-Befehle`
 
set aN 
V14-Ersetzung im aktuellen Datensatz durchführen, Modus N 

set b 
Bookmark : Lesezeichen auf den aktuellen Satz setzen. (Anzeigen: show b) 
 
set c0/c1/c2  *
Eingabedaten sind ASCII / ANSI (e.adt und insert-Befehle) Default ist c0.  c2 schaltet die Umcodierung völlig ab.
Auswirkung auch auf die Funktion file (= Ausgabefunktion "Datei | Anzeige speichern als ...": Der Text kommt in ANSI heraus, wenn der Wert 1 gesetzt ist.  
Der gesetzte Wert bleibt erhalten bis zum Sitzungsende bzw. zum nächsten set cx 
 
set d/dn/db/d+/d- 
Das Anzeigefeld wird auf normale Größe bzw. auf Übergröße (big) eingestellt. Fehlt 'n' oder 'b', dann wird der aktuelle Zustand in den anderen umgeschaltet. 
Mit + und - wird die Schriftgröße im Anzeigefenster erhöht bzw. gesenkt. Das funktioniert nur, wenn im RTF-Text der Anzeige keine zusätzlichen Befehle \fsnn vorkommen, denn diese haben dann Vorrang! Die Grundgröße wird in den Dateien DISPHEAD.RTF, HELPHEAD.RTF etc. gesetzt. Bei RTF-Hilfedateien funktioniert die Sache nicht, denn in diesen kommen normalerweise viele \fs-Befehle vor. 
 
set e0/e1 
Die Editor-Fehlermeldungen werden aus- bzw. eingeschaltet 
 
set env name=value 
Die Environment-Variable name wird auf den Wert value gesetzt. Dies gilt jedoch nur, während a99 läuft, und nur für den Prozess a99! Begrenzt kann man sich also Daten im Env.-Speicher ablegen. (Umgekehrt: --> get env ) 
 
set Err 
Fehlerwert und Fehlermeldungstext zuruecksetzen. Anschliessend gilt  if yes
Den Meldungstext erhält man mit var Err. 

set f1/f2/f0 
Flips können mit Einzel- bzw. nur mit Doppelklick aktiviert werden bzw. überhaupt nicht. 
 
set F1/F0 
Formularmodus: 1 = alles übernehmen beim Verlassen, 0 = Nutzer muß bei jedem Feld die Enter-Taste drücken.  Default ist 1 (früher gab es nur 0) . 
 
set k1/k0 
k1 = keine Offline-Speicherung, k0 = Normalbetrieb mit Offline-Speicherung

set Lanzahl NUR *
Maximale Zahl abzuarbeitender Jobzeilen. Default 1000000. L0 bedeutet: unbegrenzt. 

set Logging off/on    nur *
Das Logging beim Speichern abschalten/einschalten. 
Wird genutzt in  update.job  zum Einspeisen einer LOG-Datei.

set N0/N1/N2   *
Der Modus für das Speichern neuer Sätze wird auf 0, 1 oder 2 gesetzt. Standard:  2 bzw. Wert von NewMode in der INI-Datei.

set nnummer   *
Die Dateinummer für neue Sätze wird gesetzt (0 < nummer < 256).  Standard:  1 bzw. der Wert von InputFile in der INI-Datei. 
	Gleichwertig:  input nummer

set pX   *
 Primärschlüssel für update wird an der Sprungmarke #-X bestimmt. (default @) 
 
set Rname 
Die aktuelle Ergebnismenge erhält den Namen name 
 
set rec loc/fre  * (acon: set lock / set unlock) 
 Datensatz für Schreibzugriff blockieren/freigeben 
 
set recn    Nur * 
 Interne Nr. des aktuellen Satzes auf die Zahl setzen, die in der iV steht 

set s0/s1 
Der Subfield-Hilfemodus wird aus- bzw. eingeschaltet (s. SubHelp in a99.ini) 
 
set tbl loc/fre 
TB L-Datei blockieren/freigeben 
 
set Timestamp off/on    Nur *
Die Zeitstempelung beim Speichern abschalten/einschalten. 
Wird genutzt in  update.job  zum Einspeisen einer LOG-Datei.

set uxyz  * 
Modus für update. x und y wie bei DOS-UPDATE  (siehe Handbuch, Kap. 9), also z.B.  set u41.  
z=0 bedeutet: Keine Speicherung, sondern Zwischenlagerung im Offline-Speicher. Dort kann man sich die Daten erst einmal anschauen. Die Speicherung kann anschließend über das Menü "Datei" erfolgen. Fehlt z, wird 1 angenommen. 
 
set U1/U2/U0   * 
 Unicode-Modus  setzen bzw. löschen. 
wenn 1 oder 2: eingelesene Daten werden als UTF-8-Codes interpretiert und in interne Codes verwandelt. Die Akzentvertauschung wird automatisch miterledigt. 

set wm / wn 
Fenster auf maximale Größe setzen / Fenster auf Normalgröße und -position setzen. 
 
show xxx 
Steuerung des Auswahlfeldes (Listenfenster links) und der Anzeige.  
Für xxx kann stehen: 
<		Back-Button (links oben) : vorigen Satz bzw. Hilfetexte		 
>		Forward-Button 
reserve 		Hintergrundspeicher 
record  		Datensatz-Kategorien 
bookmarks	die Lesezeichen als Erg.menge zeigen 
ergeb 		Liste der Erg.mengen (auch: show sets) 
cfg  		Konfiguration 
prompt  		Abfrageliste 
list 		Kurzliste der aktuellen Erg.Menge anzeigen, als Fenster (der FLEX endet dann!) 
List 		dasselbe, aber im Anzeigefeld 
keys 		Registereinträge zum aktuellen Satz anzeigen (wie F7) 
phras		aktuelle Phrasenliste zeigen 
print		aktuellen Satz in Druckform 
Print		aktuelle Erg.Menge in Druckform 
iv 		Inhalt der iV im Schreibfeld auswerfen 
IV 		Inhalt der iV im Anzeigefeld anzeigen (anhängen, wenn +IV),  
			das Zeichen ¶ (Code 20) wirkt als Zeilentrennung  
Bin		Zeige den Inhalt der iV binär an (auch hier ist +B möglich) 
offline		Liste der "In Bearbeitung" befindlichen Sätze 
about		Die "About-Box" erscheint (Version etc.) 
Jeweils 3 Buchstaben des Befehls genügen, z.B.  sho rec. 
  
sleep n  * 
n Millisekunden untätig verharren, bevor weitergemacht wird. (Für 3 Sekunden muß man also schreiben: sleep 3000) 
Nutzbar z.B., wenn man eine Folge von Hilfeseiten abrollen lassen will. Das kann durch eingestreute yesno-Befehle noch flexibilisiert werden:  
help name1\sleep 4000\yesno Weiter?\if no end 
help name2\sleep 4000... 
 
slice n=mFLEX 
Ein "Timer" wird gesetzt. Es hängt vom Modus m ab, wie er arbeitet: 
m=i : "immer wieder" - Alle n Millisekunden wird FLEX ausgeführt. 
m=1 : "1-mal" - Nach  n Millisekunden wird FLEX ausgeführt, also nur 1mal 
m=0 : der Timer (der irgenwann vorher auf "immer" gesetzt wurde) wird gelöscht. In diesem Fall kommt es auf die Zahl n nicht an. 
FLEX muß mit "x " oder X " beginnen, wie sonst auch. Wenn "x ", dann müssen die Befehle direkt folgen, getrennt durch \\ . 
 
sort MP
Sortieren im Arbeitsspeicher 
M = Modus: a=aufsteigend (A-Z), d=absteigend (Z-A) . Default: a
P = Sortierposition: Das erste Zeichen ist Position 0 . Default: 0
Also:  sort a0  ordnet ab dem ersten Zeichen, und zwar aufsteigend. 

spaces  *  
	Mehrfach-Leerzeichen innerhalb des iV-Textes beseitigen,  
zwischen "..." und '...' bleiben sie jedoch stehen. 
 
srx suchbegriff       *  (ab V27)
Suche in dem Text, der momentan in der iV steht, nach dem  suchbegriff
Wenn suchbegriff  fehlt, wird der Inhalt der Variablen  #u!!  genommen 
Der suchbegriff  kann irgendein Regulärer Ausdruck sein. Wie solche Ausdrücke aussehen müssen,  ist in einer `gesonderten Beschreibung` dokumentiert. 

srX     [dahinter nichts angeben]     *
Dasselbe, aber verwendet den zuletzt benutzten  suchbegriff 
Vorteilhaft in Schleifen, weil etwas schneller.

STOP program 
	Programm abrupt beenden. In Arbeit befindliche Sätze werden, ohne Rückfrage, nicht gespeichert! Die Erg.mengen werden aufbewahrt, wenn diese Option eingestellt ist.  
	Eignet sich vorwiegend für alcarta, damit man per Flip das Programm beenden kann. 
	Nach Abschluß der Datenbank wird das Programm program ausgeführt. Fehlt program, wird der Inhalt der iV als Befehl genommen. (Vorher var "" geben, um das zu verhindern!) 
 
sub #01 nnn  *    
Schaltet im Arbeitsspeicher zum hierarchischen Untersatz, in dessen #01 die Bandnummer nnn steht. 
Nachfolgende Befehle var, ins und write beziehen sich dann auf diesen Untersatz. 
Mit  if no ... kann man prüfen, ob es einen solchen nicht gibt. Dann bleibt der Hauptsatz eingeschaltet. 
Tip: mit  sub #01 xxx  kann man zum Hauptsatz schalten (xxx = Bandnummer, die es bestimmt nicht gibt). 
Wenn man in der CFG eine andere als die #01 als Startkategorie für einen hierarchischen Untersatz deklariert hat, muß diese statt #01 eingesetzt werden. 
 
switch und set sind ab V29.10 gleichwertig

switch fam   NUR *
	Bilde die Ergebnismenge aller Sätze, die mit dem aktuellen Satz verknüpft sind (Pica: "family") 
	Nachfolgende get- und list-Befehle beziehen sich dann auf diese Ergebnismenge. Wenn es nur darum geht, eine Satzfamilie 
	auszugeben, kann man schlicht  exp fam  sagen. 
	ERROR wird gesetzt, wenn es keine Verkn. gibt.  Man kann jederzeit zu der eigentlichen Erg.Menge  zurückschalten: 

switch resultset   NUR *
	Man ist wieder an derselben Position wie vor dem "switch fam". (Der vorher aktuelle Satz wird intern erneut geladen.) 
	Dasselbe trifft bei nochmaligem "switch fam" zu: Das vormals aktuelle Familienmitglied wird wieder geladen. 
	Die Konsequenz ist, daß man eine Erg.menge durcharbeiten und dabei zu jedem Satz alle verknüpften Sätze gleichfalls abarbeiten kann. 

switch download 1 / 2    *
	Download 1 / Download 2 einschalten. Es können 2 Download-Parameter und -Dateien definiert sein. Normalerweise ist Download 1 aktiviert. 
	Wenn erstmals  set download 2  gegeben wird, muß man gleich danach   export param ...  und  export file ...  setzen, damit dem Programm bekannt ist, was beim Befehl  export  geschehen soll. 
	Anschließende export- und write-Befehle laufen dann mit diesem Set ab, bis wieder  set download 1  kommt. 
	Mit var e bzw. var E erhält man die Namen der Parameter bzw. der Exportdatei des gerade mit switch dow eingestellten Downloads. 

switch object 1 / 2    *
	Satz 1 / Satz 2  einschalten. Es gibt zwei interne Datensatz-Arbeitsspeicher. Normalerweise ist Satz 1 eingeschaltet, d.h. alle Aktionen werden in Satz 1 ausgeführt. 
	Jederzeit kann man aber in einem Job auf Satz 2 schalten, einen Datensatz mit find , get oder read hineinholen, damit Aktionen durchführen und ihn auch mit put wieder speichern. 
	Vorteil: Satz 1 ist die ganze Zeit noch vorhanden und muß nicht erneut geladen werden, sondern nur mit  set obj 1  wieder eingeschaltet. 
	Empfehlung: Sicherstellen, daß im selben FLEX wieder auf Objekt 1 zurückgschaltet wird. Veränderung und Speicherung des Objekt 2 ist möglicherweise problematisch. 
	Gedacht ist der Befehl hauptsächlich, um im FLEX schnell mal in einen anderen Satz schauen zu können und daraus etwas zu entnehmen. 
	Hinweis:  Mit   copy obj 1   kann man den Inhalt des ersten in den zweiten Satz kopieren. (V28.5)

transfer #nnn 
Kategorie #nnn aus dem Hintergrundspeicher in die iV kopieren. Mit anschließendem ins... kann man den Inhalt in eine Kategorie kopieren, z.B.  tra #40\ins #40
var ""\ins #unnn 
Wenn eine Nutzervariable  #uxy  in eine Kategorie #nnn kopiert werden soll:  
var #uxy\ins #nnn 
undo 
Entspricht dem Button [Wechseln] : Umschalten zwischen Bearbeitungs- und Originalzustand. 
Zur Erläuterung: Für jeden während einer Sitzung "angefaßten" Satz hat das Programm in seinem Offline-Speicher den aktuellen Zustand bzw. den Zustand vor der letzten Speicherung des Satzes. Mit undo  wird zwischen diesen beiden Zuständen umgeschaltet. 

update  dateiname      * 
Zusammen mit upload entsprecht dies gleichnamigen acon-Funktionen bzw. DOS-UPDATE-Funktionen (Kap. 9) 
Wichtig: (sonst passiert nichts) 
Vor einem update muß man mit set u... den Modus setzen; --> set, und evtl. mit  
set p... den zu benutzenden Primärschlüssel vorwählen.  
upload  dateiname      * 
Das entspricht einem update mit Modus 01, d.h. jeder Satz wird als neuer Satz behandelt (keine Prüfung des Primärschlüssels) und eingemischt. Der Ablauf kann allerdings interaktiv überwacht und kontrolliert werden.  
Nicht nur Grunddateien (Typ .ALG) kann man mit update oder upload einmischen, sondern auch (wie bei acon) die einfacheren Externdateien (Typ .ADT), die man sich auch mit anderer Software erstellen kann. 
Für beide Fälle gilt: Fehlt  dateiname , wird angenommen, daß die Daten gleich anschließend folgen, im Externformat, als Bestandteil der FLEX-Datei.     
 
variable cstring  *    (Was ist ein `cstring`? Siehe unten)  
Der  cstring  wird interpretiert und in die interne Variable kopiert. Ein cstring kann in derselben Weise bei dem Befehl   write verwendet werden (siehe unten) 
Fehlt cstring, wird statt dessen der Inhalt der iV interpretiert, d.h. es entsteht daraus ein neuer Inhalt in der iV. 
Sonderfall: Mit   var ""   wird die iV leer gemacht. 
variable +cstring   * 
Inhalt an die iV hinten anhängen. Hiermit kann man beliebige Inhalte zu einer Zeichenfolge verknüpfen, z.B. 
var #40 ": " #20          Inhalt von #40 und #20 in iV kopieren mit ": " dazwischen 
var +" (" #76 ")"        (Inhalt von #76) an iV hinten anhängen 
ins #upt                 iV in #upt speichern (Die iV als solche bleibt erhalten!) 
 
Nach einem var-Befehl kann der Inhalt der iV mit einem ins-Befehl in eine Kategorie oder #u-Variable kopiert werden, oder es wird einer derjenigen Befehle gegeben, die diesen Inhalt dann als Argument benutzen. Bei diesen Befehlen steht immer als Kommentar:  Wenn ... fehlt, wird der Inhalt der iV verwendet.   

view  name / View  name      [zur View-Technik siehe "allegro news" 58] 
ViewListe name öffnen bzw. auch anzeigen. Das Öffnen ist notwendig, wenn man den Befehl  export view  benutzen will, ohne die ViewListe anzeigen zu lassen. 
Die Datei muß im ASCII-Code sein, sonst muß man vorher  set c1  und hinterher  set c0  schreiben. 
Die ViewListe kann anschließend mit  export brief als solche exportiert (in die Ausgabedatei geschrieben) werden und mit  export view die Datensätze selbst in der Reihenfolge der ViewListe. 
 
write  * 
Inhalt der internen Variablen in die Ausgabedatei schreiben (ohne Änderung) 
write ^ 
Dasselbe, aber Strg-Kombinationen  werden durch die Steuercodes ersetzt (^A durch 1 etc.), genau umgekehrt wie beim Befehl  fetch 
Nur nach einem Einlesen von Daten mit fetch ist das sinnvoll. Die Daten können zwischenzeitlich in eine Kategorie oder #u-Variable kopiert und mit var #... wieder in die iV zurückgeholt worden sein.  Wegen der Umwandlung in ^A etc. geht kein Steuerzeichen dabei verloren. 
 
write  cstring  *     (Was ist ein `cstring`? Siehe unten)  
So kann man am schnellsten Satzinhalte kombiniert mit beliebigen Text ausgeben. 
Der cstring kommt zusätzlich in die iV, steht da also anschließend drin! 
Beispiel: 
write "Titel: " #20 n "Verfasser: " #40 n "Ort: " #74 " (" #76 ")" 
produziert eine Ausgabe in dieser Form: 
  
   Titel: Hamlet 
   Verfasser: Shakespeare, William 
   Ort: London (1982)  
 
Das 'n' ist der Befehl für eine "neue Zeile". Dies muß ausdrücklich gesetzt werden, denn es wird kein Zeilenvorschub automatisch eingebaut! 
Schlichte Exporte kann man hiermit, genso bei acon, ohne Exportsprache machen. 
Soll dabei von ASCII nach ANSI umcodiert werden, muß man das über die iV machen, also 
var cstring\ansi\write  statt nur   write cstring  
 
xcode ab        *  (ab V27)
Codiere den in der iV stehenden Text um, und zwar mit der Tabelle p bzw. q 
Folgende Werte kann man setzen: 
a = i d x y       Index-, Display-, Exportparameter, und darin: (y siehe unten) 
Hinweis: Für  acon  gelten nur i und x 
b = p q  	p- bzw. q-Tabelle 
Anschließend steht in der iV der entsprechend umcodierte Text. 
xcode y  *    
Zur Umcodierung der iV wird eine Tabelle benutzt, die man vorher mit Hilfsbefehlen der Form  
y x ... und  p x ...   anlegen kann. 
Die Hilfsbefehle gelten jeweils für die gesamte Sitzung, müssen also nicht in jedem FLEX erneut gegeben werden. 
Sie bilden die Umcodiertechnik des alten Programms IMPORT.EXE nach und sehen folgendermaßen aus: 

y x u  
Ersetzt beim Befehl  xcode y  jedes x durch ein  u. 
y a/z A  
Ersetzt beim Befehl  xcode y  jedes a durch ein  A., jedes b durch ein B usw. 
y .nnn mmm  [ Sonderfall: 256 an der Stelle von mmm bedeutet: Code nnn ignorieren. ]
Diese Variante ersetzt beim Befehl  xcode y  jeden Dezimalcode nnn durch den Code mmm. 
p x abc ABC  
Sog. Protyp-Ersetzungen. Damit kann man Doppelcodes ersetzen: wenn xa auftritt, wird es durch A ersetzt, xb dagegen durch B usw. Solche Codierungen treten z.B. in MARC-Daten auf, auch wenn diese per Z39 gewonnen werden. 

xml 0/1/2/3  *
Der aktuelle Datensatz wird in einer von vier XML-Varianten ausgegeben. 
Bedeutung der Ziffern: Anstelle von  ... kommt jeweils der Inhalt einer allegro-Kategorie heraus. 

0 :   <label>...</label>
Hier ist label die Bezeichnung, die sich aus der CFG ergibt.  Wenn das Datenfeld eine Mehrfachkennung hat, wird zuerst die Abfrageliste von oben nach unten nach der Kategorienummer durchsucht. Wird dort nichts gefunden, oder steht Spatium hinter der Kategorienummer, wird die Deskriptorenliste durchsucht. 

1 :   <feld nr="knum">...</feld>
      knum ist die Kategorienummer 

2 :   <feld lb="label">...</feld>
      Wie 0, aber statt der Kategorienummer wird im Attribut  lb  das Label angegeben 

3 :   <feld lb="label" nr="knum">...</feld>
      Kombination aus 1 und 2 

xport  Siehe export 

yesno Frage 
noyes Frage 
Die Frage wird in einer Ja/Nein/Abbruch-Box gezeigt. Ohne Antwort geht es nicht weiter. 
Die Antwort kann mit einem nachfolgenden if-Befehl ausgewertet werden, z.B.  
if no end 
Die Antwort bleibt bestehen, bis z.B. das nächste yesno oder noyes oder ask etc. kommt, d.h. es können sich mehrere if-Befehle darauf beziehen. 
Bei "noyes" ist der Button [Nein] statt [Ja] der default-Button! Dann muß der User bewußt auf [Ja] gehen - [Enter] bedeutet sonst Nein. 
Wenn  Frage fehlt, wird der Inhalt der iV genommen.  
In   Frage  können auch Zeilenschaltungen eingebaut sein: Codes 13 10 einsetzen beim Aufbau der iV mit dem Befehl  var. 
 
//  * 
Leitet eine Kommentarzeile ein. 
ACHTUNG:  In a99 wird auch jede Zeile als Kommentar behandelt, die mit Leerzeichen anfängt, in  acon  ist das nicht so. 

Was ist ein cstring?   (Abkürzung von "code string") 
Dazu gibt es eine `ausführliche Beschreibung`. 

?Beispiele=x h flex=FLEX-Beispiele 
?So erstellt man FLEXe=x h flex=So erstellt man FLEXe 
?Befehle A-L=h flex1 
?cstring.flx=X cstring 
?cstring=h =Was ist ein cstring? 
?phrase=h xphrase 
?export f=h xexport 
?Beispiele=x h flex=FLEX-Beispiele  
?So erstellt man FLEXe=x h flex=So erstellt man FLEXe  
?Befehle M-Z=h flex2  
?cstring=h =Was ist ein cstring?  
?super.rtf=h super 
?Verlautbarung 154=h vb154 
?aresqa=h aq 
?Voll-Dokumentation=h xa 
?Alle set-Befehle=h xset 
?Alle if-Befehle=h xif 
?ausführliche Beschreibung=h xcstring