Bei diesem Aufruf wird dem EDT eine Anweisung bzw. Anweisungsfolge zur Ausführung übergeben.
Grundsätzliche Unterschiede zur IEDTCMD
-Funktion:
Der EDT muß bereits geladen und initialisiert sein.
Es kann kein Bildschirmdialog geführt werden (@DIALOG und @EDIT sind nicht erlaubt).
Der EDT kann nicht beendet bzw. entladen werden (@HALT, @RETURN und @MODE sind nicht erlaubt).
Es kann keine EDT-Prozedur gestartet werden (@INPUT und @DO sind nicht erlaubt).
Folgende Anweisungen sind an der IEDTEXE
-Schnittstelle erlaubt:
Im Gegensatz zum Verhalten des EDT V16.6 wird das Flag EGLSTXIT
im EDTGLCB
auch bei jedem Aufruf über die IEDTEXE
-Schnittstelle ausgewertet. Bei Rückkehr zum aufrufenden Programm werden die Unterbrechungsroutinen des EDT, falls sie angefordert wurden, wieder abgemeldet. Ist das aufrufende Programm eine Anweisungs- oder Anwenderroutine, wird bei Rückkehr zum EDT bezüglich der Unterbrechungsbehandlung der Zustand wiederhergestellt, wie er vor dem Aufruf der externen Routine war.
Tritt ein Syntax- oder Laufzeitfehler auf, wird die Abarbeitung sofort mit einem entsprechenden Returncode und einer Fehlermeldung unterbrochen. Bei einem Syntaxfehler dient das Feld EGLCMDS
(EDTGLCB
) als Fehlerzeiger. Dieser zeigt auf den Beginn der fehlerhaften Anweisung innerhalb der Anweisungsfolge. Aus Kompatibilitätsgründen wird das erste Zeichen nach dem Satzlängenfeld mit '1'
nummeriert (das erste Zeichen der übergebenen Anweisungsfolge hat bei dieser Zählung die Nummer '3'
). Die Zählung erfolgt grundsätzlich in Zeichen, nicht in Bytes. Es wird der Returncode EUPSYERR
übergeben oder EUPRTERR
übergeben.
Im Gegensatz zur IEDTCMD
-Schnittstelle darf die IEDTEXE
-Schnittstelle auch innerhalb einer Routine, die eine benutzerdefinierte Anweisung bearbeitet, bzw. innerhalb einer Anwenderroutine (siehe Abschnitte Benutzerdefinierte Anweisungen - @USE und Anwenderroutinen - @RUN) für Anweisungen an die aufrufende Instanz des EDT verwendet werden.
Beim Aufruf der IEDTEXE
-Funktion aus der Anweisungsroutine einer benutzerdefinierten Anweisung darf keine weitere benutzerdefinierte Anweisung eingegeben werden.
Kontrollstrukturen
Folgende Datenbereiche müssen vor dem Aufruf der IEDTEXE
-Funktion in der Benutzerroutine definiert werden:
der Kontrollblock (
EDTGLCB
)die Anweisung oder Anweisungsfolge (
COMMAND
)
Der Kontrollblock EDTGLCB
ist im Abschnitt „EDTGLCB - Globaler EDT - Kontrollblock“ beschrieben. Der Puffer COMMAND
ist im Abschnitt „Anweisungsfolge in einem Puffer (COMMAND)“ beschrieben.
In der Anweisungsroutine einer benutzerdefinierten Anweisung sollte der Kontrollblock EDTGLCB
verwendet werden, der vom EDT übergeben wurde.
Aufruf
Folgende Angaben sind notwendig (siehe Übersichtstabelle):
Versorgen der Kontrollblockfelder im
EDTGLCB
Versorgen des Datenfeldes
COMMAND
mit der AnweisungsfolgeAufruf der Einsprungadresse
IEDTEXE
mit der Parameterliste
Übersichtstabelle
(Kontrollblöcke siehe Abschnitt „Generierung und Aufbau der Kontrollblöcke“).
Einsprungadresse |
Parameterliste |
Aufrufparameter | Rückkehrparameter | ||
| EGLUNIT EGLVERS EGLINDB EGLCCSN |
| EGLRETC EGLRMSG EGLCMDS EGLFILE EGLUSR1 EGLUSR2 EGLUSR3 |
Returncodes
EGLMRET | EGLRS1 |
|
|
EGLMRET
und EGLRS1
sind Felder des Kontrollblocks EDTGLCB
.
Bedeutung der Returncodes siehe Abschnitt „EDTGLCB - Globaler EDT - Kontrollblock“.
Aufruf im C-Programm
Benötigte Include-Dateien:
#include <stdio.h>
#include <iedtgle.h>
Auch im C-Programm wird die Funktion IEDTEXE
mit der Adresse von EDTGLCB
und dem auszuführenden Kommando aufgerufen:
IEDTEXE(&glcb,&command);