UB BRAUNSCHWEIG
Symbolfoto
  • Impressum
  • Startseite
  • allegro-C von A-Z
  • Druckversion


 Kurzdokumentation aller FLEX - Befehle


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


FLEX ist eine Skript- oder Makrosprache für das Windows-allegro-System. Fast alle Vorgänge, die man mit der Hand auslösen kann, sind auch über einen FLEX-Befehl ausführbar, aber auch noch viele andere. Die   Befehlssprache   des avanti -Servers ist weitgehend kompatibel und ist in diese Dokumentation integriert; auf Besonderheiten wird jeweils hingewiesen. In einem eigenen Abschnitt wird auf avanti-Besonderheiten eingegangen.

                 FLEXikon : Alphabetisches Register der Befehle

              Wie FLEXt man?    Sonderbefehle  

         Befehle mit  */N kennt auch der avanti -Server  bzw. NUR dieser,

                      (*) bedeutet: bei avanti  gibt es Abweichungen.
 

activate  addform    ansi/ascii   *
aresqa     ask          button 
call        ccopy/cpaste  choose
close       compress   N copy   *
crypt   * string   *    date/day 
delete      deposit/display dos/Dos
echo   N end   * erase   *
eval   * exec               export extern 
family      fcopy          fetch 
file         find   (*)    first   *
flex        flip             fnam 
form        fsize           ftime 
get   (*)   help   (*)     if   (*)
*include    index input          insert   *
janas       jump   * keycheck 
label *   last   * list   N
load         menu           message
mkdir        new   *        next   *
noyes        open           order   *
perform   * phrase         prev   *
print       put   *         qrix   (*)
read   (*) Rechnen   *    rename 
repeat       return   *    save 
select       set/switch   (*) show
sleep/slice  spaces          srx * STOP 
sub            transfer     undo 
update   * upload   * var   *
view          write   *                 
xcode   * xml   * yesno
e.adt          Nicht-Befehlswort Kommentare   *
Interne Variablen:          iV   / iZ   *    Freie Var. 
Texteinschluß:                          include   (d.h. andere Datei in
die FLEX-Datei einbauen)
Sonderbefehl NUR avanti:       Datenbankwahl/Identifikation  

 



                         FLEXikon : Befehle nach Funktionen geordnet 

( * = auch in avanti, (*) = in avanti etwas anders)

   Wie FLEXt man?      Sonderbefehle

 

Allgemeines  cstring *  include insert *
set/switch (*) var *  
Kommentare * Nicht-Befehlswort

Stringverarbeitung Sonderbefehle ansi * ascii *
crypt * deposit spaces  
xcode *  srx *

Steuerbefehle activate call dos/Dos
end * exec   flex
if (*) jump * label *
perform * repeat return *
sleep slice STOP

Rechnen * date/day eval

Datei-I/O addform   close   delete
fcopy fetch file
fsize ftime get (*)
mkdir open rename
write xml *

Datenbank: 
Satzebene: copy * erase * export *
extern transfer input
new * put *
Ergebnismenge: choose exp set * load_
read (*) family save
order * update * upload *
Suche/Navig.: find (*) first * get (*)
next * prev * sub
Index: qrix (*)

 

Bedienoberfläche ? aresqa button
display flip fnam
help (*) index keycheck
last * menu message
noyes phrase show
undo view yesno

Erfassung/Ausgabe ask ccopy/cpaste export
form print select

Variablen iV   /   iZ * Einbettung besondere

 

NUR avanti compress echo list

 

 

 Funktionsübersicht        Alphabetisches Register  


  Beispiele  

  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.


Wichtig:

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.) 
Innerhalb von Zeilen kann man Kommentare mit // abgrenzen.

 

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  :

 FLEX-Gesamtdokumentation

 


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.
Wenn man eines der im folgenden blau unterlegten Befehlswörter anklickt, wird die betr. Seite der Voll-Dokumentation in a99 aufgeschlagen.  Das geht nur, wenn man diesen Text von a99 im JanaS-Fenster benutzt!

 

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 .

activate 

                (Nur in einem ExFLEX sinnvoll) Das Programm rückt in den Vordergrund. 

 

activate i  

Fokus in das Feld i setzen. Es gibt 4 Felder: 

1 : Auswahlfeld 

2 : Schreibfeld 

3 : Befehlszeile 

4 : Anzeigefeld 

Die aktuelle Fokusziffer erhält man mit dem Befehl  var Q  

 

addform dateiname  

Die Datei dateiname muß eine korrekte Formulardatei sein. Sie wird zusätzlich an die bereits geladene Formulardatei hinten angehängt.  Mit  if no befehl    kann man checken, ob es gelungen ist, d.h. ob die Datei existierte. 

 

ansi   *   Die interne Variable ist ASCII-Code, mache daraus ANSI (Windows) 

ascii * Umgekehrt: die iV ist ANSI-Code, mache daraus ASCII (DOS) 

 

aresqa   name

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. 

 

button f / i / j 

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:  

 

ccopy  

                Der Inhalt der iV wird in die Zwischenablage kopiert.  

cpaste  

                Der Inhalt der Zwischenablage (Clipboard) wird in die iV kopiert.  

 

ccopy d  

                Der gesamte Inhalt des Anzeigefeldes wird in die Zwischenablage kopiert.  

cpaste d  

cpaste d+  

cpaste d0           

                Der Inhalt der Zwischenablage wird in das Anzeigefeld eingefügt an der momentanen Cursorposition. 

Wenn + gesetzt ist, wird der Inhalt am Ende angefügt. Bei 0 wird er am Anfang eingefügt. 

Soll der alte Inhalt überschrieben werden, setzt man vorher  var ""\show IV

 

ccopy w  

      Der Inhalt des Schreibfeldes wird in die Zwischenablage kopiert.  

cpaste w  

                Der Inhalt der Zwischenablage wird in das Schreibfeld kopiert. 

 

 

choose Suchbefehl  

Es wird die Ergebnismenge gebildet und angezeigt. Anders als bei Find wird der FLEX nicht beendet, sondern nach Verlassen der Kurzanzeige fortgesetzt. 

Die Kurzzeile des ausgewählten Satzes wird in die interne Variable kopiert - mehr passiert nicht. Mit dem Befehl load aber kann man gleich danach den ausgewählten Satz laden lassen, wenn damit etwas passieren soll.  Eine Anzeige der Sätze erfolgt, anders als bei Find, nicht.

Wird die Erg.menge mit [Esc] verlassen, ist die iV leer. Außerdem kann man den Abbruch auch mit  if cancel ...  checken. 

Fehlt der Suchbefehl , wird dafür der Inhalt der iV genommen. 

Steht * statt Suchbefehl , wird ddie aktuelle Erg.Menge genommen. 

 

close

                Die vorher im selben FLEX (!)  mit  open  zum Lesen geöffnete Datei wird geschlossen. Am Ende des FLEX passiert das automatisch. 

 

close 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. 

 

crypt 

Der Inhalt der iV wird mit einem geheimen Algorithmus verschlüsselt. Anschließend kann man die iV beliebig weiter verwenden. Die Verschlüsselung ist nicht reversibel, lä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       *
oder  Z=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:


        elem op elem op ... elem

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

exec flex  

Ein anderer FLEX wird gestartet, der aktuelle FLEX damit beendet. flex   muß mit x oder X beginnen; wenn X, dann muß der Name einer FLEX-Datei folgen.  

 

Export

export  *  

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 &#2345; , die durch Klartext ersetzt werden sollen. Voraussetzungen: im Ersetzungsregister sind die Sequenzen korrekt indexiert in den Indexparametern ist das Zeichen & auf den Wert 9 gesetzt.  Siehe   Verlautbarung 154  .

Achtung: Den Datensatz in einem solchen FLEX nicht anschließend speichern, denn die Sequenzen sind dann als solche nicht mehr da. Diesen Befehl also nur einsetzen, wenn es nur um Export von Daten geht.

 

export a / export A    

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 *  

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.  
Hinweis: In a99 muß man schreiben:  find or #i,j,k,... um dieselbe Erg.Menge zu bilden.
Sonderfall: Wenn eine Erg.Menge nur aus dem Satz mit der internen Nummer m zu bilden ist:  find or #m


find rnum
 

Aus der aktuellen Erg.Menge wird der num-te Satz geladen. Mit if no ... checkt man, ob es diesen nicht gibt. 

 

find edit 

Sonderfall! Die bearbeiteten Sätze werden als Erg.Menge zusammengefaßt. (Wie Menüpunkt "Extras | IN ARBEIT befindl. Sätze")

 

find new 

Sonderfall! Die neuen Datensätze werden als Ergebnismenge zusammengefaßt. (Wie Menüpunkt "Extras | Neu, noch nicht gespeichert") 

 

find 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.
Dabei entsteht keine Erg.Menge! Wenn man das will, dann:  
find or #1

 

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 #xyz 

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  *  

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. 


 

janas 1

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 .


janas url   startet JanaS, dieses zeigt dann die Webseite mit der Adresse url an.

janas file:///c:/allegro/abc/xyz.htm
    So lässt man sich von JanaS eine beliebige HTML-Datei xyz.htm zeigen, die irgendwo im Dateisystem liegt. 

janas file:////allegro/abc/xyz.htm
    So muß es aussehen, wenn  \\allegro\abc\xyz.htm  ein UNC-Name ist. 

janas name  
    veranlaßt JanaS, die Datei   name    zu zeigen, die auf dem Verzeichnis HTML liegen
    (unterhalb des ProgDir) und eine HTML-Datei sein muß.


janas  
    Der Inhalt der iV wird genommen und ausgeführt. In der iV kann eine der oben
    beschriebenen Angaben stehen, die man vorher mit einem var-Befehl hineingeschrieben hat.


janas 0  
    Das Programm JanaS wird gestoppt und abgebrochen, falls es läuft.
    Einbau dieses Befehls in _endflx.flx ist zu erwägen, um sicherzustellen,
    daß nach Beendigung von a99 auch JanaS beendet wird. Zwingend notwendig ist es nicht.

  
Beispiele:
   janas http://www.allegro-c.de
   janas doku.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. 

katlist 

erstellt eine Datei KATLIST.ASY und schreibt hinein die Liste der erlaubten Kategorien (laut CFG). 

 

keychk 

Die Tastatur wird geprüft. Wurde [Esc] gedrückt oder 'x', kommt die Frage: "Abbruch? j/n" (wurde nicht [Esc] gedrückt, hat dieser Befehl keine Wirkung)  

Anschließend kann man mit  if yes ... bzw.  if no ...  angeben, was passieren soll, wenn der Nutzer [Ja] bzw. [Nein] geantwortet hat.  

Das Programm macht nicht weiter, solange nicht mit [Ja] oder [Nein] geantwortet wurde. 

Will man in  Schleifen eine Abbruchmöglichkeit einbauen, setzt man also z.B. ein  keychk\if yes jump abbruch 

 

last    [Gegenteil: first , siehe dort für die Optionen sub und view !]   *  

Der letzte Satz der Erg.menge, in der vorher eingestellten Sortierfolge, wird geladen und angezeigt. Mit if no ... kann man checken, ob es keinen solchen gibt, weil die Ergebnismenge leer ist.  Mit  last r wird zugleich die Kurzzeile in die iV geladen.  Den ersten Satz lä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.

load   

Nur nach vorangegangenem  choose ... (siehe dort) 

Der ausgewählte Satz wird geladen. Nochmaliges load lädt wieder den Ausgangssatz. 

 

 

menu Text

Dient zur Flexibilisierung des Hauptmenüs.

Der anwendungsspezifische Menüpunkt zwischen "Option" und "?" wird auf den Wert Text gesetzt. Dieser Menüpunkt löst den FLEX aus, der in #uXz steht. Dies kann vorher beliebig vorbereitet werden.

Wenn Text fehlt, wird der Inhalt der iV genommen. Man kann also vorher mit dem var -Befehl die iV vorbereiten. z.B.

var #uxy

menu

Als Default für den anwendungsspezifischen Menüpunkt dient der Text in Zeile 243 der Datei UIFEGER.

 

message Text

Text wird in einer Messagebox angezeigt und muß mit [OK] bestätigt werden. 

Wenn der Nutzer etwas entscheiden soll: statt dessen Befehl   yesno

Wenn er etwas eingeben soll: Befehl    ask

      Wenn  Text fehlt, wird der Inhalt der iV genommen. 

In   Text  können auch Zeilenschaltungen eingebaut sein: Codes 13 10 einsetzen beim Aufbau der iV mit dem Befehl  var .

Message n,Text

Text wird in einer Messagebox für  n  Sekunden angezeigt und verschwindet dann. 

Wenn  n  fehlt, sind es 10 Sekunden.

Wenn  n,Text fehlt, wird der Inhalt der iV genommen.

Tastenfunktionen: + addiert 10 Sekunden,  - subtrahiert 10 Sekunden

Esc bricht ab, Enter bestätigt. Anschließend kann man mit "if no .." bzw. "if yes .." testen, ob Esc oder Enter gedrückt wurde. Wenn die Zeit normal abläuft, gilt auch "if yes .."

 

mkdir dir

Ein neues Verzeichnis namens dir wird 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.

 

new / new 0  *

Es wird ein neuer, leerer Datensatz angelegt. Der aktuelle Satz wird vorher in den Offline- und in den Hintergrundspeicher kopiert (bei  new 0  passiert das nicht). 

Nachfolgend manuelle Eingabe oder #- und insert -Befehle, bzw. transfer , um Kategorien aus dem Hintergrundspeicher zu übernehmen!

next    [Gegenteil: prev , weitere Optionen siehe first ]   *

Der nächste Satz der Erg.menge, in der vorher eingestellten Sortierfolge, wird geladen und angezeigt. Mit if yes/no ... kann man checken, ob es einen nächsten Satz gab. Wichtig bei Schleifen! Den ersten Satz lä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).

print

Anzeigefenster ausdrucken (wie Print-Button)

print p name

Print-Parameter wechseln (name.apr laden)

Put        Speichern mit Rückfrage (Anzeige wird erneuert, denn der Satz kann sich durch PV-Routinen verändern)

put *   Speichern ohne Rückfrage (Anzeige wird dann nicht erneuert)

Der aktuelle Satz wird im aktuellen Zustand gespeichert (wie bei [Speichern]-Button)

Put new

put new

Der aktuelle Satz wird als neuer Satz gespeichert. (Dasselbe würde  copy\put   bewirken.)

War es ein Online-Satz und wurden keine Veränderungen gemacht, entsteht eine Dublette.

Mit if no ... kann man checken, ob das Schreiben nicht funktioniert hat, es steht dann in der iV eine Fehlermeldung.

 

qrix N ixn abc   *

Qrix N ixn abc   *

Wie index , aber Kopie des Registerabschnitts ab abc  in die iV bzw. bei Qrix direkt in die Exportdatei. 

N gibt die Zahl der gewünschten Zeilen an; wenn N fehlt, wird 20 angenommen. Ist N negativ, wird rückwärts vorgegangen, und dann ist abc die letzte Zeile der Anzeige. In der iV sind die Zeilen durch ¶ getrennt.  Mit show IV kann der Abschnitt sofort in die Anzeige gebracht werden, mit ins ...  in eine Kategorie.

ixn kann ein symbolischer Registername sein oder eine Angabe wie  |3 für Register 3.

abc kann aus 2 Teilen bestehen, getrennt durch das Zeichen '<'. Dann endet die Auflistung mit dem letzten Eintrag, der kleiner ist als das, was hinter '<' steht.

 
qrix f function    *

Der Wert function (0,1,3) steht für die Funktionsweise:

   (Die Einstellung gilt nur bis zum Ende des FLEXes!)

0 : Registerzeilen genau so, wie sie sind  (default)

1 : Satznummern hinzugefügt, getrennt durch : RegZeile:nn:nn:nn

3 : gleichfalls, aber für jede Satznummer eine eigene Zeile: nn|RegZeile

   (Damit hat man sofort eine ViewListe)

4 : Sonderfall: Schreibt in die Exportdatei nur die Satznummern. Diese kann dann wie eine PRESTO-Ergebnismenge eingelesen werden ( read set name )

qrix t i   *

 Der Wert i (>=0) wird als Schwelle für die Indexanzeige genommen. Nur Zeilen mit mindestens i Einträgen werden dann gezeigt. Nützlich z.B. für visuelle Dublettenkontrollen. Der Wert bleibt beim anschließenden Aufblättern des Index erhalten, kann aber durch 

