Você está na página 1de 34

Clipper v.5.

1. INTRODUO
1.1. O QUE O CLIPPER
Uma das aplicaes mais freqentes e teis para os computadores a organizao de
colees de dados (ou arquivos), com a finalidade de se elaborar consultas, efetuar clculos,
gerar listagens e relatrios, anlises estatsticas, etc. Muitas aplicaes em processamento de
dados tm essas caractersticas em comum, sendo por isso chamadas de aplicaes de banco de
dados, pois baseiam-se em arquivos de dados. Por outro lado, os bancos de dados constituem
o ingrediente fundamental dos sistemas de informao, cujo objetivo principal gerar
informaes para a tomada de decises.
O Clipper se originou de um dos softwares de maior sucesso para microcomputadores, o
dBASE III. Com ele torna-se possvel o desenvolvimento de sofisticadas aplicaes destinadas
ao gerenciamento de bancos de dados de pequeno e mdio porte, utilizando microcomputadores da linha IBM-PC, baseado no sistema operacional MS-DOS. O Clipper uma linguagem bastante poderosa, flexvel e completa, permitindo a produo de verdadeiros sistemas de
informao, sendo por isso um dos softwares para microcomputadores de maior sucesso
dentro de sua categoria.
Utilizando o Clipper possvel desenvolver sistemas aplicativos capazes de:

Criar, organizar e relacionar conjuntos de arquivos que formam um banco de dados;

Adicionar, alterar, eliminar, exibir e listar global ou seletivamente as informaes


contidas nos registros dos arquivos de dados;

Efetuar diversas operaes aritmticas sobre os dados armazenados nos arquivos;

Formatar telas para a edio e validao de dados no vdeo e gerar relatrios, tabelas e
listagens complexas na impressora, de acordo com as necessidades do usurio;
Em resumo, o Clipper permite a dinamizao da criao de aplicaes com arquivos de

dados, tornado-as mais fceis, rpidas e sofisticadas que as desenvolvidas atravs de


linguagens de programao tradicionais, como o COBOL ou PASCAL. Com uma moderna e
eficiente linguagem de programao, o Clipper permite o encadeamento ordenado e lgico de
comandos, procedimentos e funes, possibilitando a definio rpida de aplicaes com alto
grau de complexidade e sofisticao e ainda possibilita integraes diretas com as linguagens C
e ASSEMBLER.

Clipper v.5.2

1.2. O QUE UM COMPILADOR


Para um computador executar qualquer operao, necessrio que as instrues
fornecidas em uma linguagem de alto nvel, parecida com a humana, sejam traduzidas para os
cdigos de uma linguagem de baixo nvel, ou linguagem de mquina, que o computador
entende e executa. Para desenvolver um programa utilizando um compilador, inicialmente voc
cria, atravs de um editor de textos, um arquivo contendo os vrios comandos, procedimentos
e funes que compreendem as suas instrues. Este o chamado programa-fonte ou cdigofonte.
Aps terminar de escrever o cdigo-fonte de seu programa, voc o submete ao
compilador. Ele analisado pelo compilador, linha por linha, e traduzido para linguagem de
mquina gerando um arquivo com o cdigo traduzido, chamado cdigo-objeto e que recebe a
extenso .OBJ. Para cada linha, quando um problema encontrado, uma mensagem de erro
adequada apresentada, e o arquivo contendo o cdigo-objeto no gerado. Ao final da
compilao voc obtm uma lista, linha por linha, de todos os erros que ocorreram, e dever,
ento, retornar ao editor de textos para corrigi-los, tomando cuidado para no criar novos
erros. Uma vez corrigido os erros, o programa dever ser novamente compilado. Este
processo dever ser repetido at que no sejam acusados mais erros.
Aps a compilao, o cdigo-fonte permanece intacto, e poder ser reutilizado para alteraes e implementaes que sejam necessrias no programa, exigindo novas compilaes. Somente atravs do cdigo-fonte isto ser possvel.
O cdigo-objeto praticamente indecifrvel, e constitui um mtodo seguro de gravar o
cdigo-fonte convertido. Contudo, o cdigo-objeto no possui todas as instrues necessrias
execuo do programa. Na verdade, cada comando de uma linguagem de alto nvel uma
rotina em uma linguagem de nvel mais baixo. Estas rotinas (j em cdigo de mquina) esto
gravadas em bibliotecas que devem ser encadeadas ou ligadas ao cdigo-objeto gerado pelo
compilador, para produzir o programa auto-executvel. O Clipper escrito em linguagem C,
assim, aps a obteno do cdigo-objeto, os programas devero ser encadeados com bibliotecas de rotinas escritas em C, que tambm fazem parte do Clipper.
A operao de encadeamento ou linkedio feita por um programa especial chamado
linkeditor, que encadeia ou integra os mdulos objetos entre si e com as bibliotecas de
rotinas do Clipper, gerando um nico mdulo ou programa que pode ser executado diretamente do sistema operacional, este arquivo possui a extenso .EXE. Nele esto contidas (em
linguagem de mquina) todas as instrues necessrios execuo da aplicao desenvolvida
sob o sistema operacional. No sero mais necessrios o compilador Clipper, o cdigo-fonte, o

Clipper v.5.2

cdigo-objeto, o linkeditor, ou as bibliotecas-padro, mas apenas o mdulo executvel e os


arquivos de dados manipulados por ele.

Programa
Fonte 1

Programa
Fonte 2

Programa
Fonte n

COMPILADOR

Mdulo
Objeto 1

Mdulo
Objeto 2

Mdulo
Objeto n

Biblioteca 1

LINKEDITOR

Biblioteca 2
Biblioteca n

Mdulo
Executvel
Estrutura geral de um compilador/linkeditor

Clipper v.5.2

2. A ESTRUTURA DA LINGUAGEM CLIPPER


2.1. UM PROGRAMA TPICO
Um programa em Clipper composto por uma ou mais rotinas que consistem numa srie
de instrues que seguem determinadas regras definidas pela linguagem Clipper, com o
objetivo de efetuar determinadas operaes no computador.
Um programa armazenado em um arquivo tipo texto, que normalmente recebe a
extenso .PRG. Este arquivo pode ser criado por qualquer processador de textos, de
preferncia profissional. Espaos em branco e tabulaes so ignorados pelo compilador
Clipper, permitindo assim com que o programa possa ser estruturado para facilitar sua leitura e
compreenso. Um <Enter> interpretado como final de uma linha de instruo do programa.
Portanto, um programa um arquivo texto, contendo diversas rotinas (procedimentos ou
funes) escritas em Clipper, cada uma desempenhando uma determinada operao, de acordo
com a natureza e os objetivos do sistema aplicativo desenvolvido. Um sistema aplicativo pode
ser composto por diversos programas.
O programa EXEMPLO.PRG, apresentado a seguir, mostra uma pequena rotina escrita
em Clipper:
/*
Arquivo..: EXEMPLO.PRG
Funo...: Demonstrar um programa tpico
Linguagem: Clipper v.5.2
Data.....: Maro/98
Autor....: Antonio G. Chiachio Jr.
*/
PROCEDURE HELLO
CLS
// Apaga a tela
@ 10,20 SAY OL, ISTO UM TESTE
RETURN

