Upgrading from CISAM™
The process of upgrading from cisam should be as simple as relinking with the new library, however there are a few things you will need to sort out first.
isam.h is the CISAM standard header file, the DISAM equivalent is head/iswrap.h
You have three basic alternatives:
The best way to explain this is by example. Assume you have a file containing the following records: AAA, BBB, CCC, EEE, and that the current index is based on these values.
Under cisam, if AAA was the current record and you were to change it's contents to DDD and rewrite, an isread or isstart with a mode of ISNEXT would set the current to EEE.
This can be somewhat problematic if you are doing a read next loop through your file, so we have arbitrarily adjusted this behaviour to ensure that the next record found will follow the current as set before the rewrite.
This means that, given the above example, BBB would become current on an isread or isstart with a mode of ISNEXT.
The same (in reverse) is true when reading backwards through the file with a mode of ISPREV.
We currently consider this behaviour to be an enhancement over the cisam standard, but would be happy to provide true cisam operation if anyone should ask for it. please contact the support department if this is important to you.
For cisam compatible nowait on open and automatic record locks set C7NOWAIT to 1 in isconfig.h
For cisam version 5.0 through 7.1 locking concurrency, when running in parallel with cisam binaries, set C7LOCKING to 1 in isconfig.h
Please bear in mind that binaries linked against a library with C7LOCKING set to 1 will no longer run concurrent with binaries linked against standard DISAM locking.
As above, except C7LOCKING should be set to 2.