DB3ISO

1. Background and documentation

DB3ISO was written in 1987 by a certain Alejandro, probably from Cuba, in the 8086/88 assembler language. It is an executable file (in fact a ".com" file), that converts dBase III and dBase III+ files into the ISO 2709 structure.

The program is documented in an English and in a Spanish manual, but the English is of a rather poor quality.

Related to this program is ISODB3, by the same author. ISODB3 converts ISO 2709 files into the dBase structure.

2. General evaluation

Plus Minus

3. Preliminary work

Before starting the conversion it is necessary that you analyse the structure of the input file. This can be done using dBase commands or through the use of a dBase "viewer" (see paragraph 6.6.).

This will produce an output like this:

Structure for database: C:books.dbf
Number of data records:       0
Date of last update   : 11/14/95
Field  Field Name  Type       Width    Dec
    1  AUTHOR1     Character     30
    2  AUTHOR2     Character     30
    3  AUTHOR3     Character     30
    4  TITLE       Character     50
    5  PLACE       Character     30
    6  PUBLISHER   Character     30
    7  PAGES       Character     10
    8  ILL         Logical        1
    9  ISBN        Character     14
   10  KEYWORDS    Character     50
** Total **                     275
(This is not the structure of an existing bibliographic dBase file, which might be up to 30 or 50 fields long.)

It is recommended to browse the input file in order to see if there are fields

Record No.      1
AUTHOR1     Willis, Joe D.
AUTHOR2     Freye Campbell, Linda
AUTHOR3
TITLE       Exercise psychology
PLACE       Champaign
PUBLISHER   Human Kinetics
PAGES       xi, 258
ILL         Y
ISBN        0-87322-366-7
KEYWORDS    psychology; fitness; physical education
In this example the fields AUTHOR1, AUTHOR2 and AUTHOR3 should form one CDS/ISIS field in the end, and the field KEYWORDS must be split up into 3 occurrences of one CDS/ISIS field.

This can be done by the means of a FST, which has to be made with an editor. The general structure of this kind of FST is:

  target field numbering      FST technique   dBase numbering

                1      0          v1
In the case of the example used here, the FST may look like this:
  1 0 v1
  1 0 v2
  1 0 v3
  2 0 v4
  3 0 v5
  4 0 v6
  5 0 v7
  6 0 v8
  7 0 v9
  8 0 v10 |;|

The program will read this like: Note that the content of different fields can be put into one target field by using the same target numbering. Note also that the occurrence delimiter of the source file (see last line) must be put between | (= ASCII 124).

4. Executing the program

DB3ISO can be started with the command at the DOS prompt
 db3iso
You will now see this text:
dBASE III to ISO exporter utility.
ver 2.70, written by Alejandro, 3/1987.

Select: [E]xport, e[X]it >
The program will ask some questions, which may be answered by typing the appropriate information. In some cases you can answer by a simple <return> to indicate that you accept the default options the programs suggests.

The questions to be answered are:

  1. what is the name of the source dBase file?
  2. what is the name of the target ISO 2709 file?
  3. what is the name of the FST with the conversion specifications?
  4. which field separator do you want to use?
  5. which record separator do you want to use?
  6. at which dBase record do you want to start?
  7. at which dBase record do you want to end?
  8. from which record on do you want to renumber?
It may be best to accept the defaults for the 4th and the 5th question; otherwise you will have to alter the default values in the CDS/ISIS menu xYISO when you import the ISO 2709 file into your CDS/ISIS database. Question 6 and 7 allow you to make a selection to try out the conversion. It is always better to experiment with 10 or 100 records rather than with a database of 10,000 records... If you do not enter a record number to start or end with, the program will automatically fill in "1" for "Starting record" and the number of the last record for "Last record".

You can only renumber the records when your FST contains a line like this:

 1 0 MFN
