ex.hlp (Topic list)
CHECKPOINT,DELETETABLE,INSERT,RETRIEVE,SEEK,TEXTCOMP, and UPDATE
                        Example                Contents  Index  Back
──────────────────────────────────────────────────────────────────────────────
' This example uses the CREATETABLE statement to create a new table in an
' ISAM file and uses the SEEK, RETRIEVE, UPDATE, and INSERT statements to
' insert records into it. The LOF function is used to display the number of
' records in the new table and then destroy the table with DELETETABLE.
 
' Note: To run this program, you must load the ISAM TSR program PROISAMD.EXE.
' Also, this program assumes a file called BOOKS.MDB exists in the current
' directory. BOOKS.MDB is a sample ISAM file that SETUP copies to your disk.
 
' If this program is interrupted before the database is closed, the file
' BOOKS.MDB may be left in an inconsistent state.
 
' To try this example:
' 1. Choose New project from the File menu
' 2. Copy the code example below to the code window
' 3. Press F5 to run the example
 
 DEFINT A-Z
 TYPE BookRec
         IDNum AS DOUBLE             ' Unique ID number for each book
         Price AS CURRENCY           ' Book price
         Edition AS INTEGER          ' Book edition
         Title AS STRING * 50        ' Book title
         Publisher AS STRING * 50    ' Book publisher
         Author AS STRING * 36       ' Book author
 END TYPE
 
 CONST Database = "BOOKS.MDB"    ' Name of the disk file
 CONST tablename = "BookStock"   ' Name of the table
 DIM Library AS BookRec          ' Variable for current record
 DIM MinPrice AS CURRENCY        ' SEEK criteria
 
 CLS                             ' Clear the screen
 LibraryFile = FREEFILE          ' Open existing table
 OPEN Database FOR ISAM BookRec tablename AS LibraryFile
 CREATEINDEX LibraryFile, "Library", 0, "Price"
 SETINDEX LibraryFile, "Library"
 NewFile = FREEFILE              ' Create and open a new table
 OPEN Database FOR ISAM BookRec "PricyBooks" AS NewFile
 
' Fill new table with records for all books with price >= MinPrice.
 DO
     DO
        INPUT "Display books that cost as much or more than "; MinPrice
        IF MinPrice < 0 THEN PRINT "Positive values only, please."
     LOOP UNTIL MinPrice >= 0
     SEEKGE LibraryFile, MinPrice
     IF EOF(LibraryFile) THEN
        PRINT "There are no books greater than"; MinPrice
     END IF
 LOOP WHILE EOF(LibraryFile)
 DO
     RETRIEVE LibraryFile, Library
     INSERT NewFile, Library
     MOVENEXT LibraryFile
 LOOP UNTIL EOF(LibraryFile)
 
' Loop through new table twice: first time ask for price increase;
' second time display new price.
 FOR count = 1 TO 2
 CLS                          ' Clear the screen
 PRINT SPC(18); "There are"; LOF(NewFile); "books that cost at least ";
 PRINT USING ("$###.##"); MinPrice
 PRINT " ID Number"; SPC(3); "Title"; SPC(20); "Author";
 PRINT SPC(11); "Publisher"; SPC(10); "Price"
 VIEW PRINT 3 TO 20
 MOVEFIRST NewFile
 DO
     RETRIEVE NewFile, Library
     PRINT Library.IDNum; " "; LEFT$(Library.Title, 20);
     IF LEN(RTRIM$(Library.Title)) > 20 THEN
          PRINT "...  ";
          ELSE
          PRINT "     ";
     END IF
          PRINT LEFT$(Library.Author, 15); "  ";
          PRINT LEFT$(Library.Publisher, 16); "  ";
          PRINT USING ("$###.##"); Library.Price
          MOVENEXT NewFile
 LOOP UNTIL EOF(NewFile)
 
 IF count = 1 THEN
     VIEW PRINT 20 TO 24: LOCATE 20, 1
     DO
          INPUT "Increase cost by how much (0-100%)"; increase
          IF increase < 0 OR increase > 100 THEN PRINT "Illegal value"
     LOOP UNTIL increase >= 0 AND increase <= 100
     MOVEFIRST NewFile       ' Update records in PricyBooks
     DO
           RETRIEVE NewFile, Library
           Library.Price = (Library.Price * (100 + increase)) / 100
          ' Overwrite record with increased price.
           UPDATE NewFile, Library
           ' Force ISAM to flush the buffer to disk.
           CHECKPOINT
           MOVENEXT NewFile
     LOOP UNTIL EOF(NewFile)
 END IF
 VIEW PRINT 1 TO 19
 NEXT count
 
' Destroy index and temporary table; close files.
 DELETEINDEX LibraryFile, "Library"
 CLOSE
 DELETETABLE Database, "PricyBooks"
 END