I really like the distinction between compile-time and execution-time functions. Does it break down, however, with respect to open code macro statements like %LET or %PUT? As far as I understand it, open code macro statements are executed immediately without any compilation yet there are many cases where we still need to use compile-time macro quoting functions (%STR and %NRSTR).

Does this mean that some type of compiling does actually occur for open code macro statements? Or is the compile-time/execution-time quoting distinction just a handy rule of thumb that does not apply in these instances?