Product Documentation

FairCom ISAM for C

Previous Topic

Next Topic


Read the last data record.

Short Name



ISAM function


COUNT LastRecord(FILNO filno, pVOID recptr)


In V12 the file number typedef was formally changed from COUNT, a two-byte value to FILNO, a four-byte value. Refer to this link for compatibility details. Four Byte File Numbering

LastRecord() retrieves the last data record found. If filno designates an index file, LastRecord() reads the last data record based on the key sequential order of entries in index file number filno. If filno designates a data file, LastRecord() reads the last active data record, in physical sequential order. If successful, the last record becomes the current ISAM record for the associated data file. If an error occurs or there are no entries, the current ISAM record is not updated.

If LastRecord() is called with an index number, the data file number involved is not directly described. The ISAM parameters described in ISAM Functions (ISAM Database Technology, /doc/ctreeplus/30841.htm) of the c-tree Programmer’s Reference Guide contain the correspondence between the index number and the associated data file.



Symbolic Constant




Successful retrieval of current ISAM record.



recptr is NULL. No data file read performed.



Could not get lock on data record. No data file read performed.



LastRecord() called with a data file number that is: a variable-length data file; a member of a superfile; has RESOURCES enabled.



No active entries.

See c-tree Error Codes for a complete listing of valid c-tree error values.


FILNO keyfil,datfil;

TEXT recbuf[320];

if (LastRecord(keyfil,recbuf))

printf("\nError %d retrieving last record.", isam_err);

else if (ReReadVRecord(datfil,recbuf,320))

printf("\nError %d retrieving variable portion.", isam_err);


printf("\nSuccessful LastRecord.");


No check is made to determine if recptr points to a region sufficiently large to accept a data record. If the area is too small, either code or data will be clobbered.

filno cannot be a data file number if any of the following are true:

  • The data file is set up for variable-length records.
  • The data file is a member of a Superfile.
  • The data file has Resources enabled (the default state).

In any of the above cases, LastRecord() returns FMOD_ERR (48).

If filno is a key number whose associated data file has variable-length records, only the fixed-length portion, defined by dreclen in the original call to CreateIFile(), is actually read into the buffer pointed to by recptr. If you wish to read the entire variable-length record into the same or a different buffer, issue a call to ReReadVRecord() after the call to LastRecord(). Note that ReReadVRecord() requires the size of the buffer area so that it can check if sufficient space is available.

See also

NextRecord(), PreviousRecord(), FirstRecord(), CreateIFile(), ReReadVRecord()