Bedingungen festlegen

ControlEdge verwendet eine eigene Syntax für das Festlegen von Bedingungen in Entscheidungen, Iterationen und Unterbrechungen. Die Syntax wird vom Generatorteil bei der Generierung des Steuerungsmoduls in die jeweilige Zielsprache übersetzt. Sie können diese Syntax direkt eintippen; einfacher und sicherer ist es aber, wenn Sie die von ControlEdge dafür bereitgestellten Felder und Schaltflächen benutzen.

Im Bedingungsdialog finden Sie unter dem Feld, in dem die Bedingung als Pseudocode angezeigt wird, mehrere Reiter; auf jedem Reiter können Sie eine Bedingungsart festlegen.

ControlEdge setzt die so definierten Bedingungsteile in Pseudocode um und fügt sie im Textfeld Bedingung an der aktuellen Cursorposition ein, wenn Sie die Schaltfläche Hinzufügen wählen.

Wenn Sie einen Bedingungsteil ersetzen möchten, markieren Sie diesen Teil im Textfeld Bedingung. Statt Hinzuzufügen, ersetzt ControlEdge dann diesen Teil durch den neuen Bedingungsteil (die Beschriftung der Schaltfläche ändert sich in Ersetzen, sobald im Textfeld etwas markiert ist).

Um mehrere Bedingungsteile zu verknüpfen, benutzen Sie die Schaltflächen Und, Oder und Nicht. Über die Schaltfläche Klammern können sie Bedingungsteile gruppieren.

Wenn Sie die Eingabe der Bedingung abgeschlossen haben, verlassen Sie das Fenster mit OK. ControlEdge führt dann automatisch eine Überprüfung des Bedingungscodes durch.

Wenn Sie das Fenster mit Abbrechen verlassen, werden alle Änderungen an dem Bedingungscode verworfen.

Sie haben beim Definieren der Bedingungen immer die Möglichkeit, auch in der EDB unbekannte Objekte, Bausteine und Zustände zu verwenden. Beachten Sie aber, dass dies bei der EDB-Überprüfung so lange zu Warnungen führen wird, bis die entsprechenden Anpassungen auch in der EDB vorgenommen wurden.

Bedingungsarten

Abfrage eines Zustands

Diese Bedingungsart benutzen Sie, um abzufragen, ob ein bestimmtes Modul (ein bestimmter Baustein) mit einem bestimmten Zustand geendet hat. Die dafür verwendete Bedingungssyntax ist:

  Zustand von <bausteintyp> <baustein> gleich <zustand>

Wenn Sie zunächst den Bausteintyp auswählen, zeigt ControlEdge in dem Listenfeld Baustein die Bausteine dieses Typs schwarz, alle anderen grau an. Wenn Sie aus der Bausteinliste einen „grauen“ Baustein wählen, passt ControlEdge die Angabe des Bausteintyps automatisch an.

ControlEdge stellt nicht alle in der EDB definierten Bausteine zur Auswahl, sondern nur die, die in dem Steuerungsmodul aufgerufen werden. Sie können auch andere Bausteine abfragen, müssen dann aber den Namen von Hand eintippen, und anschließend bestätigen, dass Sie den unbekannten oder nicht in dem Modul aufgerufenen Baustein wirklich abfragen möchten.

Das Listenfeld Zustand wird erst aktiv, wenn ein Baustein gewählt wurde. Zustände, die in der EDB für den Baustein definiert sind, sind schwarz geschrieben, alle anderen grau. Für unbekannte Bausteine sind alle Zustände grau. Wenn Sie bei der Abfrage bekannter Bausteine Unstimmigkeiten mit der EDB vermeiden möchten, sollten Sie nur schwarz geschriebene Zustände abfragen.

Sie können auch einen „grauen“ Zustand auswählen oder einen neuen Zustand eintippen; ControlEdge macht Sie dann beim Einfügen, bei der Überprüfung des Bedingungscodes und auch bei einer EDB-Überprüfung auf die Unstimmigkeit mit der EDB aufmerksam, lässt die Abfrage jedoch als gültigen Bestimmungsteil gelten.

