# DBASE

dBASE foi o primeiro SGBD largamente utilizado industrialmente, pelo Apple II, Apple Macintosh e PC's IBM para DOS, onde se tornou um dos softwares mais vendidos durante alguns anos. O dBASE nunca conseguiu migrar com sucesso para a plataforma Microsoft Windows, e foi, em alguns casos, substituído por novos produtos, como Paradox, Clipper, FoxPro e Microsoft Access. O dBase foi vendido para a Borland em 1991, que vendeu os direitos da linha de produtos, em 1999, para a recém-formada dBASE Inc.
A partir de meados dos anos oitenta, muitas outras companhias produziram seus próprios "dialetos" ou variações do produto e da linguagem. Entre esses, estão: FoxPro (atual Visual FoxPro), Arago, Force, Recital, dbFast, dbXL, QuickSilver, Clipper, xBase++, FlagShip e Harbour. Todos foram chamados de xBase. O formato de arquivo do dBase, o DBF, é muito usado por diversos aplicativos que precisam somente de um formato estruturado para seus dados. A licença do dBase foi entregue aos usuários com a validade de 50 anos, prevenindo-se contra a improvável chance de um usuário utilizar sua loja do dBase por um extenso período de tempo.

## Origens

O desenvolvedor original do dBase foi Wayne Ratliff. Em 1978, enquanto trabalhava no Jet Propulsion Laboratory, Ratliff escreveu um programa de banco de dados em linguagem assembly para microcomputadores rodando CP/M para ajudá-lo a ganhar uma aposta realizada no escritório sobre quem seria o ganhador de um campeonato de futebol. O programa foi baseado no JPLDIS (Jet Propulsion Laboratory Display Information System) de Jeb Long e intitulado "Vulcan", em homenagem ao Sr. Spock de Jornada nas Estrelas. De acordo com Ratliff, a linguagem utilizada no JPLDIS era uma linguagem simples, orientada a comandos, que objetivava o uso interativo em terminais de impressão. Existem alguns indícios de que JPLDIS foi influenciado por um produto de banco de dados de mainframe chamado RETRIEVE.
No final dos anos 1980, George Tate, da Ashton-Tate, firmou um contrato de marketing com Ratliff. Vulcan foi renomeado para dBase, e o software rapidamente se tornou um grande sucesso.

## A linguagem de programação dBASE

Depois de portar o Vulcan para o IMSAI 8080 e depois para o CP/M e MS-DOS (como dBase), Ratliff adicionou comandos para acomodar a interface de vídeo, bem como comandos mais avançados para controle de fluxo (tais como DO WHILE/ENDDO) e lógica condicional (tais como IF/ENDIF).
Para manipulação de dados, dBase oferecia comandos e funções procedurais sofisticados para abrir e pesquisar arquivos (p.ex: USE, SKIP, GO TOP, GO BOTTOM, e GO recno), manipular o valor de campos (REPLACE e STORE), e manipular strings (p.ex.: STR e SUBSTR), números e datas. Sua capacidade de abrir e manipular simultaneamente diversos arquivos contendo dados relacionados levou a Ashton-Tate a rotular o dBase como uma "base de dados relacional", muito embora o produto não atendesse os critérios definidos pelo modelo relacional do Dr. Edgar F. Codd.
O dBase era uma linguagem interpretada, que permitia ao usuário executar comandos digitando-se em uma linha de comando. Digitando um comando e pressionando a tecla Entra, o interpretador imediatamente iria executá-lo. De maneira similar, programas (arquivos texto com extensão PRG) rodavam em um interpretador (com o comando DO), onde cada comando e variável eram processados em tempo de execução. Isso fazia com que os programas dBase fossem simples e rápidos de escrever e testar porque os programadores não tinham que primeiro compilá-los antes de executá-los. (Em outras linguagens, esses passos eram tediosos nos tempos das CPUs com apenas algumas dezenas de megahertz). O interpretador também gerenciava automaticamente e dinamicamente a memória (i.e., não havia pré-alocação de memória nem notação hexadecimal), o que, mais do que outras funcionalidades, tornava possível para um usuário sem experiência de programação desenvolver aplicações.
Por outro lado, a facilidade de uso e a simplicidade apresentada pelo dBase começou a se tornar uma limitação à medida que seus usuários tornavam-se mais especializados e programadores profissionais eram chamados para utilizá-lo. Aplicações mais complexas e mais críticas demandaram funcionalidades de programação profissional para maior robustez e desempenho, bem como maior produtividade do programador.
Com o tempo, os competidores da Ashton-Tate introduziram os chamados produtos e compiladores "clones", que introduziam funcionalidades de programação mais robustas, tais como funções definidas pelo usuário (UDFs) para complementar as funções básicas contidas no produto, variáveis com escopo definido, com menor possibilidade de serem afetadas por processos externos, arrays para manuseio de dados complexos, funcionalidades de empacotamento para a entrega de aplicações na forma de arquivos executáveis sem interpretadores em tempo de execução, sintaxe orientada a objeto, e interfaces para o acesso aos dados de gerenciadores de bancos de dados externos. A Ashton-Tate também implementou diversas dessas funcionalidades, com graus variáveis de sucesso. A Ashton-Tate e seus competidores também começaram a incorporar SQL, a linguagem padrão ANSI/ISO para criação, alteração e recuperação de dados armazenados em SGBDs.
No final dos anos 1980, grupos de desenvolvedores criaram um padrão para a linguagem dBase (IEEE 1192). Foi então que a linguagem passou a ser chamada de "Xbase" para distinguí-la do produto da Ashton-Tate. Centenas de livros foram escritos sobre programação dBase e Xbase.
Hoje em dia, implementações da linguagem dBase incluem muitas funcionalidades direcionadas para aplicações de negócios, incluindo a manipulação de interface de usuário gráfica (GUI), manipulação de dados remotos e distribuídos, uso da Internet e interação com dispositivos modernos. A despeito de sua funcionalidade e facilidade de uso, o legado da linguagem dBase de ter sido "embutida" dentro de um produto comercial popular é uma das razões pela qual ela não é um padrão dominante hoje em dia.

