Regras

Este recurso não está disponível no Gestão de Pessoas | HCM GO UP. Saiba mais.

Uma regra é um texto com comandos para o sistema, que irá determinar procedimentos a serem efetuados. Com estes comandos, o usuário poderá escrever seus próprios procedimentos, para que o sistema processe as informações ao seu modo.

Fazendo uma análise geral da rotina de regras, nota-se que no seu desenvolvimento são utilizadas Variáveis, Constantes, Tabelas/Campos, Operadores, Comandos, Funções e anotações de lógica de programação. Veja abaixo a definição desses componentes:

Variáveis

Variáveis são palavras especiais que podemos utilizar na elaboração das regras. Estas variáveis assumem ou fornecem dados específicos que podem ou não variar conforme a execução da regra. O nome da variável pode ser composto de letras e/ou números ou o caractere (underscore ou sublinhado), não podendo ter mais de 30 (trinta) caracteres e tendo que iniciar, obrigatoriamente, por uma letra.

Toda variável deve ser declarada no início da regra, através do comando Definir (ver comandos), atribuindo-se um tipo, nome, e se necessário, a quantidade de ocorrências desta variável.

Importante: Variáveis numéricas simples, como contadores, acumuladores, indicadores, etc, não precisam ser declaradas. Elas são declaradas automaticamente quando são referenciadas.
Constantes
Constantes são informações que não têm seu valor alterado durante a execução de uma regra. São os números que você digita na regra. Exemplo: quando você diz que VlrAux = 200; o número “200” é a constante.
Tabelas/Campos

As tabelas são as unidades básicas para se armazenar dados. São compostas por linhas e colunas.

Colunas também denominadas “Campos”, as colunas são usadas para representar o valor de dados inseridos sob cada coluna e possuem as seguintes propriedades:

  • Cada coluna possui um nome único;
  • São ordenadas da esquerda para a direita;
  • Linhas: As linhas podem ser vistas como “registros” em um arquivo, as linhas possuem as seguintes propriedades:
  • As linhas não são ordenadas;
  • Cada linha de uma tabela tem apenas um valor para cada coluna dessa tabela;
    Cada linha de uma tabela deve ser inédita;
  • Como são utilizados em todos os locais de definição de regras ou fórmulas, temos a tecla F8 que traz a relação das tabelas com os dados existentes no sistema.

Pode-se então percorrer a relação de tabelas com as setas, clicar no sinal de “+” apresentado no lado esquerdo do nome da tabela, para abrir a relação de campos pertencente a tabela, posicionar o cursor sobre o nome do campo e clicar no botão Selecionar, para que o dado seja deslocado para o texto da regra, na posição do cursor. Vários campos podem ser selecionados de uma vez só, porém, todos serão incluídos na regra, a partir da posição do cursor.

Sabendo-se o nome da tabela e o nome do campo, este dado pode ser digitado, separando o nome da tabela e o nome do campo por um “**.**” (ponto).

Operadores

Descrevemos os operadores, que são utilizados nas regras e fórmulas:

Operadores Lógicos

Sinal

Descrição

=

Sinal igual:

Utilizado em comparações/operações aritméticas

Maior que:

Utilizado nas comparações do comando “Se”

<

Menor que:

Utilizado nas comparações do comando “Se”

<>

Diferente de:

Utilizado nas comparações do comando “Se”

=

Maior ou igual a:

Utilizado nas comparações do comando “Se”

<=

Menor ou igual a:

Utilizado nas comparações do comando “Se”

e

Utilizado com o comando “Se”, para ligar várias condições, onde todas devem ser verdadeiras para que o resultado da comparação seja verdadeira.

ou

Utilizado com o comando “Se”, para ligar várias condições, onde pelo menos uma das condições deve ser verdadeira para que o resultado da comparação seja verdadeira.

Operadores Aritméticos

Sinal

Descrição

=

Sinal igual:

Utilizado em comparações/operações aritméticas

Sinal de Somar:

Utilizado nas operações aritméticas de somar

Sinal de Subtrair:

Utilizado operações aritméticas de subtrair

/

Sinal dividir:

Utilizado nas operações aritméticas de divisão

Asterisco:

Utilizado nas operações aritméticas de multiplicação

++

Incremento de +1:

Utilizado para aumentar o valor de uma variável, de um em um.

—

Decremento de – 1:

Utilizado para diminuir o valor de uma variável, de um em um.

Operadores Extras

Sinal

Descrição

@

Arroba:

Delimitador utilizado para incluir comentários que tenham no máximo uma linha.

/*

Início de comentário.

*/

Final de comentário.

Comandos

Os comandos reconhecidos pelo sistema são:

Inicio ou { (abre chaves) => Indica o início de um bloco de comandos, quando este estiver subordinado a uma condição ou conjunto de condições (Se ou Senao).

Sintaxe: Inicio ou {

Fim ou } (fecha chaves) => Indica o final de um bloco de comandos, quando este estiver subordinado a uma condição ou conjunto de condições (Se ou Senao).

Sintaxe: Fim; ou }

