I'm getting unpredictable behavior from a format created with CNTLIN and EEXCL='Y'. For some ranges the upper bound is excluded (as I want), but for others it is included. For example: data a; eexcl='Y'; fmtname='gpa'; do i=2 to 4 by 0.1; start=i; end=i+0.1; label=put(start,4.2)||'-'||put(end-0.01,4.2); output; end; run; proc format cntlin=a; run; proc print data=a; format i gpa.; run; data b; do i=2,2.6,3,3.55,4; j=i; output; end; run; proc print data=b; format j gpa.; run; The first proc print applies the new format to the set that created it, and it works as expected. The second print applies the format to new data. I get wrong formats applied to values of 2.6 and 4 (note that each of those formatted as expected in the first proc print). An identical format created using a VALUE statement and ranges like 2-<2.1='2.00-2.09' doesn't behave like this, and PROC COMPARE thinks the 2 formats (as described in a CNTLOUT set) are identical. Setting HLO='M' doesn't seem to affect the behavior. Is this a bug or am I missing some obvious error in my code? (problem occurs in Enterprise Guide 4.1 and Windows SAS 9.2)
... View more