From: CRDGW2::CRDGW2::MRGATE::"SMTP::CRVAX.SRI.COM::RELAY-INFO-VAX" 27-JUL-1989 18:38 To: MRGATE::"ARISIA::EVERHART" Subj: Review of DECUS Library Material - DBAG Message-Id: <8907272225.AA00626@crdgw1.ge.com> Received: From KL.SRI.COM by CRVAX.SRI.COM with TCP; Thu, 27 JUL 89 14:43:49 PDT Received: from AAMRL.AF.MIL by KL.SRI.COM with TCP; Thu, 27 Jul 89 14:20:05 PDT Received: from FALCON by AAMRL.AF.MIL; Thu, 27 Jul 89 17:14 EDT Date: Thu, 27 Jul 89 17:17 EST From: Ted Nieland <@AAMRL.AF.MIL:TNIELAND@FALCON> Subject: Review of DECUS Library Material - DBAG To: info-vax@kl.sri.COM X-Vms-To: IN%"info-vax@kl.sri.com" The DECUS U.S. Chapter Library Committee has begun a process by which items in the DECUS Library are reviewed by DECUS members with the resulting written review published in the DECUS U.S. Chapter Newsletters publication. The items reviewed are available from the DECUS Library for a minimal charge. If you wish to order the item in this review, contact the DECUS Library and request the item by the reference number in the review title. The DECUS Library can be contacted within the United States at: The DECUS Library 219 Boston Post Road BP02 Marlboro, MA 01752-1850 Phone: 508 480-3418 People who would like to volunteer to help with the DECUS Library review project should contact the Review Coordinator, Ted Nieland. Mr. Nieland can be contacted on DCS at NIELAND. DECUS Library Reviews DBAG - V00335 Jon Pinkley Westinghouse Encapsulated Review Rated on a scale of 1 to 5 with 5 being excellent Ease of Installation: 4 Easy, but no installation guide is provided. Documentation: 2 Manual is in Portuguese, quick reference is in English. Editor's Note: English translation of manual now available Intended Audience: Database users and programmers Ease of use: 3 User interface still has some rough edges. Usefulness: 3 Has a lot of potential. Sources: YES Full source is included (as far as I can tell). FORTRAN is used for everything but a small terminal input/output routine which is written in BLISS. (This routine probably should be provided in the MACRO form produced with the BLISS compiler in addition to the BLISS source, so the BLISS compiler would not be required to build from source. The VMS Kermit is distributed in this fashion.) Objects Supplied: YES They are in an object library. INTRODUCTION As the DECUS Library Abstract (See Figure 1) states, DBAG is a simple database system that is simular in some ways the DBASE III product. It is NOT a Dbase III clone, so don't expect to move all your Dbase applications from a PC without major changes. Based on comments in the FORTRAN code, the package was written by Luis Arriaga da Cunha and Antonio Mota in 1984. That date is probably for version 1.0 of DBAG. I received and reviewed version 1.5. This product can be used by anyone familiar with simple database products, for instance Dbase or Datatrieve. I would not recommend it for a novice user, since there is currently not enough tutorial documentation in English. I don't know how the product performs with a large number of records. I used a very small set for the tests I did. It does support multiple indexes. (For the interested, it uses RMS relative files for the database. It keeps its own indexes instead of using RMS indexed files.) ------------------------------------------------------------------------------ V00335 DBAG - Data Base System Version: 1.5, August 1988 Submitted by: Luis Arriaga da Cunha, Laboratorio Nacional De Engenharia Civil, 1799 Lisboa Codex, Portugal Operating System: VAX/VMS V4.6 Source Language: VAX FORTRAN Memory Required: 1MB Keywords: Data Base Management Abstract: DBAG is a relational database system, implemented for VAX/VMS, similar in functionality and interactive interface, to the commercial product DBASE III. Some commands are actually the same, so users familiar with that popular package should "feel at home" with little effort. The editor of records (and commands) departs from a WordStar-like approach and emulates VAX's EDT thus again saving extra learning effort. The system also provides a complete library of subroutines, FORTRAN 77 callable, for those who need/want to write their own program to handle the database. Changes and Improvements: General bug fixing. Media (Service Charge Code): 2400' Magnetic Tape (PA) Format: VMS/BACKUP Figure 1. DECUS Library Abstract for DBAG ------------------------------------------------------------------------------ REVIEWER'S BACKGROUND AND INTEREST IN PACKAGE Most of my time is spent in technical support and system management. I use Datatrieve and DBASE III+ for simple things, and do not consider myself to be a Database expert. My interest is to provide an easy to use database for the VAX user community. TEST CONFIGURATION The review was done using VMS V4.7 on a VAX 8600. The terminals used were a VT240 in /Device=VT200_Series mode and a VT220 in VT102 mode. Ease of Installation The tape came without any printed documentation. My first step was to produce a backup listing of the tape contents. The directory tree is [VAX335.MOTA.DBAG...] with everything above .DBAG empty, except for a single directory. In the DBAG directory are two readme files. 0README.1ST file has the only installation information that I found in English. It incorrectly specifies the directory tree as [VAX335.DBAG...] instead of [VAX335.MOTA.DBAG...]. It suggests setting the terminal characteristics to /VT100. However, it seems to work equally well with /device=VT200_series terminals. Installation consists of restoring the directory tree from tape, defining a logical name "BAG" to point to the DBAG directory, and creating a few symbols to execute the appropriate programs. The 0README.1ST file also recommends the following UAF parameters: FILLM 100 (Mine was set to 50. I used only one dbf file) SHRFILLM 100 (Mine was set to zero, no limit) ENQLM 600 (Mine was set to 1000) If you don't plan to modify the source code, you should be able to delete everything but what is in [VAX335.MOTA.DBAG.TRY]. You may want to do this if you are tight on disk space. There are over 7000 blocks in the [VAX335.MOTA.DBAG.V1...] directories. If you can read Portuguese, you should take a look at the [.DBAG.V1.MANUAL] directory. It has runoff source and command files to produce the Portuguese version of the manual. DOCUMENTATION There is a significant amount of documentation. Unfortunately, it is written in Portuguese. (Editors note: An English translation of the documentation has been submitted to the library and is now included as part of the submission.) The only English documentation included, is the output from the on-line help. This describes the syntax of commands and serves as a good quick reference guide. It doesn't give enough information to be considered a tutorial. Unless someone has experience with a simular product, and knows the type of operations that are normally done, they will probably have trouble using DBAG with the current documentation. I have heard that an English version of the manual is in the works. If this is true, it will greatly increase the usefulness of the package. In general, DBASE III documentation is not useful for this package. INTENDED AUDIENCE This package is intended for applications that would be done with a simple database package like Dbase. It is possible to write DBAG applications using command files, so the end user would not have to know how to use the DBAG commands. People who want to create their own database applications should have experience with another simular package as background. One big advantage of this package is that complete source code and an object library are included. This makes it possible to write your application in your favorite language and call the DBAG routines to access the database. Some example programs that call the DBAG routines are included. EASE of use If you have used Dbase, you won't have too much trouble getting a database created. There is on-line help available via the HELP command or by typing a "?" at the DBAG> prompt. There are some nice features in DBAG that do not exist in DBASE. Database fields can be marked as "mandatory" which require the user to enter a value. For numeric fields, range checking is provided. Each field can also have a "default value". Linking databases can be done in several ways. There is even a field type that specifies the database name and field of another database where the actual data resides. Some of the rough edges I noticed in the user interface are the following: - It is difficult to change the value of a numeric field once it has a value. You must position the cursor to the right of the last digit and delete the number, a character at a time, before typing a new value. I did not find a way to delete the contents of a field as can be done in Dbase with a single key stroke (or control character). For this reason, I do not recommend using a default value, unless it is going the be the value entered almost all the time. - The numeric keypad was not active when entering data, so you must use the upper numeric keys to enter all numbers. There may be a way to configure this; I did not find it. - Unlike Dbase III+, once you have entered any data into the database, you are not allowed to change anything in the structure that would change the record size. To change the size of a field, or to insert a new field, you must copy the structure to a new database, and then use the MODIFY STRUCTURE command to change the newly created database. After the new database is created, you can copy the data from the old database to the new one. (This is simular to the way that Datatrieve works.) - There are still some relics from a more limited version of the product. When you create a database with more than 32 fields, it incorrectly warns you, as you enter the 32nd field, that this will be the last field you can enter. The DISPLAY STATUS command reports that you can create up to 100 fields. Using the MODIFY STRUCTURE command, I was able to add more fields. 53 total fields is the highest I tested. - The input/output routines in the package use single character $QIO calls in many places. This disables the use of the VMS terminal driver editing routines. DBAG also turns character echo off. If you abort with ^C or ^Y when it is in this mode, you will have to type in SET TERMINAL/ECHO blindly. - The screen management sometimes gets out of sync with the display. While I was using MODIFY STRUCTURE, the scrolling region got set incorrectly, and left a dangling line at the bottom. I was not able to find the exact conditions that cause this to occur, it did not happen consistently. There are several things that don't "feel" like a VMS utility. - A ^Z does not always mean EXIT. In fact when you are at the DBAG> prompt, you must type EXIT or QUIT instead of ^Z. - When in screen mode, ^W does not repaint the screen. One ease of use feature that is missing from DBAG is an overstrike editing mode. USEFULNESS This depends on what you have available and what you want to do. There are some demos provided that show some DBAG's capabilities. The demos are in Portuguese, so I am not sure what the data represents. It would be quite easy to use this to set up a mailing list, an on-line phone book or other simple database application. If you don't have Datatrieve, then this will be much more attractive than if you do. If it were a true Dbase "clone", it would be more useful to people who have lots of PC's and want to put an application on the VAX that would be used by persons familiar with Dbase. There is not a report writer built into the DBAG program. It does a reasonable job of printing out with headings somewhat like the Datatrieve "print" command does. Also you can have the output go into a disk file. SOURCES Complete source code is provided. As stated in the summary, the source code is FORTRAN, and one terminal input/output module is written in BLISS. Unfortunately, the ASSEMBLY output from the bliss compiler is not provided as with the VMS Kermit distribution. (NOTE to a future submitter: This can be generated with the following command: ) $ BLISS TTIO /LIST=TTIO.MAR - /NOOBJECT /SOURCE=NOHEADER - /MACHINE_CODE=(ASSEMBLER,NOBINARY,UNIQUE) Idid not find any documentation on what is needed to rebuild DBAG from source, but I found [VAX335.MOTA.DBAG.V1.FOR]DCDBAG.COM after a quick search through the directories. This command file rebuilds just about everything, once you get things set up correctly. If you don't have the BLISS compiler, the command file will not work. Here is the procedure I used to rebuild from sources. $! first define disk2 so the command $! files will work. The command files $! expect to find things in directory $! tree disk2:[mota.dbag...]. To find $! out what you need to set the DISK2 $! logical name to, do the following: $! Set default to the MOTA directory, $! if you do a directory you should see $! the file DBAG.DIR;1. Enter the following $! commands: $ open foo dbag.dir;1 $! $ show device/files $! $! This should give you a list of all $! the files you have open and the $! physical device name. For example you may $! see something like the following: $! $! Files accessed on device DUA12: on 15-JUN-1989 $! $! Process name PID File name $! Yourprocess 2060013D [VAX335.MOTA]DBAG.DIR;1 $! $! $ close foo ! don't leave the directory open $! $! The logical name must have everything to $! the left of the MOTA defined in the $! equivalence string. For the above example $! the following would work: $ DEFINE/JOB/TRANSLATION=(CONCEALED) - DISK2 DUA12:[VAX335.] $! If the display looks like the following, $! you are already at the right level, so you $! just need to define DISK2 as the device. $! $! Files accessed on device DUA12: on 15-JUN-1989 $! $! Process name PID File name $! Yourprocess 2060013D [MOTA]DBAG.DIR;1 $! $! For this situation the following would work: $ DEFINE/JOB/TRANSLATION=(CONCEALED) DISK2 DUA12: $! NOTE: use only ONE of the above definitions. $ SET DEFAULT DISK2:[MOTA.DBAG.V1.FOR] $! get rid of any local "commands" $ DELETE/SYMBOL/ALL/GLOBAL $ DELETE/SYMBOL/ALL/LOCAL $ @DCDBAG Go get several cups of coffee... this will take a while. (It took about 17 minutes of CPU time and about 30 minutes of elapsed time on our 8600 and a relatively busy disk.) $ logox ! log out, the command files $! leave some non-standard $! abbreviations (for instance $! d=="delete/log") In fact $! logout gets redefined, $! therefore the logox to log out. For some reason, the supplied executables were compiled and linked with debug support. To support debugging, all the FORTRAN is also compiled without optimization. For a savings of disk space and better performance, I recommend editing the DCDBAG.COM file to remove all occurrences of "/deb". Rebuild, and the size of DBAG.EXE will decrease dramatically. (Mine went from 5335 blocks down to 1665 blocks.) OBJECT CODE If you don't have the needed compilers, an object library is included. If you have the FORTRAN compiler but not the BLISS compiler, you should be able to modify the DCDBAG.COM file so only the FORTRAN source is recompiled. (You will have to extract the bliss modules from the original object library and reinsert them into the new object library, since the procedure deletes DBAG.OLB and recreates it.) SOME FINAL THOUGHTS Ihope my review does not sound too harsh; that is not my intent. This submission represents a major effort by the submitters. It should not be surprising that DBAG is not as polished as a commercial product with hundreds of man years of effort invested. If you don't mind experimenting with the product, you will probably find it worth your while. Arework of some of the screen handling, especially the ability to allow overstrike mode when editing a field, would help with the ease of use. Better handling of numeric data entry when a default value is present would also be beneficial. When the English version of the manual is available, it will make DBAG more useful, and easier to support.