Professional Documents
Culture Documents
A LINGUAGEM ADVPL
Aula 1 A linguagem ADVPL
A linguagem ADVPL teve seu incio em 1994, sendo na verdade uma
evoluo das linguagens de padro xBase (Clipper, Visual Objects e FiveWin)
utilizadas pela Microsiga Software S.A. A linguagem ADVPL foi criada aps a
criao da tecnologia Protheus, pois era necessrio ter uma linguagem que
suportasse o padro xBase do ERP Siga Advanced.
O ADVPL (Advanced Protheus Language) uma extenso do padro xBase
de comandos e funes, operadores, estruturas de controle e fluxo e
palavras reservadas, conta tambm com funes e comandos
disponibilizados pela Microsiga. A linguagem tambm est adaptada para
aplicaes web e orientada a objetos e eventos, permitindo assim ao
programados desenvolver aplicaes visuais e crias suas prprias classes de
objetos.
Aps compilados, os arquivos de cdigo se tornam APOs (Advanced
Protheus Objects). Os APOs so unidades de inteligncia bsicas que so
mantidas em um repositrio e carregados dinamicamente pelo Protheus
Server para sua execuo. No existe uma unio fsica do cdigo compilado
a mdulos determinados ou aplicaes, sendo assim, qualquer cdigo fonte
pode ser executado por todos os pontos do ERP Protheus.
O compilador e interpretador da linguagem o prprio Protheus Server, seu
ambiente de desenvolvimento o TDS (TOTVS Developer Studio), nele
podemos criar, compilar e depurar nosso cdigo.
Programas compilados pela linguagem ADVPL podem conter comandos ou
funes de interface com o usurio, tais programas so divididos em duas
categorias: Programao com interface prpria com o Usurio e
Programao sem interface prpria com o usurio.
Conhecendo as categorias:
Programao de interface prpria com o usurio
Nesta categoria esto os programas desenvolvidos para serem executados
pelo terminal remoto do Protheus (Protheus Remote). O terminal remoto do
Protheus a aplicao que est encarregada da interface e interao com o
usurio, j o processamento do cdigo ADVPL, o acesso ao banco de dados
e o gerenciamento de conexes todo efetuado pelo Protheus Server. O
Terminal remoto do Protheus o principal meio de acesso a execuo de
rotinas escritas em ADVPL no Protheus server, e por isso permitido a
execuo de qualquer tipo de cdigo, tendo ele interface com usurio ou
no. Nesta categoria so considerados apenas os programas que realizem
algum tipo de interface remota.
Nesta categoria pode-se criar rotinas para customizao do sistema ERP
Protheus, desde processos adicionais e relatrios. possvel criarmos com a
linguagem ADVPL toda uma aplicao e at um modulo do zero.
Programao sem interface prpria com o usurio
Nesta categoria so consideradas as rotinas sem interface, essas rotinas
possuem uma utilizao mais especifica, tais rotinas no possuem interface
com usurio, se tentarmos acessar tais rotinas atravs de uma janela
padro ir ocorrer uma exceo em tempo de execuo, essas rotinas so
conhecidas como processos, ou Jobs, e so executadas diretamente no
Protheus Server. Algumas vezes essas rotinas possuem uma interface em
aplicaes externas, tais aplicaes externas podem ser feitas em outras
linguagens, essas linguagens podem acessar o Protheus Server atravs dos
meios disponveis de integrao e conectividade no Protheus. De acordo
com a utilizao e com o meio de conectividade utilizado, essas rotinas
podem ser categorizadas da seguinte forma:
Programao de RPC
Atravs de uma biblioteca de funes disponveis no Protheus (API de
comunicao), podemos executar rotinas escritas em ADVPL
diretamente no Protheus Server e atravs de aplicaes externas
escritas em outras linguagens. Isto o que chamado de RPC
(Remote Procedure Call ou Procedimento de Chamada Remota).
Programao Web
O Protheus Server tambm pode ser executado como um servidor
WEB, respondendo a requisies HTTP. No momento dessas
requisies, podem-se executar rotinas escritas em ADVPL como
processos individuais, enviando o resultado como das funes ADVPL
para o cliente HTTP (Ex: Browser para internet). O Protheus permite a
compilao de arquivos HTML desde que eles contenham o cdigo
ADVPL embutido, essa tcnica conhecida como ADVPL ASP ou
ADVPL WEB, utilizada para criar pginas web dinmicas.
Programao Telnet
O Protheus Server permite emular um terminal Telnet que permite a
conexo a computadores remotos, sendo assim podemos executar
rotinas escritas em ADVPL cuja interface ser em um terminal telnet
ou um coletor de dados mvel.
Linhas de Programa
As linhas existentes dentro do arquivo de cdigo do programa, podem ser
linhas de comando, linhas de comentrio ou linhas mistas.
Linhas de Comando
Linhas de comentrio
Linhas de comentrio possuem um texto qualquer, mas no so
executadas. Servem apenas para documentao e para torna mais
fcil o entendimento do cdigo fonte. Podemos comentar o cdigo de
duas formas diferentes. Atravs de duas barras invertidas // no incio
da linha e atravs do conjunto /* */ que comenta um bloco de cdigo
inteiro.
Exemplos:
Linhas Mistas
Exemplo:
Tamanho da Linha
TIPOS DE DADOS
O ADVPL tem um tipo de dado especifico para datas. Variveis do tipo Data
no podem ser declaradas diretamente, elas precisam do auxilio de funes
especificas como por exemplo a funo CTOD() que converte uma String
para o tipo Data
cData := CTOD(01/01/2014)
aVogais := {a,e,i,o,u}
DECLARAO DE VARIAVEIS
String
cString := Hellho World!
Numerica
nValor := 5
nDecima := 5.76
Obs: Precisamos tomar cuidado com o tamanho das variveis e seus nomes,
pois o ADVPL ir considerar apenas os 10 primeiros caracteres de cada
varivel, veja abaixo um exemplo de inconsistncia de dados devido a mal
declarao de variveis.
Exemplo
Se criarmos duas variveis cujo os 10 primeiros caracteres sejam iguais,
como por exemplo nTotalGeralAnual e nTotalGeralMes, as referncias a estas
variveis vo resultar na mesma.
nTotalGeralAnual := 100
nTotalGeralMes := 300
Exemplo:
Local nCod := 022
O exemplo acima indica que a varivel nCod de escopo local.
Os identificadores de escopo so:
Local
Static
Private
Public