I think that you want to fix this first:
BY PURCHASE_ID;
RETAIN STRAW2 CHOCO2 BUTTER2 BALOX2 OUT2 IN2;
IF FIRST.CASE_ID THEN DO;
This would throw a note of "First.case_id is unitialized" because Case_id is not on the BY statement. So First.case_id is never true [uninitialized means the variable is always missing]
Therefore none of the Straw2 through Balox2 are ever set with a value 0. Then all the Straw+1 are equivalent to missing + 1 which SAS will set to missing. And all of the "final counts" will be 0.
You can, in this case, replace these statements
IF STRAW1 = 1 THEN STRAW2 = STRAW2 + 1;
with
Straw2+straw1;
Which will increment the retained variable by the amount of straw1. If straw1 is missing or 0 then no change, otherwise add.
Side effect is if you haven't used a Retain statement this will imply one.
Or if not comfortable with that
IF STRAW1 = 1 THEN STRAW2 = Sum(STRAW2, 1) ;
Sum function will return 1 where Straw2+1 returns missing when Straw2 is not initialized to a non-missing value.
... View more