A ``++EVALUATE++`` and a chain of ``++IF++``/``++ELSE IF++`` statements is evaluated from top to bottom. At most, only one branch will be executed: the first one with a condition that evaluates to ``++true++``. 


Therefore, duplicating a condition automatically leads to dead code. Usually, this is due to a copy/paste error. At best, it's simply dead code and at worst, it's a bug that is likely to induce further bugs as the code is maintained, and obviously it could lead to unexpected behavior. 

== Noncompliant Code Example

----
EVALUATE X
   WHEN 1
       ...
   WHEN 5
       ...
   WHEN 3
       ...
   WHEN 1     *> Noncompliant
       ...
END-EVALUATE.

IF X = 1
  ...
ELSE
  IF X = 2
    ...
  ELSE
    IF X = 1    *> Noncompliant
      ...
    END-IF
  END-IF
END-IF.
----

== Compliant Solution

----
EVALUATE X
   WHEN 1
       ...
   WHEN 5
       ...
   WHEN 3
       ...
END-EVALUATE.

IF X = 1
  ...
ELSE
  IF X = 2
    ...
  ELSE
    IF X = 3
      ...
    END-IF
  END-IF
END-IF.
----

include::../see.adoc[]

ifdef::env-github,rspecator-view[]
'''
== Comments And Links
(visible only on this page)

include::comments-and-links.adoc[]
endif::env-github,rspecator-view[]
