Vous êtes sur la page 1sur 116

Introduo

Existem muitas opes no mundo altamente competitivo dos produtos de bancos de dados para PCs. Com o lanamento da verso 5.3, o primeiro upgrade do Clipper num espao de mais de trs anos, a Computer Associates aper eioou bastante o seu pacote de desenvolvimento de banco de dados em termos de desempen!o, capacidade e acilidade de uso. E, com a verso 5.3, mel!orou tanto a estabilidade "uanto a uncionalidade do Clipper. #as as perguntas "ue logo surgem so$ Por "ue se ala tanto no Clipper% & "ue ele a'%

O Que o Clipper?
Em lin!as gerais, o Clipper ( uma linguagem de programao de banco de dados completa, com todas as erramentas necess)rias para desenvolver aplicaes de banco de dados independentes. Como o Clipper originariamente baseou*se na s(rie d+A,E da As!ton*-ate, muitos programas do d+A,E so compat.veis com o Clipper, com poucas modi icaes. /oc pode pensar no Clipper como um supercon0unto da 1linguagem1 d+A,E. & Clipper ( to )cil "ue at( mesmo um programador inexperiente pode us)*lo para desenvolver aplicaes r)pidas e poderosas. 2uem estiver amiliari'ado com o d+A,E 333 estar) apto a criar aplicaes do Clipper em apenas um dia. &s programadores com experincia em outras linguagens o ac!aro incrivelmente atual 4em muitos aspectos ele se parece bastante com as atuais implementaes da linguagem C5 e o ambiente ideal para a criao r)pida de aplicaes de banco de dados. Caso precise de inter aces plane0adas cuidadosamente, icar) satis eito com o utilit)rio de criao de banco de dados 46+75 e com o depurador de c8digos* onte 4C965 do Clipper.

Compilando Programas do Clipper


& compilador do Clipper converte ar"uivos* onte 4.P:;5 "ue contm um n<mero "ual"uer de procedures e unes escritas pelo usu)rio em ar"uivos*ob0eto 4.&+=5. Esses <ltimos podem ento ser lin>ados com outros ar"uivos*ob0eto do Clipper para ormar um ar"uivo execut)vel 4.E?E5. &s ar"uivos* onte contendo c8digos a serem compilados pelo Clipper preciso de extenses .P:;. Alguns exemplos de nomes de ar"uivos so #E@7.P:; ou :EP&:-.P:;. Atribuir nomes aos ar"uivos* onte com extenses consistentes tornar) )cil encontr)*los no disco r.gido, e as erramentas do Clipper como o PE e o compilador ornecero automaticamente a extenso .P:; nos ar"uivos de entrada, evitando assim o problema de ter "ue digitar extenses cada ve' "ue se usar um desses programas.

Chamando o Compilador do Clipper


Para compilar um ar"uivo onte do Clipper com a extenso .P:;, basta indicar no prompt do 6&,.

CLIPPER <nome do arquivo>


& C93PPE:.E?E assumir) .P:;. Ento, para compilar o ar"uivo ,A#P9E.P:;, voc digitaria$

Clipper Sample

CLIPPER Apostila de Linguagem de Programao I


Criando Arquivos Executveis com o EXOSPACE

1999

Agora "ue 0) discutimos como compilar ar"uivos, apenas mais uma erramenta do Clipper ( necess)ria para criar aplicaes execut)veis independentes. Esta erramenta ( o lin>er do Clipper, E?&,PACEA, "ue ( um programa complexo, tanto pelo "ue a' "uando pelo modo como pode ser entender e usar o E?&,PACE de modo competente, mas de "ual"uer modo este0a preparado para alguns 0arges.

Chamando o EXOSPACE
& E?&,PACE ( iniciali'ado digitando*se seu nome no prompt do 6&,. @o modo 9in!a de Comandos, todas as in ormaes de "ue o E?&,PACE precisa para criar um ar"uivo execut)vel tamb(m so digitadas nesse prompt. &s <nicos parBmetros obrigat8rios na lin!a de comandos so o parBmetro C39E e a lista de ar"uivos*ob0eto a serem lin>ados. Portanto, o ormato deste comando ( o seguinte$ E?&,PACE C39E < lista de ar"uivos*ob0eto> onde <lista de arquivos-objetos ( a lista de ar"uivos*ob0eto a serem lin>ados, separados por v.rgulas. @o caso de ar"uivos listados sem extenses, o programa assume .&+=. A menos "ue um nome de ar"uivo de sa.da se0a especi icado o ar"uivo execut)vel 4.E?E5 criado pelo E?&,PACE usar) o nome do primeiro ar"uivo da <lista de arquivos-objeto . Al(m do parBmetro C39E, existem bem poucas opes de lin>. Anteriormente voc criou e compilou um ar"uivo denominado ,A#P9E.P:;. Agora, vamos tentar a'er um lin> deste ar"uivo. 6igite no prompt do 6&,$

E!"SPACE #ILE Sample


/oc ver) algumas lin!as na tela di'endo "ue o lin>er est) trabal!ando, e in ormando "ual"uer erro "ue o E?&,PACE possa encontrar durante o processo. ,e o processo ocorreu corretamente aparecer) a mensagem$

S$CCESS#$LL% LI&'E(
&bs$ -aman!o de uma aplicao simples do Clipper$ aproximadamente 5DD Ab & taman!o aparentemente excessivo desta aplicao deve*se ao espao extra re"uerido para os overlaEs dinBmicos, o gerenciamento de mem8ria virtual e as unes de biblioteca do Clipper. @o caso de aplicaes grandes, "uanto mais mem8ria 4 incluindo a estendida e expandida 5 estiver dispon.vel, mais rapidamente sero executadas.

Como o EXOSPACE encontra Arquivos da Biblioteca


As procedures e unes do Clipper esto contidas num con0unto de bibliotecas "ue oram carregadas no diret8rio FC93P53F93+ do disco r.gido durante a instalao. 2uando c!egar a !ora do lin>, o E?&,PACE tentar) encontrar essas bibliotecas para "ue possa a'er o lin> dos comandos e das unes da biblioteca necess)rios G sua aplicao. Ele sabe onde procurar as bibliotecas por causa do ,E- 93+HC$FC93P53F93+ 4ou e"uivalente da estrutura do seu diret8rio5 "ue voc incluiu no comando A7-&E?EC.+A-. ,e o E?&,PACE l!e pediu a locali'ao do diret8rio "ue cont(m os ar"uivos C93PPE:.93+, E?-E@6.93+ e -E:#3@A9.93+ en"uanto estava a'endo o lin> do ar"uivo ,A#P9E, ( por"ue voc deve ter omitido esta lin!a do A7-&E?EC.+A-. Para evitar uma espera

Colgio Catanduvas

Prof. Hlio Lemes Costa Jr.

CLIPPER Apostila de Linguagem de Programao I

1999

cansativa durante lin>s uturos, sugerimos "ue voc volte e inclua os comandos ,E- agora no A7-&E?EC.+A- 4 e reiniciali'e o computador 5.

Comandos do Clipper
Comandos de manipulao de variveis
CLEA !E!O "

9ibera todas vari)veis p<blicas e privadas

Sinta*e
C9EA: #E#&:I

(es+rio
C9EA: #E#&:I elimina as vari)veis p<blicas e privadas da tabela de vari)veis. Ele opera contrastando com :E9EA,E A99, o "ual no libera realmente as vari)veis p<blicas e privadas, mas coloca @39 em todas "ue ten!am por abrangncia a rotina corrente. C9EA: #E#&:I ( a <nica orma de excluir todas as vari)veis p<blicas da mem8ria corrente. /ari)veis locais e est)ticas no so a etadas por C9EA: #E#&:I.

#ECLA E$
Cria e iniciali'a vari)veis e vetores P:3/A-E

Sinta*e
6EC9A:E <identi icador> JJ$H <iniciali'ador>K, ... K

Argumentos
<identi icador> ( o nome da vari)vel ou vetor a ser criado P:3/A-E. ,e o <identi icador> ( seguido por colc!tes 4J K5, ele ( criado como um vetor. ,e o <identi icador> ( um vetor, a sintaxe para especi icar o n<mero de elementos para cada dimenso pode ser vetorJ<nElementos>, <nElementosL>,...K ou vetorJ<nElementos>KJ<nElementosL>K... & m)ximo de elementos por dimenso ( MDNO. <iniciali'ador> ( a atribuio opcional de um valor a nova vari)vel. 7m <iniciali'ador> para uma vari)vel P:3/A-E consiste do operador in*line 4$H5 seguido de "ual"uer expresso Clipper, incluindo um vetor. ,e nen!um <iniciali'ador> impl.cito or especi icado, a vari)vel ter) o valor de @39. Em caso de vetor, cada elemento ( @39. 7ma lista de vari)veis ou vetores pode ser criada e opcionalmente iniciali'ada com uma declarao 6EC9A:E se cada de inio or separada por uma v.rgula.

Colgio Catanduvas

Prof. Hlio Lemes Costa Jr.

CLIPPER Apostila de Linguagem de Programao I


(es+rio

1999

6EC9A:E ( uma declarao de compatibilidade "ue ( exatamente igual a P:3/A-E. ,eu uso no ( recomendado. P:3/A-E deve ser usado em seu lugar. /e0a P:3/A-E para maiores detal!es.

LOCAL
6eclara e iniciali'a vari)veis e vetores local

Sinta*e
9&CA9 <identi icador> JJ$H <iniciali'ador>K, ... K

Argumentos
<identi icador> ( o nome de uma vari)vel ou vetor a ser declarado 9&CA9. ,e o <identi icador> ( seguido de colc!tes 4J K5, ele ( criado como vetor. ,e o <identi icador> ( um vetor, a sintaxe para especi icar o n<mero de elementos para cada dimenso pode ser vetorJ<nElementos>, <nElementosL>,...K ou vetorJ<nElementos>KJ<nElementosL>K... & m)ximo de elementos por dimenso ( MDNO. & n<mero de dimenses ( limitado somente pela mem8ria dispon.vel. <iniciali'ador> ( a atribuio opcional de um valor para uma nova vari)vel local. 3denti icadores vetor, entretanto, no podem receber valores com um <iniciali'ador>. 7m <iniciali'ador> para uma vari)vel local consiste do operador in*line 4$H5 seguido de "ual"uer expresso v)lida em Clipper incluindo um vetor. ,e no or ornecido explicitamente um <iniciali'ador>, a vari)vel ter) o valor @39. @o caso de um vetor, cada um dos elementos ser) @39.

&ota
& operador macro 4P5 no pode ser usado numa declarao de vari)vel local.

(es+rio
9&CA9 ( uma declarao de uma ou mais vari)veis ou vetores para a rotina corrente e deve ocorrer antes de "ual"uer instruo execut)vel incluindo P:3/A-E, P7+93C, e PA:A#E-E:,. 6eclaraes de vari)veis locais ocultam todas as vari)veis private e as vari)veis public com o <iniciali'ador> ( a atribuio opcional de um valor para uma nova vari)vel local. 3denti icadores vetor, entretanto, no podem receber valores com um <iniciali'ador>. 7m <iniciali'ador> para uma vari)vel local consiste do operador in*line 4$H5 seguido de "ual"uer expresso v)lida em Clipper incluindo um vetor. ,e no or ornecido explicitamente um <iniciali'ador>, a vari)vel ter) o valor @39. @o caso de um vetor, cada um dos elementos ser) @39.

&ota
& operador macro 4P5 no pode ser usado numa declarao de vari)vel local.

(es+rio
9&CA9 ( uma declarao de uma ou mais vari)veis ou vetores para a rotina corrente e deve ocorrer antes de "ual"uer instruo execut)vel incluindo P:3/A-E, P7+93C, e PA:A#E-E:,. 6eclaraes de vari)veis locais ocultam todas as vari)veis private e as vari)veis public com o mesmo nome. 7ma

Colgio Catanduvas

Prof. Hlio Lemes Costa Jr.

CLIPPER Apostila de Linguagem de Programao I

1999

declarao 9&CA9, entretanto, "ue declare um nome de vari)vel "ue 0) este0a declarado causa um erro atal de compilador e no ser) gerado um ar"uivo 4.ob05. Este erro pode ocorrer como resultado de duas declaraes para a mesma vari)vel na mesma rotina, ou como resultado de declarar uma vari)vel "ue possua abrangncia para todo o ar"uivo 4.prg5. 6eclaraes incluem C3E96, #E#/A:, ,-A-3C. /ari)veis locais so vis.veis somente dentro da rotina corrente, e de orma di erente de vari)veis private, no so vis.veis para as rotinas invocadas a partir da rotina corrente. /ari)veis locais so automaticamente criadas cada ve' "ue a rotina onde elas estao ( executada. Elas continuam a existir e ret(m seu valor at( "ue a rotina devolva o controle para "uem a invocou.,e a rotina ( invocada recursivamente, cada c!amada ir) criar um novo con0unto de vari)veis locais. & valor inicial para vari)veis locais ou elementos de vetor no especi icamente iniciali'ados ( @39, se0a na lista de iniciali'ador ou por atribuio. A expresso iniciali'adora pode ser "ual"uer expresso v)lida Clipper, incluindo c!amadas de uno. @ote "ue uma declarao de vetor no pode ter um iniciali'ador. & n<mero m)ximo de vari)veis em um programa ( limitado apenas pela mem8ria dispon.vel. /etores, entretanto, "uando atribu.dos para uma vari)vel local so ainda limitados a MDNO elementos por dimenso.

&otas
3nspecionando vari)veis locais dentro do 6ebugger$ Para acessar nomes de vari)veis locais dentro do Clipper 6ebugger, voc primeiro deve compilar o programa com a opo Q+ para "ue a in ormao sobre locais se0a inclusa no ar"uivo ob0eto. ParBmetros locais$ 7ma lista de parBmetros locais pode ser declarada especi icando a lista entre parnteses seguindo <idCuno> desta orma$ C7@C-3&@ <idCuno>4<id9ista Param>5 6eclarar parBmetros locais supera a criao de parBmetros privados com a declarao PA:A#E-E:,. #acro expresses$ /ari)veis locais no podem ser re erenciadas dentro de macro vari)veis ou expresses. ,e uma vari)vel ( re erenciada dentro de uma macro vari)vel, uma vari)vel public ou private com o mesmo nome ser) re erenciada. ,e tal vari)vel no existir, um erro em tempo de execuo ser) gerado. Ar"uivos de mem8ria$ /ari)veis locais no podem ser gravadas ou recuperadas de ar"uivos 4.mem5. -ipo de uma vari)vel local$ 6esde "ue -IPE45 usa o operador macro 4P5 para avaliar seu argumento, ele no pode ser usado para determinar o tipo de vari)vel local ou est)tica ou uma expresso contendo uma re erncia a uma vari)vel local ou est)tica. Para permitir isso, use /A9-IPE45.

E*emplos
& exemplo a seguir declara dois vetores locais e duas vari)veis locais$ 9&CA9 aArraERJLD, RDK, aArraELJLDKJRDK, varR, varL

Colgio Catanduvas

Prof. Hlio Lemes Costa Jr.

CLIPPER Apostila de Linguagem de Programao I

1999

Este exemplo declara duas vari)veis locais com iniciali'adores. & primeiro ( iniciali'ado com uma data e o segundo com um vetor literal$ 9&CA9 dS!en $H 6A-E45 9&CA9 a/egies $H T1#andioca1, 1Pepino1, 1Cenoura1U

P %&A'E
Cria e iniciali'a vari)veis de mem8ria e vetores private.

Sinta*e
P:3/A-E <identi icador> JJ$H <iniciali'ador>K, ... K

Argumentos
<identi icador> ( o nome da vari)vel ou vetor private a ser criado. ,e <identi icador> ( seguido de colc!tes 4J K5, um vetor ( criado e atribu.do a <identi icador>. 2uando o <identi icador> indica um vetor, a sintaxe para especi icar o n<mero de elementos em cada dimenso pode ser vetorJ<nElementos>, <nElementosL>,...K ou vetorJ<nElementos>KJ<nElementosL>K... & n<mero m)ximo de elementos por dimenso ( MDNO. & n<mero m)ximo de dimenses ( limitado pela mem8ria dispon.vel. <iniciali'ador> ( a atribuio opcional de um valor para a nova vari)vel private. Para um vetor no se pode dar valores usando <iniciali'ador>. 7m <iniciali'ador> para uma vari)vel private consiste do operador in*line 4$H5 seguido de "ual"uer expresso Clipper incluindo um vetor. ,e nen!um <iniciali'ador> or especi icado, a vari)vel ( iniciali'ada com @39. @o caso de um vetor, cada elemento ( iniciali'ado com @39. 7ma lista de vari)veis e vetores pode ser criada e opcionalmente iniciali'ada com uma <nica declarao P:3/A-E se cada de inio or separada por v.rgula.

(es+rio
A declarao P:3/A-E cria vari)veis vis.veis dentro da rotina corrente e a"uelas "ue orem por esta invocadas. A classe de vari)vel ( dita como tendo abrangncia dinBmica. /ari)veis private existem durante a durao da rotina ativa ou at( "ue expl.citamente liberadas com C9EA: A99, C9EA: #E#&:I, ou :E9EA,E. 2uando uma vari)vel ou vetor private ( criado, vari)veis e vetores public ou private existentes de mesmo nome so ocultos at( "ue a rotina corrente se encerre. -entativas de especi icar uma vari)vel private "ue con lite com declaraes C3E96, 9&CA9, ou ,-A-3C pr(vias de mesmo nome iro resultar num erro atal de compilador. 3sto ocorre no importando as abrangncia da declarao. 6eclaraes P:3/A-E so execut)veis e portanto devem ser especi icadas dentro do corpo da rotina e devem seguir todas as declaraes de vari)veis como C3E96, 9&CA9, #E#/A:, e ,-A-3C. Adicionalmente a declarao P:3/A-E, vari)veis P:3/A-E podem ser criadas de duas maneiras$ Atribuio a uma vari)vel "ue no exista ou no se0a vis.vel ir) criar uma vari)vel private

Colgio Catanduvas

Prof. Hlio Lemes Costa Jr.

CLIPPER Apostila de Linguagem de Programao I

1999

ParBmetros recebidos com a declarao PA:A#E-E:, so criados como vari)veis private com a mesma vida <til e visibilidade & n<mero m)ximo de vari)veis e vetores private "ue podem existir simultBneamente num programa ( de LDMV.

&otas
Compatibilidade$ As cl)usulas A99, 93AE, e E?CEP- da declarao P:3/A-E suportadas por outros dialetos d+A,E no o so em Clipper.

E*emplos
& exemplo a seguir cria dois vetores private e outras tres vari)veis tamb(m private$ P:3/A-E aArraERJRDK, aArraELJLDK, varR, varL, var3 Este exemplo cria um vetor multi dimensional private usando as convenes de endereamento de cada elemento$ P:3/A-E aArraEJRDKJRDKJRDK, aArraELJRD, RD, RDK Este exemplo demonstra v)rias declaraes P:3/A-E para declarar e iniciali'ar vetores e vari)veis$ P:3/A-E aArraE $H T R, L, 3, M U, aArraEL $H A::AI4RL, LM5 P:3/A-E cC!ar $H ,PACE4RD5, cColor $H ,E-C&9&:45

P(BL%C
Cria e iniciali'a vari)veis e vetores p<blicos.

Sinta*e
P7+93C <identi icador> JJ$H <iniciali'ador>K, ... K

Argumentos
<identi icador> ( o nome da vari)vel ou vetor a ser criado. ,e <identi icador> ( seguido de colc!etes 4J K5, ele ( criado como vetor. ,e <identi icador> ( um vetor, a sintaxe para especi icar o n<mero de elementos em cada dimenso pode ser vetor J<nElementos>, <nElementosL>, ...Kou vetorJ<nElementos>KJ<nElementosL>K... & n<mero m)ximo de elementos por dimenso ( MDNO. & n<mero m)ximo de dimenses por vetor ( limitado pela mem8ria dispon.vel. <iniciali'ador> ( a atribuio opcional de um valor para uma nova vari)vel p<blica. 3denti icadores de vetor, no podem ser iniciali'ados com <iniciali'ador>. 7m <iniciali'ador> para uma vari)vel p<blica contitui*se do operador in*line 4$H5 seguido de "ual"uer expresso Clipper incluindo um vetor. ,e nen!um <iniciali'ador> or especi icado, o valor inicial para estas vari)veis ser) also 4.C.5. Esta ( uma exceo 0) "ue todas as vari)veis no iniciali'adas assumem valor @39. Contudo, para o caso de vetores, o valor de cada elemento no iniciali'ado continua sendo @39.

Colgio Catanduvas

Prof. Hlio Lemes Costa Jr.

CLIPPER Apostila de Linguagem de Programao I

1999

7ma lista de vari)veis e vetores pode ser criada e opcionalmente iniciali'ada com uma declarao P7+93C se cada de inio or separada por uma v.rgula.

(es+rio
A declarao P7+93C cria vari)veis e vetores vis.veis para todas as rotinas no programa. /ari)veis public existem durante toda a durao do programa ou at( "ue se0am explicitamente liberadas com C9EA: A99, C9EA: #E#&:I, ou :E9EA,E. 6eclarar nomes de vari)veis private, local ou static com o mesmo nome de uma public, temporariamente esconde estas public at( "ue as outras se0am liberadas ou no este0am mais vis.veis. 7ma tentativa de criar uma vari)vel public com o mesmo nome de uma private vis.vel e existente ( simplesmente ignorado 4ve0a @otas abaixo para uma excesso5. -entativas de especi icar uma vari)vel P7+93C "ue con lite com uma declarao anterior C3E96, 9&CA9, ou ,-A-3C com o mesmo nome, ir) causar um erro atal de compilador. 3sto ( sempre verdade no importando a abrangncia da declarao. 6eclaraes P7+93C so execut)veis e portanto devem ser especi icadas no corpo da rotina. Elas devem tamb(m seguir as declaraes em tempo de compilador, ou se0a$ C3E96, 9&CA9, #E#/A:, e ,-A-3C. & m)ximo n<mero de vari)veis public e private "ue podem existir simultaneamente ( de LDMV.

&otas
P7+93C Clipper$ Para incluir extenses Clipper num programa e ainda permitir "ue o mesmo se0a executado debaixo de d+A,E 333 P97,, uma vari)vel public especial, Clipper, ( iniciali'ada como verdadeira 4.-.5 "uando criada P7+93C. /etores public e con litos de nome com vari)veis private$ A declarao P7+93C xJRDK, no ir) criar um vetor public x se 0) existir uma vari)vel public ou private x. Ela ir), entretanto, destruir o conte<do de x existente, trocando*o por uma re erncia a um vetor de RD elementos.

E*emplos
Este exemplo cria dois vetores e uma vari)vel P7+93C$ P7+93C aArraERJRD, RDK, varL P7+93C aArraELJLDKJRDK A"ui criamos v)rias vari)veis e as iniciali'amos$ P7+93C c,tring $H ,PACE4RD5, cColor $H ,E-C&9&:45 P7+93C aArraE $H TR, L, 3U, aArraEL $H A::AI4RL, LM5

ELEASE
9ibera vari)veis de mem8ria dos tipos p<blica e privada

Sinta*e
:E9EA,E <id9ista /armem>

Colgio Catanduvas

Prof. Hlio Lemes Costa Jr.

CLIPPER Apostila de Linguagem de Programao I


:E9EA,E A99 J93AE W E?CEP- <es"ueleto>K

1999

Argumentos
<id9ista /armem> ( uma lista de vari)veis de mem8ria ou vetores do tipo p<blica ou privada a serem liberados. A99 J93AEWE?CEP- <es"ueleto>K de ine o con0unto de vari)veis de mem8ria do tipo privada vis.veis a serem atribu.das ou serem exclu.das da atribuio de um @39. <es"ueleto> ( a m)scara do tipo coringa "ue especi ica um grupo de vari)veis de mem8ria a serem eliminadas. &s caracteres do tipo coringa aceitos so 1X1 e 1%.1

(es+rio
& comando :E9EA,E executa uma de duas aes, dependendo da orma do comando. ,e :E9EA,E ( especi icado com <id9ista /armem>, as vari)veis de mem8ria dos tipos p<blica e privada eQou vetores especi icados so liberados da mem8ria. @o caso de vari)veis escondidas previamente 4vari)veis dos tipos p<blica e privada de inidas em rotinas de n.vel mais elevado5 tornam*se acess.veis ao t(rmino da rotina na "ual a vari)vel oi inicialmente criada. Caso :E9EA,E se0a especi icado com "ual"uer orma da cl)usula A99, Gs vari)veis de mem8ria do tipo privada criadas no n.vel da rotina corrente ( atribu.do um @39, e elas no so eliminadas at( "ue a rotina corrente termine. /ari)veis do tipo p<blica no so a etadas por esta orma do comando :E9EA,E. Para eliminar o conte<do deste tipo de vari)veis, voc deve usar o comando :E9EA,E explicitamente ou usar C9EA: #E#&:I. /ari)veis dos tipos local ou est)tica no so a etadas pelo comando :E9EA,E. As do primeiro tipo so liberadas automaticamente "uando a rotina na "ual elas oram declaradas termina. As do <ltimo tipo no podem ser liberadas, pois a existncia das mesmas extende*se at( o inal do programa.

Comandos para apresentao de dados


)***BOX
6esen!a uma caixa na tela

Sinta*e
Y <n9in-opo>, <nCol-opo>, <n9in+ase>, <nCol+ase>+&? <c,tringCaixa>

Argumentos
<n9in-opo>, <nCol-opo>, <n9in+ase>, e <nCol+ase> de inem as coordenadas da caixa. Y...+&? desen!a uma caixa usando valores de lin!a de 'ero at( #A?:&S45, e coluna de 'ero at( #A?C&945. ,e <n9in+ase> e <nCol+ase> so maiores "ue #A?:&S45 e #A?C&945, o canto in erior direito ( desen!ado ora da tela. <c,tringCaixa> ( um string de oito caracteres de borda e um de preenc!imento. ,e <c,tringCaixa> ( especi icado como um <nico caractere, este ( usado para desen!ar a caixa inteira.

Colgio Catanduvas

Prof. Hlio Lemes Costa Jr.

CLIPPER Apostila de Linguagem de Programao I


(es+rio

1999

Y...+&? desen!a uma caixa na tela usando bordas con igur)veis e caractere de preenc!imento. Y...+&? desen!a a caixa usando <c,tringCaixa>a partir do canto superior es"uerdo, continuando no sentido !or)rio e preenc!endo a regiao de tela com o nono caractere. ,e o nono caractere no or especi icado, a regiao de tela dentro da caixa no ( preenc!ida. -extos e cores pr(*existentes no so alterados. Ap8s Y...+&? ter sido executado, o cursor ( colocado no canto superior es"uerdo em <n9in-opo> Z R e <nCol-opo> Z R. :&S45 e C&945 tm seus valores atuali'ados para re letir a nova posio do cursor.

E*emplos
&s seguintes exemplos desen!am duas caixas usando constantes mani estas contidas no ar"uivo !eader, +ox.c!. & primeiro exemplo desen!a uma caixa usando os caracteres especi icados para a borda, mas deixa todas as outras )reas da tela intactas. & segundo exemplo desen!a a mesma caixa preenc!endo a regiao com espaos$ [include 1+ox.c!1 QQ 6esen!a uma caixa com topo em lin!a dupla e lateral em lin!a simples Y R, R, LL, \N +&? 6&7+9E],3@;9E QQ 6esen!a a mesma caixa preenc!endo com espaos Y R, R, LL, \N +&? 6&7+9E],3@;9E Z ,PACE4R5

)***P O!P'
Exibe um item de menu e de ine uma mensagem

Sinta*e
Y <n9in>, <nCol> P:&#P- <c3tem#enu> J#E,,A;E <c3tem#ensagem>K

Argumentos
<n9in> e <nCol> so as coordenadas de lin!a e coluna para exibir o item de menu. /alores de lin!a esto na aixa de 'ero at( #A?C&945> <c3tem#enu> ( o string com o item de menu a ser exibido. <c3tem#enssagem> de ine a mensagem a ser exibida cada ve' "ue o item corrente ( iluminado.

(es+rio
Y...P:&#P- ( a poro exibidora de sistema de menu de barra luminosa do Clipper. Cada Y...P:&#P- exibe um item de menu e de ine uma mensagem associada a ser exibida na lin!a de inida em ,E- #E,,A;E. & menu de barra luminosa ( invocado com #E@7 -&. &s itens de menu podem

Colgio Catanduvas

Prof. Hlio Lemes Costa Jr.

12

CLIPPER Apostila de Linguagem de Programao I

1999

ser exibidos na tela em "ual"uer ordem e con igurao de lin!a e coluna. #E@7 -&, entretanto, navega na lista de itens de menu corrente na ordem em "ue estes oram de inidos. Podem existir at( 3L itens para cada menu e o Y...P:&#P- ir) exibi*los em tela utili'ando a cor padro. 2uando #E@7 -& ( ativado, o item corrente ( iluminado utili'ando a cor desta"ue. Ap8s cada comando Y...P:&#P-, o cursor ( posicionado uma coluna G direita do item no "ual voc est). :&S45 e C&945 so atuali'ados de modo a re letir a posio do cursor. 3sto l!e permite utili'ar :&S45 e C&945 de modo a especi icar posies de itens consecutivas ao primeiro item colocado na tela. /e0a o exemplo abaixo.

E*emplos
Este exemplo exibe um menu de barra luminosa na lin!a R da tela com as mensagens associadas exibidas na pr8xima lin!a. 2uando o usu)rio apertar :eturn, a posio do item de menu ( atribu.da a nC!oice$ 9&CA9 nC!oice $H R C9, ^ ,E- S:AP &@ ,E- #E,,A;E -& L Y R, 3 P:&#P- 1Ar"uivo1 #E,,A;E 1Acesso a ar"uivo de dados1 Y :&S45, C&945 Z L P:&#P- 1Edita1 #E,,A;E 1Edita registro corrente1 Y :&S45, C&945 Z L P:&#P- 1+usca1 #E,,A;E 1Ac!a outro registro1 #E@7 -& nC!oice

)***SA"
Exibe dados em uma lin!a e coluna especi icadas

Sinta*e
Y <n9in>, <nCol>J,AI <exp> JP3C-7:E <c,aEPicture>KK

Argumentos
<n9in> e <nCol> so as coordenadas de lin!a e coluna da sa.da. &s valores de lin!a podem variar entre 'ero e #A?:&S45 para o dispositivo corrente 46E/3CE5 se este or a tela ou entre 'ero e 3L.\\O caso o dispositivo 46E/3CE5 se0a P:3@-E:. & mesmo vale para as colunas. ,AI <exp> exibe o resultado de uma expresso de "ual"uer tipo**inclusive um campo memo**ao 6E/3CE corrente. P3C-7:E <c,aEPicture> de ine a m)scara para a sa.da de exp. & Clipper ornece dois mecanismos de controle de ormatao$ unes e templates. Cunes aplicam*se ao ,AI inteiro, en"uanto "ue templates mascaram caracteres posio por posio.

(es+rio
Y...,AI ( um comando de tela "ue exibe os resultados de <exp> para tela ou impressora nas coordenadas de lin!a e coluna especi icadas. Ele pode opcionalmente ormatar a sa.da usando a

Colgio Catanduvas

Prof. Hlio Lemes Costa Jr.

11

CLIPPER Apostila de Linguagem de Programao I

1999

cl)usula P3C-7:E. Y...,AI ( usado para criar telas de entrada de dados ou relat8rios "ue podem ser enviados para a tela ou impressora. 2uando um Y...,AI ( executado, a sa.da de <exp> ( enviada ao dispositivo corrente de inido por ,E6E/3CE. & 6E/3CE corrente pode ser ,C:EE@ 4tela5 ou P:3@-E: 4impressora5. 6e orma di erente de outros comandos de console, Y...,AI no ( ecoado em tela "uando est) sendo enviado para a impressora e ,E- C&@,&9E no tem e eito na sa.da de Y...,AI em tela. ,e o 6E/3CE corrente ( ,C:EE@ 4o padro do sistema5, Y...,AI exibe a sa.da em tela deixando o cursor uma coluna G direita do <ltimo caractere mostrado. :&S45 e C&945 so atuali'ados. Exibio "ue saia ora da tela de inida por #A?:&S45 e #A?C&945 a' com "ue o cursor se0a posicionado ora da tela vis.vel. -odas as sa.das de Y...,AI so exibidas na cor padro. ,e o dispositivo corrente 46E/3CE5 or impressora 4P:3@-E:5, a sa.da ( direcionada para esta em <n9in> adicionando ao valor de ,E- #A:;3@ e nCol>. A cabea de impresso so re avano para uma coluna G direita do <ltimo caractere impresso. P:&S45 e PC&945 so atuali'ados con orme esta posio. Comandos Y...,AI para a impressora comportam*se de uma orma levemente di erente "ue na tela "uando a sa.da ( endereada para a impressora numa lin!a e coluna menor "ue a corente em P:&S45 e PC&945. Caso <n9in> se0a menor "ue P:&S45, um E=EC- autom)tico 4C_:4RL55 ( enviado G impressora seguido pelo n<mero de caracteres line* eed 4C_:4RD55 necess)rios para posicionar a cabea de impresso em <n9in>. Caso <nCol> inclua o valor ,E- #A:;3@ menor "ue PC&945, um caractere carriage return 4C_:4R355 e o n<mero de espaos necess)rios para posicionar <exp> em <nCol> so enviados G impressora. Para evitar este comportamento de orma a enviar c8digos de controle para a impressora, ou por "ual"uer outra ra'o, voc pode usar ,E-P:C45 para recon igurar P:&S45 e PC&945 para novos valores. ,e 6E/3CE corrente or P:3@-E:, a sa.da de comandos Y...,AI pode ser redirecionada para um ar"uivo usando ,E- P:3@-E: -& <xcAr"uivo>. Como citado acima, Y...,AI pode ter sua sa.da ormatada usando a cl)usula P3C-7:E com <c,aEPicture>. 3sto executa a mesma ao "ue -:A@,C&:#45. 7ma <c,aEPicture> pode consistir em uma uno eQou template. 7ma uno P3C-7:E impoe uma regra de como Y...,AI deve ser exibido como um todo. 7m template P3C-7:E de ine o taman!o da sa.da de Y...,AI, e a regra de ormatao dentro da sa.da. Cunes$ 7ma uno P3C-7:E ( um s.mbolo precedido do s.mbolo Y. 7m s.mbolo de template segue a uno, e deve ser precedido de um espao. @ote "ue mais de uma uno pode ser aplicada dentro da mesma P3C-7:E. A tabela seguinte resume as opes dispon.veis para as unes P3C-7:E$

3a4ela -5,6 PIC3$RES para SA% e 3RA&S#"R789


#uno + C 6 E : Ao Exibe n<meros alin!ados G es"uerda Exibe C: ap8s n<meros positivos Exibe datas no ormato ,E- 6A-E Exibe datas e n<meros no ormato +ritis! Caracteres no template sero inseridos

Colgio Catanduvas

Prof. Hlio Lemes Costa Jr.

1)

CLIPPER Apostila de Linguagem de Programao I


