Re: C-ISAM -> Oracle RDBMS

From: Geert Borstlap <geert.borstlap_at_anubex.com>
Date: Mon, 11 Feb 2002 18:12:45 +0100
Message-ID: <3c67fce1$0$33512$ba620e4c_at_news.skynet.be>


> anyone know of a tool to convert/migrate C-ISAM files to Oracle RDBMS
?

Are you using COBOL-programs to access those C-ISAM files? If you do, the answer is YES!

About a year ago, we developed a tool for a number of banks in Luxemburg and Switzerland that is doing this job. It's called the "genIO" (generate IO-modules), and it converts automatically all your COBOL-programs containing ISAM file-IO to the same COBOL-programs but with it's data stored in an Oracle RDBMS. It also generates the needed Oracle-CTRL files to load the data in the RDBMS.
We're doing migrations of legacy platforms towards modern technology, and the "upgrade" of Index-sequential COBOL files to a Oracle tables (and changing all infected sources automatically) is a spin-off project leading it's own life now.

Of course we can't simply change every READ in a FETCH, a WRITE in an INSERT, REWRITE -> UPDATE, ...
This would be to easy.

There are 3 mayor problems when moving from C-ISAM towards RDBMS. 1) A sequence of COBOL file actions (OPEN, START, READ NEXT, READ PREVIOUS, WRITE, INSERT, CLOSE, ...) works differently in an RDBMS. You can READ on the primary key, continue READing on an alternate key, switch direction by a READ PREVIOUS, ... and the fun has just begon. 2) The datatypes available in Oracle is only a subset of all datatypes available in COBOL.
3) An FD (File Description) in COBOL can be defined with levels (03, 05, 07, ...) and OCCURS (arrays) whereas Oracle can only use a flat buffer whithout OCCURS.

All problems are solved in an IO-module. This IO-module (one per file, so in Oracle terms one per table) ensures that we get the same data, as you would get with the C-ISAM version. All COBOL-programs are parsed, stored in a COBOL-tree and regenerated, and every FILE-statement (READ, WRITE, OPEN, ...) is automatically changed into a CALL statement, calling the appropriate IO-module.

Well, the work is done in 5 steps. (which means you run the "genIO"-tool 5 times)

Step 1) (optional) analyse all COBOL sources and count the numbers of ISAM files used and the number of "file-IO statement" replacements that needs to be done. This gives you an idea how much work you have if you want to do it manually.
Step 2) generates the CREATE TABLE scripts. Step 3) generates an IO-module per FD description (ISAM file) Step 4a) (fast data migration): generates the Oracle-CTRL files per FD description
Step 4b) (slow data migration): generates a small COBOL program that reads the complete ISAM file and INSERT record per record in the RDBMS. Step 5) replaces every file IO statement in your COBOL program, and replace it by the appropriate CALL IO-module statement. These new statements are doing functional exactly the same as the original ones.

Now you create the tables in Oracle, migrate the data, compile the IO-modules (.pco -> .o), compile and link your final exe's (with the generated IO-modules) and you are ready. After these steps you have your old COBOL-application working exactly the same, however the data is stored in an Oracle RDBMS now. No manual work needs to be done.

Some optimisation which are built in:
1) renaming: It is possible to choose new names for your fields in the Oracle table.
2) The IO-module can be generated for all keys (primary and alternate keys) or for a certain key alone. This produces smaller object-code. 3) The IO-module can be generated in an optimalisation mode. When you would read your complete file in certain COBOL programs (in Oracle i.e a full table scan) this would boost performance.

So, I think we can help you. I kindly invite you to take a look at our website, where more details are explained. http://www.anubex.com and push the "the migration Centre" button.

Hope this info helps.
Geert Received on Mon Feb 11 2002 - 18:12:45 CET

Original text of this message