Comandos Parte 1

14/04/2019


Locais dos dados

Os dados podem estar em um ou mais locais ao mesmo tempo. Os comandos progress movem estes dados entre os locais. Dados no registro do banco, são dados permanentes. Dados no buffer de registro são dados utilizados nos programas. Dados no buffer de tela são dados na tela ou em dispositivos de saída.

1. registro do banco
2. buffer de registro
3. buffer de tela
4. usuário

VARIABLE

Definir variável. Abreviar: VAR. Tipos de dados: INTEGER (abreviar INT), LOGICAL (abreviar LOG), CHARACTER (abreviar CHAR), DECIMAL (abreviar DEC), HANDLE, DATE.

/* exemplo 1 - escrita completa */
DEFINE VARIABLE codigo AS INTEGER.

/* exemplo 2 - escrita abreviada */
DEF VAR codigo2 AS CHAR.

TEMP-TABLE

Criar tabela temporária para utilizar em tempo de execução do programa. Ao finalizar o programa, a temp-table é apagada automaticamente e tem todos seus dados perdidos.

/* exemplo 1 - criar campo a campo */
DEF TEMP-TABLE tt_customer NO-UNDO
    FIELD codigo AS INT
    FIELD nome AS CHAR.

/* exemplo 2 - criar copiando dados de uma tabela real */
DEF TEMP-TABLE tt_2 NO-UNDO LIKE customer.

INSERT

Incluir registro numa tabela. Cria registro do banco, move para buffer de registro e buffer de tela. Usuário digita os dados que são movidos de volta para o buffer de registro.

INSERT customer.

CREATE

Criar registro numa tabela. Cria registro do banco, move para buffer de registro

CREATE customer.

UPDATE

Alterar dados de uma tabela ou variável. Move dado do buffer de registro para buffer de tela. Usuário digita os dados que são movidos de volta para o buffer de registro.

FIND FIRST customer. /* precisa ter um registro lido para executar este comando */

/* exemplo 1 - alterar todos os campos de um registro da tabela customer */
UPDATE customer.

/* exemplo 2 - alterar apenas o campo name */
UPDATE customer.name.

/* exemplo 3 - alterar uma variável */
UPDATE codigo.

FIND

Procurar um registro de uma tabela. Localiza registro do banco e move para buffer de registro.

/* exemplo 1 - menor comando possível */
FIND customer.

/* exemplo 2 - localizar um customer específico */
FIND customer WHERE
     customer.cust-id = 1.

/* exemplo 3 - procurar o primeiro registro da tabela customer
   (usa o índice primário para saber quem é o primeiro) */
FIND FIRST customer.

FIND LAST customer. /* procura ultimo */
FIND PREV customer. /* procura anterior, precisa ter um já lido para ser a base */
FIND NEXT customer. /* procura próximo, idem acima */

FOR EACH

Percorrer registros de uma tabela. Semelhante ao comando SQL SELECT. Localiza registro do banco e move para buffer de registro.

FOR EACH customer:
    /* comandos para visualizar ou manipular cada registro lido */
END.

DISPLAY

Mostrar os dados de uma tabela ou variável. Move buffer de registro para buffer de tela. Abreviar: DISP.

FIND FIRST customer. /* precisa ter um registro lido para executar este comando */

/* exemplo1 - mostrar todos os campos de um registro da tabela customer */
DISPLAY customer.

/* exemplo 2 - mostrar os campos custnum e name */
DISPLAY customer.custnum
        customer.name.

/* exemplo 3 - mostrar uma variável */
DISPLAY codigo.

DELETE

Apagar um registro de uma tabela. Apaga o registro do banco que estava lido no buffer de registro .

FIND FIRST customer. /* precisa ter um registro lido para executar este comando */

DELETE customer.

PROMPT-FOR

Solicitar que usuário digite campos de uma tabela ou variável. Usuário digita dados no buffer de tela. Nenhum dado é salvo com este comando.

/* ATENÇÃO!!! Não é necessário ler um registro da tabela para utilizar este comando */

/* exemplo 1 - digitar todos os campos de uma tabela */
PROMPT-FOR customer.

/* exemplo 2 - digitar apenas custnum e name */
PROMPT-FOR customer.custnum
           customer.name.

/* exemplo 3 - digitar uma variável */
PROMPT-FOR codigo.

ASSIGN

Atualizar dados de um registro de uma tabela ou de uma variável. Atualiza o buffer de registro com os dados do buffer de tela.

FIND FIRST customer. /* precisa ter um registro lido para executar este comando */

/* exemplo 1 - atualizar todos os dados de um registro da tabela customer */
ASSIGN customer.

/* exemplo 2 - atualizar apenas campos custnum e name */
ASSIGN customer.custnum
       customer.name.

/* exemplo 3 - atualizar variável */
ASSIGN codigo.

RELEASE

Forçar atualizar e liberar um registro de uma tabela. Atualiza o registro do banco com os dados do buffer de registro e libera o registro. Este comando não é obrigatório, pois o Progress atualiza este registro ao final da transação automaticamente.

FIND FIRST customer. /* precisa ter um registro lido para executar este comando */

RELEASE customer.

SET

Ler os dados de uma variável ou tabela e atualizar buffer de registro. Usuário digita dados no buffer de tela e atualiza o buffer de registro com estes dados.

FIND FIRST customer. /* precisa ter um registro lido para executar este comando */

/* exemplo 1 - ler todos os campos de um registro da tabela customer */
SET customer.

/* exemplo 2 - ler apenas os campos custnum e name */
SET customer.custnum
    customer.name.

/* exemplo 3 - ler variábel */
SET codigo.

ENABLE

Solicitar digitação de dados em tabela ou variável. Usuário digita dados no buffer de tela. Este comando é uma alternativa mais moderna ao UPDATE.

/* exemplo 1 - solicitar todos campos da tabela customer para digitação */
ENABLE customer.

/* exemplo 2 - solicitar apenas o campo custnum */
ENABLE customer.custnum.

/* exemplo 3 - solicitar uma variábel */
ENABLE codigo.