Escolar Documentos
Profissional Documentos
Cultura Documentos
TOTVS Datasul Progress 0783
TOTVS Datasul Progress 0783
2A
Enviado por:
CLAUDIUS EDELSBRUNNER
Progress V8.2A
Por
Sandro Matos
Fbio Victor Pfeiff
Claudius Edelsbrunner
Sumrio
1 Conhecendo o Progress
1.1 O que Progress
1.2 Gerenciamento da Base de Dados Relacional Progress
1.3 DataServer para outros Sistemas de Gerenciamento
1.4 Client / Server Parameters: Arquivo .pf
1.5 Formas de Conexo a bancos Progress via sesses Progress
1.5.1 Mono-usurio
1.5.2 Multi-usurio
1.5.3 Exerccio: conectando a um banco Progress mono-usurio
1.6 Principais Extenses dos Arquivos Gerados pelo Progress
1.7 Variveis de Ambiente - Propath
1.8 Dump
2 Procedure Editor
2.1 File operaes sobre arquivos
2.2 Edit
2.2.1 Desfazendo aes
2.2.2 Recortando, copiando e colando
2.2.3 Inserindo campos de tabelas
2.3 Search buscando/substituindo no programa corrente ocorrncias de texto
2.4 Buffers
2.4.1 Abrindo um novo buffer
2.4.2 Alternando entre buffers
2.5 Compile
2.5.1 Run
2.5.2 Check Sintax
2.6 O Menu de Contexto
3 Conhecendo os Comandos do Progress
3.1 Comentrios em Progress
3.2 Tipo de Dados
3.3 Declarao de Estruturas Auxiliares
3.3.1 Variveis
3.3.2 Buffers Auxiliares
3.3.3 Tabelas Temporrias
3.3.4 Procedures e Funes
3.3.5 Parmetros
3.4 Exerccios
3.5 Comandos Bsicos
3.5.1 Atribuio
3.5.2 Entrada e Sada
3.5.3 Bloco e Repetio
3.5.4 Condicionais
3.5.5 Para manipulao de registros
3.5.6 Querys
3.5.7 Quebra de bloco
3.5.8 Execuo de programas externos
3.6
3.7
3.8
3.8.1
3.8.2
3.9
3.10
1 Conhecendo o Progress
1.1
O que PROGRESS ?
1.2
1.3
dmy
1920
iso8859-1
u:\sports\sports.db
meta1
ssports
tcp
C:\TMP
e:\trg\
8192
40
2048
2048
08
10
_desk.p
Obs.: Parmetros client-server so case-sensitive. O mesmo caracter (ou conjunto de caracteres ) pode
especificar diferentes parmetros sesso Progress. Exemplo: -S (especifica o servio utilizado para
conexo a um servidor de banco Progress) e -s (tamanho da pilha alocada no client).
1.5
1.5.1
Multi-usurio
1.6
.p
.i
Includes
.r
Programas compilados
.db
Base de Dados
.bi
.ai
.lk
.lg
.w
Templates
.ped
.dbg
.df
.d
.ds
comando Load
.e
1.7
1.8
Dump
2 Procedure Editor
2.1
2.2
Edit
10
2.2.1
Desfazendo Aes
Este comando desfaz a ltima ao executada pelo usurio.
2.2.2
2.2.3
11
2.3
2.4
Buffers
12
2.5
Compile
O Menu de Contexto
Contm atalhos para algumas das funes mais utilizadas dos itens de menu j
abordados. Acessvel via boto direito do mouse.
13
3.1
Comentrios em Progress
A linguagem 4GL Progress permite a insero de comentrios em um
programa:
/*
Abre um comentrio
*/
Encerra um comentrio
Tudo o que escrito entre estes dois tokens ignorado pelo compilador. Muito
til para:
identificar um programa;
descrever determinada soluo dentro do programa (porqu foi fito de um
jeito e no de outro).
Podem existir comentrios aninhados.
3.2
Tipo de Dados
Os
Progress
so:
-
3.3
3.3.1
integer
character
date
decimal
logical
handle
rowid
Exemplos:
DEFINE
DEFINE
DEFINE
DEFINE
DEFINE
DEFINE
DEFINE
DEFINE
14
3.3.2
Exemplos:
DEFINE BUFFER bf-cargo FOR cargo.
DEFINE NEW SHARED BUFFER bf-funcao FOR funcao.
DEFINE SHARED BUFFER bf-funcao FOR funcao.
3.3.3
Tabelas Temporrias
3.3.4
Procedures e Funes
15
O melhor isolar esta lgica num nico lugar, executando-a de onde quiser.
Se a Equipe Econmica resolve de um dia para o outro alterar algumas regras, e
isso afeta um programa seu, basta alterar um lugar.
Progress oferece dois mecanismos para auxiliar nesse processo: procedures e
funes (h um terceiro mecanismo, que ser discutido posteriormente).
Digite, no Procedure Editor, Procedure Statement. Selecione esta
expresso e acompanhe a sintaxe.
Agora apague a expresso anterior e digite, no Procedure Editor, Function
Statement. Selecione esta expresso e acompanhe a sintaxe.
3.3.5
Parmetros
NONONO-
<corpo da procedure>
END PROCEDURE.
3.4
Exerccios
1) Abra o procedure editor. Crie um cabecalho com as seguintes informaes, utilizando comentrios
(cada informao deve iniciar nova linha):
Autor;
Data;
Hora;
Descrio (pode ocupar mais de uma linha);
Verifique a sintaxe do programa;
Salve no diretrio c:\prow82a\curso\exercicio com o nome p-c03x01.p.
Feche o programa.
16
2)
17
3.5
3.5.1
Comandos Bsicos
Comandos de Atribuio
3.5.2
Comandos de Entrada/Sada
H varios comandos em Progress que podem ser utilizados para efetuar
operaes de entrada/sada. Os principais:
3.5.3
Display
Update
Put
Message
End
Do
Repeat
case
Create <buffer>.
18
Delete <buffer>.
For
Querys
Querys so outra forma oferecida pelo Progress para se trabalhar com tabelas.
As diferenas bsicas entre estas e o comando For so:
querys no delimitam um bloco; a abertura e o fechamento de uma query
so comandos independentes, que no delimitam uma transao;
uma query aberta no significa um registro disponvel para manipulao.
Deve ser especificado query que se deseja um registro (por exemplo, via
comando Get).
Define query
Open query
Abre uma query. Esta pode ter sido previamente definida, ou sua definio
pode fazer parte deste comando.
Close query
Fecha uma query previamente aberta.
Exemplo: c:\Prow82a\Curso\Exemplos\p-c03e07.p
3.5.7
Next
Leave
Return
19
Exemplos:
Funo
Procedure
c:\Prow82a\Curso\Exercicio\p-c03x01.p
c:\Prow82a\Curso\Exercicio\p-c03r01.p
c:\Prow82a\Curso\Exemplos\p-c03e08.p
Quit
RUN
c:\Prow82a\Curso\Exemplos\p-
Date(string)
Date(ms,dia,ano)
Integer
Decimal
String
Rowid
3.6.2
Sobre registros
c03e15.p
c:\Prow82a\Curso\Exemplos\p-
Available
Can-find
3.6.3
Sobre listas
c03e16.p
c:\Prow82a\Curso\Exemplos\p-
Entry
Num-entries
Lookup
Substring
Index
Replace
3.6.4
Sobre strings
Begins
Matches
Contains
3.6.5
Funo Condicional
If Then Else
20
3.7
Exerccios
21
3.8
Pr-processamento
Exemplos:
3.8.1
Diretivas
3.8.2
c:\Prow82a\Curso\Exemplos\p-c03e11.p
c:\Prow82a\Curso\Exemplos\p-c03e12.p
c:\Prow82a\Curso\Exemplos\p-c03e13.p
&GLOBAL-DEFINE
&SCOPED-DEFINE
&UNDEFINE
&IF &THEN &ELSEIF &ELSE &ENDIF
Funes
DEFINED (preprocessor)
3.9
Exerccio
1) A tabela Customer possui um campo que determina o limite de crdito que um cliente possui
junto a nossa empresa Credit-Limit. Suas tarefas so:
mostrar em tela os campos Cust-num, Name, Contact e Phone de todas as ocorrncias da
tabela Customer que possuem limite de crdito maior que um valor qualquer, sendo que esse
valor ser definido em um preprocessor (ou seja, no filtro a ser utilizado sobre a tabela, deve-se
usar uma referncia ao preprocessor, e no o valor fixo). Inicialmente, fixe o valor em $40.000,00.
3.10 Includes
Pode-se agregar a um programa trechos de cdigo escritos pores espalhadas
por vrios arquivos. Para tal, basta escrever o trecho de cdigo que se deseja incluir
no programa, salv-lo e, no programa que em se deseja utiliz-lo, fazer referncia a
ele usando a seguinte sintaxe: {<nome-do-include> [<parametro-1>
<parametro-n>]}
22
Definitions
Main Block
Triggers
Procedures
Functions
Novo Objeto
Executar um programa
23
4.2
Palette de Componentes
Pointer
Legenda
Frame
24
Atributos Bsicos
c:\Prow82a\Curso\Exemplos\w-c05e17.w
Visible
Sensitive
Screen-value
Checked
Read-only
List-items
Num-items
5.2
Exerccios
5.3
Mtodos Bsicos
{&SELF-NAME}
{&FRAME-NAME}
{&BROWSE-NAME}
25
{&OPEN-QUERY-{&BROWSE-NAME}}
{&DISPLAYED-FIELDS}
{&ENABLED-FIELDS}
5.5
Exerccios
26
Apresentando o ACE
6.2
Apresentando o ADM
6.3
SmartObjects
SmartWindow (*)
SmartFrame (*)
SmartDialog (*)
SmartFolder
SmartPanel (navigation)
SmartPanel (update)
SmartQuery
SmartBrowser
SmartViewer
w-nomearq.w
f-nomearq.w
d-nomearq.w
p-nomearq.w
p-nomearq.w
q-nomearq.w
b-nomearq.w
v-nomearq.w
6.4
1)
Exerccios:
Desenvolver um submdulo de pesquisa seguindo os passos abaixo:
criar um SmartFrame;
sem usar o recurso de SmartFolders, criar trs browser, colocando-os em trs pginas distintas;
criar um radio-set com os valores Customer, Order e Salesrep;
criar um fill-in;
27
Cadastro de Order
- crie uma SmartViewer;
- neste SmartViewer, crie um combo-box e um fill-in;
- salve o SmartViewer;
- crie uma SmartWindow, instanciando o SmartViewer anteriormente criado nesta;
- nesta SmartWindow, crie botes para as operaes que voc imagina possveis sobre um
cadastro;
- programe a tela de cadastro de Order de tal forma que o combo-box traga para o usurio a lista
de todos os Customers. Tal como o cadastro de Customer, deve ser feita validao quanto
duplicao de nomes na base de dados, bem como o ajuste de interface* de acordo com a
operao que est sendo executada.
Cadastro de Invoice
- crie um SmartViewer;
- neste SmartViewer, crie um fill-in e um editor;
- salve o SmartViewer;
- crie uma SmartWindow, instanciando o SmartViewer anteriormente criado nesta;
- programe a tela de tal forma que o usurio informe a Data (Invoice-Date) e o total pago
(Total-Paid). Assim como nos dois cadastros anteriores, faz-se necessria a validao de
nomes e o ajuste de interface* de acordo com a operao.
* validao dinmica
3) De acordo com os procedimentos, desenvolver um submdulo para atribuir as tarefas,
anteriormente cadastradas, s suas funes.
3.1
- crie uma SmartWindow;
- crie um SmartBrowser;
- crie um boto;
- o primeiro browse deve trazer todos os cargos, enquanto o segundo deve trazer as funes do
cargo selecionado anteriormente;
- SmartBrowser deve ser carregado com todas as funes cadastradas no sistema.
3.2
- Criar uma SmartDialog;
- crie dois browsers;
- crie dois botes;
- crie um fill-in;
- ao ser pressionado o boto da tela anterior chamada a SmartDialog;
- o fill-in deve ser preenchido com a denominao da funo escolhida na SmartWindow;
- o primeiro browse deve ser carregado com todas as tarefas cadastradas no sistema, enquanto
que o segundo deve trazer todas as tarefas executadas por aquela funo;
- os botes devem permitir alterar o domnio de tarefas por funo;
28
29
7 Links
Ao colocar SmartObjects em um Container voc deve interlig-los atravs de
Links.
7.1
7.2
7.2.1
30
p:\curso82a\Exemplos\f-c05e19.w
Exerccio
7.3
&Default
adeicon/wp_up 28,196
adeicon/wp_down 28,196
SmartBro&wser
src/adm/template/browser.w
.,adm/samples
b-*.*,b-*.w,b-*.r,*.*
Choose SmartBrowser
31
7.4
O que um link ?
Um link uma conexo entre dois SmartObjects que define como eles
interagem e quais os tipos de mensagens eles podem trocar.
Tipo de Link
Record
TableIO
Navigation
7.5
Exerccios
|<
<
>
>|
1.1
Clientes
|<
1.2
<
>
>|
<
>
>|
Clientes
Detalhe de Clientes
|<
1.3
Browse Clientes
32
Detalhe de Clientes
|<
1.4
<
>
>|
Clientes
Add
7.6
Update
Delete
Reset
SOURCE
SmartPanel Navigation
SmartPanel Update
Link Type
Navigation
TableIO
SmartPanel Transaction
TableIO
SmartBrowser
Record
SmartViewer
Record
SmartQuery
Record
Qualquer SmartObject
State
Targets Possveis
SmartQuery
SmartViewer
SmartBrowser
SmartViewer
SmartBrowser
SmartQuery
SmartViewer
SmartBrowser
SmartQuery
SmartViewer
SmartBrowser
SmartQuery
SmartViewer
SmartBrowser
SmartQuery
Qualquer SmartObject
33
7.7
Progress Advisor
7.8
Alternativa 1
34
Alternativa 2
7.9
Advisor
Link Editor
35
Para paginar uma window deve-se utilizar o seletor de pginas (ou o item Edit
- Goto Page do menu).
Duplo Click
Caractersticas da paginao:
Objetos colocados na pgina 0 so sempre visveis
Procedure oferecida pelo ADM para mudana de pgina:
RUN Select-Page(n).
SmartFolders
So widgets que controlam automaticamente as mudanas de pgina (quando
linkadas ao seu container). possvel, com um pouco de programao, controlar a
mudana de pgina utilizando outros widgets (por exemplo, radio-sets). O
SmartFolder apenas oferece uma maneira simples, rpida e elegante de faz-lo.
36
3. Crie um SmartFolder
37
8.2
Links
8.3
Exerccios:
38
8.4
Persistent Procedures
39
Messaging
SmartQuery
1
Internal
Procedures
adm-display-fields
Internal
Procedures
adm-open-query
adm-row-available
send-records
40
9.2
Tipos de Links
Container Source
Container Target
Page(n) Source
Page Target
Container Target
Record Source
Record Target
Navigation Target
Container Target
Record Source
Record Target
TableIO Target
Container Target
Record Target
Record Source
TableIO Target
Container Target
Navigation Source
Container Target
TableIO Source
Container Target
Page Source
SmartQuery
SmartBrowser
SmartViewer
Navigation SmartPanel
Update SmartPanel
SmartFolder
41
9.3
Container Target
Set-position
Set-size
Init-objects
Adm-destroy
Adm-destroy
Adm-exit
Container Target
Adm-hide
Adm-change-page
Adm-view
Adm-create-objects
9.4
9.4.1
Event procedures
42
9.4.2
Method procedures
9.4.3
Event Procedure
Inicia sempre com adm
Pode ser alterada
executada utilizando Dispatch ou Notify
No pode ser definido nenhum parmetro
43
Method Procedure
No possui padro para nomes
No pode ser alterada
chamada utilizando o comando Run
Pode ser especificada uma lista de
parmetros
9.4.4
RUN DISPATCH
RUN NOTIFY
9.4.4.1 Dispatch
Sintaxe do comando:
RUN dispatch [IN handle] (base-procedure-name).
Onde:
-
Exemplo:
RUN DISPATCH IN v-cli01 (display-fields).
Incio
Existe
"local-display-fields" ?
Sim
Executa
verso local
Sim
Executa
verso adm
No
Existe
"adm-display-fields" ?
No
Fim
44
9.4.4.2 Notify
Sintaxe do comando:
RUN dispatch [IN handle] (base-procedure-name [,link-types]).
Onde:
-
Exemplo:
RUN NOTIFY IN this-procedure (row-available).
Incio
Sim
Run dispatch IN target-object ("base-procedure").
45
No
Fim
9.4.5
46
47
48
49
50
51
9.5
Mapa de eventos
adm-create-objects
adm-enable
adm -open-query
adm-view
adm-row-available
adm-exit in object
local-exit in container 2.
Adm-destroy in object 3.
52
adm-change-page
adm-create-objects
adm-view
adm-create-objects
adm-view
adm-row-changed
adm-get-first
adm-get-prev
adm-row-available
adm-get-last
adm-reposition-query
adm-display-fields
Os eventos get-next/first/prev/last e reposition-query chamam adm-rowchanged que notifica (notify) todos os objetos de destino (record target) que o registro
foi trocado.
53
adm-assign-record
adm-current-changed
adm-end-update
adm-assign-statement
adm-display-fields
adm-apply-entry
adm-reset-record
adm-end-update
adm-row-changed
adm-row-available
adm-display-fields
54
Com o SmartBrowser possuindo Enable Columns podemos criar um link tipo TableIO entre
um SmartBrowser e um SmartPanel de Update (p-updsav.r).
55
11 NEW-STATE METHOD
O mtodo new-state chamado por meio de um comando RUN.
Exemplo:
Run new-state (param).
Este comando envia uma mensagem para os Target Objects que possuem um
link tipo State, com o nmero do handle e uma varivel.
Os Target Objects recebem a mensagem e executam a procedure StateChanged recebendo o parmetro na varivel p-state.
T
add del
cancel
Procedure add-record
Run new-state (param)
State
Procedure state-changed
case p-state:
when
56