
Inline adoc files when they are included exactly once. Also fix language tags because this inlining gives us better information on what language the code is written in.
86 lines
1.7 KiB
Plaintext
86 lines
1.7 KiB
Plaintext
== Why is this an issue?
|
|
|
|
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
|
|
|
|
[source,cobol]
|
|
----
|
|
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
|
|
|
|
[source,cobol]
|
|
----
|
|
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.
|
|
----
|
|
|
|
|
|
ifdef::env-github,rspecator-view[]
|
|
|
|
'''
|
|
== Implementation Specification
|
|
(visible only on this page)
|
|
|
|
include::../message.adoc[]
|
|
|
|
include::../highlighting.adoc[]
|
|
|
|
'''
|
|
== Comments And Links
|
|
(visible only on this page)
|
|
|
|
=== on 17 Oct 2014, 19:48:28 Ann Campbell wrote:
|
|
note, this subtask moved from RSPEC-1950. Title may need work
|
|
|
|
=== on 11 Feb 2015, 17:14:02 Pierre-Yves Nicolas wrote:
|
|
I changed my mind and I think that this rule should also check nested IFs in COBOL: I updated the title and the code samples, but the description should also be updated.
|
|
|
|
include::../comments-and-links.adoc[]
|
|
|
|
endif::env-github,rspecator-view[]
|