Você está na página 1de 4

Pgina 1 de 4

02 Criaco de Variaveis
Reviso: 30/09/2002

Abrangncia
Verso 5.07

Verso 5.08

Verso 6.09

Verso 7.10

Verses Anteriores

Na criao de uma varivel deve-se ter em mente alguns pontos fundamentais:


z

A declarao

O tipo de varivel

A funo CRIAVAR()

A inicializao

Padronizao de variveis

A Declarao
Deve ser feita sempre no incio da rotina que for utiliz-la, como no exemplo:
Function a910VerCod()
Local cCod910 := 001
Return

O Tipo de Varivel
O tipo de varivel serve para identificar a utilizao que a mesma ter no decorrer da rotina. Toda
varivel deve estar tipada durante sua criao. Quando programamos nativamente em C, isto se
torna obrigatrio. Devemos fazer o mesmo no AP5, pois isto demonstra que a varivel foi
conscientemente declarada.
Tipos Existentes

PUBLIC: Esta varivel ser inicializada em um valor lgico falso (.F.) at que seja atribudo um
valor especfico a ela. Esta varivel permanece definida por toda a durao da aplicao e pode ser
vista (assim como usada, alterada e avaliada) por qualquer funo. Esta varivel gera um token
(indicao) na tabela de smbolos, isto significa que o mdulo principal conter smbolos para esta
classe de varivel, o que, por sua vez, ocupa mais espao de memria. Deve-se evitar a utilizao
deste tipo, a no ser em casos extremos.

http://dem.microsiga.com.br/w_wEx011.apw?Cod=018273

24/8/2004

Pgina 2 de 4

PRIVATE: Esta varivel ser inicializada em valor nulo (NIL) e uma vez declarada, permanecer
assim durante toda a durao do fluxo da funo, at que este volte ao procedimento inicial que a
chamou. Em essncia, uma varivel de memria PRIVATE inicializada logo no incio do Protheus,
agir como um varivel PUBLIC. Esta varivel pode ser vista por uma sub-rotina da funo e
modificada de maneira correspondente. Esta varivel tambm gera um token na tabela de smbolos
comentada acima.
LOCAL: Esta varivel de memria ser inicializada com valor nulo (NIL) e s visvel dentro da
funo que a inicializa, mesmo que esta ltima, contenha funes incorporadas a seu contedo. Este
tipo de varivel o mais adequado a ser utilizado em funes, pois no gera smbolos na tabela de
smbolos, por conseqncia ocupa pouco espao de memria e, o compilador avalia as variveis
LOCAL e STATIC mais rapidamente que os outros tipos (PUBLIC e PRIVATE). Cuidado para no
sucumbir teoria de que se pode obter economia de memria, mudando qualquer referncia
PRIVATE para uma referncia LOCAL. Se voc fizer isso, as funes podem no funcionar
corretamente, embora funcionassem na verso anterior s alteraes.
STATIC: A varivel STATIC idntica classe de armazenamento LOCAL, com uma exceo.
Uma varivel STATIC retida dentro de sua sub-rotina, mesmo depois que o fluxo da funo a
tenha deixado. Isto particularmente til para funes independentes tipo caixa-preta, que contm
seu prprio conjunto de variveis exclusivas e devem manter esses valores de interao em
interao.
Inicializao
Quando no atribumos nenhum valor a uma varivel no momento de sua declarao, corremos o
risco de utiliz-la com valor NIL e causar erros fatais. Por isso, a inicializao de uma varivel
de extrema importncia.
Padronizao de Variveis
importante que ao lermos o nome de uma varivel, possamos saber se o seu tipo numrico,
caracter, data ou lgico. O nome da varivel de get no deve coincidir com uma varivel de outro
programa, pois toda varivel de get possui um help especfico.
Exemplo:
a varivel DBaixa (get da baixa no programa de Ttulos a Receber), j possui um texto help que
indica seu conteudo e no dever ser criada outra varivel para outra finalidade com este mesmo
nome.
Para tanto, definimos a seguinte padronizao :
N
L
D
C
A
O
U

->
->
->
->
->
->
->

Numricas
Lgicas
Data
Caracter
Array (matriz)
Objeto
Sem definio

Criando uma Varivel Utilizando a Funo CRIAVAR()

http://dem.microsiga.com.br/w_wEx011.apw?Cod=018273

24/8/2004

Pgina 3 de 4

Esta funo cria uma varivel, retornando o valor do campo, de acordo com o dicionrio de dados.
Avalia o inicializador padro e retorna o contedo de acordo com o tipo de dado definido no
dicionrio.
Sintaxe
uRet := CriaVar(cCampo,lIniPad,cLado)

Onde :

Uret -> tipo de retorno de acordo com o dicionrio de dados, considerando inicializador padro.

cCampo -> Nome do campo


LiniPad -> Indica se considera (.T.) ou no (.F.) o inicializador padrao (X3_RELACAO)
Clado -> Lado para inicializao padro

Variveis de Relatrios
Na criao de um relatrio algumas variveis e seus tipos so convencionados para a utilizao da
biblioteca de funes de relatrio.

Varivel
wnRel
cbCont
Cabec1
Cabec2
Cabec3

Tipo
Local
Local
Local
Local
Local

Tamanho

Local

cDesc1
cDesc2
cDesc3
Limite
Titulo
aReturn
Nomeprog
cString

Local
Local
Local
Local
Local
Private
Private
Private

Li

Private

Contedo
Nome default do relatrio em disco
Contador
1 linha do cabealho do relatrio
2 linha do cabealho do relatrio
3 linha do cabealho do relatrio
Tamanho do Relatrio (P = Pequeno 80 colunas, M = Mdio 132
colunas, G = Grande, 220 colunas)
1 linha da descrio do relatrio
2 linha da descrio do relatrio
3 linha da descrio do relatrio
Quantidade de colunas no relatrio (80,132,220)
Ttulo do Relatrio
Matriz com as informaes para a tela de configurao de impresso
Nome do programa do relatrio
Alias do arquivo principal do relatrio para o uso de filtro
Controle das linhas de impresso. Seu valor inicial a quantidade
mxima de linhas por pgina utilizada no relatrio

http://dem.microsiga.com.br/w_wEx011.apw?Cod=018273

24/8/2004

Pgina 4 de 4

m_pag

Private

aOrd

Private

nLastKey
cPerg
aLinha

Private
Private
Private

Controle do nmero de pginas do relatrio


Matriz contendo as ordens de layout para a impresso. Caso no
existam vrias ordens esta matriz deve estar vazia. Ex.: aOrd :=
{"Cdigo", "Descrio", "Telefone"} -> O layout do relatrio vai
depender da ordem selecionada na tela de configurao de impresso
Utilizado para controlar o cancelamento da impresso do relatrio
Nome da pergunta a ser exibida para o usurio
Matriz que contem informaes para impresso de relatrios cadastrais

Grupos Relacionados
Principal / Guias de Referncia / Como programar Advpl no ERP

Topo da Pgina

http://dem.microsiga.com.br/w_wEx011.apw?Cod=018273

24/8/2004

Você também pode gostar