The 'local' refers to *scoping* of the variables that are passed into the function called not the 'By Value or By Reference' status. Those are two completely unrelated concepts.
By default FoxPro uses PRIVATE variable scope and PARAMETERS uses Private scope as well. LPARAMETERS basically just makes the parameters LOCAL and scope to the function.
So think of PARAMETERS and LPARAMETERS as the difference between:
PRIVATE Parm1, Parm2
and
LOCAL Parm1, Parm2
If you recall PRIVATE scope is hierarchical - visible down from where a variable is declared all the way into child functions/methods called. LOCAL scope is local to the function the variable is declared at. So LPARAMETERS limits the scope of the parameters - where they are visible - to the function they are declared in.
It has nothing to do with passing by value or by reference.
+++ Rick ---
>Hi,
>
>Specifically I mean, as far as the title, what is the purpose of the "L" in LPARAMETERS. I understand it means "local" but the following example shows that it is not quite local:
>
>
>LOCAL lVar1, lVar2
>
>STORE 1 TO lVar1, lVar2
>
>=TestFunct( lVar1, @lVar2 )
>
>? lVar1, lVar2
>
>FUNCTION TestFunct
>LPARAMETERS lVar1, lVar2
>
>lVar2 = 122
>
>RETURN
>
>
>Or does it mean that the "@" overrides the L in LPARAMETERS?