2.2. COMENTRIOS
A incluso de comentrios no cdigo dos programas extremamente importante para
torn-los mais claros, fceis de serem compreendidos e, conseqentemente, mais fceis de
serem alterados ou corrigidos. O Clipper permite a utilizao de dois tipos de comentrios:

Clipper v.5.2

Vrias Linhas:
Diversas linhas de comentrios seguidas podem ser includas dentro do cdigo dos
programas, desde que sejam iniciadas por uma barra seguida de um asterisco, /*, e finalizadas
por um asterisco seguido por uma barra, */.
Uma nica Linha:
Para incluir uma nica linha de comentrio entre as linhas de instrues de um programa
ou no final de cada linha de instruo de um programa deve-se utilizar duas barras, //; qualquer
caractere aps as barras, at o prximo <Enter>, que causa uma mudana de linha, ser
ignorado pelo compilador.

2.3. DEFINIO DE PROCEDIMENTOS


Procedimentos e funes so blocos ou conjuntos de instrues, escritos de forma
ordenada e lgica, de acordo com as regras da linguagem Clipper, que desempenham tarefas
ou operaes especficas. So, portanto, os elementos bsicos que compem os programas e,
por conseqncia, as aplicaes desenvolvidas em Clipper.
A estrutura bsica para a definio de um procedimento a esquematizada a seguir:
PROCEDURE <nome identificador> (<lista de parmetros>)
<declarao de variveis>
.
.
.
<instrues>
.
.
.
RETURN
Inicialmente, atravs do comando PROCEDURE, deve ser obrigatoriamente definido o
nome identificador do procedimento. Entre parnteses, pode ser definida uma lista opcional de
parmetros, separados por vrgulas, que sero utilizados durante a execuo do procedimento.
Logo aps, nas primeiras linhas do procedimento, devem ser declaradas as variveis que
sero utilizadas pelo procedimento, atravs dos comandos LOCAL, STATIC, PRIVATE ou
PUBLIC.

Clipper v.5.2

Na seqncia, deve ser includo o corpo do procedimento, que corresponde a uma srie
de instrues e estruturas de controle, que levaro execuo das operaes e tarefas
definidas para o procedimento.
E por fim, todo procedimento dever ser finalizado por um RETURN.

2.4. VARIVEIS
Durante o processamento de um programa existem determinadas informaes que
necessitam ser armazenadas na memria do computador para poderem ser utilizadas medida
que as operaes vo sendo executadas. Estas informaes so armazenadas atravs de nomes
identificadores denominados variveis, pois podem ter seu contedo modificado (variado)
durante o fluxo de processamento.
Os nomes definidos para variveis podem conter letras, algarismos ou o smbolo
sublinhado, podendo ser formados por at 10 caracteres, sendo que o primeiro caractere deve
obrigatoriamente ser uma letra.
O Clipper permite a definio de diferentes tipos de variveis, conforme a natureza do
dado nela armazenado. Alm disso, variveis so organizadas em classes, que determinam
como a varivel armazenada, por quanto tempo ela estar ativa, e onde, dentro de um
programa, ela poder ser utilizada. Cada classe de varivel possui um comando especfico que
declara seus nomes ou as cria durante a execuo de um programa.
Visibilidade e Tempo de Vida das Variveis
Durante a execuo de um programa, uma varivel passa a existir, ou criada, quando
uma parte da memria interna do computador alocada para armazenar o seu valor.
Uma vez criada, uma varivel continua a existir, contendo ou no um valor, at que a
poro de memria a ela alocada seja apagada ou cancelada. O tempo de existncia de uma
varivel muito importante para efeitos de programao, e conhecido como o seu tempo de
vida.
A visibilidade de uma varivel refere-se s condies sob as quais uma varivel pode ou
no ser acessada por uma rotina, durante a execuo de um programa. Se uma varivel puder
ser acessada ser visvel quela rotina.
Classes de Variveis

Clipper v.5.2

O Clipper permite a declarao e a criao de quatro classes de variveis, que se diferenciam de acordo com sua visibilidade e tempo de vida dentro da aplicao desenvolvida. As
classes de variveis que podem ser declaradas so:
Locais
Estticas
Privadas
Pblicas

Variveis Locais
Variveis locais devem ser declaradas atravs do comando LOCAL. As variveis locais
so visveis apenas dentro da rotina em que foram declaradas, e so canceladas aps o trmino
da rotina.
Exemplos:
1- PROCEDURE Teste
LOCAL num:=0, nome:=Antonio
.
.
.
RETURN
2- PROCEDURE Teste
LOCAL num1:=3, num2:=5
Soma()
RETURN
PROCEDURE Soma
@ 10,20 Say num1 + num2
RETURN
Obs.: O exemplo 2 no funcionar corretamente pois as duas variveis locais
declaradas no procedimento Teste() no sero visveis para o procedimento Soma(), pois
somente sero visveis para o procedimento Teste().
Variveis Estticas
Variveis estticas devem ser declaradas atravs do comando STATIC. Funcionam de
maneira semelhante s variveis locais; contudo, so mantidas aps o trmino da rotina em que
foram declaradas, isto , elas continuam a existir e a reter seus valores durante toda a execuo
do programa.
Exemplos:

Clipper v.5.2

1- PROCEDURE Teste
STATIC num:=0
.
.
.
RETURN
2- PROCEDURE Principal
Soma() //Resulta 1
Soma() //Resulta 2
RETURN
PROCEDURE Soma
STATIC n1:=0
n1:=n1+1
@ 10,20 SAY n1
RETURN
Variveis Privadas
Variveis privadas devem ser declaradas atravs do comando PRIVATE. Ao contrrio
das variveis locais e estticas, uma varivel privada visvel para a rotina que a criou e para
todas as rotinas por ela chamadas. Uma vez criada, uma varivel privada continua a existir e
retm seu valor at que a rotina que a criou seja finalizada.
Exemplos:
1- PROCEDURE Teste
PRIVATE num:=0
.
.
.
RETURN
2- PROCEDURE Principal
PRIVATE n1:=3, n2:=4
Soma() //Resulta 7
RETURN
PROCEDURE Soma
@ 10,20 SAY n1+n2
RETURN
Variveis Pblicas
Variveis pblicas devem ser declaradas atravs do comando PUBLIC. Uma vez criadas,
podem ser acessadas por todas as rotinas e continuam a existir e a armazenar valores at o
final da execuo de uma aplicao. Ao contrrio das variveis locais e privadas, as variveis
pblicas no so canceladas ao final da rotina em que foram criadas.
Exemplo:

