locate for {expression here} if found() {some code here} endifLocate IS using your index, if available and applicable to the search expression, however it will internally create a bitmap of records where that expression is true, in case you want a loop similar to a scan for, like this
locate for {expression here} do while found() {some code here} continue enddoThe Continue command just repeats the search using the same expression, starting from the current record. This is the old way of doing scan for (before scan was introduced in 1991), which was still useful (the cached bitmap helps to speed it up) so it's still available and will be.