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