Apostila Linguagem de Programação - Natural - ModuloV

Fazer download em pdf ou txt
Fazer download em pdf ou txt
Você está na página 1de 64

1

MÓDULO V - Mapas

Unidade A
Definição e Implementação de Mapas

- Construindo uma interface para o usuário


- Conceitos sobre mapas
- Layouts
- Formulários
Construindo uma interface padrão para o 2

usuário

Por que criar uma interface padrão para o usuário


Cada vez mais as organizações estão se voltando para a
criação de uma interface consistente como padrão para
todas as suas aplicações, pois, ela resolve vários
problemas, tanto para o desenvolvedor como para o
usuário. Essa padronização é conhecida como commom
user access (CUA).
Construindo uma interface padrão para o 3

usuário

Commom user access - Benefícios


Um layout uniforme, com um menu que direciona as
opções dos usuários, oferece uma maneira consistente
de arranjar e apresentar as informações.
Navegação uniforme para guiar o usuário através do
sistema. Desde que o usuário possa contar com os
mesmos comandos em qualquer tela, essa uniformização
torna o sistema fácil de ser aprendido e usado.
Uniformização dos serviços (como o Help) também
facilita o uso do sistema, pois há uma pequena
possibilidade de aprendizado envolvendo o uso de novas
funções.
Construindo uma interface padrão para o 4

usuário

Linhas Gerais para o desenvolvimento de Interfaces


Se você estiver criando uma interface para uma
aplicação baseada em caracter ou para uma aplicação
gráfica, os usuários, geralmente querem as mesmas
coisas em suas interfaces. Considere os objetivos a
seguir ao criar uma interface para o usuário.
Construindo uma interface padrão para o 5

usuário
Objetivo Propósito
Controle do usuário O usuário deve sempre estar seguro do controle da interface, e não o
contrário. Isso significa que você deve apresentar várias opções de
entrada e fornecer caminhos com rotas de saída.
Consistência Uma vez que os usuários aprendem uma interface, eles são capazes de
aplicar as técnicas de navegação e a terminologia que já conhecem para
cada aplicação nova. Adote padrões que sejam aderentes dentro de toda
aplicação.
Atratividade Dedique uma atenção especial a estética assim como uma boa tela e
desenvolvimento gráfico.
Feedback Os usuários devem sempre receber imediatamente mensagens de
retorno de suas ações. Eles não devem questionar sobre o que fizeram
de errado.
Recall Evite re-chamadas. Os seres humanos podem lembrar-se de um
número grande de informações, mas uma interface de fácil uso não deve
solicitá-las. Controle as informações em trechos manipuláveis.Use
elementos de reconhecimento do prompt.
Esquecimentos Usuários cometem erros. Forneça opções que lhes permitam facilmente
reverter suas ações.
6
Conceitos sobre Mapas

Programação Iterativa
Os mapas Natural permitem aos usuários comunicar-se
com os objetos. Um objeto iterativo controla o mapa para
que ele possa enviar e obter informações do usuário. A
maneira do Natural fornecer essa iteração se dá pelo
uso do comando INPUT.
7
Conceitos sobre Mapas

Especificações do Mapa
• O tamanho máximo da página (n.º de linhas) é 250, e o tamanho
da linha (n.º de colunas) deve compreender 5-249;
• Todo campo do mapa deve ter nome e esses nomes devem
corresponder aos nomes de campos usados no objeto chamador;
• Os campos exibem atributos que podem ser sobrescritos usando
as variáveis de controle;
• As regras de processamento podem ser definidas em seu mapa,
embora muitos desenvolvedores prefiram defini-las nos programas.
8
Conceitos sobre Mapas

Tipos de Mapa
Interno
Os mapas internos são definidos dentro do programa
usando-se o editor de programa e são utilizados
unicamente por esse objeto em particular.
Externo
Como a área de dados externa, esses mapas podem
ser usados por diferentes objetos. Esses mapas são
definidos fora do objeto usando-se o editor de mapas.
9
Tipos de Mapa

