Your Browser is not longer supported

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

{{viewport.spaceProperty.prod}}

IEDTEXE - Ausführen von EDT-Anweisungen ohne Bildschirmdialog

&pagelevel(4)&pagelevel

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 Anweisungsfolge

  • Aufruf der Einsprungadresse IEDTEXE mit der Parameterliste

Übersichtstabelle

(Kontrollblöcke siehe Abschnitt „Generierung und Aufbau der Kontrollblöcke“).

Einsprungadresse   :     IEDTEXE

Parameterliste     :     A (EDTGLCB, COMMAND)

Aufrufparameter

Rückkehrparameter

EDTGLCB: 





COMMAND

EGLUNIT
EGLVERS
EGLINDB
EGLCCSN

EDTGLCB: 

EGLRETC
EGLRMSG
EGLCMDS
EGLFILE
EGLUSR1
EGLUSR2
EGLUSR3

Returncodes

EGLMRET

EGLRS1

EUPRETOK
EUPSYERR
EUPRTERR
EUPEDERR
EUPOSERR
EUPUSERR
EUPPAERR

00
00
00
00
00
00
EUPPA04
EUPPA12
EUPPA20

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);