FLEXikon - Kurzdokumentation
Strg+f = Finden, Strg+g = Weitersuchen
ACHTUNG: Dies ist nur eine unvollständige Kurzfassung!
Umfassende Information inkl. avanti bietet die
So erstellt man FLEXe Beispiele
Diese Kurzfassung ist für a99 gedacht und behandelt nicht alle Besonderheiten des avanti -Servers.
Mit einem * sind aber diejenigen Befehle markiert, die auch für avanti 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 * (avanti: 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 * (avanti: 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 avanti 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.
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.
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 avanti 2 Spatien.
Wenn namensmuster fehlt, wird der iV-Inhalt als Namensmuster 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.
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 avanti- 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 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 avanti: 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 ऩ , 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] avanti: 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 avanti : 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 avanti
if lN befehl avanti
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 download 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 download ... 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).
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 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 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 * (avanti: 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 bei download 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 avanti-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 avanti) 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 download 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 download brief als solche exportiert (in die Ausgabedatei geschrieben) werden und mit download 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 und beliebigen Text ausgeben. Der cstring kommt zusätzlich in die iV!
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, genau wie bei avanti, 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 avanti 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. In a99 wird auch jede Zeile als Kommentar behandelt, die mit Leerzeichen anfängt, in avanti ist das nicht so.
Was ist ein cstring? (Abkürzung von "code string")
Dazu gibt es eine ausführliche Beschreibung .
?ausführliche Beschreibung=h xcstring