Funções para Exibição de Informações no Console do Protheus

Funções para Exibição de Informações no Console do Protheus

Invariavelmente precisamos que sejam exibidas informações das nossas customizações, seja para verificar se o conteúdo de variável está correto, seja para registrar, por exemplo, execuções da função conforme a mesma vai sendo executada.

E no post de hoje, iremos falar sobre duas funções para exibição de informações no Console do Protheus.

A primeira função que é bastante conhecida e utilizada é o ConOut.

A sua utilização é bem simples, basta passar entre os parênteses da função, o conteúdo que deseja, podendo ser uma variável, ou mesmo uma string.

Para exibição de informações referentes as variáveis do tipo numérico ou data, não é necessário converter as mesmas para string, desde que tais variáveis sejam setadas diretamente função, conforme exemplo abaixo:

#Include "Protheus.ch"

User Function SSCnsA()

  //Variaveis Locais
  Local nValor	:= 100
  Local dData	:= Date()

  ConOut(nValor)
  ConOut(dData)

Return Nil

A saída é realizada diretamente no console do Application Server (AppServer), da seguinte forma (box vermelho):

Saída Console SSCnsA - Smart SigaImagem 01 – Saída Console SSCnsA – Smart Siga

Caso for exibir as informações referentes aos tipos das variáveis citadas acima, concatenadas com strings, deve-se obrigatoriamente converter tais variáveis em string primeiro, conforme exemplo abaixo:

#Include "Protheus.ch"

User Function SSCnsB()

  //Variaveis Locais
  Local nValor	 := 100
  Local dData	 := Date()
  Local cString1 := "O Valor e: "
  Local cString2 := " A Data de Hoje e:  " 

  ConOut(cString1 + AllTrim(Str(nValor)) + cString2 + DtoC(dData))	

Return Nil

Após executar o ConOut no exemplo acima, a seguinte mensagem é exibida no Console do AppServer:

Saída Console SSCnsB - Smart SigaImagem 02 – Saída Console SSCnsB – Smart Siga

Abaixo, segue a documentação oficial do ConOut, conforme o TDN:

NomeTipoDescriçãoObrigatório
cMensagem / xVariávelCaractere / Numérico / DataIndica a mensagem que será apresentada no console do AppServerX

A segunda função a qual usamos para exibir informações no console do AppServer, é a VarInfo.

Nós da Smart Siga usamos com mais frequência a VarInfo do que a ConOut, devido a VarInfo além de desempenhar a mesma funcionalidade do ConOut, a mesma tem três adicionais a mais, que tecnicamente fazem toda a diferença.

O primeiro adicional, é que, caso esteja exibindo no Console um Array e/ou Objeto, não é necessário executar um laço para exibir todo o conteúdo do Array e/ou Objeto. Para identificar o tipo Array e Objeto, o VarInfo retorna o tipo como Array e Object.

A função VarInfo exibi recursivamente, todos os itens do Array automaticamente, independentemente da dimensão do mesmo, exibindo suas respectivas posições. Se o Array tiver muitas demissões com milhares de informações, poderá ocorrer erro de “Estouro de Pilha” (Stack Overflow).

No caso do Objeto, o VarInfo retorna recursivamente também, todos as propriedades do Objeto.

O segundo adicional, que o VarInfo além de exibir o conteúdo da variável, exibe o tipo da variável, isto é, se é caractere (C), numérica (N), data (D), lógica (L) ou Bloco de Código (B), além de exibir o tamanho da mesma.

E o terceiro adicional é que, caso você tente exibir uma variável, por exemplo, do tipo numérica concatenada com uma string ou uma variável que não existe, não é gerado um error.log.

O que o VarInfo retorna, é um dado do tipo “U”, de Undefined (Indefinido).

Segue abaixo, um exemplo de um fonte utilizando o VarInfo:

#Include "Protheus.ch" 

