Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

...

Então na seção FORMAT poderíamos ter:

 

 

 BEFORE GROUP OF a
 BEFORE GROUP OF b
 BEFORE GROUP OF c
 ON EVERY ROW
 AFTER GROUP OF c
 AFTER GROUP OF b
 AFTER GROUP OF a 

 Um exemplo da ordem de execução dos blocos de controle

...

Este bloco de controle define as ações (ou instruções) que devem ser executadas antes de ser processado um determinado grupo de linhas.

 

 

BEFORE GROUP OF variável
    Instruções 

Formato do bloco de controlo BEFORE GROUP OF

...

Este bloco define as instruções que o INFORMIX-4GL passa para cada linha de dados como argumento à rotina REPORT, ou seja, os dados impressos no relatório são os dados passados como argumentos na função REPORT.

  

 

ON EVERY ROW
    Instruções 

 Formato do bloco ON EVERY ROW

...

 

ON LAST ROW
    Instruções 

 Formato  Formato do bloco ON LAST ROW

O INFORMIX-4GL executa este bloco depois dos blocos ON EVERY ROW e AFTER GROUP OF.

...

Este bloco especifica a informação que vai aparecer no cabeçalho de cada página do relatório. 

 

 

 PAGE HEADER
    Instruções Instruções 

 Formato do bloco PAGE HEADER

A instrução TOP MARGIN da seção OUTPUT influencia na linha em que vai ser escrito este cabeçalho.

...

Este bloco inclui as instruções que se devem executar para definir o rodapé de cada página.

 

 

 

 PAGE TRAILER
    Instruções Instruções 

 Formato do bloco PAGE TRAILER

Não se pode incluir a instrução SKIP TO TOP OF PAGE neste bloco.

...

A instrução FOR define um ciclo (loop), executando consecutivamente uma instrução simples ou composta, incrementando o índice e controlando a condição de saída. Quando esta instrução se finaliza, passa o controle do programa para a instrução seguinte ao fim do ciclo.

 

 

 

 FOR FOR i=1 TO 10 STEP 2
    LET a = a * a + 2
    LET b = a * 2

 END FOR

 

 

END FOR 

Exemplo da instrução FOR

NOTA:Não se pode usar incrementos negativos .

...

Esta instrução executa um teste de uma condição e processa, alternativamente, 2 instruções (simples ou compostas) conforme a condição verdadeira ou não.

 

 

 

 IF IF paid_date IS NULL THEN
    LET pg1 = "fal"
    LET pgc1 = "ta "
 ELSE
    LET pg1 = paid_date - ship_date
    LET pgc1 = " dias"
END IF IF 

 Exemplo da instrução IF-THEN-ELSE

NOTA: Pode-se usar até no máximo 20 IF-THEN-ELSE aninhados.

...

A instrução LET atribui um valor a uma variável.

 

 

 

 LET LET pg1  = paid_date - ship_date
 LET LET pgc1 = " dias" 

 

...

 Exemplo da instrução LET

NEED

Esta instrução faz com que a próxima linha seja impressa na página seguinte, se não estiver disponível na página corrente, o número mínimo de linhas especificado na instrução NEED

 

 

 

 BEFORE BEFORE GROUP OF num _ livro
    SKIP 1 LINE
    NEED 2 LINES
    PRINT COLUMN 01, "LIVRO:",
          COLUMN 10, num_livro USING "<<<<",
          COLUMN 16, nome CLIPPED

 

 

Exemplo da instrução NEED

PAUSE

Esta instrução faz com que um relatório com destino de emissão para o vídeo possa ter pausas para permitir sua visualização na tela. Pressionando <ENTER> pode-se avançar pelo relatório.

 

 

 

 PAGE PAGE TRAILER
    PAUSE "Pressione <ENTER> para continuar" 

 Exemplo da instrução PAUSE

NOTA: Esta instrução não tem nenhum efeito se o relatório for dirigido para uma impressora, arquivo ou uma outra aplicação (pipe).

...

Esta instrução imprime informação no vídeo, impressora ou num arquivo, conforme estiver especificado na seção OUTPUT.

 

 

 

 PRINT PRINT COLUMN 10, "Encomenda:",
       COLUMN 21, ord USING "<<<<",
       COLUMN 29, "Total:",
       COLUMN 36, tota1 USING "$$$$$####&.&&",
       COLUMN 53, "Pagamento em:",
       COLUMN 67, pg1, pgc1 CLIPPED 

 Exemplo da instrução PRINT

