apostila de programação progress char - volume 1.pdf

59
INTRODUÇÃO A PROGRAMAÇÃO PROGRESS _ _______________________________________________________________________________________________________________________________ INTRODUÇÃO A BANCO DE DADOS, ADM.E DESENV.PROGRESS CHAR, PRODUTOS DATASUL E PADRÃO DESENVOLVIMENTO 1 Autor: Célio de Oliveira - [email protected] Material não homologado STI Consultoria e Serviços Ltda 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.

Upload: gianwinckler

Post on 01-Dec-2015

1.456 views

Category:

Documents


30 download

TRANSCRIPT

Page 1: Apostila de Programação PROGRESS CHAR - Volume 1.pdf

INTRODUÇÃO A PROGRAMAÇÃO PROGRESS _

_______________________________________________________________________________________________________________________________

INTRODUÇÃO A BANCO DE DADOS, ADM.E DESENV.PROGRESS CHAR, PRODUTOS DATASUL E PADRÃO DESENVOLVIMENTO 1

Autor: Célio de Oliveira - [email protected] – Material não homologado – STI Consultoria e Serviços Ltda

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.

Page 2: Apostila de Programação PROGRESS CHAR - Volume 1.pdf

INTRODUÇÃO A PROGRAMAÇÃO PROGRESS _

_______________________________________________________________________________________________________________________________

INTRODUÇÃO A BANCO DE DADOS, ADM.E DESENV.PROGRESS CHAR, PRODUTOS DATASUL E PADRÃO DESENVOLVIMENTO 2

Autor: Célio de Oliveira - [email protected] – Material não homologado – STI Consultoria e Serviços Ltda

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).

Page 3: Apostila de Programação PROGRESS CHAR - Volume 1.pdf

INTRODUÇÃO A PROGRAMAÇÃO PROGRESS _

_______________________________________________________________________________________________________________________________

INTRODUÇÃO A BANCO DE DADOS, ADM.E DESENV.PROGRESS CHAR, PRODUTOS DATASUL E PADRÃO DESENVOLVIMENTO 3

Autor: Célio de Oliveira - [email protected] – Material não homologado – STI Consultoria e Serviços Ltda

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.

Page 4: Apostila de Programação PROGRESS CHAR - Volume 1.pdf

INTRODUÇÃO A PROGRAMAÇÃO PROGRESS _

_______________________________________________________________________________________________________________________________

INTRODUÇÃO A BANCO DE DADOS, ADM.E DESENV.PROGRESS CHAR, PRODUTOS DATASUL E PADRÃO DESENVOLVIMENTO 4

Autor: Célio de Oliveira - [email protected] – Material não homologado – STI Consultoria e Serviços Ltda

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.

Page 5: Apostila de Programação PROGRESS CHAR - Volume 1.pdf

INTRODUÇÃO A PROGRAMAÇÃO PROGRESS _

_______________________________________________________________________________________________________________________________

INTRODUÇÃO A BANCO DE DADOS, ADM.E DESENV.PROGRESS CHAR, PRODUTOS DATASUL E PADRÃO DESENVOLVIMENTO 5

Autor: Célio de Oliveira - [email protected] – Material não homologado – STI Consultoria e Serviços Ltda

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.

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

Page 6: Apostila de Programação PROGRESS CHAR - Volume 1.pdf

INTRODUÇÃO A PROGRAMAÇÃO PROGRESS _

_______________________________________________________________________________________________________________________________

INTRODUÇÃO A BANCO DE DADOS, ADM.E DESENV.PROGRESS CHAR, PRODUTOS DATASUL E PADRÃO DESENVOLVIMENTO 6

Autor: Célio de Oliveira - [email protected] – Material não homologado – STI Consultoria e Serviços Ltda

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.

Page 7: Apostila de Programação PROGRESS CHAR - Volume 1.pdf

INTRODUÇÃO A PROGRAMAÇÃO PROGRESS _

_______________________________________________________________________________________________________________________________

