Legacy ISAM Access Methods for Java?
GamerGeek asks: "I work for a small company in the Midwest. We have some old products written in Databus / PL/B. In my spare time I have been investigating the idea of rewriting these programs in Java. My main problem is that the programs store data in ISAM (Indexed Sequential Access Method) files. Rewriting everything all at once is not feasible so the data needs to stay in the ISAM files. I am looking for a 100% java solution for reading and updating ISAM files. A Google search does not turn up anything. Is there one out there? Does anyone know the file format / process for reading an ISAM file? I would be willing to write a package myself if I had that information and open source it too."
I believe that MySQL does ISAM and I know it has JDBC stuff, so I'm thinking that if worst comes to worst, you can convert MySQL's ISAM stuff into Java. However, my gut instinct says that maybe it would be better do to something like use Sleepy Cat's Berkeley DB Java API and write something to convert the ISAM files into Berkeley format.
the other posters are correct to say that implementations of ISAM differ. In particular the indexing scheme may be more or less sophisticated (eg. simple one-level hash index as in a cheap PC database package vs. multi-level indexing with keys grouped in buckets like in expensive multi-user VMS RMS). However even in the more complex forms it isn't that difficult to understand, just take one of the smaller files and get a hex editor on it...
If you're rewriting the applications, why couldn't you move the data into a relational database at the same time?