1. This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn More.
  2. Anuncie Aqui
    Anuncie aqui você Também: fdantas@4each.com.br

Duvida Como definir uma constante no Progress?

Discussão em 'Progress 4GL' iniciado por jc01, Maio 20, 2015.

  1. Eilleen

    Eilleen Membro Ativo

    Já no caso contrário é feita a sobreposição e não ocorrem erros, veja:

    Código:
    &GLOBAL-DEFINE TESTE testeGlobal.
    
    MESSAGE 'Definition 1: ' "{&TESTE}" VIEW-AS ALERT-BOX INFO BUTTONS OK.
    
    RUN teste.
    RUN teste2.
    
    MESSAGE 'Definition 2: ' "{&TESTE}" VIEW-AS ALERT-BOX INFO BUTTONS OK.
    
    PROCEDURE teste:
    &SCOPED-DEFINE TESTE testeScoped.
    
    MESSAGE 'procedure teste: ' "{&TESTE}" VIEW-AS ALERT-BOX INFO BUTTONS OK.
    
    END PROCEDURE.
    
    
    PROCEDURE teste2:
    
    MESSAGE 'procedure teste2: ' "{&TESTE}" VIEW-AS ALERT-BOX INFO BUTTONS OK.
    
    END PROCEDURE.
    As mensagens do definitions (main) mostram "testeGlobal" e a das procedures mostram "testeScoped"...

    Isso tb não é lá muito útil, pq como pode ser visto, muda para todas as procedures chamadas depois, pois estão no mesmo nível, então se quiser mudar o valor só dentro de uma procedure, não tem como... Mas aí também não seria constante, seria variável... rsrs

    Enfim, eu uso sempre &SCOPED e boas, nada de erros... e se precisar mudar valor, uso variável...
  2. rafael.andrade

    rafael.andrade Membro Master Moderador Equipe de Suporte

    Interessante @Eilleen , mas isso é um tanto confuso, o certo é setar uma vez e pronto.

    Tendo em mente tudo isso, como funciona a constante {&BF_MAT_VERSAO_EMS} que mostra a versão do EMS, podendo tratar o código diferente para cada versão do EMS?
    Como é feito a "setagem" desse tipo de constante como esta?

    Abraço

    Rafael
  3. bootstrapmaster

    bootstrapmaster Moderator Moderador Equipe de Suporte

    os &global-define e &scoped-define devem ser criados somente em um ponto e depois vc só usa, não confunda com define new global shared que pra vc ver o seu conteudo vc tem que declarar em cada programa.
  4. bootstrapmaster

    bootstrapmaster Moderator Moderador Equipe de Suporte

    Rafael, as includes que criam esses pre-processors que vc está falando, elas são estaticas, então na verdade são preprocessors só pra ficar bonito, e claro, na compilação de programas, o compilador trata elas, mas nas includes, são declaradas sempre, a ut-glob.i por exemplo
  5. rafael.andrade

    rafael.andrade Membro Master Moderador Equipe de Suporte

    Então na include que usamos há algo como:
    @GLOBAL-DEFINE BF_MAT_VERSAO_EMS 2.80

    isso?
  6. Agnaldo

    Agnaldo Membro Ativo

    O problema é que 4GL Progress NÃO possui constantes.
    Ela, a 4GL, possui apenas variaveis.
    Nós que "achamos" que scoped/global define é constante.
    Scoped/global define são pré-processors, que, por definição servem para outra coisa.

Compartilhe esta Página