Abfrage einer Operation

Diese Bedingungsart benutzen Sie, um festzustellen, welche Operation vom Aufrufer, d.h. dem vorher aktiven Steuerungsmodul, ausgelöst wurde. In der Regel steht die Operationsabfrage am Anfang eines verarbeitenden Steuerungsteils, wenn ein Steuerungsmodul mehr als eine Operation bearbeitet.

Die Bedingungssyntax ist:

 Ereignis gleich <Operation> 

Wählen Sie die gewünschte Operation in dem Listenfeld Operation aus. Operationen, die in der EDB für das Steuerungsmodul definiert sind, sind schwarz geschrieben, alle anderen grau. Wenn Sie Unstimmigkeiten mit der EDB vermeiden möchten, sollten Sie nur schwarz geschriebene Operationen abfragen.

Sie können auch eine „graues“ Operation auswählen; ControlEdge macht Sie dann beim Einfügen, bei der Überprüfung des Bedingungscodes und auch bei einer EDB-Überprüfung auf die Unstimmigkeit mit der EDB aufmerksam, lässt die Abfrage jedoch als gültigen Bestimmungsteil gelten.

Falls die benötigte Operation noch nicht in der EDB definiert ist, können Sie auch den Namen einer neuen Operation das Listenfeld eintippen. ControlEdge fragt Sie dann, ob Sie diese unbekannte Operation wirklich benutzten möchten. Falls Sie sich vertippt hatten, wählen Sie Nein, und wählen Sie die Operation neu aus der Liste aus. Andernfalls erfragt ControlEdge eine Umschreibung für die neue Operation. Auch diese Abfrage behandelt ControlEdge als gültigen Bedingungsteil, meldet die Unstimmigkeit jedoch bei Überprüfungen.

Abfrage der Existenz eines Objekts

Diese Bedingungsart benutzen Sie, um abzufragen, ob ein bestimmtes Datenobjekt existiert oder nicht. Die dafür verwendete Bedingungssyntax ist:

 Objekt <objekt> existiert

Wählen Sie das gewünschte Objekt in dem Listenfeld Objekt aus.

Falls das benötigte Objekt noch nicht definiert ist, können Sie auch den Namen eines neuen Objekts in das Listenfeld eintippen. ControlEdge fragt Sie dann, ob Sie dieses unbekannte Objekt als lokales Objekt neu anlegen möchten. Falls Sie sich vertippt hatten, wählen Sie Nein, und wählen Sie das Objekt neu aus der Liste aus.

Falls Sie das Objekt als globales Objekt oder Parameterobjekt benötigen, beenden Sie die Bedingungsdialog und fügen Sie zuerst das Objekt in der Schnittstelle hinzu.

Abfrage des Ergebnisses einer manuellen Entscheidung

Diese Bedingungsart benutzen Sie, um festzustellen, welche Reaktion vom Anwender auf eine manuelle Entscheidung erfolgte.

Bevor Sie die Reaktion auf eine bestimmte manuelle Entscheidung abfragen können, muss die manuelle Entscheidung definiert worden sein.

Die Bedingungssyntax ist:

 Antwort auf "<manuelle Entscheidung>" ist "<antwort>" 

Wählen Sie zunächst in dem Listenfeld Bezeichnung die manuelle Entscheidung aus, die abgefragt werden soll. ControlEdge zeigt dann in dem Listenfeld Antwort alle für diese Entscheidung definierten Antworten an. Erst nachdem Sie auch die Antwort ausgewählt haben, können sie den Bedingungsteil hinzufügen.

Abfrage des Grunds einer Unterbrechung oder Wiederaufnahme

Diese Bedingungsart benutzen Sie, um festzustellen, aus welchem Grund eine Unterbrechung erfolgt, oder aus welchem Anlass die Verarbeitung wiederaufgenommen wurde.

Bevor Sie den Unterbrechungs- oder Wiederaufnahmegrund für eine bestimmte Unterbrechung abfragen können, muss die Unterbrechung definiert worden sein.