qrix t 0  abgeschaltet werden.

read

read rec name

Datei  E.ADT  bzw. Datei name   wird eingelesen. Diese kann eine Reihe von Kategorien enthalten, die dann alle in den aktuellen Satz eingefügt werden. (Erfassungshilfe; manuell mit ALt+ä oder Menü "Bearbeiten | Read")

Wenn name fehlt, wird der Inhalt der iV genommen.

 

read extern

Datei EXTERN.DAT wird als externe Erg.menge eingelesen (wie über das Menü "Datei").

read file name

Datei name wird als Externdatei eingelesen. Es muß sich um eine Datei vom Typ .ADT oder .ALG handeln. Sie wird den schon vorhandenen Offline-Daten hinzugefügt.

Vorher kann man mit   erase off die Offline-Datei bereinigen.

 

read set name

Datei name wird als PRESTO-Ergebnismenge eingelesen. Die Datei besteht nur aus einer Titelzeile und dann einer Liste von Satznummern in beliebiger Folge, je eine Nummer pro Zeile. (Eine solche Datei namens X.SET entsteht, wenn man vom Menü "Datei" aus PRESTO aufruft und dann eine Ergebnismenge exportiert.) Es spielt keine Rolle, wie die Datei entstanden ist. Mit if no ...  kann man checken, ob es gelang und die Datei etwas enthielt, bevor man sie mit show list anzeigen lä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).

save edit/result/offline

Speicherung aller bearbeiteten (incl. der neuen) Datensätze bzw. 

der aktuellen Ergebnismenge (nur der bearbeiteten Sätze darin) bzw. 

aller Offline-Sätze.

select prompt=antw1|antw2|antw3|...

select +prompt=antw1|antw2|antw3|...

Auswahlliste anbieten mit den angegebenen Antworten. Die ausgewählte Antwort wird dann in die iV kopiert. Wenn + vor dem prompt steht, wird die Antwort an die IV angehängt. 

Jede Antwort kann von der Form A=B sein, dann wird nur A benutzt. Sinnvoll ist das, wenn statt Klartext nur ein Code einzugeben ist.

Mit if "" ...  kann man testen, ob etwas ausgewählt wurde.

Mit if cancel ...  kann man checken, ob die Auswahl mit [Esc] verlassen wurde.

Sonderfall: select ?  Liste der benutzten Hilfetexte zur Auswahl. Wenn man anschliessend den Befehl help   gibt, wird die ausgewählte Seite geladen.

Varianten:

select prompt= #usp .

In #usp muß dann die Liste der Antworten stehen 

select #usp.

In #usp müssen dann  prompt und Antwortliste stehen. 

Wenn hinter select gar nichts steht, wird der Inhalt der iV genommen.

set  *  

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.

 

transfer #nnn

Kategorie #nnn aus dem Hintergrundspeicher in die iV kopieren. Mit anschließendem ins... kann man den Inhalt in eine Kategorie kopieren, z.B.  tra #40\ins #40

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

undo

Entspricht dem Button [Wechseln] : Umschalten zwischen Bearbeitungs- und Originalzustand.

Zur Erläuterung: Für jeden während einer Sitzung "angefaßten" Satz hat das Programm in seinem Offline-Speicher den aktuellen Zustand bzw. den Zustand vor der letzten Speicherung des Satzes. Mit undo   wird zwischen diesen beiden Zuständen umgeschaltet.

update   dateiname     *

Zusammen mit upload entsprecht dies gleichnamigen avanti-Funktionen bzw. DOS-UPDATE-Funktionen (Kap. 9)

Wichtig: (sonst passiert nichts)

Vor einem update muß man mit set u... den Modus setzen; --> set , und evtl. mit 

set p... den zu benutzenden Primärschlüssel vorwählen. 

upload   dateiname     *

Das entspricht einem update mit Modus 01, d.h. jeder Satz wird als neuer Satz behandelt (keine Prüfung des Primärschlüssels) und eingemischt. Der Ablauf kann allerdings interaktiv überwacht und kontrolliert werden. 

Nicht nur Grunddateien (Typ .ALG) kann man mit update oder upload einmischen, sondern auch (wie bei avanti) die einfacheren Externdateien (Typ .ADT), die man sich auch mit anderer Software erstellen kann.

Für beide Fälle gilt: Fehlt   dateiname , wird angenommen, daß die Daten gleich anschließend folgen, im Externformat, als Bestandteil der FLEX-Datei.     

 

variable cstring   *     (Was ist ein  cstring  ? Siehe unten) 

Der  cstring  wird interpretiert und in die interne Variable kopiert. Ein cstring kann in derselben Weise bei dem Befehl   write verwendet werden (siehe unten)

Fehlt cstring, wird statt dessen der Inhalt der iV interpretiert, d.h. es entsteht daraus ein neuer Inhalt in der iV.

Sonderfall: Mit   var ""   wird die iV leer gemacht.

variable +cstring    *

Inhalt an die iV hinten anhängen. Hiermit kann man beliebige Inhalte zu einer 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       [zur View-Technik siehe "allegro news" 58]

ViewListe name öffnen bzw. auch anzeigen. Das Öffnen ist notwendig, wenn man den Befehl  download view  benutzen will, ohne die ViewListe anzeigen zu lassen.

Die Datei muß im ASCII-Code sein, sonst muß man vorher  set c1  und hinterher  set c0  schreiben.

Die ViewListe kann anschließend mit download brief als solche exportiert (in die Ausgabedatei geschrieben) werden und mit download view die Datensätze selbst in der Reihenfolge der ViewListe.

 

write  *

Inhalt der internen Variablen in die Ausgabedatei schreiben (ohne Änderung)

write ^

Dasselbe, aber Strg-Kombinationen  werden durch die Steuercodes ersetzt (^A durch 1 etc.), genau umgekehrt wie beim Befehl  fetch

Nur nach einem Einlesen von Daten mit fetch ist das sinnvoll. Die Daten können zwischenzeitlich in eine Kategorie oder #u-Variable kopiert und mit var #... wieder in die iV zurückgeholt worden sein.  Wegen der Umwandlung in ^A etc. geht kein Steuerzeichen dabei verloren.

write   cstring   *      [Das ist genau der avanti-Befehl]    (Was ist ein  cstring  ? Siehe unten) 

So kann man am schnellsten Satzinhalte und beliebigen Text ausgeben. Der cstring kommt zusätzlich in die iV!

Beispiel:

write "Titel: " #20 n "Verfasser: " #40 n "Ort: " #74 " (" #76 ")"

produziert eine Ausgabe in dieser Form:

 

   Titel: Hamlet

   Verfasser: Shakespeare, William

   Ort: London (1982)  

 

Das 'n' ist der Befehl für eine "neue Zeile". Dies muß ausdrücklich gesetzt werden, denn es wird kein Zeilenvorschub automatisch eingebaut!

Schlichte Exporte kann man hiermit, genau wie bei avanti, ohne Exportsprache machen.

Soll dabei von ASCII nach ANSI umcodiert werden, muß man das über die iV machen, also

var cstring \ansi\write   statt nur   write cstring  

 

xcode ab*

Der iV-Inhalt wird umcodiert mittels einer der p/q-Tabellen, und zwar

a : d/i/x  d = Displayparameter, i = Indexparameter, x = Exportparameter (avanti: nur i und x)

b : p/q      die p- bzw. q-Tabelle der betr. Parameter


 

xml 0/1/2/3  *

Der aktuelle Datensatz wird in einer von vier XML-Varianten ausgegeben.

Bedeutung der Ziffern: Anstelle von  ... kommt jeweils der Inhalt einer allegro-Kategorie heraus.

 

0 :   <label>...</label>

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

 

1 :   <feld nr="knum ">...</feld>

      knum ist die Kategorienummer

 

2 :   <feld lb="label ">...</feld>

      Wie 0, aber statt der Kategorienummer wird im Attribut  lb   das Label angegeben

 

3 :   <feld lb="label " nr="knum ">...</feld>

      Kombination aus 1 und 2

export  ab V27.2 siehe   export *


 

yesno Frage

noyes Frage

Die Frage wird in einer Ja/Nein/Abbruch-Box gezeigt. Ohne Antwort geht es nicht weiter.

Die Antwort kann mit einem nachfolgenden if -Befehl ausgewertet werden, z.B. 

