Dictionary Reporter Version 1.0 Author: David Zaremba 216-221-6600 (work) 216-221-9742 (fax) 70042,1446 (CompuServe, personal) 74143,3400 (CompuServe, Corporate) DISCLAIMER: While this program does not modify the Data Dictionary in any way, information regarding the layout of the Data Dictionary was obtained without any assistance from Clarion. As such, the information reported on is not guaranteed to be accurate. Furthermore, user of this program assumes all risks related to its use. Dictionary Reporter was created with two goals in mind. Goal one was to be able to print out documentation on the Clarion Data Dictionary in a developer defined format. To enable this goal, goal two was to decipher the Data Dictionary. Application Generator was used as much as possible. In fact, it could have been used a bit more (some of the embedded source could have been created through the Formula Generator, etc.), but in the interests of time, and to avoid some of the problems of Formula Generator (such as its insistence on evaluating Formulas in alphabetical order as opposed to entry order), embedded source was used. To allow a developer to tailor the reports to their own needs, Dictionary Reporter is being distributed with the .DCT and .APP files. All fields in the Data Dictionary (except for relations at this point) should be in the reports. If not, please let me know so I can update the record layouts on reports. I also have Browse/Form screens under development to allow on- screen display of what's on the reports. The idea is to allow editing of this information. Because of certain data relationships, this is not a simple thing (for example, not only is a field saved, but so is its length, and multiple such fields are concatenated together upon saving). To be honest I would recommend ALWAYS using Clarion's Data Dictionary. But for those adventurous ones, I'll release these enhancements at a future time. Relation reporting and screens will also be released. A number have asked about the .APP file layout. I have looked at it, and while conceptually similar to the .DCT file, it is naturally more involved. As I get time, I'll be exploring reporting and additional access to it. This was not intended to be an exercise in programming style or ability. This project was done in very small time frames (10 or 15 minutes here and there). Looking back over everything, I can already see plenty that I COULD have done differently. If I get a chance, I'll improve the coding itself. But for now, it works, and that's what matters most. This project was coded using CDD 3.008 and Dictionary Version 8. Previous or future dictionary versions cannot be guaranteed to produce accurate reports. Feel free to make ask any questions or make any comments, or criticisms. Use of Dictionary Reporter: Using Dictionary Reporter is straight forward. Make sure Btrieve is loaded before running the program. Recommended parameters are those used in the CDD.BAT file used by Clarion. Then simply type DCTRPT. Upon startup, you will be presented with a standard file selection screen. Simply select the Data Dictionary to be reported on. This selection can be changed later within the program by selecting 'Dictionary' from the Main Menu. Once in the program, simply select which portion of the Data Dictionary you want a report of (Files, Keys, Memos, or Fields). File Relations are not supported for reporting in this release at this time, but will be available in the future. You can select the output destination (via the standard Clarion Redirect template). Basic Dictionary Layout: The Dictionary is laid out using variable length records. The fixed length portion contains File, Key, Memo, Field and Relation Labels as well as the Dates and Times the record was created and last modified. There is also a Record Type field which identifies what type of record it is (File, Key, Memo, Field, or Relation). The variable length portion contains the information specific to its record type. At the beginning of this variable length portion is a series of BYTE or USHORT fields that contain the lengths of the various pieces or fields of information. This section is followed by a potentially long STRING field that contains all the values concatenated together. To extract a specific piece of information, simply add up all the field lengths prior to the field you want (this creates an offset) and then pull out the information for a length equal to what is specified for this field in the first portion mentioned above. That is a very basic description of the dictionary layout. Much more can be learned by simply going through the included .DCT and .APP file. If you have any questions, please feel free to ask.