I'll just throw this idea into the mix, in case it strikes a chord:
Years ago we converted a massive* program from using ISAM to Btrieve, and the approach we took was to write maybe 20 smallish routines that emulated the ISAM interface by translating the requests into their Btrieve equivalent. Surprisingly, it worked. Even better, the emulation routines were great for adding debugging instrumentation, parameter checking, profiling counters, etc, and we sorted out some other issues that we didn't even know we had (other than customers occasionally saying things like: and then that part number disappeared...)
Consequently we could change stuff over to "native" Btrieve at a more relaxed and less bugprone pace. In reality, we left most of it as-is (ie, emulated ISAM) and only recoded where it gave a performance or clarity advantage.
Maybe something like that could work here too.
* took a box of paper to print out, = 2000 pages x 50 lines/page = 100,000 lines of code.