Re: C-ISAM -> Oracle RDBMS
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