XBase

From EDM2
Jump to: navigation, search

A fourth generation programming language that started life as the scripting language on the dBase II database software package, and its associated dbf database file format. The language is not very well structured but extremely compact and well suited to its intended use in relational databases making it one of the most rapid development languages out there, even modern RAD systems suffer in comparison in that specific domain. But although usable as a generic programming language, as soon as you venture out from the realm of database manipulation you really start to lose the advantages it has to offer.

History

During the 1980's and into the mid-90's xBase was the primary business language used on microcomputers archiving a dominance similar to what Cobol had on larger systems, with the majority of financial and business admin software for PC's being written in an xBase variant, and the wast bulk of custom business solutions. However even by the late 80's critical financial applications like accounting packages were moving to Btree database engines due to xBase's almost complete lack of database and transaction integrity tools and functions.

Continued popularity as a small business tool

xBase quickly became a standard for PC financial and business applications in Europe, more so than in its home country. This was in no small part because the dBase II package and other early xBase compatible products all supported different codepages in both the data structures and code, with the notable exception of FoxPro. Most of the competing North American and British vendors of programmable and/or relational PC database products and Business Basic only worked correctly with the Dutch subset of the Roman alphabet that DOS defaulted to and thus were only really usable with English, Afrikaans and Dutch, and by the time they had rectified this in the latter half of the 80's, xBase had become seriously entrenched in the market.

One of the factors in its continuing popularity, apart from the obvious existence of legacy code, is that the open source SQL compatible database systems that should by rights have replaced xBase in small custom programming jobs have all shown problems with the manipulation of international text even though they are meant to be compatible, but for instance the most popular of such product MySQL, even after two decades of development still corrupts Unicode encoded database records from time to time on top of Unicode text manipulation issues, although modern versions of it supply tools to fix that after a fashion.

While this is tolerable for web applications and web delivery systems built on those products like Content Management Systems solve this by having tools in the sysops user interface that fix such corruption or bypass the problem altogether by simply not storing Unicode text, it is an intolerable problem for small business program development. On one hand having corrupted text in your database can be bad for your image and on the other it can lead to technical problems. Your customers will find invoices where their name has been mangled either by not using the local character set or via a database corruption, to be somewhat unprofessional. On the technical side a text in a corrupted table will not look up correctly from an uncorrupted table, and in the real world if the data is a part of a postal address it might not deliver correctly. Even if the fixes for these problems are relatively simple they need a level of technical sophistication that even though low, might not exist in a small business. On top of that it is in general frowned upon to deliver custom small business solutions that will require maintenance no matter how small it is, since the IT budget for businesses with limited turnover like mom'n'pops restaurants for instance are for all intents and purposes non-existent and these sort of operations in general rely on "uncle technology" for IT support.

This alongside the high price, recurring license fees and in general the maintenance costs of commercial SQL solutions alongside the gradual move of alternate PC database solutions such as Filemaker et al, to a deployment license model has given xBase development a second life in the market, small business systems such as customised accounting software have increasingly chosen to stick with or revert to xBase or to move to embedded database system that are designed to not require routine maintenance such as Microsoft Embedded SQL Server that ships built into modern versions of MS Windows.

OS/2 implementations

  • Base32 - Commercial - Discontinued
  • dBase IV - Commercial - Discontinued
  • Flagship - Commercial Unix Clipper compatible, announced for OS/2 but probably never shipped
  • Harbour - Current - Open source Clipper compatible
  • OnCMD - Commercial - Discontinued
  • X2C - Open Source
  • XBase++ - Discontinued - Commercial Clipper compatible system.
  • XHarbour - Discontinued - Open source Clipper compatible, a fork of Harbour.

DBF file viewers and editors