Die Bedingungssyntax ist:

 Grund zur Unterbrechung von "<Name der Unterbrechung>" ist "<Unterbrechungsgrund>" 
 bzw.
 Grund zur Wiederaufnahme von "<Name der Unterbrechung>" ist "<Wiederaufnahmegrund>"
 

Wählen Sie zunächst in dem Listenfeld Bezeichnung die Unterbrechung aus, die abgefragt werden soll. ControlEdge zeigt dann die für diese Unterbrechung definierten Unterbrechungs- und Wiederaufnahmegründe an. Die Schaltfläche Hinzufügen wird aktiv, sobald Sie entweder einen Unterbrechungs- oder einen Wiederaufnahmegrund ausgewählt haben.

Ob der Unterbrechungsgrund oder der Wiederaufnahmegrund abgefragt werden soll, bestimmen Sie, indem Sie in das entsprechende Feld klicken. Sie können jeweils nur einen von beiden Gründen abfragen.

Abfrage einer Variablen

Diese Bedingungsart benutzen Sie, um abzufragen, ob eine bestimmte Variable in diesem Moment einen bestimmten Inhalt hat.

Die dafür verwendete Bedingungssyntax ist:

 <variable> gleich <wert>

Sie können eine bereits definierte Variable abfragen, oder einen neuen Namen angeben. Ebenso können Sie einen bereits in irgendeinem Konstrukt für diese Variable benutzten Wert abfragen, oder einen neuen Wert angeben.

Abfrage einer Workflow-Eigenschaft

Mit dieser Abfrage wird geprüft, ob die angegebene Workflow-Eigenschaft einen bestimmten Inhalt hat. In der Modulschnittstelle wird definiert, welche Workflow-Eigenschaften in einem Modul verwendet werden.

Die hierfür verwendete Syntax ist

 Workflow-Property <property> = <wert>

In dem Listenfeld Eigenschaft sind alle Eigenschaften definiert, die in der Modulschnittstelle der Steuerung angegeben sind. Wenn Sie eine Workflow-Eigenschaft abfragen möchten, die noch nicht in der Schnittstelle enthalten ist, können Sie diese dennoch angeben; ControlEdge fragt dann, ob diese der Schnittstelle hinzugefügt werden soll.

Abfrage von Schriftgut

Hiermit können Sie ermitteln, ob ein bestimmtes Schriftgut zum Zeitpunkt der Abfrage existiert (Existenzprüfung) oder selektiert ist (Selektionsprüfung).

Die hierfür verwendete Syntax ist

 Sgut <Name> EXISTS
 Sgut <Name> SELECTED

In der Liste Name wird alles Schrifgut aufgelistet, welches in der Steuerung bekannt ist. Wenn Sie ein anderes Schriftgut angeben, fragt ControlEdge nach, ob dieses trotzdem abgefragt werden soll; Sie können die Abfrage dann trotzdem hinzufügen, sollten die Steuerung dann aber anschließend vervollständigen (Schriftgut hinzufügen).

Es wird nur das Schriftgut auf der obersten Ebene geprüft. Es wird z.B. nicht geprüft, ob ein Schriftstück als Bestandteil eines Schrftsatzes vorhanden ist.

Schleifensteuerung

ControlEdge unterstützt fünf Arten von Iterationen:

  • Einmal-Schleife
  • Endlos-Schleife
  • Objektmengen-gesteuerte Schleife
  • Kopfgesteuerte Schleife („While“)
  • Fußgesteuerte Schleife („Until“)

Zusätzlich ist eine kombinierte Schleifenbedingung möglich, bestehend aus einer Kopf- oder Fußsteuerung plus einer Objektmengen-Steuerung, z.B.

DO <schleife> 
 FOR EACH <objekt> in <objekt-menge> 
 WHILE <bedingung>.
 ..........
 ..........
END <schleife>. 

Um eine Schleifenart auszuwählen, betätigen Sie den entsprechenden Knopf. ControlEdge stellt daraufhin die entsprechende Iterations-Anweisung in das Code-Feld.

Wenn Sie keinen der angegebenen Schleifentypen auswählen, erzeugt ControlEdge eine Einmal-Schleife.

