Documentos de Académico
Documentos de Profesional
Documentos de Cultura
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:
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
Clipper v.5.2
Clipper v.5.2
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.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.
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
Campos de Arquivo
Caractere
Caractere
Numrico
Numrico
Data
Data
Lgico
Lgico
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
+
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
//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
2? Clipper = Cli
? Clipper <> Cliper
// Resulta (.T.)
// Resulta (.T.)
14
Clipper v.5.2
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
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
Operador
+=
-=
*=
/=
%=
^=
Utilizao
a += b
a -= b
a *= b
a /= b
a %= b
a ^= b
Operao
a:=a+b
a:=a-b
a:=a*b
a:=a/b
a:=a%b
a:=a^b
16
Clipper v.5.2
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
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
Smbolo
Formatao
22
Clipper v.5.2
Smbolo
Formatao
<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
Numrico
Numrico
Numrico
Todos
Clipper v.5.2
23
Smbolo
Tipo de Dado
Formatao
Caractere
S<n>
Caractere
Numrico
Numrico
Numrico
Numrico
Caractere
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.
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.
26
Clipper v.5.2
Message to 24 Center
Date Brit
Wrap On
Scor Off
Cursor Off
//
//
//
//
//
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"
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
Clipper v.5.2
29
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
:
:
:
:
Reg. n
Carlos Chagas
:
:
Av. Dois, 1
Americana
:
:
Belm
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.
: 1 bilho
: Tamanho ilimitado
ndices Ativos
Numricos: ( N )
Data: ( D )
34
Clipper v.5.2
formato
de
datas
adotado
no
Brasil,
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 )