Clipper v.5.2

1- PROCEDURE Teste
PUBLIC num:=100
.
.
.
RETURN

2.5. TIPOS DE DADO


No Clipper, com o propsito de ser utilizado em expresses, cada dado identificado
como sendo de um tipo. Assim a cada varivel de memria ou campo de arquivo associado
um tipo de dado, que depende de como cada um destes itens foi criado. Por exemplo, o tipo de
dado de uma varivel depende do valor nela armazenado, ou seja, do seu contedo e o tipo de
dado de um campo de arquivo depende da estrutura do arquivo de dados correspondente.
Os tipos de dados existentes na linguagem Clipper so os seguintes:
Variveis de Memria

Campos de Arquivo

Caractere

Caractere

Numrico

Numrico

Data

Data

Lgico

Lgico

NIL (somente na forma de varivel)

Memo (somente na forma de campo)

Matriz (somente na forma de varivel)


Bloco de Cdigo (somente na forma de varivel)
Caractere
Um dado tipo caractere se caracteriza por ser uma cadeia de tamanho fixo, contendo de
zero a 65.535 (64 Kbytes) caracteres da tabela ASCII, composta por dgitos numricos (0-9),
letras alfabticas (a-z ou A-Z) ou smbolos especiais (@, +, *, %, etc.).
Os valores a serem armazenados em itens de dado tipo caractere devem ser delimitados
por um par de delimitadores, que podem ser:
Aspas

Apstrofos
Colchetes

[ ]

Para representar o valor vazio para dados tipo caractere deve-se utilizar dois
delimitadores contguos, ou seja, , ou [].

10

Clipper v.5.2

Numrico
Um dado do tipo numrico quando possuir, na sua composio, somente algarismos
numricos de 0 a 9, os sinais + ou - e o ponto decimal. Este tipo de dado destina-se
realizao de clculos matemticos.
Um dado numrico no deve ser delimitado por nenhum smbolo; pois em caso
contrrio, ser considerado como sendo caractere. O valor vazio ou nulo para dados
numricos o valor zero ( 0 ).
Data
Um dado do tipo data quando possuir, na sua composio, oito posies, constitudas
por seis dgitos numricos de 0 a 9, intercalados por barras /, no formato 99/99/99. Este tipo
de dado usado para representar datas do calendrio, e permite a realizao de uma srie de
operaes com elas como, por exemplo, a obteno da diferena entre duas datas, em nmero
de dias.
Para a definio de variveis do tipo data obrigatria a utilizao da funo CTOD(),
que transforma dados tipo caractere em dados tipo data. Por exemplo:
SET DATE BRITISH
// datas no formato dia/ms/ano
Nascimento:= CTOD(08/03/58)
Com exceo dos campos de registros tipo data, a nica forma de se definir um dado
tipo data atravs da funo CTOD().
O formato-padro definido para datas no Clipper o americano, ou seja, mm/dd/ssaa.
Para convert-lo para o formato adotado no Brasil, dd/mm/ssaa, pode-se utilizar o comando
SET DATE BRITISH. O smbolo dd representa o dia, e deve estar, dependendo do ms, entre
01 e 31; mm representa o ms, e deve estar entre 01 e 12; ss representa o sculo do ano, e
deve estar entre 00 e 29; finalmente, aa representa o ano, e deve estar entre 01 e 99. O Clipper
normalmente trabalha com datas do sculo XX, suprimindo sua indicao, isto , a indicao
do sculo ss no apresentada. Para trabalhar com outro sculo devem ser utilizados os
comandos SET CENTURY e SET EPOCH.
Os dados do tipo data aceitos pelo Clipper devem ser datas vlidas compreendidas entre
CTOD(01/01/0100) e CTOD(31/12/2999). O valor vazio para os dados tipo data a data
em branco ou data vazia, que deve ser representada por CTOD().

Clipper v.5.2

11

Lgico
Um dado do tipo lgico representa apenas dois estados possveis, falso ou verdadeiro,
chamados valores boleanos. Seu contedo poder ser apenas .Y. ou .y. (yes ou sim), .N. ou .n.
(no ou no), .T. ou .t. (true ou verdadeiro) e .F. ou .f. (false ou falso). Os dados lgicos devem
ser obrigatoriamente delimitados por pontos. Exemplo:
verdadeiro:= .T.
falso:= .F.
NIL
O tipo NIL foi introduzido na verso 5.0 do Clipper para permitir a manipulao de
variveis e matrizes declaradas, mas no inicializadas com atribuio de algum valor. A
representao deste tipo de dado a sigla NIL, sem delimitadores.
Pode-se interpretar NIL como sendo ausncia de dado, pois quando um valor no for
atribudo a uma varivel, o Clipper automaticamente atribuir o valor NIL.
Este tipo de dado no existe na forma de um campo de arquivo, isto , o valor NIL no
pode ser atribudo a um campo de arquivo.
Matrizes e Blocos de Cdigo
Por se tratarem de tipos de dado especiais e complexos no sero abordados nesta apostila.

2.6. OPERADORES
O Clipper possui oito tipos de operadores que permitem a construo de expresses sobre
valores de dados, variveis, campos de arquivos e funes. Estes tipos so os seguintes:
Caracteres
Datas
Matemticos
Relacionais
Lgicos
Atribuidores
Incrementadores
Macro (no ser abordado nesta apostila)
Operadores de Caracteres

12

Clipper v.5.2

Operador
+

Operao sobre caracteres


Concatenao com brancos
Concatenao sem brancos

O operador mais ( + ), ou concatenao com brancos, une duas ou mais cadeias de


caracteres em uma nica. Exemplo:
a:=Clipper
b:=- Verso 5.2
c:=a + b
? c
// Resulta: Clipper - Verso 5.2
O operador menos ( ) tambm une cadeias, mas os espaos so movidos para o fim da
cadeia. Exemplo:
a:=Clipper
b:=
Verso 5.2
c:=a + b
? c
// Resulta: Clipper
Verso 5.2
d:=a b
? d
// Resulta: ClipperVerso 5.2

Operadores de Datas
Dados tipo data podem ser somados ou subtrados, em termos de nmeros de dias,
atravs dos operadores soma ( + ) e subtrao ( ).
Uma adio de dias a uma data, gera uma nova data no futuro, enquanto que uma
subtrao de dias de uma data, gera uma nova data no passado. Nestes casos, obrigatrio
que o dado tipo data seja o primeiro operando, e o nmero de dias, o segundo. Exemplos:
1SET DATE BRITSH
? DATE()
? DATE() + 1
? DATE() 1
? 1 + DATE()

//
//
//
//

Resulta: 10/05/97
Resulta: 11/05/97
Resulta: 09/05/97
Resulta em erro

