I was advised by my good friend and colleague, Jonathan Sayles, to post this question to this group … was wondering if anyone knew the rationale for why 88 levels like the one below passes the RDz syntax check; but fails in the compile. More importantly why can't 88 levels be used in EVALUATE statements, using 88 levels in IF statements aside, this seems to reduce the effectiveness of 88 levels don't you think?

05 PR-LAST-EVAL-RATING PIC X(01).

88 PR-RATE-A VALUE 'A'.

88 PR-RATE-B VALUE 'B'.

88 PR-RATE-C VALUE 'C'.

88 PR-RATE-D VALUE 'D'.

88 PR-RATE-N VALUE 'N'.

** This works - Count employee evaluation ratings ************

EVALUATE PR-LAST-EVAL-RATING

WHEN 'A'

ADD 1 TO EVAL-COUNT-A

WHEN 'B'

ADD 1 TO EVAL-COUNT-B

WHEN 'C'

ADD 1 TO EVAL-COUNT-C

WHEN 'D'

ADD 1 TO EVAL-COUNT-D

WHEN 'N'

ADD 1 TO EVAL-COUNT-N

END-EVALUATE.

** This doesn't - Count employee evaluation ratings ************

EVALUATE PR-LAST-EVAL-RATING

WHEN PR-RATE-A

ADD 1 TO EVAL-COUNT-A

WHEN PR-RATE-B

ADD 1 TO EVAL-COUNT-B

WHEN PR-RATE-C

ADD 1 TO EVAL-COUNT-C

WHEN PR-RATE-D

ADD 1 TO EVAL-COUNT-D

WHEN PR-RATE-N

ADD 1 TO EVAL-COUNT-N

END-EVALUATE.

**The compiler message:**

==> IGYPA3009-S The selection object at position 1 in the "WHEN" phrase did not match the type of the corresponding selection subject in the "EVALUATE" statement. The selection object was discarded.

Thanks, Dave D