if no end

Die Antwort bleibt bestehen, bis z.B. das nächste yesno oder noyes oder ask etc. kommt, d.h. es können sich mehrere if-Befehle darauf beziehen.

Bei "noyes" ist der Button [Nein] statt [Ja] der default-Button! Dann muß der User bewußt auf [Ja] gehen - [Enter] bedeutet sonst Nein.

Wenn  Frage fehlt, wird der Inhalt der iV genommen. 

In   Frage  können auch Zeilenschaltungen eingebaut sein: Codes 13 10 einsetzen beim Aufbau der iV mit dem Befehl  var .

 

//  *

Leitet eine Kommentarzeile ein. In a99 wird auch jede Zeile als Kommentar behandelt, die mit Leerzeichen anfängt, in avanti ist das nicht so.

 

 

Was ist ein cstring?    (Abkürzung von "code string")

Die Befehle variable und write   werden dadurch zu äußerst mächtigen Instrumenten. 

Ein cstring  ist eine Kette von Code-Elementen, beliebig zusammengesetzt, wobei die Elemente aus vier Typen bestehen, getrennt durch Leerzeichen:

 

1.          "xyz"      Zeichenketten , in "..."  oder '...' eingeschlossene druckbare Zeichen

2.          d d d        ASCII-Codes als Dezimalzahlen (z.B.  13 10 für einen Zeilenvorschub oder 27  für den Escape-Code)

3.          #nnn      Kategorietexte   (nnn kann auch eine #u- oder Sondervariable sein)

            #nnn$a   Teilfelder (nur der Inhalt des Teilfeldes wird ausgegeben)

Es gibt für 3. noch zwei Möglichkeiten der Verfeinerung:

 

A.   An beide Formen kann man einen Ausdruck (i,j) anhängen, mit i>=0 und j>=0. 

Dann wird vom Kategorie- bzw. Teilfeldtext nur der Teil ab Position i genommen (Zählung beginnt bei 0) und zwar j Zeichen (wenn j=0, dann der gesamte Rest - (0,0) wäre also alles).

Ist i größer als die Länge der Kategorie, kommt nichts heraus.

Ist j größer als die Länge des Restes, wird nach rechts mit ' ' aufgefüllt!

(so kann man Ausgabefelder mit fester Länge erzeugen)

 

B.   Die zweite Möglichkeit: man hängt einen Ausdruck der Form 

      (b"xyz") oder  (B"xyz") oder  (e"xyz")   oder  

                (t"xyz") oder  (T"xyz") oder  

                (f"xyz") oder  (F"xyz") an;

damit wird aus dem Kategorietext der Teil hinter "xyz" bzw. vor dem ersten "xyz" bzw. vor oder hinter dem letzten "xyz" herausgelöst, "xyz" selbst wird in jedem Fall nicht mit ausgegeben. Wenn "xyz" nicht vorkommt, ist bei b und T das Ergebnis leer, bei B, e und t unverändert.  Bei f  bzw. F werden die in "..." stehenden Zeichen (einzeln!) vorn bzw. hinten beseitigt.  

