>Or perhaps it's that traditionally a function returns a value, whilst a procedure does not.
Traditionally, that is the case. However, in VFP it doesn't make any difference how they are defined...it's how they are called. For example:
PROCEDURE MyRoutine
LPARAMETERS a, b
* Do something
RETURN "Completed"
Now, if I use the following code:
DO MyRoutine WITH 1, 2
It is treated as a procedure. The return value is not used. However, I can also call the same routine as a function:
c = MyRoutine(1, 2)
Craig Berntson
MCSD, Microsoft .Net MVP, Grape City Community Influencer