Este conteúdo não recebe atualizações, pois é referente a uma versão do sistema que foi descontinuada. Acesse a documentação da versão 6.10.3 aqui

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:

Linhas

As linhas podem ser vistas como “registros” em um arquivo, as linhas possuem as seguintes propriedades:

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.

Número

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

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”.

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;

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

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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é.

Este artigo ajudou você?