[Date Prev][Date Next]
[Thread Prev][Thread Next]
[Date Index]
[Thread Index]
[New search]
To: <framers@xxxxxxxxx>
Subject: Re: ANN: Need database for publishing
From: Dan Emory <danemory@xxxxxxxxxxxx>
Date: Tue, 26 Mar 2002 11:21:11 -0800
Sender: owner-framers@xxxxxxxxx
This is in response to Rick Quattro's challenge: Since I don't subscribe to the framescript users yahoo group, I'd appreciate it if someone on Free framers would post it there. ============================================ I've had a client for the past 6 or so years who produces a 900-page membership directory every year or two. Each of the 28,000 members worldwide has a who's-who-type biography which is assembled from more than 30 record fields. Members are listed by country/state/city. In some cases, members have offices in several different cities, and are listed under each city. An alphabetical index of members must be generated which lists each member's name, with the location(s) of each of his/her offices, and the page number(s) where the member appears in the geographical listings. Prior to each new issue of the directory, using UniMerge, I use UniMerge to produce for the client a customized questionnaire for each member showing the data currently in the client's database. The questionnaire is a self-mailer which is sent to each member for review and correction/updating. After the database has been updated from the returned questionnaires, I use UniMerge to produce the member directory. In addition to the geographical and alphabetical member listings, the directory includes a Buyer's guide, also extracted from a database, providing information about suppliers of products which the members use. Suppliers pay for having their company listed, and, for an additional fee, can include a display ad. I also use UniMerge to produce the Buyer's guide for the client. About 2 years ago, the client notified me that my services would no longer be needed because they had purchased new and very expensive database software which had what supposedly was a highly sophisticated built-in database publishing capability. I told the client to call me back when they discovered that the new system didn't work. Sure enough, 6 months later, I got the call. Now, you may ague that this story is merely anecdotal, but it really isn't. The reason being that there is a right and a wrong way to do database publishing. UniMerge is the right way, and custom coding is the wrong way. . Many of the companies who switched to UniMerge (By the way, I have no financial or other interest in the product other than the fact that I use it successfully) had previously developed custom code to accomplish their database publishing, where the custom code produced documents (e.g., MIF) that could be opened in their DTP of choice. Inevitably, over time, changes in the database record structure, changes in new versions of the DTP, and changes in the presentation and formatting of the output occurred, and they found that it was constantly necessary to modify the code. The result was intolerable delays while the custom code was being massaged, tested, re-massaged, and tested again. The custom code usually ended up as unmanageable spaghetti. Then they discovered UniMerge. What they found was that UniMerge had in it all the capabilities they would have liked to have had in their custom code if they had the time and the money. so they threw away all their custom code and bought UniMerge. A framescript is nothing more or less than custom code of the type described above. That's the wrong way. The right way is the way UniMerge does it. UniMerge operates like the ribosomes in living cells.Ribosomes manufacture the myriad types of proteins which are required in living organisms. Ribosomes accomplish this by pulling out of the cellular soup the chemical building blocks for making each specific protein, and then fashioning them together in the prescribed way. To obtain the prescription for building a particular type of protein, ribosome reads that segment of the RNA in the cell's nucleus which defines how to build that protein. The ribosome, in other words is an infinitely flexible chemical machine capable of following any instructions it receives from the RNA. The analogy to database publishing with UniMerge is almost exact: UniMerge = Ribosome Protein building blocks = fields in the data record. RNA = the FrameMaker report template, which not only contains the complete formatting instructions, but also contains commands which UniMerge recognizes and executes.These commands are used to evaluate and manipulate the data fields, based on their content. With UniMerge, for example, you can convert data records into tagged SGML or XML, even including attribute values. In the FrameMaker report template, fields are represented by their field names. Field names can be inserted in, above, or below static text which is also to be output with the the data. Markers of any type can be inserted that also include field names, which are replaced at merge time by their field values, thus enabling the production of running header footers, generated indexes, etc. At merge time, UniMerge replaces the field names with their field values in each record. The UniMerge output is a MIF file, which can then be opened in FrameMaker and printed. The UniMerge command language is elegant, powerful, and simple. The generalized command syntax is: COMMAND ar1 arg2...[OPTION1 value1 ....OPTIONn valueN], where: Capitalized words indicate keywords that must be typed verbatim. Arguments and values are variable information that depend on your application. Square brackets enclose parameters which are optional. Curly brackets enclose a list of options separated by vertical bars. These commands (there are 15 commands, but some can have many variations to accomplish many different things), embedded in the FrameMaker report template, allow allow the following actions to be accomplished while UniMerge is merging the data records with the template: 1. Declare a database name, and issue live queries to it. (the alternative is to operate on ASCII database extracts, in which case no query is required). 2. Declare each record field and its data type. UniMerge also allows you to create derived fields, in which the derived field value is calculated, using any valid expression, from data fields and/or variables.. 3. Recognize and process, in any desired manner, repeating groups of subrecords (including multiple nested levels of such subrecords) produced by relational joins. 4. Define, declare, and assign values to report variables, which can be stored semi-persistently for use while UniMerge is processing the data records. Report variables can also be used to produce totals or subtotals 5. Perform IF-THEN-ELSE conditional processing to any number of nested levels, in which one or more data fields and/or report and system variables are evaluated. The outcome of such processing can determine whether a field or an entire data record is rejected, or how it is formatted or modified. A look-ahead/back feature allows such conditional processing to be performed on the next or previous record, so as, for instance to compare a field in the current record with the same field in the previous or next record. 6. Format and/or modify data fields in any of the following ways: Specifying the case (Upper, Lower, or Initial Caps) of strings Adding characters within strings (e.g., to format social security numbers, telephone numbers, etc.) Adding smart quotes to strings Truncate a string, find/extract a substring within a string, or rearrange the content of a string by chopping it into substrings and then reassembling it. Collapsing blank fields Specifying the number of decimal digits in numbers Specifying a leading zero for numbers less than 1 Specifying a delimiter between thousands in numbers Prefixing a number with a dollar sign Prefixing positive or negative numbers with a + or a - sign Enclosing a negative number in parentheses Replacing the number 0 with text Formatting dates and times Translating enumerated field values to text strings. 7. Extract any specified text fragment from an external FrameMaker file, and insert it anywhere in the output. 8. Import by reference any external graphic into the merged file. If data records specify an external graphic file, that file can be inserted 9. Detect errors, anomalies, or other useful information about the data records, and log a user-defined message to the screen or a log file which can identify the particular data record to which that message pertains. 10. Merge several FrameMaker report templates into a single application. 11. Issue, in the midst of record processing, an operating system command to be executed. In addition, Unimerge allows you to use Control and Job files, as follows: Control Files Sometimes you may want to use a UniMerge command without putting the command in the report template itself. For example, you may want to use the same report template in different circumstances without having to modify it. Control files (ASCII text files) are used for this purpose. UniMerge commands that are not position-dependent can be put in a control file. When you execute UniMerge, you specify which control file to use. Job Files In some batch processing applications, you may want to assemble and collate a "packet" that contains more than one report. You may also want to send duplicate copies of a report to different locations. These tasks are accomplished by a job file (an ASCII text file), which provides a way to merge several reports in a single application. On systems which allow the use of fmbatch and fmprint, UniMerge also provides a printaction command which can be embedded in job files so that each file that is output by UniMerge during a merge operation can be printed without human interaction. UniMerge is very fast because it runs directly under DOS or Unix, and is not burdened with a GUI. I've achieved merging speeds of up to 6000 records per minute on a fairly slow machine. With UniMerge, I've produced single files having as many as 1000 pages in a couple of minutes without a single hiccup. There are many more features and subtleties of UniMerge which I haven't the space to mention. I have a PDF paper more fully describing database publishing with UniMerge and FrameMaker on Shlomo's webseite: www.microtype.com/ Click the Resources link, and look for "Dan Emory's Articles." You'll find it there. ================================================ Now, Rick, I suppose it might somehow be remotely possible, using FrameScript plus one whole heck of a lot of surrounding C code, to produce a Unimerge-like generic application having all of its features, speed, and reliability described above. Or, you could even try to use FrameScript to produce a customized solution for a relatively simple database publishing application, and then try to tweak it a bit (more likely alot) for each succeeding application. But why bother with either of those approaches? It's all already done in UniMerge, which only costs about $600, and can be easily customized (by means of the FrameMaker report template, control files, and job files) for any application, regardless of whether it's simple or complex. ==================== | Nullius in Verba | ==================== Dan Emory, Dan Emory & Associates FrameMaker/FrameMaker+SGML Document Design & Database Publishing Voice/Fax: 949-722-8971 E-Mail: danemory@primenet.com 177 Riverside Ave., STE F, #1151, Newport Beach, CA 92663 ** To unsubscribe, send a message to majordomo@omsys.com ** ** with "unsubscribe framers" (no quotes) in the body. **