>>>And SINGLE and DOUBLE don't work properly for the return value.
>>>
>>
>>Actually, from a bit of experimentation with Christof's help, we proved out that SINGLE and DOUBLE put the value back into the variable, but it doesn't update the value with the new precision, resulting in some funny rounding. As I pointed out, pre-initing a DOUBLE variable to a value with correct precision seems to work OK (IOW, init the variable receiving the DOUBLE or SINGLE to 0.00000000000000000000) and it seems to work OK; it definitely fixed the problem with DOUBLE passed by reference and copied in and out using RtlMoveMemory() in a parameter.
>
>I was talking about return value, not parameters. Did you find a solution for return values too?
>
I honestly haven't tried, at least in part because I don't have a call that returns a SINGLE or DOUBLE; I suspect that it won't work easily, since I think that VFP's API interface always creates a complete new value entry for the return rather than inheriting the number of decimal places in the numeric when a pass by reference occurs, but I haven't tried it out. I'll try to kludge something up this weekend to test it.