Never mind ... sort of.
I went back and re-checked the obvious, and I hadn't really fixed the fact that the second UDF moved the record pointer in the primary table, and issued an unlock command with it selected. I fixed that, and the error went away.
I'm still confused though. "Record not locked?" "Record locked?" We're talking about a table buffer here, isn't it a cursor VFP's created in my workstation's memory? Don't I have "exclusive" use of it? Why is there a question of locking a record in the cursor before the TABLEUPDATE command?
Still confused, but hey, the program works.
Rich.
Rich Addison, Micro Vane, Inc., Kalamazoo, MI
Relax, don't worry, have a homebrew.
- Charlie Papazian, The New Complete Joy of Home Brewing