Definir => Define uma variável ou função. Caso a variável não seja definida, esta será considerada como tipo Numero.

Sintaxe: Definir <Tipo> <Nome_da_Variável>
Onde o Tipo pode ser: Alfa, Numero, Tabela, Funcao, ou Cursor.

Alfa: Variável Alfanumérica. Esta poderá conter letras e/ou números.

Exemplo: Definir Alfa Vnome[30];

Numero: Variável que poderá guardar apenas números. Estes podem ser inteiros ou com casas decimais.

Exemplo: Definir Numero Vvalor;

Tabela: Variável que pode guardar valores em forma de tabela, onde tem-se linhas e colunas. Cada coluna é um nome com um tipo específico de informação. As linhas são indexadas de 1 até “N”.

Exemplo:
Definir Tabela Meses_do_Ano[12] =
{Alfa Nome_Mês[9];
Numero Qtde_Dias;}

Função: É um conjunto de comandos, que tem como objetivo calcular um ou mais valores e retorná-los para uso na regra. A vantagem da função, é que se existe uma operação que é repetida em muitas regras, pode-se criar a função e chamá-la em cada regra, sem precisar implementá-la novamente.

Uma função pode receber parâmetros e retornar valores. Imagine a seguinte situação: Em vários pontos da regra, do Controle de Ponto e Refeitório, precisa-se passar as horas de uma situação para outra. Para isso, poderia ser criada a seguinte função:

<div class="Code"><p>Funcao AltSituacao (Numero SitOri, Numero SitDes);</p><p>Inicio<br></br>HorSit[SitDes] = HorSit[SitOri];<br></br>HorSit[SitOri] = 0;<br></br>Fim;</p></div>

Observe que é definida a função e associado a ela dois parâmetros, definindo para cada um, o tipo. O tipo do parâmetro não pode ser alfanumérico. O nome da função é “AltSituacao” e seus parâmetros são SitOri (Situação de Origem) e SitDes (Situação de Destino). É importante lembrar que valores alterados dentro da função, também serão alterados fora dela. Exemplo, se HorSit[ ] é alterado dentro da função, automaticamente estará alterado na regra principal.

Para usar a função na regra, deve-se declará-la no início da mesma.

<div class="Code"><p>Definir Funcao AltSituacao (Numero SitOri, Numero SitDes);</p></div>

É interessante que se reserve, por exemplo, a regra 001 apenas para implementar funções.

Se: Usado para comparação. Executa o bloco ligado a condição, somente se esta for verdadeira.

Sintaxe: Se ( )

**Senao: **Usado em conjunto com o comando Se. O comando Senao será executado quando a condição especificada no comando Se não for verdadeira.

Sintaxe: Senao

Para: Comando utilizado para se fazer um loop de comandos. Ou seja, fazer com que um bloco de comandos seja executado determinado número de vezes. Indica-se um <valor inicial> e esse valor é incrementado pelo valor do <contador> até que a <condicao> seja falsa.

Sintaxe: Para (<valor inicial>; <condicao>; <contador>)

Enquanto: Comando utilizado para se fazer um loop de comandos. Ou seja, fazer com que um bloco de comandos seja executado determinado número de vezes até que a <condição> seja falsa.

Sintaxe: Enquanto (<condicao>)

Pare: Interrompe a execução de um bloco do comando Para ou Enquanto. O Pare, simplesmente faz com que o sistema abandone o bloco de comandos e continue a execução do restante das regras.

Sintaxe: Pare;

Cancel (1): Se for utilizado em uma regra do evento “Antes de Imprimir” de uma seção, cancela a impressão da seção. Se for usado no evento “Na Impressão” de um campo, cancela a impressão deste campo.

Sintaxe: Cancel (1);

Cancel (2): Deve ser usado em conjunto com as variáveis de sistema ValStr ou ValRet e somente no Evento “Na Impressão”. O valor alfa atribuído para ValStr seguido de Cancel (2) será impresso no campo em que foi implementada a regra.

Sintaxe: Cancel (2);

Mensagem: Exibe uma mensagem para o usuário durante a execução da regra.

Sintaxe: Mensagem (<tipo_da_mensagem>,”<mensagem>”);

Onde o tipo da mensagem pode ser:

    Erro: Mostra a mensagem e para a execução da regra.

    Retorna: Mostra a mensagem, com botões de opção. Neste caso, teríamos a seguinte sintaxe:

    Mensagem (Retorna,”Deseja encerrar a execução da regra ? [&Sim,&Não]”);

    Neste caso, o “Retorna” retornará 1 se for clicado na primeira opcão e 2 se for clicado na Segunda opção.

Vapara: Desvia a execução da regra para o <rótulo> determinado.

Sintaxe: Vapara <rótulo>;

Regra: Chama uma outra regra, identificada pelo <número da regra>.

Sintaxe: Regra (<numero_da_regra>);

Continue: Continua a execução de um loop feito pelo comando **Para. **Ou seja, se quiser que o loop não seja executado em determinado caso, faça o teste da condição e junto com ela use o comando.

Sintaxe: Continue;

Exemplo:

Se (teste < > 0)

Continue;

End: Usado na definição de uma função, para indicar qual parâmetro retornará valor.

Sintaxe: Funcao Teste (end <tipo do parâmetro> <nome do parâmetro>);

Abrir: Abre o <arquivo informado>, no <modo de abertura> desejado. Se o arquivo não existir ele é criado. Ele retorna um manipulador de arquivos.

Sintaxe: Manipulador_de_Arquivo = Abrir (“<nome_do_arquivo>”,<modo_de_abertura>);
Onde o Modo de Abertura pode ser: Ler ou Gravar.

Fechar: Fecha o arquivo aberto pela função Abrir.

Sintaxe: Fechar (<manipulador_de_arquivo>)

Ler: Lê uma <quantidade de caracteres> do arquivo especificado no <manipulador de arquivo> e joga o valor lido em uma <variável >.

Sintaxe: Ler (<manipulador_de_arquivos>, <variavel>,<tamanho>);

Gravar: Grava o valor de uma <variável ou de uma constante> no <manipulador de arquivos>.

Sintaxe: Gravar (<manipulador_de_arquivos>,<variável ou constante>,<tamanho>);

Lernl: Lê uma linha no arquivo indicado pelo <manipulador de arquivos> e joga o valor lido em uma <variável>.

Sintaxe: Lernl (<manipulador_de_arquivos>,<variável>);

Gravarnl: Grava uma linha no arquivo indicado pelo <manipulador de arquivos> com o valor contido na variável especificada.

Sintaxe: Gravarnl (<manipulador_de_arquivos>,<variável ou constante>);

Inserir: Faz com que o sistema, insira um arquivo na regra atual, em tempo de execução/compilação.

Sintaxe: Inserir “<nome_arquivo>”;

ValStr: Usado apenas no gerador, para alterar a descrição de um campo tipo Descrição. O texto passada para ValStr será impresso no lugar da descrição original do campo.

<div class="Code"><p>ValStr = ‘Teste’;<br></br>Cancel (2);</p></div>

Cursor

Os cursores nada mais são que um SELECT em uma regra, retornando registros que satisfaçam a condição informada na propriedade SQL de um Cursor.

Nota: O SELECT utilizado no cursor não possui relacionamento direto com o SELECT utilizado pelo gerador de relatórios por exemplo.

Os seguintes comandos são utilizados em conjunto com os cursores:

SQL: Usado para definir um comando SQL para o cursor.

Sintaxe: <nome_do_cursor>.SQL “<comando_SQL>”;

AbrirCursor: Abre um cursor.

Sintaxe: <nome_do_cursor>.AbrirCursor( );

FecharCursor: Fecha um cursor.

Sintaxe: <nome_do_cursor>.FecharCursor( );

Proximo: Lê o próximo registro do cursor.

Sintaxe: <nome_do_cursor>.Proximo( );

<campos> Os campos pertencentes ao cursor podem ser acessados diretamente. Os campos são tipo “Somente Leitura”, ou seja, não podem ser alterados.

Sintaxe: <nome_do_cursor>.<nome_do_campo>

Achou: Retorna verdadeiro se achou alguma linha do cursor.

Sintaxe: <nome_do_cursor>.Achou

NaoAchou: Retorna verdadeiro se não achou alguma linha do cursor.

Sintaxe: <nome_do_cursor>.NaoAchou

Exemplos:
  1. Cursor Retornando apenas uma linha: Quando tem-se a chave completa, este cursor deve retornar apenas uma linha, então usa-se a seguinte implementação:

<div class="Code"><p>Definir Cursor Cur_E140NFV; @Utiliza-se como padrão a nomeclatura Cur_+Nome Tabela@<br></br>Definir alfa VCodSnf[03];<br></br>VcodEmp=1;<br></br>VcodFil=1;<br></br>VcodSnf=”U”;<br></br>VnumNfv=100;<br></br>Cur_E140Nfv.Sql “SELECT VLRLIQ FROM E140NFV WHERE CODEMP=:VCODEMP \<br></br>AND CODFIL=:VCODFIL AND CODSNF=:VCODSNF \<br></br>AND NUMNFV=:VNUMNFV”;<br></br>Cur_E140Nfv.AbrirCursor();<br></br>Se (Cur_E140Nfv.Achou)<br></br>Inicio<br></br>@ Encontrou o Registro@<br></br>VvlrLiq=Cur_E140Nfv.VlrLiq;<br></br>Fim;<br></br>Cur_E140Nfv.fecharCursor();</p></div>

  1. Cursor Retornando várias linhas: Quando não tem-se a chave completa, este cursor pode retornar várias linha, então usa-se a seguinte implementação:

