In Methoden, ganz gleich, ob sie einfach oder komplex sind, verwenden Sie immer eine oder mehrere der drei Programmierstrukturen. Diese Strukturen steuern die Ausführungsabfolge der Anweisungen in einer Methode. Es gibt folgende Arten:
- Sequentiell
- Abfragen
- Schleifen
Die sequentielle Struktur ist eine einfache lineare Struktur. Alle Anweisungen werden nacheinander gemäß ihrer Reihenfolge ausgeführt. Beispiel:
OUTPUT FORM([People];"Listing")
ALL RECORDS([People])
DISPLAY SELECTION([People])
Ein typisches Beispiel ist die einzeilige Routine, die häufig für Objektmethoden verwendet wird. Dies ist die einfachste Form einer sequentiellen Struktur. Beispiel:
[People]Last Name:=Uppercase([People]Last Name)
Hinweis: Mit den Anweisungen Begin SQL /End SQL können Sie sequentielle Strukturen auf die Ausführung mit der SQL Engine von 4D beschränken.
Bei Abfragen werden Befehlsfolgen bedingt ausgeführt. Die Bedingung ist ein Boolean Ausdruck, der TRUE oder FALSE ermittelt. In der Struktur If...Else...End if wird eine bestimmte Bedingung abgefragt. Es gibt zwei Möglichkeiten. Trifft die Bedingung zu, d.h., ist sie wahr, führt sie den folgenden Befehl aus. Trifft die Bedingung nicht zu, d.h., ist sie falsch, wird der Befehl nicht ausgeführt, eventuell aber ein anderer. In der Struktur Case of...Else...End case gibt es mehrere Möglichkeiten, eine davon wird letztendlich ausgeführt.
Schleifen führen eine Anweisung oder eine Folge von Anweisungen wiederholt aus. Die Anweisungen müssen nicht neu geschrieben werden. 4D kennt folgende Arten von Schleifen:
Schleifen werden entweder solange durchlaufen, bis eine Bedingung gefunden wird oder sie laufen ein bis n-Male ab. Diese beiden Möglichkeiten lassen sich zwar für alle Arten von Schleifen einrichten. While- und Repeat-Schleifen eignen sich jedoch besser für das Durchlaufen, bis eine Bedingung gefunden wird, For-Schleifen für den zahlenmäßig begrenzten Durchlauf. Mit For each...End for each können Sie beide Arten mischen und damit Objekte und Collections durchlaufen.
Hinweis: 4D ermöglicht Programmierstrukturen (If/While/For/Case of/Repeat) bis zu einer Tiefe von 512 Ebenen einzubinden.