NOTAS:

-          Cada instrução PRINT imprime informações numa linha. Pode-se com um vários PRINT escrever uma única linha, finalizando cada instrução PRINT com ";" (ponto e vírgula);

...

Esta instrução salta um número de linhas em branco especificadas após o SKIP.

 

 

 

 SKIP 2 LINESLINES 

 

 

Exemplo da instrução SKIP

SKIP TO TOP OF PAGE

Esta instrução faz com que a próxima linha seja escrita no início da próxima página, forçando o salto de página.

...

A instrução WHILE define um ciclo, executando consecutivamente uma instrução simples ou composta, enquanto for verdadeira a condição que segue a palavra WHILE. Quando esta se verifica passa, o controlo do programa para a instrução seguinte ao fim do ciclo.

 

  

WHILE

 

 

 WHILE PAGENO = 1
    LET a = a * a + 2
    LET b = a * 2

 END WHILE

 END WHILE 

 Exemplo da instrução WHILE

FUNÇÕES AGREGADAS

As funções agregadas possibilitam a execução de operações sobre colunas das linhas de todo resultado de um SELECT, podendo-se ainda escolher entre estas as que satisfaçam determinado critério.

...

A estrutura da instrução para definir uma função agregada é a seguinte: 

 

 

 

 

 [GROUP] <função agregada>
     OF <coluna ou expressão aritmética envolvendo coluna>
 [WHERE <expressão lógica>] 

 

Formato da instrução para definir funções agregadas

NOTAS:

-          GROUP e WHERE são opcionais;

...

COUNT

Conta o número total de linhas do resultado ou do grupo e que satisfaçam a cláusula WHERE, se existir.

PERCENT

Executa um função de contagem semelhante a função COUNT, mas dá o resultado em percentagem em relação ao número total de linhas selecionadas.

TOTAL

Acumula o valor da coluna especificada para todas as linhas do resultado ou do grupo e que satisfaçam a cláusula WHERE, se existir.

AVERAGE ou AVG

Calcula o valor médio da coluna especificada para todas as linhas do resultado ou do grupo e que satisfaçam a cláusula WHERE, se existir.

MIN

Calcula o valor mínimo da coluna especificada para todas as linhas do resultado ou do grupo e que satisfaçam a cláusula WHERE, se existir.

MAX

Calcula o valor máximo da coluna especificada para todas as linhas do resultado ou do grupo e que satisfaçam a cláusula WHERE, se existir.

  

 

 AFTER AFTER GROUP OF cust
    LET totcli = GROUP TOTAL OF total_price
    LET totger = totger + totcli 

    PRINT COLUMN 01, "TOTAL CLIENTE:",
          COLUMN 17, totcli USING "$$$$$####&.&&" 

    PRINT GROUP TOTAL OF total_price
          WHERE total_price > 500 USING "$$$$$####&.&&" 

 Exemplos de utilização de funções agregadas

CLIPPED

Esta instrução suprime os espaços em branco a direita do último caracter diferente de espaço em branco dos campos tipo alfanuméricos.

 

 

 

 BEFORE BEFORE GROUP OF cust
    SKIP 1 LINE
    NEED 2 LINES

 

    PRINT COLUMN 01, "CLIENTE:",
          COLUMN 10, cust USING "<<<<",
          COLUMN 16, company CLIPPEDCLIPPED 

 

 

Exemplo da instrução CLIPPED

COLUMN

Esta instrução permite imprimir o campo que se segue a partir da coluna especificada.

 

 

 

 BEFORE BEFORE GROUP OF cust
    SKIP 1 LINE
    NEED 2 LINES
    PRINT COLUMN 01, "CLIENTE:",
          COLUMN 10, cust USING "<<<<",
          COLUMN 16, company CLIPPEDCLIPPED 

 

 

Exemplo da instrução COLUMN

LINENO

Esta expressão contém o número da linha corrente que o REPORT está para imprimir.

 

 

 

 IF IF LINENO = 24 THEN
    SKIP TO TOP OF PAGE

 END IF

 

 

END IF 

Exemplo da instrução LINENO

NOTA: Não utilize LINENO em blocos PAGE HEADER ou TRAILER porque não funcionará corretamente.

...

