A quote from course programming 2:
The KEEP, WHERE, and FORMAT statements are compile-time only.
I don't understand why those are compile-time. WHERE takes a condition which is true or false depending on the row from the input data. It can't be evaluated at compile-time. What is compiled then?
Trying to understand the logic, if a compile-time statement can have an effect depending on the actual data, then why aren't all statements compile-time? For example, you can do if-else-constructions. Does SAS parse the English words "if" and "else" every time? (If the code is not compiled that's what I expect.) It makes more sense to me to compile those if-else-constructions, and really every statement, to something lower level before execution.
I know there are languages that are interpreted like javascript where an eval function exists. I wonder how SAS compares to that or if it's something completely different.