Você está na página 1de 59

INTRODUÇÃO A PROGRAMAÇÃO PROGRESS _

INTRODUÇÃO A SISTEMAS DE BANCO DE DADOS

CONCEITOS RELATIVOS A BANCO DE DADOS

 TIPOS DE BANCO DE DADOS


Banco de Dados é um conjunto de arquivos lógicos sob um arquivo físico. Os bancos de
dados mais comuns são: Banco de dados relacional, banco de dados orientados a objetos,
banco de dados distribuídos e banco de dados mistos, ou seja, banco de dados relacional
com características voltadas para Orientação a Objeto, por exemplo.

 SISTEMA GERENCIADOR DE BANCO DE DADOS


Sistema que mantém integrada uma coleção de arquivos, organizados de modo a evitar
redundância de informações e permitir acesso rápido para um ou mais usuários, é
denominado Sistema Gerenciador de Banco de Dados ou SGBD.
O SGBD mais comum é o Sistema Gerenciador de Banco de Dados Relacional (SGBDR).
Este é um conjunto de tabelas de dados selecionados conforme o interesse de uma
organização, com uma inter-relação coerente entre essas tabelas.

 DICIONÁRIO DE DADOS
O esquema de um banco de dados, ou seja, todos os domínios de dados, as relações entre
dados, descrição dos dados é chamado de Dicionário de Dados.
Cada banco de dados tem sua estrutura, portanto cada banco tem seu dicionário.
Tabelas: Conforme visto anteriormente, em um banco de dados relacional não há
dependência de arquivos. Portanto, um grupo de dados distinto deve sempre estar
relacionado a outro(s) grupo(s) de dados. Devido a existência desse ponto em comum,
como dois eixos que se cruzam, damos a esses grupos de dados o nome de tabela.
Relação(Tuplas): Da mesma forma que as tabelas, os conteúdos do grupo de dados se
vistos como colunas que tendem a cruzar com linhas de outra(s) tabela(s), a essa linha, ou
conjunto dessas, damos o nome de relação(tuplas).
Índices: Aos endereço das relações dentro de uma tabela, damos o nome de índices. Os
índices são formado por chaves(dado(s) que identifica (m) a relação) que nos permitem
localizar rapidamente dados ou informações desejadas. Os índices são classificados por
prioridades, sendo o principal deles o "índice primário".

Segundo C.J.Date, um SGBDR, deve suportar as seguintes regras:


01) Regra Zero: deve suportar inclusão, atualização e eliminação no banco de dados em
nível relacional (registro simultâneos). A relação(tabela) pode ter tanto zero linha quanto
uma linha e ainda ser uma relação válida.
02) Regra da Informação: Toda informação em um banco de dados relacional é
apresentada explicitamente em nível lógico e exatamente de uma maneira - por valores em
tabelas.
03) Regra de Acesso Garantido: Todo e cada dado (valor atômico) em banco de dados
relacional tem a garantia de ser logicamente acessível recorrendo-se a uma combinação de
nome da tabela, valor da chave primária e nome da coluna(campo). O conceito de chave
primária é parte essencial da regra.
04) Tratamento sistemático de valores zeros: os valores zeros (diferente da série de
caracteres em branco e de números diferentes de zero) são suportados em um SGBD
completamente relacional para representar a informação zero, isto é, a informação
inaplicável de modo sistemático(nulo), independente do tipo de dados.

_______________________________________________________________________________________________________________________________
INTRODUÇÃO A BANCO DE DADOS, ADM.E DESENV.PROGRESS CHAR, PRODUTOS DATASUL E PADRÃO DESENVOLVIMENTO 1
Autor: Célio de Oliveira - celio.oliveira@brfree.com.br – Material não homologado – STI Consultoria e Serviços Ltda
INTRODUÇÃO A PROGRAMAÇÃO PROGRESS _
A representação de valores nulos não deve depender de caracteres especiais, e sim deve
ser conceituada como ausência de informação. Para suportar a integridade do BD, deve ser
possível especificar que não são permitidos zeros em cada coluna da chave primária e em
quaisquer outras colunas que o administrador do banco de dados considere apropriada uma
restrição à integridade, colunas de chaves externas por exemplo. Técnicas anteriores
estabeleciam a definição de um valor especial para representar informações nulas.
05) Catálogo em Linha Baseado no Modelo Relacional: a descrição do BD é representada
em nível lógico de uma maneira que os usuários autorizados possam aplicar, para sua
interrogação, a mesma linguagem relacional que aplicam para os dados regulares.
06) Sub-linguagem Detalhada de Dados: Um sistema relacional pode suportar várias
linguagens e modalidades de uso terminal(de uso em BD), a modalidade de preencher os
espaços em brancos, por exemplo. Deve possuir pelo menos uma linguagem detalhada o
bastante para suportar uma definição de dados, definição de visão, manipulação de dados
interativa e por programas, restrições à integridade, autorização e limites de
transação(limitar, efetivar e desfazer).
07) Regra de Atualização de visão: Todas as visões que são teoricamente atualizáveis,
também o são pelo sistema. Observe-se que uma visão é atualizável teoricamente se existir
um algoritmo independente do tempo para determinar sem equívocos uma única série de
mudanças para as relações do banco, que terão como efeito precisamente as mudanças
exigidas na visão. A esse respeito, atualizar significa não somente a modificação na
informação já existente, mas também a inclusão de novos dados ou a exclusão de dados.
08) Inserção, Atualização e Eliminação de Alto Nível: A capacidade de tratar uma relação
básica ou uma relação derivada, como um único comando aplica-se não só à recuperação
de dados mas também à inclusão, atualização e eliminação de dados.
09) Independência de Dados Físicos: Os programas de aplicação e atividades terminais
permanecem logicamente inalterados sempre que quaisquer mudanças sejam feitas, quer
nas representações de memória, quer nos métodos de acesso. Para conseguir isso, o
SGBD deve suportar um limite claro e preciso entre os aspectos lógicos e semânticos, de
um lado, e os aspectos físicos e de desempenho das tabelas básicas de outro. Os
programas de aplicação devem lidar apenas com os dados lógicos.
10) Independência de Dados Lógicos: Os programas de aplicação e atividades terminais
permanecem logicamente inalterados quando são feitas mudanças de qualquer tipo nas
tabelas básicas para preservação da informação, que permitem teoricamente manter os
dados inalterados nos aplicativos, pois a definição fica no BD.
11) Independência de Integridade: As restrições de integridade específicas de um
determinado BD relacional devem ser definidas na sub-linguagem de dados relacional e
armazenáveis no dicionário de dados, não nos programas de aplicação. Além das duas
regras de integridade (integridade referencial: não é permitido a qualquer componente de
uma chave primária possuir um valor zero. Integridade de entidade: deve haver, para cada
valor de chave externa diferente de zero e distinto, um valor equivalente de chave primária
derivado do mesmo valor.) que se aplicam a todo banco de dados relacional, há a
necessidade evidente de que o BD seja capaz de especificar restrições adicionais de
integridade.
12) Um SGBDR possui independência de distribuição. Isto significa que o SGBD tem um
sub-linguagem de dados que permite aos programas de aplicação e atividades terminais
permanecerem inalterados logicamente.
13) Regra de Não-Subversão: Se um sistema relacional possui uma linguagem de nível
baixo (um único registro de cada vez), esse nível baixo não pode ser usado para subverter
ou ignorar as regras de integridade e as restrições expressas na linguagem relacional de
nível superior (registros múltiplos simultâneos).

_______________________________________________________________________________________________________________________________
INTRODUÇÃO A BANCO DE DADOS, ADM.E DESENV.PROGRESS CHAR, PRODUTOS DATASUL E PADRÃO DESENVOLVIMENTO 2
Autor: Célio de Oliveira - celio.oliveira@brfree.com.br – Material não homologado – STI Consultoria e Serviços Ltda
INTRODUÇÃO A PROGRAMAÇÃO PROGRESS _
O dicionário de dados do Progress permite a criação, alteração, exclusão de banco de
dados e seus componentes, ou seja:
 Tabelas (coleção de registros organizados em linhas e colunas).
 Campos (componentes dos registros que formam suas colunas e contém os dados).
 Índices (campos ou grupos de campos que ordenam e identificam registros nas
tabelas).
 Sequências (objeto da base de dados que fornecem valores inteiros incrementais a
uma aplicação).
 Triggers de base de dados (procedure que é executada toda vez que um evento
ocorre na base de dados. Ex. criação de um registro.).

 RELACIONAMENTO
Relacionamento: Em um BD relacional, existe elos entre tabelas, caracterizados quase
sempre por ligações entre domínios iguais (dados ou informações baseados no mesmo
conjunto de valores).

 INTEGRIDADE
Integridade é o controle de precisão, validade e até correção em BD. Ou seja, a integridade
visa assegurar que os dados no BD sejam precisos, com a finalidade de proteger o BD
contra atualizações inválidas.
Segundo C.J.DATE, as regras de integridade podem ser resumidas em duas grandes
regras:
1) As regras de domínio preocupam-se em admitir ou não um determinado valor como valor
candidato a um certo atributo, considerado isoladamente - isto é, independente de seu
relacionamento com outros valores no banco de dados.
2) As regras de relação preocupam-se, por exemplo, em admitir ou não uma certa
informação como candidata à inserção em uma dada relação, e também com o
relacionamento entre relações.
Em resumo, as regras de integridade são: a) nenhum componente de um valor de chave
primária pode ser nulo; b) todo o valor de chave estrangeira não-nula terá de se enquadrar
em algum valor de chave primária existente em algum lugar.

 NORMALIZAÇÃO
Normalização é uma técnica que visa criar e relacionar entidades em formas de tabelas
conservando suas características originais.
A finalidade da normalização visa substituir dados por relações, com isso simplificar as
tabelas, organizá-las mais racionalmente e evitar a todo custo a redundância de dados.
A normalização comum é feita em três etapas, porém alguns autores a descrevem em 5
etapas e há aqueles que acrescentam a "Forma Normal de Boyce/Codd" que implementa a
3ª forma normal, vejamos:
1FN: Uma relação está na primeira forma normal quando todos os atributos da relação
estão baseados em um domínio(conjuntos de valores de um atributo) simples, ou seja, não
contém grupos de valores e sim valores atômicos ou valores repetitivos(chaves primárias).
Em outras palavras, a 1FN trata de registros onde todas as ocorrências de um tipo de
registro(cliente por exemplo) têm de conter o mesmo tamanho físico, ou seja, sem grupos
de dados.
2FN: Uma relação está na 2FN se estiver na primeira e se todos os seus domínios que não
são chaves forem completamente dependentes funcionalmente da chave primária. Em
outras palavras, todos os atributos não-chave necessitam da chave primária completa para
sua identificação. Veja bem, chave primária completa, não pode ser parte desta.

_______________________________________________________________________________________________________________________________
INTRODUÇÃO A BANCO DE DADOS, ADM.E DESENV.PROGRESS CHAR, PRODUTOS DATASUL E PADRÃO DESENVOLVIMENTO 3
Autor: Célio de Oliveira - celio.oliveira@brfree.com.br – Material não homologado – STI Consultoria e Serviços Ltda
INTRODUÇÃO A PROGRAMAÇÃO PROGRESS _
3FN: Uma relação está na 3FN, se estiver na 1ª e na 2ª e, não houver em si dependência
funcional transitiva(quando um atributo não chave pode ser determinado por outro atributo
também não chave) entre os seus atributos.
Obs. Em resumo, a 2FN e a 3FN especifica que cada campo deve ser parte de chaves ou
fornecer um fato único a respeito da chave primária completa e nada mais.

Na prática pegamos o Diagrama de Entidade Relacionamentos(DER) e desmembramos


cada relação em uma mais relação sem dados repetidos. Criamos chaves primárias simples
ou composta de forma a identificar exclusivamente cada relação ou itens atômicos.
Fazemos de forma que cada atributo das entidades depende funcionalmente da chave
primária completa e eliminamos as dependências entre atributos.

Boyce/Codd especificam que uma relação está na forma normal se cada determinante for
uma chave candidata. Ou seja:
_ Todo atributo não-principal deve ser completamente dependente de cada chave.
_ Todo o atributo principal deve ser completamente dependente de todas as chaves das
quais não faça parte.
_ Nenhum atributo pode ser completamente dependente de algum conjunto de atributos que
não sejam chaves.

4FN: Uma relação R está na 4FN se existir uma dependência multivalorizada a respeito de
um atributo. ex. Habilidade (cozinheiro, motorista).
5FN: A 5FN trata de casos omissos na 2ª e 3ª Forma Normal, reconstuindo informações
redundantes em partes.

 SQL
SQL: Structured Query Language é uma linguagem de consulta estruturada padrão para BD
relacionais. Essa linguagem suporta transações de processamento de consultas, segurança
de administração de dados, integridade e recuperação em caso de perda dos dados.
A SQL não é procedural e é orientada para conjuntos de informações em sua natureza; isto
é, permite aos usuários especificar o que deve ser feito e processa dados como conjuntos
de elementos em lugar de uma registro por vez, como ocorre com linguagens procedural.
A SQL nasceu devido a necessidade de executar operações relacionais como diferença,
interseção, junção, união e outras em BD diferentes. O SQL é hoje uma linguagem
potencial, pois embora todos utilizem na base o padrão ANSI, diversos desenvolvedores de
BD criaram seu próprio SQL. Atualmente está legado ao desinteresse geral, assim como o
"Esperanto", aquela linguagem universal! Lembra-se?

 TRANSAÇÃO
A transação é uma unidade de trabalho. Ela consiste na execução de uma sequência de
operações especificadas pela aplicação, começando com uma operação especial BEGIN
TRANSACTION, e terminando ou com um operação COMMIT (término bem sucedido) ou
com um operação ROLLBACK (término mal sucedido).

 TRIGGER
Técnicamente um trigger é um pedaço do código executável que o SGBD processa durante
uma aplicação qualquer.
Vamos simplificar: Triggers são trechos de programação que podem ser embutidos no
dicionário de dados, pelo Administrador de Dados, com a finalidade de gerar alguma
validação, help, etc.

_______________________________________________________________________________________________________________________________
INTRODUÇÃO A BANCO DE DADOS, ADM.E DESENV.PROGRESS CHAR, PRODUTOS DATASUL E PADRÃO DESENVOLVIMENTO 4
Autor: Célio de Oliveira - celio.oliveira@brfree.com.br – Material não homologado – STI Consultoria e Serviços Ltda
INTRODUÇÃO A PROGRAMAÇÃO PROGRESS _
Os triggers em alguns casos também são chamados de "árbitros" ou "executor de
segurança".
Existem dois tipos de triggers:
 Triggers da base de dados: Os triggers de banco de dados, sub-dividem em dois:
 Trigger de Schema: É o trigger armazenado no dicionário de dados, ou seja, na
base de dados e é executado toda vez que a base é atualizada.
 Trigger de Sessão: É o trigger executado através de uma procedure.
 Trigger de interface com o usuário: É o trigger que é executado após a ação do
usuário na interface (evento). Por exemplo, um clique no mouse apontado para um
objeto qualquer.

>>>>>> // <<<<<<

_______________________________________________________________________________________________________________________________
INTRODUÇÃO A BANCO DE DADOS, ADM.E DESENV.PROGRESS CHAR, PRODUTOS DATASUL E PADRÃO DESENVOLVIMENTO 5
Autor: Célio de Oliveira - celio.oliveira@brfree.com.br – Material não homologado – STI Consultoria e Serviços Ltda
INTRODUÇÃO A PROGRAMAÇÃO PROGRESS _

