Dynamics NAV – Die Verzweigungsbefehle IF-THEN-ELSE und CASE-ELSE

Microsoft Dynamics NAVNachdem 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!