BookmarkSubscribeRSS Feed
soham_sas
Quartz | Level 8

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;

3 REPLIES 3
foobarbaz
Obsidian | Level 7

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;
Regards,
Cameron | Selerity
Kurt_Bremser
Super User

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;
Tom
Super User Tom
Super User

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.

sas-innovate-2024.png

Available on demand!

Missed SAS Innovate Las Vegas? Watch all the action for free! View the keynotes, general sessions and 22 breakouts on demand.

 

Register now!

How to Concatenate Values

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.

Click image to register for webinarClick image to register for webinar

Classroom Training Available!

Select SAS Training centers are offering in-person courses. View upcoming courses for:

View all other training opportunities.

Discussion stats
  • 3 replies
  • 740 views
  • 0 likes
  • 4 in conversation