<div class="Code"><p>Definir Cursor Cur_E140NFV; @Utiliza-se como padrão a nomeclatura Cur_+Nome tabela@<br></br>Definir data VDatEmiIni;<br></br>Definir data VDatEmiFim;<br></br>Definir alfa VtnsPro[05];<br></br>VcodEmp=1;<br></br>VcodFil=1;<br></br>MontaData(15/01/1998,VdatEmiIni);<br></br>MontaData(30/01/1998,VdatEmiFim);<br></br>VTnsPro=”511”;<br></br>Cur_E140Nfv.Sql “SELECT VLRLIQ FROM E140NFV WHERE CODEMP=:VCODEMP \<br></br>AND CODFIL=:VCODFIL AND DATEMI>=:VDATEMIINI \<br></br>DATEMI&#x3C;=:VDATEMIFIM AND TNSPRO=:VTNSPRO”;<br></br>Cur_E140Nfv.AbrirCursor();<br></br>VvlrLiq=0;<br></br>Enquanto (Cur_E140Nfv.Achou)<br></br>Inicio</p><p>@ Encontrou o Registro@</p><p>VvlrLiq= VvlrLiq +Cur_E140Nfv.VlrLiq;<br></br>ListaSecao(“AdicionalTeste”); @Esta listando seção adicional p/cada registro do<br></br>Cursor@<br></br>Cur_E140Nfv.Proximo();<br></br>Fim;<br></br>Cur_E140Nfv.fecharCursor();</p></div>

Funções

Funções são comandos pré-definidos pelo sistema, que efetuam operações específicas, e que podem ou não retornar valores. Geralmente, uma função quando executada, necessita de parâmetros.

Funções Gerais

ConverteDataBanco (Data_Origem,Data_Destino): Esta função converte uma data qualquer, para o formato de data do banco de dados.

Parâmetros:

    Data_Origem: é o campo de tabela ou variável tipo data que se deseja converter.

    Data_Destino: é uma variável tipo Alfa, que conterá o retorno da conversão.

Exemplo:

Converter a data 31/12/1997, que foi informada na entrada do relatório, numa variável de entrada chamada EData.

<div class="Code"><p>Definir Alfa VDataStr[50];<br></br>ConverteDataBanco (EData,VDataStr);<br></br>Retorno: VDataStr = “to_date (‘31/12/1997’,’DD/MM/YYYY’)” ou no formato do banco usado.</p></div>

Utilizado em: Regra de Pré-Seleção para inserir uma cláusula Where no modelo, dependendo de um valor que o usuário informou na tela de entrada.

ConverteMascara (Tipo_dado,Valor_Origem,Alfa_Origem/Destino,Mascara): Esta função converte um determinado valor, que está em uma mácascara específica, para uma outra máscara, levando a conversão para a variável especificado em Alfa_Origem/Destino.

Parâmetros:

    Tipo_Dado: Pode ser: 1=Número, 2=Dinheiro(valor), 3=Data, 4=Hora, 5=Alfa.

    Valor_Origem: Campo/Variável/Valor a ser convertido.

    Alfa_Origem/Destino: Variável Alfa que receberá o resultado da conversão.

    Mascara: Especificar o formato com que o resultado da conversão deverá ser apresentado.

Importante: No caso de o tipo de dado ser 5=Alfa, o parâmetro Valor_Origem é passado como zero e o parâmetro Alfa_Origem/Destino receberá o campo alfa a ser convertido, e após a conversão, receberá o resultado da conversão.
Exemplo:

Caso o tipo de inscrição da empresa seja CPF, o número da inscrição deve ser apresentado no relatório com a máscara 999.999.999-99 e caso seja CGC, deve ser apresentado com a máscara 99.999.999/9999-99.

<div class="Code"><p>Definir Alfa VinscrStr[18];<br></br>Se (R030Fil.TipIns = 1) @ C.G.C @<br></br>ConverteMascara (1,R030Fil.NumCgc,VInscrStr,”99.999.999/9999-99”);<br></br>Senao<br></br>Se (R030Fil.TipIns = 3) @ C.P.F @<br></br>ConverteMascara (1,R030Fil.NumCgc,VInscrStr,”999.999.999-99”);</p></div>

Utilizado em: Relatórios, sempre que for necessário alterar a máscara de edição de algum valor em tempo de execução do relatório. Um dos casos é o exemplo acima.

InserirAlfa (Texto_Origem,Variável_Destino,Posicao_Inicial): Esta função insere um ou mais caracteres em uma Variável/Campo, a partir da posição indicada. Ou seja, se o campo alfa no qual deseja-se inserir o texto já existir informações, as que estiverem a partir da posicão indicada serão deslocadas para a direita e o que passar do tamanho definido do campo/variável será truncado.

Parâmetros:

    Texto_Origem: Texto/Variável Alfa que se deseja inserir.

    Variável_Destino: Variável tipo alfa, na qual se deseja inserir o texto.

    Posicao_Inicial: Poisção inicial da Variável_Destino, a partir da qual será inserido o texto_origem.

Exemplo:

Deseja-se inserir a partir da posição 12 do nome do empregado, o texto “Teste”.

<div class="Code"><p>InserirAlfa (“Teste”,R034Fun.NomEmp,12);</p></div>

Logo, se o campo R034Fun.NomEmp tivesse como conteúdo original “Fabio Luis Griebner” o conteúdo deste campo após o uso da função InserirAlfa seria “Fabio Luis TesteGriebner”. E, caso o campo tivesse uma limitação de 20 caracteres, o resultado seria “Fabio Luis TesteGrie”.

Utilizado em: Sempre que for necessário tratar parte de uma variável alfa.

LerPosicaoAlfa (Origem,Destino,Posicao): Esta função identifica qual o caractere que está em determinada posicao do campo/variável de origem.

Parâmetros:

    Origem: Campo/Variável tipo alfa que se deseja verificar.

    Destino: Variável numérica que receverá o caracter lido.

    Posicao: Posicao do Campo/Variável de Origem que se deseja identificar o caractere.

Exemplo:

Precisa-se pegar a 1a letra do Nome do Empregado para fazer alguma comparação.

<div class="Code"><p>Definir Numero VCaractere;<br></br>LerPosicaoAlfa (R034Fun.NomEmp,VCaractere,1);<br></br>Se (VCaractere = ‘F’)<br></br>....</p></div>

Observa-se que, se o nome do empregado for, por exemplo, “Fabio Luis Griebner”, após o uso da função, a variável VCaractere teria “F”. Porém, a letra “F” fica armazenada pelo código Ascii, logo, se quiser fazer alguma comparação, com determinado caractere, este deve ser especificado entre apóstrofes (ou aspas simples).

DeletarAlfa (Variavel/Campo,Posicao,Quantidade): Esta função deleta (apaga) uma determinada quantidade de caracteres de uma variável/campo, a partir da posição informada.

Parâmetros:

    Variável/Campo: Nome do campo ou variável tipo alfa da qual se deseja deletar os caracteres.

    Posicao: Posicao do campo/variável, a partir da qual deve-se deletar caracteres.

    Quantidade: Quantidade de caracteres que devem ser deletados a partir da posição informada.

Exemplo:

Deseja-se deletar do nome do empregado, a partir da posicão 8 (oito), 10 caracteres.

<div class="Code"><p>DeletarAlfa (R034Fun.NomEmp,8,10);</p></div>

Logo, se o nome do empregado fosse, por exemplo, “Fabio Luis Griebner”, após o uso da função DeletarAlfa teríamos “Fabio Ler”.

CopiarAlfa (Origem,Posicao_Inicial,Quantidade): Esta função copia parte do conteúdo de uma variável/campo para a variável/campo origem.

Parâmetros:

    Origem: Variável/Campo Alfa da qual se deseja copiar parte do conteúdo.

    Posicao_Inicial: Posicão a partir da qual se deseja copiar os caracteres.

    Quantidade: Quantidade de caracteres que se deseja copiar a partir da Posicao_Inicial.

Exemplo:

Deseja-se copiar do nome do empregado, a partir da 12a posição, os 10 próximos caracteres.

<div class="Code"><p>CopiarAlfa (R034Fun.NomEmp,12,10);</p></div>

Logo, se o nome do empregado fosse, por exemplo, “Fabio Luis Griebner”, após o uso da função CopiarAlfa o nome seria “Griebner”.

TamanhoAlfa (Origem,Tamanho): Esta função verifica o tamanho do campo alfa especificado em Origem.

Parâmetros:

    Origem: Campo/Variável Alfa que se deseja saber o tamanho.

    Tamanho: Variável tipo Numero que retornará o tamanho do campo/variável especificado em Origem.

Exemplo:

Deseja-se saber o tamanho do campo R034Fun.NomEmp (nome do empregado).

<div class="Code"><p>Definir Numero TamNome;<br></br>TamanhoAlfa (R034Fun.NomEmp,TamNome);</p></div>

Logo, se o nome do empregado fosse, por exemplo, “Fabio Luis Griebner”, a variável TamNome retornaria 19.

PosicaoAlfa (Texto_Pesquisa,Campo_Pesquisa,Posicao): Esta função procura por uma parte de texto dentro de um campo/variável tipo alfa e retorna em que posição o texto inicia.

Parâmetros:

    Texto_Pesquisa: Informar entre aspas o texto que se está procurando.

    Campo_Pesquisa: Nome do campo/variável tipo alfa em que se deseja fazer a procura.

    Posicao: Retornará a posição inicial do texto procurado, dentro do Campo_Pesquisa.

Exemplo:

Deseja-se procurar pelo termo “Luis” dentro do nome dos empregados.

<div class="Code"><p>PosicaoAlfa (“Luis”,R034Fun.NomEmp,Vposicao);</p></div>

