Mike, you have a lot better feeling for the english language than I have, thanks for that, you hit the nail.
I would always read CANCEL as a abnormal exit, a cancellation, and a QUIT as a quit.
Also I never said CANCEL is there to return values, I said the opposite, I said: "I wouldn't put CANCEL at the end of any procedure, just beacause I don't intend to return any value." That's double negation.
CANCEL could be used, if you intend to end a procedure without returning a value, as it cancels out there. But you're right, it's useless to talk of it as returning without return value, as CANDEL doesn't only cancel out of a method or prg, it removes all stack levels and abnormally returns program execution to the top stack level, which can be the Foxpro command window, or Windows itself, depeding from where you started.
But surely CANCELs intention is an abnormal ending of an application, in contrast I read QUIT as a normal end of execution, technically it may make no difference.
The help also says on CANCEL, that it releases all private variables. That also may cause the side effects Dan speaks of, but is done anyway, if you return back to the top callstack level, and QUIT does that, too, even though the help mentions other aspects of QUIT there, which would also run anyway, eg closing all tables and file handles in general.
Bye, Olaf.