PROGRESS DCA -...

187
PROGRESS DCA Desenvolvendo Aplicações Caracter

Transcript of PROGRESS DCA -...

Page 1: PROGRESS DCA - sanderlei.com.brsanderlei.com.br/PDF/Totvs-Datasul/TOTVS-Datasul-Progress-0199.pdf · Flexível – Assegura portabilidade das aplicações em outras plataformas Aberto

PROGRESS DCADesenvolvendo Aplicações Caracter

Page 2: PROGRESS DCA - sanderlei.com.brsanderlei.com.br/PDF/Totvs-Datasul/TOTVS-Datasul-Progress-0199.pdf · Flexível – Assegura portabilidade das aplicações em outras plataformas Aberto

Introdução ao Progress

Page 3: PROGRESS DCA - sanderlei.com.brsanderlei.com.br/PDF/Totvs-Datasul/TOTVS-Datasul-Progress-0199.pdf · Flexível – Assegura portabilidade das aplicações em outras plataformas Aberto

Completo ambiente de desenvolvimento de aplicações, composto por:

- Sistema Gerenciador de BD Relacional - Linguagem de 4a. Geração- Ferramentas de Programação

Page 4: PROGRESS DCA - sanderlei.com.brsanderlei.com.br/PDF/Totvs-Datasul/TOTVS-Datasul-Progress-0199.pdf · Flexível – Assegura portabilidade das aplicações em outras plataformas Aberto

Benefícios

• Aberto

Flexível

Completo

Page 5: PROGRESS DCA - sanderlei.com.brsanderlei.com.br/PDF/Totvs-Datasul/TOTVS-Datasul-Progress-0199.pdf · Flexível – Assegura portabilidade das aplicações em outras plataformas Aberto

Flexível– Assegura

portabilidade das aplicações em outras plataformas

Aberto– Suporta o padrão

industrial

– Assegura opções

de desenvolvimento

heterogêneoCompleto

– Permite construção

de grandes

aplicações

– Produz soluções

Client/Server

Benefícios

Page 6: PROGRESS DCA - sanderlei.com.brsanderlei.com.br/PDF/Totvs-Datasul/TOTVS-Datasul-Progress-0199.pdf · Flexível – Assegura portabilidade das aplicações em outras plataformas Aberto

Componentes Lógicos

Base de Dados– Tabela

RegistroCampo

– Índice

Page 7: PROGRESS DCA - sanderlei.com.brsanderlei.com.br/PDF/Totvs-Datasul/TOTVS-Datasul-Progress-0199.pdf · Flexível – Assegura portabilidade das aplicações em outras plataformas Aberto

Componentes Lógicos

• Cliente Empresa Banco

= Base Dados

Page 8: PROGRESS DCA - sanderlei.com.brsanderlei.com.br/PDF/Totvs-Datasul/TOTVS-Datasul-Progress-0199.pdf · Flexível – Assegura portabilidade das aplicações em outras plataformas Aberto

• = Tabela

= Registro

= CampoNome

C

O

M

P

O

N

E

N

T

E

S

L

Ó

G

I

C

O

S

= Índice

Page 9: PROGRESS DCA - sanderlei.com.brsanderlei.com.br/PDF/Totvs-Datasul/TOTVS-Datasul-Progress-0199.pdf · Flexível – Assegura portabilidade das aplicações em outras plataformas Aberto

Componentes Físicos

• .DB

.BI .LG .LK

Page 10: PROGRESS DCA - sanderlei.com.brsanderlei.com.br/PDF/Totvs-Datasul/TOTVS-Datasul-Progress-0199.pdf · Flexível – Assegura portabilidade das aplicações em outras plataformas Aberto

Componentes Físicos

.DB

-> Before-Image

contém a imagem dos dados de uma transação.BI

-> Database

contém os dados atuais e descrições da base

Page 11: PROGRESS DCA - sanderlei.com.brsanderlei.com.br/PDF/Totvs-Datasul/TOTVS-Datasul-Progress-0199.pdf · Flexível – Assegura portabilidade das aplicações em outras plataformas Aberto

Componentes Físicos

.LG

-> Lock

Informa se a base está sendo acessada..LK

-> Log

contém as referências dos usuários, hora de

entrada, saída e programas acessados (histórico).

Page 12: PROGRESS DCA - sanderlei.com.brsanderlei.com.br/PDF/Totvs-Datasul/TOTVS-Datasul-Progress-0199.pdf · Flexível – Assegura portabilidade das aplicações em outras plataformas Aberto

- Blocos

- Declarações

- Funções

- Operadores

- Variáveis

- Expressões

- Símbolos especiais

- Elementos da interface com o usuário

(atributos e métodos)

- Eventos

Componentes da Linguagem

Page 13: PROGRESS DCA - sanderlei.com.brsanderlei.com.br/PDF/Totvs-Datasul/TOTVS-Datasul-Progress-0199.pdf · Flexível – Assegura portabilidade das aplicações em outras plataformas Aberto

Tipo Formato Exemplo

Character x(8)Aceita: A – Alfabetico ! – Maiusculas

“x(40)” –> string alfanumérica“AAA-9999” –> MCZ-9283“!x(10)” –> STRING ALFANUMÉRICA

Integer >>>,>>9Aceita: z – espaço 9 – mostra “0”

“>>>,>>9” –> 1.500“999,999” –> 001.500“zzz,zz9” –> 1.500

Decimal >>>,>>9.99 “>>>,>>9.99” –> 1.500,45“999,999.99” –> 001.500,45“zzz,zz9.99” –> 1.500,45

Logical Yes/NoAceita: True/False

YesNo

Date MM/DD/AAAA 12/31/9999

Rowid ----

Recid >>>>>9

Tipos de Dados do Progress

Page 14: PROGRESS DCA - sanderlei.com.brsanderlei.com.br/PDF/Totvs-Datasul/TOTVS-Datasul-Progress-0199.pdf · Flexível – Assegura portabilidade das aplicações em outras plataformas Aberto

Movimentação dos Dados

Page 15: PROGRESS DCA - sanderlei.com.brsanderlei.com.br/PDF/Totvs-Datasul/TOTVS-Datasul-Progress-0199.pdf · Flexível – Assegura portabilidade das aplicações em outras plataformas Aberto

Localização dos Dados

• Base de Dados

Buffer Registro

Buffer Tela

Page 16: PROGRESS DCA - sanderlei.com.brsanderlei.com.br/PDF/Totvs-Datasul/TOTVS-Datasul-Progress-0199.pdf · Flexível – Assegura portabilidade das aplicações em outras plataformas Aberto

Movimentando dados

• Base de Dados

Buffer

Registro

Buffer

Tela

Base de Dados Tela

Page 17: PROGRESS DCA - sanderlei.com.brsanderlei.com.br/PDF/Totvs-Datasul/TOTVS-Datasul-Progress-0199.pdf · Flexível – Assegura portabilidade das aplicações em outras plataformas Aberto

Movimentando dados

• Base de

• Dados

Buffer

RegistroBuffer

Tela

Entrada

Usuário

Tela Base de Dados

Page 18: PROGRESS DCA - sanderlei.com.brsanderlei.com.br/PDF/Totvs-Datasul/TOTVS-Datasul-Progress-0199.pdf · Flexível – Assegura portabilidade das aplicações em outras plataformas Aberto

Regras para Movimentação de Dados

Os programas não podem manipular os dadosda base de dados até que eles sejam copiadospara o buffer de registro.

O usuário não pode interagir com os dados atéque eles sejam copiados do buffer de registropara o buffer de tela.

Page 19: PROGRESS DCA - sanderlei.com.brsanderlei.com.br/PDF/Totvs-Datasul/TOTVS-Datasul-Progress-0199.pdf · Flexível – Assegura portabilidade das aplicações em outras plataformas Aberto

As alterações que são feitas no buffer de tela oubuffer de registro não são atualizadasautomaticamente em outro buffer. Deve-seprogramar o controle de movimentação entre osbuffers.

Regras para Movimentação de Dados

Page 20: PROGRESS DCA - sanderlei.com.brsanderlei.com.br/PDF/Totvs-Datasul/TOTVS-Datasul-Progress-0199.pdf · Flexível – Assegura portabilidade das aplicações em outras plataformas Aberto

Comando Banco de

Dados

Buffer de

Registro

Buffer de Tela Usuário

ASSIGN

CREATE

DELETE

DISPLAY

ENABLE

FIND

FOR EACH

GET

INSERT

PROMPT-FOR

RELEASE

SET

UPDATE

Comandos de Movimentação de Dados

Page 21: PROGRESS DCA - sanderlei.com.brsanderlei.com.br/PDF/Totvs-Datasul/TOTVS-Datasul-Progress-0199.pdf · Flexível – Assegura portabilidade das aplicações em outras plataformas Aberto

Manipulando os Dados

Page 22: PROGRESS DCA - sanderlei.com.brsanderlei.com.br/PDF/Totvs-Datasul/TOTVS-Datasul-Progress-0199.pdf · Flexível – Assegura portabilidade das aplicações em outras plataformas Aberto

Insert

• Cria um novo registro no banco, permite que o usuário faça alterações e atualiza as informações no banco.

• Executa as ações de CREATE, DISPLAY, PROMPT-FOR e ASSIGN.

• Ex.: INSERT customer.

Page 23: PROGRESS DCA - sanderlei.com.brsanderlei.com.br/PDF/Totvs-Datasul/TOTVS-Datasul-Progress-0199.pdf · Flexível – Assegura portabilidade das aplicações em outras plataformas Aberto

Create

• Cria um novo registro no banco, inicializa com os valores defaults (padrões) e deixa uma cópia do registro no buffer de registro.

• Ex.: CREATE customer.

Page 24: PROGRESS DCA - sanderlei.com.brsanderlei.com.br/PDF/Totvs-Datasul/TOTVS-Datasul-Progress-0199.pdf · Flexível – Assegura portabilidade das aplicações em outras plataformas Aberto

Update

• Mostra os valores, permite o usuário alterar e atualiza os dados no banco.

• Executa as ações de DISPLAY, PROMPT-FOR e ASSIGN.

• Ex.: UPDATE customer.UPDATE customer EXCEPT cust-num.

Page 25: PROGRESS DCA - sanderlei.com.brsanderlei.com.br/PDF/Totvs-Datasul/TOTVS-Datasul-Progress-0199.pdf · Flexível – Assegura portabilidade das aplicações em outras plataformas Aberto

Display

• Mostra os valores na Tela.• Move os dados do Buffer de Registro para o Buffer de

Tela.• Os dados devem sempre ter sido previamente movidos

para o Buffer de Registro.

• Ex.: DISPLAY customer.DISP customer.cust-num.

Page 26: PROGRESS DCA - sanderlei.com.brsanderlei.com.br/PDF/Totvs-Datasul/TOTVS-Datasul-Progress-0199.pdf · Flexível – Assegura portabilidade das aplicações em outras plataformas Aberto

Set

• Permite que o usuário altere as informações e atualiza o banco de dados.

• Executa as ações de PROMPT-FOR e ASSIGN.

• Ex.: SET customer.SET customer.name.

Page 27: PROGRESS DCA - sanderlei.com.brsanderlei.com.br/PDF/Totvs-Datasul/TOTVS-Datasul-Progress-0199.pdf · Flexível – Assegura portabilidade das aplicações em outras plataformas Aberto

Prompt-for

• Solicita uma entrada de dado ao usuário e disponibiliza no buffer de tela.

Ex.: PROMPT-FOR customer.cust-num.FIND customer WHERE

customer.cust-num = INPUTcustomer.cust-num NO-ERROR.

IF AVAILABLE customer THENDISPLAY customer

EXCEPT customer.commentsWITH 1 COLUMN.

Page 28: PROGRESS DCA - sanderlei.com.brsanderlei.com.br/PDF/Totvs-Datasul/TOTVS-Datasul-Progress-0199.pdf · Flexível – Assegura portabilidade das aplicações em outras plataformas Aberto

Assign

Atualiza a informação no Banco de Dados.Copia os dados do buffer de tela para seus respectivos

campos e/ou variáveis no buffer de registro.

Ex.: DEF VAR i-cust-num AS integer NO-UNDO.PROMPT-FOR i-cust-num.FIND FIRST customer EXCLUSIVE-LOCK.ASSIGN customer.cust-num = i-cust-num.

Page 29: PROGRESS DCA - sanderlei.com.brsanderlei.com.br/PDF/Totvs-Datasul/TOTVS-Datasul-Progress-0199.pdf · Flexível – Assegura portabilidade das aplicações em outras plataformas Aberto

Delete

• Elimina um registro do buffer de registro e do banco de dados.

• Os dados devem sempre ter sido previamente movidos para o Buffer de Registro.

• Ex.: REPEAT:

PROMPT-FOR customer.cust-num.FIND customer USING customer.cust-num.DELETE customer.

END.

Page 30: PROGRESS DCA - sanderlei.com.brsanderlei.com.br/PDF/Totvs-Datasul/TOTVS-Datasul-Progress-0199.pdf · Flexível – Assegura portabilidade das aplicações em outras plataformas Aberto

INSERT

• UPDATE

Create

Comandos que substituem outros Comandos

Page 31: PROGRESS DCA - sanderlei.com.brsanderlei.com.br/PDF/Totvs-Datasul/TOTVS-Datasul-Progress-0199.pdf · Flexível – Assegura portabilidade das aplicações em outras plataformas Aberto

• UPDATE

SET

Create Display

INSERT

Comandos que substituem outros Comandos

Page 32: PROGRESS DCA - sanderlei.com.brsanderlei.com.br/PDF/Totvs-Datasul/TOTVS-Datasul-Progress-0199.pdf · Flexível – Assegura portabilidade das aplicações em outras plataformas Aberto

• INSERT

UPDATE

SET

Create Display AssignPrompt-for

Comandos que substituem outros Comandos

Page 33: PROGRESS DCA - sanderlei.com.brsanderlei.com.br/PDF/Totvs-Datasul/TOTVS-Datasul-Progress-0199.pdf · Flexível – Assegura portabilidade das aplicações em outras plataformas Aberto

Observe a movimentação

• insert customer.

create customer.

update customer.

create customer.

display customer.

prompt-for customer

assign customer.

Page 34: PROGRESS DCA - sanderlei.com.brsanderlei.com.br/PDF/Totvs-Datasul/TOTVS-Datasul-Progress-0199.pdf · Flexível – Assegura portabilidade das aplicações em outras plataformas Aberto

Quadro de Comandos

• INSERT

UPDATE

SET

Delete Create DisplayPrompt-

forAssign Find

For

Each Release

Page 35: PROGRESS DCA - sanderlei.com.brsanderlei.com.br/PDF/Totvs-Datasul/TOTVS-Datasul-Progress-0199.pdf · Flexível – Assegura portabilidade das aplicações em outras plataformas Aberto

Laboratório 1

Page 36: PROGRESS DCA - sanderlei.com.brsanderlei.com.br/PDF/Totvs-Datasul/TOTVS-Datasul-Progress-0199.pdf · Flexível – Assegura portabilidade das aplicações em outras plataformas Aberto

Blocos

Page 37: PROGRESS DCA - sanderlei.com.brsanderlei.com.br/PDF/Totvs-Datasul/TOTVS-Datasul-Progress-0199.pdf · Flexível – Assegura portabilidade das aplicações em outras plataformas Aberto

Tipos de Blocos

• REPEAT• FOR EACH• DO• PROCEDURES• TRIGGERS

Page 38: PROGRESS DCA - sanderlei.com.brsanderlei.com.br/PDF/Totvs-Datasul/TOTVS-Datasul-Progress-0199.pdf · Flexível – Assegura portabilidade das aplicações em outras plataformas Aberto

Repeat

• Laço (repetição) automático. Continua a interagir até encontrar um END-ERROR ou outra condição de término definida pelo usuário.

• Ex: REPEAT WITH 1 COLUMN:• CREATE customer.• UPDATE customer.• END.

Page 39: PROGRESS DCA - sanderlei.com.brsanderlei.com.br/PDF/Totvs-Datasul/TOTVS-Datasul-Progress-0199.pdf · Flexível – Assegura portabilidade das aplicações em outras plataformas Aberto

For each

• Lê um registro a cada interação do bloco e copia os dados do banco para o buffer de registro.

• Ex: FOR EACH customer:DISPLAY customer.cust-num

customer.name.END.

Page 40: PROGRESS DCA - sanderlei.com.brsanderlei.com.br/PDF/Totvs-Datasul/TOTVS-Datasul-Progress-0199.pdf · Flexível – Assegura portabilidade das aplicações em outras plataformas Aberto

Do

• Individualiza um grupo de comandos dentro de um bloco simples.

• Ex: FOR EACH customer:DISPLAY customer.cust-num.

IF credit-limit > 15000 THEN DO:UPDATE customer.name

customer.address.MESSAGE "Registro Alterado".

END.END.

Page 41: PROGRESS DCA - sanderlei.com.brsanderlei.com.br/PDF/Totvs-Datasul/TOTVS-Datasul-Progress-0199.pdf · Flexível – Assegura portabilidade das aplicações em outras plataformas Aberto

Desvio Execução dos Blocos

Permite o desvio na execução do bloco.

NEXT.LEAVE.

Ex: FOR EACH customer:DISPLAY customer.cust-num.

IF credit-limit > 15000 THENNEXT.

IF credit-limit = 10000 THENLEAVE.

UPDATE customer.name customer.address

END.

Page 42: PROGRESS DCA - sanderlei.com.brsanderlei.com.br/PDF/Totvs-Datasul/TOTVS-Datasul-Progress-0199.pdf · Flexível – Assegura portabilidade das aplicações em outras plataformas Aberto

Laboratório 2

Page 43: PROGRESS DCA - sanderlei.com.brsanderlei.com.br/PDF/Totvs-Datasul/TOTVS-Datasul-Progress-0199.pdf · Flexível – Assegura portabilidade das aplicações em outras plataformas Aberto

LocalizandoRegistros

Page 44: PROGRESS DCA - sanderlei.com.brsanderlei.com.br/PDF/Totvs-Datasul/TOTVS-Datasul-Progress-0199.pdf · Flexível – Assegura portabilidade das aplicações em outras plataformas Aberto

Find

Busca apenas um registro em uma tabela.

FIRST (primeiro) LAST (último)

NEXT (próximo) PREV (anterior)

Ex.: FIND FIRST customer

WHERE customer.credit-limit > 15000

NO-ERROR.

IF AVAILABLE customer THEN

DISPLAY customer WITH 1 COLUMN.

Page 45: PROGRESS DCA - sanderlei.com.brsanderlei.com.br/PDF/Totvs-Datasul/TOTVS-Datasul-Progress-0199.pdf · Flexível – Assegura portabilidade das aplicações em outras plataformas Aberto

Where

Limita os registros a serem mostrados em uma leitura de uma tabela.

Ex: FOR EACH customerWHERE customer.credit-limit > 15000:DISPLAY customer.cust-num

customer.credit-limit.END.

OPERADORES:NOT > <AND >= <=OR <>

Page 46: PROGRESS DCA - sanderlei.com.brsanderlei.com.br/PDF/Totvs-Datasul/TOTVS-Datasul-Progress-0199.pdf · Flexível – Assegura portabilidade das aplicações em outras plataformas Aberto

Using

WHERE customer.cust-num = INPUT customer.cust-num

Substitui o WHERE, utilizando o dado informado no buffer de tela.

Ex: REPEAT WITH 1 COLUMN:PROMPT-FOR customer.cust-num.FIND customer USING customer.cust-num.DISPLAY customer.

END.

Page 47: PROGRESS DCA - sanderlei.com.brsanderlei.com.br/PDF/Totvs-Datasul/TOTVS-Datasul-Progress-0199.pdf · Flexível – Assegura portabilidade das aplicações em outras plataformas Aberto

Of

WHERE order.cust-num = customer.cust-num

Substitui o WHERE, utiliza o índice para fazer o relacionamento entre tabelas.

Ex: FIND FIRST customer.

FOR EACH order OF customer:DISPLAY order.order-num

END.

Page 48: PROGRESS DCA - sanderlei.com.brsanderlei.com.br/PDF/Totvs-Datasul/TOTVS-Datasul-Progress-0199.pdf · Flexível – Assegura portabilidade das aplicações em outras plataformas Aberto

By

Usa-se a opção BY para classificação de registros por um campo não indexado.

Ex:FOR EACH customer BY balance DESCENDING:

DISPLAY customer.balance customer.name customer.phone.

END.

Default : ordenação ascendente

Page 49: PROGRESS DCA - sanderlei.com.brsanderlei.com.br/PDF/Totvs-Datasul/TOTVS-Datasul-Progress-0199.pdf · Flexível – Assegura portabilidade das aplicações em outras plataformas Aberto

Use-index

• A opção USE-INDEX permite você escolher qualquer índice definido, para selecionar registros.

• Ex:FOR EACH customer USE-INDEX name:

DISPLAY customer.balance customer.name customer.phone.

END.

Page 50: PROGRESS DCA - sanderlei.com.brsanderlei.com.br/PDF/Totvs-Datasul/TOTVS-Datasul-Progress-0199.pdf · Flexível – Assegura portabilidade das aplicações em outras plataformas Aberto

Begins

• Verifica se a 1. expressão inicia com a 2. expressão.• Utiliza um índice caso exista.

• Ex: FOR EACH customerWHERE customer.name BEGINS “S”:DISPLAY customer.cust-num

