PREPROCESSADORES

Discussão em 'Comandos Básicos' iniciado por fdantas, Fevereiro 8, 2009.

  1. fdantas

    fdantas Administrator Moderador

    De grande importância para o desenvolvimento em si,aprenderemos sobre os PREPROCESSADORES!
    No Progress eles funcionam como comandos e/ou instruções literais a serem pre-utilizados para o funcionamento de um programa. Simplesmente como uma palavra-chave que equivale a própria linguagem ou lista de instruções e/ou valores para utilização.

    Exemplo:
    &scoped-define p-exemplo display today.
    {&p-exemplo}

    No exemplo acima foi definido um preprocessador local, disponível apenas para a procedure atual, definido como p-exemplo que equivale a instrução “display today”.

    Utilização
    Após definido o preprocessador use CHAVES, ECOMERCIAL, PREPROCESSADOR.

    &SCOPED-DEFINE
    Define um preprocessador visível apenas para a procedure onde está declarado.

    SINTAXE
    &SCOPED-DEFINE Preprocessador Expressão

    Preprocessador
    O Nome do processador a ser instanciado na procedure.

    Expressão
    Uma lista de comandos ou instruções.

    Exemplo
    &scoped-define p-campos customer.cust-num~ customer.name~customer.address
    for each customer no-lock:
    display {&p-campos}.
    end.

    &GLOBAL-DEFINE
    Define um preprocessador global para compartilhamento entre procedures.

    SINTAXE
    &GLOBAL-DEFINE Preprocessador Expressão
    Preprocessador
    O Nome do processador a ser instanciado na procedure.

    Expressão
    Uma lista de comandos ou instrução

    Exemplo
    &global-define p-exemplo cust-num,~ name,~ address,~ phone select
    {&p-exemplo} from customer no-lock.

    &UNDEFINE
    Exclui a definição de um preprocessador.

    SINTAXE
    &UNDEFINE Nome do Preprocessador

    Exemplo
    &scoped-define p-exemplo ‘Exemplo de Preprocessador’ &undefine p-exemplo
    /*nada será apresentado porque o preprocessador não mais existe */
    &undefine p-exemplo
    display {&p-exemplo}
  2. ChacMaster

    ChacMaster Membro Participativo

    Vale lembrar que eu tembém posso utilizar PreProcessadores em includes, por exemplo uma situação em que eu precisaria de 3 temp-tables identicas, mas com o nomes diferentes.

    Entao em vez de escrever cinco vezes:

    Código:
    define temp-table tt-1
    field codigo as integer.
    
    define temp-table tt-2
    field codigo as integer.
    
    define temp-table tt-3
    field codigo as integer.
    
    eu poderia simplesmente criar uma include da seguinte forma:

    Código:
    
    /* Include.i exemplo de preprocessadores em includes */
    
    define temp-table {1}
    field codigo as integer.
    
    /* Fim da Include */
    
    Desta maneira quando preciso criar qualquer temp-table identica a da minha include, é só eu chamar a minha include passando o nome que eu queira para a temp-table, quase como INPUT.
    Ficaria assim:

    Código:
    /* Meu-programa.p - Exemplo de PreProcessadores em includes */
    
    {include.i "tt-1"}
    {include.i "tt-2"}
    {include.i "tt-3"}
    
    for each tt-1:
         delete tt-1.
    end.
    
    for each tt-2:
         delete tt-2.
    end.
    
    for each tt-3:
         delete tt-3.
    end.
    
    /* Fim do Meu-programa.p */
    
    Desta maneira eu posso criar quantas eu quiser, com o nome que eu quiser, des de que sejam estruturas de campos iguais....

    Abraços,

Compartilhe esta Página