? ` 4 a Exibe 6+ ap8s n<meros negativos Exibe 'eros como brancos Coloca n<meros negativos entre parnteses Converte caracteres al ab(ticos para mai<sculas

1999

-emplates$ ,.mbolos de template seguem as unes no string de P3C-7:E se orem especi icados. Cada posio no luxo de entrada ou sa.da ( mapeada para o s.mbolo na mesma posio no string template. Clipper ornece v)rios s.mbolos os "uais esto discriminados na tabela da p)gina seguinte$

3a4ela -5-6 S:m4olos 3emplate para SA% e 3RA&S#"R789


3emplate A,@,?,N,[ 9 I a b X . , Ao Exibe d.gitos em "ual"uer tipo de dados Exibe l8gicos como 1-1 ou 1C1 Exibe l8gicos como 1I1 ou 1@1 Converte um caractere al ab(tico para mai<scula Exibe o sinal de dolar em lugar de espaos G es"uerda de um num(rico Exibe asteriscos em lugar de espaos G es"uerda de um num(rico Especi ica a posio do ponto decimal Especi ica a posio da v.rgula

&utros caracteres especi icados no template sobreescrevem o caractere na mesma posio no stream onte e sa.da. ,e, entretanto, voc usar a uno :, s.mbolos no*template especi icados sero inseridos para exibio.

E*emplos
& exemplo seguinte demonstra o uso de Y...,AI com uma cl)usula P3C-7:E para exibir sa.da ormatada$ n@et3ncome H \RL5.5D n@et9oss H *RL5.5D cP!one H 1LR3M5O\VND1 c@ame H 1Aate #Estic1 QQ Y R, R ,AI n@et3ncome P3C-7:E 1YE N,NNN.NN1 Y L, R ,AI n@et9oss P3C-7:E 1Y51 Y 3, R ,AI cP!one P3C-7:E 1Y: 4NNN5NNN*NNNN1 Y M, R ,AI c@ame P3C-7:E 1Ya1

QQ:esulta$ \,RL5.5D QQ:esulta$ 4RL5.5D5 QQ:esulta$ 4LR35M5O*\VND QQ:esulta$ AA-E #I,-3C

Este exemplo ( uma pe"uena impresso de eti"uetas "ue utili'a ,E- 6E/3CE para direcionar para impressora e ,E-P:C45 para suprimir E=EC-s autom)ticos$ 7,E ,alesman 3@6E? ,alesman @ES ,E- 6E/3CE -& P:3@-E: 6& S_39E aE&C45 QQ 3mprime todos registros Y L, 5 ,AI :-:3#4Cirst@ame5 Z 1 1 Z 9ast@ame Y 3, 5 ,AI ,treet Y M, 5 ,AI :-:3#4CitE5 Z 1, 1 Z ,tate Z 1 1 Z PostalCode Y O, D ,AI ,PACE4R5 QQ Para a base da eti"ueta ,E-P:C4D, D5 QQ ,uprime e0eo de p)gina ,A3P QQ Pr8ximo registro E@66&

Colgio Catanduvas

Prof. Hlio Lemes Costa Jr.

1,

CLIPPER Apostila de Linguagem de Programao I


,E- 6E/3CE -& ,C:EE@ C9&,E ,alesman

1999

)***'O
6esen!a uma caixa em lin!a simples ou dupla

Sinta*e
Y <n9in-opo>, <nCol-opo> -& <n9in+ase>, <nCol+ase> J6&7+9EK

Argumentos
<n9in-opo>, <nCol-opo>, <n9in+ase>, e <nCol+ase> de inem as coordenadas da caixa. Y...-& ir) desen!ar usando valores de lin!a de 'ero at( #A?:&S45. <n9in+ase> e <nCol+ase> podem ser maiores "ue o taman!o da tela. 6&7+9E desen!a a caixa em lin!a dupla. ,e no or especi icado, a caixa ( desen!ada em lin!a simples.

(es+rio
Y...-& desen!a uma caixa em lin!a simples ou dupla na tela. Caso <n9in-opo> e <n93n+ase> se0am o mesmo, uma lin!a !ori'ontal ( desen!ada. ,e <nCol-opo> e <nCol+ase> orem o mesmo valor, uma lin!a vertical ( desen!ada. Ap8s Y...-& inali'ar o desen!o, o cursor ( posicionado no canto superior da regio em <n9in-opo> Z R e <nCol-opo> Z R. :&S45 e C&945 so tamb(m atuali'adas de orma a re letir a posio do cursor. Y...-& ( similar a Y...+&? com duas excees$ primeiro, Y...+&? permite*l!e de inir os caracteres para moldura e, segundo, ele permite um caractere para preeenc!imento.

E*emplos
& exemplo seguinte apaga uma regio da tela e desen!a em seguida uma caixa do mesmo taman!o$ Y RD, RD C9EA: -& LD, MD Y RD, RD -& LD, MD 6&7+9E

CLEA

SC EE+

Apaga a tela e coloca o cursor na posio inicial

Sinta*e
C9EA: J,C:EE@K W C9,

Argumentos
,C:EE@ suprime a limpe'a autom)tica de ;E-s "uando a tela ( apagada com C9EA:.

Colgio Catanduvas

Prof. Hlio Lemes Costa Jr.

1-

CLIPPER Apostila de Linguagem de Programao I


(es+rio

1999

C9EA: apaga a tela, libera ;E-s pendentes, e posiciona o curosr em D,D. Caso se0a usado ,C:EE@, os ;E-s no so liberados. C9, ( o mesmo "ue C9EA: ,C:EE@.

&otas SE' ,E" e &AL%#- Caso voc. este/a editando 0E's1 executar um CLEA dentro de uma rotina de SE' ,E" ou a partir de uma 2un34o de2inida pelo usurio invocada por &AL%# ir encerrar o EA# quando o controle retornar* Para limpar a tela sem liberar os 0E's1 use CLS ou CLEA SC EE+*

ES'O E SC EE+$
Exibe uma tela guardada

Sinta*e
:E,-&:E ,C:EE@ JC:&# <c-ela>K

Argumentos
C:&# <c-ela> especi ica a expresso caractere a ser exibida na tela.

(es+rio
:E,-&:E ,C:EE@ ( um comando sincnimo da uno :E,-,C:EE@45 "ue re*exibe uma tela previamente gravada, e ( utili'ada 0untamente com o comando ,A/E ,C:EE@ para evitar "ua a tela original escrita com os comandos Y...,AI, Y...;E- se0a re*escrita. Este comando opera de duas ormas, dependendo se a cl)usula C:&# or especi icada ou no. Caso ela se0a especi icada, a tela ser) recuperada de <c-ela>. <c-ela> ( uma expresso caractere, geralmente uma vari)vel G "ual oi atribu.da uma imagem de tela pelo comando ,A/E ,C:EE@. Caso a cl)usula C:&# no se0a especi icada, a tela ( recuperada do bu er de telas gravadas padro "ue oi criado pelo comando ,A/E ,C:EE@ especi icado sem a cl)usula -&. Para gravar e recuperar o conte<do parcial das telas, ao inv(s de seu conte<do completo, use as unes ,A/E,C:EE@45 e :E,-,C:EE@45. :E,-&:E ,C:EE@ ( um comando de compatibilidade e, portanto, desaconsel!ado. Ele est) superado pela uno :E,-,C:EE@45, a "ual pode recuperar telas parciais, bem como telas completas.

Aviso
&s comandos e unes ,A/E ,C:EE@, :E,-&:E ,C:EE@, ,A/E,C:EE@45, e :E,-,C:EE@45 no so aceitos "uando A@,3.&+= ou 3+#A@,3.&+= estiverem lin>ados ao programa corrente.

Colgio Catanduvas

Prof. Hlio Lemes Costa Jr.

1.

CLIPPER Apostila de Linguagem de Programao I


E*emplos

1999

& exemplo abaixo exibe uma pe"uena caixa de mensagem usando os comandos ,A/E e :E,-&:E ,C:EE@$ 3C CileAlert45 C&PI C39E -!em.txt -& #E.txt E9,E +:EAA E@63C C7@C-3&@ CileAlert 9&CA9 lAnsder H .C., c,creen ,A/E ,C:EE@ -& c,creen Y RD, RD C9EA: -& RL, 5M Y RD, RD -& RL, 5M 6&7+9E Y RR, RL ,AI 1Ar"uivo existe, sobreescreve% 4sQn5% 1^ ;E- lAnsder P3C-7:E 1Ya1 /A936 lAnsder b 1,@1 :EA6 :E,-&:E ,C:EE@ C:&# c,creen :E-7:@ lAnsder HH 1,1

SA&E SC EE+$
;rava a tela corrente num bu er ou vari)vel

Sinta*e
,A/E ,C:EE@ J-& <id/ar>K

Argumentos
-& <id/ar> especi ica a vari)vel G "ual sero atribu.dos os conte<dos da tela corrente como um valor de caractere. ,e <id/ar> no or vis.vel ou no existir, uma vari)vel de mem8ria do tipo privada ( criada e a ela atribu.da a tela.

(es+rio
,A/E ,C:EE@ ( um comando sincnimo G uno ,A/E,C:EE@45 "ue grava a tela de D, D a #A?:&S45, #A?C&945 no bu er de tela padro, ou em uma vari)vel opcional. ,e a tela or gravada em uma vari)vel, esta pode ser de "ual"uer classe de arma'enamento, inclusive campo, local, est)tica, ou elemento de vetor. &bserve, por(m, "ue voc no pode gravar vari)veis tipo vetor, local ou est)tica em ar"uivos 4.mem5 com a inalidade de gravar telas m<tiplas no disco. & comando ,A/E ,C:EE@ ( utili'ado 0untamente com o comando :E,-&:E ,C:EE@ para impossibilitar "ue uma tela original "ue ten!a sido temporariamente substitu.da se0a re*escrita. -elas m<ltiplas podem ser gravadas atrav(s da atribuio de cada tela a uma vari)vel di erente. ,A/E ,C:EE@ ( um comando de compatibilidade e, portanto, desaconsel!ado. Ele est) superado pela uno ,A/E,C:EE@45, a "ual pode gravar telas parciais ou completas.

Colgio Catanduvas

Prof. Hlio Lemes Costa Jr.

1/

CLIPPER Apostila de Linguagem de Programao I


Aviso

1999

&s comandos e unes ,A/E ,C:EE@, :E,-&:E ,C:EE@, ,A/E,C:EE@45, e :E,-,C:EE@45 no so aceitos "uando A@,3.&+= ou 3+#A@,3.&+= estao lin>ados ao programa corrente.

E*emplos
Este ragmento de c8digo demonstra o uso de um vetor est)tico para arma'enar telas gravadas$ ,-A-3C a,creensJRDK ,A/E ,C:EE@ -& a,creensJRK QQ <declaraooes>... QQ :E,-&:E ,C:EE@ C:&# a,creensJRK Este exemplo demonstra como gravar e recuperar telas utili'ando um ar"uivo de dados$ 7,E ,creens 3@6E? @ame @ES APPE@6 +9A@A ,creens*>@ame $H 1,creenDDR1 QQ ;uarda o nome da tela ,A/E ,C:EE@ -& ,creens*>3mage QQ ;uarda uma tela QQ <declaraes>... QQ ,EEA 1,creenDDR1 QQ Ac!a a tela :E,-&:E ,C:EE@ C:&# ,creens*>3mage QQ :estaura

Comandos para entrada e edio de dados


)***0E'
Cria um novo ob0eto ;E- e o coloca em exibio na tela

Sinta*e
Y <n9in>, <nCol> J,AI <exp> JP3C-7:E <c,aEPicture>KK ;E- <id/ar> JP3C-7:E <c;etPicture>K JS_E@ <lPreCondio>K J:A@;E <dn#.nimo>, <dn#)ximo>K W J/A936 <lPosCondio>K

Argumentos
<n9in> e <nCol> so as coordenadas de lin!a e coluna para a operao. ,e a cla<sula ,AI est) presente, especi icam as coordenadas para o ,AI, e o ;E- ( exibido a direita deste. Caso a sa.da este0a al(m da extenso vis.vel ela no aparecer). ,AI exibe o valor de <exp> nas coordenadas especi icadas. Caso a P3C-7:E <c,aEPicture> se0a especi icada, <exp> ( ormatada de acordo com as regras das m)scaras do ,AI.

Colgio Catanduvas

Prof. Hlio Lemes Costa Jr.

10

CLIPPER Apostila de Linguagem de Programao I

1999

;E- <id/ar> de ine o nome da vari)vel de "ual"uer tipo de dados a ser editada. Ela pode ser caractere, data, num(rica ou l8gica 4,e o tipo or amb.guo, C3E96 ( assumido5. /etores, @39, e blocos de c8digo no podem ser editados. P3C-7:E <c;etPicture> especi ica uma m)scara para exibio e as regras para edio do ;E-. S_E@ <lPreCondio> especi ica uma expresso "ue deve ser satis eita antes do cursor entrar na regio de edio de ;E-. ,e <lCondio> ( avaliada como verdadeira 4.-.5, ( permitido ao cursor entrar^ de outra orma, o ;E- corrente ( saltado e o cursor move*se para o pr8ximo ;E- no vetor ;et9ist. :A@;E <dn#.nimo>, <dn#)ximo> limita a edio de datas ou vari)veis num(ricas especi icando os limites m.nimos e m)ximos aceit)veis 4o m.nimo deve preceder o m)ximo5. ,e o valor entrado no est) dentro do :A@;E especi icado, uma mensagem indicativa aparece no ,C&:E+&A:6 e o controle retorna ao ob0eto ;E-. A veri icao de :A@;E 4 aixa5 ( executada a menos "ue o usu)rio aperte Esc para terminar a edio do ;E- corrente. 2uando isto ocorre, a veri icao de :A@;E no ( executada e ( reatribu.do seu valor original. /A936 <lPosCondio> especi ica uma expresso "ue deve ser satis eita antes "ue o cursor possa deixar a regio de edio do ;E- corrente. 6e orma semel!ante Gs expresses :A@;E, o /A936<lPosCondio> ( avaliado sempre "ue o usu)rio tenta deixar a regio de edio do ;E-, a menos "ue a tecla Esc se0a pressionada e E,CAPE este0a &@. ,e <lPosCondio> retorna also 4.C.5, o controle retorna ao ;E- e o usu)rio no pode deix)*lo at( "ue <lPosCondio> retorne verdadeiro 4.-.5 ou o usu)rio aperte Esc. 7m /A936 <lPosCondio> pode conter ou ser uma uno de inida pelo usu)rio ,permitindo*l!e executar buscas e outros tipos de operaes de validao.

(es+rio
& comando Y...;E- cria um novo ob0eto ;E-, adiciona*o ao vetor ;et9ist, e exibe*o na tela. 7m comando :EA6 subse"uente permite a edio dos conte<dos de todos os ob0etos ;E- contidos no vetor ;et9ist corrente. 2uando um comando :EA6 ( especi icado, um ;E- executa uma edio do conte<do de <id/ar> de "ual"uer tipo de dado, incluindo campo de ar"uivo, elemento de vetor, vari)vel de mem8ria local ou est)tica. 2uando um ob0eto ;E- ( criado, o nome e valor corrente de <id/ar> so guardados no ob0eto ;E-. & valor de <id/ar> ica arma'enado no "ue ( c!amado de bu er do ;E-. & bu er de ;E- ( o "ue ( realmente mostrado na tela e editado. Cormatao autom)tica e validao$ 2uando o usu)rio estiver editando o bu er do ob0eto ;E-, existe uma ormatao impl.cita e validao da edio para cada tipo de dado. 3sto signi ica "ue en"uanto o usu)rio digita, um teste autom)tico de tipo ( executado para cada tecla pressionada de orma a evitar "ue o usu)rio digite um caractere impr8prio para a"uele tipo de dado contido em <id/ar>. Este comportamento assumido aplica*se a datas, num(ricos, e l8gicos. -ipo caractere no ( autom)ticamente veri icado. P3C-7:E$ Cada ob0eto ;E- pode opcionalmente conter uma P3C-7:E e string template para explicitamente impor ormatao e validao da entrada. 7m uno P3C-7:E impoe uma regra de como o ;E- pode ser editado pelo usu)rio. Por exemplo, se a uno de P3C-7:E Ya ( especi icada para um ;E-, todos os caracteres al ab(ticos sero convertidos para mai<sculas antes de tomarem lugar no bu er. 7m template P3C-7:E de ine o taman!o do bu er de ;E-, e a regra de validao para cada posio dentro do bu er. Por exemplo, o template 1NNN1 de ine o taman!o do bu er de ;E- em trs d.gitos, com cada d.gito devendo ser um n<mero entre D e N.

Colgio Catanduvas

Prof. Hlio Lemes Costa Jr.

11

CLIPPER Apostila de Linguagem de Programao I

1999

Cunes$ 7ma uno P3C-7:E ( um s.mbolo precedido do s.mbolo Y. 7m s.mbolo de template segue a uno, e deve ser precedido de um espao. @ote "ue mais de uma uno pode ser aplicada dentro da mesma P3C-7:E. A tabela na p)gina seguinte mostra as opes dispon.veis para as unes P3C-7:E$

3a4ela -516 #ormatos de PIC3$RE para um ;E3


#uno A + C 6 E A : ,<n> ? ` 4 5 a 3ipo C @ @ 6,@ 6,@ -&6&, C C @ @ @ @ C Ao Permite somente caracteres al ab(ticos Exibe n<meros alin!ados G es"uerda Exibe C: ap8s n<meros positivos Exibe datas segundo o ormato ,E- 6A-E Exibe datas com o ms e dia invertidos independente do ,E- 6A-E corrente, n<mericos com pontos e v.rgulas period reverse invertidos Elimina texto assumido caso a primeira tecla no se0a cursor Caracteres no*template so inseridos na tela mas no so guardados na vari)vel Permite rolagem !ori'ontal dentro de um ;E-. <n> ( um inteiro "ue especi ica a largura da regio Exibe 6+ ap8s n<meros negativos Exibe 'eros como brancos Exibe n<meros negativos entre parnteses com espaos G es"uerda Exibe n<meros negativos entre parnteses sem espaos G es"uerda Converte caracteres al ab(ticos para mai<sculas

-emplates$ ,.mbolos de template seguem as unes no string de P3C-7:E se orem especi icados. Cada posio no luxo de entrada ou sa.da ( mapeada para o s.mbolo na mesma posio no string template. & Clipper ornece v)rios s.mbolos os "uais esto discriminados na tabela da p)gina seguinte$

3a4ela -5)6 S:m4olos 3emplate para PIC3$RES de ;E3s


