The ``++SELECT++`` statement should be used only to clearly define some new branches in the control flow. As soon as a ``++WHEN++`` clause contains too many statements this highly decreases the readability of the overall control flow statement. In such case, the content of ``++WHEN++`` clause should be extracted in a dedicated subroutine.

== Noncompliant Code Example

----
C                   SELECT
C                   WHEN      X=1
C                   MOVE      A             B
C                   MOVE      C             D
C                   MOVE      E             F
C                   MOVE      J             K
C                   MOVE      L             M
C                   WHEN      X=2
C                   ....
C                   ENDSL
 /free
   select;
     when X=1;
       B = A;
       D = C;
       F = E;
       K = J;
       M = L;
     when X=2;
       ...
   endsl;
 /end-free
----

== Compliant Solution

----
C                   SELECT
C                   WHEN      X=1
C                   EXSR      SR011
C                   WHEN      X=2
C                   ....
C                   ENDSL
C                   ...
C     SR011         BEGSR
C                   MOVE      A             B
C                   MOVE      C             D
C                   MOVE      E             F
C                   MOVE      J             K
C                   MOVE      L             M
C                   ENDSR
 /free
   select;
     when X=1;
       exsr SR011;
     when X=2;
       ...
   endsl;
 /end-free
----

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

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