EPL LOGIX
Published: 2022-10-05 19:06:46

# **O que é EPL**
A sigla EPL significa "**Entry Point Logix**", através deste recurso é possível criar no Logix um ponto de entrada para a execução de uma rotina específica.

Quando o cliente identifica a necessidade de **customizar** um determinado ponto do sistema, ele deve entrar em contato com a **Fábrica de Software** e solicitar a criação deste **ponto de entrada** (mediando a realização de um orçamento).

Após a aprovação, a Fábrica de Software irá alterar o programa Padrão do Logix e colocar a chamada da função especifica.

Segue exemplo de como deve ser realizada a chamada da EPL no Logix.

```
IF LOG_existe_epl("tst0003y_epl_teste") THEN
   CALL tst0003y_epl_teste()
END IF
```

Uma vez criado o ponto de entrada no programa padrão, fica a cargo do cliente definir quem irá desenvolver o código específico, finalizado o desenvolvimento basta que o fonte seja compilado para que a rotina fique disponível no RPO do Logix.

# **Tipos de fontes no Logix**

As chamadas de funções EPLs podem estar presentes em qualquer fonte do sistema. No Logix podemos classificar os fontes como **MAINSOURCE** ou **SOURCE**

> **MAINSOURCE** é o programa principal, aquele que esta cadastrado no menu do sistema.

> **SOURCE** são os fontes que possuem somente definições de funções.

Podemos pegar como exemplo o FIN10049 (MAINSOURCE) que internamente chama a função FIN85129 (SOURCE). 

Por padrão todas as chamadas de EPL estão **ativadas** no sistema, para **desativa-las** existem algumas chaves de **profile** que precisam ser alteradas.

> :warning: Para que os controles de ativação/desativação de EPLs sejam realizados, é necessário que no fonte LOGIX seja utiliza a função LOG_existe_epl

Para exemplificar este cenário foram criados 3 fontes:
> tst0001.4gl é um programa principal (MAINSOURCE)

> tst0002.4gl é um fonte somente com definições de funções (SOURCE)

> tst0003.4gl fonte específico (EPL)

# **Desativando EPLS**

Segue abaixo lista das chaves que podem ser incluídas no arquivo de profile do Logix para desativar a execução das EPLS

**LOGIX.EPL.ENABLE = 0**
> Desabilita todas as chamas de EPL no sistema. Independente do fonte em que ela esteja sendo chamada

**LOGIX.EPL.MAINSOURCE.tst0001.ENABLE = 0**
> Desabilita todas as chamas de EPL identificas a partir da execução do programa principal

**LOGIX.EPL.SOURCE.tst0001.ENABLE = 0**

**LOGIX.EPL.SOURCE.tst0002.ENABLE = 0**
> Desabilita todas as chamas de EPL somente do fonte que foi definido na chave.

**LOGIX.EPL.FUNCTION.tst0003y_epl_teste.ENABLE = 0**
> Desabilita somente a função EPL que foi definida na chave

# **Exemplos**

Segue exemplo utilizando cada uma das chaves

**LOGIX.EPL.ENABLE = 1**
> Todas as EPLS liberadas
```
| *** [FRAMEWORK] INICIO ***
|
| [FRAMEWORK] Entrou na funcao - tst0001_inicia_processamento
| [FRAMEWORK] Teste execucao EPL [MAINSOURCE]
| [EPL] Chamada função TST0003Y_EPL_TESTE() [source: TST0001.4GL line: 41 function: TST0001_INICIA_PROCESSAMENTO()]
|
| >>> [EPL][FRAMEWORK] Entrou na funcao - tst0003y_epl_teste <<<
|
| [FRAMEWORK] Entrou na funcao - tst0002_function_logix
| [FRAMEWORK] Teste execucao EPL [FUNCTION]
| [EPL] Chamada função TST0003Y_EPL_TESTE() [source: TST0002.4GL line: 21 function: TST0002_FUNCTION_LOGIX()]
|
| >>> [EPL][FRAMEWORK] Entrou na funcao - tst0003y_epl_teste <<<
|
| *** [FRAMEWORK] FIM ***
```

**LOGIX.EPL.ENABLE = 0**
> Todas as EPLS desabilitadas
```
| *** [FRAMEWORK] INICIO ***
|
| [FRAMEWORK] Entrou na funcao - tst0001_inicia_processamento
| [FRAMEWORK] Teste execucao EPL [MAINSOURCE]
| [EPL] Todas chamadas EPL desabilitadas. Função TST0003Y_EPL_TESTE() ignorada. [source: TST0001.4GL line: 40 function: TST0001_INICIA_PROCESSAMENTO()]
| [FRAMEWORK] Entrou na funcao - tst0002_function_logix
| [FRAMEWORK] Teste execucao EPL [FUNCTION]
| [EPL] Todas chamadas EPL desabilitadas. Função TST0003Y_EPL_TESTE() ignorada. [source: TST0002.4GL line: 21 function: TST0002_FUNCTION_LOGIX()]
| *** [FRAMEWORK] FIM ***
```

