LOL
Stealing a line from Marcia Akins, it compiled fine on the UT! <g>
>Hello Hilmar,
>
>I believe you mean to use ENDIF and ENDSCAN not ENDDO in your example :)
>
>
>>>
>>>sele csrtable
>>>go top
>>>do while .not. eof()
>>> rch = csrkey
>>> sele employee
>>> go top
>>> locate for rch=ckey
>>> if found()
>>> lc = locfle
>>> sele csrtable
>>> replace locfle with lc
>>> enddo
>>> skip
>>>enddo
>>>
>>
>>For a start, you could use a SCAN, which saves several commands:
>>
>>
>>sele csrtable
>>scan
>> rch = csrkey
>> sele employee
>> go top
>> locate for rch=ckey
>> if found()
>> lc = locfle
>> sele csrtable
>> replace locfle with lc
>> enddo
>>enddo
>>
>>
>>Next, you should use full commands (select instead of sele), and give your variables meaningful commands. Also, use variable naming conventions, and make sure your variables are declared. I'll omit renaming the variables for now.
>>
>>You can omit "go top", since "locate" will start at the top.
>>
>>In the locate command, I think, it is better to invert (if I understand correctly, ckey is the field, rch the variable), so that Rushmore Optimization works better.
>>
>>
>>select csrtable
>>scan
>> rch = csrkey
>> select employee
>> locate for ckey = rch
>> if found()
>> lc = locfle
>> select csrtable
>> replace locfle with lc
>> enddo
>>enddo
>>
>>
>>In your original code, you forgot to unconditionally go back to alias csrtable. (With SCAN, this is implicit.)