>>>>>>>>>>>>>
Adding the WHILE clause makes the SCAN/ENDSCAN not reset the record pointer to the first record.
>>>>>>>>>>>>>
Doesn't SCAN FOR also start at whatever record as SCAN WHILE do?
As opposed to SCAN that starts at the top record (with whatever controlling index tag you may have in effect).
>>>>>>>>>>>>>
If you want to process from the middle of a table to the end, use WHILE.
>>>>>>>>>>>>>
Clarification here: 'to the end' in the case of the poster that used WHILE !EOF()
Actually it is until WHILE condition stops being true.