CLEAR SET TALK OFF SET SAFETY OFF CREATE TABLE mytable (nvalue n(5,0), cvalue c(10)) SELE mytable FOR i = 1 TO 50000 APPEND BLANK REPLACE mytable.nvalue WITH i ENDFOR SELE mytable GO TOP mval = 0 ? "DO WHILE LOOP" ? "START1:" time1 = DATETIME() ?? time1 DO WHILE !EOF() WAIT WINDOW "Processing "+ALLTRIM(STR(mval))+" of 50,000" NOWAIT DO countit WITH mval REPLACE mytable.nvalue WITH nvalue+1 IF EMPTY(mytable.cvalue) REPLACE mytable.cvalue WITH "TEST1" ELSE REPLACE mytable.cvalue WITH "TEST2" ENDIF IF !CHECKIT(RECNO()) EXIT ENDIF IF mval > 999998 EXIT ENDIF SKIP ENDDO time2 = DATETIME() timegone = timepassed(time1,time2) ? "FINISH:" ?? time2 ? "TIME ELAPSED: " ?? timegone ? ? ? SELE mytable GO TOP mval = 0 ? "FOR ENDFOR" ? "START2:" time1 = DATETIME() ?? time1 FOR i = 1 TO RECCOUNT() WAIT WINDOW "Processing "+ALLTRIM(STR(mval))+" of 50,000" NOWAIT DO countit WITH mval REPLACE mytable.nvalue WITH nvalue + 1 IF EMPTY(mytable.cvalue) REPLACE mytable.cvalue WITH "TEST1" ELSE REPLACE mytable.cvalue WITH "TEST2" ENDIF IF !CHECKIT(RECNO()) EXIT ENDIF IF mval > 999998 EXIT ENDIF SKIP ENDFOR time2 = DATETIME() timegone = timepassed(time1,time2) ? "FINISH:" ?? time2 ? "TIME ELAPSED: " ?? timegone FUNCTION checkit LPARAMETERS recordno IF RECNO() <> recordno GOTO recordno ENDIF IF EMPTY(mytable.nvalue) ? RECNO() ENDIF RETURN .T. PROCEDURE countit LPARAMETERS newval newval = newval + 1 RETURN newval PROCEDURE timepassed LPARAMETERS starttime, endtime timetaken = endtime - starttime x = ttoc( { 00:00 } + timetaken, 1) x = substr(x,9,2) + ':' + substr(x,11,2) + ':' + right(x,2) RETURN x