Logo, se o nome do empregado fosse, por exemplo, “Ana Luisa Prates”, a variável VPosicao retornaria 5. Mas, se o nome do empregado fosse, por exemplo, “Pedro Silva” a variável Vposicao retornaria 0 (zero).

IntParaAlfa (Num_Origem,Alfa_Destino): Esta função converte um numero para formato alfanumérico, desprezando as casas decimais.

Parâmetros:

    Num_Origem: Campo/Variável tipo Numero que será convertido.
    Alfa_Destino: Campo/Variável tipo alfa que receberá o resultado da conversão.

Exemplo:

Deseja-se converter a variável VvlrAux, para tipo alfa.

<div class="Code"><p>Definir Alfa ValfAux;<br></br>IntParaAlfa (VVlrAux,VAlfAux);</p></div>

Logo, se a variável VVlrAux tivesse, por exemplo, o valor 150,50 após o uso da função IntParaAlfa a variável VAlfAux teria “150”.

Utilizado em: Quando houver necessidade, por exemplo, de concatenar o número a outro campo/variável tipo alfa.

AlfaParaInt (Alfa_Origem,Num_Destino): Esta função converte um número armazenado num campo tipo alfa, para um campo tipo numero, desprezando as casas decimais. No caso de impossibilidade de conversão, o resultado será ZERO.

Parâmetros:

    Alfa_Origem: Campo/variável tipo alfa que contém o número a ser convertido.

    Num_destino: Campo/Variável tipo Numero que receberá o resultado da conversão.

Exemplo:
AlfaParaInt (R034Fun.CadFol,Vcadastro);

Utilizado em: Quando houver a necessidade, por exemplo, de efetuar operações aritméticas com este número.

CaracterParaAlfa (Caractere,Destino): Esta função converte um caractere (que fica armazenado pelo código Ascii) para o valor Alfanumérico correspondente.

Parâmetros:

    Caractere: Campo/Variável tipo Numero/Caractere, que mantém o código Ascii de um caractere.

    Destino: Variável tipo Alfa que receberá o resultado da conversão.

Exemplo:

Deseja-se converter o campo de assinalamento de Pagamento da Contribuição sindical (R034Fun.PagSin) da Ficha Básica do empregado.

<div class="Code"><p>Definir Alfa VLetra;<br></br>CaracterParaAlfa (R034Fun.PagSin,VLetra);</p></div>

MontaData (Dia,Mês,Ano,Data): Esta função concatena três variáveis, formando uma data.

Parâmetros:

    Dia: Variável que contém o dia da data a ser gerada.

    Mês: Variável que contém o mês da data a ser gerada.

    Ano: Variável que contém o ano da da data a ser gerada. É importante lembrar que o ano deve ter 4 casas, ou seja, deve ter, por exemplo, 1998.

    Data: Variável tipo Numero que receberá o resultado da conversão.

Exemplo:

Deseja-se montar a data 01/09/1998.

VDia = 01;
VMes = 09;
VAno = 1998;

MontaData (VDia,VMes,VAno,Vdata);
Desta forma, a variável VData conterá “01/09/1998”.
Utilizado em: Sempre que for necessário criar uma data auxiliar para algum tipo de comparação ou cálculo.

DesmontaData (Data,Dia,Mês,Ano): Esta função desmonta uma data, separando em três variáveis, as informações Dia/Mês/Ano da data.

Parâmetros:

    Data: Campo/Variável tipo data a ser desmontada.

    Dia: Variável tipo Numero que receberá o dia da data a ser desmontada.

    Mes: Variável tipo Numero que receberá o mes da data a ser desmontada.

    Ano: Variável tipo Numero que receberá o ano da data a ser desmontada.

Exemplo:

Deseja-se desmontar a Data de Admissão do Empregado para fazer algum tipo de cálculo.

<div class="Code"><p>DesmontaData (R034Fun.DatAdm,VDia,VMes,VAno);</p></div>

Logo, se a data de admissão do empregado fosse, por exemplo, 24/04/1995, após o uso da função DesmontaData teríamos a variável VDia=24, VMes = 04 e VAno = 1995.

Utilizado em: Sempre que houver necessidade de testar isoladamente os itens de uma data.

DataExtenso (Data,Extenso): Esta função gera o extenso de determinada data.

Parâmetros:

    Data: Campo/Variável tipo data a partir do qual se deseja gerar o extenso.

    Extenso: Variável tipo alfa que receberá o extenso da data.

EstaNulo (Variável,Retorno); Esta função verfica se um campo tipo alfa está nulo ou não.

Parâmetros:

    Variável: Campo/Variável tipo alfa que se deseja verificar.

    Retorno: Variável tipo Numero que retornará UM caso a variável esteja nula e ZERO caso não esteja nula.

Exemplo:

Deseja-se saber se o campo Dígito da Conta Corrente do Colaborador (R034Fun.DigBan) está nulo ou não.

<div class="Code"><p>EstaNulo (R034Fun.DigBan,Vresultado);</p></div>

Caso o campo esteja em branco, VResultado retornará 1 (um) senão, VResultado retornará 0 (zero).

UltimoDia (Data): Esta função verifica qual é o último dia do mês/ano da data informada, retornando esta nova data dia/mês/ano na própria variável indicada.

Parâmetros:

    Data: Campo/Variável tipo data do qual se deseja saber o último dia do mês.

Exemplo:

Deseja-se saber qual o último dia do mês/ano da data de admissão do empregado.

<div class="Code"><p>VData = R034Fun.DatAdm;<br></br>UltimoDia (VData);</p></div>

Logo, se a Data de Admissão do empregado fosse, por exemplo, 24/04/1995 a variável VData retornará 30/04/1995.

Extenso (Valor,Tamanho_Linha1,Tamanho_Linha2,Tamanho_Linha3,Linha1,Linha2,Linha3): Esta função gera o extenso de um valor.

Parâmetros:

    Valor: Campo/Variável do qual se deseja obter o extenso.

    Tamanho_Linha1: Quantidade de caracteres que será usado na primeira linha para geração do extenso.

    Tamanho_Linha2: Quantidade de caracteres que será usado na segunda linha para geração do extenso.

    Tamanho_Linha3: Quantidade de caracteres que será usado na terceira linha para geração do extenso.

    Linha1: Variável tipo Alfa que receberá a primeira linha do extenso do valor.

    Linha2: Variável tipo Alfa que receberá a segunda linha do extenso do valor.

    Linha3: Variável tipo Alfa que receberá a terceira linha do extenso do valor.

Exemplo:

Deseja-se gerar o extenso do valor do salário do empregado.

Definir Alfa VextLin1;
Definir Alfa VextLin2;
Definir Alfa VextLin3;

Extenso (R034Fun.ValSal,30,30,30,VExtLin1,VextLin2,VextLin3);

Logo, se o valor do salário do empregado fosse, por exemplo, R$ 1.577,95 teríamos o seguinte resultado:

VextLin1 = “Um mil, quinhentos e setenta e”
VextLin2 = “ sete reais e noventa e cinco “
VextLin3 = “centavos *********************”
Utilizado em: Duplicatas, cheques, documentos, etc.

ExtensoMes (Data,Extenso): Esta função monta o extenso do mês de uma determinada data.

Parâmetros:

    Data: Campo/Variável tipo data do qual se deseja obter o extenso do mês.

    Extenso: Variável tipo Alfa que receberá o extenso do mês.

Exemplo:

Deseja-se gerar o extenso da data de hoje da máquina.

<div class="Code"><p>Definir Alfa VMesExt;<br></br>ExtensoMes (DatSis,VMesExt);</p></div>

Logo, se a data de hoje fosse, por exemplo, 10/07/1998, a variável VMesExt seria igual a “Julho”.

ExtensoSemana (Data,Extenso): Esta função monta o extenso do dia da semana de uma determinada data.

Parâmetros:

    Data: Campo/Variável tipo data do qual se deseja obter o extenso do dia.

    Extenso: Variável tipo Alfa que receberá o extenso do dia da semana.

Exemplo:

Deseja-se gerar o extenso do dia da semana da data de hoje da máquina.

<div class="Code"><p>Definir Alfa VSemExt;<br></br>ExtensoMes (DatSis,VSemExt);</p></div>

Logo, se a data de hoje fosse, por exemplo, 10/07/1998, a variável VSemExt seria igual a “Sexta-Feira”.

QuebraTexto (Texto,Tamanho_Linha,Qtde_Linhas): Esta função pega o texto indicado e faz assinalamentos de quebra de linha conforme o Tamanho_Linha especificado, e retorna a quantidade de linhas que será usada para imprimir o texto.

Parâmetros:

    Texto: Campo/Variável tipo alfa que se deseja imprimir em mais de uma linha.

    Tamanho_Linha: Quantidade máxima de caracteres por linha.

    Qtde_Linhas: Variável tipo Numero que retornará a quantidade de linhas que serão necessárias para imprimir o texto.

BuscaLinhaTexto (Texto,Nro_Linha,Texto_Linha): Esta função é utilizada para imprimir as linhas do texto que a função QuebraTexto dividiu.

Parâmetros:

    Texto: Será o mesmo Campo/variável tipo alfa indicado na função QuebraTexto.

    Nro_linha: Número da linha que será impressa.

    Texto_Linha: Variável tipo alfa que retornará a parte do Texto que será impressa.

Exemplo:

Deseja-se imprimir o texto “Vamos ver o que acontece quando usamos estas funções para controle de impressão de linhas de um texto mais extenso” em linhas de no máximo 30 caracteres cada.