customer.namecustomer.phone.

END.

Page 51: PROGRESS DCA - sanderlei.com.brsanderlei.com.br/PDF/Totvs-Datasul/TOTVS-Datasul-Progress-0199.pdf · Flexível – Assegura portabilidade das aplicações em outras plataformas Aberto

Matches

• Compara uma expressão do tipo caracter com um padrão e retorna o valor verdadeiro se a expressão for atendida.

• Não utiliza índice.

• Ex: FOR EACH customerWHERE customer.address MATCHES “*st”:DISPLAY customer.cust-num

customer.name customer.address.

END.

Page 52: PROGRESS DCA - sanderlei.com.brsanderlei.com.br/PDF/Totvs-Datasul/TOTVS-Datasul-Progress-0199.pdf · Flexível – Assegura portabilidade das aplicações em outras plataformas Aberto

Contains

• Faz a busca por determinada palavra ou combinação delas, em atributos do tipo word-index.

• Ex: FOR EACH itemWHERE item.item-name CONTAINS “ball”:DISPLAY item.item-num

item.item-name item.price.

END.

Page 53: PROGRESS DCA - sanderlei.com.brsanderlei.com.br/PDF/Totvs-Datasul/TOTVS-Datasul-Progress-0199.pdf · Flexível – Assegura portabilidade das aplicações em outras plataformas Aberto

Funciona como um espelho da tabela.

Ex. DEFINE BUFFER bf-cliente FOR customer.

DEFINE BUFFER b-aux FOR customer.

FIND FIRST customer.

UPDATE customer.cust-num

customer.name.

FIND b-aux

WHERE b-aux.cust-num = customer.cust-num.

DISPLAY b-aux.name

b-aux.phone.

UPDATE customer.address.

Buffer

Page 54: PROGRESS DCA - sanderlei.com.brsanderlei.com.br/PDF/Totvs-Datasul/TOTVS-Datasul-Progress-0199.pdf · Flexível – Assegura portabilidade das aplicações em outras plataformas Aberto

Query

• Pesquisa agrupada de registro do banco de dados.

- Definir a query- Ex.: DEFINE QUERY query-name

FOR table SCROLLING.

- Abrir a queryEx.: OPEN QUERY query-name FOR EACH table

- Acessar os registros- Ex.: GET FIRST query-name.

Page 55: PROGRESS DCA - sanderlei.com.brsanderlei.com.br/PDF/Totvs-Datasul/TOTVS-Datasul-Progress-0199.pdf · Flexível – Assegura portabilidade das aplicações em outras plataformas Aberto

Get

Retorna um registro de uma query previamente aberta.

GET FIRST query-name.NEXTLASTPREV

Page 56: PROGRESS DCA - sanderlei.com.brsanderlei.com.br/PDF/Totvs-Datasul/TOTVS-Datasul-Progress-0199.pdf · Flexível – Assegura portabilidade das aplicações em outras plataformas Aberto

Query

Ex.: DEFINE QUERY qr-cust FOR customer SCROLLING.

OPEN QUERY qr-cust FOR EACH customer.

GET FIRST qr-cust.REPEAT:

DISP customer.GET NEXT qr-cust.

END.

Page 57: PROGRESS DCA - sanderlei.com.brsanderlei.com.br/PDF/Totvs-Datasul/TOTVS-Datasul-Progress-0199.pdf · Flexível – Assegura portabilidade das aplicações em outras plataformas Aberto

Laboratório 3

Page 58: PROGRESS DCA - sanderlei.com.brsanderlei.com.br/PDF/Totvs-Datasul/TOTVS-Datasul-Progress-0199.pdf · Flexível – Assegura portabilidade das aplicações em outras plataformas Aberto

Variáveis

Page 59: PROGRESS DCA - sanderlei.com.brsanderlei.com.br/PDF/Totvs-Datasul/TOTVS-Datasul-Progress-0199.pdf · Flexível – Assegura portabilidade das aplicações em outras plataformas Aberto

Variáveis

DEFINE VARIABLE nome-variavelAS Tipo de dado

LIKE Tabela.atributo INITIAL “xxxx”NO-UNDO

Ex.: DEFINE VARIABLE c-customer AS char NO-UNDO.DEF VAR i-cust-num LIKE customer.cust-num

NO-UNDO.

Page 60: PROGRESS DCA - sanderlei.com.brsanderlei.com.br/PDF/Totvs-Datasul/TOTVS-Datasul-Progress-0199.pdf · Flexível – Assegura portabilidade das aplicações em outras plataformas Aberto

Envia uma mensagem para a tela.

