== Why is this an issue?

Using the same value on either side of a binary operator is almost always a mistake. In the case of logical operators, it is either a copy/paste error and therefore a bug, or it is simply wasted code, and should be simplified. In the case of arithmetic operators, having the same value on both sides of an operator yields predictable results, and should be simplified.

=== Noncompliant code example

[source,cobol]
----
* always true
  IF X = X
    PERFORM SECTION1.
  END-IF.

* always false
  IF X <> X
    PERFORM SECTION2.
  END-IF.

* if the first one is true, the second one is too
  IF X = Y AND X = Y
    PERFORM SECTION3.
  END-IF.

* if the first one is true, the second one is too
  IF X = Y OR X = Y
    PERFORM SECTION4.
  END-IF.

* always 1
  COMPUTE X = Y / Y.

* always 0
  COMPUTE X = Y - Y.
----

=== Exceptions

This rule ignores ``++*++`` and ``+``. 

include::../see.adoc[]

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)

include::../comments-and-links.adoc[]

endif::env-github,rspecator-view[]
