Jump to content

XBase: Difference between revisions

From EDM2
Ak120 (talk | contribs)
mNo edit summary
 
(28 intermediate revisions by the same user not shown)
Line 1: Line 1:
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 loose the advantages it has to offer.
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.


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.
==History==
During the 1980s and into the mid-90s 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 PCs being written in an xBase variant, and the vast bulk of custom business solutions. However even by the late 80s 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====
===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 due to the fact that 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 [[Basic|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.
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 [[Basic|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 80s, xBase had become seriously entrenched in the market.


The xBase standard is still much more popular in Europe and South America than in other places in the world and most of the currently compatible development products originate from there. 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.  
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 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.
While this is tolerable for web applications and web delivery systems built on those products like Content Management Systems to 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 this 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 [http://www.filemaker.com 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]].
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 [http://www.filemaker.com 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]].


==A list of OS/2 implementations of xBase==
==OS/2 implementations==
* [[Base32]] - Commercial - Discontinued
*Base32
* [[dBase|dBase IV]] - Commercial - Discontinued.
*[[dBASE IV]]
* Flagship - Commercial Unix Clipper compatible, announced for OS/2 but probably never shipped
*Flagship - Unix Clipper compatible, announced for OS/2 but probably never shipped
* [[Harbour]] - Current - Open source Clipper compatible
*[[Harbour]] - Current - Open source Clipper compatible
* [[OnCMD]] - Commercial - Discontinued
*[[OnCMD]]
* [[X2C]] - Open Source
*[[X2C]] - Open Source
* [[XBase++]] - Discontinued - Commercial Clipper compatible system.
*[[XBase++]] Clipper compatible system.
* [[XHarbour]] - Discontinued - Open source Clipper compatible, a fork of Harbour.
*[[XHarbour]] - Open source Clipper compatible, a fork of Harbour.


====DBF file viewers and editors====
;DBF file viewers and editors
* [[CDBFLite]] - Commercial - Current
* [[CDBFLite]]


====Programmers libraries and database engines that work with xBase files or systems====
===Libraries and database engines===
<div style="column-count:2;-moz-column-count:2;-webkit-column-count:2">
<div style="column-count:2;-moz-column-count:2;-webkit-column-count:2">
* [[Bullet]] - Discontinued
* [[Bullet]]
* [[C/Database Toolchest]] - Library for [[C]] and [[C++]] programmers - Commercial - Current.
* [[C/Database Toolchest]] - Library for [[C]] and [[C++]] programmers
* [[CdBFile]] - Open Source - Discontinued.
* [[CdBFile]] - Open Source
* [[CodeBase]] - Discontinued - Clipper/dBase compatible database engine/library that could be called from any programming language.
* [[CodeBase]] - Clipper/dBase compatible database engine/library that could be called from any programming language.
* [[dbfLIB]]/dbfLIB++ - Library for [[C]] and [[C++]] programmers - Discontinued.
* [[dbfLIB]]/dbfLIB++ - Library for [[C]] and [[C++]] programmers
* [[dbfread]] - [[Python]] dbf read only lib. - Open source - Current.
* [[dbfread]] - [[Python]] dbf read only lib. - Open source
* [[dbfREXX]] - Library/function package for [[REXX]] programmers - Discontinued.
* [[dbfREXX]] - Library/function package for [[REXX]] programmers
* [[e_Db]] - Library for [[C]] & [[C++]], also has [[Java]] and VB API's - Commercial - Discontinued.
* [[e_Db]] - Library for [[C]] & [[C++]], also has [[Java]] and VB APIs
* [[Lattice dBC III]] - Discontinued - C libraries.
* [[Lattice dBC III]] - C libraries
* [[libdbf]] - C library - Open source - Discontinued.
* [[libdbf]] - C library - Open source
* [[OOxBase]] - Database engine with [[SOM]] interface - No longer available.
* [[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
* [[PMI ModBase]] - dBase III/xBase interface and file compatibility, plus app generator - [[Modula-2]]
* [[RexxBase]] - [[REXX]] extension that allow you to work with [[xBase]] files or databases - Freeware - Discontinued.
* [[RexxBase]] - [[REXX]] extension that allow you to work with xBase files or databases - Freeware
</div>
</div>


====OS/2 software that offers partial dBase compatibility====
===OS/2 software that offers partial dBase compatibility===
* [[DBExpert]] - Uses xBase files but is otherwise incompatible.
*DBExpert - Uses xBase files but is otherwise incompatible.
* [[IBM Works]] - Discontinued but shipped as an optional install with [[OS/2 Version 3]] and higher and all eComStation versions. - Formerly known as Footprint Works.
*[[IBM Works]] - shipped with BonusPak OS/2 Warp 3, 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.
: Note that both the Database and the PIM portion of IBM Works use xBase files as their underlying file format.
* [[Lotus Approach]] - Discontinued - eComStaion Preview, 1, 1.1 and 1.2 came with LA for free as a part of the [[Lotus Smartsuite]] package.
*[[Lotus Approach]] - part of the [[Lotus SmartSuite]] package


====OS/2 text & programmers editors with xBase support====
===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
* [[Boxer]] - Clipper, FoxPro and dBase specific and generic xBase syntax highlighting support provided by default.
* [[BRIEF]] - Clipper and dBase specific and generic xBase syntax highlighting support provided by default in latter versions of the package - Commercial - Discontinued
* [[BRIEF]] - Clipper and dBase specific and generic xBase syntax highlighting support provided by default in latter versions of the package
* [[Lugaru Epsilon]] - xBase syntax highlighting and autoindent plus PRG file support available as a seperate download. - Commercial.
* [[Lugaru Epsilon]] - xBase syntax highlighting and auto-indent plus PRG file support available as a separate download.


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


====Flat file DOS databases that offer partial dBase compatibility====
===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.
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.
* [http://staff.scm.uws.edu.au/~zhuhan/uploads.html dBM] - Freeware - Discontinued - original name "daily business manager" and not "data base manager" as you might think.
* [http://staff.scm.uws.edu.au/~zhuhan/uploads.html dBM] - Freeware - original name "daily business manager" and not "data base manager" as you might think.
* [[Little]] - Discontinued - Was shareware is now freeware
*Little - Was shareware is now freeware
* [[Lotus Works]] - Discontinued - Formerly sold as AlphaWorks
*Lotus Works - Formerly sold as AlphaWorks
* [[MicroSoft Works]] - Discontinued.
*Microsoft Works - Discontinued
* [[PC-File]] - Discontinued - Partial compatibility with versions 5 and up only - Version 5 is now freeware, later versions are not.
*PC-File - Partial compatibility with versions 5 and up only - Version 5 is now freeware, later versions are not.
* Spinnaker Better Working Eight-in-One - Discontinued
*Spinnaker Better Working Eight-in-One


====Relational DOS databases that offer partial dBase compatibility====
===Relational DOS databases that offer partial dBase compatibility===
These relational [[DOS]] database ssystems 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.
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 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 an 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.
* [[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====
===DOS DBF file viewers and editors===
* [[CDBFLite]] - Commercial - Current
* [[CDBFLite]]
* [[Lattice DFE/DFU]] - Commercial - Discontinued
* [[Lattice DFE/DFU]]
* Power Browse - Commercial - Discontinued
* Power Browse


====Generic xBase development utilities for DOS====
===Generic xBase development utilities for DOS===
* [[DOC]] - Code documentation generator - Discontinued.
*DOC - Code documentation generator
* [[SNAP!]] - Code documentation generator - Discontinued - Originally in the [[public domain]], later versions shareware.
*[[SNAP!]] - Code documentation generator - Originally in the [[public domain]], later versions shareware.


====DBF file repairers====
;DBF file repairers
* [[Titanic]] - Shareware
*Titanic - Shareware


====DOS compatible programmers libraries and database engines that work with xBase files or systems====
;Programmers libraries and database engines that work with xBase files or systems
<div style="column-count:2;-moz-column-count:2;-webkit-column-count:2">
<div style="column-count:2;-moz-column-count:2;-webkit-column-count:2">
* [[Bullet]] - Discontinued
* [[Bullet]]
* [[C/Database Toolchest]] - Library for [[C]] and [[C++]] programmers - Commercial - Current.
* [[C/Database Toolchest]] - Library for [[C]] and [[C++]] programmers
* [[CdBFile]] - Open Source - Discontinued.
* [[CdBFile]]
* [[CodeBase]] - Discontinued - Clipper/dBase compatible database engine/library that could be called from any programming language.
* [[CodeBase]] - Clipper/dBase compatible database engine/library that could be called from any programming language.
* [[dbfLIB]]/dbfLIB++ - Library for [[C]] and [[C++]] programmers - Discontinued.
* [[dbfLIB]]/dbfLIB++ - Library for [[C]] and [[C++]] programmers
* [[Dblisp]] - dBase II/II database access for GCL - Commercial - Discontinued
*Dblisp - dBase II/II database access for GCL
* [[e_Db]] - Library for [[C]] & [[C++]], also has [[Java]] and VB API's - Commercial - Discontinued.
* [[e_Db]] - Library for [[C]] & [[C++]], also has [[Java]] and VB APIs
* [http://www.antonis.de/faq/qbmonfaq-dateien/1047642646.html How to read DBF files with QBasic]
* [http://www.antonis.de/faq/qbmonfaq-dateien/1047642646.html How to read DBF files with QBasic]
* [[Lattice dBC III]] - Discontinued - C libraries.
* [[Lattice dBC III]] - C libraries
* [[libdbf]] - C library - Open source - Discontinued.
* [[libdbf]] - C library
* [[PMI ModBase]] - dBase III/xBase interface and file compatibility, plus app generator - Modula-2 - Commercial - Discontinued
* [[PMI ModBase]] - dBase III/xBase interface and file compatibility, plus app generator - Modula-2
</div>
</div>


====DOS text & programmers editors with xBase support====
;DOS text editors
* [[Boxer]] - Clipper, FoxPro and dBase specific and generic xBase syntax highlighting support provided by default.
* [[Boxer]] - Clipper, FoxPro and dBase specific and generic xBase syntax highlighting support provided by default.


==A list of xBase implementations that run under Win-OS/2==
==Win-OS/2 Implementations==
* [[dBFast]] - Commercial - Discontinued
* [[dBFast]]
* [[FoxPro|Visual FoxPro]]
* [[FoxPro|Visual FoxPro]]


====xBase libraries and utilities for WinOS/2====
===xBase libraries and utilities===
* [http://www.clip4win.co.uk/ Clip-4-Win] - A Clipper library that allows you to create 16 bit WinOS/2 or Windows 3.x applications. - Commercial - Current
* [http://www.clip4win.co.uk/ Clip-4-Win] - A Clipper library that allows you to create 16 bit WinOS/2 or Windows 3.x applications. - Commercial
====Flat file databases with partial dBase compatibility====
 
===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.
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.
*Microsoft Works for Windows - Discontinued
* [[PC-File]] - Discontinued - Commercial
*PC-File - Discontinued - Commercial


====WinOS/2 compatible programmers libraries and database engines that work with xBase files or systems====
===Libraries and database engines that work with xBase files or systems===
* [[C/Database Toolchest]] - Library for [[C]] and [[C++]] programmers - Commercial - Current.
* [[C/Database Toolchest]] - Library for [[C]] and [[C++]] programmers
* [[CdBFile]] - Open Source - Discontinued.
* [[CdBFile]] - Open Source
* [[CodeBase]] - Discontinued - Clipper/dBase compatible database engine/library that could be called from any programming language.
* [[CodeBase]] - Clipper/dBase compatible database engine/library that could be called from any programming language.
* [[dbfLIB]]/dbfLIB++ - Library for [[C]] and [[C++]] programmers - Discontinued.
* [[dbfLIB]]/dbfLIB++ - Library for [[C]] and [[C++]] programmers
* [https://sites.google.com/site/gfabasic16/GFADBBAS.zip GFA-BASIC dBASE Interface] - Allows [[GFA Basic]] for Windows 3.x and WinOS/2 to read and write xBase data files.
* GFA-BASIC dBASE Interface - Allows [[GFA Basic]] for Windows 3.x to read and write xBase data files.
* [[Lattice dBC III]] - Discontinued - C libraries.
* [[Lattice dBC III]] - C libraries
* [[libdbf]] - C library - Open source - Discontinued.
* [[libdbf]] - C library - Open source
* [[PMI ModBase]] - dBase III/xBase interface and file compatibility, plus app generator - Modula-2 - Commercial - Discontinued
* [[PMI ModBase]] - dBase III/xBase interface and file compatibility, plus app generator - Modula-2


==A list of xBase implementations that run under Java==
==Java Implementations==
Note that the xBase name is irritatingly enough also used by the xText project for their ELL lib in the Java world.
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====
;DBF/DBT File compatibility libraries and drivers
* [http://dans-dbf-lib.sourceforge.net DANS DBF Library] - Open Source
* [http://dans-dbf-lib.sourceforge.net DANS DBF Library]
* [http://www.hxtt.com/dbf.html HXTT DBF Pure Java JDBC Drivers] - Commercial - Current
* [http://www.hxtt.com/dbf.html HXTT DBF Pure Java JDBC Drivers]
* [http://mvnrepository.com/artifact/com.linuxense/javadbf/0.4.0 JavaDBF] - Open source - discontinued - [http://priede.bf.lu.lv/ftp/pub/DatuBazes/DBF/javadbf/javadbf-tutorial.html Usage notes]
* [http://mvnrepository.com/artifact/com.linuxense/javadbf/0.4.0 JavaDBF] - [http://priede.bf.lu.lv/ftp/pub/DatuBazes/DBF/javadbf/javadbf-tutorial.html Usage notes]
* [https://kenai.com/projects/jdbfdriver JDBFDriver] - Open Source
* JDBFDriver
* [http://www.csv-jdbc.com/stels_dbf_jdbc.htm StelsDBF] - Commercial - Current
* StelsDBF
* [[xBaseJ]] - Open source - Current
* [[xBaseJ]]


==Links==
==Links==
Line 146: Line 148:


==Standards==
==Standards==
There was some work on creating an xBase standard by the USA [[IEEE]] company 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.
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 90s 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.
* [http://www.fghoche.com/texi.htm TEXI] The European xBase Institute


====DBF file formats====
==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.
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 than 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.
* [[dBASE .DBF File Structure]] - by [[Borland]]
* [[dBASE .DBF File Structure]] - by [[Borland]]
* [http://www.dbase.com/KnowledgeBase/int/db7_file_fmt.htm Level 7 DBF File Specifications] - From dBase.com - Variation used by Visual dBase, dBase 7 and later.
* [http://www.dbase.com/KnowledgeBase/int/db7_file_fmt.htm Level 7 DBF File Specifications] - From dBase.com - Variation used by Visual dBase, dBase 7 and later.
* [https://msdn.microsoft.com/en-us/library/aa975386(v=vs.71).aspx Table File Structure (.dbc, .dbf, .frx, .lbx, .mnx, .pjx, .scx, .vcx)] - From [[Microsoft]], a simple explaination of different dbf etc files header arrangements.
* [https://msdn.microsoft.com/en-us/library/aa975386(v=vs.71).aspx Table File Structure (.dbc, .dbf, .frx, .lbx, .mnx, .pjx, .scx, .vcx)] - From [[Microsoft]], a simple explanation of different dbf etc files header arrangements.
* [http://www.digitalpreservation.gov/formats/fdd/fdd000325.shtml dBASE Table File Format (DBF)]
* [http://www.digitalpreservation.gov/formats/fdd/fdd000325.shtml dBASE Table File Format (DBF)]
* [http://www.dbf2002.com/dbf-file-format.html DBF file structure]
* [http://www.dbf2002.com/dbf-file-format.html DBF file structure]
* [http://support.sas.com/documentation/cdl/en/acpcref/67382/HTML/default/viewer.htm#p04mnmm6ms0y8yn1ass9qgxa932c.htm SAS/ACCESS(R) 9.4 Interface to PC Files: Reference, Third Edition] - a good short introduction to dbf file format.
* [http://support.sas.com/documentation/cdl/en/acpcref/67382/HTML/default/viewer.htm#p04mnmm6ms0y8yn1ass9qgxa932c.htm SAS/ACCESS(R) 9.4 Interface to PC Files: Reference, Third Edition] - a good short introduction to dbf file format.


==Usage examples==
[[Category:Programming Languages]][[Category:Databases]]
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 [http://www.sboe.state.az.us/ef_dbf.php info here].
 
[[Category:Programming Languages]][[Category:Databases]][[Category:xBase]]

Latest revision as of 00:58, 5 October 2023

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 1980s and into the mid-90s 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 PCs being written in an xBase variant, and the vast bulk of custom business solutions. However even by the late 80s 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 80s, 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 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 to 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 this 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
  • dBASE IV
  • Flagship - Unix Clipper compatible, announced for OS/2 but probably never shipped
  • Harbour - Current - Open source Clipper compatible
  • OnCMD
  • X2C - Open Source
  • XBase++ Clipper compatible system.
  • XHarbour - Open source Clipper compatible, a fork of Harbour.
DBF file viewers and editors

Libraries and database engines

OS/2 software that offers partial dBase compatibility

  • DBExpert - Uses xBase files but is otherwise incompatible.
  • IBM Works - shipped with BonusPak OS/2 Warp 3, 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.
  • BRIEF - Clipper and dBase specific and generic xBase syntax highlighting support provided by default in latter versions of the package
  • Lugaru Epsilon - xBase syntax highlighting and auto-indent plus PRG file support available as a separate download.

DOS implementations

  • Clipper - Discontinued
  • dBase - One of the last supported DOS database products, re-release of the old dBase V product.
  • dBFast - Commercial
  • dBMAN - Discontinued
  • dBXL - Discontinued
  • Force - Discontinued
  • FoxBASE+ - Discontinued
  • FoxPro - Discontinued
  • Friday! - Simplified, non-programmable version of dBase
  • nanoBase - 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 - original name "daily business manager" and not "data base manager" as you might think.
  • Little - Was shareware is now freeware
  • Lotus Works - Formerly sold as AlphaWorks
  • Microsoft Works - Discontinued
  • PC-File - Partial compatibility with versions 5 and up only - Version 5 is now freeware, later versions are not.
  • Spinnaker Better Working Eight-in-One

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 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 an 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

Generic xBase development utilities for DOS

  • DOC - Code documentation generator
  • SNAP! - Code documentation generator - Originally in the public domain, later versions shareware.
DBF file repairers
  • Titanic - Shareware
Programmers libraries and database engines that work with xBase files or systems
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

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

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 90s 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.

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 than 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.