Estou com o código abaixo mas não consigo pegar o valor da variável c-programa no &SCOPED-DEFINE, alguem teria alguma sugestão ? Código: DEFINE VARIABLE i-aux AS INTEGER NO-UNDO. DEFINE VARIABLE c-programa AS CHARACTER NO-UNDO. ASSIGN i-aux = 1. CASE i-aux: WHEN 1 THEN ASSIGN c-programa = 'CLI'. WHEN 2 THEN ASSIGN c-programa = 'FOR'. OTHERWISE ASSIGN c-programa = 'AMB'. END CASE. /*CASE i-aux:*/ &SCOPED-DEFINE CHAMA-PROGRAMA c-programa MESSAGE "{&CHAMA-PROGRAMA}" VIEW-AS ALERT-BOX INFO BUTTONS OK. &IF DEFINED (CHAMA-PROGRAMA) &THEN &IF "value ({&CHAMA-PROGRAMA})" = "CLI" &THEN MESSAGE {&CHAMA-PROGRAMA} " 1 - CLIENTE" VIEW-AS ALERT-BOX INFO BUTTONS OK. ASSIGN i-aux = 10. &ENDIF &IF "{&CHAMA-PROGRAMA}" = "FOR" &THEN MESSAGE "2 - FORNECEDOR" VIEW-AS ALERT-BOX INFO BUTTONS OK. ASSIGN i-aux = 20. &ENDIF &IF "{&CHAMA-PROGRAMA}" = "AMB" &THEN MESSAGE "3 - AMBOS" VIEW-AS ALERT-BOX INFO BUTTONS OK. ASSIGN i-aux = 30. &ENDIF &ENDIF
Saudações Eu não entendi muito bem o que vc tá tentando fazer no programa. Mas o Progress substitui o valor do scoped em tempo de compilação. Por ex: Na linha MESSAGE "{&CHAMA-PROGRAMA}" VIEW-AS ALERT-BOX INFO BUTTONS OK. vai ficar assim MESSAGE "c-programa" VIEW-AS ALERT-BOX INFO BUTTONS OK. então vai aparecer "c-programa" na message Na linha MESSAGE {&CHAMA-PROGRAMA} " 1 - CLIENTE" VIEW-AS ALERT-BOX INFO BUTTONS OK. fica assim MESSAGE c-programa " 1 - CLIENTE" VIEW-AS ALERT-BOX INFO BUTTONS OK. então deve aparecer o valor da variavel c-programa até aí tudo bem o problema é na linha &IF "{&CHAMA-PROGRAMA}" = "FOR" &THEN a variavel c-programa receberá um valor em tempo de execução não dá pra testar seu valor em tempo de compilação é como se fosse o seguinte comando: IF "c-programa" = "FOR" THEN... ...sempre vai dar falso explica pra gente o objetivo do programa, de repente tem alguma outra alternativa mais simples... valeo...
Fábio, &SCOPE-DEFINE é uma diretiva de pré-processador. O pré-processador é um cara que roda ANTES do compilador. E claro, antes do teu programa executar. Não há chance de um programa executar antes de ser compilado. E quando ele começar a execução o pré-processador já é pré-história. Logo, você não consegue usar o valor de uma variável no &SCOPE-DEFINE. Porque você precisa disso? Não dá pra trabalhar com a variável normalmente?
Pessoal, Na verdade estou tentando rodar no mesmo botão dois Zoom's diferentes, mas da erro ai tentei tratar desta maneira. Obrigado.
Para rodar 2 ou mais zooms no mesmo botão, você não poderá fazer a chamada dos zooms no mesmo lugar, sendo assim faça o seguinte: 01) Crie 2 eventos para o botão: U1 e U2 e no evento F5 acione os eventos criados de acordo com o zoom a ser chamado. Código: ON F5 OF Btn-Zoom DO: IF situacao = 1 THEN APPLY "U1":U TO SELF. ELSE APPLY "U2":U TO SELF. END. ON U1 OF Btn-Zoom DO: MESSAGE "Zoom 1" VIEW-AS ALERT-BOX. END. ON U2 OF Btn-Zoom DO: MESSAGE "Zoom 2" VIEW-AS ALERT-BOX. END.