Programme können von Programmen und
Funktionsblöcken aufgerufen werden. Ein Programmaufruf in einer
Funktion ist nicht erlaubt. Es gibt auch keine Instanzen von Programmen.
Wenn ein Baustein ein Programm aufruft, und es werden dabei Werte des Programms verändert, dann bleiben diese Veränderungen beim nächsten Aufruf des Programms erhalten, auch wenn das Programm von einem anderen Baustein aus aufgerufen wird.
Dies ist anders als beim Aufruf eines Funktionsblocks. Dort werden nur die Werte in der jeweiligen
Instanz eines Funktionsblocks geändert. Diese Veränderungen spielen also auch nur eine Rolle, wenn dieselbe Instanz aufgerufen wird.
Wenn man beim Aufruf eines Programms die Eingabe- und/oder Ausgabeparameter, also Werte der Ein-/Ausgabevariablen beim Aufruf setzen will, dann geschieht das bei den Textsprachen AWL und ST, indem man nach dem Programmnamen in Klammer den Parametern Werte zuweist. Die Zuweisung erfolgt durch ":=" wie bei der Initialisierung von Variablen an der Deklarationsstelle.
Wird ein Programm unter Verwendung der Eingabehilfe <F2> mit Option Mit Argumenten im Implementationsfenster eines ST oder AWL-Bausteins eingefügt, wird sie automatisch in dieser Syntax mit ihren Parametern dargestellt. Die Parameter müssen jedoch dann nicht zwingend belegt werden.
Beispiele für Aufrufe eines Programms
In einem Programm PRGexample2 sind die Eingabevariable in_var und die Ausgabevariable out_var sind jeweils vom Typ INT deklariert. Lokal deklariert ist die Variable erg, ebenfalls vom Typ INT:
In AWL:
CAL PRGexample2
LD PRGexample2.out_var
ST ERG
oder mit unmittelbarer Angabe der Parameter (Eingabehilfe Mit Argumenten, s.o.):
CAL PRGexample2(in_var:=33, out_var=>erg )
In ST:
PRGexample;
Erg := PRGexample2.out_var;
oder mit unmittelbarer Angabe der Parameter (Eingabehilfe Mit Argumenten, s.o.):
PRGexample2(in_var:=33, out_var=>erg );