Alguns procedimentos externos devem ser configurados no momento da inicialização. Esta inicialização assume uma de duas formas, dependendo do tipo de procedimento externo:
Inicialização de procedimentos externos no estilo Informatica.
A classe Tx<MODNAME>, que contém o procedimento externo, também contém a função de inicialização Tx<MODNAME>::InitDerived. A assinatura dessa função de inicialização é bem conhecida do Serviço de Integração e apresenta três parâmetros:
nInitProps.
Este parâmetro informa à função de inicialização sobre quantas propriedades de inicialização estão sendo atribuídas a ela.
Propriedades.
Este parâmetro é uma matriz de strings nInitProp que representa os nomes das propriedades de inicialização.
Valores.
Este parâmetro é uma matriz de strings nInitProp que representa os valores das propriedades de inicialização.
Primeiro, o Serviço de Integração chama a função Init() na classe base. Quando a função Init() for concluída com êxito, a classe base chama a função Tx<MODNAME>::InitDerived().
O Serviço de Integração cria o objeto Tx<MODNAME> e, em seguida, chama a função de inicialização. O desenvolvedor externo de procedimentos tem a responsabilidade de fornecer essa parte da função Tx<MODNAME>::InitDerived() que interprete as propriedades de inicialização e as utilize para inicializar o procedimento externo. Assim que o objeto tiver sido criado e inicializado, o Serviço de Integração pode chamar o procedimento externo para o objeto de cada linha.
Inicialização de procedimentos externos no estilo COM.
O objeto que contém o procedimento externo (ou objeto PE) não apresenta uma função de inicialização. Ao invés disso, um outro objeto (o objeto FC) serve de classe de fábrica ao objeto PE. O objeto FC apresenta um método que pode criar um objeto PE.
A assinatura do método do objeto FC é determinada a partir de sua biblioteca de tipos. O Serviço de Integração cria o objeto FC e, em seguida, chama o método para que auxilie a criar o objeto PE, que passa por este método, independente dos parâmetros necessários. Para isso, é necessário que a assinatura do método consista em um conjunto de parâmetros de entrada, cujos tipos podem ser determinados a partir da biblioteca de tipos, seguidos de um único parâmetro de saída, que é um IUnknown** ou um IDispatch**, ou ainda um VARIANT*, que aponta a um IUnknown* ou a um IDispatch*.
Os parâmetros de entrada detêm os valores necessários para inicializar o objeto EP e o parâmetro de saída recebe o objeto inicializado. O parâmetro de saída pode ter ou o atributo [out] ou [out, retval]. Ou seja, o objeto inicializado pode ser retornado como um parâmetro de saída ou como o valor retornado do método. Os tipos de dados suportados para o parâmetro de entrada são: