howard
howard

Reputation: 23

SAS - If then do condition

I have a column which is numeric and I have a logic as shown below:

if col_1 = "2" then do;
col2 = col3+col4
end;

Now; since its a numeric column; i was expecting the sas code to throw error or do not perform the actions under do statement.
however the statements under do get executed.
It produces the same result as below code

if col_1 = 2 then do;
col2 = col3+col4s
end;

can u explain how this is possible

Upvotes: 0

Views: 92

Answers (1)

data _null_
data _null_

Reputation: 9109

Did not notice the log note?. This is a data statement option NOTE2ERR which switch off automatic type conversion.

44         data _null_;
45            x = 2;
46            if x eq '2' then put 'NOTE: C2N '  _all_;
47            run;

NOTE: Character values have been converted to numeric values at the places given by: (Line):(Column).
      46:12   
NOTE: C2N x=2 _ERROR_=0 _N_=1
NOTE: DATA statement used (Total process time):
      real time           0.00 seconds
      cpu time            0.00 seconds
      
2                                                          The SAS System                            19:00 Friday, February 26, 2021


48         
49         data _null_ / note2err;
50            x = 2;
51            if x eq '2' then put 'NOTE: C2N ' _all_;
ERROR: Character value found where numeric value needed at line 51 column 12.
52            run;

NOTE: The SAS System stopped processing this step because of errors.

Upvotes: 2

Related Questions