Uploaded image for project: 'Rules Repository'
  1. Rules Repository
  2. RSPEC-1862 Related "if/else if" statements should not have the same condition
  3. RSPEC-1972

Cobol: Conditions in related "IF/ELSE IF" statements and "WHEN" clauses in "EVALUATE" statements should not have the same condition

    Details

    • Type: Language-Specification
    • Status: Active
    • Resolution: Unresolved
    • Labels:
      None
    • Impact:
      Unknown 'null' severity
    • Likelihood:
      Unknown 'null' severity
    • Constant Cost:
      30min

      Description

      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

      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

      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.
      

        Attachments

          Activity

            People

            • Assignee:
              Unassigned
              Reporter:
              ann.campbell.2 Ann Campbell
            • Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

              • Created:
                Updated: