Professional Documents
Culture Documents
Conceitos Balizares
Jose Romildo de Sousa Jnior
HOJE
FALAREMOS
SOBRE
1. Consolidar Conhecimento
2.
3.
4.
5.
1.
2.
3.
4.
5.
Um pouco sobre
Repositrio de Objetos
Ferramentas de Programao
Subdiviso de Programao AdvPl
Camadas da Tecnologia Protheus
6. Componentes (Objetos)
Consolidar Conhecimento
Um pouco sobre
Proteu
Repositrio de Objetos
Arquivos Compilados
Ferramenta
TOTVSDevStudio
Ferramenta
TDS Developer
Studio
Servidor de Aplicao:
Compila e executa os APOs.
Repositrio:
Todo e qualquer arquivos compilado no APO, acessado pelo
Servidor de Aplicao.
Terminal:
Responsvel por carregar a interfase ao usurio;
No so efetuados processamentos Locais.
Dados:
Dados acessados pelo Servidor de Aplicao do Protheus;
ADS, BTrieve, CTree e TopConnect (para padro SQL).
Tipos de Variveis
Variveis e Operadores
Matemticos
Tipo
Definio
Caractere
Numrico
Lgico
Data
Memo
Matriz
(Array)
Bloco de
Cdigo
Apelido
atrelado ao identificador de referncia
MENVAR e FIELD;
Utilizao MENVAR acessando uma varivel de memria;
->
Operadores Matemticos
Variveis e Operadores
Matemticos
Operadores AdvPl
Definio
Adio
Subtrao
Multiplicao
Diviso
** ou ^
%
Exponenciao
Resto de Diviso
Operadores String
Variveis e Operadores
Matemticos
Operadores AdvPl
Definio
Operadores Relacionais
Variveis e Operadores
Matemticos
Operadores AdvPl
<
>
=
==
Definio
Comparao Menor
Comparao Maior
Comparao Igual
Comparao Exatamente Igual (para
caracteres)
<=
Comparao Menor ou Igual
>=
Comparao Maior ou Igual
<> ou # ou != Comparao Diferente
Operadores Lgicos
Variveis e Operadores
Matemticos
Operadores AdvPl
.And.
.Or.
.Not. ou !
Definio
E lgico
OU lgico
NO lgico
Operadores de Atribuies
Variveis e Operadores
Matemticos
Operadores
AdvPl
=
:=
+=
-=
*=
/=
**= ou
^=
%=
Definio
Atribuio Simples
Atribuio em Linha
Adio e Atribuio em Linha
Subtrao e Atribuio em Linha
Multiplicao e Atribuio em Linha
Diviso e Atribuio em Linha
Exponenciao e Atribuio em Linha
Mdulo (resto da diviso) e Atribuio em
Linha
+=
-=
*=
/=
**= ou ^=
%=
Exemplo
Equivalncia
X += Y
X -= Y
X *= Y
X /= Y
X **= Y
X %= Y
X=X+Y
X=X Y
X=X *Y
X=X /Y
X = X ** Y
X=X %Y
++
--
Definio
Incremento Ps ou Prfixado
Decremento Ps ou Prfixado
Operadores Especiais
Variveis e Operadores
Matemticos
Operadores AdvPl
()
[]
{}
->
&
@
||
Definio
Agrupamento ou Funo
Elemento de Matriz
Definio de Matriz, Constante ou Bloco
de Cdigo
Identificador de Apelido
Macrosubstituio
Passagem de parmetro por referncia
Passagem de parmetro por valor
Estrutura de Controle
Estrutura de Controle
Condicionais e Laos
de Repeties
O Comando IF...ENDIF
Condicional Sintaxe
IF lExpressao
[Comandos...]
ELSEIF lExpressao
[Comandos...]
ELSE
[COMANDO...]
ENDIF
O Comando IF...ENDIF
Condicional Exemplo
O Comando DO CASE...ENDCASE
Condicional Sintaxe
O Comando DO CASE...ENDCASE
Condicional Exemplo
O Comando FOR...NEXT
Repetio Sintaxe
O Comando FOR...NEXT
Repetio Exemplo
O Comando DO WHILE...ENDDO
Repetio Sintaxe
DO WHILE lExpressao
[Comandos...]
[EXIT]
[LOOP]
ENDDO
O Comando DO WHILE...ENDDO
Repetio Exemplo
Legibilidade
Identao
Organizao
Cdigo
identado
Quebra de Linhas
Visualizao
Espaos em Branco
Visualizao
Letras Maisculas
Adota-se
Cdigo SQL
Nome de campos
SN1->N1_CBASE
Variveis de memria
M->N3_CBASE
Constantes
#Define PI 3.1415
Notao Hngara
Adota-se
Comentrios
Documentao no
Fonte
Comentrios de Linha
Documentao no
Fonte
Comentrios de Texto
Documentao no
Fonte
Comentrios Protheus.doc
Documentao no
Fonte
Estrutura de Um Programa
Partes do Cdigo Fonte:
1.
rea de Identificao;
2.
rea de Ajustes Iniciais;
3.
Corpo do Programa;
4.
rea Encerramento.
rea de Identificao
Partes do Cdigo Fonte:
1. rea de Identificao;
2. rea de Ajustes Iniciais;
3. Corpo do Programa;
4. rea Encerramento.
O Corpo do Programa
Partes do Cdigo Fonte:
1. rea de Identificao;
2. rea de Ajustes
Iniciais;
3. Corpo do Programa;
4. rea Encerramento.
rea de Encerramento
Partes do Cdigo Fonte:
1. rea de Identificao;
2. rea de Ajustes
Iniciais;
3. Corpo do Programa;
4. rea Encerramento.
Componentes (Objetos)
Referncia: https://rafaelvieceli.wordpress.com/2011/06/13/fwmarkbrowse/
Limitadores
Limitadores
Limitadores
Limitadores
Limites
<= 256
<=14
<=15
Tamanho do registro
<= 64 KB (**)
(*) O limite de 140 bytes para registro de expresso de ndice foi convencionado devido limitao
do driver ADS (Local e/ou Server), onde a criao de uma expresso de ndice com chave maior que
140 bytes pode ocasionar ocorrncia de erro ADS 7022 Maximum index levels exceeded, aps suscessivas
incluses de registros na tabela.
(**) Com o uso da RDD TOPCONN, mediante parametrizao especfica no TOTVS Application Server (Servidor
de Aplicao), possvel expandir o limite de armazenamento e recuperao de dados de campos M Memo
para at 1 MB.
Array
aArray := {}
// Resulta: aArray e um vetor vazio
AADD(aArray, 5)
// Resulta: aArray e { 5 }
AADD(aArray, 10)
// Resulta: aArray e { 5, 10 }
AADD(aArray, { 12, 10 }) // Resulta: aArray e { 5, 10, { 12, 10 } }
Array
Este exemplo cria dois vetores, cada um deles preenchido com um valor.
Os dois primeiros elementos do vetor fonte sao entao copiados para o
vetor destino:
Array
LOCAL aArray
aArray := { 1, 2, 3 }
ADEL(aArray, 2)
Array
Este exemplo utiliza AEVAL() para fazer uma lista que consiste em itens
selecionados de um vetor multi-dimensional.
Array
LOCAL aLogic[3]
AFILL(aLogic, .F.)
AFILL(aLogic, .T., 2, 3)
Array
Sintaxe: AFILL( <array>, <expresso> [ , <expresso numrica 1> ] [ , <expresso numrica 2> ] )
Argumentos:
< array > : Define o array cujos elementos sero preenchidos por um determinado
contedo.
< expresso >: Define o valor que ser preenchido em cada elemento do array. Pode ser
uma expresso de qualquer tipo de dado, incluindo outro array, bloco de cdigo ou o valor
NIL.
< expresso numrica1 >: Define a posio do primeiro elemento a ser preenchido. Caso
esse argumento seja omitido, o valor padro ser 1.
< expresso numrica2 >: Define a quantidade de elementos que sero preenchidos a partir
da posio definida na expresso numrica 1. Se este argumento for omitido, todos os
elementos do array, a partir da expresso numrica 1 at o ltimo, sero preenchidos.
Array
LOCAL aArray := { 1, 2, 3 }
// Resulta: aArray e agora { 1, 2, 3 }
AINS(aArray, 2)
// Resulta: aArray e agora { 1, NIL, 2 }
Array
Array
aArray := ARRAY(5)
aArray := { NIL, NIL, NIL, NIL, NIL }
aArray := ARRAY(3, 2)
aArray := { {NIL, NIL}, {NIL, NIL}, {NIL, NIL} }
aArray := { ARRAY(2), ARRAY(2), ARRAY(2) }
Array
Array
aArray := { 1 }
ASIZE(aArray, 3)
ASIZE(aArray, 1)
// Resulta: aArray e { 1 }
// Resulta: aArray e { 1, NIL, NIL }
// Resulta: aArray e { 1 }
Array
Local aArray := { 3, 5, 1, 2, 4 }
ASORT(aArray) // Resultado: { 1, 2, 3, 4, 5 }
ASORT(aArray,,,{ |x, y| x > y }) // Resultado: { 5, 4, 3, 2, 1 }
Data e Tempo
Converte um valor data para uma string com formato ms, dia e ano
(mm/dd/aa).
Os exemplos a seguir demonstram utilizaoes gerais de DTOC():
conout( DATE() )
// Resulta: 09/01/90
conout( DTOC(DATE()) )
// Resulta: 09/01/90
conout( "Hoje e " + DTOC(DATE()) )
// Resulta: Hoje e 09/01/90
Data e Tempo
Converte um valor data para uma string com formato ano, ms e dia
(aaaammdd).
Os exemplos a seguir ilustram DTOS() em conjunto com vrias outras
funoes:
conout( DATE() )
// Resulta: 09/01/90
conout( DTOS(DATE()) )
// Resulta: 19900901
conout( LEN(DTOS(CTOD(""))) )
// Resulta: 8
Data e Tempo
conout( DATE() )
conout( DATE() + 30 )
conout( DATE() - 30 )
dDate = DATE()
conout( CMONTH(dDate) )
// Resulta: 08/04/02
// Resulta: 09/03/02
// Resulta: 07/05/02
// Resulta: August
Data e Tempo
conout( DATE() )
conout( DAY(DATE()) )
conout( DAY(DATE()) + 1)
conout( DAY(CTOD("")) )
// Resulta: 09/01/90
// Resulta: 1
// Resulta: 2
// Resulta: 0
Data e Tempo
// Resulta: 09/01/90
// Resulta: 9
// Resulta: 10
// Resulta: 0
Data e Tempo
conout( CMONTH(DATE()) )
// Resulta: August
conout( CMONTH(DATE() + 45) )
// Resulta: September
conout( SUBSTR(CMONTH(DATE()), 1, 3) + STR(DAY(DATE()),3)) // Resulta: Aug
4
Data e Tempo
conout( DATE() )
// Resulta: 09/01/90
conout( YEAR(DATE()) )
// Resulta: 1990
conout( YEAR(DATE()) + 11 )
// Resulta: 2001
Data e Tempo
conout( DATE() )
// Resulta: 09/01/89
conout( DOW(DATE()) )
// Resulta: 3
conout( CDOW(DATE()) )
// Resulta: Terca-feira
conout( DOW(DATE() - 2) )
// Resulta: 1
conout( CDOW(DATE() - 2) )
// Resulta: Domingo
Data e Tempo
Data e Tempo
conout( TIME() )
// Resulta: 10:00:00
conout( SECONDS() )
// Resulta: 36000.00
Romildo Junior
+55 83 99951.9991
Bacharel em Cincias das Computao(Unip)
Especialista em Engenharia de Software(Estcio)
Arquiteto de Software Totvs-Pb
jose.romildo@totvs.com.br
Obrigado ;)