>>>#DEFINE's are string translations that take place at compile-time not run-time. That is, when PRG's etc. are converted into FXP's or EXE's etc.
>>
>>Houston,
>>
>>This isn't correct if the #DEFINE contains a function such as your INLIST() example. These are evaluated at run-time.
>
>George,
>I just entered the following code into VFP6 SP3 running on NT4 SP6.
#DEFINE Sunday 1
>#DEFINE Saturday 7
>#DEFINE AWeekend INLIST( iDayOfWeek, Saturday, Sunday )
>
>CLEAR
>dCurrent = DATE()
>iDayOfWeek = DOW( dCurrent )
>IF (AWeekend) THEN
> ? "Yes it's a weekend."
>ELSE
> ? "Not a weekend"
>ENDIF
In my Edit, Preferences, I have 'Compile when saved' checked. After compiling the prg and running it for today (Monday), I get "Not a weekend", and then I changed the date to Sunday using my system clock and immediately ran the prg again (without any modifications and/or recompiling) - as expected the message changed to "Yes it's a weekend."
>
>If the INLIST() is 'evaluated' at compile-time, why does the message change?
Houston,
This is what you said,
"#DEFINE's are string translations that take place at compile-time not run-time. That is, when PRG's etc. are converted into FXP's or EXE's etc."What I am saying is that if the #DEFINE contains a function call such as INLIST() this statement is not correct. These are dynamic and evaluate differently at run-time.
George
Ubi caritas et amor, deus ibi est