Esta expressão contém o número da página que o REPORT está imprimindo no momento.

 

 

 

 PAGE PAGE HEADER
    PRINT COLUMN 01, "RESUMO DAS ENCOMENDAS POR CLIENTE DE ",
                     inic, " A ", fim,
          COLUMN 70, "Pagina ", PAGENO USING "<<<" 

 Exemplo da instrução PAGENO

TIME

Esta instrução devolve uma frase com o valor da hora corrente que tem o formato "hh:mm:ss", onde hh é horas, mm é minutos e ss é segundos.

...

Esta expressão permite definir o formato de impressão dos campos do tipo numérico e data, a que está associada.

 

 

 

 PRINT PRINT "RESUMO DAS ENCOMENDAS POR CLIENTE DE ", inic, " A ", fim,
       COLUMN 70, "Pagina ", PAGENO USING "<<<"
 PRINT PRINT COLUMN 10, "Encomenda:",
       COLUMN 21, ord USING "<<<<",
       COLUMN 29, "Total:",
       COLUMN 36, tot1 USING "$$$$$####&.&&",
       COLUMN 53, "Pagamento em:",
       COLUMN 67, pg1, pgc1 CLIPPEDCLIPPED 

 

 

Exemplos da instrução USING

NOTAS:

-          O conjunto de caracteres que definem o formato precisa estar entre " " (aspas);

...

dd

Imprime o dia do mês como um número (01 a 31).

ddd

Imprime o dia da semana usando uma abreviatura com 3 letras.

mm

Imprime o mês como um número (01 a 12).

mmm

Imprime o mês usando uma abreviatura com 3 letras.

yy

Imprime o ano como um número de 2 digitos (01 a 99).

yyyy

Imprime o ano como um número de 4 digitos (0001 a 9999).

...

 

14    Depurador de programa

...

-          A tela de DEBUG, que é constituída por duas janelas: a janela do código fonte e a janela de comandos. Na janela do fonte é visualizado o código do programa utilizado. Na janela de comandos, comanda-se toda a execução e parametrização do DEBUGGER.

 

 

 

 

 

15    Base de dados de exemplo deste manual

...

NOME

TIPO

DESCRIÇÃO

*numero

integer

Número do livro

nome

char(60)

Nome do livro

traducao

char(60)

Nome do tradutor

volumes

smallint

Número de volumes

paginas

smallint

Número de páginas

editora

char(5)

Número da edição

ano

smallint

Ano de edição

data_entrada

date

Data da compra

sala

char(5)

Sala onde está arrumado

estante

char(5)

Estante onde está arrumado

prateleira

char(5)

Prateleira onde está arrumado

observacoes

char(50)

Observações sobre o livro

                         Estrutura da tabela livros

 

A tabela autores relaciona o nome de cada autor com um código reduzido. Não é permitida a repetição nem do código, nem do livro. A sua estrutura é a seguinte:

...

NOME

TIPO

DESCRIÇÃO

*numero

serial

Número seqüencial do autor

nome

char(70)

Nome do autor

                    Estrutura da tabela autores

 

A tabela temas identifica determinado tema por um código. Não é permitida a repetição de nomes e de códigos. A sua estrutura é a seguinte:

...

NOME

TIPO

DESCRIÇÃO

*numero

char(5)

Código de identificação do tema

nome

char(50)

Nome do tema

                       Estrutura da tabela tabela temas

 

A tabela editoras identifica uma editora por um código de editora. Tal como nas tabelas anteriores não há repetições do código e nome de editora. A sua estrutura é a seguinte:

...

NOME

TIPO

DESCRIÇÃO

*codigo

char(5)

Código de identificação da editora

nome

char(50)

Nome da editora

                      Estrutura da tabela editoras

 

A tabela livro_autores relaciona determinados livros com determinados autores, permitindo que um livro possua mais de um autor, não permitindo linhas com os mesmos códigos de livro e autor. A sua estrutura é a seguinte:

...

NOME

TIPO

DESCRIÇÃO

*livro

integer

Número do livro

*autor

integer

Número do autor

Estrutura      Estrutura da tabela livro_autores

 

A tabela livro_temas funciona da mesma forma que a tabela livro_autores, fornecendo a informação sobre os temas focados por livro. A sua estrutura é a seguinte:

...

NOME

TIPO

DESCRIÇÃO

*livro

integer

Número do livro

*tema

char(5)

Código de identificação do tema

               Estrutura da tabela livro_temas

 

A tabela requisicoes tem informação acerca de quem e quais os livros que estão requisitados por determinada entidade.  A sua estrutura é a seguinte:

...