Libraries and database engines

  • Bullet - Discontinued
  • C/Database Toolchest - Library for C and C++ programmers - Commercial - Current
  • CdBFile - Open Source - Discontinued
  • CodeBase - Discontinued - Clipper/dBase compatible database engine/library that could be called from any programming language.
  • dbfLIB/dbfLIB++ - Library for C and C++ programmers - Discontinued
  • dbfread - Python dbf read only lib. - Open source - Current
  • dbfREXX - Library/function package for REXX programmers - Discontinued
  • e_Db - Library for C & C++, also has Java and VB API's - Commercial - Discontinued
  • Lattice dBC III - Discontinued - C libraries
  • libdbf - C library - Open source - Discontinued
  • OOxBase - Database engine with SOM interface - No longer available
  • PMI ModBase - dBase III/xBase interface and file compatibility, plus app generator - Modula-2 - Commercial - Discontinued
  • RexxBase - REXX extension that allow you to work with xBase files or databases - Freeware - Discontinued

OS/2 software that offers partial dBase compatibility

  • DBExpert - Uses xBase files but is otherwise incompatible.
  • IBM Works - Discontinued but shipped as an optional install with OS/2 Version 3 and later versions. - Formerly known as Footprint Works.
Note that both the Database and the PIM portion of IBM Works use xBase files as their underlying file format.

OS/2 text & programmers editors with xBase support

  • Boxer - Clipper, FoxPro and dBase specific and generic xBase syntax highlighting support provided by default. - Commercial - Discontinued
  • BRIEF - Clipper and dBase specific and generic xBase syntax highlighting support provided by default in latter versions of the package - Commercial - Discontinued
  • Lugaru Epsilon - xBase syntax highlighting and auto-indent plus PRG file support available as a separate download. - Commercial

DOS implementations

  • Clipper - Discontinued.
  • dBase - Current - One of the last supported DOS database product - A re-release of the old dBase V product.
  • dBFast - Commercial - Discontinued
  • dBMAN - Discontinued
  • dBXL - Discontinued
  • Force - Discontinued
  • FoxBASE+ - Discontinued
  • FoxPro - Discontinued
  • Friday! - Simplified, non-programmable version of dBase
  • nanoBase - Discontinued - Open Source
  • QuickSilver - Discontinued

Flat file DOS databases that offer partial dBase compatibility

These otherwise flat file DOS databases offered some dBase compatibility, some only file level compatibility with opening and working with .dbf, .dbt and sometimes index files (.ndx and/or .mdx files), others offered minimal screen painting and xbase language compatibility that allowed you to get partial dBase functionality out of the package, usually with a severely limited relational/multi-file functions. In addition most if not all DOS spreadsheets and most OS/2 ones can work with dbf file but offer .dbt and index file compatibility only to a lesser degree or not at all. The main utility of these was that you could edit database tables with much less fuss than with a full development system, and correct table errors in custom applications coded in xBase or dBase that did not allow you to do so and/or were you only have access to the executables, while typically offering more functionality than a mere DBF file editor.

  • dBM - Freeware - Discontinued - original name "daily business manager" and not "data base manager" as you might think.
  • Little - Discontinued - Was shareware is now freeware
  • Lotus Works - Discontinued - Formerly sold as AlphaWorks
  • Microsoft Works - Discontinued
  • PC-File - Discontinued - Partial compatibility with versions 5 and up only - Version 5 is now freeware, later versions are not.
  • Spinnaker Better Working Eight-in-One - Discontinued

Relational DOS databases that offer partial dBase compatibility

These relational DOS database systems offered some dBase compatibility, some only file level compatibility with opening and working with .dbf, .dbt and sometimes index and memo field files (.ndx and/or .mdx files). In most cases this was offered as a way to get you to import your work into a their database system or to offer the capability of co-operation between a new system and an older one, but a few products like Alpha Four were sold as a easier way to work with xBase databases.

  • Alpha Four - Relational but not programmable, used dbf files natively and has a scripting language and a optional runtime.

DOS DBF file viewers and editors

  • CDBFLite - Commercial - Current
  • Lattice DFE/DFU - Commercial - Discontinued
  • Power Browse - Commercial - Discontinued