2? CTOD(05/05/97) CTOD(10/05/97)

Operadores Matemticos

// Resulta 05

Clipper v.5.2

Operador
+

*
/
^
%

13

Operao
Adio ou unrio positivo
Subtrao ou unrio negativo
Multiplicao
Diviso
Exponenciao
Resto da diviso

Os parnteses so utilizados para agrupar operaes e determinar a precedncia de umas


sobre as outras. Exemplo:
? 4 * 2 + 1
? 4 * (2 + 1)

//Resulta 9
//Resulta 12

Operadores Relacionais
Os operadores relacionais so binrios e geram resultados lgicos (verdadeiro ou falso) a partir
do relacionamento (comparao) de duas expresses. Podem ser utilizados em expresses
numricas, caractere, data ou NIL. As expresses relacionadas devem ser obrigatoriamente do
mesmo tipo de dado. Os operadores relacionais do Clipper so os seguintes:

Operador
<
>
=
==
<>
#
!=
<=
>=
$

Operao Relacional
Menor que
Maior que
Igual a
Duplo igual a
Diferente de ou no igual
Menor ou igual a
Maior ou igual a
Comparao de Subcadeia

Exemplos:
1a:=100
b:=200
? a > b
? b > a
? a <> b

// Resulta falso (.F.)


// Resulta verdadeiro (.T.)
// Resulta verdadeiro (.T.)

2? Clipper = Cli
? Clipper <> Cliper

// Resulta (.T.)
// Resulta (.T.)

14

Clipper v.5.2

O operador $, subcadeia ou substring, opera apenas sobre expresses do tipo caractere.


Ele compara a expresso da esquerda com a da direita, fornecendo verdadeiro se a expresso
da esquerda est contida na da direita ou se as duas expresses so idnticas. Exemplo:
a:=
b:=
c:=
? a
? a
? b
? c

Clipper
Aplicativos
Sistema para Gerao de Aplicativos
$ b
// Resulta falso (.F.)
$ c
// Resulta falso (.F.)
$ c
// Resulta verdadeiro (.T.)
$ b
// Resulta falso (.F.)

O operador duplo igual (= =) atua de maneira idntica ao operador igual (=) para
expresses numricas ou tipo data. No caso de expresses do tipo caractere, fornecer
verdadeiro apenas se a expresso da direita for exatamente idntica expresso da esquerda.
Exemplo:
a:=Cli
b:=Clipper
? b = a
? b = = a

// Resulta verdadeiro (.T.)


// Resulta falso (.F.)

Operadores Lgicos
Os operadores lgicos fornecem valores lgicos (falso .F. ou verdadeiro .T.), a partir da
comparao de duas expresses lgicas, que so seus operandos. Com exceo do
operador .NOT. ou !, todos so binrios. Os operadores lgicos do Clipper so relacionados
na tabela a seguir:

Operador
.AND.
.OR.
.NOT. ou !

Operao Lgica
Conector lgico E
Conector lgico OU
Conector lgico NO

Exemplo:
a:=
b:=
c:=
? b
? b
? b

100
200
300
> a .AND. c > b
> a .AND. b = c
> a .OR. b = c

// Resulta .T.
// Resulta .F.
// Resulta .T.

O operador .NOT. ou ! (negao) unrio, ou seja, atua sobre uma nica expresso. Se
a expresso for verdadeira, ir transform-la em falsa ou vice-versa. Exemplos:

Clipper v.5.2

15

1x:= .T.
? .NOT. x
? ! x

// Resulta .F.
// Resulta .F.

2a:=100
b:=200
If .NOT. a>b
@ 10,20 say b maior
Endif
Operadores de Atribuio
Os operadores de atribuio, relacionados na tabela a seguir, atribuem valores ou dados
a variveis ou elementos de matrizes:

Operador
:=
+=
=
*=
/=
^=
%=

Operao de Atribuio
Atribuio em linha de instruo
Adio e atribuio em linha de instruo
Subtrao e atribuio em linha de instruo
Multiplicao e atribuio em linha de instruo
Diviso e atribuio em linha de instruo
Exponenciao e atribuio em linha de instruo
Resto e atribuio em linha de instruo

Os operadores de atribuio compostos realizam uma operao entre dois operandos e


depois atribuem o resultado ao primeiro. A tabela a seguir esclarece seu modo de
funcionamento.

Operador
+=
-=
*=
/=
%=
^=

Utilizao
a += b
a -= b
a *= b
a /= b
a %= b
a ^= b

Operadores de Incremento e Decremento

Operao
a:=a+b
a:=a-b
a:=a*b
a:=a/b
a:=a%b
a:=a^b

16

Clipper v.5.2

Os operadores de incremento so unrios, ou seja, operam sobre um nico operando do


tipo numrico ou data. O operando deve ser o nome de uma varivel e no pode ser um campo
de arquivo de dados. A tabela a seguir relaciona estes operadores e sua operao:

Operador

Utilizao

Operao

a++
+ + (incremento)
(decremento)

a : = ( a +1 )

++a
a

a : = ( a 1)

O operador duplo mais (++) incrementa seu operando em uma unidade, enquanto que o
operador duplo menos (--) decrementa o seu operando em uma unidade. Podem ser utilizados
como prefixo ou como sufixo. Utilizados como prefixo, alteram o operando antes de
efetuar a atribuio. Utilizados como sufixo, alteram o operando depois de efetuada a
atribuio. Observe atentamente os exemplos a seguir:
1-

3num1:=0
num2:= ++num1
? num1
? num2

num5:=2
? num5++ * num5 //resulta 6
? num5
//resulta 3

//resulta 1
//resulta 1

2-

4num2:=1
num4:=num2-? num2
? num4

//resulta 0
//resulta 1

num6:=2
? --num6 * num6 //resulta 1
? num6
//resulta 1

Clipper v.5.2

17

3. COMANDOS DO CLIPPER
3.1. COMANDOS DE TELAS E PARA SADA E ENTRADA DE DADOS
? / ??
Sintaxe:
? <lista/expresso>
ou
?? <lista/expresso>
Finalidade:
O comando interrogao apresenta dados ou resultados de expresses, na tela ou na
impressora. O ponto de interrogao simples (?) avana uma linha antes de apresentar a lista
de campos, variveis ou expresses especificados. Caso nada seja especificado, ser
apresentada uma linha em branco. O ponto de interrogao duplo (??) apresenta, na mesma
linha, a lista de campos, variveis ou expresses especificados, permitindo a utilizao de
vrios ?? sucessivos para apresentao de dados numa mesma linha.
Exemplos:
? Clipper
// Apresenta Clipper na linha seguinte da tela
?? Clipper
// Apresenta Clipper na mesma linha da tela (linha atual)
? 2*30 / (1+5)
// Calcula a expresso e apresenta o resultado 10
? DATE()
// Apresenta a data atual do sistema
@ ... BOX
Sintaxe:
@ <lse,cse,lid,cid> BOX <bordas>
Finalidade:
O comando @ ... BOX desenha caixas ou molduras retangulares na tela. Podem ser
especificados o tamanho e a posio relativa da moldura na tela, alm de at nove diferentes
caracteres que podem ser utilizados para constru-la.
Utilizao:
O tamanho da caixa e sua posio so determinados por quatro coordenadas numricas que
localizam, atravs de nmeros correspondentes s linhas e colunas da tela, os cantos superior
esquerdo e inferior direito, sendo:

18

Clipper v.5.2

Canto superior esquerdo:


lse - linha superior esquerda (de 0 a 24)
cse - coluna superior esquerda (de 0 a 79)
Canto inferior direito:
lid - linha inferior direita (de 0 a 24)
cid - coluna inferior direita (de 0 a 79)
Para construir as bordas devem ser especificados oito caracteres padro ASCII, a serem
desenhados, respectivamente, em cada um dos quatro cantos e cada um dos quatro lados da
caixa. Um nono caractere pode ser especificado para preencher o interior da caixa. Os
caracteres devem ser especificados na seguinte ordem:
1.
2.
3.
4.
5.
6.
7.
8.
9.

canto superior esquerdo;


lado superior horizontal;
canto superior direito;
lado vertical direito;
canto inferior direito;
lado inferior horizontal;
canto inferior esquerdo;
lado vertical esquerdo;
caractere para preenchimento.

Exemplos:
Para desenhar uma caixa que emoldure toda a tela, com linhas duplas, pode-se utilizar o
seguinte conjunto de caracteres:
borda1:=chr(201)+chr(205)+chr(187)+chr(186)+chr(188)+chr(205)+
; chr(200)+chr(186)
@ 01,00,24,79 BOX borda1
Para desenhar a mesma caixa, s que preenchendo seu contedo, utilize:
borda2:=chr(201)+chr(205)+chr(187)+chr(186)+chr(188)+chr(205)+
; chr(200)+chr(186)+chr(176)
@ 01,00,24,79 BOX borda2
@ ... TO
Sintaxe:
@ <lse,cse> TO <lid,cid> [DOUBLE]
Finalidade:
O comando @ ... TO desenha na tela uma moldura com linhas grficas simples ou duplas.

Clipper v.5.2

19

Exemplos:
O exemplo a seguir limpa uma rea da tela e nela desenha uma moldura de linhas grficas
duplas:
@ 03,24 CLEAR TO 05,56
@ 03,24 TO 05,56 DOUBLE
O prximo exemplo limpa uma rea da tela e nela desenha uma moldura de linhas grficas
simples:
@ 08,24 CLEAR TO 12,56
@ 08,24 TO 12,56
CLS
Sintaxe:
CLS
Finalidade:
O comando CLS limpa toda a tela, reposicionando o cursor no canto superior esquerdo da tela
(coordenadas 00,00). Este comando equivalente a @ 00,00 CLEAR.
Exemplo:
PROCEDURE TESTE
LOCAL I
CLS
FOR I:= 1 TO 23
@ I,00 SAY REPLICATE(*,80)
NEXT
@ 12,20 SAY Tela com asteriscos, <Enter> para continuar
INKEY(0)
CLS
@ 12,30 SAY A Tela agora est limpa
RETURN
@ ... CLEAR
Sintaxe:
@ <lse,cse> [ CLEAR [TO <lid,cid>] ]
Finalidade:
O comando @ ... CLEAR limpa ou apaga uma regio da tela.

20

Clipper v.5.2

Utilizao:
O tamanho da regio a ser apagada e sua posio so determinados por quatro coordenadas
numricas que localizam, atravs de nmeros correspondentes s linhas e colunas da tela, os
cantos superior esquerdo e inferior direito, sendo:
Canto superior esquerdo:
lse - linha superior esquerda (de 0 a 24)
cse - coluna superior esquerda (de 0 a 79)
Canto inferior direito:
lid - linha inferior direita (de 0 a 24)
cid - coluna inferior direita (de 0 a 79)
Exemplos:
@ 10,20 CLEAR TO 20,40
// Limpa a tela da linha 10 coluna 20 at linha 20 coluna 40
@ 06,00 CLEAR
// Limpa da linha 06 para baixo
@ 23,00
// Limpa apenas a linha 23 comeando pela coluna 00
@ ... SAY ... GET
Sintaxe:
@ <linha,coluna>

SAY <expresso>
[PICTURE <funo/mscara de formatao> ]

ou
@ <linha,coluna> [SAY <expresso> ]
GET <varivel>
[PICUTRE <funo/mscara de formatao> ]
[WHEN <pr-condio>]
[VALID <ps-condio>]
Finalidade:
O comando @ ... SAY apenas apresenta a <expresso> especificada, numa determinada
posio da tela ou impressora, de acordo com as coordenadas <linha,coluna> especificadas. Se
a clusula PICTURE for especificada, a <expresso> ser apresentada de acordo com as
regras de formatao definidas pela <funo/mscara de formatao>.
O comando @ ... SAY ... GET permite apresentao e edio de dados numa determinada
posio da tela, de acordo com as coordenadas <linha,coluna> especificadas. Se a clusula
SAY for utilizada, a coordenada <linha,coluna> especifica a posio da tela na qual ser
apresentada a <expresso>, sendo que a varivel a ser editada no GET ser apresentada
imediatamente direita de <expresso>. Se a clusula SAY no for utilizada, a coordenada

Clipper v.5.2

21

<linha,coluna> especifica diretamente a posio da tela na qual ser apresentada e editada a