Falls Sie die Auswahl rückgängig machen möchten, brauchen Sie lediglich den Knopf nochmals betätigen, und die Anweisung verschwindet wieder aus dem Code-Feld.

Um zwei Iterationssteuerungen zu kombinieren, betätigen Sie beide Knöpfe. ControlEdge stellt die Iterationsanweisungen für beide Steuerungsarten in der richtigen Reihenfolge in das Code-Fenster.

Festlegen der Objektmenge für objektmengengesteuerte Iterationen

Wenn Sie die objektmengengesteuerte Iteration gewählt haben, müssen Sie unter der Überschrift Objektmenge die Namen des zu verwendenden Einzelobjekts und des Listenobjekts angeben. Sie können hierfür sowohl lokale Objekte als auch globale oder Parameter-Objekte verwenden.

Wenn Sie auf den Pfeil neben Name klicken, zeigt ControlEdge Ihnen alle bekannten Datenobjekte an, deren Objekttyp vom Basistyp „Einzelobjekt“ ist. ControlEdge fügt den gewählten Namen automatisch im Code-Feld an der entsprechenden Stelle ein:

 FOR EACH <einzelobjekt> IN ......... .
 

Geben Sie dann an, welches Listenobjekt Sie verwenden möchten: Wenn Sie auf den Pfeil neben Tabelle klicken, zeigt ControlEdge Ihnen alle Datenobjekte an, deren Objekttyp vom Basistyp „Mengenobjekt“ ist, d.h. die eine Tabelle darstellen. ControlEdge fügt den gewählten Namen automatisch im Code-Feld an der entsprechenden Stelle ein:

 FOR EACH <einzelobjekt> IN <objektliste> .

Sie sind bei der Auswahl der Objekte nicht an die bereits vorhandenen Datenobjekte gebunden, sondern Sie können auch neue lokale Objekte anlegen, sowohl als Einzelobjekt wie auch für die Objektliste. Bei der Prüfung des Bedingungscodes stellt ControlEdge dies fest und fragt, ob das Objekt als lokales Objekt angelegt werden soll. Lehnen Sie dies ab, kehrt ControlEdge zu dem Schleifendefinitions-Fenster zurück, damit Sie Ihre Angaben korrigieren können.

Bedingungen für kopf- und fußgesteuerte Schleifen definieren

Hierfür können Sie alle oben beschriebenen Bedingungsarten verwenden.

Bedingungscode überprüfen

Wenn Sie das Fenster mit OK verlassen oder die Schaltfläche Überprüfen wählen, führt ControlEdge eine Prüfung des gesamten bis dahin eingegebenen Bedingungscodes durch. Dabei prüft er:

  • Ist die Syntax korrekt?


    Sind die verschiedenen Teile einer komplexen Bedingung mit Und oder Oder verbunden? Sind die Klammern paarig (gleiche Anzahl Klammer-auf und Klammer-zu)? Stehen mehrere Und oder Oder hintereinander, ohne dazwischenstehenden Code? Enthält der Code Worte, die weder Objekte sind noch als Schlüsselworte erkannt werden?

    Solche Syntaxfehler werden als „Fehler im Bedingungscode“ gemeldet, und die betreffende Stelle im Code wird markiert.

    Sie müssen diese Fehler beheben, bevor Sie das Bedingungsfenster mit OK verlassen können.

  • Stimmen die Bedingungsteile mit den Informationen der EDB überein ?


    Solche Unstimmigkeiten (z.B. von Bausteinen nicht gemeldete Zustände) wurden auch bei der Definition der Bedingungsteile schon gemeldet, außer wenn Sie diese von Hand in das Code-Feld eingetippt haben.

    Die Angaben, die zu den Meldungen geführt haben, können Sie trotzdem bestehen lassen, falls die Abweichung von den Definitionen in der EDB beabsichtigt war.

Sprache und Ausführlichkeit des Pseudocodes einstellen

Für die Anzeige des Pseudocodes von Bedingungen können Sie auswählen, in welcher Sprache dieser angezeigt werden sollen, und ob die Anzeige ausführlich oder „im Telegramm-Stil“ erfolgen soll.