INTRODUÇÃO A BANCO DE DADOS, ADM.E DESENV.PROGRESS CHAR, PRODUTOS DATASUL E PADRÃO DESENVOLVIMENTO 7

Autor: Célio de Oliveira - [email protected] – Material não homologado – STI Consultoria e Serviços Ltda

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. (*)

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

Page 8: Apostila de Programação PROGRESS CHAR - Volume 1.pdf

INTRODUÇÃO A PROGRAMAÇÃO PROGRESS _

_______________________________________________________________________________________________________________________________

INTRODUÇÃO A BANCO DE DADOS, ADM.E DESENV.PROGRESS CHAR, PRODUTOS DATASUL E PADRÃO DESENVOLVIMENTO 8

Autor: Célio de Oliveira - [email protected] – Material não homologado – STI Consultoria e Serviços Ltda

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:

Page 9: Apostila de Programação PROGRESS CHAR - Volume 1.pdf

INTRODUÇÃO A PROGRAMAÇÃO PROGRESS _

_______________________________________________________________________________________________________________________________

INTRODUÇÃO A BANCO DE DADOS, ADM.E DESENV.PROGRESS CHAR, PRODUTOS DATASUL E PADRÃO DESENVOLVIMENTO 9

Autor: Célio de Oliveira - [email protected] – Material não homologado – STI Consultoria e Serviços Ltda

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 Databasecaminho/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:

Page 10: Apostila de Programação PROGRESS CHAR - Volume 1.pdf

INTRODUÇÃO A PROGRAMAÇÃO PROGRESS _

_______________________________________________________________________________________________________________________________

INTRODUÇÃO A BANCO DE DADOS, ADM.E DESENV.PROGRESS CHAR, PRODUTOS DATASUL E PADRÃO DESENVOLVIMENTO 10

Autor: Célio de Oliveira - [email protected] – Material não homologado – STI Consultoria e Serviços Ltda

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.

Page 11: Apostila de Programação PROGRESS CHAR - Volume 1.pdf

INTRODUÇÃO A PROGRAMAÇÃO PROGRESS _

_______________________________________________________________________________________________________________________________

INTRODUÇÃO A BANCO DE DADOS, ADM.E DESENV.PROGRESS CHAR, PRODUTOS DATASUL E PADRÃO DESENVOLVIMENTO 11

Autor: Célio de Oliveira - [email protected] – Material não homologado – STI Consultoria e Serviços Ltda

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

Page 12: Apostila de Programação PROGRESS CHAR - Volume 1.pdf

INTRODUÇÃO A PROGRAMAÇÃO PROGRESS _

_______________________________________________________________________________________________________________________________

INTRODUÇÃO A BANCO DE DADOS, ADM.E DESENV.PROGRESS CHAR, PRODUTOS DATASUL E PADRÃO DESENVOLVIMENTO 12

Autor: Célio de Oliveira - [email protected] – Material não homologado – STI Consultoria e Serviços Ltda

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

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

Page 13: Apostila de Programação PROGRESS CHAR - Volume 1.pdf

INTRODUÇÃO A PROGRAMAÇÃO PROGRESS _

_______________________________________________________________________________________________________________________________

INTRODUÇÃO A BANCO DE DADOS, ADM.E DESENV.PROGRESS CHAR, PRODUTOS DATASUL E PADRÃO DESENVOLVIMENTO 13

Autor: Célio de Oliveira - [email protected] – Material não homologado – STI Consultoria e Serviços Ltda

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,

Page 14: Apostila de Programação PROGRESS CHAR - Volume 1.pdf

INTRODUÇÃO A PROGRAMAÇÃO PROGRESS _

_______________________________________________________________________________________________________________________________

INTRODUÇÃO A BANCO DE DADOS, ADM.E DESENV.PROGRESS CHAR, PRODUTOS DATASUL E PADRÃO DESENVOLVIMENTO 14

Autor: Célio de Oliveira - [email protected] – Material não homologado – STI Consultoria e Serviços Ltda

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

