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

Hauptprogramme sind Programme, die ohne Parameter definiert sind. Hauptprogramme werden ausgeführt, sobald sie durch einen Systembefehl oder eine Übertragung aus einem anderen Hauptprogramm gestartet werden. Aufgerufene Programme sind Programme, die mit Parametern definiert sind. Aufgerufene Programme werden aus anderen Programme heraus mit der Anweisung call aufgerufen. Aufgerufene Programme verarbeiten Parameter auf Programmebene. Sie müssen eine Funktion main() ohne Parameter besitzen. Das folgende Beispiel zeigt ein aufgerufenes Programm:
  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
Die Form der Programmdeklaration bestimmt, ob es sich um ein Hauptprogramm oder ein aufgerufenes Programm handelt. Falls die Deklaration Parameter (oder sogar leere runde Klammern) enthält, deklariert sie ein aufgerufenes Programm. Um ein aufgerufenes Programm in ein Hauptprogramm zu ändern, entfernen Sie die Parameterliste einschließlich der runden Klammern. Die folgenden Zeilen deklarieren beispielsweise ein aufgerufenes Programm:
program custProcessing1 type basicProgram (customerNum INT)
program custProcessing1 type basicProgram ()
Der folgende Code deklariert ein Hauptprogramm:
program custProcessing1 type basicProgram
Die Länge des Arguments, das Sie beim Aufruf eines Programms verwenden, muss mit der Länge des äquivalenten Parameters in der Programmdeklaration übereinstimmen. Beispiel:
customerName CHAR(30)
...
call custProcessing1(customerName);
Als Beispiel soll von der folgenden Deklaration für das aufgerufene Programm ausgegangen werden:
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.


Feedback