![]() |
![]() |
||||||||||||||
![]() |
![]() |
![]() |
|||||||||||||
![]() |
|||||||||||||||
![]() |
|||||||||||||||
Inhalt der Seite
FLEX
Die
Skriptsprache des
allegro
-Systems
Tip: Laden
Sie diesen Text in
den
JanaS-Browser, dann haben Sie mehr davon! Dazu geben Sie in a99 diesen Befehl
ein:
janas
http://www.allegro-c.de/flex/flexikon.htm
Funktionsübersicht Alphabetisches Register FLEXe für Systemfunktionen Liste der Standard-FLEXe Alle FLEX-Dateien sichten Neue FLEX-Datei anlegen
Wichtig: Es gibt eine interne Variable (kurz iV). Das ist eine temporäre Zeichenfolge, die nur so lange lebt, bis sie durch einen weiteren Befehl überschrieben wird. Das geschieht z.B. durch die Befehle ask , yesno , message und vor allem variable . Diese vier sollte man zuerst lernen (der vierte ist der wichtigste!) und dabei die Methode, wie man mit der iV umgeht. Dazu wird eine Anzahl von ganz einfachen Beispielen bereitgestellt, zum sofort ausprobieren. Die iV hat und braucht keinen Namen, das vereinfacht einiges. Man verwendet die interne Variable in der Regel sofort z.B. in einem insert -Befehl (z.B. insert #98 , um die iV in die Kategorie #98 zu kopieren). insert ist der zweitwichtigste Befehl. Will man die iV länger aufbewahren: mit insert #uxy in die Uservariable #uxy kopieren. (Und mit var #uxy von dort später wieder zurück in die iV.) Viele der FLEX-Befehle nutzen automatisch den Inhalt der iV, wenn kein Argument angegeben ist, z.B. find oder open und viele andere. Außerdem gibt es eine interne Zahlenvariable (kurz iZ), die für Berechnungen verwendet werden kann. Alle Befehlswörter außer erase kann man bis auf die ersten drei Buchstaben kürzen. Wie FLEXt man? Tip: Immer ein Fenster mit der Demo-Datenbank zusätzlich öffnen. In diesem Fenster kann man dauernd die FLEX-Dokumentation geöffnet haben. Im Schreibfeld h xa eingeben, dann kommt die Übersicht aller Befehle.
A. Einen FLEX von Hand eingeben (erfordert mindestens Berechtigung access=3 in der INI-Datei )
Der einfachste Weg, einen FLEX einzugeben und sofort auszuführen, ist die unmittelbare Eingabe im Schreibfeld. Man muß " x " vorweg setzen und die einzelnen Befehle mit \ trennen. Oder: ein großes " X " vorweg setzen und den Namen einer FLEX-Datei dahinter (siehe D). Beispiel: Geben Sie im Schreibfeld ein (und dann Enter) x ask Ihr Name bitte\message oder x var "Die Datenbank liegt auf: " D\mes
In der Praxis ist das nur in wenigen Fällen sinnvoll, sehr wohl aber zum Lernen und Testen, weil man so am schnellsten etwas ausprobieren kann.
Der zweit-einfachste Weg, einen FLEX zu erstellen und auszuführen ist dieser; er wird dann aber auch für mehrfache Verwendung gespeichert: 1. Befehlsfolge im Schreibfeld eingeben, am Anfang eine Ziffer 0, 1, ... 9 Beispiel: man gibt im Schreibfeld ein 9 message Index 1 wird gezeigt\index |1 shakesp Enter drücken. Der FLEX wird in Variable #uX9 gespeichert 2. Ausführen: Alt+Ziffer (Alt+9 für das Beispiel, um #uX9 zu aktivieren) 3. Ändern: Alt+r um den Reservespeicher zu sehen, Zeile #uX9 auswählen, dann [Enter]; Befehle ändern, nochmals [Enter] zum Zurückspeichern.
Auf diese Weise kann man sich bis zu 10 FLEX-Makros einrichten. Sie werden dann zusammen mit den Phrasen abgespeichert (Datei phrase.a99 ) und bleiben somit für nachfolgende Sitzungen erhalten. Die Makros 1 bis 8 liegen dann auf den Flip-Buttons links vom Schreibfeld! Deren Beschriftung kann man mit dem Befehl flip ändern. Um z.B. auf den Button 8 die Beschriftung "Sonder" anzubringen, gibt man ein: flip 8&8 Sonder (Die Angabe &8 bewirkt, daß auf dem Button eine unterstrichene 8 erscheint, und nur dann kann er mit Alt+8 ausgelöst werden. Nur die FLEXe in den Variablen #uXi kann man mit der Alt-Taste auslösen, sie haben also eine Sonderstellung. Auf andere Weise kann aber auch die Strg-Taste beim FLEXen helfen, siehe C. Noch ein Beispiel. Geben Sie ein: 0 set d Fortan können Sie mit Alt+0 (wie mit F11) das Anzeigefeld zwischen groß und normal schalten.
B. Einbettung in Hilfedateien oder Anzeigeparameter Andere Wege, FLEXe bereitzustellen, sind das Einbetten in Hilfedateien oder in die Anzeigeparameter. Das jedoch sind Aufgaben für den Allegrologen. Es gibt etliche vorbereitete Hilfedateien wie z.B. input.rtf oder catger.rtf , die man als Vorlage heranziehen kann. Beispiel: Geben Sie im Schreibfeld ein: h input.rtf (statt nur h input ), dann sehen Sie auch die eingebetteten FLEXe (die Zeilen am Ende, die mit '?' anfangen). Eine andere Datei mit etlichen Beispielen ist view.rtf, geben Sie also h view.rtf ein Sie erkennen, daß die Flip-Texte immer vorn und hinten durch einen "accent grave" begrenzt sind, und daß in den Zeilen unten, die mit ? beginnen, immer genau der Fliptext wiederholt wird, dann mit = der FLEX-Befehl angeschlossen ist. Das Zeichen \ ist in den Flip-Zeilen meistens durch ersetzt. Hier wirkt er als Befehlstrenner.
C. FLEXe im Phrasenspeicher Zum Dritten kann man FLEXe im Phrasenspeicher unterbringen! Wird dann die Phrase angefordert, wird statt dessen der FLEX ausgeführt. Beispiele: wenn in der Datei PHRASE.A99 steht: 6 (steht für Strg+f) x var #uSW(1,0)\ins #uSW\var "="\ask +Suchwort?=#uSW\help\ins #uSW 7 (steht für Strg+g) x var ">" #uSW(1,0)\ins #uSW\help Dann wird mit Strg+f die Phrase 6 und mit Strg+g die Phrase 7 ausgeführt. Und zwar braucht dabei der Cursor nicht im Schreibfeld zu sein, das klappt auch, wenn er woanders ist. Aber Achtung: die Werte 8,9,10,13,27 dürfen nicht belegt werden, das sind die Funktionen "Backspace", "TAB", "Enter", "Return" und "Esc". Einige Werte sind in der mitgelieferten PHRASE.A99 durch Sonderbuchstaben belegt, z.B. Strg+p = ç. Noch nicht belegt: 2 5 15 17 23 25 ( Strg+b e o q w y) Wenn man aber dennoch Phrase 9 belegt, würde man diesen FLEX auch mit der TAB-Taste auslösen! Phrasen können statt mit der Hand oder durch Eintragung in die Datei PHRASE.A99 auch aus einem FLEX heraus mit dem FLEX-Befehl phrase belegt werden (s.u.)
D. FLEX-Dateien Eine FLEX-Befehlsfolge kann in einer Datei stehen, diese muß dann den Typ .FLX haben. Jeder Befehl muß auf einer neuen Zeile ganz vorn beginnen. Zeilen, die mit Leerzeichen beginnen, gelten nicht. Auf einen if-Befehl können mehrere Befehle auf derselben Zeile folgen, die dann mit ; zu trennen sind. Eine solche Datei wird aufgerufen, wenn man z.B. die Flip-Variable #uXi bzw. #uZi mit X statt mit x beginnen läßt, Beispiel: #uX1X o-bestel.flx . Mit Alt+1 wird dann o-bestel.flx ausgelöst. FLEX-Dateien können auch von außen aktiviert werden (Hilfsprogramm FLEX.EXE), dann spricht man von einem ExFLEX. Siehe dazu den Befehl activate Von Hand startet man eine FLEX-Datei name.flx, indem man im Schreibfeld eingibt X name . Probieren Sie es mal mit Eingabe von X euro oder X cockpit oder X dbinfo . FLEX-Dateien können im Datenverzeichnis liegen, im Programmverzeichnis oder auch im Arbeitsverzeichnis des Nutzers. Zusätzlich gibt es die Möglichkeit, an das Programmverzeichnis ein Unterverzeichnis FLEX anzuhängen und dort FLEX-Dateien zu lagern. Bei der Installation werden dort die Standard-FLEXe der Auslieferung abgelegt. Die Suchreihenfolge für FLEXe ist: DbDir / ProgDir\FLEX / ProgDir / Lokal Ein besonderer FLEX ist der MyFlex, den man in der INI-Datei einrichten kann. Wenn dort steht: MyMenu=Sonderfunktion MyFlex=X meinflex.flx Dann erscheint oben im Menü vor dem Punkt "Löschen" der eigene Punkt "Sonderfunktion", und er bewirkt die Auslösung des meinflex.flx .
E. AutoFLEXe Eine Sonderstellung haben die Variablen #uX:, #uX; und #uX= . Wenn man sie aus den Anzeigeparametern heraus mit einem FLEX belegt, wird dieser sofort nach Fertigstellung der Anzeige ausgeführt. Im Falle von #uX: nur dann, wenn gerade kein Index- und kein Ergebnisfenster geöffnet ist, im Falle #uX; aber ohne Einschränkung sofort. #uX= dagegen wird vor dem Ausführen der Anzeigeparameter abgearbeitet; der Satz ist in dem Moment schon im Arbeitsspeicher. Man belegt es sinnvollerweise im _START.FLX. Die Variablen #uX: und #uX; werden übrigens nach Ausführung sofort gelöscht, #uX= dagegen nicht.
F. SonderFLEXe für Start und Ende der Sitzung Zwei FLEXe nehmen eine Sonderstellung ein, wenn sie existieren: _START.FLX und _ENDFLX.FLX . Sie werden direkt nach dem Start bzw. unmittelbar vor Ende der Sitzung ausgeführt.
G. PV-FLEX Das Einrichten von Programmierten Validierungen ist nicht jedermanns Sache, muß man doch dafür die Exportsprache meistern. Deshalb gibt es, zumindest für den wichtigen Punkt direkt vor dem Speichern des Datensatzes, den PV-FLEX. Ist ein solcher vorhanden, wird er bei Druck auf [Speichern] ausgeführt. Das eigentliche Speichern muß dann in Form eines "put" in den FLEX eingebaut sein. Ansonsten kann man im PV-FLEX jede erdenkliche Aktion durchführen, um den aktuellen Satz vor dem Speichern zu prüfen und zu behandeln. Der Name der PV-FLEX-Datei ist beliebig. Als Standort kommen die für FLEXe insgesamt möglichen Verzeichnisse in Frage, je nach Gutdünken. Und so wird der PV-FLEX aktiviert: in der INI-Datei gibt es den Befehl SaveAsk=0/1, wo bisher nur die Werte "0" (nicht fragen) bzw. "1" (immer fragen) möglich waren. Diese Werte bleiben unverändert möglich, aber jetzt kann man auch schreiben:
SaveAsk=X pruef
wenn PRUEF.FLX der Name der FLEX-Datei ist, oder auch
SaveAsk=x FLEX-Befehlskette
wenn es sich um eine kurze Befehlskette handelt (bis 127 Zeichen). Es muß also "X " bzw. "x " auf SaveAsk= folgen, wenn ein FLEX ausgeführt werden soll! Weil aus einem FLEX heraus auch externe Programme gestartet werden können, ist es ganz klar, daß diese neue PV-Möglichkeit noch mächtiger ist als die alte (die unverändert bestehen bleibt). Im Vergleich mit relationalen Datenbanken kommt diese Methode dem sog. "Trigger"-Konzept gleich. Dieses ermöglicht bei RDBMS, daß die Datenbank bei jeder Veränderung gewisse Bedingungen prüft und dann in bestimmten Fällen programmierte Aktionen durchführt.
H. ExFLEXe Einem laufenden a99 oder alcarta kann auch von außen ein FLEX-Auftrag erteilt werden! Einen solchen nennt man ExFLEX. Er besteht aus einer normalen FLEX-Datei, und das Senden derselben an a99 besorgt ein Hilfsprogramm namens FLEX.EXE. Ist check.flx der FLEX, dann gibt man im DOS-Fenster den Befehl "flex check" - und a99 führt ihn aus. Mehr dazu in einem eigenen Text . FLEX-Beispiele In einer eigenen Datei findet man eine Reihe von einfachen Beispielen zum sofortigen Ausprobieren. Nach einer Standard-Installation hat man die Verzeichnisse c:\allegro\FLEX und c:\allegro\HELP . Darauf findet man zahlreiche Beispiele, die für bestimmte Aufgaben mitgeliefert werden. An der Datei SUPER:RTF kann man beginnen, die Zusammenhänge kennenzulernen: Man gibt im Schreibfeld ein h super.rtf , dann sieht man das Supervisor-Menü und darunter die Aufrufe der eingebetteten FLEXe bzw. weiteren Hilfedateien. So kann man auch bei den anderen Hilfedateien vorgehen, z.B. h adm.rtf eingeben, dann sieht man, welche FLEXe jeweils dahinter stecken. Die FLEX-Dateien liegen auf c:\allegro\FLEX .
Deshalb folgen hier nur wenige weitere Beispiele als Muster für eigene Aktionen. Eingerückte
Zeilen
gelten
als
Kommentare
und werden vom System nicht beachtet! In avanti
muß man solche
Zeilen mit // beginnen. Zur Verdeutlichung
erscheinen hier die
wirksamen
Teile in Fettschrift.
(In einer FLEX-Datei ist eine solche
Hervorhebung nicht möglich.)
Beispiel 1 : Ergebnismenge durcharbeiten Aufgabe : Man hat eine Ergebnismenge und möchte in jedem Satz das Feld #31 bearbeiten.
first :anfang Kategorie #31 zum Bearbeiten vorlegen ask bitte bearbeiten=#31 Wenn man mit Esc beendet hat, Bearbeitung beenden if esc end Sonst den bearb. Text wieder in #31 kopieren ins #31 und den Satz dann (mit Nachfrage) wieder speichern Put Nächsten Satz holen next Wenn's keinen mehr gibt, Ende des FLEXes if no end sonst zum Anfang der Schleife jump anfang
Man kann auch die gesamte Datenbank durcharbeiten lassen. Rezept dazu in einem anderen Hilfetext .
Beispiel 2 : Teil-Automatisierung einer Bearbeitung Die Aufgabe ist folgende: Man hat eine Menge Datensätze zu bearbeiten, die man jeweils über die Inventarnummer aufruft, dann eine bestimmte Kategorie hinzufügt oder ändert und den Satz dann wieder abspeichert - manchmal aber auch nicht. Annahme: es gibt ein Register INV im Index 9 mit der Inventarnummer. Dazu eignet sich ein FLEX nach diesem Muster:
Inventarnummer abfragen (Vorgabe: Inhalt von #uib) Index 9 bei Druck auf [Index] :anfang ask |9Inventarnummer=#uib Ist die Eingabe leer? Dann Abfrage wiederholen if "" jump anfang Wurde [Esc] gedrückt? Dann Ende if cancel end Eingegebene Nummer wieder in #uib kopieren: ins #uib Text der internen Variablen zusammensetzen aus "inv " und #uib var "inv " #uib und als find-Befehl ausführen (d.h. "find inv ...") find Kategorie #xyz mit Inhalt Text einfügen in den geladenen Satz #xyz Text Fragen, ob gespeichert werden soll yesno Speichern? und ausführen, wenn Antwort "OK" if yes put Statt der beiden letzten Befehle kann man auch Put setzen, dann kommt ebenfalls die Aufforderung zur Bestätigung
Beispiel 3 : Eingabe-Unterstützung Neue Datensätze sollen immer schon mit einer Anzahl fester Kategorien vorbesetzt werden. Statt über die Formulartechnik kann man auch einen FLEX anlegen, indem man im Schreibfeld eingibt:
#uX3x new\#nn1 Text1\#nn2 Text2\#nn3 Text3\trans #nn4\form 2
Dadurch wird zuerst ein neuer (leerer) Satz angelegt, dieser mit drei vorbereiteten Kategorien belegt, Kategorie #nn4 wird aus dem Hintergrundspeicher übernommen, dann Formular 2 aktiviert für die weitere Eingabe. Mit Alt+3 aktiviert man diesen FLEX. Man sieht leicht, wie man dieses Beispiel ausbauen kann. Man kann mehrere solche FLEXe für unterschiedliche Satztypen anlegen.
Beispiel 4 : Export der aktuellen Ergebnismenge Aufgabe: Es soll mit Hilfe von P-W.APR (Ausgabe im RTF-Textformat) die Ergebnismenge in die Datei LISTE.RTF geschrieben werden, wobei die Hilfsdatei LONGHEAD.RTF vorangestellt und am Ende noch als Abschluß die Zeichen "}}}" anzufügen sind.
Dateinamen für den Export setzen export f liste.rtf Dateikopf zuerst ausgeben write Flonghead.rtf Parameter laden export p p-w Ergebnismenge ausgeben export set Abschlusszeichen: write "}}}"
Jetzt kann die fertige Datei sofort von WinWord aus eingelesen werden.
FLEXe für System-Funktionen
Es gibt eine Anzahl von FLEXen, die automatisch vom System in bestimmten Fällen aufgerufen werden. Dadurch wird mehr FLEXibilität gewonnen. Keiner von diesen muß unbedingt vorhanden sein! Wenn einer fehlt, fehlt eben dessen Funktion. Änderungen an diesen FLEXen erfordern besondere Umsicht, das ist klar. Alle diese FLEXe enthalten Kommentare zu ihrer Wirkungsweise. Die wichtigsten sind folgende: (Die Namen beginnen alle mit _ )
_door.flx Wird durch den Button mit der Tür aktiviert. Startet standardmäßig DOOR.BAT und setzt die dazu nötigen Optionen.
_rs.flx Wird in A99 vom Menue "Datei | DOS-Programm" aktiviert Ruft standardmäßig PRESTO auf, und zwar mit denselben Randbedingungen wie das gerade aktive A99.
_as.flx Wird in ALCARTA vom Menue "Datei | DOS-Programm" aktiviert Ruft APAC auf, und zwar mit denselben Randbedingungen wie das gerade laufende ALCARTA
_otherdb.flx Wird in A99 vom Menue "Datei | Weitere Datenbank" aktiviert
_new.flx Wird automatisch gestartet, wenn bei noch leerer Datenbank [Index] gedrückt wird. Startet dann die Erfassung des ersten Datensatzes.
_newdb.flx Wird gestartet aus NEWDB.RTF heraus, nachdem man eine neue Datenbank anlegen will und eine Struktur gewählt hat. (Menüpunkt NEWDB auf dem Menue SUPER.RTF)
_initial.flx Nur beim ersten Start einer noch leeren Datenbank: zur Belegung der Flip-Buttons.
_start.flx Wird unmittelbar nach Programmstart und vor dem ersten Zugriff ausgelöst. Geeigneter Ort, um die Flip-Buttons zu belegen.
_endflx.flx Wird unmittelbar vor dem Schließen der Datenbank ausgelöst. Hier können noch datenbankspezifische Prüfungen eingebaut werden. Wenn dieser FLEX das Wort "no" in die iV schreibt, wird das Beenden des Programms unterbunden. Schreibt man andererseits STOP hinein, kann man die Nachfrage unterbinden, ob das Progarmm wirklich beendet werden soll.
On-FLEXe Folgende FLEXe werden, wenn sie existieren, bei Betätigung bestimmter Buttons oder Funktionen ausgelöst: (Ist einer dieser FLEXe nicht vorhanden, wird eine Default-Aktion ausgelöst, anders als bei den SystemFLEXen!) Nicht für alle dieser Fälle wird deshalb ein FLEX mitgeliefert, z.B. nicht für onfind.flx .
oninput.flx Wird beim Druck auf den Button [Neusatz] = F9 ausgeführt. Darin muß dann new oder copy vorkommen, wenn eine Eingabe gewünscht wird.
oncopy.flx Wird beim Anlegen eines neuen Datensatzes ausgeführt, wenn dieser als Kopie eines anderen angelegt wird und oninput.flx nicht existiert.
onnew.flx Wird beim Anlegen eines neuen Datensatzes ausgeführt, wenn oninput.flx nicht existiert:
onforms.flx Wird beim Druck auf den Button [Form.# ] ausgeführt. Darin muß dann form i vorkommen, wenn ein Formular gewünscht wird. In diesem FLEX kann man es einrichten, daß ein Formular aufgemacht wird, das zum aktuellen Satz paßt!
ondfile.flx Wird bei dem Menüpunkt "Datei / Anzeige speichern als..." ausgeführt Muß den Befehl file enthalten, wenn gespeichert werden soll. Wenn dieser FLEX fehlt, wird die normale Funktion ausgeführt.
onput.flx Wird bei Druck auf den [Speichern]-Button ausgeführt, aber nur, wenn in der INI-Datei der Wert saveask=2 gesetzt ist. Muß den Befehl put enthalten, wenn gespeichert werden soll. Um zu checken, ob das Speichern funktioniert hat, sollte man auch einen Befehl if no ... ergänzen.
onerase.flx Wird bei Betätigung der "Löschen"-Funktion ausgeführt. Löschen verhindern: Wenn dieser FLEX das Wort "NO" in die iV schreibt, wird das Löschen nicht ausgeführt.
onerror.flx Wird ausgelöst, wenn im Schreibfeld etwas eingegeben wird, was kein Befehl und keine Kategorie ist. (Wenn onerror.flx nicht existiert: Meldung "falsche Eingabe") Der Inhalt des Schreibfeldes steht dann in der iV.
onexprec.flx onexpset.flx Wenn diese FLEXe existieren, wird beim Menuepunkt "Export | Aktueller Satz" bzw. bei "Export | Aktuelle Erg.Menge" dieser FLEX ausgeführt. Darin muß dann, wenn wirklich exportiert werden soll, der Befehl dow bzw. dow set stehen. Existieren diese FLEXe nicht, wird normal exportiert.
onxportf.flx onxportp.flx Wenn diese FLEXe existieren, wird beim Menuepunkt "Export | Andere Exportdatei" bzw. bei "Export | Andere Exportparameter" dieser FLEX ausgeführt. Existieren diese FLEXe nicht, wird a99 die Normalfunktion ausführen, alcarta aber nichts machen.
onextern.flx Wird ausgelöst, wenn Alt+t gedrückt wird. Fehlt er, wird die bisherige Funktion des externen Editierens ausgeführt. Man könnte z.B. den notepad.flx auf diesen Namen umkopieren.
onglobal.flx Wird ausgelöst, wenn einer der drei Punkte des Menüs "Global" ausgelöst wird. In der iV steht dann eine Ziffer, und zwar 1 für Ersetzung, 2 für Manipulation und 3 für Löschung. Nur wenn diese Ziffer dann wieder zurückgegeben wird, erfolgt die Ausführung der Aktion. D.h. man kann noch eigene Aktionen davorschalten.
onhlpa99.flx Wenn der Menüpunkt "Füllhorn" ausgelöst wird in a99 (Default: h doku) onhlpalc.flx bzw. in alcarta. (Default: h alcm)
onfind.flx Wenn der Find-Button (Fernglas) gedrückt wurde. Wenn das Find-Menü dann wirklich erscheinen soll, kann der Befehl button f eingebaut werden. (Default: Find-Menü)
onfnda99.flx Wenn in der Suchbefehlszeile kein ausführbarer Befehl eingegeben wurde. (Default: Indexanzeige) Tip: Automatisch steht in #ux0 der Eingabetext! Man kann sich mit diesem FLEX neue Kommandozeilen-Befehle einrichten! onfndalc.flx bzw. dasselbe in alcarta.
onoffl.flx (ab V25.2) Menüpunkt "Datei / Weitere Offline-Datei laden" . Wenn dieser FLEX nicht existiert, wird die bisherige Funktion ausgeführt: Offline-Datei auswählen und laden.
onprint.flx Wird ausgelöst, wenn der Printer-Button betätigt wird. Wenn wirklich gedruckt werden soll, muß dann innerhalb des FLEXes der Befehl print vorkommen, der den Inhalt des Anzeigefeldes ausdruckt.
onprop.flx Wird ausgelöst, wenn auf dem Kontextmenü (rechte Maustaste) des Anzeigefelds der Punkt "Eigenschaften" gewählt wird. Wenn nicht vorhanden, passiert dann gar nichts.
onf2.flx onf3.flx onf4.flx Wird bei Druck auf F2, F3 bzw. F4 ausgelöst. Für F2 wird onf2.flx mitgeliefert und bewirkt, daß die Schreibmarke und der Focus in das Anzeigefeld gesetzt wird. F3 und F4 sind frei, d.h. onf3.flx und onf4.flx werden nicht mitgeliefert.
onf8.flx Wird bei Druck auf F8 ausgelöst. Wenn nicht vorhanden: Hintergrundspeicher -> Anzeige (= display reserve )
onf11.flx Wird bei Druck auf F11 ausgelöst. Wenn nicht vorhanden: Anzeige umschalten breit<->schmal ( = set d )
onf12.flx Wird bei Druck auf F12 ausgelöst. Wenn nicht vorhanden: Hilfeseite Tastenbelegung HE_SP ( = h he_sp )
FLEX : Die wichtigsten Befehle Weitere Beispiele -- Gesamte Befehlsliste
Die Beispiele in diesem Text können Sie alle sofort ausprobieren: Schreibmarke in die Befehlszeile setzen, Alt+9 drücken. (Gleichzeitig Alt-Taste und die Ziffer 9 - nicht die Taste F9!) Sie könnten die Zeile auch in das Schreibfeld kopieren, mit " x " davor, und Enter drücken! Um dies zu ersparen, wurde ein besonderer FLEX in diesen Text eingebettet, und der wird mit Alt+9 ausgelöst.
ALSO : Zeile anklicken, dann Alt+9 tippen: das löst den FLEX aus - die Zeile wird dann kopiert und ausgeführt.
ACHTUNG: Weiter unten kommt eine genauere Beschreibung dieser Beispiele.
In rot sieht man die eigentlichen Befehle. Der Backslash ist das Trennzeichen zwischen den Befehlen, wenn man sie auf einer Zeile hintereinander eingibt.
1. Eine Meldung anzeigen (Befehl message , kurz mes ) mes Dieser Text erscheint in einer Meldungs-Box
2. Dieselbe Meldung zuerst mit Befehl var als interne Variable erzeugen, diese dann anzeigen var "Dieser Text erscheint in einer Meldungs-Box"\ mes Sehr wichtig: Dieser Mechanismus gilt für die meisten Befehle: wenn hinter dem Befehlswort nichts steht, wird als Ersatz der Inhalt der internen Variablen genommen. Und dieser wird jeweils vorher mit var erzeugt!
3. Eine Meldung erzeugen, die auch Elemente des momentanen Datensatzes enthält: var "Der Titel ist: " #20 n "Das Buch erschien " #76 \ mes
4. Eine Meldung mit internen Variablen erzeugen: D ist das Datenverzeichnis, t die Anzahl Datensätze var "Die Datenbank liegt auf " D " und hat " t " Saetze"\ mes
5. Den Nutzer mit Befehl ask zu einer Eingabe auffordern und die Eingabe (sie steht dann in der internen Variablen!) als Meldung anzeigen ask Bitte Eingabe\ mes
6. Dasselbe, aber Fehlermeldung, wenn nichts eingegeben wurde ask Bitte Eingabe\ if "" mes Keine Eingabe\ if not "" mes
7. Die Nutzereingabe in eine Hintergrundvariable kopieren, diese dann anzeigen ask Bitte Eingabe\ ins #uva\ var "Eingegeben wurde " #uva\ mes
8. Eine Ja/Nein-Frage stellen (Befehl yesno ) und die Reaktion des Nutzers auswerten yesno Haben Sie was gelernt?\ if no mes Schade\ if yes mes Gut, dann machen Sie weiter
9. Prüfen, ob ein eingegebener Wert kleiner als der in #uwx ist ask Geben Sie eine Zahl ein\ Z= \ var #uwx\ Z- \ var Z \ if Z<0 mes OK, ist kleiner\ if not #uwx mes #uwx fehlt!
10. Eine Datei anzeigen, hier soll es die Datei quick.vw sein, und die vom Nutzer ausgewählte Zeile verwerten Aresqa help/quick.vw\ ins #uaz\ var " Ihre Wahl ist " #uaz\ mes
Genaue Beschreibung der Beispiele Auch hier können Sie die Zeilen mit Alt+9 auslösen!
1. Eine Meldung anzeigen mes Dieser Text erscheint in einer Meldungs-Box
Hinter dem Befehlswort "message" (verkürzbar bis auf 3 Buchstaben, also "mes"), kann man einen beliebigen Meldungstext angeben. Dieser Text wird dann in einer Message-Box gezeigt, die nach Druck auf [OK] oder die Enter-Taste wieder verschwindet. Was aber macht "mes", wenn kein Text dahinter steht?
2. Dieselbe Meldung zuerst mit var als interne Variable ( iV ) erzeugen, diese dann anzeigen. Denn wenn hinter mes nichts steht, wird der Inhalt der iV angezeigt. var "Dieser Text erscheint in einer Meldungs-Box"\ mes
Der Sinn des Befehls variable (verkürzbar bis auf var ) ist es, eine Zeichenkette zusammenzustellen, mit der anschließend vieles gemacht werden kann. Sie steht dann in einer "internen Variablen", kurz iV genannt. Das Einfachste ist, diese iV-Zeichenkette dann anzeigen zu lassen. Der Befehl mes sage ohne etwas dahinter macht genau das: anzeigen, was in der Variablen iV steht.
3. Eine Meldung erzeugen, die auch Elemente des momentanen Datensatzes enthält: var "Der Titel ist: " #20 n "Das Buch erschien " #76 \ mes
Jedes Datenfeld kann in eine FLEX-Ausgabe einbezogen werden, indem man im var -Befehl einfach die Kategorienummer angibt, hier #20 und #76. Merke: Text muß zwischen Anführungszeichen, die Kategorienummern aber nicht! Beides kann sich, wie man sieht, abwechseln. Soll es übersichtlich bleiben, schreibt man mehrere solche Befehle untereinander. Eine neue Zeile wird durch das n hinter der #20 ausgelöst.
4. Eine Meldung mit internen Variablen erzeugen var "Datenbank liegt auf " D " und hat " t " Saetze"\ mes
Es gibt eine große Zahl von internen Variablen mit festgelegten Bedeutungen, die man in einem var -Befehl verwenden kann. Die interne Variable D enthält den Pfadnamen (auch "Ordner" oder "Verzeichnis" genannt) wo sich die Datenbank befindet, die Variable t enthält die momentane Gesamtzahl von Datensätzen. Merke: Alles, was hinter var zwischen Anführungszeichen steht, wird unverändert als Text übernommen. Was außerhalb von Anführungszeichen steht, in diesem Fall also D und t, wird als interne Variable interpretiert und in den Text eingesetzt. Insgesamt entsteht so ein zusammengesetzter Text, der aktuelle Angaben enthalten kann. Dadurch wird der Befehl var enorm FLEXibel.
5. Den Nutzer zu einer Eingabe auffordern, die Eingabe (sie steht in der internen Variablen!) dann als Meldung anzeigen ask Bitte Eingabe\ mes
Aus einem FLEX heraus kann man dem Nutzer Fragen stellen. Der einfachste Befehl dazu ist "ask". Die hinter "ask" stehende Zeichenkette (bzw., wenn da keine steht, der Inhalt der iV !) wird über einer Eingabezeile angezeigt. Der FLEX wartet dann, bis der Nutzer "Enter" oder "Esc" tippt. War es Enter, wird die eingegebene Zeichenkette in der iV stehen. Mit "mes" wird deren Inhalt angezeigt, wie beim Beispiel 3.
6. Dasselbe, aber Fehlermeldung, wenn nichts eingegeben wurde ask Bitte Eingabe\ if "" mes Keine Eingabe\ if not "" mes
Hier wird nach der Eingebe geprüft, ob wirklich etwas eingegeben wurde! Die Formulierung if "" prüft, ob die iV nichts enthält (Nichts = leere Zeichenkette, dargestellt durch "", also zwei Anführungszeichen ohne etwas dazwischen). Stimmt dies, wird der nachfolgende Befehl ausgeführt, also die Meldung "Keine Eingabe" angezeigt. Der nächste Befehl, if not "" macht das Umgekehrte: Das Wort "not" dreht die Logik um, der nachfolgende Befehl "mes" gibt die eingegebene Zeichenkette aus, wie im Beispiel 4.
7. Die Nutzereingabe in eine Hintergrundvariable kopieren, diese anzeigen ask Bitte Eingabe\ ins #uva\ var "Eingegeben wurde " #uva\ mes
In diesem Fall wird das, was der Nutzer eingegeben hat, zuerst in eine Variable #uva kopiert. Dann wird in einem "var"-Befehl der Text "Eingegeben wurde " mit dem Inhalt dieser Variablen zu einer Zeichenkette zusammengesetzt. mes zeigt diese dann wieder an. Die Variablen vom Typ #uxy (mit zwei beliebigen Zeichen x und y, und vorn immer #u) kann man freizügig überall in einem FLEX verwenden, d.h. in var -Befehle einbauen und durch "ins"-Befehle mit Inhalten füllen. Dieselben Variablen können in den Index- oder Exportparametern auftreten, daher kann es Wechselwirkungen oder Nebenwirkungen geben. Empfohlen wird, um das zu vermeiden, daß man die Zeichen xy nicht ganz beliebig wählt, sondern das einer der beiden ein Großbuchstabe ist. In den Parameterdateien werden nämlich fast immer ausschließlich Kleinbuchstaben verwendet.
8. Eine Ja/Nein-Frage stellen und die Reaktion des Nutzers auswerten yesno Haben Sie was gelernt?\ if no mes Schade\ if yes mes Gut, dann machen Sie weiter
Der Befehl "yesno" mit nachfolgendem Text zeigt diesen Text in einer JA-NEIN-Box an und wartet auf Eingabe von j, n oder Esc (bzw. Druck auf die entsprechenden Buttons. Mit Hilfe des if-Befehls kann man danach prüfen, welche dieser Reaktionen es war: "if no" gilt, wenn "n" geantwortet, "if yes" gilt, wenn "j" gedrückt wurde, und "if cancel" gilt, wenn Esc betätigt wurde. Die "yesno"-Frage bietet also tatsächlich drei Möglichkeiten der Reaktion. Hinweis: ab V25 kann man mehrere Befehle hinter einen if-Befehl setzen, diese müssen dann durch Semikolon getrennt sein.
9. Prüfen, ob ein eingegebener Wert kleiner als der in #uwx ist ask Geben Sie eine Zahl ein\ Z= \ var #uwx\ Z- \ var Z \ if Z<0 mes OK, ist kleiner\ if not #uwx mes #uwx fehlt!
Die eingegebene Zahl wird zuerst in die interne Zahl Z kopiert, dann wird der Wert von #uwx davon subtrahiert. War die eingegebene Zahl Z kleiner als die in #uwx, dann muß die Differenz kleiner als Null sein. Diese Arbeitsweise ist nötig, weil man nicht direkt so etwas wie if Z<#uwx schreiben kann, sondern hinter if Z< muß eine richtige Zahl stehen.
10. Eine Datei anzeigen und die vom Nutzer ausgewählte Zeile verwerten. Als Beispiel soll es die Datei quick.vw sein: Aresqa help/quick.vw\ ins #uaz\ var " Ihre Wahl ist " #uaz\ mes
Die Datei quick.vw, auf dem Hilfeverzeichnis liegend, wird im aresqa-Fenster gezeigt. Das große A hat zur Folge, daß die Datei nicht bearbeitet werden kann! Mit Enter wird dann das Fenster geschlossen und die zuletzt markierte Zeile landet in der iV, wird dann in #uaz kopiert und diese mit dem Hinweis "Ihre Wahl ist " angezeigt.
Anmerkungen Die meisten FLEXe werden unübersichtlich, wenn sie in einer einzelnen Zeile dargestellt werden. Man hat daher die Möglichkeit, den FLEX-Text in eine Datei zu schreiben, wobei dann jeder Befehl eine eigene Zeile hat. So wird es viel besser überschaubar. Hat man eine Datei xyz.flx angelegt, kann die mit eingabe von X xyz aktiviert werden, d.h. der darin stehende FLEX wird dann ausgeführt. Der Aufruf einer FLEX-Datei kann eingebaut sein in einen Hilfetext, er kan aber auch hinter einem der Flip-Buttons, links unter diesem Textfeld, versteckt werden. Wie das alles gemacht wird, steht in der Anleitung So erstellt man FLEXe . Hier wurden nur ganz wenige, sehr wichtige Befehle gezeigt. Es gibt eine Liste aller Befehle , in der Sie jeden einzelnen anklicken können, um genau zu erfahren, wofür er gut ist.
Beispiele für die FLEX-Manipulationsbefehle
In jedem dieser Beispiele (außer 10.+11.) wird zuerst eine Variable #uab mit einem Text belegt. Das geschieht, indem einfach die Variable samt Inhalt hingeschrieben wird! Dann wird mit einem var-Befehl daraus ein Abschnitt ausgewählt. Der wird dann angezeigt. Statt des Befehls mes kann z.B. ein ins-Befehl gegeben werden, um den ausgewählten Abschnitt in eine Kategorie oder Variable zu kopieren! Wenn man statt var #uab(...) nur schreibt var (...) , wird der momentane Inhalt der internen Variablen genommen und die Manipulation darauf angewendet. Dies kann man bei den Freien Variablen anwenden, denn bei diesen funktioniert ein hintergesetzter Manipulationsbefehl nicht. ACHTUNG: Zum Ausprobieren: jeweils Schreibmarke auf die Befehlszeile setzen, dann Alt+9
1. Abschnitt hinter dem 4. Zeichen, insges. 3 Zeichen #uab abcdefghijk\var #uab(4,3)\mes
2. Den Teil hinter der Zeichenkombination "cd" #uab abcdefg\var #uab(b"cd")\mes
3. Abschnitt hinter dem Zeichen "f", 4 zeichen lang #uab abcdefgabcdefg\var #uab(b"f" 0,4)\mes
4. Zuerst hinter "b" gehen, dann Abschnitt hinter "f" nehmen, Ende vor "EFG" #uab abcdefgABCDEFGHI\var #uab(b"b" b"f" e"EFG")\mes
5. Gesamten Text von #uab, aber vorn alle Zeichen 3,2,4 oder 1 beseitigen (Achtung: f und F werten die Zeichen einzeln aus, nicht als Zeichenfolge!) #uab 123454321abcdefg\var #uab(f"3241")\mes
6. Gesamten Text von #uab, aber hinten alle Zeichen f, g oder e beseitigen #uab 12345abcgfdefg\var #uab(F"fge")\mes
7. Von #uab hinten den Teil wegnehmen, der mit "de" anfängt (Text bleibt unverändert, wenn "de" nicht vorkommt) #uab 12345abcdefg\var #uab(t"de")\mes
8. Von #uab hinten den Teil nehmen, der hinter "34" anfängt (Ergebnis ist leer, wenn "34" nicht vorkommt) #uab 12345abcdefg\var #uab(T"34")\mes
9. Den Teil hinter der Zeichenkombination "CD" nehmen, aber nur wenn diese vorkommt (Wenn nicht, dann alles) #uab abcdefg\var #uab(B"CD")\mes #uab abCDefg\var #uab(B"CD")\mes
10. Vom Namen der Exportdatei nur den eigentlichen Namen zeigen (hinter dem letzten \) (Problem dabei: Manip.Befehl T nur anwenden, wenn wirklich \ vorkommt!) var E\if %\\% var (T"\\")\mes Erklärung: mit var E wird erst der Name der Exp.Datei in die iV kopiert. Darauf wird %\\% angewendet, um zu schauen, ob ein \ darin vorkommt. (Wenn der \ als Zeichen gemeint ist, und nicht als Befehlstrenner, muß er doppelt angegeben werden) Der nachfolgende Befehl var ( T"\\") wird wegen des if ... nur ausgeführt, wenn wirklich ein \ vorkommt, sonst bleibt die Zeichenfolge unverändert.
11. In #dts steht das Tagesdatum in der Form JJJJMMTT. Umwandeln in TT.MM.JJJJ, wobei es nicht z.B. 05.07.2005 heißen soll, sondern 5.7.2005! Davor soll stehen "Heute ist der " var "Heute ist der " #dts(6,2 f"0") "." #dts(4,2 f"0") "." #dts(0,4)\mes
FLEXikon - Kurzübersicht
ACHTUNG: Dies ist nur eine unvollst. Kurzfassung ! Zur Voll-Dokumentation, inkl. avanti :
Diese
Kurzfassung
ist für a99
gedacht und behandelt
nicht die Besonderheiten des avanti -Servers. Es
sind nur mit
einem
*
diejenigen
Befehle
markiert, die auch
für avanti gelten. Nur die
vollständige Beschreibung der
einzelnen Befehle in der Online-Dokumentation gibt auch Hinweise auf
die avanti-Besonderheiten. Zuerst einige Sonderbefehle
#xyz Text * Die Kategorie #xyz Text 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+#xyz Text * 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 ²u Meier an #90 anhängen
$a-#xyz Text * 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 Zeichenkette "ABC" durch "XYZ" Hier darf #nnn keine #u-Variable sein!
_ABC_XYZ_ * Ersetze die Zeichenkette "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ässt. 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 Zähler ist z statt Z zu setzen.
Alphabetische Liste der FLEX-Befehle
Von den nachfolgenden Befehlen genügen jeweils die ersten 3 Buchstaben, also z.B. var statt variable , dow statt download , aber auch down etc. würde funktionieren. (Bei avanti waren früher die Befehlswörter vollständig anzugeben, das wurde jedoch umgestellt )
Nochmal der Hinweis: die genauen Befehlsbeschreibungen erhält man über das alphabetische Register . (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
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 Die Datei name öffnen und in einem aresqa-Listenfenster anzeigen. 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 |i prompt = Vorgabe ask +|i prompt = Vorgabe Aufforderung zu einer Eingabe. Die eingegebene Zeichenkette 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ässt, 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 |i prompt = 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.
Find-Menü öffnen / 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 c all gilt: Die Abarbeitung der Befehlskette geht erst weiter, wenn man das externe Programm verlässt. Bei C all , 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:
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.
Die vorher im selben FLEX (!) mit open zum Lesen geöffnete Datei wird geschlossen. Am Ende des FLEX passiert das automatisch.
close r Wenn gerade eine Ergebnismenge besteht, wird diese geschlossen und gelöscht.
close v (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.
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ässt 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.
display "xABC" display +"xABC" deposit "xABC" Abschnitt #-x in den Anzeigeparametern ausführen. Die Zeichenkette 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 f num kurz: dis f num 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 )
download ab V27.2 siehe export *
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
* Der rechenbefehl wird als arithmetischer Ausdruck interpretiert und das Ergebnis in die `interne Variable` kopiert.
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 der 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:
Jedes op ist einer der Operatoren + - * / ^
, vor einem op muß immer ein Spatium stehen.
Ein elem kann sein:
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 * Aktuellen Satz exportieren (wie über Menü Export). Mit E erfolgt der Export über PrintParameter statt ExportParameter, aber in dieselbe Datei. 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 export p/f... ändern.
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ß exp 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 D 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 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 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 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 Zeichenkette, die write erzeugt hat, wird an den Export übergeben, und zwar an die Sprungmarke #-X der Parameter. Dort ist die Zeichenkette unter dem Variablennamen #u1 verfügbar. Das Ergebnis des Exports wird in die Exportdatei geschrieben. 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 download oder write ) 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.
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 F amily wird die Ergebnismenge auch sofort angezeigt, mit f amily nicht. Tip: Bei download 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.
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 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 download 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 Zeichenkette 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
#i,j,k,...
*
(Erg.Menge aus Satznummern bilden)
Damit kann
man mehrere Sätze mit ihren internen Nummern i,j,k,... zu
einer Erg.Menge zusammenfassen.
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 s num 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ässt 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 i xyz=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.
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 [iV] 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.
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.
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.
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 oder if greater N befehl avanti if lN befehl oder if less N 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 Zeichenkette 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 Zeichenkette 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 Zeichenkette abc enthält, wird befehl ausgeführt.
if *#nnn_abc_ befehl oder if *#nnn,abc, Wenn Kategorie #nnn im aktuellen Datensatz die Zeichenkette 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. Es hat
Vorschläge gegeben, daß
man aus
einem FLEX heraus einen anderen starten können müsse,
nach dessen
Beendigung
der aufrufende dann aber weiterlaufe. Dies ist nicht machbar, denn ein
FLEX ist
kein Objekt, sondern ein nicht-rekursives Unterprogramm. Alles andere
wäre
weitaus komplexer und ist unter den gegebenen Umständen und
Randbedingungen
unrealistisch. Realistisch war
allein der
Einbau eines
"include"-Befehls, der in einen FLEX an der von ihm besetzten Stelle
eine andere Datei einbaut, bevor dann die Abarbeitung beginnt. Dieser
Befehl
wird so eingesetzt: ... beliebiger FLEX-Text include
upx.flx ... weiterer FLEX-Text Beim Einlesen der
diese Zeile
enthaltenden
FLEX-Datei bewirkt sie, daß
an ihrer
Stelle dann die Datei upx.flx
eingefügt wird. Diese Technik ist nicht rekursiv, d.h. in
upx.flx
könnte nicht
abermals ein "include" stehen, es würde nicht
ausgeführt! ACHTUNG: Der Befehl "include"
ist kein
richtiger FLEX-Befehl, denn vor der Ausführung verschwindet er
ja. Er
muß
vollständig angegeben sein, d.h.
incl
nnn.flx klappt nicht, und es
muß ein
Dateiname
folgen, getrennt durch genau ein Leerzeichen, //-Kommentar dahinter ist
möglich. Es ist, wie man
leicht
einsieht, nicht
möglich, die FLEX-Gesamtgröße von 64000
Byte durch includes zu umgehen!
Vorgabe des
Dateinamens mittels
iV (wie bei vielen Befehlen möglich, also
"dynamisches include") geht aus den genannten Gründen nicht:
der
Befehl steht ja zur Ausführungszeit gar nicht mehr da, sondern
der Text
der
dadurch geladenen Datei.
Wenn die
gewünschte Datei nicht
gefunden
wird, kommt eine Fehlermeldung, der FLEX wird nichtsdestotrotz
ausgeführt. Will man die Meldung
verhindern,
bleibt
also nur: eine leere Datei des betr. Namens bereitstellen, statt gar
keine. Will man auf das
Nichtvorhandensein im FLEX
reagieren, müßte man etwa so schreiben: ... beliebiger
FLEX-Text include upx.flx jump
notfound :weiter ... weiterer FLEX-Text end :notfound
und in der
include-Datei upx.flx
müßte als letzter Befehl stehen: jump
weiter
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 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 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.
Steuerung des
Zusatzprogramms JanaS
Das Programm janas.exe wird gestartet und zeigt die Datei j.htm, falls nicht vorher mit einem Befehl janas x ein anderer Kennbuchstabe x eingestellt wurde - dann wird x.htm gezeigt.. Diese Befehle betreffen das externe Programm janas.exe. Es öffnet ein Browser-Fenster, das seinerseits Rückmeldungen an a99 geben kann. Dazu dienen "spezielle Links", die der Systemverwalter in eigenen HTML-Seiten anlegen kann. Eine ausführliche Dokumentation zu JanaS findet man in dem Text janas.htm .
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 download , siehe dort. erstellt eine Datei KATLIST.ASY und schreibt hinein die Liste der erlaubten Kategorien (laut CFG).
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ässt 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 avanti 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 download brief realisiert.
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 a ngelegt . 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.
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ässt 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. 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).
prev [Gegenteil: next , weitere Optionen siehe first ] * Der vorige Satz der Erg.menge wird geladen und angezeigt Wichtig bei Schleifen! Den ersten Satz lässt 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.
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 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ässt.
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 * 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).
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 * Setzung diverser Werte für den weiteren Verlauf. Wenn auf set nichts folgt, wird der Inhalt der iV genommen.
set b Bookmark : Lesezeichen auf den aktuellen Satz setzen. (Anzeigen: show b)
set c0/c1 Eingabedaten sind ASCII / ANSI (e.adt und insert -Befehle) Default ist 0. 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 pX Primärschlüssel für update wird an der Sprungmarke #-X bestimmt. (default @)
set R name Die aktuelle Ergebnismenge erhält den Namen name
set rec loc/fre * (avanti: set lock / set unlock) Datensatz für Schreibzugriff blockieren/freigeben
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 uxyz * Modus für update . x und y wie bei DOS-UPDATE (siehe Handbuch, Kap. 9), also z.B. set u 41 . 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 wm / wn Fenster auf maximale Größe setzen / Fenster auf Normalgröße und -position setzen. set xab * Die
Umcodierung für das Suchen mit dem Befehl srx, also mit
regulären Ausdrücken auf die p- bzw. q-Befehle
der Index-, Display- oder Exportparameter setzen:
a = i d x Index- / Display- / Exportparameter (avanti: nur i und x)
b = p q p- / q-Tabelle Falls
nicht gesetzt : dann werden die Codes der Indexparameter benutzt, und
zwar diejenigen, die das A in a wandeln. Bei der A-Konfiguration ist
das die q-Tabelle, bei der N.CFG aber die p-Tabelle.
Diese Setzung wird auch wirksam für die Befehle find _xyz_ bzw. find ,xyz, und für if %xyz%. Hinweis: Testen kann man die Tabellen mit dem Befehl xcode ab 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 offline Liste der "In Bearbeitung" befindlichen Sätze 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) Stat Zeige den Inhalt der iV im Statusfeld (unten rechts) 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 \\ .
spaces * Mehrfach-Leerzeichen innerhalb des iV-Textes beseitigen, zwischen "..." und '...' bleiben sie jedoch stehen.
srx regex * im Text der iV nach dem regulären Ausdruck regex suchen. Wenn regex fehlt, wird der Inhalt der Variablen #u!! genommen.
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.
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 Wenn umgekehrt eine Kategorie in den Hintergrund kopiert und gelöscht werden soll: var ""\ins #unnn Wenn eine Nutzervariable #uxy in eine Kategorie #nnn kopiert werden soll: v ar #uxy\ins #nnn 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 Zeichenkette 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
|