Here is my coding and the DBF i used is INDEACC.DBF
STRUCTURE:
DATABASE C 11
INDEXFLD C 40
INDEXFILE C 11
FORCOND C 40
PROCEDURE NDXER
PRIVATE NSTART,NEND,NTIME
STORE 0 TO RANGE,I
NSTART=SECONDS()
SELE A
USE INDEACC SHARED
GO TOP
MEN = 5
@11,45,21,72 BOX SPACE(9)
@11,45 TO 21,72 DOUBLE
@11,((45+72)-LEN('RE-INDEXING'))/2 SAY "RE-INDEXING" COLOR 'B+'
FILECTR = 1
MBAR_LENGTH = 22
COUNT TO MTOT_REC
MPERC = ROUND(MBAR_LENGTH/MTOT_REC,0)
MNUM = 100/MTOT_REC
@12,46 SAY "TOTAL FILES :" COLOR 'R+'
@13,46 SAY "FILES INDEXED :" COLOR 'R+'
@14,46 SAY "DATABASE FILE :" COLOR 'R+'
@15,46 SAY "INDEX FILE :" COLOR 'R+'
@16,46 SAY 'RECORD NUMBER :' COLOR 'R+'
@18,46 TO 20,71
@19,48 SAY REPL(CHR(219),MBAR_LENGTH) COLOR 'B'
GO TOP
DO WHILE !EOF()
MSHO = RECNO()
MDATABASE = A->DATABASE
MINDEXFLD = A->INDEXFLD
MINDEXFILE = A->INDEXFILE
MFOR = ALLTRIM(A->FORCOND)
@12,63 SAY LTRIM(STR(MTOT_REC,8)) COLOR 'GR+'
@13,63 SAY LTRIM(STR(FILECTR,8)) COLOR 'GR+'
@14,63 SAY MDATABASE COLOR 'GR+'
@15,63 SAY MINDEXFILE COLOR 'GR+'
@17,55 SAY SUBSTR(STR((FILECTR/MTOT_REC)*100),7,4)+" % COMPLETE" COLOR 'G+'
RANGE = MBAR_LENGTH*(FILECTR/MTOT_REC)
I = 0
DO WHILE I <= RANGE .AND. I <= MBAR_LENGTH
@19,48+I SAY CHR(219) COLOR "R+"
I = I+1
ENDDO
SELE B
USE &MDATABASE
IF LEN(ALLTRIM(MFOR)) > 0
INDE ON &MINDEXFLD TO &MINDEXFILE FOR &MFOR WHILE NUFUNC()
ELSE
INDE ON &MINDEXFLD TO &MINDEXFILE WHILE NUFUNC()
ENDIF
SELE A
IF !EOF()
SKIP
ELSE
EXIT
ENDIF
FILECTR = FILECTR + 1
ENDDO
SELE B
USE
SELE A
USE
NEND=SECONDS()
NTIME=NEND-NSTART
ALERT(ALLTRIM(STR(NTIME,10,0))+' Seconds Taken')
REST SCREEN
RETURN
FUNCTION TIMESTR(FSECONDS)
LOCAL KHOUR,KMINUTE,KSECONDS
FSECONDS=ROUND(VAL(FSECONDS),0)
IF FSECONDS>60
KMINUTE=INT(FSECONDS/60)
KSECONDS=INT(FSECONDS%60)
ELSE
KSECONDS = FSECONDS
KMINUTE=0
ENDIF
IF KMINUTE>60
KHOUR = INT(KMINUTE/60)
KMINUTE=INT(KMINUTE%60)
ELSE
KHOUR=0
ENDIF
TSTG = PADL(ALLTRIM(STR(KHOUR)),2,'0')+':'
TSTG = TSTG+PADL(ALLTRIM(STR(KMINUTE)),2,'0')+':'
TSTG = TSTG+PADL(ALLTRIM(STR(KSECONDS)),2,'0')
RETURN TSTG
FUNCTION NUFUNC()
IF EOF()
RFLAG = .F.
ELSE
@16,62 SAY ALLTRIM(STR(RECNO())) COLOR 'GR+'
@16,COL() SAY '/' COLOR 'R+'
@16,COL() SAY ALLTRIM(STR(LASTREC())) COLOR 'R+'
RFLAG = .T.
NEND=SECONDS()
NTIME=ALLTRIM(STR(NEND-NSTART,10,2))
@20,52 SAY "TIME:"+TIMESTR(NTIME) COLOR "BG+"
ENDIF
RETURN RFLAG
I hope u need no comments on this Program
Durai.