(Anm.: Nur ein solcher Ausdruck kann jeweils angehängt werden - die Exportsprache ist mit ihren   Manipulationsbefehlen   immer noch mächtiger. Allerdings kann man mehrere Befehlspaare    var   #uxy(...)\ins #uxy   aufeinander folgen lassen, um einen Feldinhalt diffizil aufzubereiten.)

 

4.            Außerdem  kann man eine Anzahl Besonderer Variablen in den Ausgabetext einbauen, es wird dann jeweils der entsprechende Text statt des Buchstabens automatisch eingesetzt: 

                (einfach nur einen der folgenden Buchstaben, außerhalb von "...")

                Die ersten neun entsprechen gleichnamigen Aufruf-Optionen der DOS-Programme.

   Testen:  Starten Sie den FLEX    cstring.flx   

 

A             Access-Modus der aktuellen Sitzung (Berechtigungsstufe aus INI-Datei)

B             Name der Datenbank

D             Datenbank-Pfadname (mit \ am Ende)

E             Name der aktuellen Exportdatei

K             Name der Konfigurationsdatei

K1           nur der erste Buchstabe davon

L             Sprachbezeichnung (INI-Befehl  Language=...)

N             Nummer der Datei für neue Sätze

P             Name des Programmverzeichnisses (mit \ am Ende)

Y             Pfad der IndexDatei (InxName in INI, falls anders als D, sonst leer) (DOS-Option -y)

 

C             Copy-Verzeichnis (für Sicherungskopie, siehe _BACKUP.FLX /_RESTORE.FLX)

F              File : hinter F folgt direkt ein Dateiname; der Inhalt dieser Datei (!!) wird in die Ausgabe eingefügt; folgt kein Dateiname, wird Inhalt der iV als Name genommen.

G              Name der LOG-Datei (LogName-Befehl in INI, DOS-Option -L )

H              Liste der Register-Überschriften (Headlines, |-Zeilen in Indexparametern)

I               Indexliste : die Liste der symbolischen Registernamen (I-Befehle der Indexparameter)

M              Inhalt der Environment-Variable TEMP (dort besteht Schreibrecht!)

                bzw. der Inhalt des INI-Befehls DbAux , wenn dieser gesetzt wurde.

O              Name der Offline-Datei

Q              Fokusziffer: (Fokus setzen mit Befehl activate i )

                  1 : Auswahlliste

                  2 : Schreibfeld

                  3 : Befehlszeile

                  4 : Anzeigefeld

R              Restriktionen : Liste der Namen der Restriktionen (R-Befehle) 

                               Trennzeichen bei I und R ist der Code 20 ( ¶ )

S             Short-title Überschrift (aus Zeile |<="..." der Indexparameter)

T             Titel der Datenbank (aus Zeile |a="..." der Indexparameter)

                   bzw., wenn gesetzt, die Zeile DbTitle aus der INI-Datei

U             Name der aktuellen Erg.Menge

V             Name der INI-Datei (Vorgaben), mit der gestartet wurde

W            Arbeitsverzeichnis (Working directory)

X             Name der letzten Hilfedatei

Z             Wert der internen Zahlenvariablen   iZ  

Zk            dasselbe, gerundet auf k Stellen nach dem Komma (k=0...9)

 

a             Name der aktuellen Anzeigeparameter (DOS: Option -p)

b             Breite der Kategorienummern, Textanfang. Bei A.CFG:  2,4

ci            ( i =1...499) Zeile i der UIF-Datei. Nummern 70-89 sind frei für Anwender 

ca           momentaner Inhalt/Umfang des Arbeitsspeichers, in Bytes  // momentane Anz.Felder,Max.Zahl

cp           momentaner Inhalt/Umfang des Phrasenspeichers, in Bytes // momentane Zahl, Max.1200

cr           momentaner Inhalt/Umfang des Reservespeichers, in Bytes // momentane Anz.Felder,Max.Zahl

d            Name der aktuellen Druckparam (DOS: Option -q)

e            Name der aktuellen Exportparam (DOS: Option -e)

f             find Befehl (Name) der letzten ErgMenge

g            Zeile im Index, die zuletzt benutzt wurde

h             headline des Registers, dessen Nummer in der iZ steht (vorher z.B. mit var "1"\= hineinschreiben)

i              interne Nr. des Datensatzes

j              Nummer der .cLD-Datei des Satzes

jb            Länge des Datensatzes in Byte (aktuelle Länge im Arbeitsspeicher)

jf             ... in der Datei (wird schon beim Einlesen des Satzes festgestellt)

k0           Anzahl der Kategorien (Felder) des aktuellen Satzes

k1  k_1    Erstes Feld des Satzes (incl. Kategorienummer), k_1: dasselbe ohne # am Anfang

k2  k_2    Nächstes Feld (leer, wenn das letzte erreicht war)

k3  k_3    Letztes Feld 

k4  k_4    Voriges Feld (leer, wenn das erste erreicht war)

kn / kr     Ganzen Datensatz in die iV kopieren, Feldtrennung Code 10 bzw. 13 10

l             Größe ("length") der ErgMenge

m            Name des Programms und Nummer der Version (z.B. a99 v21.3)

n            neue Zeile, gleichwertig: 13 10

o            Anzahl der Offline-Sätze

p            Primärschlüssel des aktuellen Satzes

q            Nummer der aktuellen ErgMenge

r             relative Nummer des Satzes in der ErgMenge

s             Kurzzeile des Satzes (aus der .STL-Datei)

t             Gesamtzahl Sätze (total number of records)

u             Datum und Uhrzeit

vi            Phrase i (i=1 - 255) (->  phrase   i text )

w            Inhalt des Schreibfeldes

x             Name des externen Editors

y             Name der Indexparameter (InxParam in INI, falls anders als B) sonst wie B (Option -I)

z0            Anzahl Zeilen in der Anzeige (incl. aller Leerzeilen)

z1            Erste Zeile des Anzeigefeldes (als ASCII-Text, ohne RTF-Steuerzeichen!)

z2            Nächste Zeile

z3            Letzte Zeile (Leerzeilen am Ende unberücksichtigt)

z4            Vorige Zeile

zc            Aktuelle Zeile (wo sich die Schreibmarke befindet)

               Dann: #uzC=dieselbe Zeile, aber __ (2x Unterstrich) an der Stelle, wo die Schreibmarke sich befindet

                  #uzD = Fliptext, falls Schreibmarke innerhalb eines solchen

                  #uzE = Flipbefehl (zugehörige Kategorie #uZi, einschl. der Nummer, also #uzE#uZi...)

zn            Nummer der Zeile, in der sich die Schreibmarke befindet

zv            Nummer der ersten oben sichtbaren (visible) Zeile

 

Wenn k2, k4, z2 oder z4 verwendet werden, kann man anschließend mit   if no   ... checken, ob es kein Ergebnis mehr gab.

Das ist wichtig für Schleifen.

 

Tip: Sie können diese Variablen alle leicht einzeln ausprobieren. Geben Sie z.B. ein, um den Primärschlüssel unter dem Datensatz zu sehen:

 

x var p\show +IV

 

  




 

Interne Variable (kurz iV)    avanti

Diese gehört zu den wichtigsten Elementen des FLEX-Konzepts!

Die iV ist eine temporäre Zeichenkette, die nur so lange besteht, bis sie durch einen weiteren Befehl überschrieben wird. Das geschieht z.B. durch die Befehle ask , date und vor allem  var . Die Ergebnisse dieser und anderer Befehle stehen automatisch in der iV und können direkt danach benutzt werden.

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 den iV-Inhalt in die Kategorie #98 zu kopieren).

Bei vielen Befehlen wird, wie gesagt, automatisch etwas in die iV geschrieben, das steht jeweils in der Beschreibung der Befehle. Das Befehlsergebnis kann entweder mit dem nächsten Befehl direkt verwendet werden, denn viele Befehle nehmen als Default-Argument automatisch den iV-Inhalt, so z.B.   find   , oder man speichert den Inhalt in einer Uservariablen, siehe unten.

 

Interne Zahl und interner Zähler

 

Das Rechnen in der FLEX-Sprache        avanti

 

Die FLEX-Sprache ist nicht geschaffen und daher nicht geeignet für wissenschaftliches Rechnen. Sie hat lediglich Hilfsfunktionen für die Grundrechenarten. Diese Hilfsfunktionen sollen dazu dienen, Summen, Produkte und Durchschnittswerte auszurechnen, Währungsbeträge umzurechnen sowie einen Zähler für Schleifen zu ermöglichen. Das ist alles.

Es gibt nur zwei eigene Variablen für das Rechnen: die "interne Zahl" und den "internen Zähler". Ansonsten lassen sich Zahlenwerte in den #u-Variablen speichern. Dann sind es ganz normale Zeichenketten.

Wir verwenden für die Beschreibungen diese Abkürzungen:

 

iZ = interne Zahlenvariable / iz = interner Zähler

 

Mit beiden Werten kann man auf gleiche Weise umgehen, der Unterschied ist nur, daß iZ als Dezimalzahl, iz aber als ganze Zahl behandelt wird.

Achtung: in den Befehlen schreibt man immer nur Z bzw. z, nicht   iZ bzw.  iz !

 

Nach jedem Rechenbefehl ist das Ergebnis dann wieder in der internen Zahlenvariablen bzw. im Zähler.  Mit einem ins-Befehl kopiert man es in ein Datenfeld oder eine #u-Variable, wenn es aufbewahrt werden soll.

 

Verwertung der Variablen:

Mit    var Z  bzw. var z   kann man die Zahl bzw. den Zähler in die   iV  kopieren und dann für alle denkbaren Zwecke verwenden. Z und z können in jedem " cstring " an jeder beliebigen Stelle vorkommen, d.h. man könnte z.B. auch schreiben

wri "Ergebnis: " Z

 

Und so sehen die Rechenbefehle aus (jeweils auf eigener Zeile):

 

Z = N   N   bzw. iV in 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 das Produkt aus beiden, bzw.

Z / N   iZ/N   bzw. iZ / iV  ausrechnen, bzw.

 

z % N   iz%N   bzw. iz % iV  (Divisionsrest) ausrechnen

 

Wenn N fehlt, wird jeweils der Wert der iV genommen:

Die Leerzeichen links und rechts von den Operatorzeichen können entfallen, es können aber auch mehrere sein.

(d.h. es wird dann iZ bzw. iz  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!)

Für den Zähler gilt dasselbe, nur mit z statt Z. Den Divisionsrest gibt es jedoch nur bei z.

Für den Zähler, weil ganzzahlig, wird bei  / das Ergebnis ganzzahlig abgerundet, d.h. am Komma abgeschnitten.


Bei avanti muß immer ein Leerzeichen hinter dem Rechenzeichen stehen!

 

Beide internen Variablen können in   Bedingungsprüfungen  verwendet werden, und zwar so:

 

if z>n  command

if z= n  command

if z<n  command

und dasselbe gilt für Z . Beim Vergleichen werden alle Zahlen als Dezimalzahlen behandelt.

Tip: Statt   if z>=n   (was nicht funktioniert!) kann man schreiben   if not z<n .

 

Für Programmierer: die möglichen Werte für Ganzzahlen liegen zwischen -2,147,483,648 und 2,147,483,647 ("long integers")

Die Werte für Dezimalzahlen zwischen   +/- 1.7E+/-308  (sog. "double"-Werte)

Man kann also z.B. schreiben:  Z = 2E-4 (für 2/10000).

 

Hinweis: Eine Besonderheit sind die Funktionen für   Datumsberechnungen .

 

Beispiel 1: Der im Teilfeld a von   #123   stehende Wert soll um 1 erhöht werden:

var #123$a

z=

z+1

var z

ins $a-#123

 

Beispiel 2: In #udm steht ein DM-Betrag, der durch 1.95583 geteilt und dann in #ueu gespeichert werden soll, gerundet auf 2 Kommastellen (Umrechnung DM ->Euro), das Ergebnis soll auch angezeigt werden. Das geht so:

 

  DM-Betrag steht in #udm, iZ auf diesen Wert setzen:

var #udm

Z=

  Dann multiplizieren (Ergebnis steht dann wieder in iZ)

  Für das Umgekehrte: statt / ein * einsetzen (Multiplikation)

Z/ 1.95583

var #udm " DM sind umgerechnet: " Z2 " Euro"

mes

var Z2

ins #ueu

 

Beispiel 3:  EURO.FLX      ausführen 

 

Beispiel 4:   SUMME.FLX  Summieren einer Kategorie über die Ergebnismenge oder die gesamte Datenbank.

 

Beispiel 5: Wenn man eine Schleife 100mal abarbeiten will, geht man so vor:

z=0

:loop

...   Befehle

z+1

if z<100 jump loop

...

Dasselbe funktioniert mit Z statt z, d.h. man kann auch zwei Schleifen ineinander verschachteln.

 

Beispiel 6: Man will prüfen, ob der Wert in Feld #77 größer als der in #uwx ist. Wenn ja, soll "Stimmt" ausgebeben werden.

Das geht so:   (denn dann ist #77 - #uwx > 0 )

 

var #77

Z=

var #uwx

Z-

   in der iZ steht jetzt die Differenz #77 - #uwx

if Z>0 mes Stimmt

 

 

 

 

Sondervariable    avanti

Es gibt eine Anzahl von Variablen, die man in den Befehlen var und write verwenden kann. Diese sind im Text über   cstrings   beschrieben.

 

Uservariable    avanti

Will man die iV länger aufbewahren, dann

mit  ins #uxy  in die  Uservariable #uxy kopieren. Und  

mit  var #uxy   von dort später wieder zurück in die iV.

Die Namen der  Nutzervariablen sind auf 2 Zeichen beschränkt! x und y können aber beliebige Zeichen sein. #uab ist nicht dasselbe wie #uaB, #uAb oder #uAB, das sind vielmehr 4 unabhängige Werte! Diese Variablen sind auch innerhalb der Exportparameter verwendbar. Wenn dort eine solche Variable gesetzt wird, etwa in den Anzeige- oder Indexparametern, hat man sie anschließend auch in FLEX zur Verfügung.

Die mitgelieferten FLEXe nutzen i.d.R. die Variablen #uvX und #uwX (X = Großbuchstabe).

 


 



                                                                        

Freie Variablen        avanti      ab V25.6  (2005-06)

In den Befehlen variable und write   konnten bis V25.5 keine Variablen außer den zum System gehörigen und auch in den Exportparametern genutzten #u-Variablen verwendet werden. Deren Namensraum ist begrenzt, weil die Namen nur aus 1 oder 2 Zeichen bestehen können, und man kann damit keine selbsterklärenden Namen bilden.  

Daher wurde ein eigenes, neues Konzept in die FLEX-Sprache eingebaut, das hier beschrieben wird:

 

Die Namen müssen mit $ beginnen, können ansonsten aber alle Zeichen enthalten bis auf das Leerzeichen, und sie können ziemlich lang sein. Groß- und Kleinschreibung sind signifikant. D.h. $Name, $nAmE  und  $NaMe  sind drei verschiedene Variablen.

 

Man muß vorher nichts Besonderes tun, um $-Variablen zu nutzen. Die Existenz einer $-Variablen beginnt mit ihrer Besetzung, d.h. es gibt keine gesonderte Deklaration. Es gibt auch keine Typen: alles ist Text, wie bei den #u-Variablen.

 

Grundprinzip:

Die Sache ist sehr einfach: Wo bisher im FLEX ein  #uxy  stehen kann, da darf nun auch ein  $name   stehen, mit völlig gleicher Wirkungsweise. Wenn in $name ein Feldinhalt   mit Teilfeldern steht, geht auch  $name$x ,  um das Teilfeld $x herauszulösen.

 

Ausnahmen:

1. Ein if-Befehl analog zu  if #nnn geht nicht

Dies umgeht man so:

var $name

if "" jump fehler

 

2. Auch if -Befehle mit $-Variablen innerhalb der Bedingung gehen nicht, wie etwa  if >$name

 

3.   Manipulationsbefehle   sind nicht möglich, also z.B.  var $name(b"xyz")

Dies umgeht man durch Konstruktionen wie:

var $name

ins #uab

var ... #uab(b"xyz") ...      // statt  var ... $name(b"xyz") ...

 

4. Innerhalb von Manipulationsbefehlen geht so etwas wie  (b"#uab") . Auch hier kann nicht statt #uab eine $-Variable stehen.

 

Im einzelnen:

 

Besetzen kann man solche Variablen auf zwei Arten:

Wenn  $Titel   eine $-Variable sein soll, dann weist man ihr folgendermaßen einen Wert zu:

(genau wie bei #u-Variablen schreibt man Name und Wert einfach nebeneinander hin!)

 

$Titel Die Glocke

 

  oder auch (ebenfalls wie bei #u-Variablen)

 

var "Die Glocke"     oder             var #20          usw.

ins $Titel                             ins $Titel

 

Hinter dem Spatium darf nur Text auftreten, der dann komplett der Variablen zugewiesen wird bis zum Zeilenende;

//-Kommentare gehen in solchen Zeilen nicht, wie ja auch in den mit # beginnenden Zeilen.

  [Das Spatium ist hier wichtig, anders als bei #u-Variablen, weil die Länge des Namens unbestimmt ist!]

In beiden Faellen werden die Zeichen nicht umcodiert, d.h. im ersten Fall, so genommen, wie sie im FLEX stehen.

 

Was nicht geht, ist   $Titel #20  u.dgl.! (Bei #u-Variablen auch nicht)

 

Verwenden kann man die Variablen so:

 

var ... $Titel ...      bzw.    write ... $Titel ...

 

d.h. jedem var- bzw. write-Befehl als Teil des cstring. Zwischen AnfÜhrungszeichen hat $ keine Wirkung, d.h. dort werden Variablennamen nicht erkannt!

Mit ... ist angedeutet, daß dort beliebige andere Elemente stehen können, die es in einem cstring geben kann.

 

Es geht auch indirekt, wenn z.B. in #uab die Zeichenfolge $Titel steht:

var #uab

var

 

danach steht der Inhalt von $Titel in der iV. (Denn der var-Befehl ohne Argument nimmt den Inhalt der iV als cstring.)

 

Bei Zuweisung eines neuen Wertes an dieselbe Variable geht der alte Wert verloren.

 

Prüfen, ob eine Variable belegt ist, geht so:

var $name

if ="" var "$name nicht belegt";mes

 

Innerhalb eines FLEXes sind alle Variablen global, d.h. in einem FLEX-Unterprogramm kann es keine lokalen Variablen geben. Für die Übersichtlichkeit sorgt man z.B. durch geeignete Namensgebung.

 

Löschen kann man eine Variable, indem man ihr nichts zuweist:

 

$Titel

 

Sie verschwindet dann aus der Liste, d.h. wird nicht einfach nur mit der leeren Zeichenkette belegt!

 

Aber nun noch eine sehr wichtige Besonderheit:

Wenn der Name mit einem Grossbuchstaben beginnt, bleibt die Variable für die gesamte Sitzung erhalten, sonst nur innerhalb des FLEXes, d.h. bei Beginn eines neuen FLEXes ist sie nicht mehr da. Es gibt also zwei Variablenlisten: die "kleine" und die "große". Wir nennen sie $0- bzw. $1-Variable, der Grund wird unten noch klar.

 

Welchen Umfang ein solcher Variablenspeicher haben kann, ist schwer zu sagen. Bei Tests gab es mit 5000 (fünftausend) noch keine Probleme.

Es handelt sich um eine MFC-Listenklasse, deren Grenzen setzt Windows bzw. der darin verwendete Hash-Algorithmus.

 

Was damit nicht geht:

1.        Einen Variablennamen trunkiert ansprechen   (wie mit   #ux.  in den Exportparametern)

2.        Die Variablenliste alphabetisch geordnet durchsehen und dabei bearbeiten/löschen  (wie mit Alt+r die #u-Variablen)

3.        Gezielt eine Anzahl Variablen mit einem Befehl löschen    (wie mit   #ux~ , um alle #uxy zu löschen)

 

Denn die Listenklasse arbeitet mit einem Hash-Algorithmus, und der läßt solche Dinge nicht zu. Dafür ist er schnell.

 

Was sich von selbst versteht:

Die #u-Variablen bleiben in allen Aspekten unverändert erhalten. In den Parametern hat man keinen Zugriff auf die neuen $-Variablen, mit denen man sich folglich nebenwirkungsfrei austoben kann.

 

Zusatzbefehle

Der Umgang mit den $-Variablen wird dadurch komfortabler, denn man wird sie irgendwann nicht nur einrichten und benutzen wollen.

 

first $0

first $1

  Setzt einen Zeiger auf das erste Element der "kleinen" bzw. "großen" Liste und holt dessen Inhalt in die iV.

 

next $0

next $1

  Holt das nächste Element aus der kleinen bzw. großen Liste in die  iV, immer in der Form  $name Text

  Mit  if no  oder    if ""  kann man testen, ob es kein Element mehr gab.  Somit kann man in einer Schleife die ganze Liste abarbeiten.

  Zur Ordnung siehe den nächsten Punkt:

 

$0>dateiname

$1>dateiname

   Schreibt den Inhalt des kleinen bzw. großen Variablenspeichers in die Datei  dateiname.

   Eine erkennbare Ordnung gibt es dabei nicht - das ist typisch für Hash-Listen. D.h. die beim Einlesen gegebene Ordnung bleibt nicht erhalten und läßt sich auch nicht restaurieren.

   Die Liste hat genau die Form  $name Text, und das bedeutet, daß man sie unmittelbar wieder als FLEX zum Einrichten derselben Variablen benutzen kann.

 Daraus ergibt sich:

 

SuperTip

Schreibt man in seinen _endflx.flx den Befehl  $1>var.flx und in den _start.flx an das Ende den Befehl   exec var, so hat man in der nächsten Sitzung immer sofort wieder die "großen" Variablen der letzten Sitzung. Selbstrgb(190, 30, 60)end kann man dies nutzen, um alles mögliche an Information von Sitzung zu Sitzung zu transportieren...

 

Klar, es wird sofort der Wunsch nach gezählten Arrays kommen, mehrdimensional natürlich! Aber alles auf einmal geht nicht.

 

ZusatzTip

Mit dem nachfolgenden kleinen FLEX kann man den Variablenspeicher nach einer Zeichenfolge durchsuchen lassen. Wenn es mal mehrere 1000 sind, kann das ja sinnvoll sein... Gefunden werden sowohl die Namen wie die Inhalte der Variablen!

 

**************************************************************************

  VS.FLX :    Suche in den $1-Variablen nach einer bestimmten Zeichenfolge

  2005-06-20  Gross-/Kleinschreibung egal

 

ask Suchwort

  Eingegebenes Suchwort in #usw speichern

ins #usw

 

first $1

if no mes Keine Variablen!;end

 

:loop

  Variable in #uzs kopieren (Form ist immer $Name Text)

ins #uzs

  Darin nach dem Inhalt von #usw suchen (gross/klein egal)

  (hinten . anhaengen, sonst wuerde das Suchwort nicht gefunden, wenn

   es genau am Ende des Variablentextes steht!)

var #uzs "."

var (b"~#usw")

  Wenn es vorkam, anzeigen

if not "" var #uzs;yes;if yes jump found

  naechste Variable holen

next $1

if not no jump loop

mes Ende!

end

:found

var "Gefunden: " #uzs

mes

 

*************************************************************************

 

Zum Testen wurde eine Kurzliste des BachWerkeVerzeichnisses verwendet, darin standen 1360 Zeilen wie diese:

$Bwv20 O Ewigkeit, du Donnerwort

 

Diese Datei kann man so wie sie ist als FLEX laufen lassen, dann hat man 1360 "große" Variablen belegt!

Gibt man nach dem Einlesen diesen Befehl:

 

x var $BWV214\mes

 

so erscheint richtig:    Tönet, ihr Pauken! Erschallet Trompeten!

 

 

Welchen Umfang ein solcher Variablenspeicher haben kann, ist schwer zu sagen. Bei Tests gab es mit 5000 (fünftausend) noch keine Probleme.
Es handelt sich um eine MFC-Listenklasse, deren Grenzen setzt Windows bzw. der darin verwendete Hash-Algorithmus.

Was damit nicht geht:
Einen Variablennamen trunkiert ansprechen   (wie mit   #ux.  in den Exportparametern)
Die Variablenliste alphabetisch geordnet durchsehen und dabei bearbeiten/löschen  (wie mit Alt+r die #u-Variablen)
Gezielt eine Anzahl Variablen mit einem Befehl löschen    (wie mit  #ux~ , um alle #uxy zu löschen)

Denn die Listenklasse arbeitet mit einem Hash-Algorithmus, und der läßt solche Dinge nicht zu. Dafür ist er schnell.

Was sich von selbst versteht:
Die #u-Variablen bleiben in allen Aspekten unverändert erhalten. In den Parametern hat man keinen Zugriff auf die neuen $-Variablen, mit denen man sich folglich nebenwirkungsfrei austoben kann.

Zusatzbefehle
Der Umgang mit den $-Variablen wird dadurch komfortabler, denn man wird sie irgendwann nicht nur einrichten und benutzen wollen.

first $0
first $1
  Setzt einen Zeiger auf das erste Element der "kleinen" bzw. "großen" Liste und holt dessen Inhalt in die iV.

next $0
next $1
  Holt das nächste Element aus der kleinen bzw. großen Liste in die  iV, immer in der Form  $name Text
  Mit  if no  oder   if ""  kann man testen, ob es kein Element mehr gab.  Somit kann man in einer Schleife die ganze Liste abarbeiten.
  Zur Ordnung siehe den nächsten Punkt:

$0>dateiname
$1>dateiname
   Schreibt den Inhalt des kleinen bzw. großen Variablenspeichers in die Datei  dateiname.
   Eine erkennbare Ordnung gibt es dabei nicht - das ist typisch für Hash-Listen. D.h. die beim Einlesen gegebene Ordnung bleibt nicht erhalten und läßt sich auch nicht restaurieren.
   Die Liste hat genau die Form  $name Text, und das bedeutet, daß man sie unmittelbar wieder als FLEX zum Einrichten derselben Variablen benutzen kann.
 Daraus ergibt sich:

SuperTip
Schreibt man in seinen _endflx.flx den Befehl  $1>var.flx und in den _start.flx an das Ende den Befehl  exec var, so hat man in der nächsten Sitzung immer sofort wieder die "großen" Variablen der letzten Sitzung. Selbstrgb(190, 30, 60)end kann man dies nutzen, um alles mögliche an Information von Sitzung zu Sitzung zu transportieren...

Klar, es wird sofort der Wunsch nach gezaehlten Arrays kommen, mehr-
dimensional natürlich! Aber alles auf einmal geht nicht.

ZusatzTip
Mit dem nachfolgenden kleinen FLEX kann man den Variablenspeicher nach einer Zeichenfolge durchsuchen lassen. Wenn es mal mehrere 1000 sind, kann das ja sinnvoll sein... Gefunden werden sowohl die Namen wie die Inhalte der Variablen!

**************************************************************************
  VS.FLX :    Suche in den $1-Variablen nach einer bestimmten Zeichenfolge
  2005-06-20  Gross-/Kleinschreibung egal

ask Suchwort
  Eingegebenes Suchwort in #usw speichern
ins #usw

first $1
if no mes Keine Variablen!;end

:loop
  Variable in #uzs kopieren (Form ist immer $Name Text)
ins #uzs
  Darin nach dem Inhalt von #usw suchen (gross/klein egal)
  (hinten . anhaengen, sonst wuerde das Suchwort nicht gefunden, wenn
   es genau am Ende des Variablentextes steht!)
var #uzs "."
var (b"~#usw")
  Wenn es vorkam, anzeigen
if not "" var #uzs;yes;if yes jump found
  naechste Variable holen
next $1
if not no jump loop
mes Ende!
end
:found
var "Gefunden: " #uzs
mes

*************************************************************************

Zum Testen wurde eine Kurzliste des BachWerkeVerzeichnisses verwendet, darin standen 1360 Zeilen wie diese:
$Bwv20 O Ewigkeit, du Donnerwort

Diese Datei kann man so wie sie ist als FLEX laufen lassen, dann hat man 1360 "große" Variablen belegt!
Gibt man nach dem Einlesen diesen Befehl:

x var $BWV214\mes

so erscheint richtig:   Tönet, ihr Pauken! Erschallet Trompeten!


                   

 

avanti- Auftragssprache,   Sonderbefehle   und   Fehlermeldungen  

 

Der avanti-Server kann sog. "Aufträge" abarbeiten.

Ein Auftrag (engl. "job") ist eine Kette von Befehlen, formuliert in der avanti-Sprache. Der Server kann diese Befehle ausführen. Aus der avanti-Sprache ist die   FLEX-Sprache des Windows-Programms a99/alcarta ursprünglich hervorgegangen.

 

Beispiel für einen Job:  (Zeilennummern nur zur Verdeutlichung, sie stehen nicht in der Jobdatei!)

 

Zeile     Anweisungen                          Bedeutung

1           & c:\allegro                  // & leitet einen neuen Auftrag ein

2           find YOP>1990               // Restriktion setzen

3           find PER shake?           // Trunkierte Suche im Personenregister

4           list                                      // Kurztitel der Ergebnisse

5           @ DB=avdemo ID=admin/MASTER

                        // Auswahl der Datenbank, ClientID

6           AVANTI:EOJ                       // Ende-Signal

 

Von besonderer Bedeutung sind die Steuerzeilen 1 und 5:

Das &-Zeichen muß am Beginn eines Auftrags stehen. Hinter dem &  kann ein Pfadname folgen („virtueller Aufrufpfad"). Dort sucht der Server Parameter-Dateien, die im Datenbankverzeichnis nicht gefunden werden. Die Suchreihenfolge ist diese:

 

1.          Datenbankverz.

2.          Programmverz. (wo avanti gestartet wurde), aber mit angehängtem ..\etc

            also auf  c:\programme\allegro\avanti\etc , wenn avanti-cl auf

             c:\programme\allegro\avanti\bin    liegt

3.          virtueller Aufrufpfad  (steht in Zeile 1 hinter & )

 

Als Abschlußzeile muß dem Avanti-Server die gewünschte Datenbank und der Benutzername mitgeteilt werden. Diese Steuerzeile wird durch das Zeichen @ eingeleitet. Aber erst wenn der End-of-Job-Befehl (Zeile 6) angekommen ist, beginnt die Abarbeitung des Auftrags - nicht früher!

Wie ein solcher Auftrag an den Server übergeben und wie das Ergebnis angenommen wird, kann man z.B. in der Skriptdatei  av_ini.php des Paketes   phpac  sehen.

 

Die Zeilen 2 bis 4 sind die eigentlichen Anweisungen, die an der Datenbank ausgeführt werden sollen.

 

Für avanti gelten folgende allgemeine, von a99 abweichende Regeln:

 

·                      Das &-Zeichen, am Anfang der ersten Zeile stehend, markiert den Beginn eines neuen Auftrags

·           

·                      Befehlszeilen dürfen mit einem oder mehreren Leerzeichen beginnen (!)

·                       

·                     Mehrfach-Leerzeichen sind erlaubt, sie wirken wie nur ein Leerzeichen. (In "write"-Befehlen innerhalb von "..." oder '...' bleiben sie aber erhalten)

·                       

·                      Tabulatorzeichen wirken wie Leerzeichen.

·                       

·                      Kommentare werden mit // (Doppelschrägstrich) eingeleitet und können überall stehen. Der Rest der Zeile wird dann ignoriert. Kommentare sollten aus Zeitgründen evtl. nicht allzu üppig sein.

·                       

·                      In einer Zeile können mehrere Befehle stehen, sie müssen dann mit Semikolon ';' getrennt werden. Kommt in einem Suchbegriff ein Semikolon vor, muß der Text in Anführungszeichen eingeschlosen werden.

·                                  

·                      ERROR (in der Befehlsbeschreibung) bedeutet: es wird der Fehlerzustand gesetzt, wenn bei dem Befehl was schiefging.

·                        Mit dem Befehl:  if error anweisung oder  if ok anweisung  in der nachfolgenden Zeile kann man darauf reagieren und woanders hinspringen, wenn ein Fehler aufgetreten ist bzw. wenn alles ok ist. Die anweisung  kann aber auch eine Befehlsfolge sein, mit ; als Trennung.

 

 

Es folgen nun die avanti-Sonderbefehle

 

Auch der Befehl  list   ist auf avanti beschränkt, wird aber in einem eigenen Text beschrieben.

 

@ DB= datenbank ID= user/PASSWORD   

            Zugriffs-Steuerzeile am Ende des Auftrags.

            Da der Avanti-W Server mehrere Datenbanken ansprechen kann, muß der Client dem Server die gewünschte und dem Server bekannte Datenbank während der Jobübergabe mitteilen.

Außerdem sollte sich der Anwender durch die Angabe eines  eingetragenen Nutzernamens + Password identifizieren, falls er mehr als nur Lesezugriff erwartet.

Dabei steht datenbank für ein dem Avanti-Server bekannten Alias-Namen der gewünschten Datenbank und user/password identifiziert den Benutzer.

Der Server vergleicht diese Angaben mit den Eintragungen in seiner Datei  avanti.conf

Beispiel: @ DB=avdemo ID=opac/opac

Die Steuerzeile ist, das sei nochmals betont, die letzte Zeile eines Auftrags. Hinter das @ gehört ein Leerzeichen!

 

echo off  

            unterdrückt sämtliche Meldungen an den Client, die im Verlauf des Auftrags auftreten können, incl. der Fehlermeldungen.

Evt. auftretende Fehler müssen mit Hilfe der Bedingungsprüfung if error aufgefangen werden. Eine Meldung kann dann im Fehlerfall mit dem write -Befehl selbst generiert werden.

Der Befehl echo off wird in komplexen Aufträgen eingesetzt, um bei der Weiterbearbeitung von Teilergebnissen nicht zuvor die Meldungen des avanti- Servers herausfiltern zu müssen.

 

echo on       

hebt ein vorangegangenes  echo off  auf.

 

 

compress

avanti verfügt über die Möglichkeit, den Ergebnisspeicher nach dem ZIP-Methode zu komprimieren.

Dazu muß vor dem ersten Ausgabebefehl ( list, download, qrix der Befehl compress angegeben werden.

Vorteile der Komprimierung: Die Belastung im Übertragungskanal zwischen Server und Client sinkt. Das übertragene Ergebnis enthält nach der Komprimierung in der ersten Zeile den Eintrag:

ZLIB:START_COMPRESSED.LENGTH=<Zahl>

Die Startsequenz ZLIB:START_COMPRESSED weist den Client auf ein komprimiertes Ergebnis hin. Die Angabe

.LENGTH=<Zahl> ist die unkomprimierte Längenangabe. Sie ermöglicht dem Client, den für das Auspacken bereitzustellenden Speicherplatz abzuschätzen.

Als Kompressionswerkzeug wird die Funktion compress() aus der im Quellcode frei verfügbaren Softwarebibliotek ZLIB (http://www.cdrom.com/pub/infozip/zlib/) eingesetzt.

Es existieren ZLIB-Module für viele Programmier- und Interpretersprachen (z.B. C, Dephi, Basic, Perl, Python, ...).

Der Client packt das komprimierte Ergebnis mit der ZLIB-Funktion umcompress() aus.

Umgekehrt ist auch avantiin der Lage, einen komprimierten Auftrag entgegenzunehmen. Avanti wird dann das Ergebnis immer komprimiert versenden. Ein compress-Befehl ist nicht mehr nötig.

Die optionale Sequenz ZLIB:END_COMPRESSED wird bei der Auftragsannahme als Ende-Zeichen des Kompressionsteils gewertet.

Fehlt diese Angabe wird davon ausgegangen, daß alle Zeichen nach der Startsequenz in komprimierter Form vorliegen.

HINWEIS: Das komprimierte Ergebnis ist im Umfang durch die die Größe des eingestellten Ergebnisspeichers (default: 100kb)begrenzt.

 

 

Fehlerbedingungen

avanti liefert genauere Fehlerangaben als a99.

Dazu gibt es eine Erweiterung des Befehls  if error :

 

if error[= qualifier] command

 

Wenn ein Fehler beim vorangegangenen Befehl auftrat, dann c ommand ausführen. (Das kann eine Folge von Befehlen sein).

 

Die optionale Ergänzung  qualifier  differenziert den zu überprüfenden Fehlerstatus. Dafür kann man  folgende Zeichenketten einsetzen:

 

qualifier                       Bedeutung                         

locked                     Datensatz ist gesperrt

noaccess                (Schreib-)Zugriff wurde verweigert

writeerror           allgemeiner Fehler beim Schreiben in dieDatenbank (put, update).

xporterror           allgemeiner Fehler beim export-Befehl (meist Fehler in Param.Datei)

readerror              allgemeiner Fehler beim read-Befehl

ordererror           allgemeiner Fehler beim order-Befehl

qrixerror              allgemeiner Fehler beim qrix-Befehl

norecord                kein Datensatz geladen

nofile               ein (Parameter)-File konnte nicht geöffnet werden

overflow                            1. zuviele Treffer (find-Befehl)

            2. die auszugebende Datenmenge konnte vom Ergebnisspeicher nicht aufgenommen werden. Der Auftrag wurde unvollständig ausgeführt.

foundnothing      kein Treffer (find-Befehl)

endindex                            durch einen vorangegangenen qrix-Befehl wurdedas Registerende erreicht oder überschritten.

unknown                               allgemeiner Fehler (kann immer geprüft werden). Die Angabe unknown entspricht derPrüfung ohne =qualifier.

 

Nach Auftreten eines Fehlers ist eine interne Fehlernummer gesetzt. Diese kann man sich mit dem Befehl  var Err  in die iV schreiben lassen.

 



[i] zuletzt aktualisiert: 08.04.2011
Email: ub@tu-bs.de