Apostila Linguagem de Programação - Natural - ModuloV
Apostila Linguagem de Programação - Natural - ModuloV
Apostila Linguagem de Programação - Natural - ModuloV
MÓDULO V - Mapas
Unidade A
Definição e Implementação de Mapas
usuário
usuário
usuário
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
______________________________________________________________________________
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
Tamanho
T = Transforma tudo no campo para maiúscula
das letras
W = Transforma tudo no campo para minúscula
no Campo
Cursor
18
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
… ~~~~~~
/* 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
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
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
#campo-ja-existente (a40)
#outro-campo (a1)
27
Conceitos sobre Mapas
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
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
DEFINE DATA
…
END-DEFINE
…
WRITE USING FORM ‘HELLO1’
…
END
Unidade B
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.
Parâmetros Especiais
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)'
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
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’
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
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
0 Regra de Finalização
1-4 Regras Automáticas
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
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.