Einführung in Programmabschnitte
Ein Programmabschnitt ist ein Hauptlogikabschnitt mit einem einzigen Eingangspunkt. Ein Programmabschnitt definiert die zentrale Logik in einem Laufzeitprogramm.
Jeder Programmabschnitt enthält eine Funktion main(), die die beim Programmstart ausgeführte Logik darstellt. Ein Programm kann andere Funktionen umfassen und auf Funktionen zugreifen, die sich außerhalb des Programms befinden. Die Funktion main() kann diese anderen Funktionen aufrufen. Jede Funktion kann die Steuerung an andere Programme übergeben.
Programmabschnitte verwenden Stereotypen, um Code für Benutzerschnittstellen zu spezialisieren. Einzig der Stereotyp BasicProgram ist Bestandteil des EGL-Kernpakets. Ein Basisprogramm (Stereotyp BasicProgram) kann auf Datenbanken oder Dateien zugreifen, Berechnungen durchführen und die meisten EGL-Anweisungen verwenden. Einige Benutzerschnittstellentechnologien bieten weitere Stereotypen.
Auf der Programmebene sind viele Eigenschaften verfügbar, die das Verhalten des Codes beeinflussen. Welche Eigenschaften verfügbar sind, richtet sich nach der Benutzerschnittstellen- und der Datenzugriffstechnologie.
Unterschiede zwischen Hauptprogrammen und aufgerufenen Programmen
Program custProcessing1 type basicProgram (customerNum INT)
// required main() function
function main()
// get the correct customer name
// based on the customer number passed
customerName = getCustName(customerNum);
...
end
// another function
Function getCustName(customerNum INT) returns (CHAR(25))
...
end
end
program custProcessing1 type basicProgram (customerNum INT)
program custProcessing1 type basicProgram ()
program custProcessing1 type basicProgram
customerName CHAR(30)
...
call custProcessing1(customerName);
program custProcessing1 type basicProgram (custName CHAR(80) inout)
Da EGL einen Zeiger auf die Variable customerName übergibt, hat die Variable custName eine tatsächliche Länge von nur 30 Zeichen. Falls Sie Daten an die Positionen 31 bis 80 der Variablen custName schreiben (was im Programm zulässig ist), wird möglicherweise wahlfreier Speicher überschrieben. Der EGL-Debugger gibt übrigens eine Warnung aus, wenn ein solches nicht definiertes Verhalten stattzufinden droht.
Weitere Informationen zu aufgerufenen Programmen finden Sie unter Übertragung der Steuerung zwischen Programmen.