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

----
* 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[]
'''
== Comments And Links
(visible only on this page)

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