I use the freeze in a if like you on 11 on many many scripts and it never was a problem on My FMS 11.
But we shouldna't have to resort to such if. FMS should ignore incompatible script steps that don't modify the outcome of a script by itself, gracefully.
Also, to me the server side not compatible script steps count is unexplicably high. For instance, the pause scrip step is not server side ok, that's non sense. In my opinion server side script execution needs a complete overhaul !
P.S : The Freeze script steps shouldn't exist, all scripts should be executed by defaults with window freeze, we should have the oposite a updtate window script steps for the very very few case we could need e the display to be updated (I never had the need for that in 10 years, but I'm forced to litter all y script with a window freeze to get descent performance)
I've had to resort to doing a whole bunch of loops in lieu of a pause for a Server side script, which was a bit annoying. I wish they would allow pauses in a Server script. Likewise, it would be nice if the Server script would just ignore a freeze window script step instead of erroring out. There is no real benefit in forcing a script to crash just because you have a freeze window or pause step in it. Lets hope a future FM will improve on Server Side Scripts.
fmpvince may have chosen a poor example,
My recommendation is to keep your FMS scripts totally separate from the regular scripts. Don't try to reuse a script designed for user interaction when there can't be any. Server side scripting requires a different approach and more testing to get it right.
The Pause script step is server side compatible, if you designate a time. However, pausing a script indefinitely on the server, which has no way to resume it, would be inappropriate as that operation relies on a user activity. Same with the other incompatible script steps. If the script step deals with or relies on a UI element (such as a window or user interaction) it is inappropriate for it to be used on the server.
To me the fact that there are many UI interaction script steps is a good thing.
The purpose of the exit script on incompatible commands is to avoid 'unexpected' processing. While putting them inside an IF() will stop them from being performed and therefore not stop the script it is incumbent on the developer to make the script FMS compatible, not for FMS to read the mind of the developer to figure out what they should have done.
The Pause script step is server side compatible, if you designate a time.
There is some confusion on this then. In FMP11, that step is grayed out regardless of whether you specify a time or not.
In FMP12, it is listed as compatible for server scripting (not grayed out and no warnings) regardless of the option specified (indefinitely or timed).