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 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 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.
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).
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. |
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.
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:
Funcao AltSituacao (Numero SitOri, Numero SitDes);
Inicio
HorSit[SitDes] = HorSit[SitOri];
HorSit[SitOri] = 0;
Fim;
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.
Definir Funcao AltSituacao (Numero SitOri, Numero SitDes);
É 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;
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.
ValStr = Teste;
Cancel (2);
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
- 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:
Definir Cursor Cur_E140NFV; @Utiliza-se como padrão a nomeclatura Cur_+Nome
Tabela@
Definir alfa VCodSnf[03];
VcodEmp=1;
VcodFil=1;
VcodSnf=U;
VnumNfv=100;
Cur_E140Nfv.Sql SELECT VLRLIQ FROM E140NFV WHERE CODEMP=:VCODEMP \
AND CODFIL=:VCODFIL AND CODSNF=:VCODSNF \
AND NUMNFV=:VNUMNFV;
Cur_E140Nfv.AbrirCursor();
Se (Cur_E140Nfv.Achou)
Inicio
@ Encontrou o Registro@
VvlrLiq=Cur_E140Nfv.VlrLiq;
Fim;
Cur_E140Nfv.fecharCursor();
- 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:
Definir Cursor Cur_E140NFV; @Utiliza-se como padrão a nomeclatura Cur_+Nome
tabela@
Definir data VDatEmiIni;
Definir data VDatEmiFim;
Definir alfa VtnsPro[05];
VcodEmp=1;
VcodFil=1;
MontaData(15/01/1998,VdatEmiIni);
MontaData(30/01/1998,VdatEmiFim);
VTnsPro=511;
Cur_E140Nfv.Sql SELECT VLRLIQ FROM E140NFV WHERE CODEMP=:VCODEMP \
AND CODFIL=:VCODFIL AND DATEMI>=:VDATEMIINI \
DATEMI<=:VDATEMIFIM AND TNSPRO=:VTNSPRO;
Cur_E140Nfv.AbrirCursor();
VvlrLiq=0;
Enquanto (Cur_E140Nfv.Achou)
Inicio
@ Encontrou o Registro@
VvlrLiq= VvlrLiq +Cur_E140Nfv.VlrLiq;
ListaSecao(AdicionalTeste); @Esta listando seção adicional p/cada registro do
Cursor@
Cur_E140Nfv.Proximo();
Fim;
Cur_E140Nfv.fecharCursor();
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.
Converter a data 31/12/1997, que foi informada na entrada do relatório, numa variável de entrada chamada EData.
Definir Alfa VDataStr[50];
ConverteDataBanco (EData,VDataStr);
Retorno: VDataStr = to_date (31/12/1997,DD/MM/YYYY) ou no formato do banco usado.
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.
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.
Definir Alfa VinscrStr[18];
Se (R030Fil.TipIns = 1) @ C.G.C @
ConverteMascara (1,R030Fil.NumCgc,VInscrStr,99.999.999/9999-99);
Senao
Se (R030Fil.TipIns = 3) @ C.P.F @
ConverteMascara (1,R030Fil.NumCgc,VInscrStr,999.999.999-99);
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.
Deseja-se inserir a partir da posição 12 do nome do empregado, o texto Teste.
InserirAlfa (Teste,R034Fun.NomEmp,12);
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.
Precisa-se pegar a 1a letra do Nome do Empregado para fazer alguma comparação.
Definir Numero VCaractere;
LerPosicaoAlfa (R034Fun.NomEmp,VCaractere,1);
Se (VCaractere = F)
....
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.
Deseja-se deletar do nome do empregado, a partir da posicão 8 (oito), 10 caracteres.
DeletarAlfa (R034Fun.NomEmp,8,10);
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.
Deseja-se copiar do nome do empregado, a partir da 12a posição, os 10 próximos caracteres.
CopiarAlfa (R034Fun.NomEmp,12,10);
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.
Deseja-se saber o tamanho do campo R034Fun.NomEmp (nome do empregado).
Definir Numero TamNome;
TamanhoAlfa (R034Fun.NomEmp,TamNome);
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.
Deseja-se procurar pelo termo Luis dentro do nome dos empregados.
PosicaoAlfa (Luis,R034Fun.NomEmp,Vposicao);
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.
Deseja-se converter a variável VvlrAux, para tipo alfa.
Definir Alfa ValfAux;
IntParaAlfa (VVlrAux,VAlfAux);
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.
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.
Deseja-se converter o campo de assinalamento de Pagamento da Contribuição sindical (R034Fun.PagSin) da Ficha Básica do empregado.
Definir Alfa VLetra;
CaracterParaAlfa (R034Fun.PagSin,VLetra);
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.
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.
Deseja-se desmontar a Data de Admissão do Empregado para fazer algum tipo de cálculo.
DesmontaData (R034Fun.DatAdm,VDia,VMes,VAno);
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.
Deseja-se saber se o campo Dígito da Conta Corrente do Colaborador (R034Fun.DigBan) está nulo ou não.
EstaNulo (R034Fun.DigBan,Vresultado);
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.
Deseja-se saber qual o último dia do mês/ano da data de admissão do empregado.
VData = R034Fun.DatAdm;
UltimoDia (VData);
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.
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.
Deseja-se gerar o extenso da data de hoje da máquina.
Definir Alfa VMesExt;
ExtensoMes (DatSis,VMesExt);
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.
Deseja-se gerar o extenso do dia da semana da data de hoje da máquina.
Definir Alfa VSemExt;
ExtensoMes (DatSis,VSemExt);
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.
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.
Definir Alfa Vtexto;
Definir Alfa VFrase;
Vtexto = Vamos ver o que acontece quando usamos estas funções para controle de impressão de linhas de
um texto mais extenso
QuebraTexto (VTexto,30,NumLin);
Linatu = 1;
Enquanto linatu <= NumLin
Inicio
BuscaLinhaTexto (VTexto,linatu,VFrase);
ListaSecao (Adicional_1);
Linatu++;
Fim;
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.
Deseja-se saber o resto da divisão de um valor por outro.
Valor1 = 1500;
Valor2 = 400;
RestoDivisao (Valor1,Valor2,VResto);
VResto será igual a 300.
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.
Deseja-se ficar apenas com a parte inteira do salário do empregado.
TruncarValor (R034Fun.ValSal);
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.
- Deseja-se arredondar o salário do empregado na dezena de centavo.
ArredondarValor (R034Fun.ValSal,1);
Logo, se o salário do empregado fosse, por exemplo, R$ 1.577,87, o resultado seria R$ 1.577,90.
- Deseja-se arredondar o salário do empregado na unidade de real.
ArredondarValor (R034Fun.ValSal,0);
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.
Deseja-se juntar o nome e o apelido do empregado, separando-os por um - (hífen).
Definir Alfa VResultado.
Concatena (R034Fun.NomEmp, , R034Fun.ApeEmp,VResultado);
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é.