It is hard to say where the variable disapears. The variable is defined as PRIVATE and must be accessible in every subsequncive functions/procedures. Are you sure you have no CLEAR ALL, RELEASE ALL or something like that?
Put a break pont where you define the variable.
Run the application and open Trace window.
When the application stops make one step and make sure that the variable is defined.
In Breakpoint dialog add a new one:
"Break when expression is true" and in the expression put:
VARTYPE(lnPL1Price) == "U"
run the program
Against Stupidity the Gods themselves Contend in Vain - Johann Christoph Friedrich von Schiller
The only thing normal about database guys is their tables.