Para se disponibilizar um ponto de entrada e executar uma função de usuário, existem duas formas:
- Utilizando a função Execblock()
- 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.