MESSAGE “texto” [ UPDATE variavel ][ VIEW-AS ALERT-BOX

[QUESTION / INFORMATIONWARNING / ERROR ]

[ BUTTONS YES-NO YES-NO-CANCELOKOK-CANCELRETRY-CANCEL ]

[ TITLE “título” ].

Message

Page 61: PROGRESS DCA - sanderlei.com.brsanderlei.com.br/PDF/Totvs-Datasul/TOTVS-Datasul-Progress-0199.pdf · Flexível – Assegura portabilidade das aplicações em outras plataformas Aberto

Ex.:

DEF VAR l-resp AS logical INITIAL no

NO-UNDO.

MESSAGE “Confirma Atualização ?”

UPDATE l-respVIEW-AS ALERT-BOX

QUESTION BUTTONS YES-NOTITLE “Atualização de Dados”.

Message

Page 62: PROGRESS DCA - sanderlei.com.brsanderlei.com.br/PDF/Totvs-Datasul/TOTVS-Datasul-Progress-0199.pdf · Flexível – Assegura portabilidade das aplicações em outras plataformas Aberto

Laboratório 4

Page 63: PROGRESS DCA - sanderlei.com.brsanderlei.com.br/PDF/Totvs-Datasul/TOTVS-Datasul-Progress-0199.pdf · Flexível – Assegura portabilidade das aplicações em outras plataformas Aberto

Processamento Condicional

Page 64: PROGRESS DCA - sanderlei.com.brsanderlei.com.br/PDF/Totvs-Datasul/TOTVS-Datasul-Progress-0199.pdf · Flexível – Assegura portabilidade das aplicações em outras plataformas Aberto

Processamento Condicional

Solicita num. cliente

Busca registro no BD

Encontrou?

Altera informações Adiciona novo

Sim Não

Page 65: PROGRESS DCA - sanderlei.com.brsanderlei.com.br/PDF/Totvs-Datasul/TOTVS-Datasul-Progress-0199.pdf · Flexível – Assegura portabilidade das aplicações em outras plataformas Aberto

IF expression THENcomando.

ELSE DO:bloco.

END.

Processamento Condicional

Page 66: PROGRESS DCA - sanderlei.com.brsanderlei.com.br/PDF/Totvs-Datasul/TOTVS-Datasul-Progress-0199.pdf · Flexível – Assegura portabilidade das aplicações em outras plataformas Aberto

Processamento Condicional

CASE expression:WHEN value THEN

comando.WHEN value THEN DO:

blocoEND.WHEN value THEN

comando.OTHERWISE DO:

blocoEND.

END CASE.

Page 67: PROGRESS DCA - sanderlei.com.brsanderlei.com.br/PDF/Totvs-Datasul/TOTVS-Datasul-Progress-0199.pdf · Flexível – Assegura portabilidade das aplicações em outras plataformas Aberto

Laboratório 5

Page 68: PROGRESS DCA - sanderlei.com.brsanderlei.com.br/PDF/Totvs-Datasul/TOTVS-Datasul-Progress-0199.pdf · Flexível – Assegura portabilidade das aplicações em outras plataformas Aberto

Frames

Page 69: PROGRESS DCA - sanderlei.com.brsanderlei.com.br/PDF/Totvs-Datasul/TOTVS-Datasul-Progress-0199.pdf · Flexível – Assegura portabilidade das aplicações em outras plataformas Aberto

Frames

• É uma área retangular dentro da tela do Progress usada para mostrar informações.

• Layout default para seus dados.

• Espaço disponível:

• Frame (21 linhas)

• Mensagens (2 linhas)

• Linha de status (1 linha)

Page 70: PROGRESS DCA - sanderlei.com.brsanderlei.com.br/PDF/Totvs-Datasul/TOTVS-Datasul-Progress-0199.pdf · Flexível – Assegura portabilidade das aplicações em outras plataformas Aberto

Frames

As frames default do progress ocorrem nos seguintes blocos :

ProcedureRepeatFor each

Do with frame

Page 71: PROGRESS DCA - sanderlei.com.brsanderlei.com.br/PDF/Totvs-Datasul/TOTVS-Datasul-Progress-0199.pdf · Flexível – Assegura portabilidade das aplicações em outras plataformas Aberto

Frames

DISPLAY “Relatório de Clientes”

WITH FRAME abc CENTERED.

FOR EACH customer:

DISPLAY customer.cust-num customer.name

WITH FRAME xxx DOWN.

END.

one-down: dados de uma única interação do bloco

down: dados de múltiplas interações do bloco.

Page 72: PROGRESS DCA - sanderlei.com.brsanderlei.com.br/PDF/Totvs-Datasul/TOTVS-Datasul-Progress-0199.pdf · Flexível – Assegura portabilidade das aplicações em outras plataformas Aberto

Define uma frame para uso por um procedimento ou por diversos procedimentos.

Ex.: DEFINE FRAME f-dados

customer.cust-num NO-LABEL SKIP(2)

customer.name AT 5 SKIP

customer.address AT 5

WITH SIDE-LABELS OVERLAY.

Define Frame

Page 73: PROGRESS DCA - sanderlei.com.brsanderlei.com.br/PDF/Totvs-Datasul/TOTVS-Datasul-Progress-0199.pdf · Flexível – Assegura portabilidade das aplicações em outras plataformas Aberto

FormPermite definir o posicionamento dos campos.

O Form estará sempre contido dentro de uma Frame. Uma Frame pode possuir várias Forms.

Caso a Frame não tenha sido informada ou não exista, o progress cria automaticamente uma Frame.

Ex.: FORM

customer.cust-num NO-LABEL SKIP(2)

customer.name AT 5 SKIP

customer.address AT 5

WITH FRAME f-dados.

Page 74: PROGRESS DCA - sanderlei.com.brsanderlei.com.br/PDF/Totvs-Datasul/TOTVS-Datasul-Progress-0199.pdf · Flexível – Assegura portabilidade das aplicações em outras plataformas Aberto

AT - Alinhamento pela direita. F1: Short

Fld2: Medium

Field3: Long

COLON - Alinhamento pelos dois pontos.

F1: Short

Fld2: Medium

Field3: Long

TO - Alinhamento pela esquerda.

F1: Short

Fld2: Medium

Field3: Long

Opções de Posicionamento

Page 75: PROGRESS DCA - sanderlei.com.brsanderlei.com.br/PDF/Totvs-Datasul/TOTVS-Datasul-Progress-0199.pdf · Flexível – Assegura portabilidade das aplicações em outras plataformas Aberto

VIEW - apresenta uma frame.

Ex.: VIEW FRAME frame-name.

HIDE - apaga uma frame.

Ex.: HIDE FRAME frame-name NO-PAUSE.

CLEAR - apaga o conteúdo de uma frame.

Ex.: CLEAR FRAME f-arq ALL NO-PAUSE.

Manipulando Frames

Page 76: PROGRESS DCA - sanderlei.com.brsanderlei.com.br/PDF/Totvs-Datasul/TOTVS-Datasul-Progress-0199.pdf · Flexível – Assegura portabilidade das aplicações em outras plataformas Aberto

PAUSE - suspende a execução até que uma tecla seja pressionada ou um certo tempo passar.

Ex.: PAUSE.

PAUSE 5.

Manipulando Frames

Page 77: PROGRESS DCA - sanderlei.com.brsanderlei.com.br/PDF/Totvs-Datasul/TOTVS-Datasul-Progress-0199.pdf · Flexível – Assegura portabilidade das aplicações em outras plataformas Aberto

Laboratório 6

Page 78: PROGRESS DCA - sanderlei.com.brsanderlei.com.br/PDF/Totvs-Datasul/TOTVS-Datasul-Progress-0199.pdf · Flexível – Assegura portabilidade das aplicações em outras plataformas Aberto

Includes

Page 79: PROGRESS DCA - sanderlei.com.brsanderlei.com.br/PDF/Totvs-Datasul/TOTVS-Datasul-Progress-0199.pdf · Flexível – Assegura portabilidade das aplicações em outras plataformas Aberto

Em tempo de compilação PROGRESS lê estes arquivos include como sendo parte do programa.

Vantagem: reutilização de código.

Ex.: {i-valida.i}

{i-valida.i “Código Inválido”}

/* i-valida.i */

MESSAGE “{1}” VIEW-AS ALERT-BOX.

Includes

Page 80: PROGRESS DCA - sanderlei.com.brsanderlei.com.br/PDF/Totvs-Datasul/TOTVS-Datasul-Progress-0199.pdf · Flexível – Assegura portabilidade das aplicações em outras plataformas Aberto

Includes São Expansões em Tempo de Compilação

myprog.p

mycode.iDO:

...

Display record.

...

END.DO:

...

Display record.

...

END.

Page 81: PROGRESS DCA - sanderlei.com.brsanderlei.com.br/PDF/Totvs-Datasul/TOTVS-Datasul-Progress-0199.pdf · Flexível – Assegura portabilidade das aplicações em outras plataformas Aberto

myprog.p

mycode.i

{mycode.i} DO:

...

Display record.

...

END.{mycode.i}

Código Modular com Arquivos de Includes

Page 82: PROGRESS DCA - sanderlei.com.brsanderlei.com.br/PDF/Totvs-Datasul/TOTVS-Datasul-Progress-0199.pdf · Flexível – Assegura portabilidade das aplicações em outras plataformas Aberto

Usando Arquivos de Include para Definir Variáveis

prog1.p

{mycode.i}

mycode.i

DEFINE VARIABLE...

prog2.p

{mycode.i}

Page 83: PROGRESS DCA - sanderlei.com.brsanderlei.com.br/PDF/Totvs-Datasul/TOTVS-Datasul-Progress-0199.pdf · Flexível – Assegura portabilidade das aplicações em outras plataformas Aberto

• {i-mostra.i &table=“customer”

• &field=“cust-num”}

• /* i-mostra.i */

• FOR EACH {&table}:

• DISPLAY {&table}.{&field}.

• END.

Exemplo de Includes

Page 84: PROGRESS DCA - sanderlei.com.brsanderlei.com.br/PDF/Totvs-Datasul/TOTVS-Datasul-Progress-0199.pdf · Flexível – Assegura portabilidade das aplicações em outras plataformas Aberto

• Não pode ser utilizado a barra “\” nos nomes de

arquivos ou includes para informar o diretório, pois

causa erro no UNIX.

• Quando for necessário utilizar barras para informar

diretório, deve-se utilizar a barra “/”.

Observação

Page 85: PROGRESS DCA - sanderlei.com.brsanderlei.com.br/PDF/Totvs-Datasul/TOTVS-Datasul-Progress-0199.pdf · Flexível – Assegura portabilidade das aplicações em outras plataformas Aberto

Laboratório 7

Page 86: PROGRESS DCA - sanderlei.com.brsanderlei.com.br/PDF/Totvs-Datasul/TOTVS-Datasul-Progress-0199.pdf · Flexível – Assegura portabilidade das aplicações em outras plataformas Aberto

Relatórios

Page 87: PROGRESS DCA - sanderlei.com.brsanderlei.com.br/PDF/Totvs-Datasul/TOTVS-Datasul-Progress-0199.pdf · Flexível – Assegura portabilidade das aplicações em outras plataformas Aberto

Redirecionando a Saída

OUTPUT TO nome-arq

PRINTER

TERM

Page 88: PROGRESS DCA - sanderlei.com.brsanderlei.com.br/PDF/Totvs-Datasul/TOTVS-Datasul-Progress-0199.pdf · Flexível – Assegura portabilidade das aplicações em outras plataformas Aberto

Permite definir saída simultâneas. O Progress permite até 5 saídas diferentes por programa.

As quatro regras básicas para utilização de stream:

1 – Definir

2 – Direcionar

3 – Utilizar

4 – Fechar

Stream

Page 89: PROGRESS DCA - sanderlei.com.brsanderlei.com.br/PDF/Totvs-Datasul/TOTVS-Datasul-Progress-0199.pdf · Flexível – Assegura portabilidade das aplicações em outras plataformas Aberto

Ex.: (1) DEFINE STREAM s1.

(2) OUTPUT STREAM s1

TO arquivo.txt APPEND.(3) PUT STREAM s1 UNFORMATTED

SKIP.(4) OUTPUT STREAM s1 CLOSE.

Stream

Page 90: PROGRESS DCA - sanderlei.com.brsanderlei.com.br/PDF/Totvs-Datasul/TOTVS-Datasul-Progress-0199.pdf · Flexível – Assegura portabilidade das aplicações em outras plataformas Aberto

TOTAL

COUNT

MAXIMUM

MINIMUM

AVERAGE

Os labels são mostrados na ordem especificada acima (em inglês).

Funções Automáticas

Page 91: PROGRESS DCA - sanderlei.com.brsanderlei.com.br/PDF/Totvs-Datasul/TOTVS-Datasul-Progress-0199.pdf · Flexível – Assegura portabilidade das aplicações em outras plataformas Aberto

• ACCUMULATE - Calcula uma ou mais expressões de totalização dentro de um bloco de interação.

• ACCUM - Acessa os valores acumulados pela função accumulate.

Totalizando Valores

Page 92: PROGRESS DCA - sanderlei.com.brsanderlei.com.br/PDF/Totvs-Datasul/TOTVS-Datasul-Progress-0199.pdf · Flexível – Assegura portabilidade das aplicações em outras plataformas Aberto

• BREAK BY - Define categorias de quebra.

• FIRST-OF - Retorna verdadeiro se a iteração atual for a primeira do grupo de quebra.

• LAST-OF - Retorna verdadeiro se a iteração atual for a última do grupo de quebra.

• FIRST - Retorna verdadeiro se a iteração atual for a primeira.

• LAST - Retorna verdadeiro se a iteração atual for a última.

Quebras

Page 93: PROGRESS DCA - sanderlei.com.brsanderlei.com.br/PDF/Totvs-Datasul/TOTVS-Datasul-Progress-0199.pdf · Flexível – Assegura portabilidade das aplicações em outras plataformas Aberto

Ex.:

FOR EACH customer

BREAK BY customer.sales-rep:

IF FIRST-OF(customer.sales-rep) THEN

DISPLAY customer.sales-rep

customer.name.

END.

Quebras

Page 94: PROGRESS DCA - sanderlei.com.brsanderlei.com.br/PDF/Totvs-Datasul/TOTVS-Datasul-Progress-0199.pdf · Flexível – Assegura portabilidade das aplicações em outras plataformas Aberto

Ex:

Quebras

118.000

55.000

50.0008bbb

5.0004bbb

63.000

60.0003aaa

3.0001aaa

Limite CréditoNum ClienteRepresent.

Page 95: PROGRESS DCA - sanderlei.com.brsanderlei.com.br/PDF/Totvs-Datasul/TOTVS-Datasul-Progress-0199.pdf · Flexível – Assegura portabilidade das aplicações em outras plataformas Aberto

Opção HEADER

PAGE-TOP (depende da HEADER)

PAGE-BOTTOM (depende da HEADER)

na definição da frame.

VIEW / HIDE - Ativar/Desativar frames.

PAGE-SIZE - número de linhas por página.

PAGE-NUMBER - retorna o número da página.

Cabeçalhos e Rodapés

Page 96: PROGRESS DCA - sanderlei.com.brsanderlei.com.br/PDF/Totvs-Datasul/TOTVS-Datasul-Progress-0199.pdf · Flexível – Assegura portabilidade das aplicações em outras plataformas Aberto

Laboratório 8

Page 97: PROGRESS DCA - sanderlei.com.brsanderlei.com.br/PDF/Totvs-Datasul/TOTVS-Datasul-Progress-0199.pdf · Flexível – Assegura portabilidade das aplicações em outras plataformas Aberto

ProgramaçãoOrientada

a Eventos

Page 98: PROGRESS DCA - sanderlei.com.brsanderlei.com.br/PDF/Totvs-Datasul/TOTVS-Datasul-Progress-0199.pdf · Flexível – Assegura portabilidade das aplicações em outras plataformas Aberto

Programação Orientada a Eventos

Usuário dirige a execução através do

acionamento dos componentes da interface.

A interface é composta por

widgets, que geram diferentes

eventos.

Page 99: PROGRESS DCA - sanderlei.com.brsanderlei.com.br/PDF/Totvs-Datasul/TOTVS-Datasul-Progress-0199.pdf · Flexível – Assegura portabilidade das aplicações em outras plataformas Aberto

Comportamento dos Programas

Procedural Eventos

Comandos...

Comandos

Fim

Gatilho 2

Gatilho 3Gatilho 1

Programa

Page 100: PROGRESS DCA - sanderlei.com.brsanderlei.com.br/PDF/Totvs-Datasul/TOTVS-Datasul-Progress-0199.pdf · Flexível – Assegura portabilidade das aplicações em outras plataformas Aberto

Ações do usuário ou do Progress que

ocorrem durante a execução de uma

aplicação.

Tipos de Eventos:

- Eventos causados pelo usuário (acesso a

elementos da interface)

- Eventos relacionados ao banco de dados

Eventos

Page 101: PROGRESS DCA - sanderlei.com.brsanderlei.com.br/PDF/Totvs-Datasul/TOTVS-Datasul-Progress-0199.pdf · Flexível – Assegura portabilidade das aplicações em outras plataformas Aberto

Comandos de Construção de Blocos

Page 102: PROGRESS DCA - sanderlei.com.brsanderlei.com.br/PDF/Totvs-Datasul/TOTVS-Datasul-Progress-0199.pdf · Flexível – Assegura portabilidade das aplicações em outras plataformas Aberto

Passos para Utilizar um Objeto

Passo Sintaxe

Definir o objeto e mostrá-lo DEFINE...

Definir os triggers para oobjeto

ON event OF object DO: ...END.

Mostrar o objeto na frame DISPLAY...WITH FRAME...

Executar o bloco principal doprograma

WAIT-FOR event OF object

Page 103: PROGRESS DCA - sanderlei.com.brsanderlei.com.br/PDF/Totvs-Datasul/TOTVS-Datasul-Progress-0199.pdf · Flexível – Assegura portabilidade das aplicações em outras plataformas Aberto

Widgets

Page 104: PROGRESS DCA - sanderlei.com.brsanderlei.com.br/PDF/Totvs-Datasul/TOTVS-Datasul-Progress-0199.pdf · Flexível – Assegura portabilidade das aplicações em outras plataformas Aberto

Existem 4 tipos básicos :- Window Widget: espaço de trabalho da aplicação. Criada quando a aplicação for iniciada.- Frame Widget: recipiente para outros widgets.- Data Widget: forma de representação dos dados. São eles: fill-in, text, editor, combo-box, etc.- Action Widget: forma de representar os comandos. Botões e menus compõem os widgets de ação. Esses widgets permitem que o usuário dirija a operação de sua aplicação.

Widgets

Page 105: PROGRESS DCA - sanderlei.com.brsanderlei.com.br/PDF/Totvs-Datasul/TOTVS-Datasul-Progress-0199.pdf · Flexível – Assegura portabilidade das aplicações em outras plataformas Aberto

ATRIBUTOSApresentam/modificam as características dos

WIDGETS.

Ex.: ASSIGN wgh_retang1:bgcolor IN FRAMEf_dados = 8.

MÉTODOS

Retornam/adicionam informações/dados dos WIDGETS. OBS: Normalmente retorna um expressão

lógica.Ex.: ASSIGN v_log_stat = v_cod_estab:load-

mouse-pointer(“cross.cur”) IN FRAME f_dados.

Widgets

Page 106: PROGRESS DCA - sanderlei.com.brsanderlei.com.br/PDF/Totvs-Datasul/TOTVS-Datasul-Progress-0199.pdf · Flexível – Assegura portabilidade das aplicações em outras plataformas Aberto

Bloco de código executado sempre que um evento

ocorre.

ON event-list OF widget-list

trigger-block

Ex.: ON choose OF bt-cancela DO:

MESSAGE “Cancelado pelo usuário”

VIEW-AS ALERT-BOX INFORMATION.

QUIT.

END.

Triggers

Page 107: PROGRESS DCA - sanderlei.com.brsanderlei.com.br/PDF/Totvs-Datasul/TOTVS-Datasul-Progress-0199.pdf · Flexível – Assegura portabilidade das aplicações em outras plataformas Aberto

Objetos Gráficos

ImageWindow

Frame

Rectangle

Combo box

Selection ListRadio set

Toggle box

Button

Fill in

Page 108: PROGRESS DCA - sanderlei.com.brsanderlei.com.br/PDF/Totvs-Datasul/TOTVS-Datasul-Progress-0199.pdf · Flexível – Assegura portabilidade das aplicações em outras plataformas Aberto

Tiposde

Widgets

Page 109: PROGRESS DCA - sanderlei.com.brsanderlei.com.br/PDF/Totvs-Datasul/TOTVS-Datasul-Progress-0199.pdf · Flexível – Assegura portabilidade das aplicações em outras plataformas Aberto

DEF BUTTON bt-sair LABEL "Sair” AUTO-ENDKEY.

DEF BUTTON bt-ok LABEL ”Ok” AUTO-GO.

DEF BUTTON bt-atualizar LABEL "Atualizar".

DEF BUTTON bt-desfazer LABEL "Desfazer”

IMAGE FILE “im-undo”.

Botões

Page 110: PROGRESS DCA - sanderlei.com.brsanderlei.com.br/PDF/Totvs-Datasul/TOTVS-Datasul-Progress-0199.pdf · Flexível – Assegura portabilidade das aplicações em outras plataformas Aberto

Botões

Atributos

•Label

•Sensitive

•Visible

•Tooltip

Métodos

•Load-mouse-pointer

•Load-image

•Load-image-down

•Load-image-up

•Load-image-insensitive

Eventos

•Entry

•Leave

•Choose

Page 111: PROGRESS DCA - sanderlei.com.brsanderlei.com.br/PDF/Totvs-Datasul/TOTVS-Datasul-Progress-0199.pdf · Flexível – Assegura portabilidade das aplicações em outras plataformas Aberto

Use VIEW-AS para especificar os widgets de

representação dos dados.

Ex. DEFINE VARIABLE l-estudante AS logical

VIEW-AS TOGGLE-BOX LABEL

“Estudante?”.

View-as

Page 112: PROGRESS DCA - sanderlei.com.brsanderlei.com.br/PDF/Totvs-Datasul/TOTVS-Datasul-Progress-0199.pdf · Flexível – Assegura portabilidade das aplicações em outras plataformas Aberto

DEFINE VARIABLE c-name AS character

VIEW-AS FILL-IN LABEL “Nome”

FORMAT “x(30)”.

Fill-in

Atributos

•Format

•Label

•Screen-value

•Sensitive

•Visible

•Tooltip

Métodos

•Load-mouse-pointer

Eventos

•Entry

•Leave

Page 113: PROGRESS DCA - sanderlei.com.brsanderlei.com.br/PDF/Totvs-Datasul/TOTVS-Datasul-Progress-0199.pdf · Flexível – Assegura portabilidade das aplicações em outras plataformas Aberto

Ao mudar o valor

marcado o Progress

executa a trigger

value-changed

DEFINE VAR l-cobertura1 AS logical LABEL

“Chocolate” VIEW-AS TOGGLE-BOX.

DEFINE VAR l-cobertura2 AS logical LABEL

“Morango” VIEW-AS TOGGLE-BOX.

Toggle-box

Page 114: PROGRESS DCA - sanderlei.com.brsanderlei.com.br/PDF/Totvs-Datasul/TOTVS-Datasul-Progress-0199.pdf · Flexível – Assegura portabilidade das aplicações em outras plataformas Aberto

Toggle-box

Atributos

•Label

•Screen-value

•Sensitive

•Visible

•Tooltip

•Checked

Métodos

•Load-mouse-pointer

Eventos

•Entry

•Leave

•Value-changed

Page 115: PROGRESS DCA - sanderlei.com.brsanderlei.com.br/PDF/Totvs-Datasul/TOTVS-Datasul-Progress-0199.pdf · Flexível – Assegura portabilidade das aplicações em outras plataformas Aberto

Radio-set

DEF VAR i-num-bolas-sorvete AS integer

LABEL "Quantas bolas de Sorvete?"

VIEW-AS RADIO-SET HORIZONTAL

RADIO-BUTTONS "1 Bola", 1 , "2 Bolas", 2.

Ao mudar o valor

marcado o Progress

executa a trigger

value-changed

Page 116: PROGRESS DCA - sanderlei.com.brsanderlei.com.br/PDF/Totvs-Datasul/TOTVS-Datasul-Progress-0199.pdf · Flexível – Assegura portabilidade das aplicações em outras plataformas Aberto

Radio-set

Atributos

•Label

•Screen-value

•Sensitive

•Visible

•Tooltip

•Horizontal

•List-items

Métodos

•Load-mouse-pointer

•Add-last

•Delete

•Disable

•Enable

•Replace

Eventos

•Entry

•Leave

•Value-changed

Page 117: PROGRESS DCA - sanderlei.com.brsanderlei.com.br/PDF/Totvs-Datasul/TOTVS-Datasul-Progress-0199.pdf · Flexível – Assegura portabilidade das aplicações em outras plataformas Aberto

Selection-list

DEF VAR c-coberturas AS character

LABEL "Cobertura"

VIEW-AS SELECTION-LIST MULTIPLE

LIST-ITEMS "Chantily ",

"Creme ",

"Mel ",

"Morango "

SCROLLBAR-VERTICAL

INNER-CHARS 12 INNER-LINES 4 SORT.

Page 118: PROGRESS DCA - sanderlei.com.brsanderlei.com.br/PDF/Totvs-Datasul/TOTVS-Datasul-Progress-0199.pdf · Flexível – Assegura portabilidade das aplicações em outras plataformas Aberto

Selection-list

Atributos

•Label

•Screen-value

•Sensitive

•Visible

•Tooltip

•Multiple

•Num-items

•List-items

Métodos

•Load-mouse-pointer

•Add-last

•Add-first

•Delete

•Entry

•Replace

•Lookup

Eventos

•Entry

•Leave

•Value-changed

•Default-action

Page 119: PROGRESS DCA - sanderlei.com.brsanderlei.com.br/PDF/Totvs-Datasul/TOTVS-Datasul-Progress-0199.pdf · Flexível – Assegura portabilidade das aplicações em outras plataformas Aberto

DEF VAR c-editor AS char FORMAT "x(3000)"

LABEL "Editor de Textos"

VIEW-AS EDITOR INNER-LINES 10

INNER-CHARS 20

SCROLLBAR-VERTICAL

SCROLLBAR-HORIZONTAL.

Editor

Page 120: PROGRESS DCA - sanderlei.com.brsanderlei.com.br/PDF/Totvs-Datasul/TOTVS-Datasul-Progress-0199.pdf · Flexível – Assegura portabilidade das aplicações em outras plataformas Aberto

Editor

Atributos

•Label

•Screen-value

•Sensitive

•Visible

•Tooltip

•Num-lines

•Read-only

•Scrollbar-vertical

•Scrollbar-horizontal

Métodos

•Load-mouse-pointer

•Read-file

•Save-file

Eventos

•Entry

•Leave

Page 121: PROGRESS DCA - sanderlei.com.brsanderlei.com.br/PDF/Totvs-Datasul/TOTVS-Datasul-Progress-0199.pdf · Flexível – Assegura portabilidade das aplicações em outras plataformas Aberto

DEF VAR c-coberturas AS character

LABEL "Cobertura" VIEW-AS COMBO-BOX

LIST-ITEMS "Chantily ",

"Creme ",

"Mel ”,

”Morango ” SIZE 15 BY 1.

Combo-box

Page 122: PROGRESS DCA - sanderlei.com.brsanderlei.com.br/PDF/Totvs-Datasul/TOTVS-Datasul-Progress-0199.pdf · Flexível – Assegura portabilidade das aplicações em outras plataformas Aberto

Combo-box

Atributos

•Format

•Label

•Screen-value

•Sensitive

•Visible

•Tooltip

•List-items

•num-items

Métodos

•Load-mouse-pointer

•Add-first

•Add-last

•Delete

•Entry

•Lookup

•Replace

Eventos

•Entry

•Leave

•Value-changed

Page 123: PROGRESS DCA - sanderlei.com.brsanderlei.com.br/PDF/Totvs-Datasul/TOTVS-Datasul-Progress-0199.pdf · Flexível – Assegura portabilidade das aplicações em outras plataformas Aberto

DEF IMAGE im-logo FILE ”datasul.bmp” SIZE 10 BY 1.

Image

Atributos

•Sensitive

•Visible

•Tooltip

Métodos

•Load-mouse-pointer

•Load-image

Page 124: PROGRESS DCA - sanderlei.com.brsanderlei.com.br/PDF/Totvs-Datasul/TOTVS-Datasul-Progress-0199.pdf · Flexível – Assegura portabilidade das aplicações em outras plataformas Aberto

DEF RECTANGLE rt-key SIZE 70 BY 5

EDGE-PIXELS 3

BGCOLOR 3 FGCOLOR 15.

Rectangle

Atributos

•Filled

•Sensitive

•Visible

•Tooltip

Métodos

•Load-mouse-pointer

Page 125: PROGRESS DCA - sanderlei.com.brsanderlei.com.br/PDF/Totvs-Datasul/TOTVS-Datasul-Progress-0199.pdf · Flexível – Assegura portabilidade das aplicações em outras plataformas Aberto

Browse

Interface para a query.

Ex:DEFINE QUERY query-name FOR customer.DEFINE BROWSE browse-name QUERY query-name

DISPLAY customer.cust-numcustomer.name

WITH 15 DOWN TITLE “Browse de Clientes”.OPEN QUERY query-name FOR EACH customer.UPDATE browse-name WITH FRAME f1.

Page 126: PROGRESS DCA - sanderlei.com.brsanderlei.com.br/PDF/Totvs-Datasul/TOTVS-Datasul-Progress-0199.pdf · Flexível – Assegura portabilidade das aplicações em outras plataformas Aberto

Browse

DEF QUERY q-cust FOR customer SCROLLING.

DEF BROWSE b-cust QUERY q-cust DISPLAY

customer.cust-num customer.name

customer.city customer.country

WITH SEPARATORS 5 DOWN.

DEF FRAME f-dados b-cust WITH NO-LABELS.

OPEN QUERY q-cust FOR EACH customer.

UPDATE b-cust WITH FRAME f-dados.

Page 127: PROGRESS DCA - sanderlei.com.brsanderlei.com.br/PDF/Totvs-Datasul/TOTVS-Datasul-Progress-0199.pdf · Flexível – Assegura portabilidade das aplicações em outras plataformas Aberto

Browse

Atributos

•Multiple

•Sensitive

•Visible

•Separators

•Title

•Num-selected-rows

Métodos

•Fetch-selected-row

•Is-row-selected

•Select-row

•Load-mouse-pointer

Eventos

•Entry

•Leave

•Default-action

•Value-changed

Page 128: PROGRESS DCA - sanderlei.com.brsanderlei.com.br/PDF/Totvs-Datasul/TOTVS-Datasul-Progress-0199.pdf · Flexível – Assegura portabilidade das aplicações em outras plataformas Aberto

Representação de Campos

Tipo de dados

Widget Caracter Numerico Logico

Combo-Box x x x

Fill-in x x x

Radio-set x x x

Text x x x

Selection-list x

Editor x

Toggle-box x

Page 129: PROGRESS DCA - sanderlei.com.brsanderlei.com.br/PDF/Totvs-Datasul/TOTVS-Datasul-Progress-0199.pdf · Flexível – Assegura portabilidade das aplicações em outras plataformas Aberto

Principais Eventos

CHOOSE (buttons, menus)

ENTRY

LEAVE

VALUE-CHANGED (toggle-box, radio-set,

selection-list, browse)

Page 130: PROGRESS DCA - sanderlei.com.brsanderlei.com.br/PDF/Totvs-Datasul/TOTVS-Datasul-Progress-0199.pdf · Flexível – Assegura portabilidade das aplicações em outras plataformas Aberto

ENABLE - ativa o widget na tela.

Ex.: ENABLE bt-inclui WITH FRAME f-cliente.

DISABLE - desativa o widget na tela.

Ex.: DISABLE bt-mod WITH FRAME f-cliente.

APPLY - Executa um gatilho de um widget.

Ex.: APPLY “choose” TO bt-mod IN FRAME f-cliente.

WAIT-FOR - Para a execução. Fica esperando eventos.

Ex.: WAIT-FOR choose OF bt-sai

IN FRAME f-cliente.

Manipulando Widgets

Page 131: PROGRESS DCA - sanderlei.com.brsanderlei.com.br/PDF/Totvs-Datasul/TOTVS-Datasul-Progress-0199.pdf · Flexível – Assegura portabilidade das aplicações em outras plataformas Aberto

widget-name:attribute-name

Ex.: DISP c-name:label WITH FRAME f-a.

widget-name:attribute-name IN FRAME

frame-name = value

Ex. ASSIGN c-name:help IN FRAME f-a =

“Informe aqui o nome do cliente”.

Relembrando - Atributos

Page 132: PROGRESS DCA - sanderlei.com.brsanderlei.com.br/PDF/Totvs-Datasul/TOTVS-Datasul-Progress-0199.pdf · Flexível – Assegura portabilidade das aplicações em outras plataformas Aberto

ASSIGN v-log = widget-name:metod-name(...) IN

FRAME frame-name.

Ex.: ASSIGN v-log = ed-texto:load-file(“doc.txt”) IN FRAME f-a.

ASSIGN v-log = sl-estados:add-last(“SC”) IN FRAME f-a.

Relembrando - Métodos

Page 133: PROGRESS DCA - sanderlei.com.brsanderlei.com.br/PDF/Totvs-Datasul/TOTVS-Datasul-Progress-0199.pdf · Flexível – Assegura portabilidade das aplicações em outras plataformas Aberto

Menus

Page 134: PROGRESS DCA - sanderlei.com.brsanderlei.com.br/PDF/Totvs-Datasul/TOTVS-Datasul-Progress-0199.pdf · Flexível – Assegura portabilidade das aplicações em outras plataformas Aberto

Menus

ASSIGN DEFAULT-WINDOW:MENUBAR =

MENU mbar:HANDLE.

Page 135: PROGRESS DCA - sanderlei.com.brsanderlei.com.br/PDF/Totvs-Datasul/TOTVS-Datasul-Progress-0199.pdf · Flexível – Assegura portabilidade das aplicações em outras plataformas Aberto

DEFINE SUB-MENU sm-Reports

MENU-ITEM mi-Labels LABEL "Customer Labels"

MENU-ITEM mi-Names LABEL "Customer Names"

RULE

MENU-ITEM mi-Balances LABEL "Order Totals"

MENU-ITEM mi-Today LABEL "Order Items".

DEFINE MENU mbar MENUBAR

SUB-MENU sm-Table LABEL "Tables"

SUB-MENU sm-Reports LABEL "Reports"

SUB-MENU sm-Help LABEL "Help".

Exemplo de Menus

Page 136: PROGRESS DCA - sanderlei.com.brsanderlei.com.br/PDF/Totvs-Datasul/TOTVS-Datasul-Progress-0199.pdf · Flexível – Assegura portabilidade das aplicações em outras plataformas Aberto

ON CHOOSE OF MENU-ITEM mi-item

IN MENU menu-name DO:

bloco

END.

DEF SUB-MENU sm-sair

MENU-ITEM mi-sair LABEL "Sai&r"

TRIGGERS:

ON CHOOSE APPLY "window-close" TO

current-window.

END TRIGGERS.

Triggers para Menu

Page 137: PROGRESS DCA - sanderlei.com.brsanderlei.com.br/PDF/Totvs-Datasul/TOTVS-Datasul-Progress-0199.pdf · Flexível – Assegura portabilidade das aplicações em outras plataformas Aberto

Laboratório 9

Page 138: PROGRESS DCA - sanderlei.com.brsanderlei.com.br/PDF/Totvs-Datasul/TOTVS-Datasul-Progress-0199.pdf · Flexível – Assegura portabilidade das aplicações em outras plataformas Aberto

Tabelas Temporárias(TEMP-TABLE)

Page 139: PROGRESS DCA - sanderlei.com.brsanderlei.com.br/PDF/Totvs-Datasul/TOTVS-Datasul-Progress-0199.pdf · Flexível – Assegura portabilidade das aplicações em outras plataformas Aberto

• São iguais as tabelas;

• Possuem índice;

• Podem denegrir a performance, caso tenham muitos

registros e não possuam índice adequado;

DEF TEMP-TABLE tt-name [NO-UNDO]

[LIKE table-name

[USE-INDEX index-name [AS PRIMARY]] ... ]

[FIELD field-name {AS data-type | LIKE field}] ...

[INDEX index-name

[IS [UNIQUE] [PRIMARY] [WORD-INDEX ]]

{index-field [ASCENDING|DESCENDING]}...]...

Tabelas Temporárias

Page 140: PROGRESS DCA - sanderlei.com.brsanderlei.com.br/PDF/Totvs-Datasul/TOTVS-Datasul-Progress-0199.pdf · Flexível – Assegura portabilidade das aplicações em outras plataformas Aberto

Ex.:DEF TEMP-TABLE tt-cliente NO-UNDO

LIKE customer FIELD sales-rep AS character FORMAT “x(5)”

LABEL “Representante”FIELD region LIKE state.region INDEX i-repres IS PRIMARY sales-rep.

INSERT tt-cliente EXCEPT comments WITH 1 COLUMN.

FOR EACH tt-cliente NO-LOCK:DISP tt-cliente EXCEPT comments

WITH SIDE-LABELS.END.

Tabelas Temporárias

Page 141: PROGRESS DCA - sanderlei.com.brsanderlei.com.br/PDF/Totvs-Datasul/TOTVS-Datasul-Progress-0199.pdf · Flexível – Assegura portabilidade das aplicações em outras plataformas Aberto

Laboratório 10

Page 142: PROGRESS DCA - sanderlei.com.brsanderlei.com.br/PDF/Totvs-Datasul/TOTVS-Datasul-Progress-0199.pdf · Flexível – Assegura portabilidade das aplicações em outras plataformas Aberto

Procedures

Page 143: PROGRESS DCA - sanderlei.com.brsanderlei.com.br/PDF/Totvs-Datasul/TOTVS-Datasul-Progress-0199.pdf · Flexível – Assegura portabilidade das aplicações em outras plataformas Aberto

Procedure Externa: Programas PROGRESS (.p).

Pode ser chamada de qualquer outro do programa,

mas sem acessar o mesmo dado, necessidade de

compartilhamento.

Procedure Interna: Bloco de código definido dentro

de um programa PROGRESS. Pode ser chamada

de qualquer ponto do programa. Acessam os

mesmos dados, sem a necessidade de

compartilhamento.

Procedures

Page 144: PROGRESS DCA - sanderlei.com.brsanderlei.com.br/PDF/Totvs-Datasul/TOTVS-Datasul-Progress-0199.pdf · Flexível – Assegura portabilidade das aplicações em outras plataformas Aberto

Para executar uma procedure é utilizamos o comando RUN.

RUN <nome-da-procedure>.

Ex.:RUN pi-calculo. (procedure interna)

RUN proces.p. (procedure externa)

Executando Procedure

Page 145: PROGRESS DCA - sanderlei.com.brsanderlei.com.br/PDF/Totvs-Datasul/TOTVS-Datasul-Progress-0199.pdf · Flexível – Assegura portabilidade das aplicações em outras plataformas Aberto

Exemplo

proc1.pmyprog.p

RUN proc1.p

RUN proc2

PROCEDURE proc2:

END.

Procedure Externa

Procedure Interna

Page 146: PROGRESS DCA - sanderlei.com.brsanderlei.com.br/PDF/Totvs-Datasul/TOTVS-Datasul-Progress-0199.pdf · Flexível – Assegura portabilidade das aplicações em outras plataformas Aberto

PROCEDURE <nome-da-procedure>:<código fonte>

END PROCEDURE.

Ex.: FOR EACH customer:RUN pi-mostra-cliente.

END.

PROCEDURE pi-mostra-cliente:DISPLAY customer.cust-num

customer.name.END PROCEDURE.

Definição de PI

Page 147: PROGRESS DCA - sanderlei.com.brsanderlei.com.br/PDF/Totvs-Datasul/TOTVS-Datasul-Progress-0199.pdf · Flexível – Assegura portabilidade das aplicações em outras plataformas Aberto

FOR EACH customer:

DISPLAY customer.cust-num

customer.name.

RUN pi-mostra-pedidos.

END.

PROCEDURE pi-mostra-pedidos:

FOR EACH order OF customer:

DISPLAY order.order-num.

END.

END.

Exemplo

Page 148: PROGRESS DCA - sanderlei.com.brsanderlei.com.br/PDF/Totvs-Datasul/TOTVS-Datasul-Progress-0199.pdf · Flexível – Assegura portabilidade das aplicações em outras plataformas Aberto

Programa carregado na memória, permitindo que seja executado suas procedures internas.

RUN <nome-da-procedure> PERSISTENT SET <variável-handle>.

Ex.:DEF VAR hproces AS handle.

RUN proces.p PERSISTENT SET hproces.

RUN pi-digito IN hproces.

Procedure Persistentes

Page 149: PROGRESS DCA - sanderlei.com.brsanderlei.com.br/PDF/Totvs-Datasul/TOTVS-Datasul-Progress-0199.pdf · Flexível – Assegura portabilidade das aplicações em outras plataformas Aberto

COMPILE <nome-do-programa> [SAVE].

Ex.:COMPILE proces.p SAVE.

Extensões:.P.W.i.PY.R

Compilando Programas

Page 150: PROGRESS DCA - sanderlei.com.brsanderlei.com.br/PDF/Totvs-Datasul/TOTVS-Datasul-Progress-0199.pdf · Flexível – Assegura portabilidade das aplicações em outras plataformas Aberto

Laboratório 11

Page 151: PROGRESS DCA - sanderlei.com.brsanderlei.com.br/PDF/Totvs-Datasul/TOTVS-Datasul-Progress-0199.pdf · Flexível – Assegura portabilidade das aplicações em outras plataformas Aberto

Compartilhamentode

Dados

Page 152: PROGRESS DCA - sanderlei.com.brsanderlei.com.br/PDF/Totvs-Datasul/TOTVS-Datasul-Progress-0199.pdf · Flexível – Assegura portabilidade das aplicações em outras plataformas Aberto

DEFINE [[NEW [GLOBAL]] SHARED] VARIABLE

DEFINE [[NEW] SHARED] FRAME

DEFINE [[NEW] SHARED] BUFFER

DEFINE [[NEW [GLOBAL]] SHARED] STREAM

Componentes Compartilhados

Page 153: PROGRESS DCA - sanderlei.com.brsanderlei.com.br/PDF/Totvs-Datasul/TOTVS-Datasul-Progress-0199.pdf · Flexível – Assegura portabilidade das aplicações em outras plataformas Aberto

Exemploproc1.p

new global shared

new shared

proc2.p

shared

proc3.p

shared

proc4.p

new global shared

shared

proc5.p

shared

Page 154: PROGRESS DCA - sanderlei.com.brsanderlei.com.br/PDF/Totvs-Datasul/TOTVS-Datasul-Progress-0199.pdf · Flexível – Assegura portabilidade das aplicações em outras plataformas Aberto

INPUT: recebe um valor do procedimento que o

chamou.

Ex.: RUN prog2.p (INPUT c-name).

/* prog2.p */

DEF INPUT PARAM c-nome AS char NO-UNDO.

Passagem de Parâmetros

Page 155: PROGRESS DCA - sanderlei.com.brsanderlei.com.br/PDF/Totvs-Datasul/TOTVS-Datasul-Progress-0199.pdf · Flexível – Assegura portabilidade das aplicações em outras plataformas Aberto

OUTPUT: retorna um valor para o procedimento

que o chamou.

Ex.: RUN prog2.p (OUTPUT i-cont).

/* prog2.p */DEF OUTPUT PARAM i-num AS integer NO-UNDO.

Passagem de Parâmetros

Page 156: PROGRESS DCA - sanderlei.com.brsanderlei.com.br/PDF/Totvs-Datasul/TOTVS-Datasul-Progress-0199.pdf · Flexível – Assegura portabilidade das aplicações em outras plataformas Aberto

INPUT-OUTPUT: recebe e retorna um valor

para o procedimento que o chamou.

Ex. RUN prog2.p (INPUT-OUTPUT c-name).

/* prog2.p */

DEF INPUT-OUTPUT PARAM c-nome

AS char NO-UNDO.

Passagem de Parâmetros

Page 157: PROGRESS DCA - sanderlei.com.brsanderlei.com.br/PDF/Totvs-Datasul/TOTVS-Datasul-Progress-0199.pdf · Flexível – Assegura portabilidade das aplicações em outras plataformas Aberto

PARAM BUFFER: passa o buffer do registro como

parâmetro para o programa chamado.

Ex. RUN prog2.p (BUFFER customer).

/* prog2.p */

DEF PARAM BUFFER b-customer FOR customer.

Passagem de Parâmetros

Page 158: PROGRESS DCA - sanderlei.com.brsanderlei.com.br/PDF/Totvs-Datasul/TOTVS-Datasul-Progress-0199.pdf · Flexível – Assegura portabilidade das aplicações em outras plataformas Aberto

PARAM TABLE: passa uma temp-table como

parametro para o programa chamado.

Ex. RUN prog2.p (INPUT TABLE tt-dados).

/* prog2.p */

DEF TEMP-TABLE tt-dados LIKE customer.

DEF INPUT PARAM TABLE FOR tt-dados.

OUTPUT

INPUT-OUTPUT

Passagem de Parâmetros

Page 159: PROGRESS DCA - sanderlei.com.brsanderlei.com.br/PDF/Totvs-Datasul/TOTVS-Datasul-Progress-0199.pdf · Flexível – Assegura portabilidade das aplicações em outras plataformas Aberto

Laboratório 12

Page 160: PROGRESS DCA - sanderlei.com.brsanderlei.com.br/PDF/Totvs-Datasul/TOTVS-Datasul-Progress-0199.pdf · Flexível – Assegura portabilidade das aplicações em outras plataformas Aberto

Importação eExportação

deDados

Page 161: PROGRESS DCA - sanderlei.com.brsanderlei.com.br/PDF/Totvs-Datasul/TOTVS-Datasul-Progress-0199.pdf · Flexível – Assegura portabilidade das aplicações em outras plataformas Aberto

OUTPUT TO c:/tmp/state.d.

FOR EACH state:

EXPORT state.

END.

"AK" "Alaska" "West"

"AL" "Alabama" "South"

"AR" "Arkansas" "Central"

"AZ" "Arizona" "West"

"CA" "California" "West"

"CO" "Colorado" "West"

Export

Page 162: PROGRESS DCA - sanderlei.com.brsanderlei.com.br/PDF/Totvs-Datasul/TOTVS-Datasul-Progress-0199.pdf · Flexível – Assegura portabilidade das aplicações em outras plataformas Aberto

INPUT [STREAM xxx] FROM arquivo.txt.

•Se o arquivo de entrada conter mais campos

que o procedimento usa, PROGRESS ignora os

campos excedentes.

•Se o arquivo de entrada conter menos campos

que o esperado, PROGRESS processa a linha

do arquivo, mas não seta os campos que ficaram

sem entrada.

Input from

Page 163: PROGRESS DCA - sanderlei.com.brsanderlei.com.br/PDF/Totvs-Datasul/TOTVS-Datasul-Progress-0199.pdf · Flexível – Assegura portabilidade das aplicações em outras plataformas Aberto

INPUT FROM cust.txt.

REPEAT:

CREATE customer.

SET customer.cust-num

customer.country

customer.name.

END.

Input from

Page 164: PROGRESS DCA - sanderlei.com.brsanderlei.com.br/PDF/Totvs-Datasul/TOTVS-Datasul-Progress-0199.pdf · Flexível – Assegura portabilidade das aplicações em outras plataformas Aberto

DEF VAR i-cust AS integer NO-UNDO.

DEF VAR c-name AS character NO-UNDO.

DEF VAR c-rep AS character NO-UNDO.

INPUT FROM cust.txt.

REPEAT:

IMPORT i-cust c-name c-rep.

MESSAGE i-cust SKIP

c-name SKIP

c-rep VIEW-AS ALERT-BOX.

END.

INPUT CLOSE.

Import

Page 165: PROGRESS DCA - sanderlei.com.brsanderlei.com.br/PDF/Totvs-Datasul/TOTVS-Datasul-Progress-0199.pdf · Flexível – Assegura portabilidade das aplicações em outras plataformas Aberto

Laboratório 13

Page 166: PROGRESS DCA - sanderlei.com.brsanderlei.com.br/PDF/Totvs-Datasul/TOTVS-Datasul-Progress-0199.pdf · Flexível – Assegura portabilidade das aplicações em outras plataformas Aberto

Tratamento de

Erros

Page 167: PROGRESS DCA - sanderlei.com.brsanderlei.com.br/PDF/Totvs-Datasul/TOTVS-Datasul-Progress-0199.pdf · Flexível – Assegura portabilidade das aplicações em outras plataformas Aberto

- Erro de sistema

- Erro gerado pelo procedimento - a busca de

um registro falha ou o procedimento tenta

criar um registro com chave duplicada.

- Erro de interrupção de processamento -

quando o usuário pressiona as teclas de

ERROR, ENDKEY ou END-ERROR.

Tipos de Erros

Page 168: PROGRESS DCA - sanderlei.com.brsanderlei.com.br/PDF/Totvs-Datasul/TOTVS-Datasul-Progress-0199.pdf · Flexível – Assegura portabilidade das aplicações em outras plataformas Aberto

ON ERROR UNDO <bloco>, LEAVE <bloco>

ON QUIT UNDO <bloco>, RETURN “nok”

ON STOP UNDO <bloco>, RETRY <bloco>

ON ENDKEY UNDO <bloco>, LEAVE <bloco>

Como Tratar os Erros

Page 169: PROGRESS DCA - sanderlei.com.brsanderlei.com.br/PDF/Totvs-Datasul/TOTVS-Datasul-Progress-0199.pdf · Flexível – Assegura portabilidade das aplicações em outras plataformas Aberto

Main_block:

DO ON ERROR UNDO Main_block, LEAVE Main_block:

RUN elimina.p.

END.

Processa:

FOR EACH customer EXCLUSIVE-LOCK

ON ERROR UNDO, LEAVE:

IF customer.cust-num > 15 THEN

UNDO, NEXT.

DELETE customer.

END.

Exemplo

Page 170: PROGRESS DCA - sanderlei.com.brsanderlei.com.br/PDF/Totvs-Datasul/TOTVS-Datasul-Progress-0199.pdf · Flexível – Assegura portabilidade das aplicações em outras plataformas Aberto

Transações

Page 171: PROGRESS DCA - sanderlei.com.brsanderlei.com.br/PDF/Totvs-Datasul/TOTVS-Datasul-Progress-0199.pdf · Flexível – Assegura portabilidade das aplicações em outras plataformas Aberto

- Unidade completa de trabalho.

- A transação é um trabalho que se for

terminada a sua execução de forma anormal,

será completamente desfeito, ou seja, todo

realizado ou nada feito.

Procedimento

REPEAT

FOR EACH

Transações

Blocos que tem

processamento de

transação

Page 172: PROGRESS DCA - sanderlei.com.brsanderlei.com.br/PDF/Totvs-Datasul/TOTVS-Datasul-Progress-0199.pdf · Flexível – Assegura portabilidade das aplicações em outras plataformas Aberto

Uma transação é uma interação do bloco mais

externo que contiver declarações que alterem

diretamente o banco de dados, ou a leitura de

registros com a opção EXCLUSIVE-LOCK.

Escopo de uma transação determina a

quantidade de trabalho que PROGRESS

desfaz em eventos de falha do sistema.

Transações

Page 173: PROGRESS DCA - sanderlei.com.brsanderlei.com.br/PDF/Totvs-Datasul/TOTVS-Datasul-Progress-0199.pdf · Flexível – Assegura portabilidade das aplicações em outras plataformas Aberto

REPEAT:

CREATE customer.

UPDATE cust-num name phone.

END.

DO TRANSACTION:

REPEAT:

CREATE customer.

UPDATE cust-num name phone.

END.

END.

Transações

Page 174: PROGRESS DCA - sanderlei.com.brsanderlei.com.br/PDF/Totvs-Datasul/TOTVS-Datasul-Progress-0199.pdf · Flexível – Assegura portabilidade das aplicações em outras plataformas Aberto

Bloqueio de

Registro

Page 175: PROGRESS DCA - sanderlei.com.brsanderlei.com.br/PDF/Totvs-Datasul/TOTVS-Datasul-Progress-0199.pdf · Flexível – Assegura portabilidade das aplicações em outras plataformas Aberto

NO-LOCK – Somente leitura não bloqueia o registro.

SHARE-LOCK (não aconselhavel) – O registro fica

livre até que haja uma interação na tabela, neste caso

o progress passa o registro para bloqueado. Caso

não seja informado o tipo de Lock o progress assume

share-lock.

EXCLUSIVE-LOCK – Bloqueia o registro com o

usuário corrente.

Bloqueio de Registros

Page 176: PROGRESS DCA - sanderlei.com.brsanderlei.com.br/PDF/Totvs-Datasul/TOTVS-Datasul-Progress-0199.pdf · Flexível – Assegura portabilidade das aplicações em outras plataformas Aberto

Exemplo

• Base• Registro

• no-lock

• no-lock

• exclusive-lock

• exclusive-lock

• X

Page 177: PROGRESS DCA - sanderlei.com.brsanderlei.com.br/PDF/Totvs-Datasul/TOTVS-Datasul-Progress-0199.pdf · Flexível – Assegura portabilidade das aplicações em outras plataformas Aberto

Dois usuários tentam alterar o mesmo registro, um

bloqueia o outro. Isto ocorre pois eles acessam a

mesma tabela com SHARED-LOCK.

Ambos querem atualizar a tabela e estão

esperando que o Progress atualize o registro para

EXCLUSIVE-LOCK.O Progress não vai ceder o

EXCLUSIVE-LOCK para nenhum usuário, pois

existe outro com o registro em SHARED-LOCK.

É necessário que um deles cancele a alteração.

Dead-lock

Page 178: PROGRESS DCA - sanderlei.com.brsanderlei.com.br/PDF/Totvs-Datasul/TOTVS-Datasul-Progress-0199.pdf · Flexível – Assegura portabilidade das aplicações em outras plataformas Aberto

Laboratório 14

Page 179: PROGRESS DCA - sanderlei.com.brsanderlei.com.br/PDF/Totvs-Datasul/TOTVS-Datasul-Progress-0199.pdf · Flexível – Assegura portabilidade das aplicações em outras plataformas Aberto

Funções

Page 180: PROGRESS DCA - sanderlei.com.brsanderlei.com.br/PDF/Totvs-Datasul/TOTVS-Datasul-Progress-0199.pdf · Flexível – Assegura portabilidade das aplicações em outras plataformas Aberto

Funções

CAN-FIND: retorna verdadeiro se um registro

foi encontrado.

Ex.: IF CAN-FIND(customer

WHERE customer.cust-num =

i-cust-num) THEN ...

Page 181: PROGRESS DCA - sanderlei.com.brsanderlei.com.br/PDF/Totvs-Datasul/TOTVS-Datasul-Progress-0199.pdf · Flexível – Assegura portabilidade das aplicações em outras plataformas Aberto

LOOKUP: retorna um valor inteiro indicando a posição da string dentro de uma lista. Separador default: “,”.LOOKUP(string,lista,[separador]).Ex.: LOOKUP(“sc”,”am,pr,sc”)

ENTRY: retorna uma string caracter

baseada em uma lista, a partir de uma

posição inteira. Separador default: “,”.

ENTRY(posição,lista,[separador]).

Ex.: ENTRY(2,c-lista,“/”).

Funções

Page 182: PROGRESS DCA - sanderlei.com.brsanderlei.com.br/PDF/Totvs-Datasul/TOTVS-Datasul-Progress-0199.pdf · Flexível – Assegura portabilidade das aplicações em outras plataformas Aberto

NUM-ENTRIES: retorna o número de itens

de uma lista. Separador default: “,”.

NUM-ENTRIES(lista,[separador])

Ex.: NUM-ENTRIES(c-lista,“.”).

SUBSTRING: extrai uma porção de

caracteres de uma string.

SUBSTR(string,posição-inicial,posição-final)

Ex.: SUBSTR(c-nome,2,10).

SUBSTR(c-address,10).

Funções

Page 183: PROGRESS DCA - sanderlei.com.brsanderlei.com.br/PDF/Totvs-Datasul/TOTVS-Datasul-Progress-0199.pdf · Flexível – Assegura portabilidade das aplicações em outras plataformas Aberto

• STRING: converte dados não caracter para o tipo de dado caracter.

• STRING(source,[format]).

• Ex.: STRING (customer.cust-num).

• STRING (customer.postal-code,”99999”).

• LENGTH: retorna o tamanho de uma string.

• Ex.: ASSIGN i-tam = LENGTH(v_cod_estab).

Funções

Page 184: PROGRESS DCA - sanderlei.com.brsanderlei.com.br/PDF/Totvs-Datasul/TOTVS-Datasul-Progress-0199.pdf · Flexível – Assegura portabilidade das aplicações em outras plataformas Aberto

• SUBSTITUTE: troca parâmetros dentro de uma string.

• SUBSTITUTE(string, param1, param2, ..., paramN).

• Ex.: v-desc = SUBSTITUTE(“o usuário &1 não foi encontrado”, c-user).

• TRIM: retira os espaços em branco do início e do final da string.

• Ex.: ASSIGN c-user = TRIM(“ teste “).

Funções

Page 185: PROGRESS DCA - sanderlei.com.brsanderlei.com.br/PDF/Totvs-Datasul/TOTVS-Datasul-Progress-0199.pdf · Flexível – Assegura portabilidade das aplicações em outras plataformas Aberto

• REPLACE: troca N ocorrências da string1 pela string2 dentro de um texto.

• REPLACE(texto, string1, string2).• Ex.: v-desc = “o usuário não foi encontrado”.• v-desc = REPLACE(v-desc, “o”, “ó”).

• INDEX: retorna um inteiro, indicando a posição de uma expressão dentro de uma string.

• INDEX(string,expressão,posição-inicial p/procura).

• Ex.: INDEX(“curso de progress”, “de”).

• INDEX(“curso de progress”, “pr”, 10).

Funções

Page 186: PROGRESS DCA - sanderlei.com.brsanderlei.com.br/PDF/Totvs-Datasul/TOTVS-Datasul-Progress-0199.pdf · Flexível – Assegura portabilidade das aplicações em outras plataformas Aberto

RECID: endereço físico de um registro.

Ex.: FIND customer

WHERE RECID(customer) = 3848 NO-ERROR.

ROWID: endereço físico de um registro.

Ex.:

ASSIGN r-reg = ROWID(customer).

FIND customer

WHERE ROWID(customer) = r-reg

EXCLUSIVE-LOCK NO-ERROR.

Funções

Page 187: PROGRESS DCA - sanderlei.com.brsanderlei.com.br/PDF/Totvs-Datasul/TOTVS-Datasul-Progress-0199.pdf · Flexível – Assegura portabilidade das aplicações em outras plataformas Aberto