BookmarkSubscribeRSS Feed
☑ This topic is solved. Need further help from the community? Please sign in and ask a new question.
vijaypratap0195
Obsidian | Level 7
data s2;
retain sum;
assign = sum;
sum + 1;
proc print; run;
 
 

vijaypratap0195_2-1687539960883.png

 

*Anyone knows why here:*

assign=. whereas

sum=1
because when we apply the + operator with any missing value the final result should be. (missing)

1 ACCEPTED SOLUTION

Accepted Solutions
Tom
Super User Tom
Super User

If you use a variable as the target in a SUM statement then the variable will be retained and it will default to initialize to zero , UNLESS YOU TELL TO INITIALIZE TO SOMETHING ELSE.

 

Remove the RETAIN statement.  Of tell it to initialize to zero instead of missing.

19   data s2;
20   retain sum;
21   assign = sum;
22   sum + 1;
23   put (_all_) (=);
24   run;

sum=1 assign=.
NOTE: The data set WORK.S2 has 1 observations and 2 variables.
NOTE: DATA statement used (Total process time):
      real time           0.03 seconds
      cpu time            0.04 seconds


25   data s2;
26   assign = sum;
27   sum + 1;
28   put (_all_) (=);
29   run;

assign=0 sum=1
NOTE: The data set WORK.S2 has 1 observations and 2 variables.
NOTE: DATA statement used (Total process time):
      real time           0.01 seconds
      cpu time            0.03 seconds


30   data s2;
31   retain sum 100;
32   assign = sum;
33   sum + 1;
34   put (_all_) (=);
35   run;

sum=101 assign=100
NOTE: The data set WORK.S2 has 1 observations and 2 variables.
NOTE: DATA statement used (Total process time):
      real time           0.00 seconds
      cpu time            0.00 seconds

View solution in original post

4 REPLIES 4
PaigeMiller
Diamond | Level 26

The SUM statement documentation says the variable (in this case SUM) is initialized to zero. So sum+1 is not missing.

--
Paige Miller
Reeza
Super User
There are three "sum" methods.
Sum Operator
Sum Statement
Sum Function

They each works slightly differently.
vijaypratap0195
Obsidian | Level 7

Please explain

Tom
Super User Tom
Super User

If you use a variable as the target in a SUM statement then the variable will be retained and it will default to initialize to zero , UNLESS YOU TELL TO INITIALIZE TO SOMETHING ELSE.

 

Remove the RETAIN statement.  Of tell it to initialize to zero instead of missing.

19   data s2;
20   retain sum;
21   assign = sum;
22   sum + 1;
23   put (_all_) (=);
24   run;

sum=1 assign=.
NOTE: The data set WORK.S2 has 1 observations and 2 variables.
NOTE: DATA statement used (Total process time):
      real time           0.03 seconds
      cpu time            0.04 seconds


25   data s2;
26   assign = sum;
27   sum + 1;
28   put (_all_) (=);
29   run;

assign=0 sum=1
NOTE: The data set WORK.S2 has 1 observations and 2 variables.
NOTE: DATA statement used (Total process time):
      real time           0.01 seconds
      cpu time            0.03 seconds


30   data s2;
31   retain sum 100;
32   assign = sum;
33   sum + 1;
34   put (_all_) (=);
35   run;

sum=101 assign=100
NOTE: The data set WORK.S2 has 1 observations and 2 variables.
NOTE: DATA statement used (Total process time):
      real time           0.00 seconds
      cpu time            0.00 seconds

sas-innovate-wordmark-2025-midnight.png

Register Today!

Join us for SAS Innovate 2025, our biggest and most exciting global event of the year, in Orlando, FL, from May 6-9. Sign up by March 14 for just $795.


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.

SAS Training: Just a Click Away

 Ready to level-up your skills? Choose your own adventure.

Browse our catalog!

Discussion stats
  • 4 replies
  • 765 views
  • 2 likes
  • 4 in conversation