4 Benannte Regeln (Unterprogramme)
Neben der Möglichkeit, Regeln an Objekte zu binden, gibt es noch die Möglichkeit Regeln unabhängig von einem Objekt zu definieren. Diese Regeln werden dann wie Unterprogramme genutzt und von mehreren Programmstellen aus aufgerufen. Der IDM kann also diese Regel nie direkt aufgrund einer Benutzeraktion aufrufen, sondern sie wird immer durch eine andere Regel aufgerufen.
Diese sogenannten benannten Regeln können bis zu 16 Parameter haben. Diese Parameter können dabei als reine Eingabewerte, als reine Ausgabewerte oder auch als Ein-/Ausgabewerte aus Sicht der Regel betrachtet werden. Dieses muss bei der Deklaration der Parameter mitdefiniert werden.
Anstelle des Schlüsselwortes on fangen diese Regeln mit dem Schlüsselwort rule an, um zu kennzeichnen, dass es sich um einen komplett anderen Regeltyp handelt.
Syntax
rule <Rückgabetyp> <Regelname> ( { <Parameter> { , <Parameter> } } ) { <Anweisungen> }
Parameter ::= <Datentyp> <Parametername> { := <Standardwert> } { <Art> }
<Parameter> kann bis zu 16-mal vorkommen, d.h., die Regel kann bis zu 16 Parameter haben.
- <Rückgabetyp>
- <Datentyp>
-
Alle Datentypen, die im IDM existieren, sind als gültige Datentypen für Regel-Parameter und Regel-Rückgabetypen verfügbar. Beim Rückgabetyp ist zusätzlich der Typ void verfügbar, der kennzeichnet, dass die Regel eigentlich nichts zurückliefert.
- <Regelname>
- <Parametername>
-
Muss ein gültiger Identifikator sein.
- <Standardwert>
-
Für Eingabeparameter (input) können Standardwerte definiert werden. Diese Parameter müssen dann beim Aufruf der Regel nicht angegeben werden.
Parameter mit Standardwerten müssen am Ende der Parameterliste stehen!
Achtung
Optionale Parameter werden vom control-Objekt und von der message-Ressource nicht unterstützt. Die Benutzung von Standardwerten bei der Programmierung eines OLE Servers oder eines OLE Clients mit der OLE Schnittstelle ist momentan nicht möglich.
- <Art>
-
-
nur Eingabeparameter
-
nur Ausgabeparameter
-
input output
sowohl Eingabe- als auch Ausgabeparameter
Dabei ist input und output immer aus Sicht der Regel, die hier definiert wird.
-
Beispiel
rule integer Add (integer Arg1 input, integer Arg2 input)
Diese Addierungsregel hat zwei Zahlen als Eingabeparameter, addiert die zwei Parameter und hat das Ergebnis "Summe der Addition".
rule void CheckObjects ()
Dieses definiert eine Regel ohne Parameter, die auch keinen Rückgabewert hat.