3emplate A @ ? N [ 9 I a b X . , Ao Permite somente caracteres al ab(ticos Permite somente caracteres al ab(ticos e al anum(ricos Permite "ual"uer caractere Permite d.gitos para "ual"uer tipo de dados incluindo sinal para num(ricos Permite d.gitos, sinais, e espaos para "ual"uer tipo de dados Permite somente -, C, I ou @ Permite somente I ou @ Converte um caractere al ab(tico para mai<sculo Exibe o sinal de dolar em lugar de um espao G es"uerda de um num(rico Exibe um asterisco em lugar de um espao G es"uerda de um num(rico Exibe um ponto decimal Exibe uma v.rgula

&utros caracteres especi icados no template sobreescrevem o caractere locali'ado na mesma posio no luxo onte e sa.da. ,e, entretanto, voc usar a uno :, s.mbolos no*template especi icados so inseridos na tela mas no so gravados no bu er de ;E-.

Colgio Catanduvas

Prof. Hlio Lemes Costa Jr.

19

CLIPPER Apostila de Linguagem de Programao I

1999

S_E@ e /A936$ 7m ob0eto ;E- tamb(m possui expresses de pr( condio e p8s condio usando S_E@ e /A936 respectivamente. A expresso S_E@ ( executada sempre "ue o usu)rio tenta entrar com o cursor na regio de ;E-. A expresso /A936 ( executada sempre "ue o usu)rio tentar sair do ;E- exceto se o usu)rio apertar uma tecla com ,E- AEI ou Esc. ,E- AEI$ 2uando existe uma rotina de inida para ,E- AEI, o usu)rio pode apertar a tecla designada de orma a desviar o controle para a rotina de inida. Ap8s tal rotina ter sido executada, o controle retorna ao ;E- com o cursor restaurado G sua posio pr(via. /ida <til de um ob0eto ;E-$ &b0etos ;E- existem en"uanto existirem re erncias ativas a eles em algum local do programa corrente. Caso voc no ten!a atribu.do um ob0eto ;E- a outra vari)vel ou ;et9ist, ele ter) uma durao en"uanto o vetor ;et9ist corrente existir, ou at( "ue o vetor ;et9ist se0a reatribu.do. & vetor ;et9ist corrente ( atribu.do a um vetor va'io sempre "ue or emitido C9EA: ;E-,, C9EA:, ou um comando :EA6 sem a cl)usula ,A/E. /ari)vel associada$ Cada ob0eto ;E- ( criado associado a uma vari)vel "ue voc especi ica como <id/ar>. 2uando o ob0eto ;E- ( ativado durante um :EA6, <id/ar> ( atribu.do, em v)rios pontos, com o valor corrente do bu er do ob0eto ;E-. 3sto ocorre nas seguintes situaes$ & usu)rio aperta uma tecla de sa.da e antes a expresso de validao ( executada. & usu)rio aperta um ,E- AEI 6a mesma orma, o bu er do ;E- corrente so re re res! e ( reexibido ap8s v)rios intervalos, incluindo$ 2uando do t(rmino de uma rotina ,E- AEI Ap8s uma expresso S_E@ Ap8s uma expresso /A936 3sto permite a voc explicitamente atribuir <id/ar> dentro destas operaes. Em Clipper 5.D, entretanto, no ( mais necess)rio utili'ar AEI+&A:6 para atuali'ar o bu er do ;E- corrente. /e0a a nota abaixo para maiores in ormaes. Exibio do ob0eto ;E-$ 2uando o comando Y...;E- ( executado, o novo ob0eto ;E- ( exibido em <n9in> e <nCol>, a menos "ue a cl)usula ,AI se0a especi icada. ,e isto acontece, o ob0eto ;E( exibido em :&S45 e C&945 Z R. Caso ,E- 6E93#3-E:, este0a &@ "uando o comando Y...;E- or executado, o ob0eto ;E- ( inicialmente exibido delimitado pelo caractere escol!ido correntemente como delimitador e seu atributo de coluna ( <nCol> ZR. @ote "ue os delimitadores no so atributos do ob0eto ;E-, mas simplesmente so exibidos como na cl)usula ,AI. ,e 3@-E@,3-I est) &@, um ob0eto ;E- ( exibido na cor desta"ue ou v.deo reverso dependendo do adaptador utili'ado pelo seu monitor. ,e a cor no selecionado ( de inida, o ob0eto ;E- ( exibido na cor desta"ue, en"uanto os ;E- remanescentes sero exibidos na cor no selecionado. Com 3@-E@,3-I &CC, um ob0eto ;E- ( exibido na cor corrente para a cor padro. 2uando um ob0eto ;E- ( exibido, o taman!o da )rea ( determinado pelo taman!o de <id/ar>, ou pelo n<mero de d.gitos especi icado por <c;etPicture> se a cl)usula P3C-7:E oi especi icada. Caso a uno Y, or especi icada como parte de <c;etPicture>, o taman!o da )rea a ser exibida ( o argumento da uno Y,.

&otas

Colgio Catanduvas

Prof. Hlio Lemes Costa Jr.

)2

CLIPPER Apostila de Linguagem de Programao I

1999

Atribuindo <id/ar>$ 6evido Gs propriedades de re res! autom)tico e exibio de um ob0eto ;E"uando so re um :EA6, voc pode a'er uma atribuio expl.cita de <id/ar> ao ob0eto ;E- dentro de um S_E@ ou /A936. Existem duas ormas de a'*lo. Para aplicaes onde as expresses de validao esto acopladas ao ob0eto ;E-, voc pode atribuir a vari)vel por nome na expresso de validao ou numa uno de inida pelo usu)rio. Para aplicaes onde a rotina de validao ( gen(rica e <id/ar> no ( uma vari)vel campo ou elemento de vetor, voc pode passar <id/ar> por re erncia e atribuir seu parBmetro ormal. _elp em ;E-$ /oc exibe texto de !elp 4aux.lio5 usando uma rotina de ,E- AEI. 6entro da rotina de ,E- AEI, use a uno :EA6/A:45 para determinar a vari)vel <id/ar> associada ao ob0eto ;E- corrente. Ento use esta in ormao para exibir o texto apropriado. 9embre*se de "ue num programa compilado em Clipper, a tecla CR ( automaticamente con igurada para uma rotina de nome _elp. ,E- 6E/3CE -& P:3@-E:$ A exibio de um ob0eto ;E- com o comando Y...;E- no ( direcionada para a impressora ou ar"uivo caso ,E- 6E/3CE se0a -& P:3@-E:.

E*emplos
& exemplo seguinte demonstra o uso da cl)usula /A936 para validar entradas num ;E-$ n@umber H D Y RD, RD ,AI 16igite um n<mero maior "ue 'ero$1^ ;E- n@umber^ /A936 n@umber > D Este exemplo mostra como a cl)usula S_E@ pode ser usada para proibir a entrada em ;E-s baseada no valor de outro ;E-. @este exemplo, entrando com I no campo 3nsured indica "ue o cliente tem seguro e ao usu)rio ( permitido entrar com a in ormao. ,e o cliente no tem seguro, o cursor move*se para o campo Accident$ Y RD, RD ;E- 3nsured P3C-7:E 1I1 Y RR, RD ;E- 3ns@umber S_E@ 3nsured Y RL, RD ;E- 3nsCompanE S_E@ 3nsured Y R3, RD ;E- Accident P3C-7:E 1I1 :EA6 7m exemplo de ;E- em uma )rea secund)ria$ 7,E 3nvoice @ES APPE@6 +9A@A 7,E 3nventorE @ES Y R, R ;E- 3nvoice*>Cust@o :EA6 Este exemplo demonstra o uso da uno YA para sugerir um valor padro de entrada, mas elimina*o caso a primeira tecla pressionada no se0a uma tecla de movimentao de cursor ou :eturn$ ile H 1Accounts1 Y R, R ,AI 1Ar"uivo1 ;E- ile P3C-7:E 1YA1 :EA6

Colgio Catanduvas

Prof. Hlio Lemes Costa Jr.

)1

CLIPPER Apostila de Linguagem de Programao I


!E+( 'O
Executa um menu de barra luminosa para P:&#P-s de inidos

1999

Sinta*e
#E@7 -& <id/ar>

Argumentos
<id/ar> ( o nome da vari)vel G "ual ser) atribu.da o resultado da seleo de menu. Caso a vari)vel especi icada no se0a vis.vel ou no exista, uma do tipo privada ( criada e a ela atribu.do o resultado.

(es+rio
& comando #E@7 -& ( o mecanismo de seleo para o sistema de menus de barra luminosa do Clipper. Antes de c!amar o comando #E@7 -&, de ina primeiro os P:&#P-, do menu e mensagens associadas com uma s(rie de comandos Y...P:&#P-. 6epois, ative o menu com #E@7 -& <id/ar>. ,e <id/ar> no existir ou no or vis.vel, o comando #E@7 -& ir) cri)*la como uma vari)vel do tipo privada e coloca a barra luminosa sobre o primeiro P:&#P-. ,e ele no existir, seu valor inicial determina o primeiro P:&#P- sobre o "ual icar) a barra luminosa.

&otas
Cor$ &s P:&#P-s so escritos na tela na cor padro corrente. & P:&#P- sobre o "ual aparece a barra luminosa aparece na cor corrente desta"ue. @avegao e seleo$ As teclas de navegao movem a barra luminosa para o P:&#P- anterior ou posterior. A cada P:&#P- "ue ( evidenciado pela barra luminosa, a sua respectiva mensagem 4#E,,A;E5 aparece na lin!a, especi icada com ,E- #E,,A;E. ,e o comando S:AP est) em &@, e caso a barra luminosa este0a posicionada no primeiro P:&#P-, teclando Cursor para cima mover) a barra luminosa para o <ltimo P:&#P-. 6a mesma orma, teclando Cursor para baixo do <ltimo P:&#P- move a barra luminosa para o primeiro prompt. Para a'er uma seleo, tecle :eturn ou o primeiro caractere de um P:&#P-. & comando #E@7 -& ento retorna a posio do P:&#P- selecionado como um valor num(rico para a vari)vel de mem8ria especi icada. A tecla Esc interrompe a seleo de menu e retorna 'ero. A tabela na p)gina seguinte resume as teclas ativas dentro do comando #E@7 -&. :otinas ,E- AEI$ 7m comando #E@7 -& pode ser anin!ado num procedimento ,E- AEI c!amado dentro de um menu sem "ue os P:&#P-s pendentes se0am apagados, o "ue no acontece com os comandos ;E-Q:EA6.

3a4ela -516 3e+las Ativas em 7E&$ 3"


3e+la Cursor para cima Cursor para baixo _ome End Ao #ove para o item anterior #ove para o pr8ximo item #ove para o primeiro item #ove para o <ltimo item Cursor para es"uerda #ove para o item anterior Cursor para direita #ove para o pr8ximo item

Colgio Catanduvas

Prof. Hlio Lemes Costa Jr.

))

CLIPPER Apostila de Linguagem de Programao I


Pg7p Pg6n :eturn Esc Primeira letra

1999

,eleciona item de menu, retorna posio ,eleciona item de menu, retorna posio ,eleciona item de menu, retorna posio Aborta seleo, retorna 'ero ,eleciona primeiro item iniciando com a letra,retorna posio

E*emplos
Este exemplo cria um menu de barra luminosa vertical simples com as mensagens aparecendo centradas na lin!a L3. 2uando este comando ( usado, a barra luminosa sempre aparece sobre o segundo P:&#P- baseado no valor inicial de inido em nC!oice$ 9&CA9 nC!oice $H L ,E- S:AP &@ ,E- #E,,A;E -& L3 CE@-E: Y O, RD P:&#P- 13nclui1 #E,,A;E 1@ova conta1 Y \, RD P:&#P- 1Edita 1 #E,,A;E 1#uda conta1 Y N, RD P:&#P- 1Cim 1 #E,,A;E 1:etorna ao 6&,1 #E@7 -& nC!oice QQ 3C nC!oice HH R @edAccount45 E9,E3C nC!oice HH L C!angeAcoount45 E9,E 273E@63C :E-7:@

EA#
Ativa edio em tela usando ob0etos ;E-.

Sinta*e
:EA6 J,A/EK

Argumentos
,A/E ret(m o conte<do do vetor ;et9ist corrente ap8s o im da operao do comando :EA6. 6epois, voc pode editar os mesmos ob0etos ;E- atrav(s de outro comando :EA6. Caso no este0a especi icada, G ;et9ist corrente ( atribu.do um vetor va'io eliminando todos os ob0etos ;E- anteriores "uando o comando :EA6 tiver terminado.

(es+rio
& comando :EA6 executa um m8dulo de edio em tela usando todos os ob0etos ;E- criados e adicionados G ;et9ist corrente a partir dos comandos C9EA:, C9EA: ;E-,, C9EA: A99 ou :EA6 mais recentes. ,e !) uma rotina de ormatao ativa, o comando :EA6 executa essa rotina antes de entrar no m8dulo de edio em tela.

Colgio Catanduvas

Prof. Hlio Lemes Costa Jr.

),

CLIPPER Apostila de Linguagem de Programao I

1999

6entro de um :EA6, o usu)rio pode editar o bu er de cada ob0eto ;E- bem como mover*se de um ob0eto ;E- para outro. Antes "ue o usu)rio possa entrar com um ob0eto ;E-, o controle passa para o respectivo S_E@ <lPreCondio> caso alguma ten!a sido atribu.da G"uele ob0eto ;E-. ,e <lPreCondio> retornar valor verdadeiro 4.-.5, ( permitido ao usu)rio editar o bu er do ob0eto ;E-. Caso contr)rio, o controle passa para o pr8ximo ob0eto ;E- na ;et9ist. 6entro de um bu er ;E-, o usu)rio pode editar, utili'ando*se do con0unto completo de teclas de navegao e edio. /e0a as tabelas abaixo. 2uando o usu)rio pressiona uma tecla de sa.da de ;E-, o controle passa G p8s*condio :A@;E ou /A936 respectiva, caso ten!a sido especi icada. ,e alguma das condies retornar valor verdadeiro 4.-.5, a edio do ob0eto ;E- ( encerrada e o controle passa para o pr8ximo ob0eto ;E-. Caso contr)rio, o controle permanece dentro do ob0eto ;E- corrente at( "ue um valor v)lido or entrado ou at( "ue o usu)rio tecle Esc. 2uando o usu)rio consegue entrar com um valor num ob0eto ;E-, ( atribu.do G respectiva vari)vel o valor do bu er do ob0eto ;E-. As seguintes tabelas listam teclas ativas num comando :EA6$

3a4ela -596 3e+las de &avegao em um REA(


3e+la Cursor para es"uerda, Ctrl*, Cursor para direita, Ctrl*6 Ctrl*Cursor para es"uerda, Ctrl*A Ctrl*Cursor para direita, Ctrl*C Cursor para cima, Ctrl*E Cursor para baixo, Ctrl*?, _ome End <ltimo caractere do ;ECtrl*_ome Ctrl*End Ao Caractere G es"uerda. @o move cursor para o ;Eanterior Caractere G direita. @o move cursor para o pr8ximo ;EPalavra G es"uerda Palavra G direita ;E- anterior :eturn, Ctrl*# Pr8ximo ;EPrimeiro caractere do ;E3n.cio do primeiro ;E3n.cio do <ltimo ;E-

3a4ela -5126 3e+las de Edio de REA(s


3e+la 6el, Ctrl*; +ac>space, Ctrl*_ Ctrl*Ctrl*I Ctrl*7 Ao Elimina caractere onde est) o cursor +ac>space Elimina palavra G direita Elimina do cursor at( o inal do ;E:etorna o ;E- ao seu valor original

3a4ela -5116 3e+las Comutativas em um REA(


3e+la 3ns, Ctrl*/ Ao Comuta modo de insero

5A%'$
,uspende a execuo de um programa at( "ue se0a pressionada uma tecla

Colgio Catanduvas

Prof. Hlio Lemes Costa Jr.

)-

CLIPPER Apostila de Linguagem de Programao I


Sinta*e
SA3- J<expPrompt>K J-& <id/ar>K

1999

Argumentos
<expPrompt> ( uma expresso de "ual"uer tipo. & assumido ( 1Aperte "ual"uer tecla para continuar...1 -& <id/ar> ( a vari)vel de "ual"uer categoria G "ual ser) atribu.da a tecla pressionada seu valor caractere. ,e <id/ar> no existe ou no est) visivel, ela ( criada como privada e ento l!e ( atribu.do o valor caractere.

(es+rio
SA3- ( um estado de espera "ue exibe um prompt ap8s enviar um carriage returnQline eed para a tela. Ento aguarda at( "ue o usu)rio aperte um tecla. ,e a cl)usula -& or especi icada, <id/ar> recebe o valor da tecla pressionada como caractere. ,e um Alt ou Ctrl ( pressionado, SA3- atribui C_:4D5 a <id/ar>. /alores no al anum(ricos entrados por Alt*n<mericos atribuem o caractere especi icado. ,e o caractere or do tipo "ue pode ser exibido, ele ( ecoado em tela. -eclas de uno so ignoradas a menos "ue atribu.das com ,E- C7@C-3&@ E ,E- AEI. SA3- ( um comando de compatibilidade e portanto no recomendado. Ele ( superado por Y...;E-Q:EA6 e 3@AEI45.

&otas
SA3- sem prompt$ Para interromper a execuo de um programa, especi i"ue SA3- 11 ou 3@AEI4D5, o segundo ( recomendado pois no perturba a posio do cursor na tela.

E*emplos
SA3- 1Aperte uma tecla...1 -& >eE

Comandos para manuteno de arquivos de dados


APPE+# BLA+,
Adiciona um registro va'io ao ar"uivo de dados corrente

Sinta*e
APPE@6 +9A@A

(es+rio
APPE@6 +9A@A adiciona um registro va'io no im do ar"uivo corrente e o torna o registro corrente. &s novos valores de campos so iniciali'ados em valores va'ios para cada tipo de dado. A campos caractere so atribu.dos espaos, campos num(ricos so iniciali'ados com 'ero, campos l8gicos so

Colgio Catanduvas

Prof. Hlio Lemes Costa Jr.

).

CLIPPER Apostila de Linguagem de Programao I

1999

iniciali'ados com also 4.C.5, a campos data so atribu.dos C-&64115, e campos memo so deixados va'ios. 2uando estiver operando em ambiente de rede e o ar"uivo corrente estiver compartil!ado, APPE@6 +9A@A tenta adicionar e ento travar o registro novo. ,e outro usu)rio tiver travado o ar"uivo com C9&CA45 ou travado 9A,-:EC45 Z R com :9&CA45, @E-E::45 retorna verdadeiro 4.-.5. @ote "ue um registro rec(m APPE@6ado permanece travado at( "ue voc trave outro registro ou execute 7@9&CA. @ote tamb(m "ue APPE@6 +9A@A no libera um C9&CA45 imposto pelo usu)rio corrente.

E*emplos
Este exemplo tenta adicionar um registro a um ar"uivo de dados compartil!ado e usa @E-E::45 para testar o sucesso da operao$ 7,E /endas ,_A:E6 @ES APPE@6 +9A@A 3C a@E-E::45 <atuali'a registro va'io>... E9,E % 1Append no reali'ado1 +:EAA E@63C APPE@6 :EC&:6 5 C:&# -emp

CLEA

ALL

Cec!a ar"uivos e libera as vari)veis p<blicas e privadas

Sinta*e
C9EA: A99

(es+rio
C9EA: A99 libera todas as vari)veis p<blicas e privadas, ec!a todos os ar"uivos abertos e os "ue a eles este0am relacionados em todas as )reas, e seleciona 4,E9EC-5 a )rea R. Ar"uivos relacionados so .ndices, alternate, e memo. @ote "ue C9EA: A99 no libera vari)veis est)ticas ou locais. C9EA: A99 ( um comando de compatibilidade e portanto no recomendado. ,eu uso em Clipper ( superado por comandos ou unes "ue executam a ao "ue voc necessita. Ar"uivos associados a )reas de trabal!o podem ser ec!ados de v)rias ormas com o comando C9&,E. 9iberao expl.cita de vari)veis no ( recomendada na maioria dos casos.

CLOSE
Cec!a um con0unto espec. ico de ar"uivos

Colgio Catanduvas

Prof. Hlio Lemes Costa Jr.

)/

CLIPPER Apostila de Linguagem de Programao I


Sinta*e
C9&,E J<idAlias> W A99 W A9-E:@A-E W 6A-A+A,E, W C&:#A- W 3@6E?E,K

1999

Argumentos
<idAlias> especi ica a )rea de trabal!o onde os ar"uivos sero ec!ados. A99 Cec!a ar"uivos de dados, alternate, e de ind.ces em todas as )reas. Al(m disso, libera todos os iltros, relaes e ormatos ativos. A9-E:@A-E Cec!a o ar"uivo alternate corrente, executa o mesmo "ue ,E- A9-E:@A-E -& sem argumento. 6A-A+A,E, Cec!a todos os ar"uivos de dados abertos, memos e .ndices ,ee also$ 273- :E-7:@ ,E- A9-E:@A-E ,E- 3@6E? 7,E 6A-A+A,E, Cec!a todos os ar"uivos de dados abertos, memos e .ndices em todas as )reas, e libera iltros e relaes ativas. Entretanto, ele no causa e eito no ormato ativo. C&:#A- libera o ormato corrente, executando a mesma ao "ue ,E- C&:#A- -& sem argumento. 3@6E?E, Cec!a todos ar"uivos de .ndice na )rea corrente.

(es+rio
C9&,E ( um comando de prop8sito geral "ue ec!a v)rios tipos de ar"uivos Clipper dependendo da cl)usula opcional especi icada. C9&,E sem opo ec!a o ar"uivo de dados corrente e seus .ndices, o mesmo "ue 7,E sem argumentos. Em Clipper, v)rios outros comandos ec!am ar"uivos, incluindo$ 273CA@CE9X :E-7:@ a partir da rotina principal C9EA: A99X 7,E sem argumentos

CO!!%'
Executa uma gravao em disco para todas as )reas ativas

Sinta*e
C&##3-

(es+rio

Colgio Catanduvas

Prof. Hlio Lemes Costa Jr.

)0

CLIPPER Apostila de Linguagem de Programao I

1999

C&##3- dirige os bu ers do Clipper para disco e executa sua gravao para todas as )reas de trabal!o com ar"uivos de dados ou .ndices abertos. -al caracter.stica est) dispon.vel apenas em 6&, 3.3 ou superior. ,ob 6&, 3.L ou in erior, o C&##3- dirige os bu ers do Clipper para os do 6&,. @o ambiente de rede, C&##3- a' todos os tipos de atuali'ao para um ar"uivo de dados e seus .ndices visiveis a outros processos.

E*emplos
@este exemplo, C&##3- ( utili'ado para orar a escrita em disco, ap8s atribuir o conte<do de vari)veis de mem8ria a vari)veis campo$ 7,E ,ales E?C97,3/E @ES #E#/A:*>@ame $H ,ales*>@ame #E#/A:*>Amount $H ,ales*>Amount QQ Y RD, RD ;E- #E#/A:*>@ame Y RR, RD ;E- #E#/A:*>Amount :EA6 QQ 3C 7P6A-E645 APPE@6 +9A@A ,ales*>@ame $H #E#/A:*>@ame ,ales*>Amount $H #E#/A:*>Amount C&##3E@63C

C EA'E
Cria um ar"uivo de estrutura 4.db 5 va'io

Sinta*e
C:EA-E <xcAr"uivoEstrutura >

Argumentos
<xcAr"uivoEstrutura > ( o nome do ar"uivo de estrutura va'io. Este argumento pode ser especi icado literalmente ou como expresso caractere entre parnteses. ,e no or colocada extenso, o assumido ser) 4.db 5.

(es+rio
& comando C:EA-E produ' um ar"uivo de estrutura va'io "ue tem o seguinte ormato$

3a4ela -5/6 #ormato de $m Arquivo de Estruturas


Campo R L 3 &ome Cield]name Cield]tEpe Cield]len 3ipo Caractere Caractere @um(rico 3aman<o RD R 3 (e+imais D

Colgio Catanduvas

Prof. Hlio Lemes Costa Jr.

)1

CLIPPER Apostila de Linguagem de Programao I


M Cield]dec @um(rico M D

1999

-al como o comando C&PI ,-:7C-7:E E?-E@6E6, C:EA-E pode ser usado 0untamente com C:EA-E C:&# para ormar um novo ar"uivo de dados. Ao contr)rio do comando C&PI ,-:7C-7:E E?-E@6E6, C:EA-E produ' um ar"uivo de dados va'io, e no necessita da presena de um outro ar"uivo de dados para isso. <xcAr"uivoEstrutura > ( automaticamente aberto na )rea de trabal!o corrente ap8s ser criado.

E*emplos
Este exemplo cria um novo ar"uivo de estrutura, coloca a de inio de um campo dentro do mesmo, e ento cria um novo ar"uivo de dados a partir da estrutura$ C:EA-E -emp,tru APPE@6 +9A@A :EP9ACE^ Cield]name S3-_ 1@ame1^ Cield]tEpe S3-_ 1C1^ Cield]len S3-_ L5^ Cield]dec S3-_ D C9&,E C:EA-E @edCile C:&# -emp,tru

#ELE'E
#arca registros para eliminao

Sinta*e
6E9E-E J<abrangncia> JS_39E <lCondio>K JC&: <lCondio>K

Argumentos
<abrangncia> ( a poro do ar"uivo de dados corrente a ser eliminada. ,e abrangncia no or especi icada, o comando 6E9E-E agir) somente no registro corrente. ,e uma <abrangncia> ou cl)usula condicional or especi icada, o padro torna*se todos 4A995 os registros. S_39E <lCondio> especi ica o con0unto dos registros "ue atendem a condio do registro corrente at( "ue a condio se0a alsa. C&: <lCondio> especi ica o con0unto de registros condicional a ser eliminado dentro da abrangncia.

(es+rio
& comando 6E9E-E marca os registros para "ue eles possam ser iltrados com o comando ,E6E9E-E6 &@, identi icados com a uno 6E9E-E645, ou isicamente removidos do ar"uivo de dados com o comando PACA. Al(m disso, comandos de visuali'ao de registros como, por exemplo, 93,- e 63,P9AI identi icam os registros marcados para eliminao com um asterisco 4X5. 7ma ve' marcados os registros, voc pode recuper)*los usando o comando :ECA99. ,e voc dese0ar remover todos os registros de um ar"uivo de dados, use o comando `AP ao inv(s dos comandos 6E9E-E A99 e PACA.

Colgio Catanduvas

Prof. Hlio Lemes Costa Jr.

)9

CLIPPER Apostila de Linguagem de Programao I

1999

@um ambiente de rede, o comando 6E9E-E pede "ue o registro corrente se0a travado atrav(s da uno :9&CA45, caso voc este0a marcando um <nico registro. ,e voc estiver marcando v)rios registros, o ar"uivo de dados corrente deve ser travado com a uno C9&CA45 ou aberto E?C97,3/E.

&otas
#arcao com o comando ,E- 6E9E-E6 &@$ ,e o registro corrente or eliminado com o comando ,E- 6E9E-E6 &@, ele permanecer) vis.vel at( "ue o ponteiro de registro se0a movido.

E*emplos
Este exemplo demonstra como deve ser especi icada a cl)usula C&: para marcar um con0unto de registros a ser eliminado$ 7,E ,ales 3@6E? ,alesman @ES 6E9E-E A99 C&: 3nactive

0O
#ove o ponteiro de registro para um registro espec. ico

Sinta*e
;&J-&K <n:egistro> W +&--&# W -&P

Argumentos
<n:egistro> especi ica o n<mero do registro destino. +&--&# especi ica o <ltimo registro na )rea de trabal!o corrente. -&P especi ica o primeiro registro na )rea de trabal!o corrente.

(es+rio
& comando ;& posiciona o ponteiro num registro especi icado na )rea de trabal!o corrente. & registro pode ser especi icado atrav(s de seu n<mero ou como registro in.cio ou im do ar"uivo. ,e a nova posio ( in.cio 4-&P5 e !) um .ndice ativo, o ponteiro de registros vai at( o primeiro registro do .ndice, ou ento para o registro R. Caso a nova posio se0a im 4+&--&#5 e !a0a um .ndice ativo, o ponteiro de registros vai para o <ltimo registro do .ndice, ou ento para a uno 9A,-:EC45. A orma ;& <n:egistro> do comando ( a mesma da cl)usula :EC&:6 de "ual"uer comando de ar"uivo de dados "ue aceite uma abrangncia. Acessando registros iltrados$ &s registros iltrados pelos comandos ,E- 6E9E-E6 &@ ou ,EC39-E: -& podem ser acessados por ;& <n:egistro>. ,e o comando 6E9E-E6 estiver em &@ ou se !ouver um C39-E: ativo, o comando ;& +&--&# vai para o <ltimo registro l8gico "ue no tiver sido marcado eQou atenda a condio do iltro. Caso o comando 6E9E-E6 estiver em &@ ou !a0a um C39-E: ativo, o comando ;& -&P vai para o primeiro registro l8gico "ue no tiver sido marcado eQou atenda a condio do iltro.

Colgio Catanduvas

Prof. Hlio Lemes Costa Jr.

,2

CLIPPER Apostila de Linguagem de Programao I

1999

3ndices de c!ave <nica$ :egistros no presentes em um .ndice criado com ,E- 7@327E &@ ou 3@6E?...7@327E podem ser acessados pelo comando ;& <n:egistro>. :egistro ora da aixa$ Em Clipper, um comando ;& "ue posiciona o ponteiro num registro ora do alcance do ar"uivo de dados no gera um erro em tempo de execuo. Pelo contr)rio, as unes E&C45 e +&C45 retornam verdadeiras 4.-.5 e o ponteiro de registros ( a0ustado para 9A,-:EC45 Z R. :e res! dos bu ers de ar"uivos de dados e de .ndices$ @um ambiente de rede, voc pode a'er re res! dos bu ers de ar"uivos de dados e de .ndices sem mover o ponteiro de registros, usando a uno ;& :EC@&

E*emplos
Estes exemplos mostram resultados do comando ;& simples$ 7,E ,ales @ES % 9A,-:EC45 ;& -&P % :EC@&45 ;& +&--&# % :EC@&45 ;& 5 % :EC@&45 ;& 5 Z R5 % :EC@&45 QQ :esulta$ VM QQ :esulta$ R QQ :esulta$ VM QQ :esulta$ 5 QQ :esulta$ LD

%+#EX
Cria um ar"uivo de .ndices.

Sinta*e
3@6E? &@ <expC!ave> -& <xc3ndice> J7@327EK

Argumentos
<expC!ave> ( uma expresso "ue retorna o valor c!ave a ser colocado no .ndice para cada registro na )rea de trabal!o corrente. <expC!ave> pode ser do tipo caractere, data, l8gico, ou num(rico. & taman!o m)ximo da expresso da c!ave de indexao ( de L5D caracteres. -& <xc3ndice> especi ica o nome do ar"uivo de .ndices a ser criado. & nome do ar"uivo pode ser especi icado literalmente ou por expresso caractere entre parnteses. @ormalmente, a extenso de ar"uivo padro ( 4.ntx5. ,e, contudo, voc lin>ou @6?.&+= a im de usar ar"uivos de .ndice compat.veis com d+A,E 333 P97,, a extenso padro passa a ser 4.ndx5. 7@327E especi ica "ue <xc3ndice> inclui somente valores de c!ave <nicos.

Colgio Catanduvas

Prof. Hlio Lemes Costa Jr.

,1

CLIPPER Apostila de Linguagem de Programao I


(es+rio

1999

& comando 3@6E? &@ cria um ar"uivo "ue cont(m um .ndice dos registros do ar"uivo de dados corrente baseado em <expC!ave>. 2uando o ar"uivo de .ndices ( usado, os registros do ar"uivo de dados aparecem na ordem da expresso c!ave, embora o .ndice no altere a ordem .sica dos registros dentro do ar"uivo de dados. & comando 3@6E? ordenas as c!aves de caractere de acordo com o valor A,C33 de cada caractere dentro da cadeia, valores num(ricos em ordem num(rica, ordem cronol8gica dos valores de datas, considerando datas em branco como valores baixos, e valores l8gicos classi icados com valor verdadeiro 4.-.5 considerados como valores altos. Campos memo no podem ser indexados. 2uando o comando 3@6E? &@ ( usado, todos os ar"uivos de .ndice abertos na )rea de trabal!o corrente so ec!ados e o novo ar"uivo de .ndices ( criado. 2uando a operao de indexao termina, o novo .ndice permanece aberto, tornando*se o .ndice de controle, e o ponteiro de registro ( posicionado no primeiro registro do .ndice. & comando 3@6E? assemel!a*se ao comando ,&:-, por(m no a' uma c8pia .sica do ar"uivo de dados, e ( atuali'ado a cada ve' "ue um novo valor c!ave ( entrado no ar"uivo de dados corrente. & comando ,&:- ( usado primordialmente para copiar um subcon0unto ordenado de registros para outro ar"uivo de dados. Em ambiente de rede, o comando 3@6E? abre um <xc3ndice> exclusivo. Caso !a0a al!a, ocorre um erro em tempo de execuo e a uno de erro respectiva ( c!amada. Consulte o cap.tulo Programando em :ede no livro Programando e 7tilit)rios para mais in ormaes.

&otas
3ndices de 6atas$ & Clipper aceita .ndices de data para os dois tipos de .ndice,4.ntx5 e 4.ndx5. Para uma expresso c!ave "ue possui uma data como subcon0unto da c!ave, trans orme a expresso numa de tipo caractere e use a uno 6-&,45 para converter a data em caractere. Por exemplo$ 7,E 3nvoices 3@6E? &@ Customer Z 6-&,43nv6ate5 -& 3nvoice /ari)veis declaradas$ /ari)veis locais e est)ticas no podem ser usadas em expresses de c!ave de indexao. 3sto acontece por"ue tais expresses so gravadas como texto nos ar"uivos de .ndice e so mais tarde expandidas para produ'ir valores c!ave. 7ma ve' "ue vari)veis locais e as est)ticas so invis.veis dentro das vari)veis macro, re erncias a elas dentro de expresses de c!ave de indexao no sero recon!ecidas devidamente. Pela mesma ra'o, uma vari)vel declarada com "ual"uer uma das outras declaraes em tempo de compilao como, por exemplo, #E#/A: ou C3E96, no so v)lidas dentro de uma expresso de c!ave de indexao. ,e or necess)ria "uali icao de nome 4alias5 ou de vari)vel numa expresso de c!ave de indexao, deve*se a'*lo claramente na expresso e no atrav(s de declaraes ao compilador. :egistros marcados e iltrados$ :egistros "ue esto iltrados ou marcados para eliminao no so inclu.dos no .ndice. 3ndices de ordem descendente$ Para criar .ndices de ordem ou sub*ordens descendentes, use a uno 6E,CE@645. Esta uno aceita "ual"uer tipo de dados como argumento e retorna o valor na orma complementar. 6epois, ao executar um ,EEA dentro do .ndice,use a uno 6E,CE@645 como parte do argumento de ,EEA.

Colgio Catanduvas

Prof. Hlio Lemes Costa Jr.

,)

CLIPPER Apostila de Linguagem de Programao I

1999

3ndices de ordem tipo dicion)rio$ Para criar um .ndice de ordem tipo dicion)rio de c!aves de caractere, use 7PPE:4<expC!ave>5 como expresso de .ndice. &rdens do tipo dicion)rio so a"uelas onde a di erenciao entre letras mai<sculas e min<sculas no ( eita. Ar"uivos de .ndice compat.veis$ & Clipper aceita ar"uivos de .ndice d+A,E 333 P97, compat.veis atrav(s da conexo de um driver de ar"uivo de dados.

Cuidado
& driver de ar"uivo de dados no aceita os mecanismos de segurana do d+A,E 333 P97,. 3sto signi ica "ue voc no pode ter programas Clipper e d+A,E 333 P97, acessando ao mesmo tempo os mesmos ar"uivos de .ndice numa rede sem comprometer a integridade dos mesmos. Com dois programas Clipper, por(m, o driver d+A,E 333 P97, unciona da mesma orma "ue o driver padro. 3ndice com c!aves <nicas$ 2uando voc utili'a os comandos 3@6E?...7@327E or ,E- 7@327E &@, o Clipper cria um .ndice "ue tem atributo de unicidade. e medida em "ue ( eita a indexao e dois ou mais registros tm o mesmo valor c!ave, o Clipper inclui somente o primeiro registro no .ndice. -oda ve' "ue o .ndice com c!aves <nicas or atuali'ado, reindexado, ou removido, somente registros com c!aves <nicas so acrescidos. @ote "ue um .ndice de c!aves <nicas ret(m o atributo de unicidade e no ( a etado por utili'aes subse"uentes do comando 7@327E. 7sando -:3#45$ & Clipper arma'ena valores de c!ave de indexao em incrementos ixos. 7ma <expC!ave> "ue muda o taman!o da c!ave pode criar um .ndice inoper)vel. 3sto acontece por"ue o taman!o das c!aves de indexao ( calculado por avaliao da <expC!ave> num registro em branco. 7ma <expC!ave> com -:3#45, portanto, sempre ( avaliada como sendo um string nulo 4115, o "ue ocasiona uma alta de correspondncia entre o destino e o taman!o da c!ave de inida. Para usar "ual"uer uma das unes -:3#45 use a uno PA6:45 para a'er com "ue os taman!os das c!aves se0am os mesmos, con orme o exemplo abaixo$ 7,E Customer @ES 3@6E? &@ PA6:4:-:3#49ast5 Z Cirst, MD5 -& Cust@ame

E*emplos
Estes exemplos mostram resultados do comando 3@6E? simples$ % -IPE41+ranc!15 3@6E? &@ +ranc! -& +ranc! % -IPE41Amount15 3@6E? &@ Amount -& Amount % -IPE416ate15 3@6E? &@ 6ate -& 6ate QQ :esulta$ C QQ :esulta$ @ QQ :esulta$ 6

&s dois exemplos abaixo criam .ndices de ordem descendente$ 7,E 3nvoices @ES 3@6E? &@ 6E,CE@643nv6ate5 -& 3nv,tac> 3@6E? &@ Customer Z 6E,CE@646-&,43nv6ate55 -& Cust,tac>

3a4ela -51)6 3e+las de Sa:da de um REA(


3e+la Ao

Colgio Catanduvas

Prof. Hlio Lemes Costa Jr.

,,

CLIPPER Apostila de Linguagem de Programao I


Ctrl*S, Ctrl*C, Pg7p, Pg6n :eturn, Ctrl*# Esc Cursor para cima Cursor para baixo Encerra um :EA6 gravando ;E- corrente

1999

Encerra um :EA6 a partir do <ltimo ;EEncerra um :EA6 sem gravar o ;E- corrente Encerra um :EA6 a partir do primeiro ;E- se :EA6E?3-45H.-. Encerra um :EA6 do <ltimo ;E- se :EA6E?3-45H.-.

&otas
+:EAA dentro de um :EA6$ &bserve "ue um +:EAA dentro de um comando :EA6 inali'a o :EA6 e limpa os ;E-s mesmo se a cl)usula ,A/E or usada. :EA6s anin!ados$ Para executar um comando :EA6 anin!ado dentro de um procedimento ,EAEI, /A936, ou S_E@ ou de uma uno de inida por usu)rio, declare ou crie uma nova ;et9ist, execute uma s(rie de declaraes Y...;E-, e depois o comando :EA6. 2uando o procedimento terminar, a nova ;et9ist ( liberada e a anterior torna*se vis.vel novamente. /e0a o exemplo abaixo. _ome e End$ -eclando _ome ou End vai para o primeiro ou <ltimo caractere "ue no estiver em branco num bu er de ob0eto ;E-. Cinali'ando um :EA6$ /oc pode inali'ar um comando :EA6 executando um C9EA:, C9EA: ;E-,, ou C9EA: A99 de dentro de uma rotina ,E- AEI ou uma uno de inida pelo usu)rio iniciada por /A936. 7P6A-E645$ Caso "ual"uer bu er de ob0eto ;E- ten!a sido mudado durante o comando :EA6 corrente, a uno 7P6A-E645 ( con igurada em verdadeiro 4.-.5.

E*emplos
& exemplo abaixo de ine v)rios ;E-s e a seguir usa o comando :EA6$ C9, c/arR $H c/arL $H c/ar3 $H ,PACE4RD5 Y RD, RD ,AI 1/ariavel 7m $1 ;E- c/arR /A936 aE#P-I4c/arR5 Y RR, RD ,AI 1/ariavel 6ois$1 ;E- c/arL S_E@ :-:3#4c/arR5 aH 17m1 Y RL, RD ,AI 1/ariavel -res$1 ;E- c/ar3 /A936 aE#P-I4c/ar35 :EA6 Este exemplo ilustra como executar um :EA6 anin!ado dentro de um procedimento ,E- AEI, S_E@, ou /A936 ou uno de inida pelo usu)rio$ 9&CA9 c@ame $H ,PACE4RD5 Y RD, RD ;E- c@ame /A936 ,ubCorm4 c@ame 5 :EA6 :E-7:@ C7@C-3&@ ,ubCorm4 c9oo>up 5 P:3/A-E ;et9ist $H TU 7,E ,ales 3@6E? ,alesman @ES ,EEA c9oo>up 3C C&7@645 Y R5, RD ;E- ,alesman Y RO, RD ;E- Amount QQ Cria novo ;et9ist

QQ Adiciona novos ;E-, a ;et9ist

Colgio Catanduvas

Prof. Hlio Lemes Costa Jr.

,-

CLIPPER Apostila de Linguagem de Programao I


:EA6 E@63C C9&,E ,ales :E-7:@ .-. QQ :EA6 ;et9ist QQ 93bera ;et9ist

1999

EPLACE
Atribui novos valores a vari)veis campo

Sinta*e
:EP9ACE <idCampo> S3-_ <exp> J, <idCampoL> S3-_ <expL>...K J<abrangncia>K JS_39E <lCondio>K JC&: <lCondio>K

Argumentos
<idCampo> ( o nome da vari)vel campo G "ual ser) atribu.do novo valor. ,e <idCampo> or precedido de um alias, a atribuio ocorre na )rea de trabal!o designada. <exp> ( o valor a ser atribu.do a <idCampo>. <abrangncia> ( a parte do ar"uivo de dados corrente onde atuar) o comando :EP9ACE. ,endo especi icada uma condio, o assumido ser) todos 4A995 os registros na )rea de trabal!o corrente. S_39E <lCondio> especi ica o con0unto de registros "ue atendem a condio do registro corrente, at( "ue a condio se0a alsa. C&: <lCondio> especi ica o con0unto condicional de registros sobre os "uais atuar) o comando :EP9ACE dentro da abrangncia.

(es+rio
& comando :EP9ACE atribui novos valores aos conte<dos de uma ou mais vari)veis campo nos registros correntes nas )reas de trabal!o especi icadas. As vari)veis campo destino podem ser do tipo caractere, data, l8gico, memo, ou num(rico. & comando :EP9ACE tem a mesma uno "ue o operador inline 4$H5 com a di erena "ue ele assume "ue uma re erncia sem um alias ( sempre para uma vari)vel campo. 3sto signi ica "ue voc pode atribuir novos valores a vari)veis campo usando declaraes de atribuio, desde "ue as re erncias a vari)veis campo se0am precedidas de um alias, o alias do campo, ou declaradas atrav(s de declarao de comando do campo, caso a re erncia se0a amb.gua. A abrangncia padro do comando :EP9ACE ( o registro corrente, a no ser "ue se0a especi icada uma abrangncia ou condio. Caso !a0a abrangncia ou condio especi icadas, o comando :EP9ACE atua em cada registro "ue atenda a condio eQou abrangncia.

Aviso
Ao usar o comando :EP9ACE num campo c!ave, o .ndice ( atuali'ado e a posio relativa do ponteiro de registro dentro do .ndice ( modi icada. 3sto signi ica "ue utili'ar o comando :EP9ACE num campo c!ave com uma abrangncia ou condio pode ocasionar um resultado errcneo. Para atuali'ar um campo c!ave, use o comando ,E- &:6E: -& D antes do comando :EP9ACE. 3sto assegura "ue o

Colgio Catanduvas

Prof. Hlio Lemes Costa Jr.

,.

CLIPPER Apostila de Linguagem de Programao I

1999

ponteiro de registro mova*se se"uencialmente em ordem natural. -odos os .ndices abertos, por(m, so atuali'ados se o comando :EP9ACE or usado no campo c!ave. @um ambiente de :ede, usar o comando :EP9ACE no registro corrente re"uer a uno :9&CA45. Executar o comando :EP9ACE com uma abrangncia eQou condio exige um C9&CA45 ou 7,E E?C97,3/E do ar"uivo de dados corrente. Caso o comando :EP9ACE estiver sendo executado em outra )rea de trabal!o atrav(s da especi icao de seu alias, esse registro tamb(m deve ser travado com um :9&CA45.

E*emplos
Este exemplo ilustra um uso simples do comando :EP9ACE$ 7,E Customer @ES APPE@6 +9A@A 7,E 3nvoices @ES APPE@6 +9A@A QQ :EP9ACE C!arges S3-_ Customer*>#ar>up X Cost,^ Custid S3-_ Customer*>Custid,^ Customer*>-ran6ate S3-_ 6A-E45 Ao usar declaraes de atribuio em lugar do comando :EP9ACE siga o seguinte exemplo$ C3E96*>C!arges $H Customer*>#ar>up X C3E96*>Cost C3E96*>Custid $H Customer*>Custid Customer*>-ran6ate $H 6A-E45

SELEC'
#uda a )rea de trabal!o corrente

Sinta*e
,E9EC- <xnArea> W <idAlias>

Argumentos
<xnArea> ( o n<mero da )rea de trabal!o entre 'ero e L5D. Este argumento ( uma expresso extendida e pode ser especi icada literalmente por um n<mero ou expresso num(rica entre parnteses. <idAlias> ( o nome de uma )rea de trabal!o existente a ser selecionada caso !a0a um ar"uivo de dados aberto na"uela )rea.

(es+rio
& comando ,E9EC- ( usado para mudar )reas de trabal!o. & Clipper aceita at( L5D )reas de trabal!o, e com cada )rea de trabal!o um !andle l8gico para abrir um ar"uivo de dados 0untamente com todos os seus atributos. :e erncias a )reas de trabal!o com o comando ,E9EC- podem ser eitas atrav(s de n<meros ou alias. & alias de uma )rea de trabal!o ( automaticamente atribu.do "uando um ar"uivo de dados ( usado na"uela )rea de trabal!o ou utili'ando*se a cl)usula A93A,.

Colgio Catanduvas

Prof. Hlio Lemes Costa Jr.

,/

CLIPPER Apostila de Linguagem de Programao I

1999

frea de trabal!o 'ero re ere*se G primeira )rea de trabal!o va'ia. 7sando isto, voc pode selecionar D e usar <xcAr"uivo> como um m(todo para a abertura de ar"uivos de dados.

&otas
Expresses alias$ Expresses alias so um m(todo muito mais e iciente de selecionar novas )reas de trabal!o do "ue o comando ,E9EC-. Ao inv(s de selecionar uma )rea de trabal!o e depois executar uma operao para a"uela )rea de trabal!o, voc pode aplicar um alias a uma expresso "ue execute a"uela operao. 3sto ( eito especi icando*se o alias da )rea de trabal!o dese0ada e a expresso entre parnteses. Por exemplo, para acessar o valor da uno E&C45 numa )rea de trabal!o no selecionada, voc normalmente executaria uma s(rie de declaraes como as seguintes$ ,E9EC- :emote % E&C45 ,E9EC- #ain 7sando a orma de expresso alias, estas declaraes icam da seguinte orma$ % :emote*>4E&C455 7,E...@ES$ Ao inv(s de usar os comandos ,E9EC- D e 7,E <xcAr"uivo> para abrir um ar"uivo de dados numa nova )rea de trabal!o, voc pode utili'ar 7,E <xcAr"uivo> @ES.

E*emplos
Este exemplo ilustra como uma s(rie de ar"uivos de dados pode ser aberta selecionando*se cada )rea de trabal!o atrav(s de seu n<mero e depois abrindo cada ar"uivo de dados na"uela )rea$ ,E9EC- R 7,E Customer ,E9EC- L 7,E 3nvoices ,E9EC- 3 7,E Parts ,E9EC- Customer 7m m(todo mais correto ( abrir cada ar"uivo de dados na pr8xima )rea de trabal!o dispon.vel especi icando a cl)usula @ES na lin!a de comando 7,E. @este exemplo, 7,E...@ES ( empregado ao inv(s do comando ,E9EC- D e depois 7,E$ 7,E Customer @ES 7,E 3nvoices @ES ,E9EC- Customer Este ragmento de c8digo ilustra a mudana de )reas de trabal!o 0untamente com a gravao do nome da )rea de trabal!o corrente em uma vari)vel utili'ando a uno ,E9EC-45. Ap8s executar uma operao na nova )rea de trabal!o, a )rea de trabal!o original pode ser re*selecionada atrav(s do nome da )rea de trabal!o arma'enada$ n9astArea $H ,E9EC-45 7,E @ed ile @ES QQ

Colgio Catanduvas

Prof. Hlio Lemes Costa Jr.

,0

CLIPPER Apostila de Linguagem de Programao I


<declaraes>... QQ ,E9EC- 4n9astArea5

1999

S,%P
#ove o ponteiro de registro para uma nova posio

Sinta*e
,A3P J<n:egistros>K JA93A, <idAlias> W <nArea-rabal!o>K

Argumentos
<n:egistros> ( uma expresso num(rica "ue especi ica o n<mero de registros para mover o ponteiro a partir da posio corrente. 7m valor positivo especi ica deslocamento do ponteiro para rente e valores negativos signi icam deslocamento do ponteiro para tr)s. A93A, <idAlias>W<nArea-rabal!o> especi ica o nome alias como literal ou a )rea de trabal!o como expresso num(rica. ,A3P especi icado sem argumentos move o ponteiro R registro para rente.

(es+rio
,A3P move o ponteiro para uma nova posio relativa G posio corrente na )rea corrente e dentro do iltro corrente, caso exista um. ,A3P ( geralmente usado para operaes com relat8rios, "ue necessitam mover o ponteiro para o pr8ximo registro. ,e o alias or especi icado, o ponteiro pode ser movido em outra )rea sem selecion)*la. ,A3P pode mover o ponteiro para rente ou para tr)s. Caso no exista .ndice ativo, ,A3P move o ponteiro relativo G posio corrente no ar"uivo destino. ,e existe um .ndice ativo, ,A3P move o ponteiro relativo G posio corrente no .ndice ao inv(s do ar"uivo de dados. ,A3P a rente em posies al(m do im de ar"uivo com o ponteiro em 9A,-:EC45 Z R e E&C45 sempre retornam verdadeiro 4.-.5. #over o ponteiro para antes do +&C45 retona verdadeiro 4.-.5. Em rede, "ual"uer movimentao de ponteiro, inclusive ,A3P, ir) tornar as modi icaes na )rea corrente vis.veis a outras aplicaes se o ar"uivo corrente est) ,_A:E6 e as alteraes oram eitas durante um :9&CA45. ,e, entretanto, as modi icaes orem eitas durante um C9&CA45, a visibilidade no ( garantida at( a liberao do travamento, um C&##3-, ou o ec!amento do ar"uivo. Para orar uma atuali'ao a ser vis.vel sem mudar a posio corrente, use ,A3P D

E*emplos
& exemplo seguinte usa ,A3P com v)rios argumentos e mostra o resultado$ 7,E Customers @ES ,A3P % :EC@&45 QQ :esulta$ L ,A3P RD % :EC@&45 QQ :esulta$ RL

Colgio Catanduvas

Prof. Hlio Lemes Costa Jr.

,1

CLIPPER Apostila de Linguagem de Programao I


,A3P *5 % :EC@&45 QQ :esulta$ \

1999

& exemplo seguinte move o ponteiro em )reas remotas$ 7,E Customers @ES 7,E 3nvoices @ES ,A3P A93A, Customers Este exemplo imprime um relat8rio usando ,A3P para mover o ponteiro se"uencialmente atrav(s do ar"uivo$ 9&CA9 n9ine $H NN 7,E Customers @ES ,E- P:3@-E: &@ 6& S_39E aE&C45 3C n9ine > 55 E=ECn9ine $H R E@63C % Customer, Address, CitE, ,tate, `ip n9ineZZ ,A3P E@66& ,E- P:3@-E: &CC

6AP
:emove todos os registros do ar"uivo corrente

Sinta*e
`AP

(es+rio
& comando `AP remove permanentemente todos os registros dos ar"uivos presentes na )rea corrente. 3sto inclui ar"uivos de dados, .ndices e memo. & espao em disco ocupado ( liberado. `AP executa o mesmo "ue 6E9E-E A99 e PACA, por(m ( "uase instantBneo. Para emitir `AP na rede, o ar"uivo deve estar em 7,E E?C97,3/E

E*emplos
Este exemplo demonstra um `AP em rede$ 7,E ,ales @ES E?C97,3/E 3C a@E-E::45 ,E- 3@6E? -& ,ales, +ranc!, ,alesman `AP C9&,E ,ales E9,E % 1`ap no executado1

Colgio Catanduvas

Prof. Hlio Lemes Costa Jr.

,9

CLIPPER Apostila de Linguagem de Programao I


+:EAA E@63

1999

Comandos para pesquisa em arquivos


SEE,
Pes"uisa um .ndice atrav(s de um valor c!ave especi icado

Sinta*e
,EEA <expPes"uisa>

Argumentos
<expPes"uisa> ( uma expresso G "ual a c!ave de indexao dever) corresponder.

(es+rio
& comando ,EEA pes"uisa o .ndice de controle "ue comea com a primeira c!ave e continua at( "ue se0a encontrada correspondncia ou at( "ue !a0a um valor c!ave maior do "ue o argumento de pes"uisa. Caso !a0a correspondncia, o ponteiro de registro ( posicionado no n<mero do registro encontrado no .ndice. ,e ,&C-,EEA estiver em &CC 4o padro5 e no se0a encontrada correspondncia, o ponteiro de registro ( posicionado em 9A,-:EC45 Z R, E&C45 retorna valor verdadeiro 4.-.5, e C&7@645 retorna valor also 4.C.5. Caso ,&C-,EEA este0a em &@, o ponteiro de registro ( posicionado no registro "ue ten!a o primeiro valor c!ave maior do "ue o argumento de procura, e C&7@645 retorna valor also 4.C.5. @esse caso, E&C45 retornar) valor verdadeiro 4.-.5 somente se no !ouver nen!uma c!ave no .ndice "ue se0a maior do "ue o argumento de pes"uisa. & comando ,E- E?AC- no tem e eito algum sobre a operao do comando ,EEA.

E*emplos
Este exemplo ilustra o e eito do comando ,EEA em v)rios ar"uivos de dados$ 7,E ,ales 3@6E? +ranc! @ES ,EEA 1RDD1 % C&7@645, E&C45, :EC@&45

QQ :esulta$ .-. .C. R

A uno de inida pelo usu)rio exempli icada abaixo executa um comando ,EEA exato para um .ndice com uma c!ave de caractere$ 7,E 3nvoice 3@6E? 3nvoice @ES % 3C4,ee>Exact41RDDDR15,1Encontrado1,1@o Encontrado15 :E-7:@ C7@C-3&@ ,ee>Exact4 c,earc! 5 ,EEA PA694 c,earc!, 9E@4P43@6E?AEI4D555 5 :E-7:@ 4C&7@6455

Colgio Catanduvas

Prof. Hlio Lemes Costa Jr.

-2

CLIPPER Apostila de Linguagem de Programao I Comandos para clculos sobre registros


CO(+'
-otali'a o n<mero de registros e coloca o resultado numa vari)vel

1999

Sinta*e
C&7@- -& <id/ar> J<abrangncia>K JS_39E <lCondio>K JC&: <lCondio>K

Argumentos
-& <id/ar> identi ica a vari)vel G "ual ser) atribu.do o resultado do comando C&7@-. 7ma vari)vel "ue no existe ou no ( vis.vel ( criada como uma vari)vel do tipo privada cu0a abrangncia ( o procedimento corrente. <abrangncia> ( a parte do ar"uivo de dados corrente onde o comando C&7@- atuar). & padro ( todos 4A995 os registros. S_39E <lCondio> especi ica o con0unto de registros "ue atendem a condio do registro corrente at( "ue a condio se0a alsa. C&: <lCondio> especi ica o con0unto de registros condicional para o comando C&7@- dentro da abrangncia.

(es+rio
& comando C&7@- totali'a o n<mero de registros da )rea de trabal!o corrente "ue atendem as condies e abrangncia especi icadas. & resultado ( ento alocado G vari)vel em "uestao. <id/ar> pode ser uma vari)vel de "ual"uer classe de arma'enamento, inclusive um campo.

E*emplos
Este exemplo demonstra um C&7@- do campo +ranc!es em ,ales.db $ 7,E ,ales @ES % 9A,-:EC45 QQ :esulta$ VM C&7@- -& n+ranc!Cnt C&: +ranc! HH RDD % n+ranc!Cnt QQ :esulta$ M Este exemplo totali'a o n<mero de registros em ,ales.db , cu0o campo +ranc! tem o valor de RDD, e atribui o resultado ao campo Count no +ranc!.db para branc! HH RDD$ 7,E +ranc! 3@6E? +ranc! @ES ,EEA RDD 7,E ,ales 3@6E? ,ales+ranc! @ES ,EEA RDD C&7@- -& +ranc!*>Count S_39E +ranc! HH RDD

Colgio Catanduvas

Prof. Hlio Lemes Costa Jr.

-1

CLIPPER Apostila de Linguagem de Programao I


S(!
,oma expresses num(ricas e coloca o valor em vari)veis

1999

Sinta*e
,7# <n9ista expr> -& <id9ista var> J<abrangncia>K JS_39E <lCondio>K JC&: <lCondio>K

Argumentos
<n9ista expr> ( a lista de valores num(ricos a serem somados para cada registro processado. <id9ista var> identi ica as vari)veis receptoras da soma. /ari)veis "ue no existam ou no se0am vis.veis so criadas como privadas. <id9ist var> deve conter o mesmo n<mero de elementos de <n9ista expr>. <abrangncia> ( a poro do ar"uivo de dados a ser somada 4,7#5. & assumido ( todos 4A995. S_39E <lCondio> especi ica o con0unto de registros a partir do registro corrente at( "ue a condio se0a alsa. C&: <lCondio> especi ica o con0unto condicional de registros a serem somados dentro da abrangncia dada.

(es+rio
,7# soma uma s(rie de expresses num(ricas e arma'ena o resultado em vari)veis para uma aixa de registros na )rea corrente. @ote "ue <n9ista expr> ( necess)ria e no opcional como em outros dialetos.

E*emplos
& exemplo seguinte ilustra o uso de ,7#$ 7,E ,ales @ES ,7# Price X .RD, Amount -& n,umR, n,umL % n,umR % n,umL QQ :esulta$ R5R5R5.DD QQ :esulta$ R5DO\5.DD

Comandos para controle do fluxo do programas


#O$
3nvoca um procedure

Sinta*e
6& <idProcedure> JS3-_ <lista argumentos>K

Colgio Catanduvas

Prof. Hlio Lemes Costa Jr.

-)

CLIPPER Apostila de Linguagem de Programao I


Argumentos
<idProcedure> ( o nome do procedure a executar.

1999

S3-_ especi ica uma <lista argumentos> de at( RLV argumentos, separados por v.rgulas, a passar para <idProcedure>. Cada argumento pode ser uma vari)vel, campo, vetor, elemento de vetor, expresso ou ob0eto. Argumentos podem ser saltados ou no mencionados no im da lista.

(es+rio
A declarao 6& invoca um procedure, opcionalmente passando parBmetros para a rotina invocada. Ele executa a mesma uno de um procedure ou uno de usu)rio c!amada na lin!a pelo pr8prio nome com exceo de "ue outras vari)veis "ue no campos so passados por re erncia. 6e orma a ser passado como argumento, um campo deve ser colocado entre parnteses a menos "ue declarado C3E96 ou especi icado com alias. Em Clipper, o n<mero de argumentos passados no precisa ser o mesmo "ue a"uele "ue temos na rotina invocada. ,e o n<mero or menor "ue o n<mero de parBmetros, os parBmetros sem correspondncia sero iniciali'ados com @39. & mesmo ocorre com os argumentos saltados em <lista argumentos>. Para detectar a posio do <ltimo argumento passado em <lista argumentos>, use PC&7@-45. Para detectar um argumento saltado, compare*o com @39. Adicionalmente, 6& tamb(m tem o e eito de compilar se o programa corrente est) sendo compilado sem a opo Q#. ,e o Clipper encontra um 6& e a rotina corrente no oi compilada ainda, ele busca no diret8rio corrente por um ar"uivo 4.prg5 com o mesmo nome e o compila. ,e este ar"uivo com o mesmo nome da rotina no or encontrado, ele ( assumido E?-E:@A9, e uma re erncia ( adicionada ao ar"uivo ob0eto 4.ob05. Em tempo de lin>agem, o lin>er ir) procurar em outros ar"uivos ob0eto e bibliotecas por esta re erncia. Em Clipper 5.D, 6& ( uma declarao de compatibilidade e portanto no recomendada. Ele ( superado por invocar uma uno ou procedure pelo pr8prio nome na lin!a. 6esde "ue a conveno ( passagem por valor, voc deve pre ixar o argumento com o sinal de passagem por re erncia 4Y5 de orma a pass)*lo por re erncia. ,e voc est) usando 6& para mel!orar a legibilidade do c8digo, um comando de inido pelo usu)rio especi icado com a diretiva [command pode prover grande legibilidade sem sacri icar a segurana de vari)veis passadas como parBmetros.

E*emplos
Este exemplo executa um procedure sem parBmetros$ 6& Accts:pt Accts:pt45QQ #(todo pre erido Este exemplo executa um procedure passando duas constantes$ 6& 2tr:pt S3-_ 1L1, 16iviso de /endas1 2tr:pt41L1, 16iviso de /endas15 QQ #(todo pre erido @este exemplo, um procedure ( executado com o primeiro argumento passado por valor e o segundo por re erncia$ n@umber H RL 6& Iear:pt S3-_ n@umber Z RL, n@umber

Colgio Catanduvas

Prof. Hlio Lemes Costa Jr.

-,

CLIPPER Apostila de Linguagem de Programao I


Iear:pt4n@umber Z RL, Yn@umber5 QQ #(todo pre erido

1999

A"ui, um procedure ( invocado com argumentos saltados numa lista de argumentos$ 6& 6isplaESindod S3-_ ,,,,1=anela1 6isplaESindod4,,,,1=anela15 QQ #(todo pre erido

#O CASE
Executa um de v)rios blocos de declaraes.

Sinta*e
6& CA,E CA,E <lCondioR> <declaraes>... JCA,E <lCondioL>K <declaraes>... J&-_E:S3,EK <declaraes>... E@6JCA,EK

Argumentos
CA,E <lCondio> de ine um bloco de declaraes para executar caso <lCondioo> ( avaliada como verdadeira 4.-.5. &-_E:S3,E de ine um bloco de declaraes para executar caso nen!um dos CA,E se0a verdadeiro 4.-.5.

(es+rio
6& CA,E...E@6CA,E ( uma estrutura de controle "ue executa um de v)rios blocos de declaraes dependendo de "ual das condies associadas se0a verdadeira 4.-.5. Ele trabal!a desviando a execuo para as declaraes seguintes ao primeiro CA,E <lCondio> "ue or verdadeiro 4.-.5. Execuo continua at( "ue o pr8ximo CA,E, &-_E:S3,E ou E@6CA,E se0a encontrado. Controle ento ( desviado para a primeira instruo seguinte ao E@6CA,E. ,e nen!uma das condies CA,E or avalida como verdadeira 4.-.5, as declaraes seguintes ao &-_E:S3,E so executadas at( "ue se0a encontrado o E@6CA,E. Caso no se0a especi icado um &-_E:S3,E, o controle desvia para a instruo em seguida ao E@6CA,E. 2ual"uer n<mero de declaraes incluindo outras estruturas de controle 4i.e., 6& S_39E e C&:5, podem ser anin!ados dentro de uma estrutura 6& CA,E. Adicionalmente, no !) limite .sico de declaraes CA,E "ue podem ser contidas dentro de uma estrutura 6& CA,E. 6& CA,E...E@6CA,E ( idntico ao 3C...E9,E3C...E@63C sem "ual"uer vantagem de um sobre o outro.

E*emplos
& exemplo a seguir demonstra uma estrutura de menu usando 6& CA,E$

Colgio Catanduvas

Prof. Hlio Lemes Costa Jr.

--

CLIPPER Apostila de Linguagem de Programao I


Y 3, L5 P:&#P- 1Primeira escol!a1 Y M, L5 P:&#P- 1,egunda escol!a1 #E@7 -& nC!oice QQ 6& CA,E CA,E nC!oice HH D :E-7:@ CA,E nC!oice HH R C!oice&ne45 CA,E nC!oice HH L C!oice-do45 E@6CA,E

1999

#O 57%LE
Executa um bloco en"uanto uma condio ( verdadeira.

Sinta*e
J6&K S_39E <lCondio> <declaraes>... JE?3-K <declaraes>... J9&&PK <declaraes>... E@6J6&K

Argumentos
<lCondio> ( a expresso l8gica de controle do 6& S_39E. E?3- incondicionalmente desvia o controle de dentro de um 6& S_39E para a instruo imediatamente seguinte ao E@66&. 9&&P desvia o controle para o 6& S_39E mais recente.

(es+rio
6& S_39E...E@66& ( uma estrutura de controle "ue executa um bloco repetitivamente, en"uanto <lCondio> or avaliada como verdadeira 4.-.5. 2uando a condio ( avaliada como verdadeira 4.-.5, o controle passa para dentro da estrutura e assim continua at( "ue um E?3-, 9&&P, ou E@66& se0a encontrado. E@66& retorna o controle para o 6& S_39E e processo se repete. ,e um E?3- or encontrado, o controle ( desviado para o pr8ximo E@66&. ,e um 9&&P or encontrado, controle desvia para o mais recente 6& S_39E. ,e a condio ( avaliada como alsa 4.C.5, a estrutura 6& S_39E termina e o controle passa para a instruo imediatamente seguinte ao E@66&. E?3- ( usado geralmente para encerrar a execuo de um 6& S_39E baseado em uma condio di erente da condio deste. 9&&P, ao contr)rio, ( usado para evitar a execuo de instrues dentro do 6& S_39E, baseado numa condio intermedi)ria, e desvia imediatamente de volta para a declarao 6& S_39E. Estruturas 6& S_39E podem ser anin!adas dentro de "uais"uer outras estruturas at( "ual"uer n.vel. & <nico re"uisito ( "ue estas estruturas este0am devidamente anin!adas.

Colgio Catanduvas

Prof. Hlio Lemes Costa Jr.

-.

CLIPPER Apostila de Linguagem de Programao I


E*emplos

1999

& exemplo a seguir demonstra uma estrutura de controle t.pica para um relat8rio por grupos$ 9&CA9 c&ld,alesman, n-otalAmount 7,E ,ales 3@6E? ,alesman @ES S_39E aE&C45 c&ld,alesman H ,ales*>,alesman n-otalAmount H D S_39E c&ld,alesman H ,ales*>,alesman .A@6. 4.@&-. E&C455 % ,ales*>,alesman, ,ales*>Amount n-otalAmount H n-otalAmount Z ,ales*>Amount ,A3P E@66& % 1-otal$ 1, n-otalAmount, 1para1, c&ld,alesman E@66& C9&,E ,ales & ragmento de c8digo a seguir demonstra como 9&&P pode ser utili'ado para ornecer uma condio intermedi)ria$ S_39E <lCondio> <processamento inicial>... 3C <condio intermedi)ria> 9&&P E@63C <continua processamento>... E@66& Este exemplo mostra o uso de 6& S_39E para simular uma estrutura repita en"uanto$ 9&CA9 l#ore H .-. S_39E l#ore <instrues>... l#ore $H 4<lCondio>5 E@66& & exemplo a seguir mostra uma estrutura "ue se move se"uencialmente num ar"uivo de dados$ S_39E aE&C45 <bloco>... ,A3P E@66&

8O
Executa um bloco um certo n<mero de ve'es.

Sinta*e
C&: <idContador> H <n3nicio> -& <nCim> J,-EP <n3ncremento>K <3nstrues>... JE?3-K

Colgio Catanduvas

Prof. Hlio Lemes Costa Jr.

-/

CLIPPER Apostila de Linguagem de Programao I


<3nstrues>... J9&&PK @E?-

1999

Argumentos
<idContador> ( o nome da vari)vel de controle do loop. ,e o <idContador> no existe ou no est) vis.vel, uma vari)vel P:3/A-E ( criada. <n3n.cio> ( o valor inicial atribu.do a <idContador>. ,e <n3ncremento> ( negativo, <n3nicio> deve ser menor "ue <nCim>. -& <nCim> de ine o valor inal de <idContador>. ,e <n3ncremento> ( negativo,<n3nicio> deve ser maior "ue <nCim>, seno <n3nicio> deve ser menor "ue <nCim>. ,-EP <n3ncremento> de ine a "uantidade de <idContador> a ser mudada para cada iterao do loop. <n3ncremento> pode ser positivo ou negativo. ,e a cl)usula ,-EP no or especi icada, <idContador> ( incrementado de um para cada iterao do loop. E?3- incondicionalmente desvia o controle de dentro de um C&:...@E?- para a pr8xima instruo seguindo ao @E?-. 9&&P desvia o controle para o mais recente C&:.

(es+rio
C&:...@E?- ( uma estrutura de controle "ue executa um bloco um determinado n<mero de ve'es. A estrutura de controle parte do valor inicial de <idContador> at( o valor de <nCim>, movendo*se no incremento especi icado por <n3ncremento>. -odas as expresses na declarao C&: so avaliadas para cada iterao do loop. @o entanto, <n3nicio> e <nCim> podem ser modi icados con orme a estrutura ( operada. 7ma estrutura C&: opera at( "ue <idContador> se0a maior "ue <nCim>, ou se0a encontrado um E?3-. Controle ento desvia para a instruo seguinte ao @E?-. ,e um 9&&P or encontrado, controle desvia para a declarao C&:. ,e <n3ncremento> ( um valor negativo, <idContador> ( decrementado ao inv(s de incrementado. & C&:, entretanto, continua at( "ue <idContador> se0a menor "ue <nCim>. 3sto signi ica "ue <nCim> deve ser menor "ue <n3nicio> "uando o C&: iniciar. Estruturas C&: so <teis para percorrer atrav(s de vetores onde <idContador> ( usado como ind.ce do vetor. /e0a exemplo abaixo. C&:...@E?- como "ual"uer outra estrutura pode ser anin!ado em "ual"uer n.vel. & <nico re"uisito ( "ue as estruturas de controle se0am corretamente anin!adas.

E*emplos
Este exemplo percorre um vetor em ordem ascendente$ n9enArraE $H 9E@4aArraE5 C&: i H R -& n9enArraE <instrues>...

Colgio Catanduvas

Prof. Hlio Lemes Costa Jr.

-0

CLIPPER Apostila de Linguagem de Programao I


@E? Para percorrer em ordem descentente$ n9enArraE $H 9E@4aArraE5 C&: i H n9enArraE -& R ,-EP *R <instrues>... @E?-

1999

8(+C'%O+
6eclara o nome de uma uno e seus parBmetros ormais.

Sinta*e
J,-A-3CK C7@C-3&@ <idCuno>J4<idParam lista>5K J9&CA9 <identi icador> JJ$H <iniciali'ador>K, ... KK J,-A-3C <identi icador> JJ$H <iniciali'ador>K, ... KK JC3E96 <lista identi icadores> J3@ <idAlias>K J#E#/A: <lista identi icadores>K . . <corpo da uno> . :E-7:@ <exp>

Argumentos
<idCuno> ( o nome da uno de usu)rio a declarar. @omes de uno podem ter "ual"uer taman!o, mas somente os RD primeiros caracteres so considerados.@omes podem ter "ual"uer combinao de caracteres, n<meros e sublin!ados, mas sublin!ados na primeira posio so reservados. <idParam lista> ( a declarao de uma ou mais vari)veis parBmetro. /ari)veis especi icadas nesta lista so declaradas local. ,-A-3C C7@C-3&@ declara uma uno "ue pode ser invocada somente por rotinas declaradas no mesmo ar"uivo 4.prg5. 9&CA9 declara e opcionalmente iniciali'a uma lista de vari)veis ou vetores "ue ten!am visibilidade e vida <til para a uno corrente. ,-A-3C declara e opcionalmente iniciali'a uma lista de vari)veis ou vetores "ue tem visibilidade na uno corrente mas vida <til durante a execuo do programa. C3E96 declara uma lista de identi icadores para usar "uando orem encontrados nomes de campo. ,e a cl)usula 3@ or especi icada, re erir*se ao nome especi icado inclui uma re erncia impl.cita ao alias especi icado. #E#/A: declara uma lista de identi icadores para utili'ar como vari)veis ou vetores public ou private onde "uer "ue encontrados. :E-7:@ <exp> passa o controle de volta a rotina "ue invocou, retornando o valor <exp> como valor de retorno da uno. Cada uno deve ter ao menos um :E-7:@ "ue retorne um valor. :E-7:@ pode ocorrer em "ual"uer local do corpo da uno.

Colgio Catanduvas

Prof. Hlio Lemes Costa Jr.

-1

CLIPPER Apostila de Linguagem de Programao I


(es+rio

1999

C7@C-3&@ declara uma uno de inida pelo usu)rio e opcionalmente uma lista de vari)veis locais para recepo de parBmetros re"uentemente c!amados de parBmetros ormais. 7ma uno de usu)rio ( um subprograma compreendendo um con0unto de declaraes e instrues executadas onde "uer "ue voc aa re erncia a <idCuno> seguido de abre e ec!a parnteses. 7ma de inio de uno inicia com a declarao C7@C-3&@ e termina com a pr8xima declarao C7@C-3&@, declarao P:&CE67:E ou im de ar"uivo. Cunes so usadas para encapsular um bloco de c8digo e mais tarde criar expresses usando o valor retornado. Cunes e procedures, aumentam a modularidade, legibilidade, isolam modi icaes e auxiliam no gerenciamento de aplicaes complexas. 7ma uno em Clipper ( similar a um procedure com a exceo de "ue retorna um valor. & valor retornado pode ser "ual"uer tipo de dado incluindo um vetor, bloco de c8digo ou @39. -oda uno deve iniciar com a declarao C7@C-3&@ e deve conter ao menos um :E-7:@ com um argumento. 6eclaraes de uno no podem ser anin!adas com outras declaraes de uno. 7ma uno pode ser usada em "ual"uer lugar onde uma uno padro pode ser usada, incluindo expresses. A visibilidade das unes cai em duas classes. Cunes "ue so vis.veis em "ual"uer lugar e "ue so denominadas unes p<blicas e declaradas com C7@C-3&@. Cunes "ue so vis.veis somente no 4.prg5 corrente e so denominadas unes est)ticas e so declaradas com ,-A-3C C7@C-3&@. Cunes est)ticas so muito <teis por v)rias ra'oes. Primeira, elas limitam a visibilidade do nome da uno, restringindo o acesso a esta.Por causa disto, subsistemas de inidos dentro de um <nico 4.prg5 podem ornecer um protocolo de acesso com uma s(rie de unes p<blicas e conceber os detal!es de implementao do subsistema dentro de unes e procedures. ,egundo, desde "ue re erncias para unes static so resolvidas em tempo de compilao, elas precedem re erncias a unes public "ue so resolvidas em tempo de lin>er. 3sto assume "ue dentro de um ar"uivo de programa, uma re erncia para uma uno static executa a"uela uno se existir um con lito com uma uno public.

&otas
C!amando uma uno de inida pelo usu)rio$ 7ma uno de inida pelo usu)rio ( c!amada usando a mesma notao de uma uno Clipper$ <idCuno>4J<lista argumentos>K5 7ma uno de inida pelo usu)rio pode ser c!amada dentro de uma expresso ou na lin!a pelo seu nome. ,e c!amada na lin!a pelo pr8prio nome, o valor de retorno ( ignorado. 7ma uno de usu)rio pode ser c!amada como uma expresso com alias e entre parnteses, como por exemplo$ <idAlias>*>4<idCuno>4<lista argumentos>55 2uando uma uno ( c!amada como expresso com alias, a )rea de trabal!o associada com <idAlias> ( selecionada, a expresso executada, e a )rea original selecionada novamente. Como "ual"uer outra expresso, uma expresso com alias pode ser invocada na lin!a por si mesma. 7ma uno de usu)rio pode c!amar a si mesma de orma recursiva. ParBmetros$ Cunes podem receber parBmetros a partir de outra uno, procedure, ou lin!a de comando do 6&,. Em Clipper 5.D, existem duas maneiras de receber parBmetros$ uma lista de

Colgio Catanduvas

Prof. Hlio Lemes Costa Jr.

-9

CLIPPER Apostila de Linguagem de Programao I

1999

nomes de vari)veis locais pode ser declarada como parte da declarao C7@C-3&@ 4c!amada de parBmetros ormais5 ou uma lista de vari)veis privadas pode ser especi icada em separado com uma declarao PA:A#E-E:,. @ote "ue as duas no podem ser misturadas. Caso o se0am, ir) resultar num erro atal de compilao. Cunes recebem parBmetros na ordem em "ue so passados. Em Clipper, o n<mero de parBmetros no precisa ser igual ao n<mero de argumentos enviados. Argumentos podem ser saltados ou no inclusos no inal da lista. 7m parBmetro "ue no ven!a a receber um valor ser) iniciali'ado com @39. ,e orem especi icados argumentos, PC&7@-45 ir) retornar a posio do <ltimo argumento passado. ParBmetros especi icados em unes de usu)rio podem receber valores passados por valor ou por re erncia. & m(todo assumido para expresses e variaveis ( por valor. 3sto inclui vari)veis "ue conten!am re erncias a vetores ou ob0etos. /ari)veis "ue no se0am campos precedidas do operador passa por re erncia 4Y5 so passadas por re erncia. Campos no podem ser passados por re erncia e so sempre passados por valor.

E*emplos
Este exemplo mostra uma uno destinada a ormatar valores monet)rios$ % CurrencE4 RDDD 5QQ :esulta$ bR.DDD,DD C7@C-3&@ CurrencE4 n@umber 5 9&CA9 c@umber 3C n@umber < D c@umber $H -:A@,C&:#4*R X n@umber, 1YE NNN.NNN.NNN.NNN,NN15 c@umber $H PA69414b1 Z 9-:3#4c@umber5 Z 151, 9E@4c@umber55 E9,E c@umber $H -:A@,C&:#4n@umber, 1YE NNN.NNN.NNN.NNN,NN15 c@umber $H PA6941b1 Z 9-:3#4c@umber5, 9E@4c@umber55 E@63C :E-7:@ c@umber Este exemplo demonstra uma uno de usu)rio "ue toma um string "ue ( uma lista de .tens separados por v.rgulas e retorna um vetor com um .tem por elemento$ a9ist $H 9istAsArraE41&ne,-do15 QQ :esulta$ T1&ne1, 1-do1U C7@C-3&@ 9istAsArraE4 c9ist 5 9&CA9 nPos 9&CA9 a9ist $H TU QQ 6e ine vetor va'io QQ 6& S_39E 4nPos $H A-41,1, c9ist55 aH D AA664a9ist, ,7+,-:4c9ist, R, nPos * R55 QQ Adiciona novo elemento c9ist $H ,7+,-:4c9ist, nPos Z R5 E@66& AA664a9ist, c9ist5 QQ :E-7:@ a9istQQ :etorna o vetor & exemplo a seguir demonstra como determinar se um argumento oi saltado comparando um parBmetro com @39$

Colgio Catanduvas

Prof. Hlio Lemes Costa Jr.

.2

CLIPPER Apostila de Linguagem de Programao I


C7@C-3&@ #ECunc4 paramR, paramL, param3 5 3C paramL aH @39 paramL $H 1valor assumido1 E@63C . . <instrues> . :E-7:@ @39

1999

Este exemplo mostra como a uno CurrencE45 4de inida acima5, pode ser c!amada como expresso com alias$ 7,E 3nvoices @ES 7,E Customer @ES % 3nvoices*>4CurrencE4Amount55

%8
Executa um dentre v)rios blocos de instrues.

Sinta*e
3C <lCondioR> <instrues>... JE9,E3C <lCondioL>K <instrues>... JE9,EK <instrues>... E@6J3CK

Argumentos
<lCondio> ( uma expresso l8gica de controle. ,e ela ( avaliada como verdadeira 4.-.5, o bloco seguinte ( executado at( "ue um E9,E3C, E9,E ou E@63C se0a encontrado. E9,E3C identi ica um bloco a ser executado caso <lCondio> se0a avaliada como vardadeira 4.-.5 e todas as condies 3C e E9,E3C anteriores oram avaliadas como alsas 4.C.5. 2ual"uer n<mero de E9,E3Cs pode ser especi icado dentro de uma estrutura 3C...E@63C. E9,E identi ica o bloco a ser executado se todos os 3C e E9,E3C preliminares oram avaliados como also 4.C.5.

(es+rio
A estrutura de controle 3C trabal!a desviando a execuo para as instrues seguintes ao primeiro verdadeiro 4.-.5 avaliado para uma condio 3C ou E9,E3C. Execuo ento continua at( "ue um E9,E3C, E9,E, E@63C se0a encontrado, local onde a execuo ser) desviada para a primeira instruo seguindo o E@63C. ,e nen!uma condio or avaliada como verdadeira 4.-.5, o controle passa para a primeira instruo seguinte ao E9,E. ,e um E9,E no oi especi icado, o controle ( desviado para a primeira instruo seguindo o E@63C.

Colgio Catanduvas

Prof. Hlio Lemes Costa Jr.

.1

CLIPPER Apostila de Linguagem de Programao I

1999

3C...E@63C pode ser anin!ado dentro de outros 3C...E@63C e estruturas. Estas estruturas, entretanto, devem ser anin!adas pr8priamente. A orma 3C...E9,E3C...E@63C ( idntica a 6& CA,E...E@6CA,E. no existe vantagem espec. ica no uso de uma sobre a outra. A orma 3C...E@63C ( similar a uno 3C45 a "ual pode ser usada em expresses.

E*emplos
& exemplo a seguir avalia um n<mero de condies usando uma construo 3C...E9,E3C...E@63C$ 9&CA9 n@umber $H D QQ 3C n@umber < 5D % 1#enor "ue 5D1 E9,E3C n@umber HH 5D % 13gual a 5D1 E9,E % 1#aior "ue 5D1 E@63C ,-A-3C

9(%'
Cinali'a a execuo de um programa

Sinta*e
273- W CA@CE9X

(es+rio
-anto o comando 273- "uanto o comando CA@CE9 encerram a execuo de programas, ec!am todos os ar"uivos abertos, e retornam o controle ao sistema operacional. Cada um destes comandos pode ser usado de "ual"uer parte de um programa. & comando :E-7:@ executado na rotina principal d) o mesmo resultado.

&otas
C8digo de retorno$ 2uando um programa Clipper termina, o c8digo de retorno ( a0ustado para R se o processo acabar com um erro atal. ,e o programa terminar normalmente, o c8digo de retorno ( con igurado para 'ero ou o <ltimo E::&:9E/E945 a0ustado no programa.

E*emplos
& exemplo seguinte demonstra a atuao do comando 273- usando uma caixa com mensagem$ 3C Ies@o+ox4RD, RD, 1/olta ao 6os%1, 1+;ZQ+,+QS1, L5 273E@63C :E-7:@

Colgio Catanduvas

Prof. Hlio Lemes Costa Jr.

.)

CLIPPER Apostila de Linguagem de Programao I


E'( +
Encerra uma uno de usu)rio, programa ou procedure

1999

Sinta*e
:E-7:@ J<exp>K

Argumentos
<exp> ( uma expresso de "ual"uer tipo "ue ( avaliada para ser o valor de retorno de uma uno de usu)rio. ,e a uno terminar sem :E-7:@, o valor de retorno ser) @39.

(es+rio
:E-7:@ encerra uma uno de usu)rio, programa ou procedure, devolvendo o controle para a rotina c!amadora. 2uando :E-7:@ ( executado na rotina de n.vel mais alto, controle ( devolvido ao sistema operacional. -odas as vari)veis private criadas e vari)veis local declaradas na rotina corrente so liberadas "uando o controle ( devolvido ao c!amador. Pode !aver mais de um :E-7:@ numa rotina, da mesma orma "ue no ( necess)rio terminar com um :E-7:@. 6esde "ue unes de usu)rio devem retornar valores, cada uma deve conter ao menos um :E-7:@ com um argumento.

&ota
7ma uno de usu)rio ou procedure ( encerrado por uma declarao P:&CE67:E, C7@C-3&@, ou im de ar"uivo, mas no por um :E-7:@.

&otas
/etores$ 6esde "ue vetor ( um tipo de dado como "ual"uer outro, o mesmo pode ser retornado de uma uno de usu)rio. :E-7:@ -& #A,-E:$ Clipper no suporta :E-7:@ -& #A,-E: ou "ual"uer outro tipo de :E-7:@ onde se especi i"ue o n.vel. /oc pode simular isto com +E;3@ ,E27E@CE...E@6.

E*emplos
Estes exemplos ilustram a orma geral da declarao :E-7:@ em uma uno ou procedure$ C7@C-3&@ <idCunction> QQ <instrues>... QQ :E-7:@ <exp:eturn> P:&CE67:E <idProcedure> QQ <instrues>... QQ :E-7:@

Colgio Catanduvas

Prof. Hlio Lemes Costa Jr.

.,

CLIPPER Apostila de Linguagem de Programao I

1999

Este exemplo demonstra como um vetor criado numa uno pode ser retornado para a rotina c!amadora$ C7@C-3&@ PassArraE+ac> P:3/A-E aArraEJRDKJRDK aArraEJRKJRK H 1mE,tring1 :E-7:@ aArraE

(+
Executa um programa ou comando 6&,

Sinta*e
:7@ W aX <xc9in!aComando>

Argumentos
<xc9in!aComando> ( "ual"uer programa execut)vel, inclusive os comandos residentes 6&, e C&##A@6.C&#. Pode ser especi icado literalmente ou por expresso caractere entre parnteses.

(es+rio
& comando :7@ executa um comando ou programa 6&, de dentro de uma aplicao compilada. 2uando voc utili'a o comando :7@ num programa 6&,, o Clipper executa outra c8pia de C&##A@6.C&#, passando a lin!a de comando 6&, ao mesmo tempo. 3sto tem duas implicaes. A primeira ( "ue voc deve ter mem8ria su iciente para o C&##A@6.C&# 4L\A para 6&, 3.L5 e o programa "ue voc dese0a executar. A segunda ( "ue o C&##A@6.C&# deve estar dispon.vel no local especi icado pelo C&#,PEC 4o padro ( o diret8rio rai' do disco onde voc carregou o 6&,5. ,e o C&##A@6.C&# no estiver locali'ado neste disco ou o disco or trocado, mude ,E- C&#,PEC para a nova locali'ao antes de executar a operao Clipper. &bserve "ue os comandos ,E6ECA79- e ,E- PA-_ no tm e eito algum sobre o comando :7@. A orma a do comando :7@ ( ornecida unicamente por ra'oes de compatibilidade e, portanto, desaconsel!ada.

Aviso
@o utili'e o comando :7@ para instalar programas residentes em mem8ria de dentro do Clipper por"ue pode !aver perda de mem8ria "uando o controle retornar ao seu programa aplicativo.

E*emplos
& exemplo seguinte demonstra como utili'ar o comando :7@ combinado com as unes #E#&:EA645 e #E#&S:3-45 para criar uma uno de inida por usu)rio "ue c!ama seu editor com o campo memo corrente$ l,uccess H Editor#emo41+rie 1, 1@otes15 :E-7:@ C7@C-3&@ Editor#emo4 cEditor, c#emo ld 5

Colgio Catanduvas

Prof. Hlio Lemes Costa Jr.

.-

CLIPPER Apostila de Linguagem de Programao I


3C #E#&S:3-41Clipedit.tmp1, Pc#emo ld.5 :7@ 4cEditor Z 1 Clipedit.tmp15 :EP9ACE Pc#emo ld. S3-_ #E#&:EA641Clipedit.tmp15 E:A,E Clipedit.tmp :E-7:@ .-. E9,E :E-7:@ .C. E@63C

1999

7ma das opes "ue voc pode dese0ar o erecer a seus usu)rios ( o acesso direto ao 6&,. /oc pode a'er isso com o comando$ :7@ C&##A@6 Para acilitar ao usu)rio o retorno ao programa de aplicao, mude o prompt 6&, no ar"uivo batc! de aplicao desta orma$ :E# Application batc! ile EC_& &CC P:&#P- Acesso ao 6&,$ 6igite E?3- para retornar ao programa b]bpbg <seu programa aplicativo> P:&#P- bpbg 6epois, instrua o usu)rio a executar o ar"uivo batc! de aplicao em lugar do aplicativo .E?E.

Comandos para gerao de relatrios e etiquetas


LABEL 8O !
Emite eti"uetas

Sinta*e
9A+E9 C&:# <xcAr"uivo> J-& P:3@-E:K J-& C39E <xcAr"uivo>K J<abrangncia>K JS_39E <lCondio>K JC&: <lCondio>K J,A#P9EK

Argumentos
<xcAr"uivo> ( o nome do ar"uivo de eti"uetas 4.lbl5 "ue cont(m a de inio da orma da eti"ueta e pode ser especi icado literalmente ou por expresso caractere entre parnteses. ,e no or especi icada extenso, ser) assumido 4.lbl5. -& P:3@-E: envia a sa.da para a impressora. -& C39E <xcAr"uivo> envia a sa.da para <xcAr"uivo>. <?cAr"uivo> pode ser especi icado literalmente ou por uma expresso caractere entre parnteses. ,e no or especi icada extenso, ser) assumido 4.txt5. <abrangncia> ( a parte do ar"uivo de dados corrente "ue dever) ser usado. & padro ( todos 4A995 os registros.

Colgio Catanduvas

Prof. Hlio Lemes Costa Jr.

..

CLIPPER Apostila de Linguagem de Programao I

1999

S_39E <lCondio> especi ica o con0unto de registros "ue atendem a condio do registro corrente at( "ue a condio se0a alsa. C&: <lCondio> especi ica o con0unto condicional de registros de onde sero tiradas as in ormaes para eti"uetas dentro da abrangncia dada. ,A#P9E emite eti"uetas com conte<do de asteriscos. Cada eti"ueta texto tem o mesmo n<mero de colunas e lin!as da de inio da eti"ueta. Ap8s cada exibio de eti"ueta texto, aparece a pergunta, 16ese0a mais amostras%1. A resposta no 1@1 a' o comando 9A+E9 C&:# exibir as eti"uetas reais para a condio e abrangncia especi icadas.

(es+rio
9A+E9 C&:# ( um comando de console "ue acessa se"uencialmente registros na )rea de trabal!o corrente, exibindo eti"uetas "ue usam uma de inio arma'enada num ar"uivo 4.lbl5. Este ar"uivo pode ser criado usando*se :9.E?E. 2uando c!amada, a sa.da ( enviada para a tela e opcionalmente para a impressora eQou para um ar"uivo. Para evitar "ue a sa.da aparea na tela en"uanto esta estiver sendo impressa ou enviada para um ar"uivo, use o comando ,E- C&@,&9E &CC antes de usar o comando 9A+E9 C&:#. 2uando c!amado, o comando 9A+E9 C&:# procura no diret8rio e disco correntes, caso o ar"uivo <xcAr"uivo> no se0a encontrado no diret8rio corrente e o pat! no ten!a sido especi icado.

&otas
3nterrompendo 9A+E9 C&:#$ Para interromper o comando 9A+E9 C&:#, use a uno 3@AEI45 como parte da condio C&:, veri icando se acontece a interrupo ao to"ue de uma tecla. #argem da impressora$ ,endo 9A+E9 C&:# um comando de console, ele obedece ao "ue estiver especi icado correntemente por ,E- #A:;3@ para sa.das repetidas para a impressora.

E*emplos
& seguinte exemplo imprime um con0unto de eti"uetas e escreve*as num ar"uivo com um <nico comando. 6uas ormas do comando so mostradas$ 7,E ,ales 3@6E? ,ales @ES 9A+E9 C&:# ,ales -& P:3@-E: -& C39E ,ales 9A+E9 C&:# ,ales -& P:3@-E: -& C39E ,ales Este exemplo demonstra como interromper um comando 9A+E9 C&:# usando a uno 3@AEI45 para veri icar se o usu)rio teclou Esc$ [de ine A]E,C L\ 7,E ,ales @ES 7,E ,ales @ES 9A+E9 C&:# ,ales C&: 3@AEI45 aH A]E,C

EPO ' 8O !
Exibe um relat8rio no console

Colgio Catanduvas

Prof. Hlio Lemes Costa Jr.

./

CLIPPER Apostila de Linguagem de Programao I


Sinta*e
:EP&:- C&:# <xc:elat8rio> J-& P:3@-E:K J-& C39E <xcAr"uivo>K J<abrangncia>K JS_39E <lCondio>K JC&: <lCondio>K JP9A3@ W _EA63@; <cCabeal!o>K J@&E=EC-K J,7##A:IK

1999

Argumentos
<xc:elat8rio> ( o nome do ar"uivo de ormato de relat8rio 4. rm5 "ue cont(m a de inio do relat8rio 4:EP&:-5. Caso no !a0a especi icao de extenso, 4. rm5 ( assumido. <xc:elat8rio> ( uma expresso "ue pode ser especi icada literalmente por expresso caractere entre parnteses. -& P:3@-E: envia a sa.da para a impressora. -& C39E <xcAr"uivo> envia a sa.da para um ar"uivo sem caracteres de orm eed 4A,C33 RL5. ,e no or especi icada extenso de ar"uivo, um 4.txt5 ( adicionado. <xcAr"uivo> ( uma expresso literal, ou se0a, o pr8prio nome do ar"uivo, ou expresso caractere entre parnteses. <abrangncia> ( a parte do ar"uivo de dados corrente onde atuar) o comando :EP&:- C&:#. & padro ( todos 4A995. S_39E <lCondio> especi ica o con0unto de registros "ue atendem a condio do registro corrente at( "ue a condio se0a alsa. C&: <lCondio> especi ica o con0unto condicional de registros no "ual o comando ir) atuar dentro da abrangncia. P9A3@ evita a exibio de data e n<mero de p)gina, e condiciona a impresso a ser eita sem "uebras de p)gina. Al(m disso, o t.tulo do relat8rio e cabeal!os de colunas aparecem apenas no in.cio do relat8rio. _EA63@; coloca o resultado de <cCabeal!o> na primeira lin!a de cada p)gina. <cCabeal!o> ( avaliado somente uma ve' no comeo do relat8rio, antes "ue o ponteiro de registro se0a movido. Caso ambos P9A3@ e _EA63@; este0am especi icados, P9A3@ tem a pre erncia. @&E=EC- evita "ue a p)gina inicial se0a e0etada "uando a cl)usula -& P:3@-E: or usada. ,7##A:I a' o comando :EP&:- C&:# exibir somente lin!as de grupo, subgrupo e total geral. As demais lin!as so omitidas.

(es+rio
:EP&:- C&:# ( um comando de console "ue acessa se"uencialmente registros na )rea de trabal!o corrente exibindo um relat8rio tabular e opcionalmente agrupado com cabeal!os de p)gina e coluna a partir de uma de inio existente num ar"uivo 4. rm5. & ar"uivo :EP&:- C&:# real 4. rm5 ( criado utili'ando*se :9.E?E ou atrav(s de d+A,E 333 P97,. 2uando c!amada, a sa.da ( enviada para a tela e opcionalmente para a impressora eQou um ar"uivo. Para evitar "ue a sa.da se0a enviada para a tela "uando da impresso ou envio da mesma para um ar"uivo, use o comando ,E- C&@,&9E &CC antes de utili'ar o comando :EP&:- C&:#. 2uando c!amado, o comando :EP&:- C&:# procura na unidade e diret8rio ,E- PA-_ corrente se o ar"uivo <xc:elat8rio> no or encontrado no diret8rio corrente e o PA-_ no tiver sido especi icado.

Colgio Catanduvas

Prof. Hlio Lemes Costa Jr.

.0

CLIPPER Apostila de Linguagem de Programao I


&otas

1999

3nterrompendo :EP&:- C&:#$ Para interromper um comando :EP&:- C&:#, use a uno 3@AEI45 como parte da condio C&: para veri icar a interrupo ao pressionar uma tecla. #argem da impressora$ Como :EP&:- C&:# ( um comando de console, ele obedece ao "ue estiver de inido em ,E- #A:;3@ para a sa.da para a impressora. 3ncluindo caracteres orm eed$ Para incluir caracteres de alimentao de ormul)rio ao enviar um comando :EP&:- C&:# -& C39E, redirecione a sa.da da impressora para um ar"uivo usando o comando ,E- P:3@-E: desta orma$ ,E- P:3@-E: -& <xcAr"uivo> :EP&:- C&:# <xcAr"uivo> -& P:3@-E: ,E- P:3@-E: -& :elat8rios em ambientes de rede$ Comandos :EP&:- C&:# em ambientes de rede podem ser a etados por mudanas eitas em ar"uivos de dados por outros usu)rios en"uanto o relat8rio est) sendo executado. Por exemplo, se um usu)rio mudar um valor c!ave de 1A1 para 1`1 en"uanto o relat8rio estiver sendo impresso, o mesmo registro poder) aparecer repetido.

E*emplos
& exemplo a seguir usa ao mesmo tempo uma expresso extendida e uma expresso literal para executar um comando :EP&:- C&:#$ 9&CA9 xc:eport $H 1,ales1 7,E ,ales 3@6E? ,ales @ES :EP&:- C&:# 4xc:eport5 -& P:3@-E: C&: +ranc! aH 1RDD1 Este exemplo demonstra como interromper um comando 9A+E9 C&:# usando a uno 3@AEI45 para veri icar se o usu)rio teclou Esc$ [de ine A]E,C L\ 7,E ,ales @ES 9A+E9 C&:# ,ales C&: 3@AEI45 aH A]E,C

E:EC'
Avana a cabea da impressora para o comeo da p)gina

Sinta*e
E=EC-

(es+rio
& comando E=EC- envia um caractere de orm eed 4A,C33 RL5 G impressora e a0usta os valores das unes PC&945 e P:&S45 para 'ero. ,e voc especi icar uma lin!a e coluna da impressora menores "ue a <ltima posio dada por um comando E=EC- ou uma uno ,E-P:C45, o Clipper automaticamente reali'a um E=EC- e recon igura os valores internos das unes P:&S45 e PC&945. Por causa disso, a sua l8gica de impresso deve proceder se"uencialmente da es"uerda para a direita e

Colgio Catanduvas

Prof. Hlio Lemes Costa Jr.

.1

CLIPPER Apostila de Linguagem de Programao I

1999

para o im da p)gina. Caso voc necessitar recon igurar lin!a e coluna da impressora para 'ero sem mudana de p)gina, use a uno ,E-P:C45.

E*emplos
Este exemplo imprime um relat8rio em orma de listagem simples e usa o comando E=EC- para avanar para uma nova p)gina "uando o contador de lin!as c!ega ao n<mero m)ximo de lin!as a ser impresso por p)gina$ 9&CA9 n9ine $H NN, nPage $H D 7,E ,ales @ES ,E- P:3@-E: &@ ,E- C&@,&9E &CC 6& S_39E aE&C45 3C n9ine > 55 E=EC% 1Pagina 1 Z 9-:3#4,-:4nPageZZ, 355 % 16ata 1 Z C-&646A-E455 % % 1/endedor 1, 12uantia1 % n9ine $H O E@63C % ,ales*>,alesman, ,ales*>Amount n9ineZZ ,A3P E@66& ,E- P:3@-E: &CC ,E- C&@,&9E &@ C9&,E

Outros comandos para configurao do ambiente


SE' BELL
6etermina se !aver) alarme sonoro autom)tico durante operaes de entrada de dados

Sinta*e
,E- +E99 on W &CC W <xlComuta>

Argumentos
&@ possibilita o alarme. &CC impossibilita o alarme. <xlComuta> ( uma expresso l8gica "ue deve ser colocada entre parntses. 7m valor de verdadeiro 4.-.5 ( o mesmo "ue &@, e um valor de also 4.C.5 ( o mesmo "ue &CC.

(es+rio

Colgio Catanduvas

Prof. Hlio Lemes Costa Jr.

.9

CLIPPER Apostila de Linguagem de Programao I


,e o comando ,E- +E99 estiver em &@, o alarme soa nas seguintes situaes$ & usu)rio entra um caractere na <ltima posio em um ;E-.

1999

& usu)rio tenta entrar dados inv)lidos num ;E-. &s dados so validados pelo tipo de dado da vari)vel ;E-, pelo template de P3C-7:E, e pela cl)usula :A@;E. /iolar uma condio /A936 no a' o alarme soar, no importando "ual o status do comando ,E- +E99. Para soar o alarme mais claramente voc pode usar %% C_:4\5 ou a uno -&@E45. -&@E45 talve' se0a o mais <til, pois com ele voc pode variar o tom e a durao do som.

SE' COLO $
6e ine cores de tela.

Sinta*e
,E- C&9&: W C&9&7: -& J<padro> J, <desta"ue>KJ, <borda>KJ, < undo>K J, <noselecionados>KK W 4<c,tringCor>5

Argumentos
<padro> ( a cor utili'ada para escrever em toda a tela do v.deo, incluindo a utili'ao de todos os comandos e unes "uando exibidas na tela. 3sto inclui comandos como Y...P:&#P-, Y...,AI, e %^ e unes como AC_&3CE45, 6+E63-45, e #E#&E63-45. <desta"ue> ( a cor utili'ada para con igurar a exibio das barras luminosas. Este argumento in lui sobre a barra luminosa de seleo sobre os ;E-s com 3@-E@,3-I &@, o comando #E@7 -&, a uno 6+E63-45, e AC_&3CE45. <borda> ( a cor utili'ada para con igurar a cor "ue ser) colocada na )rea em torno da tela de v.deo, "ue ( inacess.vel para a utili'ao normal dos programas "ue escrevem algo na tela. Esta con igurao somente unciona com adaptadores de v.deo do tipo C;A, mas no com adaptadores E;A ou /;A. < undo> atualmente no ( suportada por m)"uinas nas "uais a @antuc>et no prov drivers apropriados. Esta con igurao ( suportada somente para prop8sitos de compatibilidade. <noselecionados> ( o par de cores utili'ado para con igurar uma determinada entrada de dados exibindo o ;E- corrente na cor de desta"ue de inida, en"uanto "ue os outros ;E-s so mostrados nesta cor. <c,tringCor> ( uma cadeia de caracteres contendo a con igurao de cores. Esta cadeia de caracteres pode ainda ser guardada em uma vari)vel de mem8ria, sendo utili'ada no comando englobando*a com parnteses. Esta acilidade permite a voc especi icar a con igurao de cores como sendo uma expresso, no lugar de utili'ar um simples literal 4cadeia de caracteres5 ou mesmo uma macro* substituio de uma vari)vel. ,E- C&9&: -& sem argumentos restaura as cores padro para SQ@,@QS,@,@,@QS.

(es+rio

Colgio Catanduvas

Prof. Hlio Lemes Costa Jr.

/2

CLIPPER Apostila de Linguagem de Programao I

1999

,E- C&9&: ( um comando sincnimo para a uno ,E-C&9&:45 "ue de ine cores para as operaes subse"uentes de escrita em tela. Cada comando ,E- C&9&: especi ica uma lista de argumentos para as cores utili'adas nos cinco tipos de operaes de escrita em tela. Cada con igurao de argumento ( um par de cores contendo a cor do caractere e a cor de undo do caractere separados por uma barra 4Q5. A cor do caractere de ine a cor dos caracteres "ue sero exibidos na tela. A cor de undo do caractere de ine "ue cor ser) exibida atr)s do caractere. Espaos e "uais"uer caracteres "ue no se0am exib.veis so considerados somente como cor de undo do caractere. Al(m das cores, uma con igurao para a cor do caractere pode ter um atributo de alta intensidade ou piscante. Com um v.deo do tipo monocrom)tico, a alta intensidade aumenta o bril!o do texto escrito. Com um v.deo colorido, a Alta 3ntensidade altera a tonalidade da cor especi icada tornando*a uma cor di erente. Por exemplo, a letra @ exibe os caracteres de um texto com a cor preta, e utili'ando*se o ar"umento @Z mostrar) o mesmo texto com a cor cin'a. A Alta 3ntensidade ( identi icada pelo sinal Z. & atributo de Piscante causa ao texto escrito em tela "ue pis"ue ou no a intervalos regulares. & atributo de Piscante ( identi icado pelo sinal X. 7m caractere de atributo pode estar colocado em "ual"uer lugar da con igurao, mas ( sempre aplicado G cor do caractere, portanto as cores de undo dos caracteres no possuem os atributos de Alta 3ntensidade e Piscante. Cada cor pode ser especi icada utili'ando uma letra ou n<mero. Entretanto, a especi icao de n<meros ( ornecida somente para prop8sitos de compatibilidade. 2uando or especi icado um argumento de con igurao de cor, n<meros e letras no devem ser misturados. -odos os argumentos so opcionais. ,e um argumento or omitido, seu valor anterior ( retido e somente os novos so con igurados. 6entro de uma con igurao, a omisso da cor do caractere ou da cor de undo do caractere torna esta cor com o padro preto. /e0a na p)gina seguinte as cores suportadas.

3a4ela -51,6 3a4ela de Cores


Cor Preto A'ul /erde Ciano /ermel!o #agenta #arrom +ranco Cin'a A'ul +rila!nte /erde +ril!ante Ciano +ril!ante /erme l!o +ril!ante #agenta +ril!ante Amarelo +ranco +ril!ante Preto /.deo 3nverso 3ncolor Letra @,Espao + ; +; : :+ ;: S @Z +Z ;Z +;Z :Z :+Z ;:Z SZ 7 3 ? &=mero D R L 3 M 5 O \ V N RD RR RL R3 RM R5 7ono+rom>ti+o Preto ,ublin!ado +ranco +ranco +ranco +ranco +ranco +ranco Preto ,ublin!ado +ril!ante +ranco +ril!ante +ranco +ril!ante +ranco +ril!ante +ranco +ril!ante +ranco +ril!ante +ranco +ril!ante ,ublin!ado /.deo 3nverso 3ncolor

Colgio Catanduvas

Prof. Hlio Lemes Costa Jr.

/1

CLIPPER Apostila de Linguagem de Programao I

1999

,E- C&9&: ( um comando de compatibilidade e assim sendo no ( recomendado. Ele ( superado pela uno ,E-C&9&:45, "ue pode retornar tanto a cor corrente "ue est) sendo utili'ada no momento como tamb(m con igurar uma nova cor.

&otas
#onitores monocrom)ticos$ @os monitores monocrom)ticos, as cores no so suportadas. & Clipper, contudo, suporta os atributos monocrom)ticos de v.deo reverso 435 e sublin!ado 475. 6rivers de tela$ & comando ,E- C&9&: -& utili'ando n<meros no ( suportado caso se0a lin>ado o A@,3.&+= com o programa corrente.

E*emplos
& exemplo seguinte utili'a a con igurao para os ;E-s no selecionados, a'endo o ;E- corrente trabal!ar com letras vermel!as 4:5 sobre um undo branco 4S5, en"uanto "ue os demais permanecem com letras pretas 4@5 sobre um undo branco 4S5$ color H 1SQ@,:QS,,,@QS1 ,E- C&9&: -& 4color5 c&ne $H c-do $H ,PACE4RD5 Y R, R ,AI 1Enter 7m $ 1 ;E- c&ne Y L, R ,AI 1Enter 6ois$ 1 ;E- c-do :EA6 Este exemplo demonstra uma uno de inida pelo usu)rio 476C5 para obter uma sen!a do usu)rio utili'ando o argumento de desta"ue com o tipo de cor 4?5 para esconder a sen!a "ue est) sendo digitada pelo usu)rio$ 3C a6ialogPassSord4RL, R3, 1SZQ@1, 1C7@,7@1, 35 % 16esculpe, sen!a erradaa1 273E@63C C7@C-3&@ 6ialogPassSord4 n:od, nCol, c,tandard, cPassdord, n-ries 5 9&CA9 nCount $H R, cColor $H ,E-C&9&:4c,tandard Z 1, ?15 6& S_39E nCount < n-ries c7serEntrE H ,PACE4O5 Y n:od, nCol ,AI 1Entre ,en!a$ 1 ;E- c7serEntrE :EA6 3C 9A,-AEI45 HH L\ ,E-C&9&:4cColor5 :E-7:@ .C. E9,E3C c7serEntrE HH cPassdord ,E-C&9&:4cColor5 :E-7:@ .-. E9,E nCountZZ E@63C E@66& ,E-C&9&:4cColor5 :E-7:@ .C.

Colgio Catanduvas

Prof. Hlio Lemes Costa Jr.

/)

CLIPPER Apostila de Linguagem de Programao I


SE' C( SO
Comuta a visibilidade do cursor em tela.

1999

Sinta*e
,E- C7:,&: &@ W o W <xlComuta>

Argumentos
&@ -orna o cursor vis.vel. &CC -orna o cursor invis.vel. <xlComuta> ( uma expresso l8gica "ue deve ser colocada entre parnteses. & valor de verdadeiro 4.-.5 ( o mesmo "ue &@, e o valor also 4.C.5 tem o mesmo signi icado "ue &CC.

(es+rio
,E- C7:,&: comuta o estado do cursor entre &@ e &CC 4ligado e desligado5. 2uando o C7:,&: est) &CC, entradas via teclado e exibies em tela no so a etadas. & cursor ( simplesmente escondido, podendo a entrada de dados ser e etuada sem "ue o cursor este0a vis.vel. As unes :&S45 e C&945 so atuali'adas como se o cursor estivesse v.sivel. Este comando ( geralmente utili'ado para suprimir o cursor en"uanto uma tela est) sendo montada. A orma mais ideal ( de somente mostrar o cursor em um programa de produo "uando o usu)rio se encontrar no modo de edio, ou se0a, utili'ando ;E-s, #E#&E63-45, ou algum outro tipo de modo de edio.

E*emplos
& exemplo seguinte mostra a utili'ao t.pica do ,E- C7:,&:$ 9&CA9 lAnsder $H .C. Y LM, D Y LM, R5 ,AI 16ese0a encerrar J,Q@K%1^ ;E- lAnsder P3C- 1Ya1^ ,E- C7:,&: &@ :EA6 ,E- C7:,&: &CC

SE' #A'E
Con igura o ormato de datas para entrada de dados e exibio em tela

Sinta*e
,E- 6A-E C&:#A- J-&K <cCormato6ata > ,E- 6A-E J-&K A#E:3CA@ W ansi W britis! W renc! W german W italian W 0apan W usa

Argumentos

Colgio Catanduvas

Prof. Hlio Lemes Costa Jr.

/,

CLIPPER Apostila de Linguagem de Programao I

1999

<cCormato6ata > ( uma extresso caractere "ue especi ica diretamente o ormato de data "uando a cl)usula C&:#A- ( especi icada. <cCormato6ata > deve conter um string de RL ou menos caracteres. 2uando especi icado, <cCormato6ata> ( analisado para determinar a colocao ade"uada dos digitos de mes, dia e ano. A posio destes ( determinada baseada na posio das letras, d, m e E, respectivamente. &utros caracteres so copiados como estao para exibio de valores de data.

(es+rio
& ,E- 6A-E ( uma con igurao global "ue a eta o comportamento das datas em todo o programa, permitindo a voc controlar a ormatao das datas de orma a acilitar o envio de aplicativos a outros pa.ses. A tabela a seguir ilustra os ormatos de datas para cada con igurao de data$

3a4ela -51-6 #ormatos SE3 (A3E


SE3 A#E:3CA@ A@,3 +:3-3,_ C:E@C_ ;E:#A@ 3-A93A@ =APA@ 7,A #ormato mmQddQEE EE.mm.dd ddQmmQEE ddQmmQEE dd.mm.EE dd*mm*EE EEQmmQdd mm*dd*EE

E*emplos
& exemplo a seguir con igura um programa para o devido a0uste de datas em tempo de execuo. 3sto ( eito passando*se uma vari)vel ambiental 6&, para o programa, carregando*se seu valor com a uno ;E-E@/45, e a0ustando a data com o valor "ue oi carregado. Para comear, o ormato da data ( atribu.do a uma vari)vel ambiental 6&, da seguinte orma$ ,E- C93P]6A-EH+:3-3,_ 6epois na seo de con igurao do programa de aplicao$ C7@C-3&@ AppCon ig ,E- 6A-E C&:#A- -& ;E-E@/41C93P]6A-E15 :E-7:@ @39 7sando o seguinte procedimento para e etivamente a0ustar a data$ ,E- 6A-E C&:#A- 1EEEE$mm$EE1

SE' #EC%!ALS
A0usta a "uantidade de casas decimais exibidas

Colgio Catanduvas

Prof. Hlio Lemes Costa Jr.

/-

CLIPPER Apostila de Linguagem de Programao I


Sinta*e
,E- 6EC3#A9, -& J<n6ecimais>K

1999

Argumentos
<n6ecimais> ( a "uantidade de casas decimais a serem exibidas. & valor padro ( dois. ,E- 6EC3#A9, -& sem argumento ( e"uivalente a ,E- 6EC3#A9, -& D.

(es+rio
& comando ,E- 6EC3#A9, determina a "uantidade de casas decimais "ue sero exibidas nos resultados das unes e c)lculos num(ricos. ,ua operao depende diretamente da con igurao a ixada. ,e C3?E6 estiver em &CC, ,E- 6EC3#A9, estabelece o n<mero m.nimo de casas decimais exibidas pelas unes E?P45, 9&;45, ,2:-45, e operaes de diviso. Caso C3?E6 este0a em &@, todos os valores num(ricos so exibidos com a "uantidade exata de casas decimais especi icada pelo comando ,E- 6EC3#A9,. &bserve "ue nem ,E- 6EC3#A9, nem ,EC3?E6 a etam a preciso num(rica dos c)lculos**somente o ormato de exibio ( a etado. A im de obter um mel!or controle da exibio num(rica, voc pode utili'ar*se da cl)usula P3C-7:E de Y...,AI, Y...;E-, e da uno -:A@,C&:#45.

E*emplos
&s exemplos a seguir ilustram v)rios resultados do comando ,E6EC3#A9,$ ,E- C3?E6 &@ ,E- 6EC3#A9, -& L % LQM % RQ3 ,E- 6EC3#A9, -& M % LQM % RQ3 QQ & padro QQ :esulta$ D.5D QQ :esulta$ D.33 QQ :esulta$ D.5DDD QQ :esulta$ D.3333

SE' #EL%!%'E S
6etermina ou de ine os delimitadores ;E-

Sinta*e
,E- 6E93#3-E:, on W &CC W <xlComuta> ,E- 6E93#3-E:, -& J<c6elimitadores> W 6ECA79-K

Argumentos
&@ exibe delimitadores para vari)veis ;E-. &CC suprime a exibio de delimitadores.

Colgio Catanduvas

Prof. Hlio Lemes Costa Jr.

/.

CLIPPER Apostila de Linguagem de Programao I

1999

<xlComuta> ( uma expresso l8gica "ue deve ser colocada entre parnteses. 7m valor de verdadeiro 4.-.5 ( o mesmo "ue &@, e um valor de also 4.C.5 ( o mesmo "ue &CC. -& <c6elimitadores> de ine um delimitador de um ou dois caracteres. A especi icao de um <nico caractere usa o mesmo caractere como o delimitador inicial e inal. A especi icao de dois caracteres usa o primeiro como o delimitador inicial e o segundo como o delimitador inal. A especi icao padro 46ECA79-5 ou sem delimitadores a0usta os delimitadores para sinais de dois pontos, "ue so os delimitadores padro.

(es+rio
,E- 6E93#3-E:, ( um comando com a inalidade dupla de de inir caracteres usados para delimitar os ;E-s e determinar "ue os delimitadores se0am ou no exibidos automaticamente. &s ;E-s no Clipper podem ter delimitadores opcionais "ue cercam um campo ;E- "uando este ( exibido na tela. ,e 6E93#3-E:, est) em &@, os delimitadores adicionam dois caracteres ao taman!o da exibio do campo ;E-. &s caracteres dos delimitadores podem ser con igurados utili'ando*se a cl)usula -& <c6elimitador>. & caractere de demilimitador padro ( o sinal de dois pontos 4$5. Ao especi icar delimitadores, os delimitadores inicial e inal podem ser di erentes. Caso voc dese0e omitir o delimitador da direita, da es"uerda, ou ambos, use um espao no lugar do caractere delimitador. :egra geral, os delimitadores no so necess)rios 0) "ue os ;E-s so exibidos em v.deo reverso ou cor destacada se 3@-E@,3-I estiver em &@.

E*emplos
Este exemplo con igura os delimitadores em um sinal de dois pontos 1$ 1 e um espao para o primeiro ;E-, e o par de colc!etes 1JK1 para o segundo ;E-$ 9&CA9 c/ar $H ,PACE455, c/arL $H ,PACE455 ,E- 6E93#3-E:, &@ ,E- 6E93#3-E:, -& 1$ 1 Y R, D ,AI 1Entre1 ;E- c/ar ,E- 6E93#3-E:, -& 1JK1 Y L, D ,AI 1Entre1 ;E- c/arL :EA6

SE' #E&%CE
Envia os comandos Y...,AI G tela ou G impressora

Sinta*e
,E- 6E/3CE -& ,C:EE@ W printer

Argumentos
,C:EE@ envia todos os comandos Y...,AI G tela e independe de como os comandos ,E- P:3@-E: e C&@,&9E este0am a0ustados.

Colgio Catanduvas

Prof. Hlio Lemes Costa Jr.

//

CLIPPER Apostila de Linguagem de Programao I

1999

P:3@-E: envia todos os comandos Y...,AI ao dispositivo a0ustado em ,E- P:3@-E: -&. 3sto pode incluir um port de impressora local, um spooler de rede, ou um ar"uivo.

(es+rio
& comando ,E- 6E/3CE envia a sa.da dos comandos Y...,AI para a tela ou para a impressora. 2uando 6E/3CE est) em ,E- -& P:3@-E:, os comandos Y...,AI so enviados G impressora e no so repetidos para a tela. &s comandos Y...;E- so ignorados. Ao enviar os comandos Y...,AI G impressora, o Clipper executa um E=EC- autom)tico sempre "ue a posio da cabea da impressora estiver numa lin!a menor do "ue a <ltima lin!a impressa. 7m E=ECrea0usta os valores das unes PC&945 e P:&S45 para 'ero. Para rea0ustar PC&945 e P:&S45 para novos valores, use a uno ,E-P:C45. Para enviar comandos Y...,AI para um ar"uivo, use ,E- P:3@-E: -& <xcAr"uivo> 0untamente com o comando ,E- 6E/3CE -& P:3@-E:.

E*emplos
Este exemplo simples envia comandos Y...,AI G impressora$ ,E- 6E/3CE -& P:3@-E: Y L,RD ,AI 1Alo pessoal1 E=ECEste exemplo, por outro lado, envia comandos Y...,AIs a um ar"uivo$ ,E- P:3@-E: -& &utput.txt ,E- 6E/3CE -& P:3@-E: Y RD, RD ,AI 1Ar"uivo$ &utput.txt1 Y RR, RD ,AI 6A-E45 ,E- P:3@-E: -& QQ Cec!a o ar"uivo ,E- 6E/3CE -& ,C:EE@

SE' 8%L'E
Esconde registros "ue no atendam uma condio

Sinta*e
,E- C39-E: -& J<lCondio>K

Argumentos
<lCondio> ( uma expresso l8gica "ue de ine um con0unto espec. ico de registros das )rea de trabal!o corrente "ue se0am acess.veis para processamento. ,E- C39-E: -& sem um argumento desativa a condio iltro.

(es+rio

Colgio Catanduvas

Prof. Hlio Lemes Costa Jr.

/0

CLIPPER Apostila de Linguagem de Programao I

1999

2uando uma condio C39-E: est) ativa, a )rea de trabal!o corrente age como se contivesse somente os registros "ue atendem a condio especi icada. 7ma condio C39-E: ( uma das propriedades de uma )rea de trabal!o. 7ma ve' ativada, a condio pode ser retornada na orma de uma cadeia de caracteres usando*se a uno 6+C39-E:45. A maioria dos comandos e unes "ue movem o ponteiro de registros obedece ao iltro corrente, com exceo da"ueles comandos "ue acessam registros atrav(s do n<mero dos mesmos. 3sto inclui ;&-&, comandos especi icados com a cl)usula :EC&:6, e relaes conectadas por expresso num(rica a uma )rea de trabal!o "ue no possua nen!um .ndice ativo. 7ma ve' estabelecido, um C39-E: no ( ativado at( "ue o ponteiro de registro se0a movido de sua posio corrente. /oc pode utili'ar ;& -&P para ativ)*lo. -al como ,E- 6E9E-E6, um iltro no tem e eito algum sobre os comandos 3@6E? e :E3@6E?.

&ota
Embora o comando ,E- C39-E: atue na )rea de trabal!o corrente de orma "ue ela parea conter um subcon0unto de registros, este comando na realidade processa se"uencialmente todos os registros na )rea de trabal!o. Por esta ra'ao, o tempo necess)rio para o processamento de uma )rea de trabal!o iltrada ser) o mesmo "ue numa )rea de trabal!o no iltrada.

E*emplos
Este exemplo iltra somente a"ueles registros onde a idade se0a maior do "ue 5D no ar"uivo EmploEee.db $ 7,E EmploEee 3@6E? @ame @ES ,E- C39-E: -& Age > 5D 93,- 9astname, Cirstname, Age, P!one ,E- C39-E: -&

SE' ,E"
Atribui a c!amada de uma rotina a uma tecla

Sinta*e
,E- AEI <nCodigo-ecla> -& J<id:otina>K

Argumentos
<nCodigo-ecla> ( o valor 3@AEI45 da tecla G "ual se atribui a rotina. -& <id:otina> especi ica o nome da rotina "ue ( executada "uando se aperta uma tecla. ,e <id:otina> no ( especi icada, a de inio corrente ( liberada.

(es+rio
,E- AEI permite "ue uma rotina se0a executada a partir de um estado de espera "uando uma determinada tecla ( pressionada. 7m estado de espera ( "ual"uer modo "ue extraia teclas com exceo

Colgio Catanduvas

Prof. Hlio Lemes Costa Jr.

/1

CLIPPER Apostila de Linguagem de Programao I

1999

de 3@AEI45. Estes modos incluem AC_&3CE45, 6+E63-45, #E#&E63-45, ACCEP-, 3@P7-, :EA6 e SA3-. Ap8s uma tecla ser rede inida, pressionando*a executa a rotina corente passando automaticamente trs parBmetros correspondentes a$ P:&C@A#E45, P:&C93@E45, e :EA6/A:45. & nome da rotina e da vari)vel so caractere, en"uanto "ue n<mero de lin!a ( num(rico. 7m m)ximo de 3L teclas pode ser de inido ao mesmo tempo. @o start*up 4in.cio da execuo5, o sistema automaticamante de ine CR para executar uma rotina de _elp 4aux.lio5. ,e uma rotina com este nome ( lin>ada 0unto do programa corrente e est) vis.vel, apertando CR a partir de um estado de espera ir) invoc)*lo. @ote "ue rotinas de ,E- AEI devem ser desen!adas de modo a preservar o estado da aplicao 4isto (, aparncia da tela, )rea de trabal!o corrente, etc5 e restaur)*la ap8s encerrar a execuo.

Aviso
Em Clipper 5.D, ,E- C7@C-3&@ ( pr( processada na orma de ,E- AEI e AEI+&A:6. 3sto signi ica "ue ,E- C7@C-3&@ tem o poder de liberar "ual"uer ,E- AEI para o mesmo n<mero de tecla e vice versa. 3sto ( incompat.vel com verses pr(vias, as "uais mantin!am listas separadas para ,E- AEI e ,E- C7@C-3&@.

&otas
Precedncia$ ,E- AEI tem precedncia sobre ,E- E,CAPE e ,E-CA@CE945. -erminando :EA6 a partir de ,E- AEI$ Existem v)rias ormas de terminar um :EA6 a partir de ,E- AEI.

3a4ela -51/6 En+errando um REA( a partir de uma rotina SE3 'E%


Comando C9EA: ;E-, +:EAA AEI+&A:6 Ctrl*S AEI+&A:6 Esc Ao Encerra o :EA6 sem gravar o ;E- corrente Encerra o :EA6 sem gravar o ;E- corrente Encerra o :EA6 e grava o ;E- corrente Encerra o :EA6 sem gravar o ;E- corrente

C9EA: com ,E- AEI$ C9EA: no deve ser usado para apagar a tela dentro de uma rotina de ,EAEI pelo ato de emitir um C9EA: ;E-, e encerrar o :EA6. Para apagar a tela use C9EA: ,C:EE@ ou C9,.

E*emplos
Este exemplo demonstra como usar ,E- AEI para invocar uma rotina "ue apresente uma lista de itens "uando o usu)rio aperta CL estando numa tela de entrada de dados$ [include13n>eE.c!1 ,E- AEI A]CL -& ,crollAccounts 7,E Accounts @ES 7,E 3nvoices @ES

Colgio Catanduvas

Prof. Hlio Lemes Costa Jr.

/9

CLIPPER Apostila de Linguagem de Programao I


Y RD, RD ;E- 3nvoices*>3d :EA6 :E-7:@ C7@C-3&@ ,crollAccounts4 cProc, n9ine, c/ar 5 9&CA9 s]creen 3C c/ar HH 1361 s]creen $H ,A/E,C:EE@4 D, D,LM,\N5 Accounts*>46+E63-4RD, RD, RV, MD, T1CompanE1U55 AEI+&A:6 C_:4A]C-:9]I5 Z Accounts*>3d Z C_:4A]_&#E5 :E,-,C:EE@4 D, D,LM,\N, s]creen5 E9,E -&@E4RDD, L5 E@63C :E-7:@ @39

1999

SE' P %+'E
Comuta o eco da sa.da do console para impressora ou ar"uivo

Sinta*e
,E- P:3@-E: on W &CC W <xlComuta> ,E- P:3@-E: -& J<xc6ispositivo> W <xcAr"uivo>K

Argumentos
&@ ecoa sa.da de console para a impressora. &CC suprime a impresso da sa.da de console. <xlComuta> ( uma expresso entre parnteses. 7m valor verdadeiro 4.-.5 ( &@, e also 4.C.5 ( &CC. -& <xc6ispositivo> identi ica o nome do dispositivo 46E/3CE5 para onde ser) enviada a sa.da impressa. 7m nome de dispositivo pode ser especi icado literalmente ou como expresso caractere entre parnteses. Adicionalmente, um dispositivo pode ser local ou rede. Con igurar ,E- P:3@-E: para um dispositivo no existente cria um ar"uivo com o nome deste. Assegure*se de no utili'ar dois pontos 4$5 como caractere inicial de nome de dispositivo. -& <xcAr"uivo> identi ica o nome do ar"uivo de sa.da. & nome pode ser especi icado literalmente ou como expresso caractere entre parnteses. ,e a extenso no or especi icada 4.prn5 ( adicionada automaticamente. Caso ,E- P:3@-E: -& se0a especi icado sem argumentos, o dispositivo especi icado ( ec!ado e o destino padro ( selecionado.

(es+rio
,E- P:3@-E:, da mesma orma "ue outros ,E-s, tem duas ormas de uso com sua uncionalidade pr8pria. A orma onW&CC de ,E- P:3@-E: controla se a sa.da ser) enviada ou no para a impressora. Comandos de console so a"ueles em "ue geralmente no se especi ica lin!a e coluna. -odos estes comandos, exceto %W%%, possuem a cl)usula -& P:3@- "ue tamb(m dirige a sa.da para a impressora. A sa.da de comandos de console ( enviada para tela a menos "ue C&@,&9E este0a &CC. Este0a advertido

Colgio Catanduvas

Prof. Hlio Lemes Costa Jr.

02

CLIPPER Apostila de Linguagem de Programao I

1999

"ue Y...,AIs no so a etados por ,E- P:3@-E: &@. Para envi)*los para impressora use ,E6E/3CE -& P:3@-E:. ,E- P:3@-E: -&, ao contr)rio, determina o destino da sa.da de todos os comandos e unes "ue enviam sa.da para impressora. 3sto inclui Y...,AIs se ,E- 6E/3CE ( -& P:3@-E:. A sa.da pode ser enviada para um dispositivo ou ar"uivo. ,e o destino ( um ar"uivo, &s seguintes nomes so v)lidos$ 9P-R, 9P-L, 9P-3 4todas portas paralelas5, C&#R, e C&#L 4portas seriais5 e P:@. & assumido ( P:@. ,e o destino ( ar"uivo, ele ( criado no diret8rio 6ECA79- corrente. ,e um ar"uivo com o mesmo nome existir no mesmo local, ele ( sobregravado sem nen!um aviso. -odas as sa.das para impressora sero escritas neste ar"uivo at( "ue se0a ec!ado com ,E- P:3@-E: -& sem argumento. Existem v)rios usos para ,E- P:3@-E: -&, incluindo$ Alternar portas para gerenciar m<ltiplas impressoras. ,a.da em ar"uivo para posterior impresso, ou trans erncia para outra m)"uina via telecomunicao. Esva'iar o spool de impresso e reselecionar o dispositivo padro.

&otas
Compatibilidade$ & Clipper no suporta a sintaxe ,E- P:3@-E: -& FF,P&&9E: ou FFCAP-7:E. Especi icar ,E- P:3@-E: com estas opes cria ar"uivos ,pooler.prn ou Capture.prn. &s s.mbolos FF so ignorados. #arcas de im de ar"uivo$ 2uando a sa.da em impressora ( redirecionada para um ar"uivo, a marca de im de ar"uivo 4C_:4LO55 no ( gravada "uando este ar"uivo ( ec!ado. Para encerrar um ar"uivo com uma marca de im de ar"uivo, emita um %% C_:4LO5 antes de ,E- P:3@-E: -&. :ede$ Para algumas redes, a impressora da estao deve ser primeiro redirecionada para o servidor de ar"uivo 4geralmente rodando o spooler de rede5.

E*emplos
Este exemplo ecoa a sa.da de um comando % para a impressora, suprimindo a sa.da em console usando ,E- C&@,&9E &CC$ 7,E Customers @ES ,E- P:3@-E: &@ ,E- C&@,&9E &CC 6& S_39E aE&C45 % Customer ,A3P E@66& E=EC,E- P:3@-E: &CC ,E- C&@,&9E &@ C9&,E :E-7:@

Colgio Catanduvas

Prof. Hlio Lemes Costa Jr.

01

CLIPPER Apostila de Linguagem de Programao I

1999

Este exemplo direciona a sa.da em 9P-R e esva'ia o spooler ap8s completar a impresso$ ,E- P:3@-E: -& 9P-R <Comandos de impresso>... ,E- P:3@-E: -& QQ Esva'ia o spooler.

Este exemplo envia a sa.da de impressora para um ar"uivo texto, sobregravando um ar"uivo 0) existente$ ,E- P:3@-E: -& Prn ile.txt ,E- 6E/3CE -& P:3@-E: ,E- P:3@-E: &@ Y D, D ,AI 13sto vai para Prn ile.txt1 % 1Assim como istoa1 ,E- 6E/3CE -& ,C:EE@ ,E- P:3@-E: &CC ,E- P:3@-E: -&

QQ Cec!a ar"uivo de impresso

,E- P:&CE67:EX Compilar rotinas dentro do .&+= corrente

Sinta*e
,E- P:&CE67:E -& J<idAr"uivoPrograma>J.<ext>KK

Argumentos
<idAr"uivoPrograma> ( o nome do ar"uivo de rotinas a ser compilado dentro do ob0eto corrente. <ext> ( a extenso opcional. Caso no se0a especi icada, 4.prg5 ( assumida. ,E- P:&CE67:E -& sem argumentos ( ignorado.

(es+rio
,E- P:&CE67:E a' com "ue o compilador compile todas as rotinas declaradas dentro de um ar"uivo e as inclua dentro do ar"uivo &+= corrente. ,E- P:&CE67:E ( pr( processado como a diretiva ]procre"]45 para compilar o ar"uivo especi icado. Este comando ( um comando de compatibilidade e como tal no recomendado. Ele ( superado por outras instrues como [include e os ar"uivos script 4.clp5.

SE' (+%9(E$
Comuta a incluso de c!aves no*<nicas num .ndice

Sinta*e
,E- 7@327E on W &CC W <xlComuta>

Colgio Catanduvas

Prof. Hlio Lemes Costa Jr.

0)

CLIPPER Apostila de Linguagem de Programao I


Argumentos
&@ a' com "ue os .ndices se0am criados com atributo de unicidade. &CC a' com "ue os .ndices possam ser criados sem atributo de unicidade.

1999

<xlComuta> ( uma expresso l8gica entre parnteses. 7m valor verdadeiro 4.-.5 ( o mesmo "ue &@, e also 4.C.5 ( &CC.

(es+rio
,E- 7@327E controla se um .ndice ser) criado com atributo de unicidade ou no. Com 7@327E &@, novos .ndices so criados incluindo apenas c!aves <nicas. ,e, durante o processo de indexao, dois ou mais registros orem encontrados com o mesmo valor de c!ave, o Clipper inclui somente o primeiro registro no .ndice. &nde "uer "ue a c!ave se0a atuali'ada, :E3@6E?ada, ou so ra PACA, somente registros <nicos sero mantidos. & .ndice mant(m seu atributo de unicidade sem importar*se com o ,E7@327E corrente, o mesmo se tivesse sido criado com 3@6E? &@...7@327E. Alterar o valor da c!ave num .ndice <nico tem algumas implicaes importantes. Primeiro, se uma c!ave ( alterada para um valor de c!ave 0) existente no ar"uivo, o registro alterado ( perdido no .ndice. ,egundo, se !ouver mais de um caso de um valor c!ave dentro de um ar"uivo de dados, alterar a c!ave vis.vel no tra' G tona outro registro com a mesma c!ave "uando o .ndice ( reconstru.do com :E3@6E?, PACA, ou 3@6E?...7@327E. Com 7@327E &CC, .ndices so criados com todos os registros no .ndice. #odi icaes posteriores aos ar"uivos de dados adicionam todos os valores de c!ave ao .ndice, independente do estado de ,E- 7@327E. ,E- 7@327E ( um comando de compatibilidade e portanto no recomendado. Ele ( superado pela cl)usula 7@327E no comando 3@6E?.

SE' 5 AP
Comuta rotao em #E@7s

Sinta*e
,E- S:AP on W &CC W <xlComuta>

Argumentos
&@ permite G barra luminosa rotacionar "uando estiver navegando em um menu de barra. &CC suprime a rotao num menu de barra. <xlComuta> ( uma expresso l8gica entre parnteses. 7m valor verdadeiro 4.-.5 ( o mesmo "ue &@, e also 4.C.5 ( o mesmo "ue &CC.

(es+rio
,E- S:AP comuta a rotao da barra luminosa em um Y...P:&#P- do primeiro para o <ltimo item e vice*versa. 2uando S:AP est) &@ e o <ltimo item est) iluminado, Cursor para direita ou Cursor

Colgio Catanduvas

Prof. Hlio Lemes Costa Jr.

0,

CLIPPER Apostila de Linguagem de Programao I

1999

para baixo movem a barra luminosa para o primeiro item. -amb(m "uando o primeiro item de menu est) iluminado, Cursor para es"uerda ou Cursor para cima movem a barra para o <ltimo item. 2uando S:AP est) &CC, pressionar Cursor para cima ou Cursor para es"uerda no primeiro item ou Cursor para baixo ou Cursor para direita no <ltimo item, no causam nen!uma ao.

Funes
Fun es numricas
ABS;<
:etorna o valor absoluto de uma expresso num(rica

Sinta*e
A+,4<nExp>5 **> nPositivo

Argumentos
<nExp> ( a expresso num(rica a ser avaliada.

Retorno
A+,45 retorna um n<mero "ue representa o valor absoluto de seu argumento. & valor retornado ( um n<mero positivo ou 'ero.

(es+rio
A+,45 ( uma uno num(rica utili'ada para determinar a magnitude de um valor num(rico independente de seu sinal. Ela permite, por exemplo, "ue voc obten!a a di erena entre dois n<meros como um valor positivo sem saber com antecedncia "ual dos dois ( o maior. @ormalmente, A+,4x5 ( de inida nos termos de seu argumento, x, como segue$ se x >H D, A+,4x5 retorna x^ caso contr)rio, A+,4x5 retorna *x.

E*emplos
&s exemplos a seguir ilustram resultados t.picos da uno A+,45$ n@umR $H RDD n@umL $H R5D % n@umR * n@umL % A+,4n@umR * n@umL5 % A+,4n@umL * n@umR5 % A+,4*RL5 % A+,4D5

QQ :esulta$ *5D QQ :esulta$ 5D QQ :esulta$ 5D QQ :esulta$ RL QQ :esulta$ D

Colgio Catanduvas

Prof. Hlio Lemes Costa Jr.

0-

CLIPPER Apostila de Linguagem de Programao I


EXP;<
Calcula eXXx

1999

Sinta*e
E?P4<nExpoente>5 **> n9og@atural

Argumentos
<nExpoente> ( o logaritmo natural para o "ual um valor num(rico ser) calculado.

Retorno
E?P45 retorna um valor num(rico e"uivalente ao valor de e elevado G potncia especi icada.

(es+rio
E?P45 ( uma uno matem)tica "ue calcula eXXx, onde e ( a base do logaritmo natural e x ( o <nExpoente>. & valor m)ximo de <nExpoente> ( M5 antes "ue ocorra um excedente num(rico. E?P45 e 9&;45 so unes inversas. A "uantidade de casas decimais exibidas ( determinada unicamente por ,E- 6EC3#A9,, no importando o valor corrente de ,E- C3?E6.

E*emplos
Este exemplo demonstra v)rias invocaes de E?P45$ % E?P4R5 ,E- 6EC3#A9, -& RD % E?P4R5 % 9&;4E?P4R55 QQ :esulta$ L.\L QQ :esulta$ L.\RVLVRVLV5 QQ :esulta$ R.DDDDDDDDDD

%+';<
Converte um valor num(rico para um inteiro

Sinta*e
3@-4<nExp>5 **> n3nteiro

Argumentos
<nExp> ( uma expresso num(rica a ser convertida para um inteiro.

Retorno
3@-45 retorna um valor num(rico inteiro.

Colgio Catanduvas

Prof. Hlio Lemes Costa Jr.

0.

CLIPPER Apostila de Linguagem de Programao I


(es+rio

1999

3@-45 ( uma uno num(rica "ue converte um valor num(rico para um inteiro truncando**e no arredondando**todos os d.gitos G direita do ponto decimal. 3@-45 ( <til em operaes onde a poro decimal de um n<mero no ( necess)ria.

E*emplos
& exemplo a seguir demonstra os resultados de v)rias invocaes da uno 3@-45$ % 3@-4RDD.DD5QQ :esulta$ RDD % 3@-4.55 QQ :esulta$ D % 3@-4*RDD.\55 QQ :esulta$ *RDD

LO0;<
Calcula o logaritmo natural de um valor num(rico

Sinta*e
9&;4<nExp>5 **> n9og@atural

Argumentos
<nExp> ( um valor num(rico maior do "ue 'ero a ser convertido para seu logaritmo natural.

Retorno
9&;45 retorna o logaritmo natural na orma de um valor num(rico. Caso <nExp> se0a menor ou igual a 'ero, 9&;45 retorna um estouro num(rico 4exibido na orma de uma ila de asteriscos5.

(es+rio
9&;45 ( uma uno num(rica "ue calcula o logaritmo natural de um n<mero, sendo o inverso da uno E?P45. & logaritmo natural tem como base e, "ue ( aproximadamente L,\RV3. A uno 9&;45 retorna x na seguinte e"uao$ eXXx H E onde E ( a expresso num(rica utili'ada como o argumento 9&;45 4ou se0a, 9&;4E5 H x5. 6evido ao arredondamento matem)tico, os valores retornados por 9&;45 e E?P45 podem no coincidir exatamente 4isto (, E?P49&;4x55 pode no ser sempre igual a x5.

E*emplos
&s exemplos a seguir demonstram v)rios resultados de 9&;45$ % 9&;4RD5 % 9&;4RD X L5 % E?P49&;4R55 % 9&;4L.\R5 QQ :esulta$ L.3D QQ :esulta$ 3.DD QQ :esulta$ R.DD QQ :esulta$ R.DD

Colgio Catanduvas

Prof. Hlio Lemes Costa Jr.

0/

CLIPPER Apostila de Linguagem de Programao I


Este exemplo ( uma uno de usu)rio "ue retorna o logaritmo de base RD$ C7@C-3&@ 9ogRD4 n@um 5 3C n@um > D :E-7:@ 9&;4n@um5Q9&;4RD5 E9,E :E-7:@ @39 E@63C

1999

!O#;<$
:etorna o m8dulo d+A,E 333 P97, de dois n<meros

Sinta*e
#&64<n6ividendo>, <n6ivisor>5 **> n:esto

Argumentos
<n6ividendo> ( o dividendo da operao de diviso. <n6ivisor> ( o divisor da operao de diviso.

Retorno
#&645 retorna um n<mero "ue representa o resto de <n6ividendo> dividido por <n6ivisor>.

(es+rio
#&645 ( uma uno num(rica "ue corresponde G uno #&645 do d+A,E 333 P97,. Ela ( implementada usando o operador m8dulo 4g5 do Clipper. @ote "ue !) di erenas entre a uno #&645 do d+A,E 333 P97, e o operador m8dulo do Clipper, "ue estao descritas na tabela seguinte$ -abela 5*L5$ 6i erenas entre a uno #&645 do d+A,E 333 P97, e o &perador #8dulo do Clipper (ividendo 3 3 *3 *3 *R *L L R (ivisor D *L L D 3 3 *3 *3 "perador 7?dulo Erro R *R Erro *R *L L R 7"(89 Erro *R R Erro L R *R *L #uno 7"(89 no d@ASE III Plus 3 *R R *3 L R *R *L

&otas

Colgio Catanduvas

Prof. Hlio Lemes Costa Jr.

00

CLIPPER Apostila de Linguagem de Programao I

1999

6ivisor 'ero em d+A,E 333 P97,$ Em d+A,E 333 P97,, um divisor 'ero retorna o dividendo para cada valor do dividendo. Em Clipper, pelo contr)rio, o m8dulo de "ual"uer dividendo utili'ando um divisor 'ero causa um erro em tempo de execuo. 6ivisor 'ero em verses anteriores$ Em verses anteriores G ,ummer hV\ do Clipper, operaes de m8dulo com divisor 'ero retornavam 'ero para todos os dividendos. @a verso ,ummer hV\ e posteriores, elas retornam um erro em tempo de execuo.

O(+#;<
:etorna um valor num(rico arredondado para uma "uantidade especi icada de d.gitos.

Sinta*e
:&7@64<n@<mero>, <n6ecimais>5 **> nArredondado

Argumentos
<n@<mero> ( o valor num(rico a ser arredondado. <n6ecimais> de ine a "uantidade de casas decimais a serem retidas. Especi icando*se um valor <n6ecimais> negativo arredonda n<meros inteiros.

Retorno
:&7@645 retorna um valor num(rico.

(es+rio
:&7@645 ( uma uno num(rica "ue arredonda <n@<mero> para a "uantidade de casas especi icada por <n6ecimais>. Especi icando*se um valor 'ero ou negativo para <n6ecimais> permite o arredondamento de n<meros inteiros. 7m <n6ecimais> negativo indica a "uantidade de casas G es"uerda do ponto decimal a serem arredondadas. 6.gitos entre cinco e nove, inclusive, so arredondados para cima. 6.gitos abaixo de cinco so arredondados para baixo. A exibio do valor de retorno no obedece G co igurao de 6EC3#A9,, a no ser "ue ,E- C3?E6 este0a &@. Com ,E- C3?E6 &CC, a exibio do valor de retorno cont(m a mesma "uantidade de casas decimais "ue voc especi icar para <n6ecimais>, ou 'ero se <n6ecimais> or menor do "ue um.

E*emplos
&s exemplos a seguir arredondam valores com d.gitos decimais$ ,E- 6EC3#A9, -& L ,E- C3?E6 &@ QQ % :&7@64RD.M, D5 % :&7@64RD.5, D5 % :&7@64RD.5R, D5 % :&7@64RD.MNNNNNNNNNNNNN, L5

QQ :esulta$ RD.DD QQ :esulta$ RR.DD QQ :esulta$ RR.DD QQ :esulta$ RD.5D

Colgio Catanduvas

Prof. Hlio Lemes Costa Jr.

01

CLIPPER Apostila de Linguagem de Programao I

1999

Estes exemplos utili'am um argumento <n6ecimais> negativo para arredondar valores num(ricos para valores num(ricos inteiros$ % :&7@64RDR.NN, *R5 % :&7@64RDN.NN, *R5 % :&7@64RDN.NN, *L5 QQ :esulta$ RDD.DD QQ :esulta$ RRD.DD QQ :esulta$ RDD.DD

S9 ';<
:etorna a rai' "uadrada de um n<mero positivo.

Sinta*e
,2:-4<n@<mero>5 **> n:ai'

Argumentos
<n@<mero> ( um n<mero positivo do "ual ser) calculada a rai' "uadrada.

Retorno
,2:-45 retorna um valor num(rico calculado com preciso dupla. A "uantidade de casas decimais exibidas ( determinada apenas por ,E- 6EC3#A9,, sem importar a con igurao de ,E- C3?E6. 7m n<mero negativo <n@<mero> retorna 'ero.

(es+rio
,2:-45 ( uma uno num(rica utili'ada em "ual"uer lugar em um c)lculo num(rico para computar uma rai' "uadrada. Por exemplo, pode ser o caso de uma expresso para calcular o desvio padro de um con0unto de n<meros.

E*emplos
Estes exemplos ilustram v)rios resultados de ,2:-45$ ,E- 6EC3#A9, -& 5 QQ % ,2:-4L5 QQ :esulta$ R.MRMLR % ,2:-4M5 QQ :esulta$ L.DDDDD % ,2:-4M5 XX LQQ :esulta$ M.DDDDD % ,2:-4L5 XX LQQ :esulta$ L.DDDDD

Fun es Caracteres
ALL' %!;<
:emove espaos em branco G direita e G es"uerda de uma cadeia de caracteres

Sinta*e

Colgio Catanduvas

Prof. Hlio Lemes Costa Jr.

09

CLIPPER Apostila de Linguagem de Programao I


A99-:3#4<c,tring>5 **> c-rim,tring

1999

Argumentos
<c,tring> ( a expresso caractere cu0os espaos em branco sero eliminados.

Retorno
A99-:3#45 retorna uma cadeia de caracteres cu0os espaos em branco G direita e G es"uerda oram removidos.

(es+rio
A99-:3#45 ( uma uno de tratamento de dados do tipo caractere "ue remove os espaos em branco G direita e G es"uerda de uma cadeia de caracteres. i relacionada a 9-:3#45 e :-:3#45, "ue removem espaos em branco G es"uerda e G direita de uma cadeia de caracteres, respectivamente. & inverso de A99-:3#45, 9-:3#45, e :-:3#45 so as unes PA6C45, PA6:45, e PA6945, as "uais centrali'am, alin!am G direita, ou alin!am G es"uerda cadeias de caracteres atrav(s da nsero de caracteres de preenc!imento.

E*emplos
& exemplo a seguir cria uma cadeia de caracteres com espaos em branco G direita e G es"uerda, e depois remove os espaos com A99-:3#45$ c,tring $H ,PACE4RD5 Z 1string1 Z ,PACE4RD5 % 9E@4c,tring5 QQ :esulta$ LO % 9E@4A99-:3#4c,tring55 QQ :esulta$ O

C7 ;<
Converte um c8digo A,C33 para um valor caractere

Sinta*e
C_:4<nCodigo>5 **> cCar

Argumentos
<nCodigo> ( um c8digo A,C33 na aixa de 'ero a L55.

Retorno
C_:45 retorna um <nico valor caractere cu0o c8digo A,C33 est) especi icado em <nCodigo>.

(es+rio
C_:45 ( uma uno de converso num(rica "ue converte um c8digo A,C33 para um caractere. i o inverso de A,C45. C_:45 ( muito vers)til e serve para uma s(rie de operaes comuns tais como$

Colgio Catanduvas

Prof. Hlio Lemes Costa Jr.

12

CLIPPER Apostila de Linguagem de Programao I


Enviar c8digos de controle e caracteres gr) icos para a tela ou impressora ,oar o alarme sonoro Converter valores de retorno de 3@AEI45 para caracteres Preenc!er o bu er de teclado

1999

&otas
& caractere nulo$ C_:4D5 tem o taman!o de um e ( tratado da mesma orma "ue "ual"uer outro caractere. 3sto permite a voc envi)*lo a "ual"uer dispositivo ou ar"uivo, inclusive ar"uivos de bancos de dados.

E*emplos
&s exemplos a seguir ilustram C_:45 com v)rios argumentos$ % C_:4\L5 QQ :esulta$ _ % C_:4A,C41A15 Z 3L5QQ :esulta$ a % C_:4\5 QQ :esulta$ alarme soa Estas duas lin!as de c8digo demonstram a di erena entre uma cadeia de caracteres nula e um caractere nulo$ % 9E@4115 % 9E@4C_:4D55 QQ :esulta$ D QQ :esulta$ R

L' %!;<
:emove os espaos em branco G es"uerda de uma cadeia de caracteres.

Sinta*e
9-:3#4<c,tring>5 **> c,tring:esult

Argumentos
<c,tring> ( a cadeia de caracteres a ser copiada sem os espaos em branco G es"uerda.

Retorno
9-:3#45 retorna uma c8pia de <c,tring>, sendo "ue os espaos em branco G es"uerda oram removidos. Caso <c,tring> se0a uma cadeia de caracteres nula 4115 ou toda composta de espaos em branco, 9-:3#45 retorna uma cadeia de caracteres nula 4115.

(es+rio
9-:3#45 ( uma uno de tratamento de caracteres utili'ada para ormatar cadeias de caracteres "ue possuam espaos em branco G es"uerda. Pode ser o caso de, por exemplo, n<meros convertidos para cadeias de caracteres atrav(s da uno ,-:45.

Colgio Catanduvas

Prof. Hlio Lemes Costa Jr.

11

CLIPPER Apostila de Linguagem de Programao I

1999

9-:3#45 ( relacionada a :-:3#45, a "ual remove espaos em branco G direita, e a A99-:3#45, "ue remove espaos tanto G es"uerda "uanto G direita. & contr)rio de A99-:3#45, 9-:3#45, e :-:3#45 so as unes PA6C45, PA6:45, e PA6945, as "uais centrali'am, alin!am G direita, ou alin!am G es"uerda as cadeias de caracteres, atrav(s da insero de caracteres de preenc!imento.

E*emplos
&s exemplos a seguir ilustram 9-:3#45 utili'ada em combinao com v)rias outras unes$ n@umber H RV % ,-:4n@umber5 % 9E@4,-:4n@umber55 % 9-:3#4,-:4n@umber55 % 9E@49-:3#4,-:4n@umber555 QQ :esulta$ RV QQ :esulta$ RD QQ :esulta$ RV QQ :esulta$ L

EPL%CA'E;<
:etorna uma cadeia de caracteres repetida uma "uantidade de ve'es especi icada.

Sinta*e
:EP93CA-E4<c,tring>, <nCont>5 **> c,tring:epetido

Argumentos
<c,tring> ( a cadeia de caracteres a ser repetida. <nCont> ( a "uantidade de ve'es "ue <c,tring> ser) repetido.

Retorno
:EP93CA-E45 retorna uma cadeia de caracteres de no m)ximo O5.535 4OMA5 bEtes. ,e or especi icado 'ero como o argumento <nCont> retorna uma cadeia de caracteres nula 4115.

(es+rio
:EP93CA-E45 ( uma uno de tratamento de caracteres utili'ada para exibir, imprimir, ou preenc!er o teclado repetidamente com um ou mais caracteres. :EP93CA-E45 ( semel!ante G uno ,PACE45, a "ual retorna uma "uantidade especi icada de caracteres em branco.

E*emplos
Estes exemplos demonstram :EP93CA-E45 repetindo cadeias de caracteres$ % :EP93CA-E41X1, 55 % :EP93CA-E41&i 1, L5 % :EP93CA-E4C_:4ML5, 55 QQ :esulta$ XXXXX QQ :esulta$ &i &i QQ :esulta$ XXXXX

Este exemplo utili'a :EP93CA-E45 para preenc!er o teclado com v)rias teclas Cursor para baixo$ [include 13n>eE.c!1

Colgio Catanduvas

Prof. Hlio Lemes Costa Jr.

1)

CLIPPER Apostila de Linguagem de Programao I


AEI+&A:6 :EP93CA-E4C_:4A]6@5, L55

1999

SPACE;<
:etorna um string de espaos.

Sinta*e
,PACE4<nCont>5 **> cEspaos

Argumentos
<nCont> ( a "uantidade de espaos a serem retornados, sendo "ue o n<mero m)ximo ( O5.535 4OMA5.

Retorno
,PACE45 retorna uma cadeia de caracteres. ,e <nCont> or 'ero, ,PACE45 retorna uma cadeia de caracteres nula 4115.

(es+rio
,PACE45 ( uma uno de tratamento de caracteres utili'ada para retornar uma "uantidade especi icada de espaos. i o mesmo "ue :EP93CA-E41 1, <nCont>5. ,PACE45 ( utili'ada para iniciali'ar uma vari)vel do tipo caractere, antes "ue a mesma se0a associada a um ;E-. ,PACE45 tamb(m ( usada para preenc!er cadeias de caracteres com espaos. &bserve, por(m, "ue as unes PA6C45, PA6945, e PA6:45 so mais e ica'es neste caso.

E*emplos
Este exemplo utili'a ,PACE45 para iniciali'ar uma vari)vel para entrada de dados$ 7,E Customer @ES #E#/A:*>@ame $H ,PACE49E@4Customer*>@ame55 Y RD,RD ,AI 1@ome do Cliente$1 ;E- #E#/A:*>@ame :EA6

S' ;<
Converte uma expresso num(rica para uma cadeia de caracteres.

Sinta*e
,-:4<n@<mero>, J<n-aman!o>K, J<n6ecimais>K5 **> c@<mero

Argumentos
<n@<mero> ( a expresso num(rica a ser convertida para uma cadeia de caracteres. <n-aman!o> ( o taman!o da cadeia de caracteres a ser retornada incluindo d.gitos decimais, ponto decimal, e sinal.

Colgio Catanduvas

Prof. Hlio Lemes Costa Jr.

1,

CLIPPER Apostila de Linguagem de Programao I


<n6ecimais> ( a "uantidade de casas decimais a serem retornadas.

1999

Retorno
,-:45 retorna <n@<mero> ormatado como uma cadeia de caracteres. ,e os argumentos opcionais de taman!o e decimais no oram especi icados, ,-:45 retorna a cadeia de caracteres con orme as seguintes regras$

3a4ela .5,)6 Resultados de S3R89 sem Argumentos


E*presso /ari)vel ExpressesQconstantes /A945 #&@-_45Q6AI45 IEA:45 :EC@&45 3aman<o do Aalor de Retorno Campo -aman!o do campo mais decimais #.nimo de RD d.gitos mais decimais #.nimo de 3 d.gitos 3 d.gitos 5 d.gitos \ d.gitos

(es+rio
,-:45 ( uma uno "ue converte valores num(ricos para cadeias de caracteres. Ela ( comumente utili'ada para concatenar valores num(ricos a cadeias de caracteres. ,-:45 ( aplicada na exibio de n<meros, criao de c8digos tais como n<meros de produtos, e criao de c!aves de indexao "ue combinam dados do tipo num(rico e caractere. ,-:45 ( semel!ante a -:A@,C&:#45, "ue ormata valores num(ricos como cadeias de caracteres utili'ando uma m)scara ao inv(s de especi icaes de taman!o e decimais. Como -:A@,C&:#45 usa uma m)scara, ela pode inserir caracteres de ormatao tais como v.rgulas, ci roes, e parnteses. & inverso de ,-:45 ( /A945, a "ual converte n<meros presentes em cadeias de caracteres em valores num(ricos.

&otas
,e <n-aman!o> or menor do "ue a "uantidade de d.gitos num(ricos inteiros em <n@<mero>, ,-:45 retorna asteriscos ao inv(s do n<mero. Caso <n-aman!o> se0a menor do "ue a "uantidade de d.gitos decimais necess)rios G parte decimal da cadeia de caracteres retornada, o Clipper arredonda o n<mero para a "uantidade de casas decimais dispon.veis. ,e <n-aman!o> or especi icado, mas <n6ecimais> or omitido 4sem casas decimais5, o valor de retorno ( arredondado para um inteiro.

E*emplos
Estes exemplos demonstram a aixa de valores retornados por ,-:45, de acordo com os argumentos especi icados$ n@umber H RL3.M5

Colgio Catanduvas

Prof. Hlio Lemes Costa Jr.

1-

CLIPPER Apostila de Linguagem de Programao I


% ,-:4n@umber5 % ,-:4n@umber, M5 % ,-:4n@umber, L5 % ,-:4n@umber X RD, \, L5 % ,-:4n@umber X RD, RL, M5 % ,-:4n@umber, RD, R5 QQ :esulta$RL3.M5 QQ :esulta$ RL3 QQ :esulta$ XX QQ :esulta$ RL3M.5D QQ :esulta$ RL3M.5DDD QQ :esulta$ RL3M.5

1999

Este exemplo utili'a ,-:45 para criar um .ndice com uma c!ave composta de n<meros de ordem e nomes de clientes$ 7,E Customer @ES 3@6E? &@ ,-:4@um&rders, N5 Z Cust@ame -& Cust&rd

S(BS' ;<
Extrai um substring de uma cadeia de caracteres.

Sinta*e
,7+,-:4<c,tring>, <n3n.cio>, J<nCont>K5 **> c,ubstring

Argumentos
<c,tring> ( a cadeia de caracteres da "ual ser) extraido um substring, podendo ter at( O5.535 4OMA5 bEtes, "ue ( o taman!o m)ximo de uma cadeia de caracteres em Clipper. <n3n.cio> ( a posio inicial em <c,tring>. ,e <n3n.cio> or positivo, ele ( relativo ao caractere mais G es"uerda em <c,tring>. ,e <n3n.cio> or negativo, ele ( relativo ao caractere mais G direita em <c,tring>. <nCont> ( a "uantidade de caracteres a serem extraidos. ,e omitido, o substring comea em <n3n.cio> e continua at( o im da cadeia de caracteres. ,e <nCont> or maior do "ue a "uantidade de caracteres existentes a partir de <n3n.cio> at( o inal de <c,tring>, o excedente ( ignorado.

Retorno
,7+,-:45 retorna uma cadeia de caracteres.

(es+rio
,7+,-:45 ( uma uno de tratamento de caracteres "ue extrai um substring de "ual"uer outra cadeia ou campo memo. ,7+,-:45 est) relacionada Gs unes 9EC-45 e :3;_-45, "ue extraem substrings "ue comeam com os caracteres mais G es"uerda e mais G direita em <c,tring>, respectivamente. As unes ,7+,-:45, :3;_-45, e 9EC-45 so utili'adas 0untamente com as unes A-45 e :A-45 para locali'ar a primeira eQou <ltima posio de um substring antes de extrai*lo. Elas tamb(m so utili'adas para exibir ou imprimir apenas uma parte de uma cadeia de caracteres.

E*emplos
&s exemplos a seguir extraem o primeiro e o <ltimo nome de uma vari)vel$

Colgio Catanduvas

Prof. Hlio Lemes Costa Jr.

1.

CLIPPER Apostila de Linguagem de Programao I


c@ame $H 1+i ,tEvesent1 % ,7+,-:4c@ome, R, M5 % ,7+,-:4c@ome, O5 % ,7+,-:4c@ome, 9E@4c@ome5 Z L5 % ,7+,-:4c@ome, *N5 % ,7+,-:4c@ome, *N, 35

1999

QQ :esulta$ +i QQ :esulta$ ,tEvesent QQ :esulta$ null string QQ :esulta$ ,tEvesent QQ :esulta$ ,tE

Este exemplo utili'a ,7+,-:45 0untamente com A-45 e :A-45 para criar uma uno de inida pelo usu)rio com a inalidade de extrair um nome de ar"uivo de uma especi icao dada$ % Cile+ase41C$FP:;F#IC39E.&+=15 C7@C-3&@ Cile+ase4 cCile 5 9&CA9 nPos 3C 4nPos $H :A-41F1, cCile55 aH D :E-7:@ ,7+,-:4cCile, nPos Z R5 E9,E3C 4nPos $H A-41$1, cCile55 aH D :E-7:@ ,7+,-:4cCile, nPos Z R5 E9,E :E-7:@ cCile E@63C QQ :esulta$ #IC39E.&+=

(PPE ;<
Converte caracteres min<sculos para mai<sculos.

Sinta*e
7PPE:4<c,tring>5 **> c,tring#aiusc

Argumentos
<c,tring> ( a cadeia de caracteres a ser convertida.

(es+rio
7PPE:45 ( uma uno de tratamento de caracteres utili'ada para converter todos os caracteres em um string para mai<sculos. Ela est) relacionada a 9&SE:45, "ue converte todos os caracteres em um string para min<sculos. 7PPE:45 est) relacionada Gs unes 3,7PPE:45 e 3,9&SE:45, as "uais determinam se um string comea com uma letra mai<scula ou min<scula. 7PPE:45 geralmente ( utili'ada para ormatar cadeias de caracteres para ins de exibio. Ela pode, por(m, ser usada para normali'ar strings para ins de comparaes onde no se di erencia mai<sculas de min<sculas, ou para ins de 3@6E?ao.

E*emplos
&s exemplos a seguir ilustram os e eitos de 7PPE:45$ % 7PPE:41a string15 % 7PPE:41RL3 c!ar H <>15 QQ :esulta$ A ,-:3@; QQ :esulta$ RL3 C_A: H <>

Colgio Catanduvas

Prof. Hlio Lemes Costa Jr.

1/

CLIPPER Apostila de Linguagem de Programao I

1999

Este exemplo utili'a 7PPE:45 como parte de uma condio "ue no di erencia mai<sculas de min<sculas$ 7,E Customer 3@6E? Cust@ame @ES 93,- Cust@ame C&: 13,A+E99A1 b 7PPE:4Customer5 7PPE:45 tamb(m ( <til para criar expresses de c!ave de indexao onde no ( eita a di erenciao entre mai<sculas e min<sculas, desta orma$ 7,E Customer @ES 3@6E? &@ 7PPE:49ast5 -& Cust9ast 6epois, use a mesma expresso para a'er uma pes"uisa em Customers$ #E#/A:*>9ast H ,PACE4R55 Y RD, RD ;E- #E#/A:*>9ast :EA6 ,EEA 7PPE:4#E#/A:*>9ast5

&AL;<
Converte um n<mero presente em uma cadeia de caracteres para um valor num(rico.

Sinta*e
/A94<c@<mero>5 **> n@<mero

Argumentos
<c@<mero> ( a expresso caractere a ser convertida.

Retorno
/A945 retorna <c@<mero> convertido para um valor num(rico, incluindo d.gitos decimais.

(es+rio
/A945 ( uma uno de converso de caracteres, a "ual converte uma cadeia de caracteres "ue cont(m d.gitos num(ricos para um valor num(rico. 2uando /A945 ( executada, ela avalia <c@<mero> at( encontrar o segundo ponto decimal, o primeiro caractere no num(rico, ou o inal da expresso. &s espaos G direita so ignorados. Com ,E- C3?E6 em &@, /A945 retorna a "uantidade de casas decimais especi icadas por ,E- 6EC3#A9,, arredondando <c@<mero> se ele or especi icado com uma "uantidade de d.gitos maior do "ue o valor corrente de 6EC3#A9,. 6a mesma orma "ue todas as outras unes "ue arredondam, os d.gitos entre 'ero e "uatro so arredondados para baixo, e os d.gitos entre cinco e nove so arredondados para cima. Com ,E- C3?E6 em &CC, /A945 retorna a "uantidade de casas decimais especi icadas em <c@<mero>. /A945 ( o oposto de ,-:45 e -:A@,C&:#45, as "uais convertem valores num(ricos para cadeias de caracteres.

Colgio Catanduvas

Prof. Hlio Lemes Costa Jr.

10

CLIPPER Apostila de Linguagem de Programao I


E*emplos

1999

&s exemplos a seguir ilustram /A945 com ,E- C3?E6 &@, e ,E- 6EC3#A9, -& L$ ,E- 6EC3#A9, -& L ,E- C3?E6 &@ QQ % /A941RL.RL3M15 % /A941RL.RL5O15 % /A941RLARL15 % /A941ARLRL15 % /A94,PACE4D55 % /A94,PACE4R55 % /A941 RL.RL15 % /A941RL .RL15

QQ :esulta$ RL.RL QQ :esulta$ RL.R3 QQ :esulta$ RL.DD QQ :esulta$ D.DD QQ :esulta$ D.DD QQ :esulta$ D.DD QQ :esulta$ RL.RL QQ :esulta$ RL.DD

Fun es Cronolgicas
C'O#;<
Converte uma cadeia de caracteres em uma data correspondente

Sinta*e
C-&64<c6ata>5 **> d6ata

Argumentos
<c6ata> ( uma cadeia de caracteres "ue cont(m n<meros representando o ms, dia, e ano separados por "ual"uer outro caractere "ue no um n<mero. &s d.gitos do ms, dia, e ano devem ser especi icados de acordo com o ormato indicado pelo ,E- 6A-E. ,e os d.gitos do s(culo no so especi icados, o s(culo ( determinado pelas regras do ,E- EP&C_.

Retorno
C-&645 retorna um dado do tipo data. ,e <c6ata> no ( uma data v)lida, C-&645 retorna uma data va'ia.

(es+rio
-&645 ( uma uno de converso de caracteres "ue converte uma cadeia e caracteres em uma data. Para iniciali'ar uma data va'ia para uma ntrada de dados, especi i"ue a <c6ata> como sendo uma cadeia de aracteres nula 4115, ,PACE4V5, ou 1 Q Q 1. -&645 ( usado sempre "ue voc precisar um dado literal do tipo data. lguns exemplos so$ 3niciali'ando uma vari)vel para um valor do tipo data Especi icando um literal do tipo data como sendo um argumento de uma cl)usula :A@;E de um Y...;EEspeci icando um literal do tipo data a im de reali'ar operaes aritm(ticas com esta

Colgio Catanduvas

Prof. Hlio Lemes Costa Jr.

11

CLIPPER Apostila de Linguagem de Programao I

1999

Comparando o resultado de uma expresso do tipo data com um cadeia literal do mesmo tipo E etuando :EP9ACE em um campo do tipo data com uma cadeia literal do mesmo tipo C-&645 ( o inverso de 6-&C45 na "ual converte um valor do tipo data para uma cadeia de caracteres no ormato especi icado pelo ,E- 6A-E e ,E- CE@-7:I. 6-&,45 tamb(m converte um valor do tipo data para uma cadeia de caracteres na orma aaaammdd.

E*emplos
& exemplo seguinte utili'a C-&645 para iniciali'ar duas vari)veis do tipo data, usando uma no ;E- e a outra para a validao do :A@;E$ ,E- CE@-7:I &@ d+egin H C-&641DR*LO*RV\O15 dCurrent H C-&64115 Y RD, RD ,AI 16igite a data$1 ;E- dCurrent :A@;E d+egin, 6A-E45 :EA6 Este exemplo utili'a C-&645 para criar um valor do tipo data 7,E 3nventorE @ES :EP9ACE A99 3nventorE*>Price S3-_ 3nventorE*>Price X R.R^ C&: 3nventorE*>3nv6ate < C-&641RDQRDQND15

#A'E;<
:etorna a data do sistema como sendo um valor do tipo data

Sinta*e
6A-E45 **> d,istema

Retorno
6A-E45 retorna a data do sistema como sendo um valor do tipo data.

(es+rio
6A-E45 ( uma uno de tratamento de datas "ue prov um meio de iniciali'ar vari)veis de mem8ria com a data corrente, comparando outros valores do tipo data para a data corrente, e reali'ando operaes aritm(ticas relativas G data corrente. & ormato para a exibio de datas ( controlado pelo comando ,E- 6A-E. & ormato padro assumido ( mmQddQaa.

E*emplos
&s exemplos seguintes mostram a uno 6A-E45 utili'ada de v)rias maneiras$ % 6A-E45 % 6A-E45 Z 3D QQ :esulta$ DNQDRQND QQ :esulta$ RDQDRQND

Colgio Catanduvas

Prof. Hlio Lemes Costa Jr.

19

CLIPPER Apostila de Linguagem de Programao I


% 6A-E45 * 3D d6ate H 6A-E45 % C#&@-_4d6ate5 QQ :esulta$ DVQDLQND QQ :esulta$ ,etembro

1999

#'OC;<
Converte um valor data para uma cadeia de caracteres

Sinta*e
6-&C4<d6ata>5 **> c6ata

Argumentos
<d6ata> ( o valor data "ue ser) convertido.

Retorno
6-&C45 retorna uma cadeia de caracteres "ue representa uma data. & valor de retorno ( ormatado de acordo com o ormato de datas corrente. & ormato padro ( mmQddQaa. 7ma data nula retorna uma cadeia de caracteres em branco igual em taman!o ao ormato de data corrente.

(es+rio
6-&C45 ( uma uno de converso de datas utili'ada por motivos de ormatao "uando voc dese0a exibir a data no ormato ,E- 6A-E e ( necess)ria uma expresso caractere 4em um 9A+E9 C&:#, por exemplo5. Caso voc precise de um ormato de data espec. ico, voc pode utili'ar -:A@,C&:#45 ou uma expresso customi'ada. ,e voc estiver 3@6E?ando uma data 0untamente com uma cadeia de caracteres, use 6-&,45 ao inv(s de 6-&C45 para converter o valor data para uma cadeia de caracteres.

E*emplos
&s exemplos a seguir demonstram utili'aes gerais de 6-&C45$ % 6A-E45 % 6-&C46A-E455 % 1_o0e e 1 Z 6-&C46A-E455 QQ :esulta$ DNQDRQND QQ :esulta$ DNQDRQND QQ :esulta$ _o0e e DNQDRQND

#'OS;<
Converte um valor data para uma cadeia de caracteres com ormato aaaammdd

Sinta*e
6-&,4<d6ata>5 **> c6ata

Argumentos

Colgio Catanduvas

Prof. Hlio Lemes Costa Jr.

92

CLIPPER Apostila de Linguagem de Programao I


<d6ata> ( o valor data "ue ser) convertido.

1999

Retorna
6-&,45 retorna uma cadeia com oito caracteres no ormato, aaaammdd. 2uando <d6ata> or uma data nula 4C-&641155, 6-&,45 retorna uma cadeia de oito caracteres em branco. & valor de retorno no ( a etado pelo ormato de data corrente.

(es+rio
6-&,45 ( uma uno de converso de datas utili'ada para criar expresses de .ndice "ue consistem em um valor data e uma expresso caractere. 6-&,45 converte um valor data para uma cadeia de caracteres "ue pode ser concatenada a "ual"uer outra expresso caractere. & valor de retorno ( estruturado para preservar a ordem de data 4ano, ms, e dia5.

E*emplos
&s exemplos a seguir ilustram 6-&,45 em con0unto com v)rias outras unes$ % 6A-E45 % 6-&,46A-E455 % 9E@46-&,4C-&6411555 QQ :esulta$ DNQDRQND QQ :esulta$ RNNDDNDR QQ :esulta$ V

Este exemplo demonstra como criar um .ndice com uma data composta e c!ave de caractere utili'ando 6-&,45$ 7,E ,ales @ES 3@6E? &@ 6-&,46ate5 Z ,alesman -& 6ate@ame

"EA ;<
Converte um valor data para ano na orma de um valor num(rico.

Sinta*e
IEA:4<d6ata>5 **> nAno

Argumentos
<d6ata> ( o valor data a ser convertido.

Retorno
IEA:45 retorna o ano do valor data especi icado, inclusive d.gitos indicativos de s(culo, na orma de um valor num(rico de "uatro d.gitos. & valor retornado no ( in luenciado pelo ormato de 6A-E ou CE@-7:I corrente. A especi icao de uma data nula 4C-&641155 retorna 'ero.

(es+rio

Colgio Catanduvas

Prof. Hlio Lemes Costa Jr.

91

CLIPPER Apostila de Linguagem de Programao I

1999

IEA:45 ( uma uno de converso de datas utili'ada para converter um valor data para um valor num(rico indicativo do ano. Pode ser utili'ada em c)lculos de, por exemplo, relat8rios peri8dicos, ou para ormatao de exibies de data. IEA:45 ( membro de um grupo de unes "ue retornam componentes de um valor data na orma de valores num(ricos. Este grupo inclui 6AI45 e #&@-_45, "ue retornam valores de dia e ms na orma de valores num(ricos.

E*emplos
&s exemplos a seguir ilustram IEA:45 usando a data do sistema$ % 6A-E45 % IEA:46A-E455 % IEA:46A-E455 Z RR QQ :esulta$ DNQDRQND QQ :esulta$ RNND QQ :esulta$ LDDR

Este exemplo cria uma uno de inida pelo usu)rio usando IEA:45 para ormatar um valor data na orma $ ms dia, ano$ % #dE46A-E455 QQ :esulta$ ,eptember LD, RNND

C7@C-3&@ #dE4 d6ate 5 :E-7:@ C#&@-_4d6ate5 Z 1 1 Z 9-:3#4,-:46AI4d6ate555^ Z 1,1 Z ,-:4IEA:4d6ate55

Fun es !atriciais
AC7O%CE;<
Executa um menu pop*up

Sinta*e
AC_&3CE4<n-opo>, <nEs"uerda>, <n+ase>, <n6ireita>, <ac3tens#enu>, J<al3tens,elecionaveis> W <l3tems,elecion)veis>K, J<cCuno7su)rio>K, J<n3tem3nicial>K, J<n9in!a=anela>K5 **> nPosio

Argumentos
<n-opo>, <nEs"uerda> e <n+ase>, <n6ireita> so as coordenadas do canto superior es"uerdo e canto in erior direito da 0anela. /alores de lin!a podem variar entre 'ero e #A?:&S45, e valores de coluna podem variar entre 'ero e #A?C&945. <ac3tens#enu> ( um vetor "ue cont(m as cadeias de caracteres "ue sero exibidas como sendo os itens de menu. Cada item de menu ser) mais tarde identi icado atrav(s de sua posio num(rica neste vetor. <al3tens,elecionaveis> ( um vetor paralelo de valores l8gicos**diretamente relacionado a <ac3tens#enu>**"ue especi ica os itens de menu "ue podero ser selecionados. &s elementos podem ser valores l8gicos ou cadeias de caracteres. Caso o elemento se0a uma cadeia de caracteres, ele ( avaliado como uma expresso macro "ue dever) retornar um tipo de dados l8gico. Em ambos os casos, um valor de also 4.C.5 signi ica "ue o item de menu correspondente no est) dispon.vel, e um valor de verdadeiro 4.-.5 signi ica "ue est) dispon.vel. ,e or especi icado <l3tens,elecionaveis> ao inv(s de um vetor, also

Colgio Catanduvas

Prof. Hlio Lemes Costa Jr.

9)

CLIPPER Apostila de Linguagem de Programao I

1999

4.C.5 torna todos os itens de menu no dispon.veis e verdadeiro 4.-.5 torna todos os itens de menu dispon.veis. & padro adotado ( "ue todos os itens de menu este0am dispon.veis para seleo. <cCuno7su)rio> ( o nome de uma uno de inida pelo usu)rio "ue ( executada "uando uma tecla no recon!ec.vel or pressionada. & nome da uno ( especi icado como uma expresso caractere sem parnteses ou argumentos. @ote "ue o comportamento de AC_&3CE45 ( a etado pela presena deste argumento. <n3tem3nicial> ( a posio ocupada no vetor de <ac3tens#enu> pelo item "ue aparecer) em desta"ue "uando o menu or exibido pela primeira ve'. Caso voc especi i"ue um item de menu "ue no este0a dispon.vel, ou caso voc no use argumento algum, o item "ue aparecer) em desta"ue ser) o primeiro item selecion)vel do vetor. <n9in!a=anela> ( o n<mero da lin!a da 0anela na "ual o item de menu inicial aparecer). A numerao de lin!as comea com 'ero. & padro ( "ue o item de menu inicial aparea o mais pr8ximo do topo da 0anela poss.vel, sem deixar nen!uma lin!a va'ia na parte de baixo. Conse"uentemente, caso !a0a um n<mero su iciente de itens de menu ap8s o primeiro para completar a 0anela, ele aparecer) na primeira lin!a 4lin!a 'ero5 do menu. Este argumento ( utili'ado para controlar a disposio inicial do menu nos casos em "ue !a0a mais itens de menu do "ue a 0anela comporta. Como toda uno, os argumentos opcionais so omitidos usando*se uma v.rgula ao inv(s do argumento propriamente dito.

Retorno
AC_&3CE45 retorna a posio num(rica ocupada pelo item de menu selecionado no vetor de <ac3tens#enu>. ,e o processo de seleo or interrompido, AC_&3CE45 retorna 'ero.

(es+rio
AC_&3CE45 ( uma uno de inter ace com o usu)rio "ue pode ser utili'ada para criar v)rios tipos de menus pop*up. Cada menu usa um vetor de cadeia de caracteres, "ue sero os itens de menu, e um vetor paralelo de valores l8gicos "ue determina se os itens so selecion)veis. 2uando AC_&3CE45 ( invocada, a lista de itens de menu ( exibida dentro das coordenadas de 0anela especi icadas. 2uando o usu)rio tecla :eturn, o item corrente ( selecionado, e AC_&3CE45 retorna a posio ocupada por este item de menu em <ac3tens#enu>. 2uando o usu)rio pressiona Esc, AC_&3CE45 aborta e retorna 'ero. Caso a "uantidade de itens em <ac3tens#enu> exceda a "uantidade de lin!as na 0anela de menu, os itens de menu aparecem na medida em "ue o usu)rio tenta mover a barra luminosa para cima ou para baixo, al(m dos limites da 0anela de menu. &bserve "ue a barra luminosa no pula do <ltimo para o primeiro item de menu "uando se c!ega ao im da lista de itens, ou vice*versa. Por(m, se o usu)rio pressionar a primeira letra do item, a barra luminosa ir) automaticamente para o primeiro item de menu cu0a primeira letra or a mesma pressionada. @avegando pelo menu$ AC_&3CE45 tem dois modos, dependendo se o argumento <cCuno7su)rio> or especi icado. Caso no se0a especi icado, as seguintes teclas de navegao so ativas$

3a4ela .516 3e+las em ACB"ICE89 8Sem Cuno de Controle9


3e+la Cursor para cima Ao /ai para o item anterior

Colgio Catanduvas

Prof. Hlio Lemes Costa Jr.

9,

CLIPPER Apostila de Linguagem de Programao I


Cursor para baixo _ome End Ctrl*_ome Ctrl*End Pg7p Pg6n Ctrl*Pg7p Ctrl*Pg6n :eturn Esc Cursor para es"uerda Cursor para direita Primeira letra /ai para o pr8ximo item /ai para o primeiro item do menu /ai para o <ltimo item do menu /ai para o primeiro item da 0anela /ai para o <ltimo item da 0anela /ai para a p)gina anterior /ai para a pr8xima p)gina /ai para o primeiro item do menu /ai para o <ltimo item do menu ,eleciona item corrente Aborta seleo Aborta seleo Aborta seleo /ai para o pr8ximo item iniciando com a letra

1999

Cor$ &s itens de menu so exibidos na cor padro, o item onde est) a barra luminosa na cor desta"ue, e os itens no dispon.veis na cor no seleciionada. Por exemplo, a seguinte declarao de cores$ ,E-C&9&:41SZQ@, +;ZQ+, , , SQ@15 Exibe um menu "ue ( de cor branca intensi icada sobre preto, a barra luminosa ( de cor ciano intensi icado sobre a'ul, e os itens de menu no dispon.veis so brancos sobre preto. Cuno de usu)rio$ 6a mesma orma "ue as demais unes de inter ace com o usu)rio, AC_&3CE45 aceita uma uno de usu)rio. A uno de usu)rio ( especi icada "uando voc dese0a anin!ar invocaes da uno AC_&3CE45 para criar menus !ier)r"uicos ou rede inir teclas. 2uando ( especi icada uma uno de usu)rio, AC_&3CE45 processa somente um con0unto limitado de teclas automaticamente. Estas estao relacionadas na tabela abaixo. -odas as outras teclas geram uma exceo de tecla "ue passa o controle para a uno de usu)rio. & controle tamb(m ser) passado G uno de usu)rio "uando AC_&3CE45 ica inativo 4ou se0a, "uando no !) mais teclas a processar5.

3a4ela .5)6 3e+las em ACB"ICE89 8Com Cuno de +ontrole9


3e+la Cursor para cima Cursor para baixo Ctrl*_ome Ctrl*End Pg7p Pg6n Ctrl*Pg7p Ctrl*Pg6n Ao /ai para o item anterior /ai para o pr8ximo item /ai para o primeiro item da 0anela /ai para o <ltimo item da 0anela /ai para a p)gina anterior /ai para a pr8xima p)gina /ai para o primeiro item do menu /ai para o <ltimo item do menu

2uando AC_&3CE45 executa a uno de usu)rio, ela passa automaticamente os trs parBmetros a seguir$

Colgio Catanduvas

Prof. Hlio Lemes Costa Jr.

9-

CLIPPER Apostila de Linguagem de Programao I


" modo ACB"ICE89 +orrente " elemento +orrente no vetor de itens A posio de lin<a relativa dentro da Danela de menu

1999

& modo indica o estado atual de AC_&3CE45, "ue depende da tecla pressionada e da ao tomada por AC_&3CE45 antes da execuo da uno de usu)rio. & parBmetro modo pode ter os seguintes valores$

3a4ela .5,6 7odos de ACB"ICE89


7odo D R L 3 M A+<oi+eE+< AC]369E AC]_3--&P AC]_3-+&--&# AC]E?CEPAC]@&3-E# (es+rio 3nativo -entativa de passar in.cio da lista -entativa de passasr inal da lista -eclagemn exceo 3tens no selecionados

Ap8s a uno de usu)rio ter executado as operaes apropriadas ao modo AC_&3CE45 ou 9A,-AEI45, ela deve retornar um valor "ue solicite a AC_&3CE45 executar uma operao entre o seguinte con0unto de aes$

3a4ela .5-6 Aalores de Retorno da #uno de Controle de ACB"ICE89


Aalor D R L 3 A+<oi+eE+< AC]A+&:AC],E9ECAC]C&@AC];&-& Ao Aborta seleo Executa seleo Continua AC_&3CE45 /ai para o pr8ximo item cu0a primeira letra or a tecla pressionada

E*emplos
& exemplo a seguir utili'a dois vetores literais para especi icar os itens de menu e crit(rios de seleo. 6epois "ue o menu oi exibido e o usu)rio e' sua escol!a, o nome do item de menu selecionado ( exibido$ ac#enu3tens $H T7m, 6ois, 11, -rsU al,electable3tens $H T.-., .-., .C., .-.U nPosition $H AC_&3CE4RD, RD, RL, R5, ac#enu3tens, al,electable3tens5 % ac#enu3tensJnPositionK @o pr8ximo exemplo, os vetores so declarados, ( especi icada uma condio de seleo para um dos itens de menu, e !) uma uno de usu)rio$ C7@C-3&@ #E#enu 9&CA9 ac#enu3tensJMK, al,electable3tensJMK, c7serCunction $H 16o3t1 QQ ac#enu3tensJRK $H 1Adiciona :egistro1 ac#enu3tensJLK $H 1Edita :egistro1 ac#enu3tensJ3K $H 1Elimina :egistro1 ac#enu3tensJMK $H 1Atuali'a :egistro1

Colgio Catanduvas

Prof. Hlio Lemes Costa Jr.

9.

CLIPPER Apostila de Linguagem de Programao I


QQ al,electable3tensJRK $H .-. al,electable3tensJLK $H .-. al,electable3tensJ3K $H .-. al,electable3tensJMK $H 1a7P6A-E6451 QQ Condicao de selecao :E-7:@ AC_&3CE4RD, RD, RL, 3D, ac#enu3tens,^ al,electable3tens, c7serCunction5

1999

Fun es para controle de arquivos de dados


B O5SE;<
Ca' +rodse de registros dentro de uma 0anela

Sinta*e
+:&S,E4J<n-opo>K, J<nEs"uerda>K, J<n+ase>K, J<n6ireita>K5 **> @39

Argumentos
<n-opo>, <nEs"uerda>, <n+ase>, e <n6ireita> de inem as coordenadas da 0anela. ,e no orem especi icadas, as coordenadas padro da 0anela so R, D at( #A?:&S45, e #A?C&945.

Retorno
+:&S,E45 sempre retorna @39.

(es+rio
+:&S,E45 ( uma uno de inter ace com o usu)rio "ue invoca um editor e um brodser 4orientado por tabela5 de utili'ao geral para os registros na )rea de trabal!o corrente. Para uma lista das teclas de navegao utili'adas por +:&S,E45, consulte a uno 6+E63-45.

&otas
9in!a de status$ +:&S,E45 suporta uma lin!a de status no canto superior direito da 0anela de brodse "ue indica um dos itens a seguir$

3a4ela .5/6 7ensagens de Status de @R"FSE89


7ensagem <ned> <bo > <delete> :ecord SigniCi+ado #odo de Append 3n.cio de ar"uivo :egistro corrente est) marcado para eliminao @<mero do registro atual

#odos$ +:&S,E45 tem os trs modos seguintes$ +rodse$ Este ( o modo padro de +:&S,E45. Ao ser pressionada "ual"uer uma das teclas de navegao 6+E63-45, a barra luminosa move*se para uma nova lin!a ou coluna.

Colgio Catanduvas

Prof. Hlio Lemes Costa Jr.

9/

CLIPPER Apostila de Linguagem de Programao I

1999

Edita Campos$ Ao ser pressionado :eturn em "ual"uer campo, entra*se na edio de campos usando um ;E-. Pressionar :eturn termina o modo de edio, gravando as alteraes. Esc termina sem gravar as alteraes. =) "ue o modo de edio de campos utili'a*se de ;E-, todas as teclas de navegao e edio so teclas :EA6. 3nserir$ 2uando se vai para o im do ar"uivo com Ctrl*Pg6n e depois aperta*se Cursor para baixo entra*se no modo append, sendo "ue na lin!a de comando aparecer) a mensagem 1 <ned>1. i inserido, ento, um novo registro. Ao pressionar*se Cursor para cima termina*se o modo append, gravando o novo registro caso ten!am sido entrados dados. ,e no oram entrados "uais"uer dados, o novo registro no ( gravado.

#BE#%';<$
Ca' um brodse em registros no ormato de tabela

Sinta*e
6+E63-4J<n-opo>K, J<nEs"uerda>K, J<n+ase>K, <n6ireita>K, J<acColunas>K, J<cCuno7su)rio>K, J<ac#)scarasColunas> W <c#)scaraColunas>K, J<acCabeal!osColunas> W <cCabeal!oColunas>K, J<ac,eparadoresCabeal!os> W <c,eparadorCabeal!os>K, J<ac,eparadoresColunas> W <c,eparadorColunas>K, J<ac,eparadores:odap(s> W <c,eparador:odap(s>K, J<ac:odap(sColunas> W <c:odap(Colunas>K5 **> @39

Argumentos
<n-opo>, <nEs"uerda> e <n+ase>, <n6ireita> de inem as coordenadas do canto superior es"uerdo e o canto in erior direito da 0anela da 6+E63-45. &s valores da lin!a podem variar de 'ero at( #A?:&S45 e os posicionamentos de coluna podem variar de 'ero at( #A?C&945. Caso no se0am especi icados, as coordenadas assumidas so D, D, #A?:&S45, e #A?C&945. <acColunas> ( um vetor de expresses caractere contendo os nomes de campos do ar"uivo de dados ou expresses para utili'ar como valores para cada lin!a exibida. ,e este argumento no ( especi icado, 6+E63-45 exibe todos os campos presentes na )rea corrente como sendo as colunas. <cCuno7su)rio> ( o nome de uma uno de inida pelo usu)rio "ue ( executada "uando uma tecla no recon!ec.vel ( pressionada ou "uando no !) nen!uma tecla pendente no bu er do teclado. & nome da uno ( especi icada como sendo uma expresso caractere sem os parnteses ou argumentos. @ote "ue o comportamento da uno 6+E63-45 ( a etado pela presena desses argumentos. Para maiores in ormaes ve0a os t8picos discutidos abaixo. <ac#)scarasColunas> ( um vetor paralelo contendo as m)scaras de ormatao de cada coluna. Especi icando <c#)scaraColunas> em ve' do vetor, este ser) assumido para a exibio de todas as colunas com o mesmo ormato. <acCabeal!osColunas> ( um vetor paralelo contendo expresses caractere "ue de inem os cabeal!os para cada coluna. ,e especi icada <cCabeal!oColuna> em ve' do vetor de cabeal!os, ( assumido o mesmo cabeal!o para todas as colunas. Para exibir cabeal!os em mais de uma lin!a, inclua um ponto*e*v.rgula dentro da expresso de cabeal!o onde voc dese0e "ue a cadeia se0a separada. Caso

Colgio Catanduvas

Prof. Hlio Lemes Costa Jr.

90

CLIPPER Apostila de Linguagem de Programao I

1999

no se0a especi icado, os cabeal!os das colunas so tomados do vetor <acColunas>, ou so assumidos os nomes dos campos presentes na )rea corrente se o argumento <acColunas> no or mencionado. <ac,eparadoresCabeal!os> ( um vetor paralelo contendo expresses do tipo caractere "ue de inem os caracteres "ue sero utili'ados para desen!ar as lin!as !ori'ontais separando os cabeal!os das colunas da )rea de exibio dos campos. Especi icando a expresso <c,eparadorCabeal!os> em ve' do vetor ( utili'ado o mesmo separador para todas as colunas. Caso este argumento no se0a mencionado, o separador assumido ( uma lin!a gr) ica dupla. <ac,eparadoresColunas> ( um vetor paralelo contendo expresses caractere "ue de inem os caracteres utili'ados para desen!ar as lin!as verticais "ue separam as colunas. Especi icando a expresso <c,eparadorColunas> em ve' do vetor ( utili'ado o mesmo separador para todas as colunas. Caso este argumento no se0a mencionado, o separador assumido ( uma lin!a gr) ica simples. <ac,eparadores:odap(s> ( um vetor paralelo contendo expresses caractere "ue de inem os caracteres "ue sero utili'ados para desen!ar as lin!as !ori'ontais "ue separam os rodap(s das colunas da )rea de exibio dos campos. Especi icando a expresso <c,eparador:odap(s> em ve' do vetor ( utili'ado o mesmo separador de rodap( para todas as colunas. Caso este argumento no se0a mencionado, no ( exibido nen!um separador para os rodap(s. <ac:odap(sColunas> ( um vetor paralelo contendo expresses caractere "ue de inem os rodap(s para cada coluna. Especi icando a expresso <c:odap(Colunas> em ve' do vetor ( utili'ado o mesmo rodap( para todas as colunas. Para exibir rodap(s em mais de uma lin!a, inclua um ponto*e*v.rgula na expresso contendo o rodap( onde voc dese0e "ue a cadeia se0a separada. Caso este argumento no se0a mencionado, no ( exibido nen!um rodap( para as colunas.

Retorno
6+E63-45 sempre retorna @39.

(es+rio
6+E63-45 al(m de ser uma uno de inter ace com o usu)rio ( tamb(m uma uno de compatibilidade "ue exibe registros de uma ou mais )reas de trabal!o na orma de tabela. A 0anela de visuali'ao da 6+E63-45 ( uma )rea com c(lulas dividida em colunas e lin!as. As colunas correspondem aos campos do ar"uivo de dados e as lin!as aos registros deste ar"uivo. Cada coluna ( de inida por um elemento do vetor <acColunas>. A largura assumida para a exibio de cada coluna ( determinada pela avaliao da expresso da coluna contida no vetor <acColunas> ou pela m)scara da coluna especi icada no vetor <ac#)scarasColunas>. -odas as teclas de movimentao do cursor so manipuladas dentro da 6+E63-45, inclu.ndo Pg7p, Pg6n, _ome, End, as "uatro setas de navegao, e todas as combinaes v)lidas da tecla Ctrl "ue reali'am a movimentao do cursor. As teclas de navegao Gs "uais a 6+E63-45 responde "uando o argumento da uno do usu)rio no ( especi icado estao mostradas na tabela -eclas Ativas na pr8xima p)gina.

3a4ela .516 3e+las Ativas em (@E(I389


3e+la Cursor para cima Cursor para baixo Cursor para es"uerda Cursor para direita Ctrl*Cursor para es"uerda Ao ,obe uma lin!a 6esce uma lin!a Coluna G es"uerda Coluna G direita Painel uma coluna para es"uerda

Colgio Catanduvas

Prof. Hlio Lemes Costa Jr.

91

CLIPPER Apostila de Linguagem de Programao I


Ctrl*Cursor para direita _ome End Ctrl*_ome Ctrl*End Pg7p Pg6n Ctrl*Pg7p Ctrl*Pg6n :eturn Esc Painel uma coluna para direita Coluna mais G es"uerda na tela Coluna mais G direita na tela Coluna inicial Coluna inal -ela anterior Pr8xima tela Primeira lin!a da coluna corrente 7ltima lin!a da coluna corrente Encerra 6+E63-45 Encerra 6+E63-45

1999

2uando o argumento da uno do usu)rio 4 <cCuno7su)rio>5 ( especi icado, todas as teclas indicadas na tabela -eclas Ativas estao ativas com exceo do Esc e :eturn. 2uando a 6+E63-45 c!ama a uno do usu)rio, esta passa automaticamente dois argumentos$ & modo corrente passado como um valor num(rico & .ndice da coluna corrente com base no vetor <acColunas> passado como um valor num(rico & parBmetro modo indica o estado corrente da 6+E63-45 dependendo da <ltima tecla "ue oi executada. &s poss.veis valores dos modos estao mostrados na tabela #odos da 6+E63-45.

3a4ela .596 7odos de (@E(I389


Status D R L 3 M 4editE+< E]369E E]_3--&P E]_3-+&--&# E]E#P-I 6C]E?CEPes+rio nativa, todas teclas oram manipuladas e no !) teclas pendentes entativa de passar in.cio de ar"uivo entativa de passar inal de ar"uivo r"uivo va'io na )rea corrente eclagem exceo

& parBmetro .ndice aponta para a posio da coluna corrente de inida no vetor <acColunas>. Caso o vetor <acColunas> no se0a especi icado, o parBmetro .ndice apontar) para a posio do campo da estrutura do ar"uivo de dados corrente. & nome do campo pode ser acessado utili'ando a uno C3E9645. 2uando a uno do usu)rio tiver sido c!amada, um valor deve ser retornado para instruir G 6+E63-45 "ue ao reali'ar em seguida. A tabela /alores de :etorno da Cuno do 7su)rio sumari'a os poss.veis valores de retorno e as aes correspondentes$

3a4ela .5126 Aalores de Retorno da #uno de $su>rio de (@E(I389


Aalor D R L 4editE+< E]A+&:E]C&@E]:EC:E,_ es+rio Aborta 6+E63-45 ontinua 6+E63-45 Cora reler e reescrever a tela e continuar^ ap8s reescrever, processa teclas, e vai para inativa

A uno do usu)rio ( c!amada nos seguintes casos$

Colgio Catanduvas

Prof. Hlio Lemes Costa Jr.

99

CLIPPER Apostila de Linguagem de Programao I

1999

&corrncia de uma tecla de exceo. 3sto acontece "uando a 6+E63-45 captura uma tecla pressionada e esta no ( recon!ecida. 2uais"uer teclas pendentes permanecem no bu er do teclado at( "ue se0a capturada dentro da uno do usu)rio ou at( "ue a 6+E63-45 continue. 6+E63-45 entra no modo inativo 4i.e., "uando todas as teclas pendentes ten!am sido executadas5. 3sto acontece "uando o bu er do teclado est) va'io ou ap8s ser e etuado um re res! da tela. @esta ocorrncia, !) uma c!amada para a uno do usu)rio e ento a 6+E63-45 espera por uma tecla. 3n.cio ou inal do ar"uivo ( encontrado. Esta ocorrncia ( a mesma "ue a inatividade da 6+E63-45. -odas as teclas pendentes so executadas, e !) uma c!amada G uno do usu)rio com a mensagem de status indicadora. @ote "ue "uando a 6+E63-45 ( executada pela primeira ve', todas as teclas pendentes no bu er do teclado so executadas e logo ap8s a 6+E63-45 entra no modo inativo com a c!amada G uno do usu)rio. Caso no existam teclas pendentes, o modo inativo ( imediato. A estrutura da uno do usu)rio deve ser desen!ada para manipular todos os modos e as mensagens de status recebidas da 6+E63-45. 6+E63-45 ( completamente recursiva, isto signi ica "ue voc pode reali'ar c!amadas anin!adas a ela. 7tili'ando esta caracter.stica, voc pode ter m<ltiplas 0anelas de brodse na tela ao mesmo tempo. 6+E63-45 ( uma uno de compatibilidade e, portanto, no ( recomendada sua utili'ao como dispositivo de brodse. Para este prop8sito, ela est) superada pela classe de ob0eto -+rodse.

E*emplos
Este exemplo demonstra como c!amar a 6+E63-45 com uma uno do usu)rio$ 7,E Customer 3@6E? Customer @ES 7,E ,ales 3@6E? ,ales @ES ,E- :E9A-3&@ -& Cust@um 3@-& Customer QQ acColumns H T1+ranc!1, 1,alesman1, 1Amount1, 1Customer*>Customer1U 6+E63-4M, D, LL, \N, acColumns, 17serCunc15

EO8;<
6etermina se o inal do ar"uivo oi atingido

Sinta*e
E&C45 **> l9imite

Retorno
E&C45 retorna verdadeiro 4.-.5 "uando ( eita uma tentativa de mover o ponteiro de registros para al(m do <ltimo registro l8gico em um ar"uivo de banco de dados^ do contr)rio, ela retorna also 4.C.5. Caso no !a0a nen!um ar"uivo de banco de dados aberto na )rea de trabal!o corrente, E&C45 retorna also 4.C.5. ,e o ar"uivo de banco de dados corrente no possui registros, E&C45 retorna verdadeiro 4.-.5.

Colgio Catanduvas

Prof. Hlio Lemes Costa Jr.

122

CLIPPER Apostila de Linguagem de Programao I


(es+rio

1999

E&C45 ( uma uno de tratamento de banco de dados utili'ada para testar uma condio de limite de inal de ar"uivo "uando o ponteiro de registros est) se movendo para rente em um ar"uivo de banco de dados. 2ual"uer comando "ue possa mover o ponteiro de registros pode con igurar E&C45. A aplicao mais t.pica ( como parte do argumento <lCondicao> de uma construo 6& S_39E "ue processa registros se"uencialmente em um ar"uivo de banco de dados. @este caso <lCondicao> incluiria um teste para .@&-. E&C45, orando o lao 6& S_39E a terminar "uando E&C45 retornar verdadeiro 4.-.5. -anto E&C45 "uanto C&7@645 so re"uentemente utili'ados para veri icar se um comando ,EEA, C3@6, ou 9&CA-E al!ou. Com estes comandos, por(m, ( pre er.vel usar C&7@645. 2uando E&C45 retorna verdadeiro 4.-.5, o ponteiro de registros ( posicionado em 9A,-:EC45 Z R sem importar se !) um ,E- C39-E: ativo ou se ,E- 6E9E-E6 est) &@. Caso !a0a tentativas de mover o ponteiro de registros para rente, o mesmo resultado ser) retornado sem erro. 7ma ve' "ue a uno E&C45 retorna verdadeiro 4.-.5, ela ret(m seu valor at( "ue !a0a outra tentativa de mover o ponteiro de registros. & padro ( "ue E&C45 opere na )rea de trabal!o correntemente selecionada. Pode*se a'er esta uno operar em uma )rea de trabal!o no selecionada desde "ue esta se0a especi icada em uma expresso alias 4ve0a o exemplo abaixo5.

E*emplos
& exemplo a seguir demonstra o resultado da uno E&C45 "uando se tenta deliberadamente mover o ponteiro de registros para al(m do <ltimo registro$ 7,E ,ales ;& +&--&# % E&C45 ,A3P % E&C45

QQ :esulta$ .C. QQ :esulta$ .-.

Este exemplo utili'a expresses alias para "uestionar o valor de E&C45 em )reas de trabal!o no selecionadas$ 7,E ,ales @ES 7,E ,ales @ES 7,E Customer @ES % ,ales*>4E&C455 % Customer*>4E&C455 Este exemplo ilustra como E&C45 pode ser utili'ada como parte de uma condio para operaes se"uenciais em bancos de dados$ 7,E ,ales 3@6E? Cust@um @ES S_39E aE&C45 n&ldCust $H ,ales*>Cust@um n-otalAmount $H D S_39E n&ldCust H ,ales*>Cust@um .A@6. 4aE&C455 % ,ales*>Cust@um, ,ales*>6escription, ,ales*>,aleAmount n-otalAmount ZH ,ales*>,aleAmount ,A3P E@66&

Colgio Catanduvas

Prof. Hlio Lemes Costa Jr.

121

CLIPPER Apostila de Linguagem de Programao I


% 12uantia total$ 1, n-otalAmount E@66&

1999

ERR"R@L"C'89
Envia um bloco de c8digo a ser avaliado "uando ocorre um erro em tempo de execuo

Sinta*e
E::&:+9&CA4J<bError_andler>K5 **> bCurrentError_andler

Argumentos
<bError_andler> ( o bloco de c8digo a ser executado toda ve' "ue ocorrer um erro em tempo de execuo. 2uando avaliado, o <bError_andler> ( passado na orma de um ob0eto erro como um argumento pelo sistema.

Retorno
E::&:+9&CA45 retorna o bloco de c8digo corrente "ue tratar) o erro. Caso no ten!a sido enviado nen!um bloco de tratamento de erro desde "ue o programa oi invocado, E::&:+9&CA45 retorna o bloco de tratamento de erro padro.

(es+rio
E::&:+9&CA45 ( uma uno de tratamento de erros "ue de ine a atuao de um !andler de erros sempre "ue ocorrer um erro em tempo de execuo. & manipulador de erros ( especi icado como um bloco de c8digo da seguinte orma$ T W<ob0Error>W <lista de expresses>,... U &nde <ob0Error> ( um error ob0ect "ue cont(m in ormaes sobre o erro. 6entro do bloco de c8digo, podem ser enviadas mensagens ao error ob0ect para obter in ormaes sobre o erro. ,e o bloco de tratamento de erros retornar verdadeiro 4.-.5, a operao "ue al!ou ( repetida, e se retornar also 4.C.5, o processamento recomea. & bloco de tratamento de erros pode ser especi icado como uma lista de expresses ou como uma c!amada a uma uno de inida por usu)rio. 7ma c!amada a uma uno de inida por usu)rio ( mais <til pois voc pode utili'ar declaraes de controle do Clipper ao inv(s de expresses. Este ( em particular o caso se !ouver um +E;3@ ,E27E@CE pendente e voc dese0a +:EAA para a pr8xima declarao :EC&/E:. Como conse"uncia, blocos de tratamento de erro podem ser utili'ados em combinao com estruturas de controle +E;3@ ,E27E@CE...E@6. 6entro de um bloco de tratamento de erros, voc manipula erros comuns, de baixo n.vel, e de dispositivos "ue tm um mecanismo de recuperao geral. ,e a operao necessita tratamento de erros espec. icos, de ina um +E;3@ ,E27E@CE e depois +:EAA para a declarao :EC&/E:, retornando o error ob0ect para processamento local. /e0a o exemplo abaixo. ,e no oi especi icado nen!um <bError_andler> utili'ando E::&:+9&CA45 e ocorrer um erro em tempo de execuo, o bloco de tratamento ao de erros padro ( avaliado. Este manipulador de erros exibe uma mensagem descritiva na tela, a0usta a uno E::&:9E/E945 para R, e depois sai do programa 4273-5.

Colgio Catanduvas

Prof. Hlio Lemes Costa Jr.

12)

CLIPPER Apostila de Linguagem de Programao I

1999

Como E::&:+9&CA45 retorna o bloco de tratamento ao de erros corrente, ( poss.vel especi icar um bloco de tratamento de erros para uma operao gravando*se o bloco de manipulao de erros corrente e depois recuperando*o ap8s o inal da operao. Al(m disso, uma importante conse"uncia do ato de os blocos de tratamento de erros serem especi icados como blocos de c8digo, ( "ue eles podem ser passados para rotinas e unes de inidas por usu)rio e depois retornadas como valores.

E*emplos
& ragmento de c8digo a seguir ilustra como um bloco de tratamento de erros pode ser enviado e depois c!amado "uando !) um erro dentro de uma construo +E;3@ ,E27E@CE$ 9&CA9 bError_andler, b9ast_andler, ob0Err bError_andler $H T Wob0ErrorW #EError_andler4ob0Error5 U QQ b9ast_andler $H E::&:+9&CA4bError_andler5 QQ ,alva manipulador corrente QQ +E;3@ ,E27E@CE . . <declaraes da operao> . :EC&/E: 7,3@; ob0Error3n o QQ :ecebe ob0eto de erro de +:EAA . . <declaraes de recuperao> . E@6 E::&:+9&CA4b9ast_andler5 QQ :estaura manipulador :E-7:@ C7@C-3&@ #EError_andler4 ob0Error 5 QQ +:EAA ob0Error :E-7:@ @39

QQ :etorna ob0eto para :EC&/E:

8CO(+';<
:etorna a "uantidade de campos no ar"uivo 4.db 5 corrente

Sinta*e
CC&7@-45 **> nCampos

Retorno
CC&7@-45 retorna a "uantidade de campos no ar"uivo de banco de dados aberto na )rea de trabal!o corrente na orma de um valor num(rico inteiro. Caso no !a0a nen!um ar"uivo de banco de dados aberto, CC&7@-45 retorna 'ero.

(es+rio
CC&7@-45 ( uma uno de tratamento de banco de dados. Ela ( <til em aplicaes "ue contm programas independentes de dados os "uais podem operar em "ual"uer ar"uivo de banco de dados. @estes incluem*se programas gerais para importar e exportar dados e programas de relat8rios.

Colgio Catanduvas

Prof. Hlio Lemes Costa Jr.

12,

CLIPPER Apostila de Linguagem de Programao I

1999

@ormalmente, utili'a*se CC&7@-45 para estabelecer o limite superior de um lao C&:...@E?- ou 6& S_39E "ue processa um <nico campo por ve'. & padro ( "ue a uno CC&7@-45 opere na )rea de trabal!o correntemente selecionada. Pode*se a'*la operar numa )rea de trabal!o no selecionada se esta or especi icada em uma expresso alias.

E*emplos
A seguir CC&7@-45 retorna a "uantidade de campos nas )reas detrabal!o corrente e no selecionada$ 7,E ,ales @ES 7,E Customer @ES % CC&7@-45 % ,ales*>4CC&7@-455

QQ :esulta$ 5 QQ :esulta$ V

Este exemplo usa CC&7@-45 para declarar um vetor a ser carregado com in ormaes sobre campos$ 9&CA9 aCields $H A::AI4CC&7@-455 AC3E96,4aCields5 Este exemplo utili'a a uno CC&7@-45 como o limite superior de um lao C&: na lista de campos da )rea de trabal!o corrente$ 9&CA9 nCield 7,E ,ales @ES C&: nCield $H R -& CC&7@-45 % C3E964nCield5 @E?-

8O(+#;<
6etermina se a operao de pes"uisa anterior oi bem sucedida

Sinta*e
C&7@645 **> l,ucesso

Retorno
C&7@645 retorna verdadeiro 4.-.5 se o <ltimo comando de pes"uisa oi bem sucedido^ do contr)rio, ela retorna also 4.C.5.

(es+rio
C&7@645 ( uma uno de tratamento de banco de dados utili'ada para determinar se uma operao de pes"uisa 4isto (, C3@6, 9&CA-E, C&@-3@7E, ,EEA, ,E- :E9A-3&@5 oi bem sucedida antes "ue o pr8ximo passo no programa se0a executado. 2uando "ual"uer um destes comandos ( executado, C&7@645 retorna verdadeiro 4.-.5 caso !a0a correspondncia^ do contr)rio, ele retorna also 4.C.5.

Colgio Catanduvas

Prof. Hlio Lemes Costa Jr.

12-

CLIPPER Apostila de Linguagem de Programao I

1999

,e o comando de pes"uisa or 9&CA-E ou C&@-3@7E, a correspondncia ( o pr8ximo registro "ue atender a abrangncia e condio. Caso o comando de pes"uisa se0a C3@6, ,EEA ou ,E:E9A-3&@, a correspondncia ( a primeira c!ave no .ndice controlador "ue se0a igual ao argumento de pes"uisa. ,e ,E- ,&C-,EEA est) &@, o ponteiro de registros ( posicionado no primeiro registro cu0a c!ave se0a maior ou igual ao argumento de pes"uisa. ,e o valor de c!ave or igual ao argumento de pes"uisa, C&7@645 ( verdadeiro 4.-.5^ do contr)rio, ( also 4.C.5. & valor de C&7@645 ( retido at( "ue se0a executado outro comando de movimentao de registros. A no ser "ue o comando se0a outro comando de pes"uisa, C&7@645 ( automaticamente con igurado em also 4.C.5. Cada )rea de trabal!o tem um valor C&7@645. 3sto signi ica "ue se uma )rea de trabal!o tem um relacionamento con igurado para uma )rea de trabal!o secund)ria, "uestionando*se C&7@645 na )rea secund)ria ar) a uno retornar verdadeiro 4.-.5 caso !a0a correspondncia. & padro ( "ue a uno C&7@645 opere na )rea de trabal!o correntemente selecionada. Pode*se a'* la operar em uma )rea de trabal!o no selecionada se esta or especi icada em uma expresso alias 4ve0a o exemplo abaixo5.

E*emplos
& exemplo a seguir ilustra o comportamento da uno C&7@645 ap8s um comando de movimentao de registros$ 7,E ,ales 3@6E? ,ales % 3@6E?AEI4D5 ,EEA 1RDDD1 % C&7@645 ,EEA 1RDD1 % C&7@645 ,A3P % C&7@645 QQ :esulta$ ,A9E,#A@ QQ :esulta$ .C. QQ :esulta$ .-. QQ :esulta$ .C.

Este exemplo demonstra como acessar um valor C&7@645 em uma )rea de trabal!o no selecionada atrav(s de uma expresso alias$ 7,E ,ales 3@6E? ,ales @ES 7,E Customer 3@6E? Customer @ES ,E- :E9A-3&@ -& Cust@um 3@-& ,ales QQ ,EEA 1,mit!1 % C&7@645, ,ales*>4C&7@6455 Este ragmento de c8digo processa todos os registros de Customer "ue tm o valor c!ave 1,mit!1 usando C&7@645 para determinar "uando !) mudana no valor c!ave$ 7,E Customer 3@6E? Customer @ES ,EEA 1,mit!1 S_39E C&7@645 . . <declaraes> . ,A3P 9&CA-E :E,- S_39E @ame H 1,mit!1

Colgio Catanduvas

Prof. Hlio Lemes Costa Jr.

12.

CLIPPER Apostila de Linguagem de Programao I


E@66&

1999

!E!OE#%';<
Exibe ou edita cadeias de caracteres e campos memo.

Sinta*e
#E#&E63-4J<c,tring>K, J<n-opo>K, J<nEs"uerda>K, J<n+ase>K, J<n6ireita>K, J<l#odoEdio>K, J<cCunoControle>K, J<n-aman!o9in!a>K, J<n-aman!o-ab>K, J<n9in!a+u er-exto>K, J<nColuna+u er-exto>K, J<n9in!a=anela>K, J<nColuna=anela>K5 **> c+u er-exto

Argumentos
<c,tring> ( a cadeia de caracteres ou campo memo a ser copiado para o bu er de texto da #E#&E63-45. Caso no se0a especi icado, o bu er de texto ica va'io. <n-opo>, <nEs"uerda>, <n+ase>, e <n6ireita> so as coordenadas superior es"uerda e in erior direita da 0anela. /alores de lin!a podem variar de 'ero a #A?:&S45, e posies de coluna podem variar de 'ero a #A?C&945. ,e no orem especi icadas, as coordenadas padro so D, D, #A?:&S45, e #A?C&945. <l#odoEdio> determina se o bu er de texto pode ser editado ou simplesmente exibido. Especi icar verdadeiro 4.-.5 permite ao usu)rio a'er alteraes no bu er de texto, en"uanto "ue especi icar also 4.C.5 permite ao usu)rio somente a leitura do bu er de texto. Caso no se0a especi icado, o valor padro ( verdadeiro 4.-.5. <cCunoControle> ( o nome de uma uno de usu)rio "ue ( executada "uando o usu)rio pressionar uma tecla no recon!ecida pela #E#&E63-45 e "uando no !ouver teclas pendentes no bu er de teclado. <cCunoControle> ( especi icada como um valor caractere sem parnteses ou argumentos. Especi icando*se also 4.C.5 neste argumento, o <c,tring> ( exibido, e a #E#&E63-45 ( terminada. Caso este argumento se0a especi icado, o comportamento autom)tico da #E#&E63-45 ( alterado. <n-aman!o9in!a> determina o taman!o das lin!as exibidas na 0anela da #E#&E63-45. Caso exista uma lin!a maior do "ue <n-aman!o9in!a>, ela ( transportada para a pr8xima lin!a na 0anela de #E#&E63-45. ,e <n-aman!o9in!a> or maior do "ue o n<mero de colunas na 0anela de #E#&E63-45, a 0anela de edio ser) deslocada caso o cursor se mova para al(m do limite da 0anela. ,e <n-aman!o9in!a> no or especi icado, o taman!o de lin!a padro ( 4<n6ireita> * <nEs"uerda>5. <n-aman!o-ab> determina o taman!o de um caractere de tabulao a ser inserido "uando o usu)rio pressionar -ab. Caso <n-aman!o-ab> no se0a especi icado, so inseridos "uatro espaos ao inv(s de um caractere de tabulao.

Colgio Catanduvas

Prof. Hlio Lemes Costa Jr.

12/

CLIPPER Apostila de Linguagem de Programao I

1999

<n9in!a+u er-exto> e <nColuna+u er-exto> de inem a posio de exibio do cursor dentro do bu er de texto "uando ( invocada a #E#&E63-45. <n9in!a+u er-exto> comea com R 4um5 e <nColuna+u er-exto> comea com 'ero. ,e estes argumentos no orem especi icados, o cursor ( posicionado na lin!a R 4um5 e coluna 'ero da 0anela de #E#&E63-45. <n9in!a=anela> e <nColuna=anela> de inem a posio inicial do cursor dentro da 0anela da #E#&E63-45. Posies de lin!a e coluna comeam com 'ero. Caso estes argumentos no se0am especi icados, a posio inicial na 0anela ( lin!a 'ero mais a posio de coluna onde o cursor estiver.

Retorno
#E#&E63-45 retorna o bu er de texto caso o usu)rio termine a edio com Ctrl*S, ou uma c8pia de <c,tring> caso o usu)rio termine com Esc.

(es+rio
#E#&E63-45 ( uma uno de inter ace com o usu)rio e de edio de textos, "ue pode ser utili'ada para editar campos memo e cadeias de caracteres longas. A edio ocorre dentro de uma regiao de 0anela especi icada, posicionada em "ual"uer lugar na tela. 6a mesma orma "ue outras unes de inter ace com o usu)rio 4AC_&3CE45, 6+E63-455, #E#&E63-45 suporta uma s(rie de modos distintos, e inclui uma uno de ,ee also$ 9A,-AEI45 #E#&:EA645 #E#&-:A@45 #E#&S:3-45. usu)rio para permitir a recon igurao de teclas e outras atividades relevantes G programao da tare a de edio de textos. & bu er de texto$ 2uando ( invocada a #E#&E63-45 e ( especi icado <c,tring>, <c,tring> ( copiado para o bu er de texto. & bu er de texto ( o "ue o usu)rio realmente edita. Caso no se0a especi icado <c,tring>, ( apresentado ao usu)rio um bu er de texto va'io para edio. 2uando o usu)rio sai da #E#&E63-45 pressionando Ctrl*S, o conte<do do bu er de texto ( retornado. ,e o usu)rio sair pressionando Esc, o bu er de texto ( descartado e o valor original de <c,tring> ( retornado. 6e "ual"uer maneira, o valor retornado pode ento ser atribuido a uma vari)vel ou campo memo, ou passado como um argumento para outra uno. #odos de Edio$ #E#&E63-45 suporta dois modos de edio, dependendo do valor de <l#odoEdio>. 2uando <l#odoEdio> ( verdadeiro 4.-.5, #E#&E63-45 entra no modo de edio, e ao usu)rio ( permitido alterar o conte<do do bu er de texto da #E#&E63-45. 2uando <l#odoEdio> ( also 4.C.5, #E#&E63-45 entra no modo visuali'ar, e ao usu)rio ( permitido navegar pelo bu er de texto, mas sem editar ou inserir textos. Para acilitar a visuali'ao para o usu)rio, ( desabilitado a rolagem, a'endo com "ue as teclas Cursor para cima e Cursor para baixo naveguem uma lin!a para cima ou para baixo no bu er de texto dentro da 0anela de #E#&E63-45. Entrando e editando textos$ 6entro da #E#&E63-45, o usu)rio pode entrar e editar textos posicionando o cursor, adicionando, ou eliminando caracteres. Para acilitar a edio de textos, !) uma s(rie de teclas de navegao e edio$

3a4ela .5)26 3e+las de &avegao e Edio em 7E7"E(I389


3e+la Ao

Colgio Catanduvas

Prof. Hlio Lemes Costa Jr.

120

CLIPPER Apostila de Linguagem de Programao I


Cursor para cimaQCtrl*E Cursor para baixoQCtrl*? Cursor para es"uerdaQCtrl*, Cursor para direitaQCtrl*6 Ctrl*Cursor para es"uerdaQCtrl*A Ctrl*Cursor para direitaQCtrl*C _ome End Ctrl*_ome Ctrl*End Pg7p Pg6n Ctrl*Pg7p Ctrl*Pg6n :eturn 6el +ac>space -ab Caracteres 3mprim.veis Ctrl*I Ctrl*Ctrl*+ Ctrl*/Q3ns Ctrl*S Esc #ove para cima uma lin!a #ove para baixo uma lin!a #ove para es"uerda um caractere #ove para direita um caractere #ove para es"uerda uma palavra #ove para direita uma palavra #ove para o in.cio da lin!a corrente #ove para o inal da lin!a corrente #ove para o in.cio da 0anela corrente #ove para o inal da 0anela corrente #ove para 0anela anterior #ove para a pr8xima 0anela #ove para o in.cio do texto #ove para o inal do texto #ove para o in.cio da pr8xima lin!a Elimina caractere onde est) o cursor Elimina caractere G es"uerda do cursor 3nsere tab ou espaos 3nsere caractere Elimina a lin!a corrente Elimina a palavra G direita :e ormata par)gra o Comuta modo de insero ;rava e inali'a a edio Aborta edio e retorna o original

1999

A tela de edio$ 2uando #E#&E63-45 exibe, ela sobreescreve a )rea especi icada da tela e no grava a tela original. Al(m disso, ela no exibe bordas nem t.tulos. Para ornecer estas erramentas, voc deve criar uma rotina ou uno de usu)rio "ue execute estas aes e depois c!ame a #E#&E63-45. /e0a o exemplo abaixo. A uno de controle$ A uno de controle ( especi icada no argumento <cCunoControle>, "ue manipula excees de tecla e recon igura teclas especiais. A uno de controle ( c!amada v)rias ve'es pela #E#&E63-45, muito re"uentemente em resposta a teclas "ue ela no recon!ece. -eclas "ue causam uma exceo so todas as teclas Alt, de uno, e teclas de controle dispon.veis. Como estas teclas no so processadas pela #E#&E63-45, elas podem ser recon iguradas. Algumas destas teclas tm uma ao padro atribuida Gs mesmas. @a uno de controle, voc executa v)rias aes "ue dependem do modo corrente da #E#&E63-45 e depois :etorna um valor "ue di' G #E#&E63-45 o "ue a'er. 2uando o argumento uno de controle ( especi icado, #E#&E63-45 de ine duas classes de teclas$ no con igur)veis e excees de tecla. 2uando ( pressionada uma tecla no con igur)vel, #E#&E63-45 a executa^ caso contr)rio ( gerada uma exceo de tecla e a uno de controle ( c!amada. 2uando no !ouver mais nen!uma tecla pendente no bu er de teclado a ser processada pela #E#&E63-45, a uno de controle ( c!amada novamente. 2uando a #E#&E63-45 c!ama a uno de controle, ela automaticamente passa parBmetros indicando o modo da #E#&E63-45, a lin!a corrente no bu er de texto, e a coluna corrente no bu er de texto. & modo indica o estado atual da #E#&E63-45, dependendo da <ltima ao tomada antes da execuo da uno de controle. ,o poss.veis os seguintes modos$

3a4ela .5)16 7odos de 7E7"E(I389

Colgio Catanduvas

Prof. Hlio Lemes Costa Jr.

121

CLIPPER Apostila de Linguagem de Programao I


7odo D R L 3 7emoeditE+< #E]369E #E]7@AEI #E]7@AEI? #E]3@(es+rio 3nativo, todas as teclas oram processadas -ecla descon!ecida,memo inalterado -ecla descon!ecida, memo alterado #odo de iniciali'ao

1999

7m valor de modo 3 indica "ue a #E#&E63-45 est) em modo de iniciali'ao. 2uando voc especi ica a <cCunoControle>, #E#&E63-45 a' uma c!amada G uno de controle imediatamente ap8s ser invocada. @este ponto, voc retorna uma solicitao de con igurao dos v)rios modos de ormatao de texto da #E#&E63-45$ -ransporte, rolagem, ou inserir. #E#&E63-45 c!ama a uno de controle repetidamente, permanencendo no modo de iniciali'ao at( "ue voc retorne D. & bu er de texto ( ento exibido, e o controle entra no modo de edio con igurado por <l#odoEdio>. &bserve "ue se o transporte estiver ativo "uando #E#&E63-45 mudar do modo de iniciali'ao para o de edio, todo o bu er de texto ( ormatado com <n-aman!o9in!a>. Para evitar esta ormatao inicial, desligue o transporte durante a iniciali'ao. &bserve tamb(m "ue a ativao ou no de transporte e rolagem no ( atribuida a nen!uma tecla, por(m isto pode ser eito a partir da uno de controle. &s modos R e L indicam "ue a #E#&E63-45 capturou uma tecla no recon!ecida ou con igur)vel do bu er de teclado. -eclas con igur)veis so processadas retornando*se D para "ue se0a executada a ao padro da #E#&E63-45. & retorno de um valor di erente executa outra ao de tecla, desta orma rede inindo a tecla. Caso se0a uma tecla no recon!ecida, voc pode de inir uma ao para ela retornando um valor "ue solicita uma ao de tecla ou executa uma ao "ue voc mesmo de iniu. & modo D indica "ue a #E#&E63-45 encontra*se inativa, e nen!uma tecla alta ser processada.,empre "ue isto acontecer, a #E#&E63-45 a' uma c!amada G uno de controle. @este ponto, voc geralmente atuali'a exibies de n<mero de lin!a e coluna. &s outros dois parBmetros, lin!a corrente e coluna, indicam a posio corrente do cursor no bu er de texto "uando a uno de controle ( c!amada. & parBmetro lin!a comea com posio R 4um5, e coluna comea com posio 'ero. 2uando o modo ( R, L ou 3, voc pode retornar um valor "ue instrui a #E#&E63-45 "ual a pr8xima ao a ser executada. A tabela a seguir ,ee also$ 9A,-AEI45 #E#&:EA645 #E#&-:A@45 #E#&S:3-45 resume os valores de retorno poss.veis e suas conse"uncias$

3a4ela .5))6 Aalores de Retorno da #uno de Controle de 7E7"E(I389


Aalor D R*3R 3L 33 3M 35 RDD RDR 7emoeditE+< #E]6ECA79#E]7@AEI #E]3;@&:E #E]6A-A #E]-&;;9ES:AP #E]-&;;9E,C:&99 #E]S&:6:3;_#E]+&--&#:3;_Ao Executa ao padro Processa ao correspondente ao valor da tecla 3gnora tecla -rata tecla como dado Comuta modo de transporte Comuta modo de rolagem Pr8xima palavra +ase da tela

Ar"uivos !eader$ Para "ue os valores de modo e solicitao se0am mais )ceis de ser lembrados e utili'ados, ( ornecido o ar"uivo #emoedit.c! no FC93PPE:5F3@C976E. Al(m disso, 3n>eE.c! est) locali'ado no mesmo diret8rio, e cont(m constantes para todos os valores 3@AEI45.

Colgio Catanduvas

Prof. Hlio Lemes Costa Jr.

129

CLIPPER Apostila de Linguagem de Programao I


&otas

1999

Con igurando teclas$ ,e a <cCuno7su)rio> or especi icada, as teclas na tabela abaixo so con igur)veis. ,e a tecla or recon igur)vel, retornar D executa a ao padro da #E#&E63-45. retornar um valor di erente, por(m, executa outra ao de tecla, desta orma rede inindo a mesma. Caso a tecla no se0a do tipo con igur)vel recon!ecido pela #E#&E63-45, voc pode de inir uma ao para ela tamb(m retornando um valor "ue pede uma ao de tecla da tabela abaixo.

3a4ela .5),6 3e+las ConCigur>veis em 7E7"E(I389


3e+la Ctrl*I Ctrl*Ctrl*+ Ctrl*/Q3ns Ctrl*S Esc Ao Padro Elimina a lin!a corrente Elimina a palavra G direita :e ormata par)gra o Comuta modo de insero Cinali'a edio e grava Aborta edio e retorna original

-ransporte$ -ransporte ( um modo de ormatao "ue voc pode alternar se retornar 3M da uno de usu)rio. 2uando est) on 4o padro5, #E#&E63-45 insere um so t carriage returnQline eed 4retorno autom)tico5 ao inal da palavra mais pr8xima da borda da 0anela ou taman!o de lin!a, valendo o "ue ocorrer primeiro. 2uando transporte est) desligado, #E#&E63-45 rola o bu er de texto para al(m dos limites da 0anela at( "ue o cursor atin0a o inal da lin!a. @este ponto, o usu)rio deve pressionar :eturn 4inserindo um !ard carriage returnQline eed5 para avanar para a pr8xima lin!a. Alterando par)gra os$ Pressionar Ctrl*+ ou retornar L de uma uno de usu)rio causa a re ormatao do bu er de texto at( "ue um !ard carriage return 4 inal de par)gra o5 ou o inal do bu er de texto se0a alcanado. 3sto acontece sem importar se trabsporte est) ligado ou desligado. Carriage returns autom)ticos$ Carriage returns autom)ticos podem inter erir na exibio de comandos de console tais como % e :EP&:- C&:#, ou o processamento com outro processador de textos. 7se _A:6C:45, #E#&-:A@45, ou ,-:-:A@45 para substituir estes caracteres, con orme sua necessidade. Editando ar"uivos texto$ #E#&E63-45 pode ser utili'ada para editar ar"uivos texto se o ar"uivo texto puder ser lido para uma vari)vel caractere Clipper. 3sto pode ser eito com a uno #E#&:EA645. Ap8s a edio do conte<do do ar"uivo texto contido na vari)vel caractere, ele pode ser escrita no ar"uivo novamente com #E#&S:3-45.

E*emplos
& exemplo a seguir permite ao usu)rio visuali'ar um campo memo, sem deixar "ue se0am eitas alteraes no bu er de texto$ 7,E Customer @ES ,E- C7:,&: &CC #E#&E63-4Cust@otes, 5, RD, LD, ON, .C.5 ,E- C7:,&: &@ Este exemplo ilustra como permitir ao usu)rio editar um campo memo, sendo "ue depois estas alteraes sero atribuidas ao campo memo$

Colgio Catanduvas

Prof. Hlio Lemes Costa Jr.

112

CLIPPER Apostila de Linguagem de Programao I


7,E Customer @ES :EP9ACE Cust@otes S3-_ #E#&E63-4Cust@otes, 5, RD, LD, ON5

1999

Este exemplo demonstra como criar uma cadeia de caracteres usando #E#&E63-45$ 9&CA9 c@otes c@otes H #E#&E63-45 Este exemplo demonstra uma uno de inida pelo usu)rio "ue edita uma cadeia de caracteres em uma 0anela com moldura exibida com um t.tulo$ C7@C-3&@ #emoEdit4 c,tring, c-.tulo, n-op, n9e t, n+ottom, n:ig!t 5 9&CA9 c-ela $H ,A/E,C:EE@4n-op, n9e t, n+ottom, n:ig!t5 Y n-op * R, n9e t * L C9EA: -& n+ottom Z R, n:ig!t Z L Y n-op * R, n9e t * L -& n+ottom Z R, n:ig!t Z L Y n-op * R, n9e t ,AI 1J1 Z c-itle Z 1K1 c,tring H #E#&E63-4c,tring, n-op, n9e t, n+ottom, n:ig!t5 :E,-,C:EE@4n-op, n9e t, n+ottom, n:ig!t, c-ela5 :E-7:@ 4c,tring5 & exemplo a seguir l o conte<do de um ar"uivo texto para umavari)vel caractere, edita, e depois escreve o novo conte<do no disco$ 9&CA9 c,tring $H #E#&:EA641-ext.txt15 c,tring $H #E#&E63-4c,tring5 3C a#E#&S:3-41-ext.txt1, c,tring5 % 1Erro de gravacao1 +:EAA E@63C :E-7:@

!E!O EA#;<
:etorna o conte<do de um ar"uivo em disco na orma de uma cadeia de caracteres.

Sinta*e
#E#&:EA64<cAr">5 **> c,tring

Argumentos
<cAr"> ( o nome do ar"uivo a ser lido do disco. Ele deve incluir uma extenso no caso de !aver uma, e pode opcionalmente incluir pat!.

Retorno
#E#&:EA645 retorna o conte<do de um ar"uivo texto na orma de uma cadeia de caracteres. & ar"uivo pode ter um taman!o de no m)ximo O5.535 caracteres 4OMA5**ou se0a, o taman!o m)ximo de uma cadeia de caracteres. ,e <cAr"> no puder ser encontrado, #E#&:EA645 retorna uma cadeia de caracteres nula 4115.

Colgio Catanduvas

Prof. Hlio Lemes Costa Jr.

111

CLIPPER Apostila de Linguagem de Programao I


(es+rio

1999

#E#&:EA645 ( uma uno de tratamento de memos "ue l um ar"uivo em disco para a mem8ria, onde ele pode ser manipulado como uma cadeia de caracteres ou atribuido a um campo memo. #E#&:EA645 ( utili'ado 0untamento com #E#&E63-45 e #E#&S:3-45 para editar um ar"uivo de disco importado e depois escrev*lo novamente no disco. #E#&:EA645 procura o <cAr"> a partir do diret8rio 6&, corrente. ,e o ar"uivo no or encontrado, #E#&:EA645 pes"uisa o pat! 6&, . #E#&:EA645 no utili'a as con iguraes 6ECA79- ou PA-_ do Clipper para procurar o <cAr">. Em ambientes de rede, #E#&:EA645 tenta abrir o ar"uivo especi icado de modo compartil!ado e somente para leitura. ,e o ar"uivo or aberto de modo exclusivo atrav(s de outro processo, #E#&:EA645 retorna uma cadeia de caracteres nula 4115.

E*emplos
& exemplo a seguir utili'a #E#&:EA645 para atribuir o conte<do de um ar"uivo texto ao campo memo @otas e a uma vari)vel caractere$ :EP9ACE @otas S3-_ #E#&:EA641-emp.txt15 c,tring H #E#&:EA641-emp.txt15 Este exemplo de ine uma uno "ue edita um ar"uivo em disco$ C7@C-3&@ Editor4 cAr" 5 9&CA9 c,tring 3C 4c,tring $H #E#&:EA64cAr"55 HH 11 % 1Erro de leitura em 1 Z cAr" :E-7:@ .C. E9,E #E#&S:3-4cAr", #E#&E63-4c,tring55 :E-7:@ .-. E@63C

EC+O;<
:etorna o n<mero do registro corrente de uma )rea de trabal!o

Sinta*e
:EC@&45 **> n:egistro

Retorno
:EC@&45 retorna o n<mero do registro corrente na orma de um valor num(rico inteiro. ,e a )rea de trabal!o cont(m um ar"uivo de banco de dados com 'ero registros, :EC@&45 retorna um, +&C45 e E&C45 retornam verdadeiro 4.-.5, e 9A,-:EC45 retorna 'ero. ,e o ponteiro de registros or movido para al(m do <ltimo registro, :EC@&45 retorna 9A,-:EC45 Z R e E&C45 retorna verdadeiro 4.-.5. Caso se0a eita uma tentativa para mover o ponteiro al(m do primeiro registro, :EC@&45 retorna o n<mero do primeiro registro l8gico no ar"uivo de banco de dados, e +&C45 retorna verdadeiro 4.-.5.

Colgio Catanduvas

Prof. Hlio Lemes Costa Jr.

11)

CLIPPER Apostila de Linguagem de Programao I


(es+rio

1999

:EC@&45 ( uma uno de tratamento de banco de dados "ue retorna o n<mero do registro corrente em uma )rea de trabal!o. @o es"uema de ar"uivos de bancos de dados do Clipper, cada ar"uivo de banco de dados ( ordenado isicamente pelo n<mero do registro. Cada )rea de trabal!o, por sua ve', mant(m um ponteiro para o registro corrente em seu ar"uivo de banco de dados aberto. A"uele n<mero de registro ( in ormado pela uno :EC@&45. A erramenta de numerao de registros permite acesso direto a um registro sem pes"uisar se"uencialmente o ar"uivo de banco de dados para atingir a posio do registro especi icado. :EC@&45 ( normalmente utili'ada para generali'ar rotinas "ue processam os registros atrav(s do n<mero dos mesmos. 3sto inclui ,E- :E9A-3&@...-& :EC@&45, "ue a' a li>agem de ar"uivos de banco de dados por n<mero de registro. ;& :EC@&45 tamb(m ( usada para a'er um re res! dos dados de registro correntes do disco. & padro ( "ue :EC@&45 opere na )rea de trabal!o correntemente selecionada. Pode*se a'*la operar em uma )rea de trabal!o no selecionada se esta or especi icada em uma expresso alias 4ve0a oexemplo abaixo5.

E*emplos
& exemplo a seguir "uestiona :EC@&45 ap8s mover deliberadamente o ponteiro de registros$ 7,E Customers @ES ;& 3 % :EC@&45 ;& -&P % :EC@&45 n:ecord $H 3 ;& n:ecord % :EC@&45 ;& +&--&# ,A3P % :EC@&45, 9A,-:EC45

QQ :esulta$ 3 QQ :esulta$ R QQ :esulta$ 3 QQ :esulta$ RR RD

Este exemplo utili'a expresses alias para "uestionar o valor de :EC@&45 em )reas de trabal!o no selecionadas$ 7,E ,ales @ES 7,E Customer @ES QQ % ,ales*>4:EC@&455 % Customer*>4:EC@&455

Fun es especiais
%+,E";<
Extrai um caractere do bu er de teclado

Colgio Catanduvas

Prof. Hlio Lemes Costa Jr.

11,

CLIPPER Apostila de Linguagem de Programao I


Sinta*e
3@AEI4J<n,egundos>K5 **> nCod3n>eE

1999

Argumentos
<n,egundos> especi ica a "uantidade de segundos "ue 3@AEI45 deve esperar por uma tecla. & valor pode ser especi icado em incrementos do taman!o de at( um d(cimo de segundo. ,e or especi icado 'ero, o programa p)ra at( "ue uma tecla se0a pressionada. Caso <n,egundos> se0a omitido, 3@AEI45 no espera por uma tecla.

Retorno
3@AEI45 retorna um valor num(rico inteiro de *3N at( 3VO, "ue identi ica a tecla extra.da do bu er de teclado. Caso o bu er de teclado este0a va'io, 3@AEI45 retorna 'ero. 3@AEI45 retorna valores para todas as combinaes de caracteres A,C33, teclas de uno, Alt*tecla de uno, Ctrl*tecla de uno, Alt*letra, e Ctrl*letra.

(es+rio
3@AEI45 ( uma uno de tratamento de teclado "ue extrai a pr8xima tecla pendente no bu er de teclado e retorna um valor "ue representa esta tecla. & valor tamb(m ( gravado internamente e pode ser acessado atrav(s da uno 9A,-AEI45. Caso o argumento <n,egundos> se0a especi icado e no !a0a teclas pendentes no bu er, acontece uma pausa na execuo do programa at( "ue aparea uma tecla no bu er de teclado, ou ento at( os <n,egundos> especi icados ten!am passado. & per.odo de tempo "ue 3@AEI45 espera baseia*se no rel8gio do sistema operacional e no ( relacionado G velocidade do microprocessador. ,e <n,egundos> or 'ero, !) uma pausa na execuo do programa at( "ue uma tecla se0a colocada no bu er. &bserve "ue 3@AEI45 no ( um estado de espera e, portanto, as teclas con iguradas por ,E- AEI no so ativas. 3@AEI45 ( semel!ante G uno @E?-AEI45. 6e orma di erente de 3@AEI45, por(m, @E?-AEI45 l mas no extrai a tecla do bu er de teclado. Esta uno ( <til "uando voc precisa veri icar se uma tecla oi pressionada sem "ue a mesma se0a processada. 3@AEI45 ( a uno b)sica do sistema Clipper para capturar teclas do bu er de teclado. i utili'ada para receber o teclado ou parar a execuo do programa at( "ue o usu)rio pressione uma tecla. Por exemplo, voc pode utili'ar 3@AEI45 para terminar comandos com abrangncia de registros tais como 93,-, 9A+E9 C&:#, e :EP&:- C&:# se ela or inclu.da em uma condio S_39E. Consulte o exemplo abaixo. Para uma lista completa de c8digos 3@AEI45 e constantes 3n>eE.c!.

E*emplos
& exemplo a seguir captura "ual"uer tecla do teclado e depois exibe o valor caractere da tecla seguido do valor 3@AEI45$ [include 13n>eE.c!1 QQ 9&CA9 n3n>eECode $H D 6& S_39E 9A,-AEI45 aH A]E,C % 1Aperte "ual"uer tecla$ 1 n3n>eECode $H 3@AEI4D5

Colgio Catanduvas

Prof. Hlio Lemes Costa Jr.

11-

CLIPPER Apostila de Linguagem de Programao I


%% 1Caractere$1, C_:4n3n>eECode5,^ 1Codigo 3@AEI45$1, 9-:3#4,-:4n3n>eECode55 E@66& :E-7:@

1999

Este exemplo utili'a 3@AEI45 para receber uma tecla de interrupo do usu)rio durante um :EP&:- C&:#. ,e o usu)rio pressionar Esc durante o processo de impresso, o comando :EP&:- C&:# termina$ [include 13n>eE.c!1 QQ 7,E ,ales 3@6E? ,alesman @ES :EP&:- C&:# #ont!lE C&: #&@-_4,ales6ate5 HH #&@-_46A-E455^ S_39E 3@AEI45 aH A]E,C

'O+E;<
Aciona o alto* alante por uma durao e re"uncia especi icadas.

Sinta*e
-&@E4<nCre"uncia>, <n6urao>5 **> @39

Argumentos
<nCre"uncia> ( um valor num(rico positivo "ue indica a re"uncia do som a ser produ'ido. <n6urao> ( um valor num(rico positivo "ue indica a durao do som, medida em incrementos de RQRV de segundo^ um segundo, portanto, ( RV. Para os dois argumentos, valores no inteiros so truncados**e no arredondados**para sua poro inteira.

Retorno
-&@E45 sempre retorna @39.

(es+rio
-&@E45 ( uma uno de tratamento de sons utili'ada para indicar ao usu)rio os v)rios estados do programa. Por estados entende*se estados de erro, condies de limite, ou o inal de um processo longo. Por exemplo, um estado de erro pode acionar um som de erro antes de alertar o usu)rio atrav(s de uma mensagem ou di)logo interativo. 7m condio de limite pode indicar "ue o usu)rio est) tentando levar o cursor para al(m dos limites superior ou in erior de uma coluna em um ob0eto -+rodse. 7m processo de batc! tamb(m pode indicar "ue c!egou ao seu inal atrav(s de um som para alertar o usu)rio, caso este ten!a se a astado da tela. -&@E45 unciona acionando o alto* alante na re"uncia especi icada, e pela durao especi icada. A durao ( medida em incrementos de RQRV de segundo. A re"uncia ( medida em !ert' 4ciclos por segundo5.

Colgio Catanduvas

Prof. Hlio Lemes Costa Jr.

11.

CLIPPER Apostila de Linguagem de Programao I

1999

Cre"uncias abaixo de LD so inaud.veis. A tabela abaixo demonstra as re"uncias de notas musicais padro.

&ota
-&@E45 unciona apenas em 3+#*PC e computadores RDDg compat.veis.

3a4ela .5,,6 &otas 7usi+ais


&ota C C[ 6 6[ E C C[ ; ;[ A A[ +L C #requGn+ia R3D.VD R3V.OD RMO.VD R55.OD ROM.VD R\M.OD RV5.DD RNO.DD LD\.\D LLD.DD L33.RD MO.ND 5L3.3D &ota mid C C[ 6 6[ E C C[ ; ;[ A A[ + * #requGn+ia LOR.\D L\\.LD LN3.\D 3RR.RD 3LN.OD 3MN.LD 3\D.DD 3NL.DD MR5.3D MMD.DD MOO.LD MN3.ND *

E*emplos
& exemplo a seguir ( uma uno de bip, utili'ada para indicar "ue uma operao de batc! terminou$ C7@C-3&@ 6one+eep -&@E43DD, R5 -&@E4RDD, R5 -&@E43DD, R5 -&@E4RDD, R5 :E-7:@ @39 Este exemplo ( uma se"uncia de sons usada para indicar teclagens inv)lidas ou condies de limite$ C7@C-3&@ Error+eep -&@E4RDD, 35 :E-7:@ @39

Colgio Catanduvas

Prof. Hlio Lemes Costa Jr.

11/

Vous aimerez peut-être aussi