Register
ask |iprompt=Vorgabe
ask +|iprompt=Vorgabe
ask prompt acon [ab V34.3]
Aufforderung zu einer Eingabe. Was der Nutzer dann eingibt, wird in der internen Variablen (iV) gespeichert.
Wenn hinter ask nichts steht, wird statt dessen der Inhalt der iV genommen, der dann entsprechend (wie oben zu sehen) strukturiert sein muß.
Wenn ein + gesetzt ist, wird die Eingabe des Nutzers an den iV-Inhalt hinten angehängt.
Für die Eingabe erscheint ein kleines Dialogfenster mit einer Eingabezeile und dem prompt als Überschrift.
i = Nummer des Index, der aufgeblättert wird, wenn man in dem Dialogfenster [Index] drückt
prompt = Aufforderungstext; erscheint dann über dem Eingabefeld
Wenn man |i wegläßt, wird das Register 1 an seinem Anfang aufgeblättert.
Im Fall daß i=0 ist, entfällt in der Eingabeaufforderung der Button [Index], d.h. das Nachschauen im Index ist dann unterbunden.
Hinter |i kann ein Präfix folgen, abgetrennt mit einem | vom eigentlichen prompt, wenn eine bestimmte Abteilung im Index aufgeblättert werden soll.
Beispiel: ask +|1D |Hochschulort=#819
Der Teil =Vorgabe kann entfallen; die Vorgabe erscheint sonst im Eingabefeld.
Vorgabe kann auch ein Datenfeld oder eine #u-Variable sein: z.B.
ask |1Verf.?=#40 legt den Inhalt von #40 als Vorgabe vor.
Aber: Die Eingabe geht nicht direkt zurück in das Feld oder die Variable, sondern in die iV ; man muß sie z.B. mit insert #40 zurück in den Datensatz übertragen, falls gewünscht.
Statt der gesamten Angabe |iprompt=Vorgabe kann auch eine Kategorienummer oder #u-Variable stehen, dann muß deren Inhalt diesem Text entsprechen. So können die Fragetexte und Vorgaben datenspezifisch individualisiert werden. Steht hinter ask gar nichts, wird der Inhalt der iV genommen (den man vorher mit var ... präpariert hat).
Mit nachfolgendem if "abc" ... prüft man, ob die Eingabe mit "abc" beginnt. Mehrere solche Befehlszeilen können aufeinander folgen, um auf unerschiedliche Eingaben entsprechend zu reagieren.
Mit if "" ... kann man abchecken, ob nichts eingegeben wurde!
Wenn die Aufforderung mit [Esc] abgebrochen wurde, kann dies auch mit
if cancel ...
festgestellt werden. Die iV ist dann ebenfalls leer.
Hat man versehentlich [Esc] gedrückt und aktiviert die Eingabe sofort neu (abermals ask ...), kann man mit dem Button [Copy] die vorher abgebrochene Eingabe zurückholen.
Hinweis: Wenn dem Nutzer nur eine Ja/Nein-Frage zu stellen ist, verwendet man den Befehl yesno .
acon Achtung:Wenn ask in einem Job xy.job vorkommt, dann starten mit acon -jxy und nicht acon <xy.job
Sonderfall:
ask @aufforderung
Der @ bewirkt, daß ein Eingabedialog für Name und Passwort kommt. 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.
Eine Vorgabe ist bei der Passwortabfrage nicht möglich.
Beispiel 1: Eine Angabe vom Nutzer abfragen und in eine Kategorie einordnen, anschließend Anzeige und Feldliste (im linken Fenster) erneuern
ask |3Geben Sie ein Schlagwort ein=#31
ins #31
disp
show rec
Beispiel 2: Die Aufforderung ist etwas komplizierter: der Name der Datenbank soll darin vorkommen. Man "bastelt" sie zuerst mit dem var-Befehl in der iV zusammen:
var "|3Gewünschtes Stichwort (Sie benutzen Datenbank " B ")"
Es kommt Umlaut vor: nach ANSI wandeln
ansi
ask
...
Der Befehl ansi muß nur gegeben werden, wenn der Text des FLEXes mit einem DOS-Editor geschrieben wird, z.B. X.EXE, nicht bei notepad.
Hier noch zwei Beispiele von vollständigen, schon recht komplizierten FLEXen:
Example 3: Siehe Datei EURO.FLX ( Euro ausführen )
Hierbei wird nicht nur eine Eingabe vom Nutzer abgefordert, es werden dann auch Rechnungen damit angestellt.
Example 4: Siehe Datei DOLLAR.FLX ( DOLLAR ausführen )
Hier kommt hinzu, daß der Kurs sich ändern kann. Dieser soll aber dann für weitere Sitzungen aufbewahrt werden...