HI i am trying to write a code to calculate the below scenario ,
lets say i started investing with Rs1 , and i will double the money every day , i.e
1st day=Rs1
2nd day = Rs2
3rd day = Rs4
.
.
.
so on..
i want to know how many days it will take to make my investment in to Rs100000
i am trying the below code but some how not getting the logic to do so , please help...
DATA investthree;
DO until (value >= 100000);
value+1;
_value=value*2;
day + 1;
OUTPUT;
END;
RUN;
Your loop won't resolve. The below outputs what I think you are looking for.
data x;
value = 1;
days = 1;
do while (value lt 100000);
value = value*2;
put 'NOTE: ' days ': ' value;
days = days+1;
end;
output;
run;
That's a simple fomula:
endvalue = startvalue * 2 ** 100000;
Which will, of course, exceed any displayable value. Think of the wise guy demanding rice from the king. 1 grain on the first square of the chess-board, and double on every further square.
Now, if you want to find the iteration where the result exceeds 100000, you need this:
data want;
value = 1;
iteration = 1;
do until (value > 100000);
output;
value = value * 2;
iteration + 1;
end;
run;
So your question does not match your subject line. You appear to be trying to use a data step DO statement instead of a macro %DO statement. That will actually make it easier to do what you want since the DO statement is much more powerful than the %DO statement.
664 data investthree; 665 do day=1 by 1 until (value >= 100000); 666 if day=1 then value=1; 667 else value=value*2 ; 668 put day=z4. +1 value= comma10.; 669 output; 670 end; 671 run; day=0001 value=1 day=0002 value=2 day=0003 value=4 day=0004 value=8 day=0005 value=16 day=0006 value=32 day=0007 value=64 day=0008 value=128 day=0009 value=256 day=0010 value=512 day=0011 value=1,024 day=0012 value=2,048 day=0013 value=4,096 day=0014 value=8,192 day=0015 value=16,384 day=0016 value=32,768 day=0017 value=65,536 day=0018 value=131,072 NOTE: The data set WORK.INVESTTHREE has 18 observations and 2 variables.
Are you ready for the spotlight? We're accepting content ideas for SAS Innovate 2025 to be held May 6-9 in Orlando, FL. The call is open until September 25. Read more here about why you should contribute and what is in it for you!
Learn how use the CAT functions in SAS to join values from multiple variables into a single value.
Find more tutorials on the SAS Users YouTube channel.