<varivel> do GET. Um comando READ deve estar sempre associado a comandos @ ... GET,
uma vez que ele que realiza a edio de todas as variveis dos GETs nas coordenadas
especificadas.
Validao de Dados:
Automtica:
Durante a execuo de um comando READ, algumas validaes de dados so
automaticamente realizadas para dados do tipo numrico, data ou lgico. Por exemplo, no
ser permitida a digitao de letras se o dado for numrico e no ser permitida a digitao de
datas invlidas como 30/02/97.
Pr-Validao:
A clusula WHEN especifica uma condio lgica que deve ser satisfeita antes que o cursor se
posicione em um GET. Durante a execuo do comando READ, a condio de pr-validao
avaliada sempre que o usurio tentar mover o cursor para um determinado GET. Se o
resultado for verdadeiro (.T.), o cursor ser nele posicionado e o dado ser editado. Se o
resultado for falso (.F.) o GET ser pulado e o dado no poder ser editado.
Ps-Validao:
A clusula VALID especifica uma condio lgica que deve ser satisfeita para que o cursor
possa sair do GET que est sendo editado. Durante a execuo do comando READ, a pscondio avaliada sempre que o usurio tentar sair do GET que est sendo editado. Se o
resultado for verdadeiro, o cursor poder sair do GET. Se o resultado for falso, o cursor
permanecer no GET at que um valor vlido seja digitado ou a tecla <Esc> seja pressionada
anulando toda edio e encerrando a execuo do comando READ.
Formatao de Dados:
<mscaras de formatao>
Especifica as regras de formatao e edio de dados, posio por posio. Consiste, portanto
numa srie de caracteres-padro, que so usados como smbolos, para a definio do formato
dos dados a serem apresentados e editados. Cada posio da mscara de formatao
corresponde a uma posio do dado a ser apresentado ou editado. Se outros caracteres, que
no os padro, forem utilizados dentro de uma mscara de formatao, sero apresentados na
posio especificada, sobrepondo os caracteres existentes naquela posio do dado. Contudo
se a funo @R for utilizada, estes caracteres sero inseridos entre os caracteres que esto
sendo editados, apenas para efeito de apresentao, nas posies especificadas, sendo
removidos automaticamente do contedo do dado quando a edio for completada. A tabela a
seguir relaciona os smbolos disponveis para mscaras de formatao.

Smbolo

Formatao

Aceita apenas dgitos numricos para qualquer tipo de dado,


incluindo os sinais positivo (+) e negativo (-).

Aceita apenas caracteres alfabticos e dgitos numricos.

22

Clipper v.5.2

Smbolo

Formatao

Aceita dgitos numricos, sinais e espaos em branco, para qualquer


tipo de dado.

Aceita apenas caracteres alfabticos.

Aceita qualquer caractere.

Aceita apenas dados lgicos como (.T.) ou (.F.)

Aceita apenas dados lgicos como (.Y.) ou (.N.)

Converte letras minsculas em maisculas.

Mostra cifres esquerda de valores de dados numricos.

Mostra asteriscos esquerda de valores de dados numricos.

Determina a posio do ponto decimal para valores de dados


numricos.

Determina a separao de milhares para valores de dados


numricos.

<funo de formatao>
Especifica regras de formatao e edio de dados que ser vlida para todas as posies do
dado que estiver sendo editado. Uma funo de formatao formada pelo smbolo @,
seguido por um ou mais caracteres que possuem significados especiais, no podendo haver
espaos entre estes caracteres. A <funo de formatao> deve sempre preceder a <mscara
de formatao> caso sejam usadas em conjunto, e dever haver um espao em branco entre a
funo e a mscara. A tabela a seguir relaciona as funes disponveis para a formatao de
dados.

Smbolo

Tipo de Dado

Formatao

Caractere

Aceita apenas caracteres alfabticos.

Numrico

Apresenta os nmeros alinhados esquerda.

Numrico

Apresenta o sinal CR (crdito), aps um nmero positivo.

Numrico

Apresenta dados numricos no formato europeu, ou seja,


com a vrgula separando as casas decimais e pontos
separando os milhares (999.999,99).

Todos

Elimina o valor existente na varivel se a primeira tecla


digitada no for uma tecla de controle de edio.

Clipper v.5.2

23

Smbolo

Tipo de Dado

Formatao

Caractere

Permite a insero, apenas para efeito de apresentao, de


outros caracteres nas mscaras de formatao.

S<n>

Caractere

Permite o deslocamento horizontal da edio, onde <n>


um nmero inteiro, menor que o comprimento do dado a
ser editado, que especifica o comprimento da rea de
edio que estar visvel ao usurio.

Numrico

Apresenta o sinal DB (dbito) aps um nmero negativo.

Numrico

Apresenta o valor numrico zero como branco.

Numrico

Apresenta nmeros negativos entre parnteses, inclusive


os brancos esquerda

Numrico

Apresenta nmeros negativos entre parnteses, excluindo


os brancos esquerda.

Caractere

Converte as letras minsculas em maisculas, aceitando


qualquer caractere.

Obs.: As funes A, K e S no so disponveis para o comando @ ... SAY.

Exemplos:
1cpf:=Space(11)
@ 12,05 SAY CPF: GET cpf PICTURE @R 999.999.999-99
READ
2nome:=Space(40)
@ 12,05 SAY Nome: GET nome PICTURE @!
READ
3nome:=Space(40)
@ 12,05 SAY Nome: GET nome PICTURE @!S20
READ
4data:=DATE()
@ 12,05 SAY Digite a Data: GET data PICTURE @K
READ

24

Clipper v.5.2

5nota:=0.0
@ 12,05 SAY Nota do Aluno: GET nota PICTURE @E 99.9 ;
VALID (nota>=0 .and. nota<=10)
READ

6sexo:=Space(01)
@ 12,05 SAY Sexo: GET sexo PICTURE @A! VALID (sexo$FM)
READ
7nome:=Space(40)
ecv:=Space(01)
coj:=Space(40)
@ 10,05 SAY Nome...: GET nome PICTURE @! VALID !
EMPTY(nome)
@
12,05
SAY
E.Civil:
GET
ecv
PICTURE
@A!
VALID
(ecv$SCVO)
@ 14,05 SAY Conjuge: GET coj PICTURE @! WHEN (ecv=C)
READ
READ
Sintaxe:
READ
Finalidade:
Como foi dito anteriormente, o comando @ ... GET necessita de um comando READ para que
os dados editados possam ser lidos e alterados. Um comando READ aceita at 128 GETs.
Quando se preenche totalmente o campo no qual o cursor estiver posicionado,
automaticamente o cursor se deslocar para o prximo campo de edio, isto pode ser evitado
atravs do comando SET CONFIRM ON que obrigar o usurio a teclar <Enter> mesmo que
ele preencha o campo na sua totalidade.

3.2. MENU DE BARRAS


@ ... PROMPT
Sintaxe:
@ <linha,coluna> PROMPT <opo do menu> [MESSAGE <mensagem>]
Finalidade:
O comando @ ... PROMPT apresenta um menu de opes na tela. Cada opo apontada por
um cursor luminoso, sendo que o usurio selecionar a opo atravs das setas de direo e
em seguida pressionar a tecla <Enter>, ou ainda atravs da letra inicial da opo. Uma

Clipper v.5.2

25