Die Auswahl der Sprache für den Bedingungscode erfolgt in dem Fenster Einstellungen Arbeitsoberfläche unter der Überschrift Bedingungscode.

Zur Zeit stehen fünf Alternativen zur Auswahl:

Deutsch ausführlich:

 Zustand von INTR "AI0001" gleich "POST-ANZEIG" oder Objekt "ARG-POSTEN" existiert und beginn "VAR1" gleich "OK" und Ereignis gleich "PROCESS" ende

Deutsch kurz:

 INTR "AI0001" meldet "POST-ANZEIG" oder "ARG-POSTEN" existiert und ("VAR1" = "OK" und Ereignis "PROCESS")

Englisch ausführlich:

 Status of INTR "AO0001" equals "POST-ANZEIG" or Object "ARG-POSTEN" exists and begin "VAR1" equals "OK" and Event equals "PROCESS" end

Englisch kurz:

 INTR "AI0001" returned "POST-ANZEIG" or "ARG-POSTEN" exists and ("VAR1" = "OK" and Event "PROCESS")

Symbol:

 INTR "AI0001"."POST-ANZEIG" | "ARG-POSTEN"* & ("VAR1" = "OK" & Event = "PROCESS")

Schritt für Schritt: Bedingungsteile verknüpfen

Oft ist es notwendig, mehrere Bedingungsteile zu einer komplexen Bedingung zu verknüpfen. Dies geschieht mittels der logischen Operatoren UND, ODER und NICHT (engl. AND, OR und NOT), sowie durch Klammern.

Um UND oder ODER einzufügen:

  1. Positionieren Sie den Cursor auf die Stelle im Bedingungscode, an der Sie den Operator einfügen möchten. Wenn Sie einen Bedingungsteil ersetzen möchten, so markieren Sie den zu ersetzenden Code.
  2. Wählen Sie die Schaltfläche Und oder Oder.

Um Klammern einzufügen:

  1. Positionieren Sie den Cursor auf die Stelle im Bedingungscode, an der Sie die Klammern einfügen möchten.
    Wenn Sie einen oder mehrere bestehende Bedingungsteie einklammern möchten, so markieren Sie den gesamten zu klammernden Code. Sie können so Bedingungsteile zu Gruppen zusammenfassen, und die Operatoren UND, ODER und NICHT auf die Gruppen von Bedingungsteilen statt auf jedes einzelne Bedingungsteil anwenden.
  2. Wählen Sie die Schaltfläche Klammern.

ControlEdge fügt vor der Markierung bzw. Cursorposition die erste Klammer oder das Wort Beginn (je nach gewählter Darstellung für Bedingungscode), danach die zweite Klammer oder das Wort Ende ein, z.B.Deutsch ausführlich:

 Beginn Objekt AUFTRAG existiert Ende

Symbol:

 ("AUFTRAG” *)
 

Um NICHT einzufügen:

  1. Positionieren Sie den Cursor auf die Stelle im Bedingungscode, an der Sie den Operator einfügen möchten. Wenn Sie einen oder mehrere bestehende Bedingungsteile verneinen möchten, so markieren Sie den gesamten betroffenen Code.
  2. Wählen Sie die Schaltfläche Verneinen.

Wenn Sie einen Bedingungsteil markiert hatten, fügt ControlEdge das Nicht sowie ein Klammernpaar (bzw. Beginn und Ende) ein, z.B.

 Nicht Beginn Objekt AUFTRAG existiert Ende

Wenn kein Code markiert war, fügt ControlEdge lediglich an der Cursor-Position das Nicht ein:

 Nicht Objekt AUFTRAG existiert 

In diesem Beispiel sind beide Formulierungen gleichwertig. Bei einer komplexeren Bedingung sind die Klammern aber erforderlich, um das Ende der Verneinung zu bestimmen.

cedge:edit:conditions · Zuletzt geändert: 08.11.2019 10:38

Copyright © 1992-2024 TeamWiSE Gesellschaft für Softwaretechnik mbH         Adressen |  Kontakt |  AGB |  Datenschutzerklärung |  Impressum