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.