<div class="Code"><p>Definir Alfa Vtexto;<br></br>Definir Alfa VFrase;<br></br>Vtexto = “Vamos ver o que acontece quando usamos estas funções para controle de impressão de linhas de<br></br>um texto mais extenso”<br></br>QuebraTexto (VTexto,30,NumLin);</p><p>Linatu = 1;</p><p>Enquanto linatu &#x3C;= NumLin<br></br>Inicio<br></br>BuscaLinhaTexto (VTexto,linatu,VFrase);<br></br>ListaSecao (“Adicional_1”);<br></br>Linatu++;<br></br>Fim;</p></div>

Neste exemplo, seriam impressas 5 linhas, e o texto ficaria impresso da seguinte forma: Linha 1 => “Vamos ver o que acontece” Linha 2 => “quando usamos estas funções” Linha 3 => “para controle de impressão de” Linha 4 => ”linhas de um texto mais” Linha 5 => “extenso”.

RestoDivisao (Dividendo,Divisor,Resto): Esta função retorna o resto da divisão de um número por outro.

Parâmetros:

    Dividendo: Campo/Variável tipo Número que será dividido.

    Divisor: Campo/Variável tipo Número pelo qual o Dividendo será dividido.

    Resto: Variável tipo Número que receberá o resto da divisão.

Exemplo:

Deseja-se saber o resto da divisão de um valor por outro.

<div class="Code"><p>Valor1 = 1500;<br></br>Valor2 = 400;</p><p>RestoDivisao (Valor1,Valor2,VResto);<br></br>VResto será igual a 300.</p></div>

TruncarValor (Valor): Esta função elimina as casas decimais do valor passado, sem fazer nenhum tipo de arredondamento.

Parâmetros:

    Valor = Campo/Variável do deseja-se ficar apenas com a parte inteira do valor.

Exemplo:

Deseja-se ficar apenas com a parte inteira do salário do empregado.

<div class="Code"><p>TruncarValor (R034Fun.ValSal);</p></div>

Logo, se o salário do empregado fosse R$ 1.577,99, após o uso do TruncarValor este seria R$ 1.577,00.

ArredondarValor (Valor,Qtde_Casas): Esta função arredonda determinado valor, conforme a quantidade de casa decimais informada.

Parâmetros:

    Valor: Campo/Variável que será arredondado.

    Qtde_Casas: Quantidade de casas decimais que se deseja fazer o arredondamento. Se for informado 0 (zero), faz o arredondamento na parte inteira do resultado.

Exemplos:
  1. Deseja-se arredondar o salário do empregado na dezena de centavo.

<div class="Code"><p>ArredondarValor (R034Fun.ValSal,1);</p></div>

Logo, se o salário do empregado fosse, por exemplo, R$ 1.577,87, o resultado seria R$ 1.577,90.

  1. Deseja-se arredondar o salário do empregado na unidade de real.

<div class="Code"><p>ArredondarValor (R034Fun.ValSal,0);</p></div>

Logo, se o salário do empregado fosse, por exemplo, R$ 1.577,87, o resultado seria R$ 1.578,00.

Concatena (Texto1,Texto2,Texto3,Destino): Esta função concatena até 3 campo/variáveis tipo alfa, formando uma só variável.

Parâmetros:

    Texto1: Campo/Variável tipo alfa que será concatenado.

    Texto2: Campo/Variável tipo alfa que será concatenado.

    Texto3 : Campo/Variável tipo alfa que será concatenado.

    Destino : Variável tipo alfa que receberá o resultado da concatenação.

Exemplo:

Deseja-se juntar o nome e o apelido do empregado, separando-os por um “-“ (hífen).

<div class="Code"><p>Definir Alfa VResultado.<br></br>Concatena (R034Fun.NomEmp,” – “, R034Fun.ApeEmp,VResultado);</p></div>

Logo, se o nome do empregado fosse, por exemplo, “Fabio Luis Griebner” e o apelido fosse “Teste”, o resultado seria: “Fabio Luis Griebner – Teste”.

CalculaQtdMinutos (DatIni,HorIni,DatFim,Horfim,Qtd_Minutos): Esta função calcula a quantidade de minutos existente entre uma Data/Hora Inicial e uma Data/Hora Final.

Parâmetros:

    DatIni: Campo/Variável tipo data, inicial.

    HorIni: Campo/Variável tipo hora, inicial.

    DatFim: Campo/Variável tipo data, final.

    HorFim: Campo/Variável tipo hora, final.

    Qtd_Minutos: Retorna a quantidade de minutos entre a data/hora inicial e data/hora final.

Funções sem parâmetros

DatSis: Retorna a data atual do sistema.

DiaSis: Retorna o dia do mês da data do sistema

MesSis: Retorna o mês do sistema

AnoSis: Retorna o ano do sistema com 4 posições

ExtSis: Data por extenso

HorSis: Hora do sistema

NumPag: Número da página para os relatórios.

NomUsu: Nome do usuário logado

DesRodape: Descrição do modelo para uso no rodapé.

Este artigo ajudou você?