User Function SSCnsC() 

  //Variaveis Locais 
  Local nValor	:= 100 
  Local dData 	:= Date()
  Local cString	:= "Mensagem TesTe"
  Local lLogica	:= .T.
  Local bBloco	:= {| x1,x2 | IIF( 5 < 4 , "Menor" , "Maior" ) }
  Local oTFont 	:= TFont():New('Courier new',,-16,.T.)
  Local aArray	:= {nValor, dData, cString, lLogica, bBloco, oTFont, cString + 200} 

  VarInfo("Dados das Variaveis: ", aArray)	 

Return Nil

Executando o fonte acima, são exibidas as seguintes informações no Console do Protheus:

Saída Console SSCnsC - Smart SigaImagem 03 – Saída Console SSCnsC – Smart Siga

Como podemos verificar na imagem acima, o VarInfo exibiu as informações das variáveis e seus respectivos tipos.

Abaixo, segue documentação não oficial do VarInfo, já que tal função não está documentada no TDN:

NomeTipoDescriçãoObrigatório
cMensagemCaractereCorresponde a um nome atribuído à variável para análise. Internamente, apenas é
utilizado para prefixar o retorno das informações da VarInfo.
X
xVarCaractere / Numérico / Data / Lógico / Bloco de CódigoVariável de qualquer tipo a ser processada.X
nMargemNuméricoCorresponde à margem esquerda inicial de espaços daString de retorno ,
multiplicado por 5. Default = 0.
lHtmlLógicoIdentifica se a String de retorno será montada em formato Html (.T. / Default )
ou ASCII (.F.).
lEchoLógicoDefine se o Echo do retorno deve ser enviado ao console do AppServer,
caso habilitado. ( Default = .T. ).

Os parâmetros nMargem, lHtml e lEcho, não são obrigatórios ao utilizar a função VarInfo.

Na verdade, pouquíssimas vezes, fazemos alterações no valor padrão dos parâmetros nMargem, e lHtml, já que, os mesmos não fazem importantes mudanças no uso do VarInfo.

Somente o parâmetro lEcho, impacta diretamente na função VarInfo, já que, se alterar o mesmo para falso (.F.)., o retorno da função não será processado no Console do AppServer.

Geralmente, utiliza-se o lEcho com valor falso, quando é necessário atribuir o retorno da função VarInfo, à uma determinada variável, para que se possa posteriormente, utilizar o retorno da função, para algum uso específico.

Tanto a função ConOut como a função VarInfo, exibem suas informações diretamente na tela do AppServer, caso o mesmo está sendo executado no modo “Console”, ou salva diretamente no arquivo console.log, caso o AppServer esteja sendo executado em modo “Serviço”.

Como vocês puderam verificar, o é bem fácil utilizar as funções ConOut e VarInfo, porém as mesmas nos ajudam muito quando estamos realizando nossas customizações, e gostaríamos se verificar o conteúdo de determinadas variáveis, sem ter que ficar debugando nosso fonte.

Outro uso importante das funções acima, é para termos informações de processamento de rotinas, sem ter que ficar exibindo dialogs em tela, aumentando o tempo de processamento das mesmas.

Disponibilizamos também, os fontes utilizados nesse post, em nosso GitHub.

Caso deseje baixar tais fontes diretamente no GitHub, basta clicar aqui.

Caso ainda não tenham se inscrito no Canal Smart Siga, ou em nossas mídias sociais, ou em nosso GitHub, aproveitem para se cadastrar agora, pois assim, vocês recebem em primeira mão, todas as novidades do nosso site.

Aproveitem também, para ingressar em nosso Canal do Smart Siga no Telegram. Para tanto acessem: https://t.me/smartsiga.

Abraços e obrigado por nos acompanhar.

Smart Siga - TI Inteligente

Referências:
TDN – ConOut

 

 

Compartilhe:
  •  
  •  
  •  

2 thoughts on “Funções para Exibição de Informações no Console do Protheus

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Seja um Analista VIP!!!

Recebe em primeira mão as novidades do Canal Smart Siga, além de conteúdos exclusivos.