DATA Step, Macro, Functions and more

symbol ^: what is?

Posts: 37

symbol ^: what is?


I found a program sas the symbol ^, I do not understand what it means, someone can explain to me?


data _null_;

x= ^-2; put x=;
x= ^-1; put x=;
x= ^0; put x=;
x= ^1; put x=;
x= ^2; put x=;
x= ^3; put x=;
x= 1*^-2; put x=;
x= 2*^-1; put x=;
x= 3*^0; put x=;


Super User
Super User
Posts: 9,599

Re: symbol ^: what is?

Posted in reply to mario_pellegrini

It means NOT:


However in the context of what your showing below, well, I really don't know where you got the code from, but it isn't very helpful.  What are you trying to do?  From a readablity sense I would use textual varieties, e.g. ne for not equal, rather than ^=.  Also ^ could be escape char, so would avoid it.

Posts: 20

Re: symbol ^: what is?

Posted in reply to mario_pellegrini

Beaten to it by RW9!


Yes, ^ is shorthand for not and I remember using it on IBM mainframes many, many years ago (so far back it was either SAS 5.18 or 6.02).


I wouldn't try and guess why the code was written like it was but there are far more easily understood ways of getting the same results.


It is probably a leftover fromsomeone experimenting before using something similar in a "real" SAS program.




Super User
Posts: 6,754

Re: symbol ^: what is?

Posted in reply to mario_pellegrini

While it is true that the symbol gets interpreted as "not", there is more that you need to know to figure out what this code is doing.  Putting "not" in front of a number turns it from a numerical value into a logical expression.  SAS evaluates any logical expression as either true or false, and returns a "1" for true expressions and a "0" for false expressions.  "not" means do the opposite:  return "0" for true expressions, and "1" for false expressions.  What does SAS consider to be true or false?  Well, the rule is that zero and missing values are false, and anything else (including negative numbers) is considered to be true.  So in every case, "not" plus a number gets replaced by either "1" or "0", and then the math gets carried out.  I agree that this code must be an experiment, just to get more insight into how SAS works with logical expressions.

Ask a Question
Discussion stats
  • 3 replies
  • 1 like
  • 4 in conversation