INTRODUÇÃO AO PROGRESS
O Sistema Gerenciador de Banco de Dados e Linguagem Progress, originalmente desenvolvido
para Unix, foi lançado com em 1984, pela Progress Software Corporation, uma empresa
americana com sede em BedFord, Massachusetts. Um grande diferencial do Progress é sua
portabilidade, ou seja, possui versões para diversas plataformas.
Toda instalação do Progress, fica registrada no arquivo progress.cfg, do diretório \dlc. Após
uma instalação completa do Progress, em um ambiente Windows, encontramos no diretório
\windows\Menu Iniciar\programas\progress a lista de arquivos Progress instalados:

COMPONENTES DO BANCO DE DADOS PROGRESS


O Progress possui um grande número de arquivos e/ou utilitários, em muitos casos
desenvolvidos na própria linguagem Progress, que permite a melhor utilização do produto.
Abaixo relacionamos a maior parte desses arquivos e respectivas descrições. Destacamos
ainda o principal arquivo de cada aplicativo, com a finalidade de mostrar adiante como
configurar o acesso ao mesmo através do sistema EMS.
_______________________________________________________________________________________________________________________________
INTRODUÇÃO A BANCO DE DADOS, ADM.E DESENV.PROGRESS CHAR, PRODUTOS DATASUL E PADRÃO DESENVOLVIMENTO 6
Autor: Célio de Oliveira - celio.oliveira@brfree.com.br – Material não homologado – STI Consultoria e Serviços Ltda
INTRODUÇÃO A PROGRAMAÇÃO PROGRESS _
Obs. Os arquivos que possuem um destaque (*), são os que serão tratados com mais detalhes
no decorrer deste treinamento.

 DESKTOP
O desktop é um aplicativo do Progress que tem por finalidade concentrar e disponibilizar os
principais aplicativos do Progress, como Data Dictionary, Procedure Editor, AppBuilder,
Results, Report Builder e Application Debugger. O arquivo principal deste aplicativo é
_desk.p. (*)

 INTERFACE BUILDER
O Interface Builder, também conhecido como UIB (User Interface Builder), originalmente
possuia a finalidade de permitir a criação rápida de interface gráfica. Hoje, com o advento
dos objetos pré-programados (templates) teve seu nome mudado para AppBuilder.
Este aplicativo é totalmente voltado para o desenvolvimento de programação gráfica,
naturalmente voltada aos objetos e seus eventos. O principal arquivo é _uib.p (este
aplicativo será visto separadamente na próxima fase do treinamento).

 RESULTS
Este aplicativo tem como alvo principal os usuários que possuem um pouco de
conhecimento em programação, possibilitando os mesmos a realizar pesquisas, filtros e
extração de dados em suas bases de dados.

 REPORTER BUILDER
Aplicativo cuja finalidade é gerar relatórios e gráficos, quando rodando sobre plataforma
windows.

 APLLICATION DEBUGGER
Uma ferramenta cuja a finalidade é localizar e identificar erros no código Progress.

 APPLICATION COMPILLER
Possibilita a compilação de um programa, programas de um diretório ou uma árvore de
diretórios, por nomes e/ou extensões. Principal arquivo é _comp.p. (*)

 DATA DICTIONARY
Permite a criação e manutenção de dicionários de dados Progress. O principal arquivo é
_dict.p. (*)

 DATA ADMINISTRATION
Tem por finalidade possibilitar a configuração e administração de dados. Seu principal
arquivo é _admin.p. (*)

 PROCEDURE EDITOR
Editor de códigos fontes, de onde podemos executar programas, compilar, etc. Enfim
qualquer operação relativa ao código fonte. O principal arquivo deste aplicativo é _edit.p. (*)

>>>>>> // <<<<<<

_______________________________________________________________________________________________________________________________
INTRODUÇÃO A BANCO DE DADOS, ADM.E DESENV.PROGRESS CHAR, PRODUTOS DATASUL E PADRÃO DESENVOLVIMENTO 7
Autor: Célio de Oliveira - celio.oliveira@brfree.com.br – Material não homologado – STI Consultoria e Serviços Ltda
INTRODUÇÃO A PROGRAMAÇÃO PROGRESS _

MANUTENÇÃO DE BASE DE DADOS PROGRESS


 MANUTENÇÃO EM BANCO DE DADOS (dlc\bin\prodb.exe cadastro)

Na versão Progress for Unix:


prodb [nome do banco] [parâmetro]
O prodb (\dlc\bin\prodb.exe cadastro) cria um banco de dados, onde parâmetro pode ser:
empty (banco vazio) ou nome de um banco já existente de onde serão copiado as
definições. Uma outra opção e acessar o Data Dictionary.

proserve nome-do-banco
Abre um banco Progress. A abertura significa preparar o BD para uso(cria o .lk, ativa o .bi).

pro/mpro [nome-do-banco] [parâmetro]


Acessa um banco no modo mono-usuário(pro) ou multi-usuário(mpro). Sem o nome do
banco abre uma sessão Progress com as opções disponíveis no dicionário. Os parâmetros
mais comuns são:
-d [dmy] define o formato da data.
-E substitui vírgula por ponto decimais e vice-versa.
-p nome- procedimento inicia a sessão executando o procedimento especificado.
-e n altera o tamanho do buffer.
Obs. Veja relação de parâmetros na sessão de inicialização – arquivo .pf.

proshut nome-do-banco
Fecha um banco de dados Progress.

Na versão Progress for Windows:


[Desktop] Data Dictionary, onde aparecerá a seguinte caixa de diálogo:

Ao selecionar a opção CREATE A NEW DATABASE, a seguinte caixa de diólogo aparece:

_______________________________________________________________________________________________________________________________
INTRODUÇÃO A BANCO DE DADOS, ADM.E DESENV.PROGRESS CHAR, PRODUTOS DATASUL E PADRÃO DESENVOLVIMENTO 8
Autor: Célio de Oliveira - celio.oliveira@brfree.com.br – Material não homologado – STI Consultoria e Serviços Ltda
INTRODUÇÃO A PROGRAMAÇÃO PROGRESS _

Os elementos de interface com o usuário, contidos nesta caixa de diálogo são:


 New Physical Database Name: Pede para informar o nome atual do banco de dados a ser
criado, assim como seu caminho no disco.
 Start With: Especifica a forma de criação deste novo banco de dados:
 Na EMPTY Database: criar um banco de dados vazio.
 A Copy of the SPORTS Database: Criar uma cópia do banco de dados modelo da
Progress.
 A Copy of Some Other Database: Criar uma copia de outro banco de dados.
 Replace If Exists: Indica se o banco de dados que o usuário especificou existir deve ou não
substituído.
Os botões OK/Cancel/Help: Confirma a criação do banco de dados, cancela ou abre uma
consulta on-line aos manuais, respectivamente.

Na Opção Conncect to an Existing Databasecaminho/nome de um banco de dados existente:

Ao clicar em Browse, é possível selecionar o banco a conectar.

Após conectado um banco de dados a seguinte imagem aparece:

_______________________________________________________________________________________________________________________________
INTRODUÇÃO A BANCO DE DADOS, ADM.E DESENV.PROGRESS CHAR, PRODUTOS DATASUL E PADRÃO DESENVOLVIMENTO 9
Autor: Célio de Oliveira - celio.oliveira@brfree.com.br – Material não homologado – STI Consultoria e Serviços Ltda
INTRODUÇÃO A PROGRAMAÇÃO PROGRESS _

 TABELAS, REGISTROS/CAMPOS E ÍNDICES (dlc\bin\prowin32.exe –p _dict.p)

Manutenção de tabelas em um dicionário de dados


Neste ponto podemos definir toda a nossa base de dados. O nomes de tabelas podem
conter até 32 caracteres alfanuméricos e devem começar com uma letra. Na definição da
base de dados use nomes no singular, de forma que traduza claramente o seu significado.
ex. estoque, produto.
Para criar uma tabela: data dictionary/create/table. O esquema da tabela é definido pela
série de parâmetros que se segue. Dentro tais parâmetros os principais são:
Table Name: nome da tabela.
Label: nome da tabela para exibição como cabeçalho ou título.
Hidden: opção de ocultar a tabela no dicionário de dados.
File Type: tipo da tabela (padrão progress ou padrão de portabilidade para o Progress).
Frozen: opção de congelar qualquer alteração na definição da tabela.
Dump Name: nome atribuído ao arquivo para exportação dos dados da tabela.
Description: comentários a respeito da tabela (descrição).

Manutenção de registros/campos de tabelas em um dicionário de dados


Os atributos de uma tabela possui uma série de definições, vejamos as principais:
Field-Name: nome do atributo.
Data-Type: tipo do dado que o atributo suportará(caracter, inteiro, decimal, lógico, data e
número identificador de registros) .
Format: Máscara do dado no atributo.
Extent: Número de ocorrência do atributo (vetor).
Label: Título a ser exibido como default em telas.
Column-Label: Título default a ser exibido em saídas tipo relatórios.
Decimals: Quantidade de casas decimais para atributos tipo decimal.
_______________________________________________________________________________________________________________________________
INTRODUÇÃO A BANCO DE DADOS, ADM.E DESENV.PROGRESS CHAR, PRODUTOS DATASUL E PADRÃO DESENVOLVIMENTO 10
Autor: Célio de Oliveira - celio.oliveira@brfree.com.br – Material não homologado – STI Consultoria e Serviços Ltda
INTRODUÇÃO A PROGRAMAÇÃO PROGRESS _
Initial: Valor inicial (default) do atributo.
Mandatory: Se o preenchimento é obrigatório ou aceita valores nulos.
Case Sensitive: Diferenciação entre maiúsculo e minúsculo .
Help: Mensagem que será exibida ao usuário no momento da entrada de dados.
Description: Descrição/comentários a respeito do atributo com a finalidade de documentá-lo.
View-As: Informa qual elemento gráfico mostrará o atributo (combo-box, editor, fill-in, radio-
set, selection-list, toggle-box, text). Estes elementos serão trabalhados na parte
programação gráfica.

Indexação de tabelas
Os índices de uma tabela no dicionário de dados Progress são definidos por:
Index-Name: nome do índice.
Description: descrição resumida do índice.
Primary: Se o índice em questão é primário ou não.
Active: Se o índice está ativo ou não.
Unique: Se é uma chave única (obrigatório para o primário).
Abreviated: Se o índice aceita pesquisa parcial (parte da chave).
Index-Fields: Atributos que compõem o índice.
Word Index: Contém todas as palavras de um texto ou matriz e permite a pesquisa nos
registros por palavras ou sentenças.

 VALIDAÇÕES, SEQUÊNCIAS E TRIGGERS NA BASE DE DADOS

Validation
Expressão que deve ser verdadeira para permitir a exclusão de registros. Ex. Usuários com
permissão total. Pede mensagem a ser mostrada na negativa de exclusão de registros.

Sequências
Função encarregada de produzir uma série única de valores. Consiste em um valor inicial,
um incremento e um limite. A sequência pode ser associado ao um banco de dados,
transação, tabela, campo.

Triggers
Programas a serem executados automaticamente no momento que ocorrer um evento no
banco de dados, ou seja, quando ocorrer a Criação de um novo registros (create), quando
ocorrer um exclusão (delete), quando ocorrer um busca bem sucedida (find) e quando um
novo registro é escrito na base de dados (write).

 DATABASE REPORTS
O Progress disponibiliza uma série de relatórios a respeito do esquema do banco de
dados(tabela abaixo).

RELATÓRIO DESCRIÇÃO
Detailed Table Detalha tabela, campo, sequências, índices, validações
Quick Table Sumário das tabelas de um banco
Quick Field Sumário dos campos de uma ou mais tabelas de um banco

_______________________________________________________________________________________________________________________________
INTRODUÇÃO A BANCO DE DADOS, ADM.E DESENV.PROGRESS CHAR, PRODUTOS DATASUL E PADRÃO DESENVOLVIMENTO 11
Autor: Célio de Oliveira - celio.oliveira@brfree.com.br – Material não homologado – STI Consultoria e Serviços Ltda
INTRODUÇÃO A PROGRAMAÇÃO PROGRESS _
Quick Index Sumário dos índices de uma ou mais tabela de um banco
SQL View Mostra as visões do banco definidas no padrão SQL
Sequence Mostra as sequências definidas no banco
Trigger Mostra informações sobre todos os triggers do banco
User Mostra os usuários correntes do banco, identificadores, senhas.
Table Relations Mostras as relações de uma ou mais tabelas do banco

 PRINCIPAIS ARQUIVOS DE UM BANCO DE DADOS PROGRESS


.db – é o banco de dados propriamente dito, ou seja, o banco físico.
.dn – arquivo do banco de dados multi-volumes.
.bi – before-image do banco de dados.
.bn – before-image do banco de dados multi-volumes.
.ai – after-image do banco de dados.
.an – after-image do banco de dados multi-volumes.
.df – cópia do “skema” do banco de dados (definições do dicionário de dados).
.lg – log de eventos no banco.
.tl – log de transação.
.lbi - before-image de transações (local).
.lk – lock de abertura do banco de dados.
.d – arquivo dump (dados) da tabela.
.ped – procedure temporárias.
.dbi – definições de tabelas temporárias.
.trp – definições do dicionário de dados antes do commit.
.p – programa char
.w – programa gráfico
.i – programa include

>>>>>> // <<<<<<

_______________________________________________________________________________________________________________________________
INTRODUÇÃO A BANCO DE DADOS, ADM.E DESENV.PROGRESS CHAR, PRODUTOS DATASUL E PADRÃO DESENVOLVIMENTO 12
Autor: Célio de Oliveira - celio.oliveira@brfree.com.br – Material não homologado – STI Consultoria e Serviços Ltda
INTRODUÇÃO A PROGRAMAÇÃO PROGRESS _

Faça o laboratório número 01 do anexo.

CARACTERÍSTICAS DA LINGUAGEM PROGRESS


O ambiente de desenvolvimento Progress é composto de formatador de telas interno, run time,
SQL, dicionário de dados ativo (não requer DML), compilador, SGBDR, editor de textos e uma
linguagem de 4ªGL. Conforme já vimos, possui também ferramentas aplicativas de
desenvolvimento. É lógico que alguns deste não são exclusivos deste ambiente.

O editor de texto do Progress, o chamado Procedure Editor, possui as principais características


de um editor de texto comum.
Devido a simplicidade operacional deste editor e objetivo deste material, focalizar-se-á de
agora em diante, de forma prioritária, na linguagem de desenvolvimento caracter. No entanto,

_______________________________________________________________________________________________________________________________
INTRODUÇÃO A BANCO DE DADOS, ADM.E DESENV.PROGRESS CHAR, PRODUTOS DATASUL E PADRÃO DESENVOLVIMENTO 13
Autor: Célio de Oliveira - celio.oliveira@brfree.com.br – Material não homologado – STI Consultoria e Serviços Ltda
INTRODUÇÃO A PROGRAMAÇÃO PROGRESS _
um resumo das possibilidades oferecidas pelo Procedure Editor encontra-se abaixo, sendo que
parte (essencial) do mesmo será vista na sessão Ferramentas Essenciais.

O ícone referente ao Procedure Editor, dentre outras opções configuráveis, encontra-se no


desktop.

As principais possibilidades de operação no Procedure Editor são:


- File (New, Open, Close, New Procedure Window, Save, Save As, Print);
- Edit (Undo, Cut, Copy, Paste, Insert File, Insert Field);
- Search (Find, Find Next, Nind Previous, Replace, Goto Line);
- Buffer (list, previous, next buffer, font, information);
- Compile (Run, Check Syntax, Debug, Compiler Messagers);
- Tools (Data Dictionary, Data Administration, Pro*tools, Appbuilder, Web Tool, Report
Builder, Results, Application Compiler);
- Options (Preferences, Editing Options, Menu Accelerators, Default Font);
- Help (Help Topics, Messages, Recents Messages, About Procedure Editor).

Sobre a linguagem Progress abertura para aplicação de lógicas, gerenciamento de banco de


dados e gerenciamento de interface com o usuário. Uma aplicação Progress caracteriza-se por:

# Procedures
Um ou mais código dividido em sentenças ou blocos de sentenças.

# Blocos
Grupos de sentenças que possuem interação entre suas sentenças, com outros blocos, com
dados e suas propriedades e também com os usuários.

# Statements(sentenças)
Declara o processamento a ser realizado. É finalizada com um ponto final (.).

# Expressões
Constantes, nomes de campos, nomes de variáveis, etc.

# Funções
Realiza uma ação específica com dados pré-definidos.

# Variáveis
Endereços de memória que possuem valores sujeitos a alterações.

# Eventos
_______________________________________________________________________________________________________________________________
INTRODUÇÃO A BANCO DE DADOS, ADM.E DESENV.PROGRESS CHAR, PRODUTOS DATASUL E PADRÃO DESENVOLVIMENTO 14
Autor: Célio de Oliveira - celio.oliveira@brfree.com.br – Material não homologado – STI Consultoria e Serviços Ltda
INTRODUÇÃO A PROGRAMAÇÃO PROGRESS _
Ação do usuário na interface com o mesmo ou ocorrência na base de dados.

# Operadores e Símbolos
Permite manipulação de valores e situações especiais respectivamente (tabela abaixo).

# Elementos de Interface Gráfica


Objetos que representam dados e/ou conjuntos destes.

 PRINCIPAIS OPERADORES E SÍMBOLOS ESPECIAIS

PRINCIPAIS OPERADORES E SÍMBOLOS ESPECIAIS


MATEMÁTICOS (numéricos)
+ - * / []
LÓGICOS
Yes No True false eq = lt < le <= gt > ge = ne <>
Not And Or
CHARACTER (concatenação)
+ “” ´´
DATAS
+ -
CHARACTERES ESPECIAIS E METACARACTERES
: finaliza , separa
. finaliza o
abertura ? valor nulo cadeia de /**/ comentário
parágrafo
de blocos comandos

 PROGRAMAÇÃO ORIENTADA A EVENTOS E ORIENTADA A APLICAÇÃO

Entre as linguagens de manipulação de banco de dados, os modelos de desenvolvimento


mais comum são:
O modelo orientado a objetos e o modelo orientado a aplicação. A linguagem de
desenvolvimento Progress trabalha com os dois modelos. O controle da ordem de execução
fica a cargo do operador.
_Uma aplicação desenvolvida no modelo de programação orientado a objetos possui para
cada objeto um certo número de triggers que procura responder a cada evento ocorrido
naquele objeto.
_Uma aplicação desenvolvida no modelo de programação orientado a aplicação, é
desenvolvida no modelo procedural, onde cada sentença é executada na ordem de cima
para baixo. A aplicação dita o controle do processamento.

>>>>>> // <<<<<<

_______________________________________________________________________________________________________________________________
INTRODUÇÃO A BANCO DE DADOS, ADM.E DESENV.PROGRESS CHAR, PRODUTOS DATASUL E PADRÃO DESENVOLVIMENTO 15
Autor: Célio de Oliveira - celio.oliveira@brfree.com.br – Material não homologado – STI Consultoria e Serviços Ltda
INTRODUÇÃO A PROGRAMAÇÃO PROGRESS _

INTRODUÇÃO AO DESENVOLVIMENTO PROGRESS CHAR

COMANDOS DE MANIPULAÇÃO DE DADOS


 ASSIGN
Move os dados imputados no buffer de tela para os mesmos dados no buffer de registro.
Sintaxe: ASSIGN {[tabela] ou [lista-campos = lista-inputs]} [instruções].

 CREATE
Cria um registro para uma tabela, valoriza os campos com os valores default e Initial. Move
uma cópia do registro para o buffer de registro.
Sintaxe: CREATE tabela.

 DELETE
Remove o registro corrente do buffer de registro e do banco de dados.
Sintaxe: DELETE tabela.

 DISPLAY
Move dados para o buffer de tela e mostra na tela ou em outra saída especificada.
Sintaxe: {[tabela] ou [lista-campos = lista-inputs]} [instruções].

 EXCEPT
Instrui um outro comando (DISPLAY/ASSIGN) quanto a uma lista de campos excessões.
Sintaxe: EXCEPT lista-campos.

 INSERT
Cria um registro no banco físico, edita este registro e atualiza os valores imputados.
Sintaxe: INSERT tabela [instruções].

 PROMPT-FOR
Requisita uma entrada de dados no buffer de tela.
Sintaxe: PROMPT-FOR lista-dados [instruções].

 RELEASE
Move o registro do buffer para o banco se houve mudança no registro.
Sintaxe: RELEASE tabela.

 UPDATE
Mostra o valor atual de um campo ou variável e solicita nova entrada de dados.
Sintaxe: UPDATE campo/variável [instruções].

 INPUT
Permite o acesso a valores de um campo no buffer de tela.
Sintaxe: INPUT [FRAME nometela] campo.
_______________________________________________________________________________________________________________________________
INTRODUÇÃO A BANCO DE DADOS, ADM.E DESENV.PROGRESS CHAR, PRODUTOS DATASUL E PADRÃO DESENVOLVIMENTO 16
Autor: Célio de Oliveira - celio.oliveira@brfree.com.br – Material não homologado – STI Consultoria e Serviços Ltda
INTRODUÇÃO A PROGRAMAÇÃO PROGRESS _

RESUMO DO POSICIONAMENTO DOS DADOS


BANCO DE BUFFER BUFFER
COMANDOS USUÁRIO
DADOS REGISTRO TELA
ASSIGN  
CREATE  
DELETE  
DISPLAY  
FIND  
FOR EACH  
 
INSERT  
 
PROMPT-FOR  
RELEASE  
SET   
 
UPDATE 
 

Resumo dos comandos de manipulação de dados


INSERT
UPDATE
SET
DELETE CREATE DISPLAY PROMPT-FOR ASSIGN FIND FOR EACH

/* programas exemplos – exclusivo para fins didáticos (sem finalidade prática) */


/* exemplo 01 */
INSERT tabela.

/* exemplo 02 */
CREATE tabela.
SET tabela.

/* exemplo 03 */
CREATE tabela.
DISPLAY tabela.

_______________________________________________________________________________________________________________________________
INTRODUÇÃO A BANCO DE DADOS, ADM.E DESENV.PROGRESS CHAR, PRODUTOS DATASUL E PADRÃO DESENVOLVIMENTO 17
Autor: Célio de Oliveira - celio.oliveira@brfree.com.br – Material não homologado – STI Consultoria e Serviços Ltda
INTRODUÇÃO A PROGRAMAÇÃO PROGRESS _
/* exemplo 04 */
CREATE tabela.
DISPLAY tabela.campo1 ... tabela.campoN.
DELETE tabela.
DISPLAY tabela. /* erro – registro não disponível */

/* exemplo 05 */
CREATE tabela.
DISPLAY tabela.
PAUSE 10.
UPDATE tabela EXCEPT campoN.
PAUSE 20.
CLEAR.
PAUSE 30.
DISPLAY tabela.
PAUSE 40.

/* exemplo 06 */
PROMPT-FOR tabela. /* mensagem de alerta */
CREATE tabela.
ASSIGN tabela.
PAUSE 10.
CLEAR.
PAUSE 20.
DISPLAY tabela.
PAUSE 30.

/* exemplo 07 */
PROMPT-FOR tabela. /* mensagem de alerta */
CREATE tabela.
ASSIGN tabela.campo 1 = INPUT tabela.campo1
...
tabela.campoN = INPUT tabela.campoN.
PAUSE 10.
CLEAR.
PAUSE 20.
DISPLAY tabela.
PAUSE 30.
CREATE tabela.

>>>>>> // <<<<<<

Faça o laboratório número 02 do anexo.

_______________________________________________________________________________________________________________________________
INTRODUÇÃO A BANCO DE DADOS, ADM.E DESENV.PROGRESS CHAR, PRODUTOS DATASUL E PADRÃO DESENVOLVIMENTO 18
Autor: Célio de Oliveira - celio.oliveira@brfree.com.br – Material não homologado – STI Consultoria e Serviços Ltda
INTRODUÇÃO A PROGRAMAÇÃO PROGRESS _

COMANDOS DE PROCESSAMENTO EM BLOCOS

 END
Finaliza um bloco de processamento (CASE, DO,FOR EACH,REPEAT,PROCEDURE, etc.).
Sintaxe: END.

 FOR EACH
Cria um laço condicional e implementa uma relação a cada volta.
Sintaxe: FOR EACH tabela condição:
{algoritmo}.
END.
Obs. Para melhor performance use a instrução FIELD para especificar os campos
desejados (se não desejar o registro completo). FOR EACH FIELDS(campo1, ... , campoN).

 REPEAT
Inicia um bloco de processamento.
Sintaxe: REPEAT [instruções]:
{algoritmo}.
END.

 PAUSE
Causa uma pausa no processamento por certo tempo ou até que a barra de espaço seja
pressionada.
Sintaxe: PAUSE n.
Onde n = número de segundos. Se não especificado = permanente (até pressionar a barra
de espaço).

 NEXT
Retorna ao início do bloco (transação principal).
Sintaxe : Next [bloco].

 RETURN
Retorna à rotina principal(próxima linha do ponto de origem).
Sintaxe: RETURN [(valor)].

 LEAVE
Força a saída de um bloco de processamento no ponto em que está.
Sintaxe: LEAVE.

 DO
Abre um bloco de processamento.
_______________________________________________________________________________________________________________________________
INTRODUÇÃO A BANCO DE DADOS, ADM.E DESENV.PROGRESS CHAR, PRODUTOS DATASUL E PADRÃO DESENVOLVIMENTO 19
Autor: Célio de Oliveira - celio.oliveira@brfree.com.br – Material não homologado – STI Consultoria e Serviços Ltda
INTRODUÇÃO A PROGRAMAÇÃO PROGRESS _
Sintaxe: ... DO:
{algoritmo}.
END.

/* programa exemplo – exclusivo para fins didáticos (sem finalidade prática) */

/* exemplo 01 */
REPEAT: /* F4 interrompe o processamento */
FOR EACH tabela1:
DISPLAY tabela1.
END.
NEXT.

FOR EACH tabela2: /* não ocorrerá */


DISPLAY tabela2.
END.
END.
RETURN.

>>>>>> // <<<<<<

_______________________________________________________________________________________________________________________________
INTRODUÇÃO A BANCO DE DADOS, ADM.E DESENV.PROGRESS CHAR, PRODUTOS DATASUL E PADRÃO DESENVOLVIMENTO 20
Autor: Célio de Oliveira - celio.oliveira@brfree.com.br – Material não homologado – STI Consultoria e Serviços Ltda
INTRODUÇÃO A PROGRAMAÇÃO PROGRESS _

LOCALIZAÇÃO DE DADOS E PROCESSAMENTO CONDICIONAL


- IF ... THEN ... ELSE ...
Inicializa um bloco condicional (IF), executa instruções seguintes (THEN) se a condição
anterior (IF) for satisfatória ou inicia novo bloco(ELSE) se a condição (IF) não for atendida.
Sintaxe: IF condição THEN expressão1 ELSE expressão2.

- NOT
Retorna true(verdadeiro) se uma expressão é falsa e false(falso) se uma expressão é
verdadeira.
Sintaxe: NOT expressão.

- FIND
Localiza um registro na tabela e move o mesmo para o buffer de registro.
Sintaxe: FIND [sub-comando] tabela <expressão>.
Onde: sub-comando = FIRST/LAST/PREV/NEXT (abaixo);
expressão = condição WHERE, USE-INDEX nome-ind, USING, etc. (abaixo).

- FIRST/LAST/PREV/NEXT
Primeiro, último, anterior ou próximo registro de uma tabela.
Sintaxe: ... FIRST/LAST/PREV/NEXT tabela.

- WHERE
Estabelece uma ou mais condições para que o comando seja executado.
Sintaxe: ... WHERE condições.
Exemplo: FOR EACH tabela WHERE campo = valor:

- OF
Estabelece um relacionamento direto (indexado) entre duas tabelas.
Sintaxe: ... tabela1 OF tabela2.
IMPORTANTE: a chave do índice primário da tabela2 deve ser campo na tabela1.

- USING
Substitui a instrução WHERE em uma pesquisa a base de dados, através de um índice.
Sintaxe: ... USING campo-buffer-tela.
Exemplo: FIND tabela USING INPUT campo-chave.

- USE-INDEX
Determina o índice a ser usado em uma pesquisa(FIND) ou em um bloco de
processamento.
Sintaxe: USE-INDEX nomeindice.
Exemplo: FOR EACH tabela USE-INDEX nomeindice:

_______________________________________________________________________________________________________________________________
INTRODUÇÃO A BANCO DE DADOS, ADM.E DESENV.PROGRESS CHAR, PRODUTOS DATASUL E PADRÃO DESENVOLVIMENTO 21
Autor: Célio de Oliveira - celio.oliveira@brfree.com.br – Material não homologado – STI Consultoria e Serviços Ltda
INTRODUÇÃO A PROGRAMAÇÃO PROGRESS _
- AVAILABLE/NOT AVAILABLE
Testa logicamente se o registro pesquisado esta ou não ativo.
Sintaxe: ... AVAIL/NOT AVAIL tabela.

- WHEN
Instrui um comando a especificar uma condição a ser atendida para seguir o
processamento.
Sintaxe: comando WHEN condição.

- CASE
Cria uma decisão entre várias opções baseado em valores de uma expressão.
Sintaxe: CASE expressão:
WHEN lista-valores THEN sentença/bloco.
OTHERWISE sentença/bloco.
END[CASE].
Onde expressão = ocorrência para início do processo;
WHEN = condição verdadeira de valores na lista de valores;
sentença/bloco = processamento ou abertura de bloco de processamento.
Exemplo: CASE cond-pagto: /* campo condição de pagamento – radio-set */
WHEN codigo = 1 THEN DISPLAY “A VISTA”.
OTHERWISE DO:
RUN prog-x.p. /* programa limite de credito */
END.
ENDCASE.

- BEGINS
Testa se uma expressão caracter é igual ao começo de outro expressão.
Sintaxe: expressão1 BEGINS expressão2.
Exemplo: FOR EACH tabela WHERE tabela.campo BEGINS “XYZ”.
Obs. Para uma boa performance, requer um índice com a chave1 = campo.

- MATCHES
Semelhante ao BEGINS, porém não utiliza índices e aceita metacaracteres.

- CHOOSE
Move uma barra iluminada através de uma série de dados previamente mostrados,
selecionando um dentre a série através de um RETURN (tecla).
Sintaxe: CHOOSE sentença.

/* programas exemplos – exclusivo para fins didáticos (sem finalidade prática) */


/* exemplo 01 */
FIND FIRST tabela.
IF AVAIL tabela THEN DO:
IF tabela.campo1 = “xx” THEN PAUSE 10.
END.
ELSE DO:
FOR EACH tabela WHERE campo1 BEGINS “ABC”:
DISPLAY tabela.campo1.
END.
END.
_______________________________________________________________________________________________________________________________
INTRODUÇÃO A BANCO DE DADOS, ADM.E DESENV.PROGRESS CHAR, PRODUTOS DATASUL E PADRÃO DESENVOLVIMENTO 22
Autor: Célio de Oliveira - celio.oliveira@brfree.com.br – Material não homologado – STI Consultoria e Serviços Ltda
INTRODUÇÃO A PROGRAMAÇÃO PROGRESS _

/* exemplo 02 */
FOR EACH tabela1,
EACH tabela2 OF tabela1: /* requer relacionamento definido na base de dados */
DISPLAY tabela1.campo1 tabela2.campo1.
END.
>>>>>> // <<<<<<

Faça o laboratório número 03 do anexo.

_______________________________________________________________________________________________________________________________
INTRODUÇÃO A BANCO DE DADOS, ADM.E DESENV.PROGRESS CHAR, PRODUTOS DATASUL E PADRÃO DESENVOLVIMENTO 23
Autor: Célio de Oliveira - celio.oliveira@brfree.com.br – Material não homologado – STI Consultoria e Serviços Ltda
INTRODUÇÃO A PROGRAMAÇÃO PROGRESS _

TRATAMENTO DE MENSAGENS, CLASSIFICAÇÃO DE DADOS

 NO-ERROR
Ignora a mensagem(alert-box) em caso de erro ou concorrência sobre um conjunto de
dados.
Sintaxe: COMANDO instrução NO-ERROR.
Exemplo: FIND FIRST cliente NO-ERROR.

 MESSAGE
Exibe uma mensagem.
Sintaxe: MESSAGE mensagem [instruções].
Onde mensagem = string ou dado/informação e instruções = objeto, botões, título, etc.
Exemplo: MESSAGE “Pesquisar é aprender” VIEW-AS ALERT-BOX.

 HELP
Exibe uma mensagem de ajuda, no rodapé da tela, casada com a entrada de dados.
Sintaxe: ... HELP “mensagem”.
Exemplo: UPDATE nome-cliente HELP “Informe o nome do cliente”.

 BREAK
Instrui o bloco de processamento a “quebrar” os dados conforme ordens de classificação a
seguir.
Sintaxe: ... BREAK ordem-classificação(BY).

 BY
Instrui um ou mais campos de classificação (ordem).
Sintaxe: ... BY ordem [tipo].
Onde: ordem = campo de classificação e tipo = ascendente/descendente.

 DESCENDING
Instrui a classificação de dados na ordem decrescente.

 ASCENDING
Instrui a classificação de dados na ordem crescente(default).

/* programa exemplo – exclusivo para fins didáticos (sem finalidade prática) */


/* exemplo 01 */

FOR EACH tabela BREAK BY tabela.campo1


BY tabela.campo2:
DISPLAY tabela.campo1 tabela.campo2.
END.

>>>>>> // <<<<<<

_______________________________________________________________________________________________________________________________
INTRODUÇÃO A BANCO DE DADOS, ADM.E DESENV.PROGRESS CHAR, PRODUTOS DATASUL E PADRÃO DESENVOLVIMENTO 24
Autor: Célio de Oliveira - celio.oliveira@brfree.com.br – Material não homologado – STI Consultoria e Serviços Ltda
INTRODUÇÃO A PROGRAMAÇÃO PROGRESS _

FUNÇÕES PRIMÁRIAS

 CONNECTED
Retorna o valor lógico (true/false) se um banco está conectado.
Sintaxe: CONNECTED(banco).
Onde banco é o nome lógico do banco.

 GO-ON
Força a uma ação contrária a uma restrição.
Sintaxe: GO-ON (expressão).
Onde expressão = chave de continuidade no processo.
Exemplo: PROMPT-FOR codigo-cliente GO-ON (F3).

 ENCODE
Criptografa uma string.
Sintaxe: ENCODE(expressão).
Onde expressão = string (entre aspas) ou uma variável.

 TODAY
Retorna a data do dia.
Sintaxe: TODAY [formato].

 DATE
Converte uma string ou valores de mês, dia e ano em data.
Sintaxe: DATE(mês,dia,ano/string).

 MONTH
Retorna o mês, isolado, de uma data.
Sintaxe: MONTH(data).

 YEAR
Retorna o ano, isolado, de uma data.
Sintaxe: YEAR(data).

 DAY
Retorna o dia, isolado, de uma data.
Sintaxe: DAY(data).

 STRING
Converte um valor de qualquer tipo (int/dec/data,etc), em um valor caracter.
Sintaxe: STRING(valor,”formato”).
Onde valor = valor a ser transformado, formato = máscara de apresentação do resultado.

 TIME
Retorna com a hora do sistema operacional.
Sintaxe: [STRING(] TIME [,”formato”)]
Onde formato = máscara de apresentação das horas. Ex. hh:mm:ss.

 LOOKUP

_______________________________________________________________________________________________________________________________
INTRODUÇÃO A BANCO DE DADOS, ADM.E DESENV.PROGRESS CHAR, PRODUTOS DATASUL E PADRÃO DESENVOLVIMENTO 25
Autor: Célio de Oliveira - celio.oliveira@brfree.com.br – Material não homologado – STI Consultoria e Serviços Ltda
INTRODUÇÃO A PROGRAMAÇÃO PROGRESS _
Retorna a posição do valor de um domínio em uma lista de valores. Se não encontrar
retorna 0.
LOOKUP(domínio,valor1, ...,valorN).
Onde domínio = detentor do valor (variável, campo, etc), valor1, ...,valorN = lista de valores.
Exemplo: DISPLAY LOOKUP("x","a,b,c,x").

 LASTKEY
Retorna o código da última tecla digitada.
Sintaxe: LASTKEY <expressão>.

 LENGTH
Retorna o tamanho, em caracteres, de uma string.
Sintaxe: LENGTH(string).

 TRIM/RIGHT-TRIM/LEFT-TRIM
Elimina caracteres brancos, ou outro se especificado, em uma string.
sintaxe: TRIM(string,[caracter]).
Válido apenas com o formatador de tela desativado(vídeo).

 SUBSTRING
Retorna parte de uma string.
SUBSTRING(string,posição-inicial,núm-caract-a-direita).

 RECID
Retorna o endereço de um registro de dados.
Sintaxe: RECID(tabela).

 CAN-FIND
Retorna verdadeiro, se um registro foi encontrado pelo FIND, dentro dos critérios
estabelecidos.
Sintaxe: CAN-FIND(expressão).
Onde expressão = critérios estabelecidos a um FIND.

 LAST-OF
Retorna true/false para a última ocorrência no laço de processamento conforme grupo de
quebra.
Sintaxe: LAST-OF(agregado).
Onde agregado = valor especificado no grupo de quebra.

 FIRST-OF
Idêntico ao LAST-OF, porém para a primeira ocorrência.

 CAPS
Transforma uma string em letras maiúsculas.
Sintaxe: CAPS(string).

 PROPATH
Retorna a variável de ambiente atual do PROPATH.
Sintaxe: ... PROPATH ... .

 MODULO
_______________________________________________________________________________________________________________________________
INTRODUÇÃO A BANCO DE DADOS, ADM.E DESENV.PROGRESS CHAR, PRODUTOS DATASUL E PADRÃO DESENVOLVIMENTO 26
Autor: Célio de Oliveira - celio.oliveira@brfree.com.br – Material não homologado – STI Consultoria e Serviços Ltda
INTRODUÇÃO A PROGRAMAÇÃO PROGRESS _
Retorna o restante de uma divisão.
Sintaxe: dividendo MODULO divisor.

 ACCUM
Retorna o valor de uma expressão calculada pela função ACCUMULATE ou em uma
sentença DISPLAY.
Sintaxe: ACCUM operação expressão.
Onde operação = cálculo efetuado no dados ou conjunto de dados. As operações mais
usadas são: AVERAGE(média), COUNT(ocorrências), MAXIMUM(maior valor),
MINIMUM(menor valor), TOTAL(somatória dos valores), SUB-AVERAGE(média por volta do
laço), SUB-COUNT(ocorrência por volta do laço), SUB-MAXIMUM(maior valor dentro das
voltas do laço), SUB-TOTAL(valor dentro das voltas do laço).
Expressão: Definição do laço e/ou grupo de quebra.
Exemplo: FOR EACH pedido:
DISPLAY numero-pedido numero-cliente.
FOR EACH item-pedido OF pedido:
DISPLAY numero-item quantidade preco.
DISPLAY (ACCUM TOTAL quantidade * preco) LABEL “TOTAL”.
END.
END.

 ACCUMULATE
Realiza operações com valores especificados em uma expressão durante o processamento
de um bloco. Para acessar o resultado a função ACCUM deve ser usada.
Sintaxe: ACCUMULATE expressão cálculo.
Onde expressão é o dado a ser calculado e cálculo é a operação a ser efetuada.
Exemplo: FOR EACH cliente:
ACCUMULATE limite-credito (AVERAGE COUNT MAXIMUM).
END.
DISPLAY “Média de Crédito = “ (ACCUM AVERAGE limite-credito) SKIP
“Maior Crédito = “ (ACCUM MAXIMUM limite-credito) SKIP
“Número Clientes = “ (ACCUM COUNT limite-credito) SKIP
WITH NO-LABELS.

 KEYCODE
Retorna o código de uma tecla.
Sintaxe: KEYCODE(“tecla”).

 KEYLABEL
Retorna o nome de uma tecla.
Sintaxe: KEYLABEL(código).

 WEEKDAY
Retorna o número inteiro referente ao dia da semana.
Sintaxe: WEEKDAY(data).
Exemplo: DISPLAY WEEKDAY(today).

 NOT ENTERED
Retorna true(verdadeiro) se um campo da tela não sofreu alteração, durante o último
processamento de um comando INSERT, PROMPT-FOR, SET ou UPDATE.
_______________________________________________________________________________________________________________________________
INTRODUÇÃO A BANCO DE DADOS, ADM.E DESENV.PROGRESS CHAR, PRODUTOS DATASUL E PADRÃO DESENVOLVIMENTO 27
Autor: Célio de Oliveira - celio.oliveira@brfree.com.br – Material não homologado – STI Consultoria e Serviços Ltda
INTRODUÇÃO A PROGRAMAÇÃO PROGRESS _
Sintaxe: [FRAME nometela] campo NOT ENTERED.

 PAGE-NUMBER
Retorno o número da página corrente na saída dos dados .
Sintaxe: ... PAGE-NUMBER ... .

 PAGE-SIZE
Instrui quanto ao tamanho da página, em linhas, a saída dos dados.
Sintaxe: PAGE-SIZE n.
Onde = número de linhas.

 LINE-COUNTER
Retorno o número da linha corrente, dentro da página, na saída dos dados.
Sintaxe: ... LINE-COUNTER ... .

 ROUND
Arredonda casas decimais de um valor.
Sintaxe: ROUND(expressão, n).
Onde: expressão = variável ou campo que contém o valor, n = número de casas decimais.

 TRUNCATE
Define o número de casas decimais a retornar de um valor e ignora as demais.
Sintaxe: TRUNCATE(expressão,n).
Onde: expressão = variável ou campo que contém o valor, n = número de casas decimais.

 ENTRY
Retorna a descrição de um item inteiro (posição) com base em uma lista de itens.
Sintaxe: ENTRY(item,lista)
Exemplo: DISPLAY ENTRY(num-dia,desc-dia).
Onde num-dia = WEEKDAY(today), desc-dia = variável char(segunda,...,Domingo).

>>>>>> // <<<<<<

_______________________________________________________________________________________________________________________________
INTRODUÇÃO A BANCO DE DADOS, ADM.E DESENV.PROGRESS CHAR, PRODUTOS DATASUL E PADRÃO DESENVOLVIMENTO 28
Autor: Célio de Oliveira - celio.oliveira@brfree.com.br – Material não homologado – STI Consultoria e Serviços Ltda
INTRODUÇÃO A PROGRAMAÇÃO PROGRESS _

FORMATAÇÃO DE TELAS

 FORM
Abre a definição do layout e atributos de uma tela para uma procedure.
Sintaxe: FORM sentença.
Onde sentença engloba, entre outras, instruções abaixo.
Exemplos: No final da sessão.

 DEFINE FRAME
Abre a definição do layout e atributos de uma tela para uma ou mais procedures.
Sintaxe: DEFINE FRAME ...

 WITH
Liga a definição de uma tela a um layout.
Sintaxe: ... WITH ... .

 ROW
Especifica a linha onde se posicionará a primeira linha(ou borda) da tela.
Sintaxe: ... ROW n ... .
Onde n = número da linha.

 COLUMN
Especifica a coluna inicial da tela (campo superior esquerdo), e também a quantidade de
colunas em que será mostrado os dados.
Sintaxe: COLUMN n1 / n2 COLUMN.
Onde n1 = número da coluna / n2 = número de colunas (qtde).

 DOWN
Estabelece o número de ocorrência por tela no bloco de processamento.
Sintaxe: DOWN n.
Onde n = número de ocorrências desejáveis.

 TITLE
Informa em vídeo reverso, no centro da borda superior o título especificado.
Sintaxe: ... TITLE ... .

 OVERLAY
Estabelece que a tela irá sobrepor outra de posicionamento semelhante sem interrupções.
Sintaxe: ... OVERLAY ... .

 SKIP
Provoca uma salto de linha na tela.
Sintaxe: ... SKIP(n).
Onde n = enésima linha seguinte a saltar. O default é 1 (pode ser omitido).

_______________________________________________________________________________________________________________________________
INTRODUÇÃO A BANCO DE DADOS, ADM.E DESENV.PROGRESS CHAR, PRODUTOS DATASUL E PADRÃO DESENVOLVIMENTO 29
Autor: Célio de Oliveira - celio.oliveira@brfree.com.br – Material não homologado – STI Consultoria e Serviços Ltda
INTRODUÇÃO A PROGRAMAÇÃO PROGRESS _
 HIDE
Exclui uma tela no vídeo.
Sintaxe: HIDE nome-frame [NO-PAUSE].

 VIEW
Gera no vídeo a tela criada através do comando FORM.
Sintaxe: VIEW nome-frame.

 CLEAR
Limpa (inicializa) uma tela. Em outras palavras, apaga os dados/informações da mesma.
Sintaxe: CLEAR nome-frame.

 SIDE-LABELS
Indica que os dados/informações devem ser mostrados ao lado (direito) do label.
Sintaxe: ... SIDE-LABELS ... .

 CENTERED
Instrui o formatador de tela a centralizar a mesma no vídeo.
Sintaxe: ... CENTERED ... .

 NO-BOX
Instrui o formatador de tela não colocar o retângulo(borda) em volta da tela.
Sintaxe: ... NO-BOX ... .

 PAGE-TOP/PAGE-BOTTOM
Determina se a tela posicionará no topo ou no rodapé do vídeo.
Sintaxe: ... PAGE-TOP/BOTTOM ... .

 HEADER/BACKGROUND
Especifica o nível do plano de apresentação da tela (frente/atrás).
Sintaxe: ... HEADER/BACKGROUND ... .

 TOP-ONLY
Especifica que a frame não pode ser sobreposta.
Sintaxe: ... TOP-ONLY ... .

 SCROLL
Caracteriza se a tela permitira a rolagem dos dados na mesma e o sentido.
Sintaxe: ... SCROOL [sentido]... .
Onde sentido = UP/DOWN. O default é DOWN.

 PAUSE
Estabelece uma pause para interação com a tela.
Sintaxe: PAUSE [n].
Onde n = número de segundos.

 @
Indica que o dado deve ser mostrado na tela, na mesma posição de outro.
Sintaxe: DISPLAY dado/informação @ destino.
Onde dado/informação = valor a ser atribuído, destino = campo ou variável da tela que
receberá o valor.
_______________________________________________________________________________________________________________________________
INTRODUÇÃO A BANCO DE DADOS, ADM.E DESENV.PROGRESS CHAR, PRODUTOS DATASUL E PADRÃO DESENVOLVIMENTO 30
Autor: Célio de Oliveira - celio.oliveira@brfree.com.br – Material não homologado – STI Consultoria e Serviços Ltda
INTRODUÇÃO A PROGRAMAÇÃO PROGRESS _
Exemplo: DISPLAY “DOM HELDER CÂMARA” @ ilustre.nome.

 TO
Define a última coluna (coluna final) para um dado na tela.
Sintaxe: ... TO n.
Onde n = número da coluna.

 AT
Permite o posicionamento do dado em uma coluna específica da tela.
Sintaxe: AT n.
Onde n = número da coluna.
Obs. Esta instrução pode ser usada para posicionamento de objetos em windows, por linha
x coluna ou pixels.

EXEMPLOS DE MANIPULAÇÃO DE TELAS:


FORM
tabela.campo1 LABEL “Título Campo 1 “ SPACE(02)
tabela.campo2 NO-LABEL SKIP
tabela.campo3 LABEL “Título Campo 3” SKIP
WITH FRAME f-nometela ROW XX CENTERED OVERLAY TITLE “ EXEMPLO “
1 DOWN 1 COLUMN SIDE-LABELS.

FORM
"Exemplo de formatação de tela, nomeada ex1. View mostra o resultado."
WITH FRAME ex1.
VIEW FRAME ex1.
Exemplo de formatação de tela, nomeada ex1. View mostra o resultado.

FORM
"Exemplo de formatação de tela, nomeada ex1. Skip salta uma linha." SKIP
"Skip pode ser usado na sintaxe. skip(n)."
WITH FRAME ex2.
VIEW FRAME ex2.
Exemplo de formatação de tela, nomeada ex2. Skip salta uma linha.
Skip pode ser usado na sintaxe. skip(n).

FORM
" Exemplo de formatação de tela centralizada. " SKIP
" Centered centraliza a tela no monitor. "
WITH FRAME ex3 ATTR-SPACE CENTERED.
VIEW FRAME ex3.
Exemplo de formatação de tela centralizada.
Centered centraliza a tela no monitor.

FORM
"Exemplo de formatação de tela. row determina a linha do monitor" SKIP
_______________________________________________________________________________________________________________________________
INTRODUÇÃO A BANCO DE DADOS, ADM.E DESENV.PROGRESS CHAR, PRODUTOS DATASUL E PADRÃO DESENVOLVIMENTO 31
Autor: Célio de Oliveira - celio.oliveira@brfree.com.br – Material não homologado – STI Consultoria e Serviços Ltda
INTRODUÇÃO A PROGRAMAÇÃO PROGRESS _
"onde se posicionará a 1ª linha da tela. Title informa o título da tela." SKIP
"Column especifica a coluna inicial. At n = coluna de um atributo." SKIP
WITH FRAME ex4 ROW 5 CENTER TITLE "EXEMPLO QUATRO".
VIEW FRAME ex4.
EXEMPLO QUATRO
Exemplo de formatação de tela. row determina a linha do monitor
onde se posicionará a 1ª linha da tela. Title informa o título da tela.
Column especifica a coluna inicial. At n = coluna de um atributo.

DISPLAY
"Clear limpa(zera) a tela. Hide apaga. " LABEL "Linha 1: " SKIP
"Side-Labels = labels a esquerda do item. " LABEL "Linha 2: " SKIP
"O contrário label = título(acima do item)." LABEL "Linha 3: " SKIP
WITH FRAME ex5 CENTER SIDE-LABELS.
Linha 1: Clear limpa(zera) a tela. Hide apaga.
Linha 2: Side-Labels = labels a esquerda do item.
Linha 3: O contrário label = título(acima do item).

DISPLAY
"DOWN n - núm. conjuntos de dados por vez." LABEL "DOWN: " SKIP
"Permite sobreposição da tela." LABEL "OVERLAY: " SKIP
"Elimina a borda da tela." LABEL "NO-BOX:" SKIP
"Tela topo/rodapé do monitor." LABEL "PAGE-TOP/PAGE-BOTTOM:" SKIP
"Não permite que a tela seja sobreposta." LABEL "TOP-ONLY:" SKIP
"Permite o relamento da tela." LABEL "SCROOL:" SKIP
"Mostra o dado sem o label especificado." LABEL"NO-LABEL" SKIP
WITH FRAME ex6 CENTER SIDE-LABELS NO-BOX.
VIEW FRAME ex6.
DOWN: DOWN n - núm. conjuntos de dados por vez."
OVERLAY: Permite sobreposição da tela.
NO-BOX: Elimina a borda da tela.
PAGE-TOP/PAGE-BOTTOM: Tela no topo/rodapé do monitor.
TOP-ONLY: Não permite que a tela seja sobreposta.
SCROOL: Permite o rolamento da tela.
NO-LABEL: Mostra o dado sem o label especificado.

>>>>>> // <<<<<<

Faça o laboratório número 04 do anexo.

_______________________________________________________________________________________________________________________________
INTRODUÇÃO A BANCO DE DADOS, ADM.E DESENV.PROGRESS CHAR, PRODUTOS DATASUL E PADRÃO DESENVOLVIMENTO 32
Autor: Célio de Oliveira - celio.oliveira@brfree.com.br – Material não homologado – STI Consultoria e Serviços Ltda
INTRODUÇÃO A PROGRAMAÇÃO PROGRESS _

DEFINIÇÃO/VALORIZAÇÃO DE DADOS NA MEMÓRIA


 DEFINE
Define um dado ou um conjunto destes para uso em uma ou mais procedures.
Sintaxe: DEFINE dado [AS tipo FORMAT formato INITIAL valor].
Onde dado = variável, temp-table, buffer, stream, button. Tipo/formato/valor (instruções
abaixo).

 FORMAT
Define o formato(máscara) de um dado.
Sintaxe: FORMAT formato.
Onde formato(principais) = “99/99/9999” (data),”>>9.99” (dec/int), “x(nn)” (char) “Sim/Não”
(log).

 TEMP-TABLE
Instrui a criação de uma tabela interna (memória com possibilidade de SWAP em hard disk).
Sintaxe: TEMP-TABLE tt-nometabela
FIELD campo1 tipo formato
FIELD campoN tipo formato
[INDEX nomeindex IS [tipo1 tipo2 tipo3] chave1 ordem1... chaveN ordemN].
Onde tt-nometabela = nome da tabela a ser criada;
campo = nome do campo da tabela, tipo = tipo campo(int,char,etc) formato =
FORMAT;
nomeindex = nome do índice, tipo1,2,3 = UNIQUE PRIMARY WORD-INDEX;
chave = campo chave e ordem = [ASCENDING/DESCENDING].
Exemplo: DEF TEMP-TABLE tt-totdia
FIELD dia AS DATE
FIELD tot AS DEC FORMAT “>>>,>>>,>>9.99”.

 BLANK
Instrui a entrada de dados(input) que não mostre(display) os caracteres imputados.
Sintaxe: BLANK.
Exemplo: UPDATE senha BLANK.

 AUTO-RETURN
Instrui a entrada(input) a um dado que retorne(próximo) automaticamente ao final deste.
Sintaxe: AUTO-RETURN.
Exemplo: UPDATE senha AUTO-RETURN.

 AS
Instrui a criação de uma variável quanto a seu tipo.
_______________________________________________________________________________________________________________________________
INTRODUÇÃO A BANCO DE DADOS, ADM.E DESENV.PROGRESS CHAR, PRODUTOS DATASUL E PADRÃO DESENVOLVIMENTO 33
Autor: Célio de Oliveira - celio.oliveira@brfree.com.br – Material não homologado – STI Consultoria e Serviços Ltda
INTRODUÇÃO A PROGRAMAÇÃO PROGRESS _
Sintaxe: AS tipo.
Onde tipo = caracter, inteiro, logical, decimal, data, recid, etc.
Exemplo: DEF VAR salario AS DEC.

 LIKE
Instrução que espelha o formato de um dado em outro.
Sintaxe: LIKE origem.
Onde origem = campo ou variável que fornecerá a formatação para outro campo ou
variável.
Exemplo: DEF VAR valor-produto LIKE produto.valor.

 NEW SHARED
Instrui a definição de um dado para tratá-lo como compartilhado (de uso permitido em um
ponto abaixo(subrotina) da mesma aplicação).
Sintaxe: NEW SHARED dado.
Exemplo: DEF NEW SHARED VAR codigo AS INT.
Obs. A definição pode ser feita como NEW GLOBAL SHARED, que permite o uso do dado
em qualquer ponto da aplicação.

 SHARED
Instrui a definição de um dado para tratá-lo como dado anteriormente definido como
compartilhado (definido em um ponto acima na mesma aplicação).
Sintaxe: SHARED dado.
Exemplo: DEF SHARED VAR codigo AS INT.
Obs. A definição pode ser feita como GLOBAL SHARED, definida em qualquer ponto da
aplicação.

 BUFFER
Instrui o define a criar um buffer (cópia) de uma tabela.
Sintaxe: DEF BUFFER b-tabela FOR tabela.

 SPACE
Instrução que determina uma string com espaços.
Sintaxe: space(n).
Onde n = número de espaços.
Exemplo: DISPLAY campo1 space(10) campo2.

 INITIAL
Estabelece o valor inicial de um dado ou informação.
Sintaxe: INITIAL valor.
Exemplo: DEF VAR resp AS LOG INITIAL YES.

 FILL
Valoriza uma variável(string) com a quantidade/caracter especificada.
Sintaxe: FILL(“chars”,n).
Onde: chars = string a ser repetida e n = número de repetições.
Exemplo: traco = FILL(“-“,80).

 VALIDATE
Cria uma consistência em torno do dados. Pode ser usado para validação de registro ou
variável.
_______________________________________________________________________________________________________________________________
INTRODUÇÃO A BANCO DE DADOS, ADM.E DESENV.PROGRESS CHAR, PRODUTOS DATASUL E PADRÃO DESENVOLVIMENTO 34
Autor: Célio de Oliveira - celio.oliveira@brfree.com.br – Material não homologado – STI Consultoria e Serviços Ltda
INTRODUÇÃO A PROGRAMAÇÃO PROGRESS _
Sintaxe: VALIDATE (expressão,mensagem).
Exemplo: UPDATE data-cobranca VALIDATE (data-cobrança > TODAY,”Data Inválida”).

 ASSIGN
Move valores pré-definidos para variáveis.
Sintaxe: ASSIGN variável = valor.
Obs. A aplicação de um assign para valorização de duas ou mais variáveis, implica em
melhor performance no processamento e a um executável menor (apenas uma linha de
processamento).

/* programa exemplo – exclusivo para fins didáticos (sem finalidade prática) */


/* exemplo 01 */

DEF VAR opcao AS CHAR FORMAT "x(15)" EXTENT 4 /* será visto na próxima sessão */
INITIAL ["MENSAGEM 01","MENSAGEM 02","MENSAGEM 03","ENCERRAR"].
DEF VAR ind-pos AS INT.
FORM opcao WITH FRAME seletor CENTER OVERLAY TITLE "seletor" NO-LABELS.
REPEAT WITH FRAME seletor:
DISP opcao.
CHOOSE FIELD opcao AUTO-RETURN.
IF FRAME-VALUE = opcao[1] THEN DO:
MESSAGE " Você escolheu a mensagem 01" VIEW-AS ALERT-BOX.
NEXT.
END.
ELSE IF FRAME-VALUE = opcao[2] THEN DO:
MESSAGE " Você escolheu a mensagem 02" VIEW-AS ALERT-BOX.
NEXT.
END.
ELSE IF FRAME-VALUE = opcao[3] THEN DO:
MESSAGE " Você escolheu a mensagem 03" VIEW-AS ALERT-BOX.
NEXT.
END.
ELSE LEAVE.
END.

>>>>>> // <<<<<<

_______________________________________________________________________________________________________________________________
INTRODUÇÃO A BANCO DE DADOS, ADM.E DESENV.PROGRESS CHAR, PRODUTOS DATASUL E PADRÃO DESENVOLVIMENTO 35
Autor: Célio de Oliveira - celio.oliveira@brfree.com.br – Material não homologado – STI Consultoria e Serviços Ltda
INTRODUÇÃO A PROGRAMAÇÃO PROGRESS _

DIRECIONAMENTO DE DADOS, DESVIO/CONTROLE DE PROCESSAMENTO


 OUTPUT TO
Direciona a saída de dados para um periférico ou arquivo específico.
Sintaxe: OUTPUT TO saída [tam-pag] [condição].
Onde saída = periférico ou nome do arquivo;
tam-pag = tamanho da página a ser gerada ;
condição = APPEND(anexo ao arquivo, se existente)/UNFORMATTED (s/formato).

Exemplos: OUTPUT TO PRINT.


OUTPUT TO PRINT nome-impressora.
OUTPUT TO PRINT VALUE(var-nome-impressora).
OUTPUT TO TERMINAL.
OUTPUT TO nome-arquivo.
OUTPUT TO nome-arquivo APPEND PAGE-SIZE n UNFORMATTED.

 OUTPUT CLOSE
Fecha uma saída de dados criado pelo comando OUTPUT TO.
Sintaxe: OUTPUT CLOSE.

 OUTPUT STREAM
Direciona a saída para uma cadeia de saída, previamente definida.
Sintaxe: OUTPUT STREAM cadeia-saída TO saída.
Obs. Possibilita o uso do OUTPUT em sequência, obtendo um resultado simultâneo.

 PAGE
Posiciona a saída gerada pelo OUTPUT TO para o começo da próxima página(gera salto de
página).
SINTAXE: PAGE.

 RUN
roda uma rotina externa ou uma procedure.
RUN nome-prog.

 {}
inclui um procedimento no rotina.
Sintaxe: {include.i}
Onde include.i = nome da rotina que será inclusa no programa.
_______________________________________________________________________________________________________________________________
INTRODUÇÃO A BANCO DE DADOS, ADM.E DESENV.PROGRESS CHAR, PRODUTOS DATASUL E PADRÃO DESENVOLVIMENTO 36
Autor: Célio de Oliveira - celio.oliveira@brfree.com.br – Material não homologado – STI Consultoria e Serviços Ltda
INTRODUÇÃO A PROGRAMAÇÃO PROGRESS _

 PROCEDURE
Uma rotina interna no programa, chamada de um bloco qualquer, no entanto, localizada fora
deste bloco e do bloco principal do programa. Uma procedure é chamada através do
comando RUN.
Sintaxe: PROCEDURE nome-procedure.
{algoritmo}
ENDPROCEDURE.
RETURN.

/* programa exemplo de relatório */


/* Obs. Este programa embora correto, visa atender a fins didáticos. */
DEF VAR tit AS CHAR FORMAT “x(50)”.
DEF VAR traco AS CHAR FORMAT “x(80)”.
DEF VAR cont AS INT.

ASSIGN tit = “titulo do relatorio”


traco = FILL(“_”,80).

OUTPUT TO c:/treinamento/teste.txt PAGE-SIZE 60.


FOR EACH tabela1,
EACH tabela2 OF tabela1 BREAK BY campo-ordem. /*campo-ordem tabela1 ou tabela2–ex.nome forneced */
IF LINE-COUNTER <> 1 OR LINE-COUNTER + 1 >= PAGE-SIZE THEN DO:
IF LINE-COUNTER <> 1 THEN PAGE.
PUT tit AT (80 - LENGTH(TRIM(tit))) / 2 SKIP
TODAY AT 01 FORMAT “99/99/9999”
STRING(TIME,”hh:mm:ss”) AT 36
“Pag.” AT 73
PAGE-NUMBER AT 77 FORMAT “999” SKIP
traco AT 01 SKIP
“TÍTULO-COLUNA1” AT XX /* campo1 / tabela 1 – ex. código fornecedor */
“TÍTULO-COLUNA2” AT XX /* campo2 / tabela 1 – ex. nome fornecedor */
“TÍTULO-COLUNA3” AT XX /* campo 1 / tabela 2 – ex. código produto */
“TÍTULO-COLUNA4” AT XX /* campo 2 / tabela 2 – ex. descrição produto */
“TÍTULO-COLUNA5” AT XX /* variável – ex. quantidade produto fornecido */
traco AT 01 SKIP.
END.
IF FIRST-OF(campo-ordem) THEN DO:
PUT campo1/tabela1 AT XX
campo2/tabela1 AT XX.
cont = 0.
END.
PUT campo1/tabela2 AT XX
campo2/tabela2 AT XX
cont AT XX FORMAT “>>,>>9” SKIP.
END.
OUTPUT CLOSE.

>>>>>> // <<<<<<

Faça o laboratório número 05 do anexo.

_______________________________________________________________________________________________________________________________
INTRODUÇÃO A BANCO DE DADOS, ADM.E DESENV.PROGRESS CHAR, PRODUTOS DATASUL E PADRÃO DESENVOLVIMENTO 37
Autor: Célio de Oliveira - celio.oliveira@brfree.com.br – Material não homologado – STI Consultoria e Serviços Ltda
INTRODUÇÃO A PROGRAMAÇÃO PROGRESS _

DADOS MULTIVALORIZADOS, IMPORTAÇÃO/EXPORTAÇÃO DE DADOS

 EXTENT
Cria uma multivalorização tipo ARRAY para um dado ou informação.
Sintaxe: EXTENT n.
Onde n é o número de ocorrências que a função criará para o dado ou informação.

 CHOOSE
Cria uma barra de seleção, com movimento entre os componentes de uma série de opções.
Sintaxe: CHOOSE ROW field/FIELD field.
Exemplo: CHOOSE FIELD opcao AUTO-RETURN.
Onde opcao = variável com a lista de opções.

 DO(TO)
Cria um bloco de processamento através de um índice interno.
Sintaxe: DO indice = vi TO vf:
Onde indice = variável e vi/vf = valores inicial e final.
Exemplo: DO indice = 1 TO 10:
{algoritmo}
END.

 VALUE
Trata o valor de um domínio.
Sintaxe: VALUE(domínio).
Onde domínio = dado ou informação de memória.

 INPUT FROM
Cria uma fonte alternativa para entrada de dados.
Sintaxe: INPUT FROM origem.
Onde origem = arquivo texto, terminal, etc.

 QUOTER
Utilitário Progress que transcreve uma linha texto, como se fosse um campo, no formato
delimitado.
Sintaxe: quoter parâmetro p1-p2,p3-pn, ..., px-py arq-fonte > arq-destino.
Onde: parâmetro mais usado é –c (coluna). P1-p2 = posição inicial/final da coluna.

 SILENT
_______________________________________________________________________________________________________________________________
INTRODUÇÃO A BANCO DE DADOS, ADM.E DESENV.PROGRESS CHAR, PRODUTOS DATASUL E PADRÃO DESENVOLVIMENTO 38
Autor: Célio de Oliveira - celio.oliveira@brfree.com.br – Material não homologado – STI Consultoria e Serviços Ltda
INTRODUÇÃO A PROGRAMAÇÃO PROGRESS _
Executa um comando do sistema operacional sem restrições (pausas).
Sintaxe: SYS SILENT linha-comando.
Onde: SYS = UNIX, DOS, WIN32, etc.
Exemplo: UNIX SILENT ls ou UNIX ls.

 OPSYS
Retorna a plataforma operacional.
Sintaxe: OPSYS
Exemplo: IF OPSYS = “WIN32” THEN ...

 EXPORT
Exporta dados para um arquivo, formatando a delimitação do mesmo.
Sintaxe: EXPORT [DELIMITER char} lista-dados.
Onde: char é o character delimitador desejado. Se não especificado o default será ativado.
lista-dados são os dados a serem exportados (tabela, campos).
Exemplo: OUTPUT TO arquivo.
FOR EACH tabela:
EXPORT DELIMITER “;” campo1, campo2 ... campoN.
END.
OUTPUT CLOSE.

 IMPORT
Importa dados de um arquivo delimitado, gerado ou igual ao gerado pelo comando
EXPORT.
Sintaxe: IMPORT [DELIMETER char] lista-dados.
Exemplo: INPUT FROM arquivo.
FOR EACH tabela:
IMPORT UNFORMATTED string.
END.
INPUT CLOSE.

 SEARCH
Pesquisa a existência de um arquivo no diretório do sistema operacional.
Sintaxe: SEARCH(“nome-arquivo”).

/* programa exemplo da sessão atual e sessão anterior */


DEF VAR opcao AS CHAR FORMAT “x(15)” EXTENT 4
INITIAL [“INCLUDE ”,”PROCEDURE ”,”ROTINA EXTERNA “,”ENCERRAR “].
DEF VAR ponteiro AS INT.

FORM opcao WITH FRAME seletor CENTER OVERLAY TITLE “SELETOR” NO-LABELS.

REPEAT WITH FRAME seletor:


DISPLAY opcao.
CHOOSE FIELD opcao AUTO-RETURN.
IF FRAME-VALUE = opcao[1] THEN DO:
{c:/treinamento/prg-inc.i}.
NEXT.
END.
ELSE IF FRAME-VALUE = opcao[2] THEN DO:
RUN proc-anex.
NEXT.
_______________________________________________________________________________________________________________________________
INTRODUÇÃO A BANCO DE DADOS, ADM.E DESENV.PROGRESS CHAR, PRODUTOS DATASUL E PADRÃO DESENVOLVIMENTO 39
Autor: Célio de Oliveira - celio.oliveira@brfree.com.br – Material não homologado – STI Consultoria e Serviços Ltda
INTRODUÇÃO A PROGRAMAÇÃO PROGRESS _
END.
ELSE IF FRAME-VALUE = opcao[3] THEN DO:
RUN c:/treinamento/rot-exter.p.
NEXT.
END.
LEAVE.
END.
RETURN.

PROCEDURE proc-anex.
OUTPUT TO c:/treinamento/exp-dados.
FOR EACH tabela:
EXPORT tabela.
END.
OUTPUT CLOSE.
ENDPROCEDURE.

/* programa include – prg-inc.i */


FOR EACH tabela:
DELETE tabela.
END.
INPUT FROM exp-dados.
FOR EACH tabela.
IMPORT tabela.
END.
INPUT CLOSE.

/* programa rotina externa – rot-exter.p */

IF OPSYS = "WIN32" THEN MESSAGE "ok" VIEW-AS ALERT-BOX.


RETURN.

>>>>>> // <<<<<<

Faça o laboratório número 06 do anexo.

_______________________________________________________________________________________________________________________________
INTRODUÇÃO A BANCO DE DADOS, ADM.E DESENV.PROGRESS CHAR, PRODUTOS DATASUL E PADRÃO DESENVOLVIMENTO 40
Autor: Célio de Oliveira - celio.oliveira@brfree.com.br – Material não homologado – STI Consultoria e Serviços Ltda
INTRODUÇÃO A PROGRAMAÇÃO PROGRESS _

CONTROLE DE TRANSAÇÃO, EVENTO E CONCORRÊNCIA

- DO TRANSATION
Em Progress os blocos de programação são, por default, conceitualmente transações e
subtransações. No entanto, o desenvolvedor pode implementar os níveis de transações e
controlá-los conforme sua necessidade. O meio mais comum de se fazer isto é nomeando
os blocos ou definindo a abertura/fechamento das transações, através do comando DO
TRANSATION.
Sintaxe: DO TRANSATION:
Exemplo: DO TRANSATION:
FOR EACH tabela:
{algoritmo}.
END.
END.

- ERROR
Error aponta um evento implícito no processamento de um blocos (repeat, for each,
procedure interna, triggers). Para explicitar e controlar este evento é necessário o controle
do mesmo através do comando ON.
Sintaxe: ... ERROR ... . (veja ON)

- ENDKEY
Da mesma forma que o ERROR o ENDKEY aponta para o evento de encerramento de uma
transação antes do fechamento normal (commit) da transação. Possui as mesmas
condições de controle do ERROR.
Sintaxe: ... ENDKEY ... . (veja ON)

- ON
Especifica e controla um evento durante o processamento de um bloco, como habilitar um
tecla para de interrupção(rowback) da transação.
Sintaxe: ON <chave> evento.
Onde: evento = undo, leave, retry, return, return error, etc.
Exemplos: ON F9 ERROR.
_______________________________________________________________________________________________________________________________
INTRODUÇÃO A BANCO DE DADOS, ADM.E DESENV.PROGRESS CHAR, PRODUTOS DATASUL E PADRÃO DESENVOLVIMENTO 41
Autor: Célio de Oliveira - celio.oliveira@brfree.com.br – Material não homologado – STI Consultoria e Serviços Ltda
INTRODUÇÃO A PROGRAMAÇÃO PROGRESS _
ON F10 ENDKEY.
REPEAT ON ERROR UNDO, LEAVE.

- UNDO
Desfaz um transação. Em outras palavras, retorna os valores anteriores de campos /e ou
variáveis do bloco corrente devido uma interação no mesmo.
Sintaxe: [...] UNDO [...].
Exemplo: FOR EACH tabela ON ENDKEY UNDO, RETRY.

- EXCLUSIVE-LOCK
Ao ser usado para acesso à alguma tabela, esta instrução trava (uso exclusivo) outros
acessos na tabela em questão. O default do Progress para tabelas e SHARE LOCK (uso
compartilhado).
Sintaxe: ... EXCLUSIVE-LOCK.
Exemplo: FOR EACH tabela EXCLUSIVE-LOCK.

- NO-LOCK
A instrução NO-LOCK, usada na localização e/ou busca de dados, tem por finalidade liberar
o(s) registro(s) em questão (relação gerada pela transação) para que possa sofrer outros
acessos, definindo que o acesso corrente é apenas para leitura.
Sintaxe ... NO-LOCK.
Exemplos: FOR EACH tabela NO-LOCK.
FIND tabela WHERE condição NO-LOCK.
Naturalmente, observa-se que o default do Progress é o travamento (lock) de registro para
atualização.

- LOCKED
Locked é uma função cuja a finalidade é retornar true/false(verdadeiro/falso) a respeito de
um conjunto de dados.
Sintaxe: LOCKED <expressão>. Onde <expressão> é o conjunto de dados, uma tabela por
exemplo.
Exemplo: IF LOCKED tabela THEN ... ELSE ... .

>>>>>> // <<<<<<

_______________________________________________________________________________________________________________________________
INTRODUÇÃO A BANCO DE DADOS, ADM.E DESENV.PROGRESS CHAR, PRODUTOS DATASUL E PADRÃO DESENVOLVIMENTO 42
Autor: Célio de Oliveira - celio.oliveira@brfree.com.br – Material não homologado – STI Consultoria e Serviços Ltda
INTRODUÇÃO A PROGRAMAÇÃO PROGRESS _

NAVEGAÇÃO
Esta sessão tem por finalidade introduzir o leitor no processo de seleção, visualização e
controle sobre uma faixa de dados oriundos do(s) banco(s). Em outras palavras, pretende-se
mostrar o que ocorre durante a execução de browsers, para melhor entendimento dos mesmos
na programação gráfica, principalmente utilizando os SmartsObjects.
 QUERY
Define uma query para mapeamento de dados. Em outras palavras, define um filtro de
dados a serem usados em um browser por exemplo.
Sintaxe: DEFINE QUERY nome-query FOR origem.
Exemplo: veja programa no final da sessão.

 BROWSE
Objeto que permite a visualização, navegação e seleção de dados destacados por uma
query.
Sintaxe: DEF BROWSE nome-browse QUERY nome-query <condições>.
Exemplo: veja programa no final da sessão.

 OPEN-QUERY
Abre(processa) uma query anteriormente definada.
Sintaxe: OPEN QUERY nome-query FOR <condições>.
Exemplo: veja programa no final da sessão.

 APPLY
Solicita e administra um evento para uma determinado objeto.
Sintaxe: APPLY evento TO objeto.
Exemplo: veja programa no final da sessão.

 ENABLE
Habilita a entrada de dados, no buffer de tela, para um campo tipo objeto.
Sintaxe: ENABLE lista-objetos <condições>.
Exemplo: veja programa no final da sessão.

 WAIT-FOR
_______________________________________________________________________________________________________________________________
INTRODUÇÃO A BANCO DE DADOS, ADM.E DESENV.PROGRESS CHAR, PRODUTOS DATASUL E PADRÃO DESENVOLVIMENTO 43
Autor: Célio de Oliveira - celio.oliveira@brfree.com.br – Material não homologado – STI Consultoria e Serviços Ltda
INTRODUÇÃO A PROGRAMAÇÃO PROGRESS _
Para o processamento de um bloco, até que um determinado evento ocorra.
Sintaxe: WAIT-FOR evento OF objeto.
Exemplo: veja programa no final da sessão.

 ITERATION-CHANGED
Tipo de evento que especifica e controla uma ação do usuário em uma janela.
Sintaxe: “iteration-changed” OF objeto.
Exemplo: veja programa no final da sessão.

 WINDOW-CLOSE
atividade “finalização” de uma janela.
Sintaxe: WINDOW-CLOSE <janela>.
Exemplo: veja programa no final da sessão.

 CURRENT-WINDOW
Permite especificar e controlar as atividades da janela (window) corrente.
Sintaxe: atividade comando CURRENT-WINDOW (char) .
CURRENT-WINDOW:atributo (gráfico).
Exemplo: veja programa no final da sessão.

Exemplo de uma tela de navegação com os comandos e instruções acima:

/**********************************************************************************************
** Programa: bmor05z.p
** Função...: browse na tabela sige (obs. Progress versão 7 for Unix)
** Cliente....: CBTU
** Data........: 16/01/2001
** Autor........: Célio de Oliveira – Uniwork Consulting
** Supervisor: Renato Magalhães
** Revisão....:
***********************************************************************************************/
DEF SHARED VAR registro AS recid.
DEF SHARED VAR quebras AS CHAR FORMAT “x(10)”.
DEF SHARED VAR req-zoom AS CHAR FORMAT “x(08)”.
DEF QUERY q-sige FOR sige.

DEF BROWSE b-sige QUERY q-sige


DISPLAY sige.cd-grupo COLUMN-LABEL “Cd_Grupo”
sige-cod-sige COLUMN-LABEL “ Codigo_Sige ”
sige.ano-sige COLUMN-LABEL “Ano”
sige.cs-descricao1 FORMAT “x(35)” COLUMN-LABEL “Descricao”
WITH 11 DOWN TITLE “Selecao de Codigo Sige”.

FORM
b-sige WITH FRAME abc CENTERED OVERLAY ROW 04 NO-BOX.

VIEW FRAME abc.


ON WINDOW-CLOSE OF CURRENT-WINDOW HIDE FRAME abc NO-PAUSE.

IF quebra = “grupo” THEN


OPEN QUERY q-sige FOR EACH sige
WHERE sige.cd-grupo MATCHES req-zoom
AND sige.cs-situacao = yes
USE-INDEX grupo-ano-sige.
ELSE OPEN QUERY q-sige FOR EACH sige
WHERE sige.cs-situacao = yes

_______________________________________________________________________________________________________________________________
INTRODUÇÃO A BANCO DE DADOS, ADM.E DESENV.PROGRESS CHAR, PRODUTOS DATASUL E PADRÃO DESENVOLVIMENTO 44
Autor: Célio de Oliveira - celio.oliveira@brfree.com.br – Material não homologado – STI Consultoria e Serviços Ltda
INTRODUÇÃO A PROGRAMAÇÃO PROGRESS _
USE-INDEX sige-ano.
ENABLE b-sige WITH FRAME abc.

APPLY ´ENTER´TO b-sige IN FRAME abc.


MESSAGE “Use <SETAS-UP/DOWN> ou <PG-UP/PG-DOWN> para navegar. ” +
“ <ENTER> Seleciona. “.

WAIT-FOR WINDOW-CLOSE OF CURRENT-WINDOW


OR ´return´ OF CURRENT-WINDOW.

IF LASTKEY = KEYCODE(“enter”) THEN DO:


registro = recid(sige).
HIDE MESSAGE NO-PAUSE.
HIDE FRAME abc NO-PAUSE.
END.

>>>>>> // <<<<<<

Faça o laboratório número 07 do anexo.

FERRAMENTAS ESSENCIAIS

COMPILER
Na opção Compiler do Procedure Editor, é possível testar uma aplicação:

 RUN
Executa (f2) o programa corrente no buffer ativo do editor.

 CHECK SYNTAX
Checa a sintaxe do programa corrente no buffer ativo do editor.

 DEBUG
Inicializa o processo Debug para o programa corrente no buffer ativo do editor.
Obs. Na opção Help do editor detalhe-se as mensagens recebidas durante a compilação
e/ou execução dos programas.

TOOLS

_______________________________________________________________________________________________________________________________
INTRODUÇÃO A BANCO DE DADOS, ADM.E DESENV.PROGRESS CHAR, PRODUTOS DATASUL E PADRÃO DESENVOLVIMENTO 45
Autor: Célio de Oliveira - celio.oliveira@brfree.com.br – Material não homologado – STI Consultoria e Serviços Ltda
INTRODUÇÃO A PROGRAMAÇÃO PROGRESS _
 ADMIN
O “admin”, parte integrante do “data administration”, tem por finalidade maior:

_ gerar arquivos .d (dump) com os dados de tabelas Progress;


_ carregar dados dos arquivos .d (load) de tabelas Progress para um banco Progress;
_ exportar dados para arquivos externos, nos padrões dif, sylk, text e MS word merge data.
_ importar dados nos padrões dif, sylk, delemited text, fixed-length. No formato delemited
text deve ser informado o caracter delimitador.

 APPLICATION COMPILER
O Application Compiler, como o próprio nome diz, é o aplicativo cuja a finalidade é
administração um conjunto de compilações, dentro dos parâmetros estabelecidos em sua
tela:

_______________________________________________________________________________________________________________________________
INTRODUÇÃO A BANCO DE DADOS, ADM.E DESENV.PROGRESS CHAR, PRODUTOS DATASUL E PADRÃO DESENVOLVIMENTO 46
Autor: Célio de Oliveira - celio.oliveira@brfree.com.br – Material não homologado – STI Consultoria e Serviços Ltda
INTRODUÇÃO A PROGRAMAÇÃO PROGRESS _
No menu (cabeçalho) temos as seguinte opções e sub-opções:
File: exit.
Compile: Start Compile F2
Tools: Data Dictionary, Procedure Editor, ... , Pro*tools, ...
Options: Configura-se a saída (resultado) da compilação, ou seja, pode gerar ou não um
arquivo log.

Na janela central informa-se o(s) caminho(s), o(s) nome(s) e o(s) tipo(s) de arquivo(s) a ser(em)
compilado(s).
Obs. Aceita-se a utilização de Meta-Caracteres.

Abaixo da janela central possibilita-se a configurar:


_ Save New .r Files: se os novos arquivos compilados (.r) serão gravados.
_ Remove Old .r. Files: Se os arquivos compilados (.r) anteriormente serão removidos,
independente de erros e/ou gravação dos novos arquivos .r.
_ Look in Subdirectories: Se os arquivos a serem compilados devem ser procurados nos
subdiretórios, do diretório especificado para compilação.
_ Only Compile if No .r File: Compila apenas os arquivos que não possuem uma versão
compilada.

Nos botões, na parte inferior da tela, especifica-se:


_ O caminho da lista de arquivos a serem compilados (Propath).
_ Acrescenta, modifica e exclui arquivos na lista de arquivos a serem compilados (Add, Modify,
Delete).
_ Inicializa a compilação (Start Compile).

Obs: Podemos compilar e salvar os programas compilados, diretamente no Procedure Editor,


usando o comando COMPILE.
Sintaxe: COMPILE path/lista-programas [SAVE].
Onde path = caminho onde estão os programas a serem compilados;
lista-programas = lista de programas a serem compilados;
SAVE = salvar o novo .r (programa compilado).

_______________________________________________________________________________________________________________________________
INTRODUÇÃO A BANCO DE DADOS, ADM.E DESENV.PROGRESS CHAR, PRODUTOS DATASUL E PADRÃO DESENVOLVIMENTO 47
Autor: Célio de Oliveira - celio.oliveira@brfree.com.br – Material não homologado – STI Consultoria e Serviços Ltda
INTRODUÇÃO A PROGRAMAÇÃO PROGRESS _

INTRODUÇÃO A CONFIGURAÇÃO DE AMBIENTE PROGRESS

 PROPATH EDITOR
Em todas a opções “tools”, encontra-se a sub-opção PRO*TOOLS, lista de ferramentas
para desenvolvimento e configuração do ambiente de desenvolvimento.

Dentre as opções, encontra-se o PROPATH EDITOR:

Este pequeno editor tem por finalidade definir os principais caminhos para uma aplicação,
ou seja, onde deve ser procurado os arquivos (programas por exemplo) referidos pela
aplicação.

 ARQUIVO DE INICIALIZAÇÃO (.ini)


Na instalação do Progress, o arquivo progress.ini é automaticamente criado no diretório
DLC/bin. Este arquivo tem por finalidade registrar alguns parâmetros e variáveis de
configuração de ambiente, conforme a plataforma de instalação do Progress.
Na instalação de aplicativos desenvolvidos em Progress, há necessidade de reconfigurar
alguns parâmetros, desta forma ao instalar o EMS também é criado um arquivo .ini.

 ARQUIVO DE PARÂMETROS (.pf)


Os arquivos .pf são responsáveis por fornecer os parâmetros da sessão cliente/servidor.
Principais parâmetro do arquivo .pf:
-db banco: identifica o nome do banco a conectar.
-1: conecta o banco de dados no modo mono-usuários.
-a arquivo: especifica se o arquivo after-image será usado e o nome do mesmo.
-b: se a inicialização da sessão será em batch, sem a intervenção do usuário em caso de
erro.
-basekey texto –ininame arquivo.ini: indica o arquivo .ini para configurar a sessão.
-B n: indica o número de blocos de memória a ser colocado no buffer de cada usuário.
_______________________________________________________________________________________________________________________________
INTRODUÇÃO A BANCO DE DADOS, ADM.E DESENV.PROGRESS CHAR, PRODUTOS DATASUL E PADRÃO DESENVOLVIMENTO 48
Autor: Célio de Oliveira - celio.oliveira@brfree.com.br – Material não homologado – STI Consultoria e Serviços Ltda
INTRODUÇÃO A PROGRAMAÇÃO PROGRESS _
-c n: indica o número de índices a ser usado em alguns comandos como for each.
-d ndy: especifica o formato da data .
-d banco: define o nome físico do banco de dados a ser conectado.
-E: define a apresentação dos campos decimais no formato europeu.
-g arquivo: especifica o arquivo before-image.
-F: força o acesso ao banco de dados no estado de recuperação.
-h n: define o número de banco a serem conectados na sessão.
-I n: tamanho do buffer local.
-i: manipula dados diretamente no banco físico, ignorando o controle de transações.
-L n: define o número de travamentos de registros no servidor.
-ld nome: define o nome lógico do banco a ser conectado.
-n n: define o número de usuários que podem se conectar no banco a mesmo tempo.
-p procedure: define a procedure a ser executada ao início da sessão.

Exemplos de arquivos .pf


C:\MAGNUS\DLC82CL\bin\prowin32.exe -basekey "ini" -ininame c:\cursott\EMS201.ini -pf
c:\cursott\ems201.pf –pf SCRIPTS\desenv.pf -inp 8192

W:\dlc9\bin\prowin32.exe -basekey "ini" -ininame scripts\ems2.ini -pf scripts\ems2.pf -pf scripts\ems2mult2.pf –


p men/men902za.p -param MAN

W:\dlc9\bin\prowin32.exe -basekey "ini" -ininame scripts\ems2.ini -pf scripts\ems2.pf -pf scripts\ems2mult.pf -p


men/men902za.p -param DIS

>>>>>> // <<<<<<

_______________________________________________________________________________________________________________________________
INTRODUÇÃO A BANCO DE DADOS, ADM.E DESENV.PROGRESS CHAR, PRODUTOS DATASUL E PADRÃO DESENVOLVIMENTO 49
Autor: Célio de Oliveira - celio.oliveira@brfree.com.br – Material não homologado – STI Consultoria e Serviços Ltda
INTRODUÇÃO A PROGRAMAÇÃO PROGRESS _

VISÃO GERAL DOS PRINCIPAIS PRODUTOS DATASUL


HR
Sistema de Administração de Recursos Humanos

DATA VIEWER
Sistema Gerador de Relatórios

DDK
Templates Datasul

EMS
O Datasul-EMS é um Sistema Integrado de Gestão Empresarial desenvolvido pela Datasul
S.A., na linguagem de 4ª geração Progress. O EMS é composto por uma base de dados,
programas diversos de cada módulo e scripts de manutenção e uso correto do software.

 VERSÕES
O Datasul-EMS, lançado em escala inicialmente como EMS 2.00, possui hoje uma grande
base instalada, na sua maior parte da versão 2.02.

 PRINCIPAIS MÓDULOS
Em linhas gerais o produto Datasul-EMS, divide-se em: aplicativo (exs. tecnologia,
controladoria e finanças, materiais, manufatura, distribuição e integração), sistema (exs.
módulo básico, administrador, bancos históricos), módulo (exs. básico datasul-ems, menu,
documentação, segurança), rotina (ex. manutenção, tarefas, consulta, relatório), sub-rotina
(ex. manutenção impressora), procedimento (ex. configuração de impressora), programa
(ex. inclui configuração de impressora).
Para o desenvolvedor é importante conhecer o módulo Básico do aplicativo Tecnologia,
para não ter total dependência do administrador do sistema. Neste módulo, rotina
Manutenção, localiza-se o cadastro de impressoras, o cadastro do layout de impressão,
tabelas do dicionário de dados Datasul, arquivos imagem/vídeo/som.
No módulo Menu, rotina Opções, sub-rotina Configurar Ícones, o usuário pode colocar no
“frame” do EMS, ícones para calculadora, editor do Progress, bloco de notas, Word, etc (12
no máximo).

 INICIALIZAÇÃO
O procedimento de entrada/saída pode ser realizado em qualquer menu do Datasul, na
rotina Usuário, sub-rotina Login. Para que o nome do usuário seja mostrado toda vez que o
programa login for acessado, é necessário que o nome do usuário em questão esteja
informado no procedimento Preferência do Usuário.
Caso o usuário erre sua senha 3 vezes consecutivas, o procedimente será encerrado
automaticamente. O usuário executa seu login e acessa diretamente o aplicativo de seu
interesse clicando inicialmente no ícone deste aplicativo. No entanto, pode-se navegar entre
os aplicativos que compõem o produto a qualquer momento.

 CADASTRO DE PROGRAMAS
No módulo menu, rotina Manutenção encontra-se os cadastros de Produto, Aplicativo,
Sistema, Módulo, Rotina x Módulo, Rotina, Sub-Rotina, Procedimento e Programa.
_______________________________________________________________________________________________________________________________
INTRODUÇÃO A BANCO DE DADOS, ADM.E DESENV.PROGRESS CHAR, PRODUTOS DATASUL E PADRÃO DESENVOLVIMENTO 50
Autor: Célio de Oliveira - celio.oliveira@brfree.com.br – Material não homologado – STI Consultoria e Serviços Ltda
INTRODUÇÃO A PROGRAMAÇÃO PROGRESS _
Na sub-rotina Programa, cadastra-se o programa usado no procedimento, inclusive EPCs.

 LAY-OUT DE IMPRESSÃO
No datasul-EMS define-se um ou mais lay-outs de impressão para uma impressora. Este
lay-out parametriza o número de linhas por página, número de colunas por linhas,
espaçamento e margens, fontes, etc.

>>>>>> // <<<<<<

_______________________________________________________________________________________________________________________________
INTRODUÇÃO A BANCO DE DADOS, ADM.E DESENV.PROGRESS CHAR, PRODUTOS DATASUL E PADRÃO DESENVOLVIMENTO 51
Autor: Célio de Oliveira - celio.oliveira@brfree.com.br – Material não homologado – STI Consultoria e Serviços Ltda
INTRODUÇÃO A PROGRAMAÇÃO PROGRESS _

PADRÃO DE PROGRAMAÇÃO

CONCEITOS
 EPC
São programas desenvolvidos e configurados para ser executados em um ponto específico
de um programa Datasul. Sua finalidade é adaptar o produto Datasul e/ou integrar o
Datasul-EMS com outro produto.
Uma EPC pode ser disparada a partir de um evento na rotina ou em um evento do
dicionário de dados. No módulo Menu do Datasul-EMS  Manutenção  Programas,
pode-se cadastrar o caminho e o nome físico de uma EPC a ser chamada na execução do
programa.
Obs. Conceitualmente uma EPC é a junção de uma APPC e uma UPC.

 APPC
Application Partner Program Call – É um EPC realizada pelas Franquias.

 UPC
User Program Call - é uma EPC realizada pelo cliente.

 RPC
Remote Procedure Call (chamadas remotas a procedimentos) é um conceito adotado pela
Datasul, conhecido como programas, ou parte destes, executados em uma outra máquina
de forma remota (Servidor de Aplicação).

 RPW
Remote Procedure Wait (espera por procedimento remoto) consiste em executar programas
remotamente através de um servidor de aplicação onde, o usuário parametriza a execução
do programa (servidor, data, hora, etc, da execução).

 API
Uma API é uma programa que recebe certos parâmetros destinados a executar uma tarefa
específica no Datasul-EMS. Como gerar uma planilha no Excel com dados oriundos do
Datasul-EMS, por exemplo. Em outras palavras é uma interface aberta para funções
específicas.
Uma API pode realizar operações de manutenções na base de dados Datasul e retornar o
resultado da operação, ou seja, “OK” se a operação se concretizou corretamente ou “NOK”
se a operação foi incorreta.
Toda API criada pela Datasul é padronizada e documentada no diretório docapi, com
extensão .doc, onde é especificado os objetivos, parâmetros de entrada/saída e mensagens
de erros no processamento.
As principais API´s possuem as seguintes finalidades:
_ Gerar e exibir gráficos de acordo com os parâmetros passados;
_ Integração entre Progress e Microsoft Word;
_ Integração entre Progress e Microsoft Excel;
_ Envio de E-Mail ou Fax através, através do EMS, usando MS-Exchange (OLE
Automation);
_ Envio de E-Mail, através do EMS, usando um servidor UNIX ou outro servidor que use o
protocolo SMTP;
_ Busca de dados de uma planilha Excel para o Progress;
_ Uso de funções do Excel para retornar os resultados para um programa Progress.
_______________________________________________________________________________________________________________________________
INTRODUÇÃO A BANCO DE DADOS, ADM.E DESENV.PROGRESS CHAR, PRODUTOS DATASUL E PADRÃO DESENVOLVIMENTO 52
Autor: Célio de Oliveira - celio.oliveira@brfree.com.br – Material não homologado – STI Consultoria e Serviços Ltda
INTRODUÇÃO A PROGRAMAÇÃO PROGRESS _