**LOGIX.EPL.MAINSOURCE.tst0001.ENABLE = 0**
> Todas as EPLS desativadas quando chamadas a partir do programa principal TST0001
```
| *** [FRAMEWORK] INICIO ***
|
| [FRAMEWORK] Entrou na funcao - tst0001_inicia_processamento
| [FRAMEWORK] Teste execucao EPL [MAINSOURCE]
| [EPL] Chamadas EPL desabilitadas para o programa principal TST0001. Função TST0003Y_EPL_TESTE() ignorada. [source: TST0001.4GL line: 40 function: TST0001_INICIA_PROCESSAMENTO()]
| [FRAMEWORK] Entrou na funcao - tst0002_function_logix
| [FRAMEWORK] Teste execucao EPL [FUNCTION]
| [EPL] Chamadas EPL desabilitadas para o programa principal TST0001. Função TST0003Y_EPL_TESTE() ignorada. [source: TST0002.4GL line: 21 function: TST0002_FUNCTION_LOGIX()]
| *** [FRAMEWORK] FIM ***
```

**LOGIX.EPL.SOURCE.tst0001.ENABLE = 0**
> EPLS desativadas somente no fonte TST0001
```
| *** [FRAMEWORK] INICIO ***
|
| [FRAMEWORK] Entrou na funcao - tst0001_inicia_processamento
| [FRAMEWORK] Teste execucao EPL [MAINSOURCE]
| [EPL] Chamadas EPL desabilitadas para o fonte TST0001. Função TST0003Y_EPL_TESTE() ignorada. [source: TST0001.4GL line: 40 function: TST0001_INICIA_PROCESSAMENTO()]
| [FRAMEWORK] Entrou na funcao - tst0002_function_logix
| [FRAMEWORK] Teste execucao EPL [FUNCTION]
| [EPL] Chamada função TST0003Y_EPL_TESTE() [source: TST0002.4GL line: 21 function: TST0002_FUNCTION_LOGIX()]
|
| >>> [EPL][FRAMEWORK] Entrou na funcao - tst0003y_epl_teste <<<
|
| *** [FRAMEWORK] FIM ***
```

**LOGIX.EPL.SOURCE.tst0002.ENABLE = 0**
> EPLS desativadas somente no fonte TST0002
```
| *** [FRAMEWORK] INICIO ***
|
| [FRAMEWORK] Entrou na funcao - tst0001_inicia_processamento
| [FRAMEWORK] Teste execucao EPL [MAINSOURCE]
| [EPL] Chamada função TST0003Y_EPL_TESTE() [source: TST0001.4GL line: 40 function: TST0001_INICIA_PROCESSAMENTO()]
|
| >>> [EPL][FRAMEWORK] Entrou na funcao - tst0003y_epl_teste <<<
|
| [FRAMEWORK] Entrou na funcao - tst0002_function_logix
| [FRAMEWORK] Teste execucao EPL [FUNCTION]
| [EPL] Chamadas EPL desabilitadas para o fonte TST0002. Função TST0003Y_EPL_TESTE() ignorada. [source: TST0002.4GL line: 21 function: TST0002_FUNCTION_LOGIX()]
| *** [FRAMEWORK] FIM ***
```

**LOGIX.EPL.FUNCTION.tst0003y_epl_teste.ENABLE = 0**
> Desativando a chamada da EPL pelo nome da função
```
| *** [FRAMEWORK] INICIO ***
|
| [FRAMEWORK] Entrou na funcao - tst0001_inicia_processamento
| [FRAMEWORK] Teste execucao EPL [MAINSOURCE]
| [EPL] Chamada EPL desabilitada para a função TST0003Y_EPL_TESTE(). Função ignorada. [source: TST0001.4GL line: 40 function: TST0001_INICIA_PROCESSAMENTO()]
| [FRAMEWORK] Entrou na funcao - tst0002_function_logix
| [FRAMEWORK] Teste execucao EPL [FUNCTION]
| [EPL] Chamada EPL desabilitada para a função TST0003Y_EPL_TESTE(). Função ignorada. [source: TST0002.4GL line: 21 function: TST0002_FUNCTION_LOGIX()]
| *** [FRAMEWORK] FIM ***
```