Conceitos Básicos
INTRODUÇÃO AOS REPLACEABLE DATA DRIVERS (RDD)

Uma das maiores novidades da versão 5.2 pode não ter um impacto imediato na vida da maioria dos programadores Clipper, contudo é um marco e, a nosso ver a peça mais importante para a sobrevivência da linguagem Clipper.

A estrutura de arquivos DBF usado pelo Clipper encontra-se no limite de suas capacidades em termos de performance. Se analisarmos, ela foi criada há mais de 15 anos quando o dBase II ainda nem possuía esse nome. De lá para cá ela sofreu algumas alterações, contudo não o suficiente para garantir rapidez e eficiência para administrar bases de dados com tamanhos gigantescos e muitas vezes com mais de um milhão de registros.

Visualizando esse problema e principalmente e possibilidade de se integrar em um processamento corporativo, onde bases de dados de diferentes formatos precisam ser acessadas, a CA lançou os RDD ou Drivers de arquivos substituíveis, que permitem o acesso a bases de dados de diferentes formatos de forma transparente para  o programador e o usuário.

Dessa forma fica preservada a coisa mais importante que o programador tem: o investimento feito no aprendizado da linguagem. Desvincular o arquivo da linguagem Clipper é excelente para o programador, que passa a ter mais liberdade e campo de trabalho.

Com essa versão do Clipper são fornecidos RDD para acessar arquivos de dados e índices do PARADOX até versão 3.5, FoxPro com seus índices compactos. CDX e dBases IV e o índice MDX. Certamente aparecerão outros RDD feitos pelo CA ou terceiros para permitir acesso a uma variedade enorme de formatos de arquivo.

Para dar suporte aos RDD, vários comandos e funções existentes foram atualizados, e um grupo novo foi acrescentado ao conjunto existente. Todas essas alterações apareceram nos apêndices A e B. Apenas para referência, veja os próximos quadros mostrando os comandos alterados e os novos comandos e funções.

 

 
COMANDOS E FUNÇÕES ALTERADAS:

APPEND FROM
COPY TO
DBAPPEND()
DBGOTO()
DBSETINDEX()
GO
INDEX
RECNO()
SEEK
SET INDEX
SET ORDER

 
NOVAS FUNÇÕES:
DBRLOCK()    Trava o registro atual ou especificado.
DBRLOCKLIST()          Retorna uma matriz com a lista de bloqueios atual.
DBRUNLOCK()             Libera todos os bloqueios.
DELETE TAG                

Remove um subíndice de uma lista.

ORDBAGEXT()                Retorna a extensão do arquivo de índice.
ORDBAGNAME()               Retorna o nome do arquivo de índices.
ORDCREATE()                Cria um novo subíndice.
ORDDESTROY()            Elimina um subíndice.
ORDFOR()                        Exibe a expressão usada na cláusula FOR do índice.
ORDKEY()                       Exibe a chave usada pelo índice especificado.
ORDLISTADD()               Adiciona um novo subíndice à lista de índices.
ORDLISTCLEAR()            Remove todos os subíndices da lista ativa.
ORDLISTREBUILD()        Reconstrói todos os índices da lista atual.     
ORDNAME()                        Retorna o nome do subíndice especificado.
ORDNUMBER()                    Retorna a posição de um subíndice dentro da lista.
ORDSETFOCUS()                

Torna um subíndice ativo e mostra o anterior.

RDDLIST()                     

Retorna uma lista com os RDD ativos.

RDDNAME()                      Retorna o nome do RDD ativo da área especificada.
RDDSETDEFAULT()       

Define o RDD padrão para a aplicação.


Algumas informações úteis para quem quer trabalhar com arquivos e índices de outros formatos.

  1. .As extensões e os nomes de arquivos podem mudar de RDD para RDD. Dessa forma, se em suas aplicações existirem funções e rotinas que especificam explicitamente as extensões de arquivos de dados e índices, altere-as para evitar erros durante a execução de um programa.

    INDICE=”CLIENTE.NTX”
    IF .NOT. FILE(“&INDICE”)


    Deve ser alterado para:

    INDICE=”CLIENTE”+ORDBAGEXT()
    IF .NOT. FILE(“&INDICE”)

     
  2. Procure criar os arquivos de formatos estrangeiros ao Clipper dentro de seus próprios programas nativos, ou então use as funções DBCREATE() do Clipper quando o RDD correspondente estiver ativo.
     
  3. Podem-se abrir arquivos com formatos diferentes em áreas distintas de arquivos. Dessa forma pode-se, por exemplo, abrir um arquivo do Fox na área 1, um arquivo Clipper na área 2 e um arquivo do Paradox na área 3. Para tal, devem ser acrescentados os comandos apropriados no início do programa principal, que instrui o linkado para acrescentar os RDD apropriados, e devem ser usadas as cláusulas “VIA” nos comandos que lidam com esses arquivos.

  4. Quando um RDD é utilizado em uma aplicação, deve ser usado o comando REQUEST <nome do RDD> no início da aplicação. Esse comando comunica ao LINKADOR para incluir o módulo especificado no programa executável.

    Por exemplo:
    REQUEST DBFMDX     //REQUISITA RDD DO DBASE IV
    REQUEST DBFCDX     //REQUISITA RDD DO FOXPRO
    REQUEST DBFPX     // REQUISITA RDD DO PARADOX


    Para abrir um arquivo através do RDD use a cláusula VIA:

    USE arq1 VIA “DBFMDX” NEW
    USE arq2 VIA “DBFCDX” NEW
    USE arq3 VIA “DBFPX” NEW

     
  5. Use os comandos peculiares de cada formato pra indexar e acessar índices.

    use arq1 VIA  “DBFMDX”
    index on NOME TAG NOME
    index on CIDADE+ENDERECO TAG DESTINO

     
  6. Para trabalhar com um RDD de outro formato, o usuário deve fundamentalmente conhecer o funcionamento do arquivo estrangeiro para trabalhar adequadamente com as funções e os comandos do RDD do Clipper.
 

 
