Regras
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, Funções, Operadores, Comandos, Tabelas/Campos e anotações de lógica de programação.
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
Tabelas
As tabelas são as unidades básicas para se armazenar dados. São compostas por linhas e colunas.
Campos
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.
Definir Alfa Vnome[30];
Número
Variável que poderá guardar apenas números. Estes podem ser inteiros ou com casas decimais.
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);
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.
Obs: 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();
1.6 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.
1.6.1 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.
Outras 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é.
English
Español
English
Español