### Exemplo de programação

O seguinte exemplo abre uma tabela de empregados ("emp"), confere a cada gerente que supervisiona 1 ou mais empregados um aumento de 10%, e então imprime seus nomes e salários.
Note-se como não é necessário mencionar repetidamente o nome da tabela. A tabela corrente (via USE) permanece a mesma até que seja determinado em contrário. Esse é um contraste com SQL que necessita de tabelas explícitas na maior parte das vezes. O dBase utiliza uma série de técnicas de "contexto" semelhantes para reduzir o volume de digitação necessário e facilitar o desenvolvimento iterativo e incremental. Entretanto, era necessário ser cuidadoso ao utilizar códigos preexistentes que assumiam um determinado contexto e isso fazia com que a escrita de código modular em larga escala fosse difícil.
O dBase também foi uma das primeiras linguagens orientadas a negócio a implementar interpretação de strings (muito antes de Perl).
Nesse exemplo o "&" informa ao interpretador para interpretar a string armazenada em "myMacro" tal como se fosse código. Esse é um exemplo de uma funcionalidade que fez a programação dBase flexível e dinâmica, às vezes chamada "meta ability" pelos profissionais. Entretanto, poderia também ser problemática para pré-compilação e para fazer com que o código fosse seguro contra "hacking". Entretanto, o dBase tendeu a objetivar aplicações customizadas para pequenas e médias empresas, onde a segurança baseada em compilação dificilmente era um problema. Por exemplo, ninguém iria cogitar escrever um sistema operacional nessa linguagem.

## Utilização Decrescente

Tanto dBASE quanto seus sucessores e competidores são produtos de uma época onde os computadores pessoais eram desconectados e o banco de dados era um conjunto de arquivos em disco acessado por apenas um usuário. Todos os programas funcionam, na prática, como um programa monolítico que acessa diretamente os arquivos contendo os dados, sem intermediação (como ocorre no caso dos SGDB).
Com o aparecimento das redes de computadores, passou a ser possível utilizar discos compartilhados para acessar diretamente esses arquivos, porém fazendo que o programador tivesse que controlar e resolver vários problemas ligados ao acesso compartilhado de arquivos e registros.
Atualmente, apesar de muitos programas ainda utilizarem essas linguagens, o uso de um SGBD é mais recomendado, o que leva, gradativamente, ao abandono dessa tecnologia.

## 10s

Embora a linguagem tenha caído em desuso como linguagem preferencial nos negócios, alguns entendem que é uma boa ferramenta de transformação de dados ad-hoc. Diferentemente da SQL, é simples utilizá-la para quebrar transformações de dados em passos menores para analisar e inspecionar visualmente. Alguns defendem ser fácil juntar diferentes comandos de manipulação de dados preexistentes em subrotinas para criar scripts automatizados, em contraste com competidores que podem requerer começar do zero para ir de comandos interativos de mouse até programas completos.
É dito que ela preenche o hiato entre SGBDs formais e linguagens de programação de arrays tais como os derivados modernos da APL (J, K, etc.). Também é utilizada frequentemente para a preparação de arquivos de dados brutos para envio para sítios externos (de outros fornecedores) através de protocolos tais como FTP e e-mail.

## Formato de arquivo .dbf

Um dos maiores legados do dBase é seu formato de arquivo .dbf, que foi amplamente adotado. Por exemplo, o formato de shapefile desenvolvido pelo ESRI para dados espaciais em um sistema de informação geográfica GIS utiliza arquivos .dbf para armazenar dados de atributos. O termo XBase é frequentemente utilizado para esse grupo de aplicações.
O sistema de banco de dados dBase foi um dos primeiros a prover uma seção de cabeçalho (header) para descrever a estrutura dos dados dentro do arquivo. Isso significa que o programa não mais necessitava conhecimento prévio da estrutura de dados, mas poderia perguntar diretamente ao arquivo de dados como este estava estruturado.