clipper

48
Clipper v.5.2 1. INTRODUÇÃO 1.1. O QUE É O CLIPPER Uma das aplicações mais freqüentes e úteis para os computadores é a organização de coleções de dados (ou arquivos), com a finalidade de se elaborar consultas, efetuar cálculos, gerar listagens e relatórios, análises estatísticas, etc. Muitas aplicações em processamento de dados têm essas características em comum, sendo por isso chamadas de aplicações 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 informação, cujo objetivo principal é gerar informações para a tomada de decisões. O Clipper se originou de um dos softwares de maior sucesso para microcomputadores, o dBASE III. Com ele torna-se possível o desenvolvimento de sofisticadas aplicações destinadas ao gerenciamento de bancos de dados de pequeno e médio porte, utilizando microcompu-tadores da linha IBM-PC, baseado no sistema operacional MS-DOS. O Clipper é uma lingua-gem bastante poderosa, flexível e completa, permitindo a produção de verdadeiros sistemas de informação, sendo por isso um dos softwares para microcomputadores de maior sucesso dentro de sua categoria. Utilizando o Clipper é possível desenvolver sistemas aplicativos capazes de: Criar, organizar e relacionar conjuntos de arquivos que formam um banco de dados; 1

Upload: geison-amboni-luiz

Post on 05-Sep-2015

15 views

Category:

Documents


3 download

DESCRIPTION

manual do clipper

TRANSCRIPT

34

Clipper v.5.2

1

Clipper v.5.2

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 microcompu-tadores da linha IBM-PC, baseado no sistema operacional MS-DOS. O Clipper uma lingua-gem 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.

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 cdigo-fonte.

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 alte-raes e implementaes que sejam necessrias no programa, exigindo novas compilaes. So-mente 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 bibliote-cas 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 diretamen-te 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 cdigo-objeto, o linkeditor, ou as bibliotecas-padro, mas apenas o mdulo executvel e os arquivos de dados manipulados por ele.

Estrutura geral de um compilador/linkeditor

2. A ESTRUTURA DA LINGUAGEM CLIPPER

2.1. UM PROGRAMA TPICOUm 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 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:

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 , que causa uma mudana de linha, ser ignorado pelo compilador.

2.3. DEFINIO DE PROCEDIMENTOSProcedimentos 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 ()

.

.

.

.

.

.

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.

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. VARIVEISDurante 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 VariveisO Clipper permite a declarao e a criao de quatro classes de variveis, que se diferen-ciam 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:

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 PblicasVariveis 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:

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 MemriaCampos de ArquivoCaractereCaractere

NumricoNumrico

DataData

LgicoLgico

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)

CaractereUm 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 [].

NumricoUm 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 ).

DataUm 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().

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

NILO 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 CdigoPor se tratarem de tipos de dado especiais e complexos no sero abordados nesta apostila.2.6. OPERADORESO 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

OperadorOperao 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:

1-

SET DATE BRITSH

? DATE()

// Resulta: 10/05/97

? DATE() + 1

// Resulta: 11/05/97

? DATE() 1

// Resulta: 09/05/97

? 1 + DATE()

// Resulta em erro

2-

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

Operadores Matemticos

OperadorOperao

+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//Resulta 9

? 4 * (2 + 1)//Resulta 12Operadores 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:

OperadorOperao Relacional

Maior que

=Igual a

= =Duplo igual a

#Diferente de ou no igual

!=

=Maior ou igual a

$Comparao de Subcadeia

Exemplos:

1-

a:=100

b:=200

? a > b// Resulta falso (.F.)

? b > a// Resulta verdadeiro (.T.)

? a b// Resulta verdadeiro (.T.)

2-

? Clipper = Cli

// Resulta (.T.)

? Clipper Cliper// Resulta (.T.)

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:= Clipper

b:= Aplicativos

c:= Sistema para Gerao de Aplicativos

? a $ b

// Resulta falso (.F.)

? a $ c

// Resulta falso (.F.)

? b $ c

// Resulta verdadeiro (.T.)

? c $ 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

// Resulta verdadeiro (.T.)

? b = = a

// 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:

OperadorOperao Lgica

.AND.Conector lgico E

.OR.Conector lgico OU

.NOT. ou !Conector lgico NO

Exemplo:

a:= 100

b:= 200

c:= 300

? b > a .AND. c > b

// Resulta .T.

? b > a .AND. b = c

// Resulta .F.

? b > a .OR. b = c

// 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:

1-

x:= .T.

? .NOT. x

// Resulta .F.

? ! x

// Resulta .F.

2-

a:=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:

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

OperadorUtilizaoOperao

+=a += ba:=a+b

-=a -= ba:=a-b

*=a *= ba:=a*b

