Definition und Funktionsweise:
Call-by-Value (Übergabe als Wert oder Übergabe nach Wert) ist ein Mechanismus zur Parameterübergabe an Funktionen, Funktionsbausteine oder Unterprogramme in der Programmierung. Dabei wird eine Kopie des Wertes der Originalvariable an die aufgerufene Routine übergeben.
Die aufgerufene Routine arbeitet dann mit dieser Kopie im eigenen Speicherbereich. Wenn die aufgerufene Routine den Wert des übergebenen Parameters ändert, wirkt sich diese Änderung nicht auf die Originalvariable im aufrufenden Programm aus. Die Originalvariable bleibt unverändert.
Vorteile und Nachteile:
- Vorteile:
- Sicherheit und Isolation: Verhindert unbeabsichtigte Seiteneffekte, da die aufgerufene Routine das Original nicht ändern kann. Dies macht den Code robuster und die Fehlersuche einfacher.
- Übersichtlichkeit: Der Programmfluss ist leichter nachzuvollziehen, da klar ist, welche Variablen nur gelesen und welche verändert werden.
- Nachteile:
- Speicher- und Performance-Overhead: Bei der Übergabe großer Datenstrukturen (z.B. große Arrays oder Strings) muss eine vollständige Kopie erstellt werden, was zusätzlichen Speicherplatz und Rechenzeit beanspruchen kann.
- Rückgabe nur eines Wertes: Eine Funktion kann über den Rückgabewert nur einen einzigen Wert zurückgeben. Für mehrere Rückgabewerte muss man auf andere Mechanismen (z.B. Referenzen, globale Variablen oder Strukturen) zurückgreifen.
Relevanz in der SPS-Programmierung:
In der SPS-Programmierung ist Call-by-Value der Standardmechanismus für die Übergabe einfacher Datentypen (wie BOOL, INT, REAL) an Funktionen oder Funktionsbausteine. Er wird bevorzugt, wenn keine Notwendigkeit besteht, die Originalvariable zu modifizieren, um die Programmtransparenz und -sicherheit zu maximieren.
Die IEC 61131-3 Programmiersprachen unterstützen Call-by-Value explizit (z.B. über VAR_INPUT-Deklarationen).
→ Siehe auch: Call-by-Reference, Parameterübergabe, Variable, Datentyp, SPS-Programmierung, Funktion (FC)