mensagem explicativa, sobre a funo de cada opo, pode ser apresentada para facilitar a
escolha do usurio.
MENU TO
Sintaxe:
MENU TO <varivel>
Finalidade:
O comando MENU TO executa a seleo de uma opo, a partir de um menu de barras criado
por um conjunto de comandos @ ... PROMPT. O comando MENU TO deve ser sempre
utilizado em conjunto com os comandos @ ... PROMPT. Ele o mecanismo de seleo do
sistema de menu de barras. Antes de executar o comando MENU TO, o menu e as respectivas
mensagens associadas s opes, devem ser construdos, atravs do comando @ ...
PROMPT ... MESSAGE. O nmero da opo escolhida ser armazenada na <varivel>
definida para o comando MENU TO. Pressionando-se a tecla <Esc> o comando MENU TO
finalizado sem ter sido feita uma escolha, neste caso ser atribudo o valor zero para
<varivel>.
SET MESSAGE
Sintaxe:
SET MESSAGE TO <nmero da linha> [CENTER]
Finalidade:
O comando SET MESSAGE define a linha da tela na qual sero apresentadas as mensagens
definidas nos comandos @ ... PROMPT ... MESSAGE.
SET WRAP
Sintaxe:
SET WRAP on / OFF
Finalidade:
Permite (on) ou no (off) a barra seletora de um menu de opes se mover, diretamente da
ltima opo do menu, para a primeira e vice-versa.

Ser apresentado nas pginas a seguir um exemplo de utilizao de todos os


comandos de menu de barras

26

Clipper v.5.2

Exemplo de utilizao dos comandos de Menu de Barras


/***
* ------------------------------------------------------------------------* Arquivo: VENDAS.PRG
* Autor : Antonio G. Chiachio Jr.
* Data
: Maro/98
* Desc. : Arquivo que contem a rotina do Menu Principal do Sistema
* ------------------------------------------------------------------------*/
/***
* ------------------------------------------------------------------------* Procedimento: MENU()
* Finalidade : Procedimento que gerencia o Menu Principal do Sistema
* ------------------------------------------------------------------------*/
Procedure Menu
Local nOP, nOP_SAI
Set
Set
Set
Set
Set

Message to 24 Center
Date Brit
Wrap On
Scor Off
Cursor Off

//
//
//
//
//

Mensagens na linha 24, centro da tela


Data no formato DD/MM/AA
Ativa Rolagem da Barra do Menu
Desliga apresentacao de mensagens pelo READ
Desliga a apresentao do cursor

Tela()
nOP:=1
Do While .T.
Setcolor("W+/B,W+/BG")
@ 04,05 PROMPT " CADASTRO "
@ 04,23 PROMPT " OPERACAO "
@ 04,40 PROMPT " RELATORIOS "
@ 04,60 PROMPT " UTILITARIOS "
Menu to nOP
Setcolor("")
@ 24,00

MESSAGE
MESSAGE
MESSAGE
MESSAGE

"Cadastros Gerais"
"Registro do Movimento"
"Relatorios do Sistema"
"Ferramentas do Sistema"

// Apaga a linha de Mensagem

Do Case
Case nOP=1
Menu_Cad()
Case nOP=2
//Menu_Ope()
Case nOP=3
//Menu_Rel()
Case nOP=4
//Menu_Utl()
OtherWise
nOP_SAI:=2
@ 24,00
SetColor("W/N,W+/R")
@ 24,00 SAY "Deseja voltar ao MS-DOS ?"
@ 24,26 Prompt "Sim"
@ 24,30 Say "/"
@ 24,32 Prompt "Nao"
Menu to nOP_SAI

Clipper v.5.2

27

SetColor("")
@ 24,00
If nOP_SAI=1
EXIT
Endif
EndCase
EndDo
CLS
Return
/***
* ------------------------------------------------------------------------* Procedimento: TELA()
* Finalidade : Montar a tela principal do sistema
* ------------------------------------------------------------------------*/
Procedure Tela
Local lin:=0,col:=0
Public Moldura:=chr(176)+chr(176)+chr(176)+chr(176)+chr(176)+chr(176)+;
chr(176)+chr(176)+chr(176)
CLS
For lin:= 0 to 24
@ lin,0 Say "."
Inkey(0.1)
Next
For col:= 2 to 78 Step 2
@ 24,col Say "."
Inkey(0.1)
Next
SetColor("BG+/N")
@ 00,00 SAY PADC("Controle de Movimento",80)
@ 00,00 SAY "D.PEDRO II"
@ 00,72 SAY DATE()
// Mostra a Data do Sistema Operacional
SetColor("GR+/N")
// Frente: Amarelo / Fundo: Neutro
@ 01,00 TO 01,79
@ 23,00 TO 23,79
Setcolor("W+/N")
// Frente: Branco Int. / Fundo: Neutro
@ 02,00,22,79 Box Moldura
Setcolor("")
// Volta ao padro
@ 24,00
@ 04,03,06,78 Box Moldura
// Simula a sombra da janela
Setcolor("W/B")
// Frente: Branco / Fundo: Azul
@ 03,01 TO 05,76
@ 04,02 CLEAR TO 04,75
// Limpa o interior da janela
Setcolor("")
// Volta ao padro
Return
/***
* ------------------------------------------------------------------------* Procedimento: Menu_Cad()
* Finalidade : Montar o menu Cadastro
* ------------------------------------------------------------------------*/
Procedure Menu_Cad
Local nOP, Tela:=SaveScreen(00,00,24,79)

28

Clipper v.5.2

@ 07,06,10,17 BOX Moldura


SetColor("W/B")
@ 06,04 TO 09,15
@ 07,05 CLEAR TO 08,14
nOP:=1
Do While .T.
Setcolor("W+/B,W+/BG")
@ 07,05 PROMPT " Clientes "
@ 08,05 PROMPT " Produtos "
Menu to nOP
Setcolor("")
Do Case
Case nOP=1
//Cad_Cli()
Case nOP=2
//Cad_Pro()
OtherWise
RestScreen(00,00,24,79,Tela)
Exit
EndCase
EndDo
Return

Clipper v.5.2

29

3.3. ESTRUTURAS DE CONTROLE DO FLUXO DE PROGRAMAO


IF ... ENDIF
Sintaxe:
IF <condio>
.
<instrues>
.
ELSE
.
<instrues>
.
ENDIF
Finalidade:
O comando IF...ENDIF um comando de programao estruturada que permite executar
condicionalmente um bloco de instrues, tambm conhecido como desvio condicional.
DO WHILE
Sintaxe:
DO WHILE <condio>
.
.
<instrues>
.
.
ENDDO
Finalidade:
O DO WHILE um comando de controle de programao estruturada que permite que um
bloco de instrues contido entre o DO WHILE e o associado ENDDO seja executado
repetidamente enquanto uma determinada condio permanecer verdadeira. Normalmente este
tipo de estrutura de programao chamado de loop ou repetio.
EXIT
Sintaxe:
EXIT
Finalidade:
Utiliza-se o comando EXIT para forar a finalizao de uma estrutura de repetio DO
WHILE, mesmo que a condio de repetio do DO WHILE ainda permanea verdadeira. O
fluxo de execuo do programa transferido para a primeira linha de instrues imediatamente
seguinte ao ENDDO. Observe o esquema abaixo:

30

Clipper v.5.2

