The complexity of an expression is defined by the number of ``++AND++``, ``++OR++``.

A single expression's complexity should not become too high to keep the code readable.

== Noncompliant Code Example

With the default threshold value of 3

[source,rpg]
----
C                   IF        (condition1 AND condition2)
C                             OR (condition2 AND condition2)
C                             OR (condition3 AND condition4)
----

[source,rpg]
----
 /free
   IF A=X OR A=Y AND A=Z AND B=Y OR B=Z;
        ...
   ENDIF;
 /end-free
----

== Compliant Solution

[source,rpg]
----
C                   IF        (condition1 AND condition2)
C                             OR MyComplexCondition()
----

[source,rpg]
----
 /free
   IF A=X OR MyComplexCondition() OR B=Z;
        ...
   ENDIF;
 /end-free
----

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

'''
== Implementation Specification
(visible only on this page)

include::../message.adoc[]

include::../parameters.adoc[]

'''
== Comments And Links
(visible only on this page)

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