Sei sulla pagina 1di 2

Pgina 1 de 2

09 Comandos Definidos pelo Usuario (UDCs)


Reviso: 13/07/2002

Abrangncia Verso 5.07 Verso 5.08 Verso 6.09 Verso 7.10 Verses Anteriores

Este recurso cria novas e infinitas possibilidades para modificar a maneira pela qual escrevemos o cdigo de uma funo e a maneira pela qual podemos resolver problemas complexos. Ele ajuda a facilitar a manuteno do cdigo, e a implementao de normas. Estes comandos so traduzidos, analisados e modificados antes que o compilador comece a trabalhar para gerar um arquivo objeto. O responsvel por esta traduo o pr-processador que um tradutor inteligente que atua antes da gerao do cdigo objeto. Em sua maioria, isto se resume a encontrar os comandos no cdigo fonte e traduzi-los para instrues e funes equivalentes que se acham no corpo da funo ou no contedo de arquivos .CH (arquivos de cabealho). Este tipo de arquivo (.CH), contm diversos comandos que sero utilizados por todas as funes que contenham a instruo include em seu cdigo. Estes mesmos comandos poderiam estar embutidos na funo, mas para facilitar a manuteno, um nico arquivo .CH, pode ser includo (comando include) em vrias funes ao mesmo tempo. No h a necessidade de colocar o comando include em cada funo. Uma nica meno ao .CH no arquivo .PR?, servir ao propsito de todas as funes nele embutidas. Estes comandos so diretivas do pr-processador e comeam sempre com o caracter # diretamente sua frente e devem estar escritos em caracteres tipo caixa alta. Os mais utilizados no Protheus so: #DEFINE #IFDEF, ou #IFNDEF #ELSE #ENDIF #INCLUDE

Cada um destes comandos pode ser colocado em qualquer parte do arquivo fonte, que ser lido pelo pr-processador. No entanto, para facilitar a visualizao da existncia destes comandos e manuteno da funo, estes comandos devem ser colocados no incio do fonte. O pr-processador substituir, cada ocorrncia da constante no fonte, ser substituda pela expresso ou valor, que estiver contida diretamente frente da mesma. A exemplo de sintaxe e cdigo fonte para este comando :
#DEFINE _TESC 27 #DEFINE _LESC lastkey() if _nLastkey == _TESC RETURN Endif if _LESC == _TESC RETURN

http://dem.microsiga.com.br/w_wEx011.apw?Cod=018282

24/8/2004

Pgina 2 de 2

Endif

Esta diretiva muito til quando temos um valor constante vrias vezes repetido dentro do cdigo fonte, que poder ser alterado com freqncia no decorrer da vida til da funo.
#IFDEF ou #IFNDEF <CONSTANTE> <instrues> #ELSE <outras instrues> #ENDIF

Esta diretiva do pr-processador permite que voc prepare aplicaes para compilao condicional, ou em outras palavras, se a <constante>, definida anteriormente via diretiva DEFINE ou pelo Protheus foi definida (IFDEF), as <instrues> sero incorporadas ao cdigo objeto e as <outras instrues>, sero desprezadas. Mas se a <constante> no foi definida <IFNDEF> as <instrues> sero incorporadas e as <outras instrues> sero desprezadas. #INCLUDE <ARQUIVO> Uma instruo INCLUDE diz ao pr-processador para inserir o contedo de outro arquivo em um local determinado dentro da funo. Este arquivo especificado, deve focalizar outras instrues do pr-processador que possam ser comuns a diversos mdulos da rotina.

Uso de Strings Para que o sistema possa ser utilizado em outros pases com lnguas diferentes ao invs de inserirmos diretamente os textos no fonte do relatrio utilizamos o recurso de strings, onde atravs de um include acessaremos o texto em trs lnguas diferentes (Portugus, Espanhol e Ingls) dependendo da forma da compilao. convencionado que o nome do include seja o mesmo nome do fonte do relatrio para que a manuteno deste relatrio seja o mais simples possvel.
Exemplo:

Relatrio -> FABR001.PRW Include -> FABR001.CH

Grupos Relacionados Principal / Guias de Referncia / Como programar Advpl no ERP

Topo da Pgina

http://dem.microsiga.com.br/w_wEx011.apw?Cod=018282

24/8/2004

Potrebbero piacerti anche