Normally, when displaying less precision than the data has, you'd WANT to round, but that's not the case here.
Using 'D' format actually holds 'as much precision' as possible, rounding on display. So, you don't WANT a 'D' format. You only want to hold 2 decimal places. So, I'd recommend using 'P' format, which holds digits, instead of 'D'.
To round DOWN, you could do the following:
Code:
COMPUTE SEM_GPA/P12.2 =
IF SEM_EARN EQ 0 AND SEM_COMP EQ 0 THEN 0 ELSE
IF SEM_COMP GT 0 THEN SEM_GP / SEM_COMP - .005;
If the result of the division was 3.536, the subtraction would give 3.531, which would result in 3.53.
If the result was 3.531, the subtraction would give 3.526, which would round to 3.53.
Storing the result as 'P' format would eliminate any further decimal precision.