Your Browser is not longer supported

Please use Google Chrome, Mozilla Firefox or Microsoft Edge to view the page correctly
Loading...

{{viewport.spaceProperty.prod}}

Spezialanwendung als Anweisungsfilter

&pagelevel(3)&pagelevel

Bei Aufruf des EDT über die Funktion IEDTCMD oder IEDTEXE (siehe Abschnitt „IEDTCMD- Ausführen von EDT-Anweisungen“) hat das rufende Programm die Möglichkeit, eine benutzerdefinierte Anweisung mit leerem Benutzeranweisungssymbol als Anweisungsfilter zu vereinbaren:

@USE COMMAND = ' ' ,ENTRY=entry,MODLIB=modlib

oder im kompatiblen Format:

@USE COMMAND=' ' (name [,modlib])

Diese Routine erhält dann jede Anweisung, die

  • im F-Modus in der Anweisungszeile

  • im L-Modus oder

  • in EDT-Prozeduren

eingegeben wurde.

Die Routine erhält nicht

  • Kurzanweisungen, die im F-Modus eingegeben wurden,

  • Anweisungen, die über die Programmschnittstellen IEDTCMD oder IEDTEXE eingegeben wurden.

Die Routine erhält eine Anweisung auch dann, wenn der Anweisungsname unbekannt ist oder die Anweisung Syntaxfehler enthält.
Werden mehrere Anweisungen (mit Semikolon getrennt) eingegeben, werden die einzelnen Anweisungen nacheinander an die Routine übergeben.
Das Anweisungssymbol selbst wird nur dann übertragen, wenn es sich um eine Benutzeranweisung handelt. Führende Leerzeichen vor dem Anweisungssymbol werden nicht übertragen.

Im Feld EGLCDS (EDTGLCB) übergibt der EDT die Taste, mit der die Anweisung abgeschickt wurde.

Kann eine Anweisung nicht in den Zeichensatz umgewandelt werden, der für den Anweisungsfilter in der Initialisierungsroutine (siehe Abschnitt „Aufruf der Initialisierungsroutine zu einer benutzerdefinierten Anweisung“) vereinbart wurde, wird die Anweisung mit einer Fehlermeldung abgewiesen. Daher sollte ein Anweisungsfilter möglichst in einem Unicode-Zeichensatz arbeiten (empfohlen wird UTFE).

Anweisungsfilter können in ihrer Initialisierungsroutine auch festlegen, ob sie die Anweisung grundsätzlich in Großbuchstaben oder in Groß-/Kleinschreibung erwarten. Im ersten Fall ist durch die Initialisierungsroutine das Flag EGLCOMP (EDTGLCB) im EGLINDB zu setzen (siehe auch Abschnitt „Aufruf der Initialisierungsroutine zu einer benutzerdefinierten Anweisung“).

Ein Anweisungsfilter kann die Funktionen der IEDTGLE-Schnittstelle benutzen. Dabei gelten die gleichen Einschränkungen wie bei Anweisungsroutinen.

In einem Anweisungsfilter kann die vom EDT übergebene Anweisung nicht verändert werden (d.h. alle Änderungen werden ignoriert). Die Anweisungsroutine kann aber bei der Rückkehr zum EDT im Returncode EGLSR1 folgende Werte übergeben:.

EGLMRET

EGLSR1

Bedeutung

EUPRETOKEUPOK00Die Anweisung soll ausgeführt werden.
EUPRETOKEUPOK12EDT soll den laufenden Anweisungsdialog beenden. Es
wird zum Hauptprogramm zurückgekehrt als ob @HALT
eingegeben worden wäre.

EUPRETOK

EUPOK24

Die Anweisung soll nicht ausgeführt werden.

Hinweis

Der EDT V17.0A unterstützt im Unicode-Modus die Implementierung von Anweisungs- und Anwenderroutinen in C (einschließlich der korrekten Versorgung des C-Laufzeitsystems).

Man beachte jedoch, dass derartige Routinen nicht mit einem EDT V16.6B ablaufen können, da dieser die Anweisungsroutine nicht mit einer für das Laufzeitsystem korrekt versorgten Savearea aufruft. Im EDT V17.0A, Kompatibilitäts-Modus, wurde diese Schwachstelle beseitigt. Das Laufzeitsystem kann jedoch im Kompatibilitäts-Modus nur dann korrekt versorgt werden, wenn die Anweisungsroutine dynamisch aus einer Bibliothek geladen wird. Soll eine in C geschriebene Anweisungsroutine also sowohl im Unicode wie im Kompatibilitäts-Modus laufen, sollte sie nicht statisch zu einem Hauptprogramm gebunden werden.