3

We're approaching the migration of legacy OpenVMS RMS files into relational database (both MS SQL 2012 and Oracle 10g are available). I wonder if there are:

  • Tools to retrieve schema of indexed files
  • Tools to parse indexed files
  • Tools to deal with custom RMS data formats (zoned decimals etc) as a bundle/API/Library Perhaps I should change the approach?
Arthur P
  • 1,050
  • 9
  • 16
  • 1
    [analyze/rms_file](http://h71000.www7.hp.com/doc/73final/6027/6027pro_001.html) is a start. It can tell you basic information about the records and indexes. RMS files do not have an inherent schema in terms of record layout. That is left up to the application(s). Legacy data types, notably [VAX floating point](http://nssdc.gsfc.nasa.gov/nssdc/formats/VAXFloatingPoint.htm), may need to be converted to the closest IEEE data type. – HABO Apr 17 '13 at 15:23
  • You should post the COTS tools you investigated that didn't help, to save others the effort of looking. – Ira Baxter Apr 17 '13 at 21:31
  • 1
    Did you check out ConnX? http://www.connx.com I used their RMS version a number of years ago (somewhere between versions 7 and 10, looks like 11.5 is current) and it was up to all my needs at the time. – Hellion Apr 19 '13 at 15:52
  • It appears that the stackoverflow tag [rms] is used just for J2ME recordstore topic, for for the OpenVMS RMS Record management System.It is perhaps better to remove that tag from this topic. – Hein Apr 26 '13 at 14:13
  • Arthur... did you make any progress on this migration? Need further help? Send an Email if you like. Cheers, Hein. ( firstname attunity com ) – Hein May 16 '13 at 15:38

2 Answers2

4

There are several tools available, notably through ODBC vendors (I work for one: Attunity).

1 >> Tools to retrieve schema of indexed files

Please clarify. Looking for just record/column layout and indexes within the files or also relationships between files.

1a) How are the files currently being used? Cobol, Basic, Fortran programs? Datatrieve? They will be using some data definition method, so you want a tool which can exploit that. Connx, and Attunity Connect can 'import' CDD definitions, BASIC - MAP files, Cobol Copybooks. Variants are typically covered as well. I have written many a (perl/awk) script to convert special definition to XML.

1b ) Analyze/RMS, or a program with calling RMS XAB's can get available index information. Atunity connect will know how to map those onto the fields from 1a)

1c ) There is no formal, stored, relationship between (indexed) files on OpenVMS. That's all in the program logic. However, some modestly smart Perl/Awk/DCL script can often generate a tablem of likely foreign/primary keys by looking at filed names and datatypes matches.

How many files / layouts / gigabytes are we talking about?

2 >> Tools to parse indexed files

Please clarify? Once the structure is known (question 1), the parsing is done by reading using that structure right? You never ever want to understand the indexed file internals. Just tell RMS to fetch records.

3 >> Tools to deal with custom RMS data formats (zoned decimals etc) as a bundle/API/Library

Again, please clarify. Once the structure is known just use the 'right' tool to read using that structure and surely it will honor the detailed data definitions.

(I know it is quite simple to write one yourself, just thought there would be something in the industry)

Famous last words... 'quite simple'. Entire companies have been build and thrive doing just that for general cases. I admit that for specific cases it can be relatively straightforward, but 'the devil is in the details'.

In the Attunity Connect case we have a UDT (User Defined data Type) to handle the 'odd' cases, often involving DATES. Dates in integers, in strings, as units since xxx are all available out of the box, but for example some have -1 meaning 'some high date' which needs some help to be stored in a DB.

All the databases have some bulk load tool (BCP, SQL$LOADER). As long as you can deliver data conforming to what those expect (tabular, comma-seperated, quoted-or-not, escapes-or-not) you should be in good shape.

The EGH tool Vselect may be a handy, and high performance, way to bulk read indexed files, filter and format some and spit out sequential files for the DB loaders. It can read RMS indexed file faster than RMS can! (It has its own metadata language though!)

Attunity offers full access and replication services. They include a CDC (change data capture) to not a only load the data, but to also keep it up to date in near-real-time. That's useful for 'evolution' versus 'revolution'. Check out Attunity 'Replicate'. Once you have a data dictionary, just point to the tables desired (include, exlude filters), point to a target DB and click to replicate. Of course there are options for (global or per-table) transformations (like an AREA-CODE+EXHANGE+NUMBER to single phone number, or adding a modified date columns ).

Will this be a single big switch conversion, or is there desire to migrate the data and keep the old systems alive for days, months, years perhaps, all along keeping the data in close sync?

Hope this helps some, Hein van den Heuvel.

Hein
  • 1,453
  • 8
  • 8
-1

OP: Perhaps I should change the approach? Probably.

You might consider finding data migration vendors, some which likely have off-the-shelf solutions, if not as a COTS tool, more likely packaged as a service (I don't think this is a big market).

What this won't help you with is what I think of as much bigger problem with the application code: who is going to change all the code that is making RMS calls, in the corresponding code that makes relational DB calls? How will the entity ("Joe Programmer", or some tool), know where the data migrated to, so that he can write the correct call? What are you doing to do about the fact that the data representation is like to change?

Ideally you'd like an automated migration tool, that will move the data itself (therefore knows that datalayouts and representation changes), and will make the code changes that correspond. You can look for these kind of vendors, too.

Ira Baxter
  • 93,541
  • 22
  • 172
  • 341
  • This response is not constructive - a) i'm aware this is called "data migration" and it is indicated by a tag i attached to a question. b) i have put together a very finite set of concerns since COTS i reviewed do not address those concerns. c) it is obvious that code migration has to be taken care of, this is not a topic of interest here. – Arthur P Apr 17 '13 at 21:16
  • Didn't mean to offend, I'll agree I didn't have to repeat your tag, I don't remember even seeing that part; I'll remove the sentence. Your objection b) appears to be "No COTS tools"; you didn't say that in your question, even so, that's not what I suggested. c) "obvious"? maybe. What everybody who splits the code migration from the data migration seems to forget is the code migration *must* take the data migration into account, and the code migration is frankly the much harder part. You should be optimizing for that, not finding an independent data migration solution. – Ira Baxter Apr 17 '13 at 21:24