[<<Previous Entry] [^^Up^^] [Next Entry>>] [Menu] [About The Guide]
 EOF()
 Determine when end of file is encountered
------------------------------------------------------------------------------
 Syntax

     EOF() --> lBoundary

 Returns

     EOF() returns true (.T.) when an attempt is made to move the record
     pointer beyond the last logical record in a database file; otherwise, it
     returns false (.F.).  If there is no database file open in the current
     work area, EOF() returns false (.F.).  If the current database file
     contains no records, EOF() returns true (.T.).

 Description

     EOF() is a database function used to test for an end of file boundary
     condition when the record pointer is moving forward through a database
     file.  Any command that can move the record pointer can set EOF().

     The most typical application is as a part of the <lCondition> argument
     of a DO WHILE construct that sequentially processes records in a
     database file.  Here <lCondition> would include a test for .NOT. EOF(),
     forcing the DO WHILE loop to terminate when EOF() returns true (.T.).

     EOF() and FOUND() are often used interchangeably to test whether a SEEK,
     FIND, or LOCATE command failed.  With these commands, however, FOUND()
     is preferred.

     When EOF() returns true (.T.), the record pointer is positioned at
     LASTREC() + 1 regardless of whether there is an active SET FILTER or SET
     DELETED is ON.  Further attempts to move the record pointer forward
     return the same result without error.  Once EOF() is set to true (.T.),
     it retains its value until there is another attempt to move the record
     pointer.

     By default, EOF() operates on the currently selected work area.  It can
     be made to operate on an unselected work area by specifying it within an
     aliased expression (see example below).

 Examples

     .  This example demonstrates EOF() by deliberately moving the
        record pointer beyond the last record:

        USE Sales
        GO BOTTOM
        ? EOF()            // Result: .F.
        SKIP
        ? EOF()            // Result: .T.

     .  This example uses aliased expressions to query the value of
        EOF() in unselected work areas:

        USE Sales NEW
        USE Customer NEW
        ? Sales->(EOF())
        ? Customer->(EOF())

     .  This example illustrates how EOF() can be used as part of a
        condition for sequential database file operations:

        USE Sales INDEX CustNum NEW
        DO WHILE !EOF()
           nOldCust := Sales->CustNum
           nTotalAmount := 0
           DO WHILE nOldCust = Sales->CustNum .AND. (!EOF())
              ? Sales->CustNum, Sales->Description, ;
                    Sales->SaleAmount
              nTotalAmount += Sales->SaleAmount
              SKIP
           ENDDO
           ? "Total amount: ", nTotalAmount
        ENDDO

 Files   Library is CLIPPER.LIB.


See Also: BOF() DO WHILE FOUND() GO LASTREC() LOCATE
This page created by ng2html v1.05, the Norton guide to HTML conversion utility. Written by Dave Pearson