Larry,
The problem is that date
literals are converted into the internal date format by the compiler. This conversion takes place at compile time and the set date in effect is used to do that. At compile time the code is NOT running and the set date commands in the code do not get executed. Those set dates, in the code, will be in effect when the code runs (but the literals have already been converted).
User data entry will be affected by the set date commands.