Para se disponibilizar um ponto de entrada e executar uma função de usuário, existem duas formas:

 

  1. Utilizando a função Execblock()
  2. Chamando-a diretamente por meio da função de usuário (U_Nome da função)

 

A primeira forma é normalmente utilizada pelo Protheus padrão para disponibilizar os pontos de entrada. No local adequado dentro do programa padrão, existe uma função que verificará se o ponto de entrada está compilado no repositório. Caso exista, a função Execblock executa o ponto de entrada desenvolvido especificamente.

A segunda forma é normalmente utilizada para se chamar uma função específica criada para atender uma determinada necessidade. Suponhamos que foi necessário criar a rotina específica PTOT010A, para que o usuário informe todas as revistas associadas a um curso. Caso ela não seja chamada no menu, e sim executada a partir de um determinado ponto de outra rotina, a sua chamada será:

 

U_PTOT010A

 

Em ambas as formas, são possíveis passar parâmetros para a função específica. Porém, o recebimento desses parâmetros segue regras diferentes. Na primeira forma, os parâmetros devem ser recebidos por meio do comando PARAMXB. Por exemplo, se forem passados 3 parâmetros para a função, as mesmas deverão ser recebidas por 3 comandos PARAMIXB, conforme descrito abaixo:

 

USER FUNCTION PTOT010A()

 

LOCAL nParam1 := PARAMIXB[1]

LOCAL nParam2 := PARAMIXB[2]

LOCAL nParam3 := PARAMIXB[3]

 

Na segunda forma, os parâmetros são recebidos diretamente pela função na declaração USER, conforme exemplos abaixo:

 

USER FUNCTION PTOT010A(nParam1, nParam2, nParam3)

 

Obs.: tanto na primeira quanto na segunda forma, os nomes das variáveis são apenas exemplos.

  • Sem rótulos