SEEK Statement Programming Example The following program uses a combination of the SEEK function and SEEK statement to move the file position exactly one record back and rewrite the record if a variable is true (nonzero). '*** Programming example for the SEEK function and statement ' CONST FALSE=0, TRUE=NOT FALSE ' Define record fields. TYPE TestRecord NameField AS STRING * 20 ScoreField AS SINGLE END TYPE ' Define a variable of the user type. DIM RecordVar AS TestRecord '******************************************************************** ' This part of the program is an insert whose only function is to ' create a random-access file to be used by the second part of the ' program, which demonstrates the CVSMBF function '******************************************************************** OPEN "TESTDAT2.DAT" FOR RANDOM AS #1 LEN = LEN(Rec) CLS RESTORE READ NameField$, ScoreField I = 0 DO WHILE UCASE$(NameField$) <> "END" I = I + 1 RecordVar.NameField = NameField$ RecordVar.ScoreField = ScoreField PUT #1, I, RecordVar READ NameField$, ScoreField IF NameField$ = "END" THEN EXIT DO LOOP CLOSE #1 ' DATA "John Simmons", 100 DATA "Allie Simpson", 95 DATA "Tom Tucker", 72 DATA "Walt Wagner", 90 DATA "Mel Zucker", 92 DATA "END", 0 ' Open the test data file. ' DIM FileBuffer AS TestRecord OPEN "TESTDAT2.DAT" FOR RANDOM AS #1 LEN=LEN(FileBuffer) ' Calculate number of records in the file. Max = LOF(1) / LEN(FileBuffer) ' Read and print contents of each record. FOR I = 1 TO Max GET #1, I, FileBuffer IF FileBuffer.NameField = "Tom Tucker" THEN ReWriteFlag = TRUE EXIT FOR END IF NEXT I ' IF ReWriteFlag = TRUE THEN ' Back up file by the length of the record variable that ' is used to write to the file. FileBuffer.ScoreField = 100 SEEK #1, SEEK(1) - LEN(RecordVar) PUT #1 , , RecordVar END IF ' CLOSE #1 KILL "TESTDAT2.DAT" END