I just got Centos running under VMware...and I'm installing/setting up all the helpful Unix/Linux services that are turned off by default. I agree that the level of technical knowledge provided by Gus has been extrordinary. That said, it's the same kind of technical knowledge I provide others about underlying database structure that I am intimately familiar with. Sadly, I have little to offer the Progress community, However; If Gus would like a copy of the completed program (the source code) that his knowledge helped me to create...I am happy to send him a copy. Because active Progress instalations have superior tools, I don't know how much use he would have for this. It's also no doubt somewhat "version dependant". It's a small single purpose program. What it will do, if take a single Progress .db or .dx file and "sort the records" into groups called file00001, file00002, file00003,...file###### etc. where all the records in this file belong to the same table. With some effort, the program could replicate the "binary dump" process. Gus could extend the program to increase it's usefullness however he see's fit. This program runs in a complete absence of the Progress runtime or any other Progress libraries or other tools. I have no doubt that Gus could write it himself if he needed such a program. The additional knowledge he has provided on this forum has far exceeded any expectations. The level of "support" I've received from him personally speaks very highly to that available to the Progress community. Rest assured that I will continue to speak highly of both the OpebnEdge product and support available.
You have part of it right.
But fa00 does not seem reasonable. The table number will be a positive value for user defined tables and a negative value for the tables that contain metadata, such as the table and index definitions, but most of them are not such large values as fa00. I must have forgotten something.
The table number is the first data value and is "column 0". It will not appear in subsequent fragments.
Subsequent fragments will not have a skip table. The skip table is for the entire row when the fragments are assembled.
As I mentioned, the table number is either a single integer data value, column 0, OR it is an the first element in an array of values. The first form was used in older datbases and the latter in newer ones.
0xfa is the prefix for an array. The next two octets are the array length. The array ends with 0xff.
The array should have 8 data values, all integers. The first element is the table number.
Gus, you must be snowed in to be giving this kind of detailed help to someone!
Consulting in Model-Based Development, Transformation, and Object-Oriented Best Practice http://www.cintegrity.com
Maybe Gus just recognizes there aren't many people willing to learn the nuts and bolts behind a process and appreciates somebody...crazy enough to to tackle a problem like this the old fashioned way. By actually writing code.
...or maybe Gus is just a really nice guy and feels that "what goes around comes around"...
...or maybe Gus figured out I'm in Cincinnati Ohio and has a craving for Skyline Chili, or Graeters Ice Cream and knows I can find his office address.