Page 15: Apostila de Programação PROGRESS CHAR - Volume 1.pdf

INTRODUÇÃO A PROGRAMAÇÃO PROGRESS _

_______________________________________________________________________________________________________________________________

INTRODUÇÃO A BANCO DE DADOS, ADM.E DESENV.PROGRESS CHAR, PRODUTOS DATASUL E PADRÃO DESENVOLVIMENTO 15

Autor: Célio de Oliveira - [email protected] – Material não homologado – STI Consultoria e Serviços Ltda

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 o

parágrafo

: finaliza

abertura

de blocos

? valor nulo

, separa

cadeia de

comandos

/**/ comentário

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.

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

Page 16: Apostila de Programação PROGRESS CHAR - Volume 1.pdf

INTRODUÇÃO A PROGRAMAÇÃO PROGRESS _

_______________________________________________________________________________________________________________________________

INTRODUÇÃO A BANCO DE DADOS, ADM.E DESENV.PROGRESS CHAR, PRODUTOS DATASUL E PADRÃO DESENVOLVIMENTO 16

Autor: Célio de Oliveira - [email protected] – Material não homologado – STI Consultoria e Serviços Ltda

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.

Page 17: Apostila de Programação PROGRESS CHAR - Volume 1.pdf

INTRODUÇÃO A PROGRAMAÇÃO PROGRESS _

_______________________________________________________________________________________________________________________________

INTRODUÇÃO A BANCO DE DADOS, ADM.E DESENV.PROGRESS CHAR, PRODUTOS DATASUL E PADRÃO DESENVOLVIMENTO 17

Autor: Célio de Oliveira - [email protected] – Material não homologado – STI Consultoria e Serviços Ltda

RESUMO DO POSICIONAMENTO DOS DADOS

COMANDOS BANCO DE DADOS

BUFFER REGISTRO

BUFFER TELA

USUÁRIO

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.

Page 18: Apostila de Programação PROGRESS CHAR - Volume 1.pdf

INTRODUÇÃO A PROGRAMAÇÃO PROGRESS _

_______________________________________________________________________________________________________________________________

INTRODUÇÃO A BANCO DE DADOS, ADM.E DESENV.PROGRESS CHAR, PRODUTOS DATASUL E PADRÃO DESENVOLVIMENTO 18

Autor: Célio de Oliveira - [email protected] – Material não homologado – STI Consultoria e Serviços Ltda