O RDD DBFCDX – FOXPRO

O RDD permite a criação e manutenção de arquivos de dados e índice do FoxPro2. Suas principais características são:

Os índices .CDX do FoxPro são bem menores do que aqueles criados pelo Clipper no seu formato NTX.

  • Cria índices condicionais através das cláusulas FOR, WHILE, REST e NEXT.
  • Cria arquivos de índices compostos que contém até 99 subíndices ou TAGS em um único arquivo reduzido, assim, o número de arquivos abertos em nível do DOS.

Como o Clipper permite apenas 15 arquivos associados e abertos com a área atual, o uso do RDD do FoxPro permite a abertura de mais arquivos índices sem sobrecarregar o número de arquivos que o DOS manipula.

Quando um índice CDX é aberto, todos os subíndices (tags) são automaticamente atualizados.

LINKAGEM DE UM PROGRAMA COM O RDD DBFCDX

Deve ser acrescentada a LIB DBFCDX durante o processo de linkagem.

RTLINK FI <programa>   lib DBFCDX

EXECUÇÃO DE UM PROGRAMA COM O RDD DBFCDX

Para que o RDD DBFCDX funcione corretamente, devem ser seguidos os seguintes passos:

  1. Acrescente a seguinte linha no início do programa principal da sua aplicação:

    REQUEST DBFCDX
     
  1. Use a cláusula VIA “DBFCDX” no comando USE, que abre o arquivo no formato do FOXPRO.

    USE arq2 VIA “DBFCDX”

Ou a função RDDSETDEFAULT() para  especificar o RDD padrão da aplicação.

REQUEST DBFCDX
RDDSETDEFAULT (“DBFCDX”)


USE arq 2     //não é necessário especificar via

 

 

O RDD DBFMDX – DBASE IV

Esse RDD permite a criação e manutenção de arquivos de dados e índices do DBASE IV. Suas principais características são:

  • Cria índices condicionais através das cláusulas FOR, WHILE, REST e NEXT.
  • Cria arquivos de índices compostos que contém até 99 subíndices ou TAGS em um arquivo reduzido, assim, o número de arquivos abertos em nível do DOS.

Quando um índice MDX é aberto, todos os subíndices (tags) são automaticamente atualizados.

LINKAGEM DE UM PROGRAMA COM O RDD DBFMDX

Deve ser acrescentada a LIB DBFMDX durante o processo de linkagem

RTLINK <programa>   lib DBFMDX

EXECUÇÃO DE UM PROGRAMA COM O RDD DBFMDX

Para que o RDD DBFMDX funcione corretamente, devem ser seguidos os seguintes passos:

  1. Acrescente a seguinte linha no início do programa principal da sua aplicação:

    REQUEST DBFMDX
     
  1. Use a cláusula VIA “DBFMDX” no comando USE, que abre o arquivo no formato do DBASE IV.

    USE arq2 VIA “DBFMDX”

Ou a função RDDSETDEFAULT() para especificar o RDD padrão da aplicação.

REQUEST DBFMDX
RDDSETDEFAULT(“DBFMDX”)

.
USE arq2    //não é necessário especificar via.

 

 
O RDD DBFNDX – DBASE III PLUS

Esse RDD permite a criação e manutenção de arquivos de dados e índices do dBase III PLUS. Suas principais características são:

  • É compatível com o formato dBase II PLUS, incluindo suas limitações. Esse RDD não permite a indexação em um campo lógico.

O RDD do dBase III PLUS trabalha com o comando FIND pesquisando apenas expressões do tipo caractere, ao contrário do próprio dBase III PLUS que suporta tanto expressões do tipo caractere como numérico.

 LINKAGEM DE UM PROGRAMA COM O RDD DBFNDX

Deve ser acrescentada a LIB DBFNDX durante o processo de linkagem.

RTLINK FI <programa>   lib DBFNDX

EXECUÇÃO DE UM PROGRAMA COM O RDD DBFNDX

Para que o RDD DBFNDX funcione corretamente, devem ser seguidos os seguintes passos:

  1. Acrescente a seguinte linha no início do programa principal da sua aplicação:

    REQUEST DBFNDX
     
  1. Use a cláusula VIA “DBFNDX” no comando USE, que abre o arquivo no formato do DBASE III PLUS.

    USE arq2 VIA “DBFNDX”
Ou a função RDDSETDEFAULT() para especificar o RDD padrão da aplicação.

REQUEST DBFNDX
RDDSETDEFAULT(“DBFNDX”)


USE arq2     //não é necessário especificar via.

 

 
O RDD DBPX – PARADOX 3.5

Esse RDD permite a criação e manutenção de arquivos de dados e índices do Paradox 3.5. Suas principais características são:

  • Importa tabelas do Paradox diretamente para matrizes do Clipper.
  • Cria e modifica tabelas, registros e campos do Paradox.
  • Cria, seleciona e ativa índices primários e secundários.

LINKAGEM DE UM PROGRAMA COM O RDD DBPX

Deve ser acrescentada a LIB DBPX durante o processo de linkagem.

RTLINK FI <programa>   lib DBPX

EXECUÇÃO DE UM PROGRAMA COM O RDD DBFPX

Para que o RDD DBPX funcione corretamente, devem ser seguidos os seguintes passos:

  1. Acrescente a seguinte linha no início do programa principal da sua aplicação:

    REQUEST DBPX
     
  1. Use a cláusula VIA “DBFNDX” no comando USE, que abre o arquivo no formato do PARADOX 3.5.

    USE arq2 VIA “DBPX”

Ou a função RDDSETDEFAULT() para especificar o RDD padrão da aplicação.

REQUEST DBPX
RDDSETDEFAULT(“DBPX”)

.
.
USE arq2     //não é necessário especificar via.

 
RDDs PARA HARBOUR
SQL LIB
O Projeto SQL LIB foi desenvolvido para suprir uma grande deficiência da atual comunidade xBase, necessidade esta de conexão com banco de dados remotos nas linguagens Harbour e xHarbour.

A facilidade e a performance de sua utilização permitem que, com um conjunto mínimo de adaptações, os sistemas possam migrar de modo transparente para tais SGBDs (Sistemas Gerenciadores de Banco de Dados ou servidores SQL), evitando assim uma grande curva de aprendizado e aproveitando toda a experiência do profissional xBase, além de representar uma excelente relação custo/benefício.

A SQL LIB é uma solução completa para a atual comunidade, com suporte e atualizações constantes mantidas por nossa equipe de desenvolvimento.

 
Links do projeto: http://www.sqllib.com.br
 
MEDIATOR

O Mediator foi desenvolvido com o intuito de permitir a fácil e rápida migração de seus aplicativos Clipper para o acesso aos Bancos de Dados Relacionais mais populares do mercado. Atualmente há de versões para conexão a Bancos Oracle, MySQL, PostgreSQL, SQL-Server e Sybase.

 
Links do projeto: http://www.otc.pl
 
Há um link para um tópico aqui no Brasil, falando sobre algumas experiências de uso desta ferramenta em no fórum da PC Toledo, que com certeza é muito interessante. Para acessar, clique aqui.
 
TOP CONNECT

"TOPConnect is the FIRST RDD that enables access to multiple SQL Databases with levels of performance that are acceptable in the corporate world. Instead of learning a new programming paradigm trying to use ODBC from Clipper, the RDD technology puts them on the hands of mere mortals! Now, if you need to select & join multiple tables or execute masive updates, it’s a function call away, TOPConnect makes the translation/binding under the covers so it gets so simple".

 
Links do projeto: http://www.topconnect.cl/
 
 
Maiores Informações

As informações contidas neste site visam fornecer uma visão geral dos conceitos técnicos envolvidos com a manipulação de RDDs, seja em Clipper como também em Harbour ou xHarbour. Também foram apresentados acima algumas opções para acesso de ferramentas comerciais existentes no mercado.

As informações contidas neste site estão muito longe de serem completas, caso você tenha alguma dúvida ou sugestão, por favor envie-nos por e-mail em: contato@sqlrdd.com.br.

 
Última atualização em: 30/08/2006 às 12:12hs
 
 
Parte deste trabalho foi baseado no livro: CLIPPER 5 Release 5.2, Vol I, autor José Antônio Ramalho, editora Makron Books. Lembramos que todas as marcas mencionadas neste site, são de propriedade de seus respectivos detentores. Saiba mais, clicando aqui.