Step 1. Upgrade to Clipper 5.2e ASAP! (Forget 5.3)
Step 2. If you forgot to do step 1, then upgrade to Clipper 5.2e
Step 3. After perforing step 1 or step 2, please check the workings of your program with the big database and the DBFNTX indexes. Fat chance most of your troubles wil be gone........
Step 4. If step 3 fails: Read the NortonGuide (included with your Clipper installation, subdir NG) Called 'Clipper 5.2 > Drivers Guide' It has a lot more details then I like to type in here

In short:
- Put somewhere in your code :
- Before opening any database or indexfiles, make the new driver the default by calling
- When indexing, make sure to create compound indexes (.cdx) by adding the clause
to your index statement(s), else it wil create single indexes (.idx), just like DBFNTX does. These .idx indexes are already more efficient, but .cdx is even better. You should add all permanent indexes to 1 compound indexfile.
- When USE-ing the database/indexes, specify the compound indexfile only.
Code:
USE (DataBase) INDEX (CompoundIndex)
- When changing indexorder specify the separate index names
- If you already have a function like IndexExt() instead of '.ntx' then most of the above should be a POC (piece of cake) ;-) (This function I had to make myself, as early RDD's didn't have a similar function OrdBagExt())
- Modify your link-script adding
- You can use multiple databasedrivers (RDD's) in a single program, upto 1 per database, but it wil cost you memory.
If you are using a protected mode linker like ExoSpace or Blinker 3.x or newer this is hardly a problem, as the RDD's are protected-mode safe, but in real-mode situations, 2 RDD's in a single app is already pushing it to the limits :-(
There is the VIA clause in the USE command, specifying the RDD to be used, so you can omit the RDDSetDefault() call.
If you have a nice dictionary driven system, or a central 'OPEN_DATABASE' function, then you probably only have to change a 'few' lines of code to make this work. If your USE statements are scattered around your code then I can only wish you a lot of luck ;-)
I implemented this in my own, proprietairy and non-available, DataDictionary system, and it took me a 'few weeks' to get things fully independent from the underlaying database, but then it really payed off, cause I can change the active RDD in a whole system in 1 single conversion, and a re-link of the EXE, with the correct RDD added. Testing takes most of the time
Please don't forget I'm *not* currently developing anything in Clipper these days (It's Cobol time...), so my clipper statements are a bit rusty, but I have a respectable codebase available.
If you need more info during implementation, then just ask in this forum. There are lots of guru's here ;-)
HTH
TonHu