This means that the dBase record number will be stored into the ISO 2709 field no. 1. Normally this numbering will start at 1, but DB3ISO allows you to change that. Probably this was meant for databases in which the CDS/ISIS records were updated from the original dBase file.

This is an example of a filled out screen:

c:>db3iso
dBASE III to ISO exporter utility.
ver 2.70, written by Alejandro, 3/1987.

Select: [E]xport, e[X]it >E

dBASE III file name [.DBF]:books
books.DBF

Output ISO file [ISO.MST]:books.iso
books.iso

Input Field Selection Table file [.FST]:

Field separator [#]:#
Record separator [#]:#
Starting record [ 1 ]:
Last record [ 100 ]:
Renumber from:
100 record(s) exported.

Select: [E]xport, e[X]it >X
    End of running.
(The input made by the user is printed bold printface; if you do not fill anything in, the program will take it's default values. In practice the screen does not look as nice as this. The program does not clear the screen; it start at the actual position of the cursor.)

When the dBase file contains a memo field, the program will automatically locate the corresponding text file (".DBT") in which the contents of the memo fields are stored:

dBASE III file name [.DBF]:books
books.DBF
books.DBT

5. Pitfalls

Three types of dBase fields cause problems: numeric and logical fields.

In a dBase file numeric fields normally are preceded with blanks. These blanks will also be found after the conversion in the output. You can avoid this by editing the structure of the dBase source file with dBase (or another dBase-like software). You will need two steps to do so:

  1. alter the nature of the field from "numeric" into "character":
  2. delete the preceding blanks with this command
        replace all [name of field] with ltrim([name of field])
    
Logical dBase fields can be filled in with "Y" or "T" for "true", or with "N", "F" or nothing if not true. In the later case dBase will leave a question mark. A common example of a logical field in a bibliographic database is a field where one can register if a book contains illustrations:
    ILL        Y
When not filled in, this question mark will be transformed by DB3ISO into a space. You can solve this problem in two ways:
  1. Before the conversion: make sure that the dBase field always contains "N" when "not true" is meant. This can be done with the command
      replace all ill with .N. for .not. ill
  2. After the conversion: import the ISO 2709 with a FST that contains a statement like this:
      if v8='Y' or v8='T' then '^bill' fi
    Both 'Y' and 'N' must be taken into account, because:
Date fields on the other hand do not cause problems. They are converted into the ISO form: YYMMDD, e.g. 19960130 for 30 January 1996.

6. Recommendations

DB3ISO allows you to make a few modifications. The purpose of this technique is to convert the source file into a format as close a possible to the structure of the target CDS/ISIS database. A FST like this
  200 0 v4
  300 0 v1
  300 0 v2
  300 0 v3
etc. is meant to introduce the field tags of the Common Communication Format (CCF), in which 200 stands for the title field and 300 for the author field. After this, you can import the ISO 2709 file into your database without further modifications.

But it is better not to do so. Use the numbering of the source field as long as possible, which probably results in not using any conversion table for DB3ISO. Experience shows that in most cases you still need an FST when you import the file. You can use this FST to add some information that was not in the dBase file, e.g. the date of the conversion. Then it might become tricky to make a distinction between the original numbering, the ISO 2709 numbering and the CDS/ISIS tags.

A FST for the example we used here may look like this:

   22 0 '^a19960210'
  100 0 "^a"v9
  200 0 "^a"v1/,"^a"v2/,"^a"v3/
  300 0 "^a"4
  400 0 "^a"v5,"^b"v6
  460 0 "^av7" p", if v8='Y'or v8='T' then '^bill' fi
  620 0 "v10
(We assume the CDS/ISIS database uses the CCF tags.) After the conversion the ";" of the keyword can be transformed into the occurence delimiter "%" with a CDS/ISIS modification program, e.g. GMOD. The "," in the author field may be changed to "^b" by the same kind of program.


© Piet de Keyser, 1998

Piet de Keyser's Manual Collection