NOMENCLATURA
As regras de nomenclatura completas, inclusive para atributos, tabelas e gatilhos, padrão
Datasul encontram-se no Manual de Padrões Datasul.

- BANCOS
Para cada banco de dados do Datasul-EMS e Datasul-HR, foi determinado uma sigla
com dois dígitos. Os principais bancos são:
 MGADM – AD – banco administrativo
 MGCLD – CL – banco coletor de dados
 MGDIS – DI – banco distribuição
 MGIND – IN – banco industrial
 MGINV – IV – banco investimentos
 MGMP – MP – banco multiplanta
 MGUN – UN – banco universal
 MGPE – PE – banco ponto eletrônico
 NGRH – RH – banco recursos humanos

- MÓDULOS
Cada módulo possui uma sigla para ser utilizada na definição dos nomes de seus
programas e diretórios, como exemplo, podemos citar alguns dos principais módulos:
 CT – contabilidade
 CB – caixa e bancos
 AP – contas a pagar
 CR – contas a receber
 CE – controle de estoque
 CP – controle de produção
 CQ – controle de qualidade
 QO – cotação de vendas
 CS – custos
 DP – desenvolvimento de produto
 EN – engenharia
 FT – faturamento
 PD – pedidos

- PROGRAMAS
Os programas são nomeados pelo tipo e estilo.
a) .W – programa com interface gráfica. yyXX999, onde yy é a sigla do cliente, xx é o
módulo e 999 é o número sequencial.
b) .P: programa sem interface gráfica que segue a mesma regra de nomenclatura acima e
podem ser acrescido das letras rp (relatório padrão) nos casos de formulários padrões
do cliente, como emissão de pedidos por exemplo.
c) BROWSER: programa tipo browser. b99xx999.w, onde b = browser, 99 = número
sequencial do tipo do objeto, xx – sigla do cliente e 999 = número sequencial por tabela
de dados principal.
d) QUERY: programa tipo query. Obedece a mesma regra de nomenclatura do browser,
evidentemente inicia-se com q (query) no lugar de b (browser).
e) GO: programa do tipo “vá para”. Obedece a mesma regra de nomenclatura do browser,
evidentemente inicia-se com g (go) no lugar de b (browser).
_______________________________________________________________________________________________________________________________
INTRODUÇÃO A BANCO DE DADOS, ADM.E DESENV.PROGRESS CHAR, PRODUTOS DATASUL E PADRÃO DESENVOLVIMENTO 53
Autor: Célio de Oliveira - celio.oliveira@brfree.com.br – Material não homologado – STI Consultoria e Serviços Ltda
INTRODUÇÃO A PROGRAMAÇÃO PROGRESS _
f) ZOOM: programa do tipo “pesquisa”. Obedece a mesma regra de nomenclatura do
browser, evidentemente inicia-se com z (zoom) no lugar de b (browser).

- VARIÁVEIS
Para criação de variáveis, as seguintes regras devem ser seguidas: char (c-var), int (i-var),
data (da-var), dec (de-var), handle (h-var), lóg (l-var), raw (raw-var), rowid (rw-var) e widget-
handle (wh-var).

- OBJETOS
Para nomenclatura de objetos, aplica-se as regras: botão (bt-obj), browse (br-obj), combo-
box (cb-obj), fill-in (fi-obj), radio-set (rs-obj), retangulo (rt-obj), selection-list (sl-obj), slider
(sl-obj), toogle-box (tb-obj).

- DIRETÓRIOS
No geral, os diretórios são criados por módulos e tipos de arquivos, obedecendo a seguinte
sintaxe: xxtipo. Onde xx é a sigla do módulo e tipo é o tipo de arquivo.
Exemplo: \CDP – programas do módulo Cadastro.
Programas que são objetos são gravados nos diretórios xxbrw(browser), xxdialog(dialog),
xxgo (vá para), xxqry(query), xxvwr(viewer) e xxzoom(pesquisa). Onde xx é a sigla do
banco de dados da tabela principal do objeto.

- PRINCIPAIS INCLUDES/UTILITÁRIOS
Vários includes padrões acompanham o produto EMS com a finalidade de auxiliar no
desenvolvimento de customizações e manter o padrão na implementação do produto.
Abaixo resumimos os includes/utilitários mais usados em customização. Lembramos que a
finalidade deste resumo é familiarizar os profissionais com recursos disponíveis e
que fatalmente serão usados no desenvolvimento pelo DDK. Portanto, maiores
detalhes a respeito destes, serão encontrados no manual de padrões Datasul.

UT-FIELD.I
Retorna propriedades dos campos do dicionário de dados:
{utp/ut-field.i <banco-lógico> <tabela> <campo> <propriedade>
onde propriedade = 1(label), 2(column-label), 3(help), 4(format), 5(initial), 6(description,
7(type)

UT-RTLBL.I
Permite a utilização de literais para colar labels em retângulos usados em radio-set por
exemplo.
{utp/ut-rtlbl.i <bco-lógico> <tabela> <campo> <objeto>
onde objeto = a nomenclatura da forma de visão do objeto. Ex.FILL-IN VIEW-AS TEXT.

UT-RUN.I
Executa programas sem interfaces (.p) a partir de uma interface (.w). utiliza-se o recurso
RPC.
Obs1. Requer a utilização dos includes ut-glob.i e btb008za.io para definições de variáves e
funções.
{utp/ut-run.i xxp/xx9999rp.p}
Obs2. Este include possue diversas sintaxes na passagem de parâmetros em uma RPC.

UT-MSGS.P
Apresenta uma mensagem do cadastro de mensagens do produto (UT-CDMSG.W).
Run utp/ut-msgs.p (input <ação> input <nº-msg> input <parâmetros>}.
_______________________________________________________________________________________________________________________________
INTRODUÇÃO A BANCO DE DADOS, ADM.E DESENV.PROGRESS CHAR, PRODUTOS DATASUL E PADRÃO DESENVOLVIMENTO 54
Autor: Célio de Oliveira - celio.oliveira@brfree.com.br – Material não homologado – STI Consultoria e Serviços Ltda
INTRODUÇÃO A PROGRAMAÇÃO PROGRESS _
Onde ação = show(msg/help), msg(mensagem), help(ajuda), type (erro, aviso, informação,
questão)
Parâmetros = campos, tabelas e/ou palavras. Entre os parâmetros usa-se “~~” + .

IND01-10.I, IND11-50.I e IND51500.I


Representa campos inteiros na forma de rádio-sets ou combo-box.
{include/ind01-10 {função} {parâmetro}}.
Onde função = 01 (combo-box), 02(radio-set),03(itens), 04n(retorna o item n), 05(retorna o
nº de itens),
06item(retorna a posição item),07(retorna valores para a propriedade radio-buttons)
parãmetro = parâmetros das funções 4 e 6.

UT-TABLE.I
Retorna as propriedades de uma tabela. Útil nos SmartBrowsers para por label em campos.
{utp/ut-table.i <bco-lógico> <tabela> <propriedade>}
onde propriedade = 1(file-label), 2(dump_name), 3(description)

UT-LITER.I
Utiliza o cadastro de literais do EMS.
{utp/ut-liter.i <literal> <módulo> <alinhamento>}.
Onde módulo pode ser universal(*) e alinhamento = L(a esquerda), C(centralizado), R(a
direita)

UT-LIMIT.P
Determina o valor inicial e final de campos caracter de formato variável, como conta-
contabil.
Run utp/ut-limit.p (input <opção> <formato>).
Onde opção = indica o limite(MIN/MAX) e formato é o próprio formato do campo.

UT-GLOB.I
Define variáveis globais como código da empresa, nome do usuário corrente.
Obs. Já vêm com a definição pronta dentro dos SmartsObjetos.

I-FREEAC.I
Converte strings acentuadas e caracteres especiais para caracteres sem acento e simples.
{include/i-freeac.i}
ASSIGN variável = fn-free-accent(“string-a-ser-convertida”).

UT-DIR.P
Utilizado quando o usuário informar o diretório.
RUN utp/ut-dir.p (input “título”, OUTPUT <pasta>, OUTPUT <cancelado>).
Onde título = mensagem transmitida ao usuário na caixa de diálogo
pasta = variável char que retornará com o diretório escolhido
cancelado = variável lógica com o status do botão cancelado.

BTB917ZX.P
Executa arquivos tipo MID e WAV.
RUN btb/btb917zx.p (input <som>).
Onde som é o caminho completo e o nome do arquivo a ser executado.
Obs. Requer a instalação de OCX Datasul(setup.exe no dir.\interfac\som\).

_______________________________________________________________________________________________________________________________
INTRODUÇÃO A BANCO DE DADOS, ADM.E DESENV.PROGRESS CHAR, PRODUTOS DATASUL E PADRÃO DESENVOLVIMENTO 55
Autor: Célio de Oliveira - celio.oliveira@brfree.com.br – Material não homologado – STI Consultoria e Serviços Ltda
INTRODUÇÃO A PROGRAMAÇÃO PROGRESS _
BTB917ZY.P
Permite a visualização de arquivos .bmp, .gif, .jped, .vmf, .wmf, .emf, .ico e .cur.
RUN btb/btb917zy.p (input <imagem>).
Onde imagem é o caminho completo e o nome do arquivo a ser executado.
Obs. Requer a instalação de OCX Datasul(setup.exe no dir.\interfac\imagem\).

BTB917ZZ.P
Permite a visualização de vídeos tipo AVI.
RUN btb/btb917zz.p (input <vídeo>).
Onde vídeo é o caminho completo e o nome do arquivo a ser executado.
Obs. Requer a instalação de OCX Datasul(setup.exe no dir.\interfac\video\disk1).

UT-VRBIN.P
Informa a versão de um programa compilado.
Run utp/ut-vrbin.p (input <arquivo>, input <acomp>, output <versão>).
Onde arquivo = programa compilado, acomp = variável lógica para a tela de
acompanhamento.
Obs. Para programas no padrão Datasul. Caso não encontrado o retorno será nulo(?).

UT-FINFO.P
Informa data/hora/tamanho de um arquivo no Windows.
RUN utp/ut-finfo.p (input <arquivo>, output <data>, output <hora>, output <tamanho>).

UT-CDMLN.P
Mostra informações da linha de comando usada para abrir a sessão corrente.
RUN utp/ut-cmdln.p (output <linha-de-comando>).
Onde linha-de-comando = valores dos parâmetros da sessão (.ini, .inp, basekey, etc.).

UT-OSVER.P
Informa a versão do sistema Windows.
RUN utp/ut-osver.p (output <plataforma>, output <versão>, output <release>, output
<build>, output <extrainfo>).
>>>>>> // <<<<<<

_______________________________________________________________________________________________________________________________
INTRODUÇÃO A BANCO DE DADOS, ADM.E DESENV.PROGRESS CHAR, PRODUTOS DATASUL E PADRÃO DESENVOLVIMENTO 56
Autor: Célio de Oliveira - celio.oliveira@brfree.com.br – Material não homologado – STI Consultoria e Serviços Ltda
INTRODUÇÃO A PROGRAMAÇÃO PROGRESS _

REFERÊNCIAS

_ Progress Language Reference – Volume 1

_ Progress Language Reference – Volume 2

_ Pocket Progress

_ DATASUL: Manual do Administrador – Datasul EMS 2.0

_ DATASUL: Módulo Básico Datasul-EMS

_ DATASUL: Manual de Padrões e Programação EMS 2.0

_______________________________________________________________________________________________________________________________
INTRODUÇÃO A BANCO DE DADOS, ADM.E DESENV.PROGRESS CHAR, PRODUTOS DATASUL E PADRÃO DESENVOLVIMENTO 57
Autor: Célio de Oliveira - celio.oliveira@brfree.com.br – Material não homologado – STI Consultoria e Serviços Ltda
INTRODUÇÃO A PROGRAMAÇÃO PROGRESS _

ANEXO

LISTA DE LABORATÓRIOS

01) Banco de Dados


_Crie um banco de dados, chamado PCP, no diretório c:\treinamento.
_Crie duas tabelas para o banco de dados acima:

TABELA CAMPO FORMATO(TIPO)


produto cod-produto 9999
descrição xxxxxxxxxxxxxxxxxxxx
preço médio >>>,>>>,>>9.9999
outros (se desejar)
fornecedor cod-fornec 9999
nome xxxxxxxxxxxxxxxxxxxx
outros (se desejar)

_ Saia do Progress, entre novamente e conecte o banco recém criado.


_ Gere em arquivo, no diretório c:\treinamento, o Detailed Table do report, para o banco.
_ Analise os arquivos gerados no item acima, com o bloco de notas.

02) Manipulação de Dados


Faça pequenos programas para valorizar (inserir) dados nas tabelas criadas no laboratório
01. Preencha os campos na seguinte forma: Código = 1, descrição = produto/fornecedor
número um, e assim por diante.
No final do exercício, cada tabela deverá ter no mínimo 3 registros cada.
Obs. Todos os comandos da sessão devem ser vistos. Salve os programas no diretório
c:\treinamento.

03) Índices e relacionamentos


_Retorne ao dicionário de dados e acrescente na tabela “produto” o campo: cod-fornec
(9999). Acrescente também um índice primário(único) com a chave = cod-produto.
_Para a tabela fornecedor acrescente um índice primário(único), sendo chave o cod-fornec
e um índice secundário para o campo “nome”.
_ Gere para arquivo, no diretório c:\treinamento, o Detailed Table do report, para o banco.
_ Analise os arquivos gerados no item acima, com o bloco de notas.

04) Classificação de dados, formatação de telas

_______________________________________________________________________________________________________________________________
INTRODUÇÃO A BANCO DE DADOS, ADM.E DESENV.PROGRESS CHAR, PRODUTOS DATASUL E PADRÃO DESENVOLVIMENTO 58
Autor: Célio de Oliveira - celio.oliveira@brfree.com.br – Material não homologado – STI Consultoria e Serviços Ltda
INTRODUÇÃO A PROGRAMAÇÃO PROGRESS _
Escreva um programa que mostre os dados da tabela produto: um registro por vez, em uma
coluna e em ordem alfabética pela descrição.

05) Relatório
_Escreva um relatório, com saída em arquivo, para “produto” e um para “fornecedor”.

06) Menu: Rotina Externa, Procedure, Include, Importação/Exportação de dados


_Crie um menu com as seguintes opções: listar produtos, listar fornecedores, exportar
dados (tabela fornecida pelo usuário) e importar dados tabela fornecedor.
Obs. Listar produtos/fornecedores deve ser rotina externa, exportar dados uma include e
importar dados uma procedure interna.

07) Controle de Concorrências e Browse


- Crie um browse para selecionar um produto e mostrar os dados do fornecedor do mesmo.

_______________________________________________________________________________________________________________________________
INTRODUÇÃO A BANCO DE DADOS, ADM.E DESENV.PROGRESS CHAR, PRODUTOS DATASUL E PADRÃO DESENVOLVIMENTO 59
Autor: Célio de Oliveira - celio.oliveira@brfree.com.br – Material não homologado – STI Consultoria e Serviços Ltda

Você também pode gostar