Como criar funções ou procedimentos no Elipse E3

October 21, 2013

Por diversos momentos, o programador Elipse E3 se depara com a necessidade de escalar determinados procedimentos que se repetem por vários locais de uma aplicação. E para quem conhece outras formas de programação, sempre vem a pergunta?

 

Tem como criar uma função ou procedimento no Elipse E3?

 

A resposta não é tão simples e objetiva. Por um lado, vendo o que se tem de recursos nativos do Elipse então a resposta é simples: não.

 

Mas é possível sim ter funções ou procedimentos, de duas formas.

 

A primeira forma é a criação de uma função ou procedimento VBScript de verdade. Sim, isso é possível. Mas seu contexto faz parte apenas de um Script que esteja sendo criado, ou seja, é possível criar uma função ou procedimento dentro de um script mas esse só funcionará dentro dele.

 

Em primeiro lugar, para que fazer isso então?

 

Para scripts curtos realmente não faz muito sentido. Mas pense em um script com mais de 1000 linhas, onde você efetua cálculos com as tags do sistema porém aplicando sempre as mesmas funções matemáticas. Repetir a operação complexa 500 vezes, além de mais demorado, vai gerar um grande problema de manutenção posterior. Nesse caso a criação de um método dentro do Script se torna muito útil. Mas como fazer?

 

Vamos lá então:

 

Em primeiro lugar, crie o seu script.

 

Respeitando a linguagem VBScript, o Elipse irá criar seu Script já com início e fim. No caso abaixo, Sub declara o método do nome respectivo e End Sub indica o fim do método.

Ocorre que o computador irá interpretar o conteúdo desse Script tal como se você estive escrevendo livremente uma página ASP. Você pode adicionar mais procedures e functions dentro do corpo desse script como se ele fosse um arquivo .asp. Porém o Elipse não vai lhe permitir apagar estas duas linhas geradas automaticamente, e nem escrever nada antes ou depois delas. Então como criar?

 

Simples: finalize o Sub logo em seguida de sua criação, e crie as suas functions, procedures e subs normalmente. Ao terminar, não se esqueça de declarar novamente o Sub principal, que será executado pelo evento que irá disparar todo o script. Veja o exemplo abaixo:

 

  

Sub CommandButton1_Click()

'a linha acima foi gerada automaticamente pelo Elipse. Não pode ser apagada e nada é

'criado acima dela.

'finalização manual da Sub CommandButton1_Click. Não se deve colocar instruções

'antes dessa linha, pois até aqui o Script não conhece as funções que serão criadas

End Sub

'criação de uma nova Function

Function Somar(dblNumberA,dblNumberB)

Somar = dblNumberA + dblNumberB

'finalização da Function

End Function

'criar novamente a Sub principal e colocar apenas li o conteúdo

Sub CommandButton1_Click()

dim dblTemperatura1

dim dblTemperatura2

dim dblResposta

dblTemperatura1 = Screen.Item("Texto1").Value

dblTemperatura2 = Screen.Item("Texto2").Value

dblResposta = Somar(dblTemperatura1,dblTemperatura2)

MsgBox "O resultado é " & dblResposta

End Sub

 

Mas e se você precisar de uma função global?

 

Nesse caso, realmente não tem como criar, mas há uma forma de você replicar o comportamento de um procedimento ou função. Não fica tão prático quanto, mas vai sim te poupar muito retrabalho.

Imagine o mesmo cenário citado anteriormente. Você tem complexos algoritmos que se repetem com frequência, mas agora não apenas dentro de um script, e sim dentro de vários.

 

Se estivermos falando de uma função, você então precisa dos seguintes recursos:

  • Forma de disparar essa função

  • Forma de passar os parâmetros necessários, caso existam

  • E por fim uma forma de receber o valor que a função retorna

Para procedimento, é parecido, com exceção de que não há valor a retornar por fora dos parâmetros.

 

Com isso mente, você pode criar uma Pasta de Dados (DataFolder) ou um Servidor de Dados (DataServer) e cria os tags necessários dentro dele, para efeito de organização. Assim você tem as os tags usados por cada método separados por pasta e não todos misturados em uma só.

 

No exemplo abaixo, replicamos a função Somar com tag.

 

Para isso foi então criado uma Pasta de Dados contendo o tag gatilho, que será chamado e também será o executor do Script. Criamos também dois tags para os parâmetros e um tag de retorno chamado resultado.

 

Para que seu tag gatilho seja executado, você deve criar um evento de usuário. Crie o tag com valor original booleano, iniciando em False. Crie então um evento de usuário. Em nosso exemplo, demos o nome OnTrue. Coloque a propriedade Value como expressão e selecione a opção “Sempre que a propriedade for uma condição verdadeira”. Não marque a opção “Repetir o evento”.

 

 

Com isso, crie um script para este evento, considerando a funcionalidade desejada para a função. Seguindo com o nosso exemplo da função Somar, segue o código abaixo:

 

Sub Somar_OnTrue()

'irá executar sempre que o Valor do Tag for modificado de False para True

'efetua a operação usando os parâmetros e armazena o resultado na tag de retorno

Parent.Item("Resultado").Value = Parent.Item("dblValor1").Value + Parent.Item("dblValor2").Value

'volta o valor do Tag para False para que este script possa ser chamado novamente

Value = False

End Sub

 

Para usar, basta primeiro setar os tags de parâmetros e em seguida setar o valor do tag gatilho para True. Neste exemplo não precisa modificar o valor de volta para False pois o script do tag gatilho já está fazendo isso. Chame a propriedade Value do tag de retorno e o resultado de sua função estará.

 

Sub CommandButton2_Click()

dim dblResposta

'Passagem de Parâmetros

Application.GetObject("Dados.FuncaoSomar.dblValor1").Value = Screen.Item("Texto1").Value

Application.GetObject("Dados.FuncaoSomar.dblValor2").Value = Screen.Item("Texto2").Value

'Chamada da função

Application.GetObject("Dados.FuncaoSomar.Somar").Value = True

'Recebe o retorno da função

dblResposta = Application.GetObject("Dados.FuncaoSomar.Resultado").Value

MsgBox "O resultado é " & dblResposta

End Sub

 

Não muito prático, concordo, mas aqui na Vieira-Ishikawa já nos poupou muito retrabalho.

 

 

Update: Criamos um vídeo sobre o assunto. Assista nosso passo a passo:

 

 

 

 

 

 

 

Please reload

Em Destaque

Estudo de Caso SCADA COG COS

March 13, 2018

1/4
Please reload

Publicações Recentes

March 13, 2018

Please reload

Arquivo