/=a /= ba:=a/b

%=a %= ba:=a%b

^=a ^= ba:=a^b

Operadores de Incremento e Decremento

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:

OperadorUtilizaoOperao

+ + (incremento)a + +

+ + aa : = ( a +1 )

(decremento)

a

aa : = ( 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-

3-

num1:=0

num5:=2

num2:= ++num1

? num5++ * num5 //resulta 6

? num1//resulta 1? num5 //resulta 3

? num2//resulta 1

2-

4-

num2:=1

num6:=2

num4:=num2--

? --num6 * num6 //resulta 1

? num2//resulta 0? num6 //resulta 1

? num4//resulta 1

3. COMANDOS DO CLIPPER

3.1. COMANDOS DE TELAS E PARA SADA E ENTRADA DE DADOS

? / ??

Sintaxe:

?

ou

??

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:

@ BOX

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:

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. canto superior esquerdo;

2. lado superior horizontal;

3. canto superior direito;

4. lado vertical direito;

5. canto inferior direito;

6. lado inferior horizontal;

7. canto inferior esquerdo;

8. lado vertical esquerdo;

9. 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 borda1Para 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:

@ TO [DOUBLE]

Finalidade:

O comando @ ... TO desenha na tela uma moldura com linhas grficas simples ou duplas.

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 DOUBLEO 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,56CLS

Sintaxe:

CLSFinalidade:

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, para continuar

INKEY(0)

CLS

@ 12,30 SAY A Tela agora est limpa

RETURN@ ... CLEAR

Sintaxe:

@ [ CLEAR [TO ] ]Finalidade:

O comando @ ... CLEAR limpa ou apaga uma regio da tela.

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:

@ SAY

[PICTURE ] ou

@ [SAY ]

GET

[PICUTRE ]

[WHEN ]

[VALID ]Finalidade:

O comando @ ... SAY apenas apresenta a especificada, numa determinada posio da tela ou impressora, de acordo com as coordenadas especificadas. Se a clusula PICTURE for especificada, a ser apresentada de acordo com as regras de formatao definidas pela .

O comando @ ... SAY ... GET permite apresentao e edio de dados numa determinada posio da tela, de acordo com as coordenadas especificadas. Se a clusula SAY for utilizada, a coordenada especifica a posio da tela na qual ser apresentada a , sendo que a varivel a ser editada no GET ser apresentada imediatamente direita de . Se a clusula SAY no for utilizada, a coordenada especifica diretamente a posio da tela na qual ser apresentada e editada a 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 ps-condio 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 seja pressionada anulando toda edio e encerrando a execuo do comando READ.

Formatao de Dados:

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.

SmboloFormatao

9Aceita apenas dgitos numricos para qualquer tipo de dado, incluindo os sinais positivo (+) e negativo (-).

NAceita apenas caracteres alfabticos e dgitos numricos.

SmboloFormatao

#Aceita dgitos numricos, sinais e espaos em branco, para qualquer tipo de dado.

AAceita apenas caracteres alfabticos.

XAceita qualquer caractere.

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

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

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 deve sempre preceder a 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.

SmboloTipo de DadoFormatao

ACaractereAceita apenas caracteres alfabticos.

BNumricoApresenta os nmeros alinhados esquerda.

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

ENumricoApresenta dados numricos no formato europeu, ou seja, com a vrgula separando as casas decimais e pontos separando os milhares (999.999,99).

KTodosElimina o valor existente na varivel se a primeira tecla digitada no for uma tecla de controle de edio.

SmboloTipo de DadoFormatao

RCaracterePermite a insero, apenas para efeito de apresentao, de outros caracteres nas mscaras de formatao.

SCaracterePermite o deslocamento horizontal da edio, onde 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.

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

ZNumricoApresenta o valor numrico zero como branco.

(NumricoApresenta nmeros negativos entre parnteses, inclusive os brancos esquerda

)NumricoApresenta nmeros negativos entre parnteses, excluindo os brancos esquerda.

!CaractereConverte as letras minsculas em maisculas, aceitando qualquer caractere.

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

Exemplos:

1-

cpf:=Space(11)

@ 12,05 SAY CPF: GET cpf PICTURE @R 999.999.999-99

READ

2-

nome:=Space(40)

@ 12,05 SAY Nome: GET nome PICTURE @!

READ

3-

nome:=Space(40)

@ 12,05 SAY Nome: GET nome PICTURE @!S20

READ

4-

data:=DATE()

@ 12,05 SAY Digite a Data: GET data PICTURE @K

READ

5-

nota:=0.0

@ 12,05 SAY Nota do Aluno: GET nota PICTURE @E 99.9 ;

VALID (nota>=0 .and. nota