Dynamics NAV – Die Verzweigungsbefehle IF-THEN-ELSE und CASE-ELSE
Nachdem ich bereits die Schleifentypen von Dynamics NAV vorgestellt habe, kommen heute die Verzweigungebefehle, die uns C/AL bietet, dran. Die Navision-Programmiersprache bietet uns hier zwei verschiedene Typen an, die ich im folgenden etwas genauer unter die Lupe nehmen möchte.
Zum einen gibt es die allseits bekannte IF-THEN-ELSE – Verzweigung, zum anderen die CASE-ELSE-Weiche, die in anderen Sprachen auch unter Switch-Case, Select-Case etc. bekannt ist.
IF THEN ELSE – Anweisung
Der Aufbau dieser Verzweigung ist mit einer kleinen Einschränkung wie in fast allen Programmiersprachen, wie Ihr im folgenden seht:
IF Counter = 1 THEN
Ok := TRUE
ELSE
Ok := FALSE;
Allerdings gibt es keine Möglichkeit hinter dem ELSE noch ein IF zu setzen, nach dem Motto ELSE IF. Dies finde ich sehr bedauerlich, da so eine Möglichkeit doch manchmal ganz hilfreich wäre. Statt dessen muss man einen kleinen Umweg gehen und ein komplett neues IF-Konstrukt in den ELSE-Zweig einpflegten.
IF Counter = 1 THEN
NumberText := "One"
ELSE
IF Counter = 2 THEN
NumberText := "Two"
ELSE
NumberText := "";
Wenn Ihr Bedingungen mitteinander logisch verknüpfen wollt, z.B. mit einem logischen AND, dann müsst Ihr darauf achten, dass Ihr die Bedingungen mit runden Klammern kapselt.
IF ((Counter > 0) AND (Counter < 10)) THEN
Ok := TRUE
ELSE
Ok := FALSE;
CASE-ELSE – Anweisung
Mit der CASE-ELSE-Anweisung könnt Ihr im Gegensatz zu IF-THEN-ELSE zwischen beliebig vielen Fällen unterscheiden. Die Syntax dieser C/AL-Anweisung weicht allerdings etwas von den gängigen Schreibweisen dieser Programmweichen ab.
Wenn man, wie ich, mit vielen Programmiersprachen gleichezeitig arbeitet, kann das schon mal etwas verwirren. Aber die Hauptsache ist ja, dass man weiß wo es steht. Die Syntax des CASE-ELSE-Befehls sieht wie folgt aus:
CASE Counter OF
1:
NumberText:="One";
2:
NumberText:="Two";
3,4,5:
NumberText:="Bigger";
ELSE
NumberText:="";
END;
Natürlich kann man auch hier die einzelnen Zweige mit den C/AL-Befehlen BEGIN und END kapseln, um mehrere Code-Zeilen dahinter zu schreiben (natürlich auch bei IF-THEN-ELSE möglich). Das folgende Beispiel demonstriert noch einmal diesen Fall.
CASE Counter OF
1:
BEGIN
NumberText:="One";
MESSAGE("One");
END;
2:
BEGIN
NumberText:="Two";
MESSAGE("Two");
END;
ELSE BEGIN
NumberText:="";
MESSAGE("No value found.");
END;
END;
Ich hoffe, Euch hat dieser kleine Ausflug in die Verzweigungsbefehle von Navision bzw. Dynamics NAV gefallen.
Habt Ihr Anregungen oder Verbesserungsvorschläge? Ich freue mich über Eure Kommentare!