Generic xBase development utilities for DOS

  • DOC - Code documentation generator - Discontinued
  • SNAP! - Code documentation generator - Discontinued - Originally in the public domain, later versions shareware.

DBF file repairers

  • Titanic - Shareware

DOS compatible programmers libraries and database engines that work with xBase files or systems

  • Bullet - Discontinued
  • C/Database Toolchest - Library for C and C++ programmers - Commercial - Current.
  • CdBFile - Open Source - Discontinued
  • CodeBase - Discontinued - Clipper/dBase compatible database engine/library that could be called from any programming language.
  • dbfLIB/dbfLIB++ - Library for C and C++ programmers - Discontinued
  • Dblisp - dBase II/II database access for GCL - Commercial - Discontinued
  • e_Db - Library for C & C++, also has Java and VB API's - Commercial - Discontinued.
  • How to read DBF files with QBasic
  • Lattice dBC III - Discontinued - C libraries
  • libdbf - C library - Open source - Discontinued
  • PMI ModBase - dBase III/xBase interface and file compatibility, plus app generator - Modula-2 - Commercial - Discontinued
DOS text editors
  • Boxer - Clipper, FoxPro and dBase specific and generic xBase syntax highlighting support provided by default.

Win-OS/2 Implementations

xBase libraries and utilities

  • Clip-4-Win - A Clipper library that allows you to create 16 bit WinOS/2 or Windows 3.x applications. - Commercial - Current

Flat file databases with partial dBase compatibility

These otherwise flat file databases offered some dBase compatibility, some only file level compatibility with opening and working with .dbf, .dbt and sometimes index files (.ndx and/or .mdx files), others offered minimal screen painting and xbase language compatibility that allowed you to get partial dBase functionality out of the package, usually with a severely limited relational/multi-file functions.

  • Microsoft Works for Windows - Discontinued
  • PC-File - Discontinued - Commercial

Libraries and database engines that work with xBase files or systems

  • C/Database Toolchest - Library for C and C++ programmers - Commercial - Current
  • CdBFile - Open Source - Discontinued
  • CodeBase - Discontinued - Clipper/dBase compatible database engine/library that could be called from any programming language.
  • dbfLIB/dbfLIB++ - Library for C and C++ programmers - Discontinued
  • GFA-BASIC dBASE Interface - Allows GFA Basic for Windows 3.x and WinOS/2 to read and write xBase data files.
  • Lattice dBC III - Discontinued - C libraries
  • libdbf - C library - Open source - Discontinued
  • PMI ModBase - dBase III/xBase interface and file compatibility, plus app generator - Modula-2 - Commercial - Discontinued

Java Implementations

Note that the xBase name is irritatingly enough also used by the xText project for their ELL lib in the Java world.

DBF/DBT File compatibility libraries and drivers

Links

Standards

There was some work on creating an xBase standard by IEEE in 1986 and 7 but that was blocked by Ashton-Tate who threatened a lawsuit. After all claims by Ashton-Tate had been refused in an infamous lawsuit due to the Public Domain status of the Falcon/Vulcan database in 1990, an ANSI (US standards authority) committee X3J19 was set up in 1991 to standardise the language. However that failed due to differences between the American and European members on if it should concentrate on just a Clipper/dBase III compatible language or an extended one with subgroups focused on specific domain extensions to the language, resulting in the Europeans leaving the committee en masse in 1995. As all commercial and open source xBase implementations in the latter half of the 90's originated in Europe with the sole exception of the original dBase who by then was seriously diminished force, the ANSI/X3J19 specification died a natural death.

  • TEXI The European xBase Institute

DBF file formats

Although the main .dbf file format is stable and has remained mostly unchanged for decades, there are a number of small variants of the format and the may index files and memo files are structured has varied more that the dbf file format itself. The links below are useful but the best description of the file format is to be found on Erik Bachmann's page in the links section above.

Usage examples

Some counties within the state of Arizona in the USA allow accountants to bulk file tax returns for individuals and companies using .dbf files, more info here.