DO WHILE <condio>
.
<instrues>
.
IF <condio especfica>
EXIT
ENDIF
.
<instrues>
.
ENDDO
LOOP
Sintaxe:
LOOP
Finalidade:
O comando LOOP deve ser utilizado sempre dentro de um bloco de instrues de um
comando DO WHILE ... ENDDO. Ao ser encontrado, ele causa o retorno imediato do fluxo
do programa para o incio do DO WHILE, sem a necessidade de ser atingido o ENDDO. Os
comandos que estiverem entre o LOOP e o ENDDO no sero executados e a condio de
controle ser novamente avaliada. Observe o esquema abaixo:
DO WHILE <condio>
.
<instrues>
.
IF <condio especfica>
LOOP
ENDIF
.
<instrues>
.
ENDDO
FOR ... NEXT
Sintaxe:
FOR <var.> := <exp. inicial> TO <exp. final> STEP <incremento>
.
.
<instrues>
.
.
NEXT

Clipper v.5.2

31

Finalidade:
O comando FOR ... NEXT permite a repetio de um bloco de instrues, localizado entre o
FOR e o NEXT, por um determinado nmero de vezes, avaliado por um contador
automaticamente incrementado atravs de uma expresso numrica. Cada vez que o bloco de
instrues executado o contador incrementado em uma unidade, ou de acordo com o
incremento positivo especificado pele clusula STEP. Quando o contador atinge o limite
mximo de repeties, o ciclo ou loop finalizado e o fluxo de execuo passa para a
primeira linha de instrues imediatamente aps ao NEXT.
Exemplos:
FOR i := 15 TO 0 STEP -3
? i
NEXT
Resulta: 15, 12, 9, 6, 3, 0
numele:= LEN(vetor)
FOR i := 1 TO numele
? vetor[i]
NEXT
DO CASE
Sintaxe:
DO CASE
CASE <condio>
.
<instrues>
.
[CASE <condio>]
.
<instrues>
.
[OTHERWISE]
.
<instrues>
.
ENDCASE
Finalidade:
O comando DO CASE ... ENDCASE um comando de programao estruturada que
seleciona apenas um caminho entre um conjunto de caminhos alternativos para o curso do
fluxo de execuo. O caminho selecionado o primeiro para o qual uma condio especificada
for avaliada como verdadeira. Este tipo de estrutura tambm conhecido como desvio
mltiplo.

32

Clipper v.5.2

4. ARQUIVOS
O CLIPPER pode ser classificado como um Sistema de Gerenciamento de Banco de
Dados do tipo Relacional.
A organizao relacional caracterizada por manter uma estrutura de dados organizados
em uma forma de tabelas ou relaes, do ponto de vista do usurio.
As linhas dessas tabelas so chamadas de registros, e so como fichas em um arquivo
convencional. Todas as informaes de uma determinada pessoa/pea esto dispostas em uma
nica linha (registro).
Cada coluna destas linhas, ou seja, cada identificador, recebe o nome de campo. Campos
so as subdivises de cada registro do arquivo.

REGISTROS

ARQUIVO

CAMPOS

Campo 1
Nome

Campo 2
Endereo

Campo 3
Municpio

Reg. 1

Jos da Silva

R. 1, n. 120

Andradina

Reg. 2

Manoel Caetano R. Jos X, 100

:
:

:
:

Reg. n

Carlos Chagas

:
:
Av. Dois, 1

Americana
:
:
Belm

Um arquivo de dados do Clipper , portanto, um conjunto de registros do mesmo tipo e


tamanho. Cada registro , por sua vez, formado por um conjunto de campos, onde esto
armazenados os dados que constituem a informao sobre um determinado objeto (entidade ou
evento).
Os arquivos de dados do Clipper recebem, normalmente, a extenso .DBF (Data Base
File). Consistem de um cabealho, que define sua estrutura, em termos de campos e suas
caractersticas; registros de tamanho fixo, que contm os dados armazenados nos campos; e

Clipper v.5.2

33

apontadores para campos do tipo memo. Cada registro contm ainda um byte adicional para
gravao de seu estado: marcado para eliminao (deletado) ou no.
Os registros so numerados seqencialmente, de acordo com a ordem cronolgica de sua
incluso no arquivo de dados. Um arquivo pode conter at 1000 campos, sendo que os nomes
dos campos podem ser formados por letras, algarismos e pelo smbolo sublinhado (_).
Entretanto, a primeira posio do nome de um campo deve ser obrigatoriamente uma letra. Os
nomes dos campos podem possuir at 10 caracteres, mas no pode haver nenhum espao em
branco entre eles.
A estrutura de um arquivo de dados .DBF consiste de uma ou mais definies de
campos, descrevendo o nome, o comprimento e o tipo de dado de cada campo ou coluna da
tabela. Esta estrutura pode ser criada travs do utilitrio DBU.EXE, que acompanha o Clipper.

4.1. CARACTERSTICAS DOS ARQUIVOS DE DADOS


Nmero Mximo de Registros

: 1 bilho

Tamanho dos Registros

: Tamanho ilimitado

Nmero de Campos por Reg.

: 1.000 por registro

Arquivos Abertos simultneamente : at 250 (DOS 3.3 ou superior)


reas de Trabalho

: at 250 (DOS 3.3 ou superior)

ndices Ativos

: at 15 por rea de trabalho

4.2. ESTRUTURA DOS ARQUIVOS DE DADOS


Os campos de um determinado arquivo podero conter os seguintes tipos de dados em
cada registro do arquivo:
Caracteres: ( C )

Dados que possuem caracteres numricos (0-9),


alfabticos (A-Z ou a-z) ou especiais ( ! @ # $).
Comprimento mximo de 64 Kbytes (65.536
bytes).

Numricos: ( N )

Dados que possuem caracteres numricos (0-9) e


sinais ( + ).
Comprimento mximo de 32 posies (30
dgitos, o sinal + ou - e o ponto decimal).

Data: ( D )

Dados armazenados no formato data (99/99/99).

34

Clipper v.5.2

Um campo data possuir sempre 8 posies e o


Clipper no permitir o armazenamento de datas
invlidas. O formato padro de datas no Clipper
o americano, ou seja, ms/dia/ano. Para utilizar
o

formato

de

datas

adotado

no

Brasil,

dia/ms/ano, deve ser utilizado o comando SET


DATE BRITISH.
Lgico: ( L )

Dados que representam apenas dois estados possveis, refletindo as condies de sim ou no, ou
verdadeiro ou falso. Seu contedo poder ser
somente .Y. (yes/sim), .N. (no/no), .T. (true ou
verdadeiro), .F. (false ou falso), sendo somente
gravado os smbolos .T. ou .F.. Um campo lgico
tem apenas uma posio.

Memo: ( M )

Textos longos como, por exemplo, resumos,


observaes ou comentrios para cada registro
do arquivo. Tamanho mximo por registro de 64
Kb.