Interno Externo
Mapa
Programa

Programa
Mapa Mapa Mapa Mapa

Mapa
10
Exemplo de Mapa Externo

DATA:(XXXXXXXXXX BIBLIOTECA:(XXXXXXXX
HORA:(XXXXXXXXXX MAPA:(XXXXXXXX
SISTEMA DE WORKSHOP
MENU PRINCIPAL
______________________________________________________________________________

A - INCLUIR UM NOVO REGISTRO


B - ATUALIZAR UM REGISTRO
C - EXCLUIR UM REGISTRO
D - EXIBIR LISTA DE ENDERECO
E - TERMINAR

OPCAO: )X
ID DO FUNCIONARIO: )XXXXXXXX (OBRIGATORIO PARA AS OPCOES A, B E C)

(XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

______________________________________________________________________________
PF3 - ENCERRA
11
Conceitos sobre Mapas

Mapa Interno
Para criar um mapa interno você vai utilizar a instrução
INPUT. Todos os campos definidos na declaração INPUT
são campos de entrada, por default.
Se você quiser mudar o tipo do campo para campos de
saída ou modificáveis, use as definições de atributos (AD)
para esse campo. A alteração desses atributos permitem
que você defina a função e aparência dos campos no mapa.
12
Conceitos sobre Mapas

Atributo Variações Disponíveis

B = Blinking (flash on and off)


Representação
I = Intensified (Negrito)
do
N = No display
Campo
D = Default

Alinhamento L = left-justified (default para campos alfanuméricos)


do R = right-justified (default para campos alfanuméricos)
Campo Z = Zero print (imprime zeros de campos númericos )

A = Campo de input(usuários podem digitar informações)


Tipo
M = Campo Modifiable(usuários podem alterar as
de
informações que o Natural irá apresentar)
Campo
O = Campo Output (usuários não podem alterar as
informações apresentadas pelo Natural).
13
Conceitos sobre Mapas

Atributo Variações Disponíveis

Tamanho
T = Transforma tudo no campo para maiúscula
das letras
W = Transforma tudo no campo para minúscula
no Campo

Caracteres ‘c’ = Qualquer caracter que você escolher para preencher


de Preenchimento o campo (exemplo: ‘_’. O default é o espaço em branco.
14
Conceitos sobre Mapas

Posicionamento do Cursor no Mapa


Quando um mapa é gerado o cursor é automaticamente
colocado no primeiro campo de entrada ou modificável.
Entretanto, ocorrerá certas situações em que o mapa poderá
solicitar o posicionamento do cursor, não no primeiro mas
em qualquer outro campo do mapa.
A clausula MARK dos comandos INPUT e REINPUT
permitem que você posicione o cursor. Isto pode ser feito
usando:
• Nome de campo (precedido de um ‘*’);
• Variável numérica;
• Constante numérica.
15
Conceitos sobre Mapas

Clausula MARK POSITION


Você não apenas pode determinar o lugar em que seu
cursor irá aparecer como pode também definir que o cursor
irá ser colocado em uma posição particular para o valor
daquele campo.
Essa característica pode ser usada quando você gostaria
que o usuário modificasse, por exemplo, o valor do item dia
do campo data 11/25/1996.
MARK POSITION 4 IN *#DATE (AD=MM/DD/YYYY)
16
Conceitos sobre Mapas
0010 ***************************************************************
0020 * ILUSTRA O POSICIONAMENTO DO CURSOR NO MAPA
0030 ****************************************************************
0040 DEFINE DATA
0050 LOCAL
0060 1 #MARCA-INICIAL (A20)
0070 1 #MARCA-FINAL (A20)
0080 1 CARS VIEW OF VEHICLES
0090 2 MAKE
0100 2 MODEL
0110 2 YEAR
0120 END-DEFINE
0130 *
0140 INPUT MARK *#MARCA-FINAL /////
0150 7T 'ENTRE COM A MARCA DE VEICULO INICIAL E FINAL'
0160 // 17T 'MARCA INICIAL:' #MARCA-INICIAL
0170 // 19T 'MARCA FINAL :' #MARCA-FINAL
0180 *
0190 READ CARS BY MAKE STARTING FROM #MARCA-INICIAL ENDING AT #MARCA-FINAL
0200 DISPLAY MAKE MODEL YEAR
0210 END-READ
0220 *
0230 WRITE / 10T 'O RELATORIO ESTA COMPLETO'
0240 *
0250 END
17
Conceitos sobre Mapas

'ENTRE COM A MARCA DE VEICULO INICIAL E FINAL

MARCA INICIAL: ____________________

MARCA FINAL: DATSUN______________

Cursor
18
Conceitos sobre Mapas

MAKE MODEL YEAR


-------------------- -------------------- -----

ALFA ROMEO GIULIETTA 2.0 1985


ALFA ROMEO SPRINT GRAND PRIX 1984
ALFA ROMEO QUADRIFOGLIO 1984
AMERICAN MOTOR HORNET 1977
AMERICAN MOTOR AMBASSADOR 1983
AMERICAN MOTOR HORNET 1977
AUDI QUATRO 1983
AUDI QUATRO TURBO 1983
AUDI QUATRO TURBO 1986
AUDI 100 CD 1982
AUDI 80 S 1980
… … …
DATSUN 300ZX 1986
DATSUN CHERRY 1983
DATSUN SUNNY 1981

O RELATORIO ESTA COMPLETO


19
Conceitos sobre Mapas

Mapas Externos
Os mapas externos são criados no editor de mapa e são
invocados a partir de objetos através do comando INPUT
USING MAP.
Iremos mostrar 2 tipos de mapas. Um é simples e o outro
usa várias opções em sua declaração.
20
Chamando um mapa externo

Programa Mapa Externo


...
menumap ~~~~
/* Exemplo 1
INPUT USING MAP ‘MENUMAP’ ~~~~~ ~ ~~~~

... ~~~~~~ ~~~~

… ~~~~~~

/* Exemplo 2
INPUT WITH TEXT
menumap ~~~~
. ‘ENTRE COM SUA OPÇÃO’
. ‘MARK *#CHOICE ALARM ~~~~~ ~ ~~~~
. USING MAP ‘MENUMAP’ ~~~~~~ ~~~~
.
ENTRE COM SUA OPÇÃO
END
21
Conceitos sobre Mapas

Definições do Perfil do Mapa


Para cada mapa externo que você cria, você pode mudar
várias definições que alteram sua aparência e seu
comportamento. Por exemplo, você pode controlar o
tamanho do mapa, se as teclas de função irão aparecer ou
não, entre outras.
Quando você inicia um novo mapa, estas definições estão
com seus valores padrões mas você pode sobrescrevê-los.
22
Conceitos sobre Mapas

Que tipos de definições existem


Format
As definições de formato permitem que você determine
como seu mapa será exibido. Por exemplo, você pode
controlar qual o tamanho de seu mapa, que PF-keys serão
usadas, entre outras.
Context
Permitem dizer como o mapa está sendo usado, se é
permitido usar características especiais para a tela como o
vídeo-reverso, se o help está definido a nível de mapa, entre
outras.
23
Conceitos sobre Mapas

Caracter de Preenchimento
Um caracter de preenchimento padrão pode ser definido.
Essas definições podem ser sobrescritas por outro caracter.
Delimitadores (em alguns ambientes apenas)
Em alguns ambientes os delimitadores são usados para
atribuir inicialmente certos atributos dos campos ou textos
como cor, por exemplo. Qualquer caracter especial pode ser
definido como delimitador, exceto o caracter de controle e de
notação de ponto decimal. Eles aparecem sempre na
primeira posição do campo no mapa externo.
Nos ambientes nos quais os delimitadores não são usados,
costuma-se usar o parâmetro AD para definir os atributos.
24
Conceitos sobre Mapas

Definindo campos no mapa externo


Método I
É possível definir um novo campo no mapa diretamente
indicando o delimitador, o formato e o tamanho e
posteriormente o nome.
Método II
Uma outra forma de definir um campo no mapa é “puxá-lo”
de uma área de dados ou DDM. Nesse caso, o nome,
formato e o tamanho são definidos automaticamente.
25
Conceitos sobre Mapas

Método I

Meu Mapa

#novo-campo
(nome default: #001)
Especificar:
• Formato;
• Tamanho;
• Localização no mapa e
• Nome
26
Conceitos sobre Mapas

Método II

Definição de dados existente Meu Mapa

#campo-ja-existente (a40)
#outro-campo (a1)
27
Conceitos sobre Mapas

Atribuindo nome aos campos


Antes de catalogar o mapa, todos os campos do seu mapa
devem ser nomeados. Se os campos não foram “puxados”
de nenhuma área de dados, eles recebem nomes
temporários (ex.: #001, #002, #003, …). Esses nomes
devem ser alterados.
Todos os campos definidos no seu mapa externo devem
corresponder àqueles definidos no objeto chamador, bem
como os respectivos formatos e tamanhos.
28
Layouts

Para assegurar que todos os seus mapas tenham a


mesma aparência, você pode optar por usar uma tela
de layout padronizada. Os dados localizados no
mesmo lugar nas diversas telas melhora a eficiência de
seu processamento.
29
Layouts

Tipos de Layout
Estático: Serve apenas como um ponto inicial para a criação
de um novo mapa. Você usa o mapa de layout como um
modelo para a definição de novos mapas. As mudanças
realizadas no layout não têm efeito sobre o novo mapa.
Dinâmico: Ele permite que você tenha um modelo
consistente e modifique facilmente o layout de tal forma que
as alterações efetuadas no layout sejam repassadas para o
outros mapas da sua aplicação.
30
Layouts

Procedimento para criar um mapa de Layout


• Crie o mapa de layout;
• Crie um novo mapa;
• Especifique o nome do mapa de layout na tela de profile
do novo mapa;
• Adicione os novos campos, textos no novo mapa;
• Catalogue o mapa.
31
Formulários

O que são formulários (Forms)


São mapas que não têm campos de entrada ou campos
modificáveis. São criados no editor do mapa como uma
alternativa para compor declarações complexas com o WRITE.
Para identificar o mapa como um formulário, você deve
chamar o formulário através do comando WRITE USING FORM
seguido do nome do formulário. Dessa forma:
• O comando WRITE é programado no objeto chamador;
• Se estiver trabalhando numa plataforma que usa
delimitadores, eles devem estar definidos para aceitar apenas
campos de saída (output).
32
Formulários

Chamando um formulários
Múltiplos formulários podem ser escritos para a mesma tela.

Lembre-se
Você pode usar regras de processamento no formulário mas…
• A regra não pode usar a declaração REINPUT ;
• As regras de PF nunca são processadas;
• Todas as regras são processadas depois que o formulário é
escrito e antes do controle ser retornado ao objeto chamador.
33
Formulários

Objeto com o comando WRITE USING FORM

DEFINE DATA

END-DEFINE

WRITE USING FORM ‘HELLO1’

END

Formulário HELLO1 (Criado com o editor de mapa)

Sejam Bem Vindos ao Curso Básico de Natural.


A Consist agradece a presença de todos vocês!
34
MÓDULO V - Mapas

Unidade B
Editando campos do Mapa

- Editando campos do Mapa


- Variáveis de Controle
35
Editando Campos do Mapa

Características do campo
Ao criar um mapa, você pode definir todas as características
que você deseja para um campo. Muitas características estão
associadas a definição de algum parâmetro. Segue na tabela
abaixo alguns desses parâmetros.

Característica Parâmetro Propósito

Nome do campo sem parâmetro Nome do campo. Qualificador de alto nível


incluído para campos do banco.

Tamanho e Formato e tamanho. Só podem ser alterados


sem parâmetro
para campos criados pelo usuário no mapa.
Formato
36
Editando Campos do Mapa

Característica Parâmetro Propósito

Definição de AD Exibe a função do campo


(input/output/modifiable;required/optional) e
Atributos
como o campo será exibido (intensificado,
entre outras)

Help em nível de campo e variáveis de controle

Você pode ligar uma variável de controle


CV
Variável de Controle em nível de campo usando esse
parâmetro.

Help HE Você pode ligar um mapa de help ou


uma helproutine em nível de campo
usando esse parâmetro.
37
Editando Campos do Mapa

Característica Parâmetro Propósito


Help Entre com “HE=+” abre uma janela para
HE
que você defina até 20 parâmetros para
serem passados para a helproutine.

Parâmetros Especiais

Atributos de DY Usado para definir certas características


String Dinâmico contidas num texto para controlar a
definição de atributos.

Campos informativos não-modificáveis

Número de regras Número atual de regras de


sem parâmetro
de processamento processamento definidas para o campo
38
Editando Campos do Mapa

Característica Parâmetro Propósito


Modo de sem parâmetro Indica como o campo foi definido:
Definição
DATA = selecionados a partir da
DEFINE DATA;
SYS = variável de sistema;
UNDEF = criada no mapa e assinalada
com um nome dummy;
USER = criada no mapa e definida
através do editor do campo;
VIEW = selecionada a partir da DDM.
39
Editando Campos do Mapa

Controlando a exibição do campo

Característica Parâmetro Propósito


AL Altera o tamanho de exibição dos
Tamanho do
campo de exibição NL campos mostrando somente as
primeiras posições definidas pelo
FL parâmetro.

Máscara de EM Edita especificações de máscaras


edição dependendo do formato do campo.

Definição de cor CD Campos podem ser exibidos com


qualquer cor suportada pelo ambiente.

Impressão de ZP Determina se os zeros serão impressos


zeros para campos numéricos com dados nulos
40
Editando Campos do Mapa

Controlando a exibição do campo

SG Determina se é alocada ou não uma


Posição do Sinal
posição extra no inicio do campo para
incluir o seu sinal.

Modo de PM Permite alternar definições de caracter e


Impressão a direção de impressão utilizadas.
41
Variáveis de Controle

Definições de atributo para campo dinâmico


Os mapas Natural têm a intenção de interagir com o usuário
da forma mais eficiente possível. Para que o usuário possa
entender melhor a utilização de cada mapa você pode ligar
variáveis de controle e usá-las junto com os comandos
DISPLAY, INPUT, PRINT e WRITE.
Um campo com formato C (é o formato da variável de controle)
pode ser usado para definir delimitadores dinamicamente.
Dessa forma você poderá modificar as características desses
campos.
42
Variáveis de Controle

Possíveis usos das variáveis de controle


• Enfatizar mensagens de erro ou outras mensagens
importantes;
• Permitir que um único mapa seja usado para múltiplos
propósitos;
• Podem ser usadas com arrays em campos de seleção
para tornar invisíveis as ocorrências dos campos que não
têm dados a serem selecionados;
• Verificar se o conteúdo de um campo que recebeu
atributos dinamicamente foi modificado durante a execução
de um comando INPUT.
43
Variáveis de Controle

Categorias de Atributos
Parâmetro AD - Representação do campo
B Blinking
C Cursive/Italic
D Default intensity
I Intensified
N Non-display
U Underlined
V Reverse video
Y Dynamic atributtes
Parâmetro AD - Características de Input/Output do campo
P Temporarily protected
44
Variáveis de Controle

Categorias de Atributos
Parâmetro CD - Exibição de cor
BL Blue
GR Green
NE Neutral
PI Pink
RE Red
TU Turquoise
YE Yellow
Usando variáveis de controle em nível de 45

campo e mapa
A variável de controle tem formato C e não tem tamanho. Elas devem ser definidas e
receber atributos antes da chamada do mapa. Você deve seguir os seguintes
passos:
1. No objeto que chama o mapa, defina a variável de controle, por exemplo:
01 #CNTL (C), onde 01 é o nível , #CNTL o nome e C o formato.
Antes de chamar o mapa, mova ou defina atributos para o campo, por exemplo.
MOVE (AD=B CD=YE) TO #CNTL
2. Use o parâmetro control variable (CV) para ligar a variável de controle em nível de
campo ou mapa.
Nível de Campo: esse parâmetro encontra-se na tela de edição do campo. Ele
sobrepõe a definição em nível de mapa, se usado.
Nível de mapa: esse parâmetro está na tela de profile do mapa (PF2).
3. Verifique se o atributo (AD=Y) foi definido para cada campo a ser controlado pela
variável de controle. Em algumas plataformas um delimitador pode ser usado
para esse fim.
46
Variáveis de Controle

0010 ************************************************************************
0020 * ILUSTRACAO DO USO DA VARIAVEL DE CONTROLE
0030 ************************************************************************
0040 DEFINE DATA
0050 GLOBAL USING DIAGDA
0060 LOCAL
0070 1 #LANME (A20)
0080 1 #OPTION (A1)
0090 1 #CTLVAR1 (C) /* NIVEL DE MAPA
0100 1 #CTLVAR2 (C) /* NIVEL DE CAMPO
0110 1 #MESSAGE (A60)
0120 END-DEFINE
0130 REPEAT
0140 INPUT
0150 ////'POR FAVOR ENTRE COM O ULTIMO NOME: ==> ' #LNAME (AD=AILT'_')
0160 /'OU ENTRE COM A PALAVRA "QUIT" PARA SAIR' (CD=RE)
0170 IF #LNAME = ' '
0180 REINPUT 'OPCAO INVALIDA! ENTRE COM O NOME OU "QUIT"' MARK *#LNAME
0190 END-IF
0200 IF #LNAME='QUIT‘
0210 'WRITE NOTITLE 10/6 'VOCE SOLICITOU O FIM DA SESSAO...' *USER
0220 '....' 6T 'TENHA UM BOM DIA!'
0230 STOP
0240 END-IF
47
Variáveis de Controle
0250 F1. FIND(1) EMPL-VIEW WITH NAME=#LNAME
0260 INPUT USING MAP 'CNTLMAP1'
0270 DECIDE ON FIRST VALUE OF #OPTION
0280 VALUE 'Q'
0290 ESCAPE BOTTOM
0300 VALUE 'U'
0310 UPDATE (F1.)
0320 END OF TRANSACTION
0310 MOVE 'UPDATE DONE' TO #MESSAGE
0320 MOVE (CD=RE AD=P) TO #CTLVAR2
0350 VALUE 'D'
0360 DELETE (F1.)
0370 END OF TRANSACTION
0380 MOVE 'DELETE DONE' TO #MESSAGE
0390 MOVE (CD=NE AD=P) TO #CTLVAR2
0400 NONE
0410 REINPUT 'OS VALORES CORRETOS SAO D(DELETE), U(UPDATE), Q(QUIT)'

0420 MARK *#OPTION


0430 END-DECIDE
0440 MOVE (AD=P) TO #CTLVAR1
0450 INPUT USING MAP 'CNTLMAP1'
0460 RESET EMPL-VIEW #CTLVAR2 #OPTION #MESSAGE
0470 END-FIND
0480 END-REPEAT
0490 END
48
MÓDULO V - Mapas

Unidade C
Validando as entradas do mapa

- Comando REINPUT
- Regras de processamento
- Regras de processamento internas
- Reutilização das regras internas
- Resumo
49
Comando REINPUT

EXIBINDO MENSAGENS DE ERRO


Se seu programa testa a entrada de dados em um campo
do mapa e um erro é detectado, este erro precisa ser
comunicado ao usuário. Você pode fazer isso utilizando o
comando REINPUT.
A CLAUSULA MARK
Você pode usar a clausula MARK com o comando
REINPUT para posicionar o cursor no campo em que o erro
ocorreu.
Além disso, você tem a opção de exibir as mensagens de
erro com cores diferentes ou em negrito.
50
Comando REINPUT

Exibindo mensagens de erro


0010 ************************************************************
0020 * EXEMPLO DA DECLARAÇÃO REINPUT
0030 ************************************************************
0040 DEFINE DATA LOCAL
0050 1 #LNAME (A20)
0060 END-DEFINE
0170 INPUT //// ‘PLEASE ENTER A LAST NAME’ #LNAME (AD=AIT’_’)
0180 / ‘OR ENTER THE WORD’ ‘”QUIT”’ (CD=RE)

0190 IF #LANME =‘ ‘
0200 REINPUT ‘PLEASE ENTER A LAST NAME OR “QUIT” ‘ MARK *#LNAME
0210 END-IF
0240 END

Saída:
PLEASE ENTER A LAST NAME OR ‘QUIT’

PLEASE ENTER A LAST NAME_______________________


OR ENTER THE WORD ’QUIT’
51
Comando REINPUT

Lembre-se
• Nenhum comando WRITE ou DISPLAY
pode ser executado entre as declarações
INPUT e REINPUT.
• O comando REINPUT pode ser usado em
mapas internos e externos, porém seu uso é
mais eficiente quando codificado em mapas
externos.
• Em virtude do comando REINPUT retornar
ao último INPUT, todas as regras de
processamento do mapa são re-executadas.
52
Regras de Processamento

O que são regras de processamento?


Trata-se de uma edição ligada ao campo no mapa externo.
Elas são usadas para avaliar o conteúdo do campo e para
tratar os valores da variável de sistema *PF-KEY. Quando o
mapa é catalogado, elas passam a fazer parte do código do
mapa.
Exemplo:
IF #END = FALSE
IF & = 'D' OR = 'U' OR = 'Q'
IGNORE
ELSE
REINPUT 'CORRECT VALUE ARE "D" = DELETE, "U" = UPDATE, "Q" = QUIT'
(AD=I) MARK *&
END-IF
END-IF
53
Regras de Processamento

Vantagens
• É possível testar o mapa e toda lógica associada a ele
antes da criação do objeto chamador;
• Ajuda a executar sua aplicação de forma mais eficiente;
• As regras de processamento podem ser compartilhadas
entre outros objetos e aplicações. Isso pode ser feito com
o auxílio do Predict, que fornece 3 tipos de regras:
• Inline rules (regras internas)
• Free rules (regras livres)
• Automatic rules (regras automáticas)
54
Regras de Processamento

Regras Inline
Elas são definidas diretamente no mapa para serem
usadas somente por ele. Esse tipo de regra não precisa estar
documentada no Predict e outros mapas da aplicação não
precisam acessa-las.
Regras Free
São criadas para serem usadas em vários mapas. Como
forma de centralizar as informações são documentadas no
Predict. Para ser usada por mais de um mapa deve ser
criada de forma geral e em virtude desse compartilhamento
não deve ser modificada antes que seus efeitos sejam
avaliados em outros mapas que também a utilizem.
55
Regras de Processamento

Regras Automáticas
São definidas para campos do banco dentro da DDM pelo
DBA ou pelo administrador do banco. Elas são
automaticamente usadas sempre que campos do banco são
usados no mapa. Elas são criadas no Predict e não podem
ser alteradas a nível de mapa.
56
Regras de Processamento

Níveis de Processamento
Um único campo pode ter até 100 regras. A ordem do
processamento é feita atribuindo níveis para cada regra. As
regras são processadas na ordem ascendente do nível 0 ao
99 e de acordo com a posição do campo no mapa - da
esquerda para a direita e de cima para baixo. As regras
associadas com as *PF-KEY são processadas primeiro. Elas
agem como se fossem o primeiro campo do mapa.
57
Regras de Processamento

Definindo os níveis da regra


Se suas regras não são executadas na ordem desejada, você pode
mudar a ordem de execução alterando o seu nível.
Rank Regra de processamento

0 Regra de Finalização
1-4 Regras Automáticas

5-24 Checagem de formato

25-44 Checagem de valor para campos individuais

45-64 Checagem de valores entre campos

65-84 Acesso ao banco

85-99 Propósitos especiais


58
Regras de Processamento

Criando Regras Internas


O método usado para criar regras variam de acordo com a
plataforma operacional. No mainframe basta entrar com .p
sobre o delimitador do campo ao qual deseja-se associar a
regra.
Notação &
Ao editar a regra você pode utilizar o caracter “&” para
substituir o nome do campo. Essa opção possibilita a
padronização de regras, permitindo que a mesma regra seja
usada em diferentes campos com o mesmo propósito.
59
Regras de Processamento

Lembre-se
• A declaração END não é permitida dentro
das regras de processamento;
• Referências a números de linha não são
permitidas dentro das regras de
processamento;
• Você pode checar, testar ou salvar uma
regra de processamento.
60
Regras de Processamento

Salvando Regras Internas


Caso você queira criar uma regra para ser usada depois, ou
caso deseje reutilizá-la em outros campos, há dois métodos
que você pode empregar:
Método 1: Salvá-la como Copycode;
Método 2: Salvá-la como uma regra free (somente possível
em plataformas que suportam o Predict).
61
Regras de Processamento

Método 1: Salvando como Copycode


Uma regra interna pode ser salva como copycode usando o
comando SAVE dento do editor de regra. Este copycode
pode depois ser inserido no editor para qualquer campo ao
qual a regra estará associada, dentro da mesma biblioteca.
Para inserir o copycode entre com o comando .I(<nome do
copycode>) na 1.ª linha do editor.
62
Regras de Processamento

Método 2: Salvando como regra free


A regra free pode ser salva dentro do Predict. Ao fazer isso é necessário
fornecer um nome para a regra. Assim, quando quiser usar essa regra
para um outro campo basta chamá-la dentro do editor pelo nome
recebido no Predict.
Rule REGRA-2_________________________ Field #CIDADE
> > + Rank 0 S 10 L 1 Struct Mode
ALL ....+....10...+....+....+....30...+....+....+....50...+....+....+....70.
0010 * **********************************************************************
0020 * Verification: REGRA-2 generated by PREDICT *
0030 * with format: Alphanumeric; Type: Table of values; *
0040 * on: 2002-04-10; at: 20:40:56; from user: CTTR1 *
0050 * **********************************************************************
0060 IF NOT ( & = 'santos' OR = 'campinas' OR = 'jau' OR = 'londrina' )
0070 REINPUT 'Valid value(s):'-
0080 ' ''santos'',''campinas'',''jau'',''londrina'' .'
0090 MARK *&
0100 END-IF
63
Regras de Processamento

Compartilhamento de Regras Free


Qualquer mudança em uma regra free afeta todos os
mapas que a utilizam. Para modificar uma regra free e não
passar essas modificações para outros mapas, você pode
converter a regra free em uma regra interna. Para assegurar
que as regras free não serão modificadas por outros
desenvolvedores, Predict e o Natural Security possuem
opções para protegê-las.
64
Regras de Processamento

Lembre-se
• Evite a execução de objetos externos a partir de
regras de processamento (ex.: uso do PERFORM
ou CALLNAT) pois há uma enorme possibilidade
do controle ser passado para fora do mapa antes
da validação dos campos de entrada.
• Regras de processamento podem conter a
declaração DEFINE DATA, pois você pode
precisar usar uma variável que não está definida
no mapa ou uma view e seus campos.

Você também pode gostar