Árvore de páginas

Correção - Comportamento das funções getapoinfo() e getfuncarray()

Esta build contém uma correção na informação  de data retornada para um fonte e/ou recurso no repositório, retornados por ambas as funções. 

  

Abrangência ERP 10 e 11
Situação

Utilização das funções getapoinfo() e/ou  getfuncarray()

Ocorrência

No 4º elemento do array retornado pela função getapoinfo(), e no array de datas por referência, passado como 5º parâmetro para a função getfuncarray(), é retornada uma informação do tipo "D" (Data) Advpl, correspondendo à data do arquivo fonte e/ou resource no RPO. 

 

Embora a data retornada estivesse correta, e a sua conversão para string utilizando DTOC() e/ou DTOS() também estivessem corretas, a comparação da variável "D" data retornada com outra variável Data, mesmo que verdadeira, sempre retornava .F. ( Falso ). 

 

Por exemplo : 

 

aInfo := getapoinfo("meufonte.prw")

conout("Data = "+dtos(aInfo[4])) // 20120101


dMinhaData := ctod("01/01/2012")

conout("Minha Data = "+dtos(dMinhaData) )


If aInfo[4] == dMinhaData


conout("Datas Iguais")


Else


conout("Datas diferentes")


Endif

O resultado desta execução no console do servidor mostrava as mesmas datas, mas a comparação das datas era diferente. 

 

 

Data = 20120101
Minha Data = 20120101
Datas diferentes 

 

A comparação somente funcionava adequadamente caso ambas as datas fossem convertidas para string, uisando dtoc() ou dtos(), por exemplo : 

 

If dtos(aInfo[4]) == dtos(dMinhaData)

   conout("Datas Iguais")

Else

   conout("Datas diferentes")

Endif

 

 

Correção

Realizada correção na composição da data retornada por ambas as funções. 

Informações adicionais
  • Correção realizada através da ocorrência TEC-3224.
  • Nenhuma alteração foi feita no operador de comparação de datas da linguagem Advpl, esta ocorrência de falha de comparação  era reproduzida exclusivamente com as datas retornadas pelas funções   getapoinfo() e/ou  getfuncarray(), devido a uma precisão interna adicional usada erroneamente na composição da representação da data na memória. 

  • Sem rótulos