Histórico da Página
...
Então na seção FORMAT poderíamos ter:
BEFORE 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 |
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 |
Formato do bloco ON EVERY ROW
...
ON LAST ROW |
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 |
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 |
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 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 |
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 |
...
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 |
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 |
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:", |
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 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> |
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 PRINT COLUMN 01, "TOTAL CLIENTE:", PRINT GROUP TOTAL OF total_price |
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
PRINT COLUMN 01, "CLIENTE:", |
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 |
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 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 |
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,
|
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:
...