/* 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.

Page 19: Apostila de Programação PROGRESS CHAR - Volume 1.pdf

INTRODUÇÃO A PROGRAMAÇÃO PROGRESS _

_______________________________________________________________________________________________________________________________

INTRODUÇÃO A BANCO DE DADOS, ADM.E DESENV.PROGRESS CHAR, PRODUTOS DATASUL E PADRÃO DESENVOLVIMENTO 19

Autor: Célio de Oliveira - [email protected] – Material não homologado – STI Consultoria e Serviços Ltda

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.

Page 20: Apostila de Programação PROGRESS CHAR - Volume 1.pdf

INTRODUÇÃO A PROGRAMAÇÃO PROGRESS _

_______________________________________________________________________________________________________________________________

INTRODUÇÃO A BANCO DE DADOS, ADM.E DESENV.PROGRESS CHAR, PRODUTOS DATASUL E PADRÃO DESENVOLVIMENTO 20

Autor: Célio de Oliveira - [email protected] – Material não homologado – STI Consultoria e Serviços Ltda

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.

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

Page 21: Apostila de Programação PROGRESS CHAR - Volume 1.pdf

INTRODUÇÃO A PROGRAMAÇÃO PROGRESS _

_______________________________________________________________________________________________________________________________

INTRODUÇÃO A BANCO DE DADOS, ADM.E DESENV.PROGRESS CHAR, PRODUTOS DATASUL E PADRÃO DESENVOLVIMENTO 21

Autor: Célio de Oliveira - [email protected] – Material não homologado – STI Consultoria e Serviços Ltda

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:

Page 22: Apostila de Programação PROGRESS CHAR - Volume 1.pdf

INTRODUÇÃO A PROGRAMAÇÃO PROGRESS _

_______________________________________________________________________________________________________________________________

INTRODUÇÃO A BANCO DE DADOS, ADM.E DESENV.PROGRESS CHAR, PRODUTOS DATASUL E PADRÃO DESENVOLVIMENTO 22

Autor: Célio de Oliveira - [email protected] – Material não homologado – STI Consultoria e Serviços Ltda

- 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.

Page 23: Apostila de Programação PROGRESS CHAR - Volume 1.pdf

INTRODUÇÃO A PROGRAMAÇÃO PROGRESS _

_______________________________________________________________________________________________________________________________

INTRODUÇÃO A BANCO DE DADOS, ADM.E DESENV.PROGRESS CHAR, PRODUTOS DATASUL E PADRÃO DESENVOLVIMENTO 23

Autor: Célio de Oliveira - [email protected] – Material não homologado – STI Consultoria e Serviços Ltda

/* 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.

Page 24: Apostila de Programação PROGRESS CHAR - Volume 1.pdf

INTRODUÇÃO A PROGRAMAÇÃO PROGRESS _

_______________________________________________________________________________________________________________________________

INTRODUÇÃO A BANCO DE DADOS, ADM.E DESENV.PROGRESS CHAR, PRODUTOS DATASUL E PADRÃO DESENVOLVIMENTO 24

Autor: Célio de Oliveira - [email protected] – Material não homologado – STI Consultoria e Serviços Ltda

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.

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

Page 25: Apostila de Programação PROGRESS CHAR - Volume 1.pdf

INTRODUÇÃO A PROGRAMAÇÃO PROGRESS _

_______________________________________________________________________________________________________________________________

INTRODUÇÃO A BANCO DE DADOS, ADM.E DESENV.PROGRESS CHAR, PRODUTOS DATASUL E PADRÃO DESENVOLVIMENTO 25

Autor: Célio de Oliveira - [email protected] – Material não homologado – STI Consultoria e Serviços Ltda

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

Page 26: Apostila de Programação PROGRESS CHAR - Volume 1.pdf

INTRODUÇÃO A PROGRAMAÇÃO PROGRESS _

_______________________________________________________________________________________________________________________________

INTRODUÇÃO A BANCO DE DADOS, ADM.E DESENV.PROGRESS CHAR, PRODUTOS DATASUL E PADRÃO DESENVOLVIMENTO 26

Autor: Célio de Oliveira - [email protected] – Material não homologado – STI Consultoria e Serviços Ltda

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

Page 27: Apostila de Programação PROGRESS CHAR - Volume 1.pdf

INTRODUÇÃO A PROGRAMAÇÃO PROGRESS _

_______________________________________________________________________________________________________________________________

INTRODUÇÃO A BANCO DE DADOS, ADM.E DESENV.PROGRESS CHAR, PRODUTOS DATASUL E PADRÃO DESENVOLVIMENTO 27

Autor: Célio de Oliveira - [email protected] – Material não homologado – STI Consultoria e Serviços Ltda

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.

Page 28: Apostila de Programação PROGRESS CHAR - Volume 1.pdf

INTRODUÇÃO A PROGRAMAÇÃO PROGRESS _

_______________________________________________________________________________________________________________________________

INTRODUÇÃO A BANCO DE DADOS, ADM.E DESENV.PROGRESS CHAR, PRODUTOS DATASUL E PADRÃO DESENVOLVIMENTO 28

Autor: Célio de Oliveira - [email protected] – Material não homologado – STI Consultoria e Serviços Ltda

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).

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

Page 29: Apostila de Programação PROGRESS CHAR - Volume 1.pdf

INTRODUÇÃO A PROGRAMAÇÃO PROGRESS _

_______________________________________________________________________________________________________________________________

INTRODUÇÃO A BANCO DE DADOS, ADM.E DESENV.PROGRESS CHAR, PRODUTOS DATASUL E PADRÃO DESENVOLVIMENTO 29

Autor: Célio de Oliveira - [email protected] – Material não homologado – STI Consultoria e Serviços Ltda

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).

Page 30: Apostila de Programação PROGRESS CHAR - Volume 1.pdf

INTRODUÇÃO A PROGRAMAÇÃO PROGRESS _

_______________________________________________________________________________________________________________________________

INTRODUÇÃO A BANCO DE DADOS, ADM.E DESENV.PROGRESS CHAR, PRODUTOS DATASUL E PADRÃO DESENVOLVIMENTO 30

Autor: Célio de Oliveira - [email protected] – Material não homologado – STI Consultoria e Serviços Ltda

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.

Page 31: Apostila de Programação PROGRESS CHAR - Volume 1.pdf

INTRODUÇÃO A PROGRAMAÇÃO PROGRESS _

_______________________________________________________________________________________________________________________________

INTRODUÇÃO A BANCO DE DADOS, ADM.E DESENV.PROGRESS CHAR, PRODUTOS DATASUL E PADRÃO DESENVOLVIMENTO 31

Autor: Célio de Oliveira - [email protected] – Material não homologado – STI Consultoria e Serviços Ltda

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

Page 32: Apostila de Programação PROGRESS CHAR - Volume 1.pdf

INTRODUÇÃO A PROGRAMAÇÃO PROGRESS _

_______________________________________________________________________________________________________________________________

INTRODUÇÃO A BANCO DE DADOS, ADM.E DESENV.PROGRESS CHAR, PRODUTOS DATASUL E PADRÃO DESENVOLVIMENTO 32

Autor: Célio de Oliveira - [email protected] – Material não homologado – STI Consultoria e Serviços Ltda

"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.

Page 33: Apostila de Programação PROGRESS CHAR - Volume 1.pdf

INTRODUÇÃO A PROGRAMAÇÃO PROGRESS _

_______________________________________________________________________________________________________________________________

INTRODUÇÃO A BANCO DE DADOS, ADM.E DESENV.PROGRESS CHAR, PRODUTOS DATASUL E PADRÃO DESENVOLVIMENTO 33

Autor: Célio de Oliveira - [email protected] – Material não homologado – STI Consultoria e Serviços Ltda

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.

Page 34: Apostila de Programação PROGRESS CHAR - Volume 1.pdf

INTRODUÇÃO A PROGRAMAÇÃO PROGRESS _

_______________________________________________________________________________________________________________________________

INTRODUÇÃO A BANCO DE DADOS, ADM.E DESENV.PROGRESS CHAR, PRODUTOS DATASUL E PADRÃO DESENVOLVIMENTO 34

Autor: Célio de Oliveira - [email protected] – Material não homologado – STI Consultoria e Serviços Ltda

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.

Page 35: Apostila de Programação PROGRESS CHAR - Volume 1.pdf

INTRODUÇÃO A PROGRAMAÇÃO PROGRESS _

_______________________________________________________________________________________________________________________________

INTRODUÇÃO A BANCO DE DADOS, ADM.E DESENV.PROGRESS CHAR, PRODUTOS DATASUL E PADRÃO DESENVOLVIMENTO 35

Autor: Célio de Oliveira - [email protected] – Material não homologado – STI Consultoria e Serviços Ltda

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.

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

Page 36: Apostila de Programação PROGRESS CHAR - Volume 1.pdf

INTRODUÇÃO A PROGRAMAÇÃO PROGRESS _

_______________________________________________________________________________________________________________________________

INTRODUÇÃO A BANCO DE DADOS, ADM.E DESENV.PROGRESS CHAR, PRODUTOS DATASUL E PADRÃO DESENVOLVIMENTO 36

Autor: Célio de Oliveira - [email protected] – Material não homologado – STI Consultoria e Serviços Ltda

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.

Page 37: Apostila de Programação PROGRESS CHAR - Volume 1.pdf

INTRODUÇÃO A PROGRAMAÇÃO PROGRESS _

_______________________________________________________________________________________________________________________________

INTRODUÇÃO A BANCO DE DADOS, ADM.E DESENV.PROGRESS CHAR, PRODUTOS DATASUL E PADRÃO DESENVOLVIMENTO 37

Autor: Célio de Oliveira - [email protected] – Material não homologado – STI Consultoria e Serviços Ltda

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.

Page 38: Apostila de Programação PROGRESS CHAR - Volume 1.pdf

INTRODUÇÃO A PROGRAMAÇÃO PROGRESS _

_______________________________________________________________________________________________________________________________

INTRODUÇÃO A BANCO DE DADOS, ADM.E DESENV.PROGRESS CHAR, PRODUTOS DATASUL E PADRÃO DESENVOLVIMENTO 38

Autor: Célio de Oliveira - [email protected] – Material não homologado – STI Consultoria e Serviços Ltda

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

Page 39: Apostila de Programação PROGRESS CHAR - Volume 1.pdf

INTRODUÇÃO A PROGRAMAÇÃO PROGRESS _

_______________________________________________________________________________________________________________________________

INTRODUÇÃO A BANCO DE DADOS, ADM.E DESENV.PROGRESS CHAR, PRODUTOS DATASUL E PADRÃO DESENVOLVIMENTO 39

Autor: Célio de Oliveira - [email protected] – Material não homologado – STI Consultoria e Serviços Ltda

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.

Page 40: Apostila de Programação PROGRESS CHAR - Volume 1.pdf

INTRODUÇÃO A PROGRAMAÇÃO PROGRESS _

_______________________________________________________________________________________________________________________________

INTRODUÇÃO A BANCO DE DADOS, ADM.E DESENV.PROGRESS CHAR, PRODUTOS DATASUL E PADRÃO DESENVOLVIMENTO 40

Autor: Célio de Oliveira - [email protected] – Material não homologado – STI Consultoria e Serviços Ltda

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.

Page 41: Apostila de Programação PROGRESS CHAR - Volume 1.pdf

INTRODUÇÃO A PROGRAMAÇÃO PROGRESS _

_______________________________________________________________________________________________________________________________

INTRODUÇÃO A BANCO DE DADOS, ADM.E DESENV.PROGRESS CHAR, PRODUTOS DATASUL E PADRÃO DESENVOLVIMENTO 41

Autor: Célio de Oliveira - [email protected] – Material não homologado – STI Consultoria e Serviços Ltda

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.

Page 42: Apostila de Programação PROGRESS CHAR - Volume 1.pdf

INTRODUÇÃO A PROGRAMAÇÃO PROGRESS _

_______________________________________________________________________________________________________________________________

INTRODUÇÃO A BANCO DE DADOS, ADM.E DESENV.PROGRESS CHAR, PRODUTOS DATASUL E PADRÃO DESENVOLVIMENTO 42

Autor: Célio de Oliveira - [email protected] – Material não homologado – STI Consultoria e Serviços Ltda

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 ... .

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

Page 43: Apostila de Programação PROGRESS CHAR - Volume 1.pdf

INTRODUÇÃO A PROGRAMAÇÃO PROGRESS _

_______________________________________________________________________________________________________________________________

INTRODUÇÃO A BANCO DE DADOS, ADM.E DESENV.PROGRESS CHAR, PRODUTOS DATASUL E PADRÃO DESENVOLVIMENTO 43

Autor: Célio de Oliveira - [email protected] – Material não homologado – STI Consultoria e Serviços Ltda

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

Page 44: Apostila de Programação PROGRESS CHAR - Volume 1.pdf

INTRODUÇÃO A PROGRAMAÇÃO PROGRESS _

_______________________________________________________________________________________________________________________________

INTRODUÇÃO A BANCO DE DADOS, ADM.E DESENV.PROGRESS CHAR, PRODUTOS DATASUL E PADRÃO DESENVOLVIMENTO 44

Autor: Célio de Oliveira - [email protected] – Material não homologado – STI Consultoria e Serviços Ltda

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

Page 45: Apostila de Programação PROGRESS CHAR - Volume 1.pdf

INTRODUÇÃO A PROGRAMAÇÃO PROGRESS _

_______________________________________________________________________________________________________________________________

INTRODUÇÃO A BANCO DE DADOS, ADM.E DESENV.PROGRESS CHAR, PRODUTOS DATASUL E PADRÃO DESENVOLVIMENTO 45

Autor: Célio de Oliveira - [email protected] – Material não homologado – STI Consultoria e Serviços Ltda

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

Page 46: Apostila de Programação PROGRESS CHAR - Volume 1.pdf

INTRODUÇÃO A PROGRAMAÇÃO PROGRESS _

_______________________________________________________________________________________________________________________________

INTRODUÇÃO A BANCO DE DADOS, ADM.E DESENV.PROGRESS CHAR, PRODUTOS DATASUL E PADRÃO DESENVOLVIMENTO 46

Autor: Célio de Oliveira - [email protected] – Material não homologado – STI Consultoria e Serviços Ltda

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:

Page 47: Apostila de Programação PROGRESS CHAR - Volume 1.pdf

INTRODUÇÃO A PROGRAMAÇÃO PROGRESS _

_______________________________________________________________________________________________________________________________

INTRODUÇÃO A BANCO DE DADOS, ADM.E DESENV.PROGRESS CHAR, PRODUTOS DATASUL E PADRÃO DESENVOLVIMENTO 47

Autor: Célio de Oliveira - [email protected] – Material não homologado – STI Consultoria e Serviços Ltda

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).

Page 48: Apostila de Programação PROGRESS CHAR - Volume 1.pdf

INTRODUÇÃO A PROGRAMAÇÃO PROGRESS _

_______________________________________________________________________________________________________________________________

INTRODUÇÃO A BANCO DE DADOS, ADM.E DESENV.PROGRESS CHAR, PRODUTOS DATASUL E PADRÃO DESENVOLVIMENTO 48

Autor: Célio de Oliveira - [email protected] – Material não homologado – STI Consultoria e Serviços Ltda

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.

Page 49: Apostila de Programação PROGRESS CHAR - Volume 1.pdf

INTRODUÇÃO A PROGRAMAÇÃO PROGRESS _

_______________________________________________________________________________________________________________________________

INTRODUÇÃO A BANCO DE DADOS, ADM.E DESENV.PROGRESS CHAR, PRODUTOS DATASUL E PADRÃO DESENVOLVIMENTO 49

Autor: Célio de Oliveira - [email protected] – Material não homologado – STI Consultoria e Serviços Ltda

-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

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

Page 50: Apostila de Programação PROGRESS CHAR - Volume 1.pdf

INTRODUÇÃO A PROGRAMAÇÃO PROGRESS _

_______________________________________________________________________________________________________________________________

INTRODUÇÃO A BANCO DE DADOS, ADM.E DESENV.PROGRESS CHAR, PRODUTOS DATASUL E PADRÃO DESENVOLVIMENTO 50

Autor: Célio de Oliveira - [email protected] – Material não homologado – STI Consultoria e Serviços Ltda

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.

Page 51: Apostila de Programação PROGRESS CHAR - Volume 1.pdf

INTRODUÇÃO A PROGRAMAÇÃO PROGRESS _

_______________________________________________________________________________________________________________________________

INTRODUÇÃO A BANCO DE DADOS, ADM.E DESENV.PROGRESS CHAR, PRODUTOS DATASUL E PADRÃO DESENVOLVIMENTO 51

Autor: Célio de Oliveira - [email protected] – Material não homologado – STI Consultoria e Serviços Ltda

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.

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

Page 52: Apostila de Programação PROGRESS CHAR - Volume 1.pdf

INTRODUÇÃO A PROGRAMAÇÃO PROGRESS _

_______________________________________________________________________________________________________________________________

INTRODUÇÃO A BANCO DE DADOS, ADM.E DESENV.PROGRESS CHAR, PRODUTOS DATASUL E PADRÃO DESENVOLVIMENTO 52

Autor: Célio de Oliveira - [email protected] – Material não homologado – STI Consultoria e Serviços Ltda

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.

Page 53: Apostila de Programação PROGRESS CHAR - Volume 1.pdf

INTRODUÇÃO A PROGRAMAÇÃO PROGRESS _

_______________________________________________________________________________________________________________________________

INTRODUÇÃO A BANCO DE DADOS, ADM.E DESENV.PROGRESS CHAR, PRODUTOS DATASUL E PADRÃO DESENVOLVIMENTO 53

Autor: Célio de Oliveira - [email protected] – Material não homologado – STI Consultoria e Serviços Ltda

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).

Page 54: Apostila de Programação PROGRESS CHAR - Volume 1.pdf

INTRODUÇÃO A PROGRAMAÇÃO PROGRESS _

_______________________________________________________________________________________________________________________________

INTRODUÇÃO A BANCO DE DADOS, ADM.E DESENV.PROGRESS CHAR, PRODUTOS DATASUL E PADRÃO DESENVOLVIMENTO 54

Autor: Célio de Oliveira - [email protected] – Material não homologado – STI Consultoria e Serviços Ltda

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>}.

Page 55: Apostila de Programação PROGRESS CHAR - Volume 1.pdf

INTRODUÇÃO A PROGRAMAÇÃO PROGRESS _

_______________________________________________________________________________________________________________________________

INTRODUÇÃO A BANCO DE DADOS, ADM.E DESENV.PROGRESS CHAR, PRODUTOS DATASUL E PADRÃO DESENVOLVIMENTO 55

Autor: Célio de Oliveira - [email protected] – Material não homologado – STI Consultoria e Serviços Ltda

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\).

Page 56: Apostila de Programação PROGRESS CHAR - Volume 1.pdf

INTRODUÇÃO A PROGRAMAÇÃO PROGRESS _

_______________________________________________________________________________________________________________________________

INTRODUÇÃO A BANCO DE DADOS, ADM.E DESENV.PROGRESS CHAR, PRODUTOS DATASUL E PADRÃO DESENVOLVIMENTO 56

Autor: Célio de Oliveira - [email protected] – Material não homologado – STI Consultoria e Serviços Ltda

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>).

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

Page 57: Apostila de Programação PROGRESS CHAR - Volume 1.pdf

INTRODUÇÃO A PROGRAMAÇÃO PROGRESS _

_______________________________________________________________________________________________________________________________

INTRODUÇÃO A BANCO DE DADOS, ADM.E DESENV.PROGRESS CHAR, PRODUTOS DATASUL E PADRÃO DESENVOLVIMENTO 57

Autor: Célio de Oliveira - [email protected] – Material não homologado – STI Consultoria e Serviços Ltda

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

Page 58: Apostila de Programação PROGRESS CHAR - Volume 1.pdf

INTRODUÇÃO A PROGRAMAÇÃO PROGRESS _

_______________________________________________________________________________________________________________________________

INTRODUÇÃO A BANCO DE DADOS, ADM.E DESENV.PROGRESS CHAR, PRODUTOS DATASUL E PADRÃO DESENVOLVIMENTO 58

Autor: Célio de Oliveira - [email protected] – Material não homologado – STI Consultoria e Serviços Ltda

A N E X O

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

Page 59: Apostila de Programação PROGRESS CHAR - Volume 1.pdf

INTRODUÇÃO A PROGRAMAÇÃO PROGRESS _

_______________________________________________________________________________________________________________________________

INTRODUÇÃO A BANCO DE DADOS, ADM.E DESENV.PROGRESS CHAR, PRODUTOS DATASUL E PADRÃO DESENVOLVIMENTO 59

Autor: Célio de Oliveira - [email protected] – Material não homologado – STI Consultoria e Serviços Ltda

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.