Академический Документы
Профессиональный Документы
Культура Документы
3
Ambiente Natural.....................................................................................................................................4
Objetos Natural........................................................................................................................................4
Menu Principal......................................................................................................................................5
Menu Para Funes de Desenvolvimento............................................................................................6
Editor de programas, subprogramas e outros...........................................................................................7
Terceira tela do Editor de mapas ...........................................................................................................10
Editor de Data reas...............................................................................................................................11
Alguns Comandos do Ambiente Natural................................................................................................11
Recorrendo a Ajuda (HELP)..................................................................................................................12
Qual o texto de uma mensagem de erro de execuo ?..........................................................................12
Qual a sintaxe de uma instruo Natural ?.............................................................................................12
Recuperando os ltimos Comandos (LAST) .........................................................................................13
Qual o ltimo comando que usei ?.........................................................................................................13
Quais os ltimos comandos que usei ?...................................................................................................13
Recuperando os parmetros do meu ambiente (GLOBALS).................................................................13
Recuperando os objetos da biblioteca (LIST)........................................................................................14
Quais os objetos da biblioteca ?..............................................................................................................14
Quais os objetos de um determinado tipo na biblioteca ?......................................................................14
Quais os objetos de um determinado tipo iniciados com a letra S na biblioteca ?.............................15
Recuperando os objetos que possuem uma string (SCAN)................................................................15
Limpando a rea do editor Natural.........................................................................................................16
Editando um objeto Natural (EDIT)......................................................................................................16
Renomeando um objeto Natural (RENAME).......................................................................................17
Gerando APENAS o fonte de um objeto do editor Natural (EDIT).....................................................17
Gerando o fonte e o executvel de um objeto Natural (STOW)...........................................................17
Verificando a sintaxe de um programa Natural (CHECK)....................................................................19
Estruturando um objeto no editor Natural (STRUCT).........................................................................19
Conhecendo o utilitrio de mensagens de erro (SYSERR)...................................................................20
Terminando uma sesso Natural (FIN).................................................................................................20
Mudando de biblioteca (LOGON).........................................................................................................20
Rodando um programa a partir do seu executvel (EXECUTE)...........................................................20
Rodando um programa a partir do seu fonte (RUN)..............................................................................20
Programao Natural..............................................................................................................................21
Modos de programao..........................................................................................................................21
Variveis de usurio...............................................................................................................................21
Nome......................................................................................................................................................21
Formato...................................................................................................................................................21
Definio................................................................................................................................................22
Redefinio.............................................................................................................................................22
Inicializao (INIT).............................................................................................................................22
Manipulao de variveis ......................................................................................................................23
Limpando (RESET)..............................................................................................................................23
Movendo Contedo (MOVE)................................................................................................................23
Operaes Matemticas..........................................................................................................................24
Juntando Variveis Strings................................................................................................................25
Alterando um caracter em uma varivel ou pesquisando um caracter em uma varivel........................25
Testes Condicionais................................................................................................................................26
A instruo DECIDE ON.......................................................................................................................26
A instruo IF.........................................................................................................................................26
Tratamento de Erro (ON ERROR).........................................................................................................27
Trabalhando com Tela............................................................................................................................27
Chamando o Mapa (tela)........................................................................................................................27
Apresentando no Mapa uma mensagem.................................................................................................27
Natural 2
Reexecutando o Mapa............................................................................................................................28
Indicando o uso de PFs...........................................................................................................................28
Testando a PF pressionada.....................................................................................................................28
Usando a Varivel de controle................................................................................................................29
Processamento com Loop (lao) ............................................................................................................29
A instruo FOR.....................................................................................................................................29
A instruo REPEAT..............................................................................................................................30
A instruo ESCAPE..............................................................................................................................31
Apresentao de informaes.................................................................................................................31
Trabalhando com Arquivo Adabas.........................................................................................................35
Leitura de Registros................................................................................................................................35
A instruo Read....................................................................................................................................36
READ PHYSICAL.................................................................................................................................36
READ LOGICAL...................................................................................................................................37
A instruo HISTOGRAM.....................................................................................................................37
A instruo FIND...................................................................................................................................38
FIND <local> WITH <condio lgica> (gera loop) ...........................................................................39
FIND NUMBER <local> WITH <condio lgica> (no gera loop) ...................................................40
FIND NUMBER <local> WITH <condio lgica> RETAIN AS <lista> ..........................................40
(no gera loop)........................................................................................................................................40
FIND <local> WITH <lista> (gera loop) ............................................................................................40
A instruo GET....................................................................................................................................41
Atualizao de Registros........................................................................................................................41
A instruo UPDATE............................................................................................................................41
A instruo DELETE.............................................................................................................................42
A instruo STORE...............................................................................................................................42
As instrues END TRANSACTION e BACKOUT TRANSACTION................................................42
A instruo RETRY................................................................................................................................43
Trabalhando com arquivos WORK........................................................................................................43
Lendo arquivo work................................................................................................................................44
Gravando arquivo work..........................................................................................................................44
Usando Subrotina Interna.......................................................................................................................44
Usando Subprograma.............................................................................................................................45
Exemplo de Programa com Consulta Fontica.......................................................................................45
Natural 2
Introduo
Natural 2
Ambiente Natural
Objetos Natural
Os seguintes tipos de objetos podem ser criados dentro de uma
biblioteca Natural:
P
N
S
H
C
T
M
Program
Subprogram
Subroutine
Helproutine
Copycode
Text
Map
G
L
A
Z
D
4
Natural 2
Menu Principal
16:33:28
User P007779
*****
NATURAL *****
- Main Menu -
2001-01-15
Library SYSTEM
Function
_
_
_
_
_
_
_
_
Development Functions
Development Environment Settings
Maintenance and Transfer Utilities
Debugging and Monitoring Utilities
Example Libraries
Other Products
Help
Exit NATURAL Session
Natural 2
2001-01-15
Library SYSTEM
Mode Structured
Work area empty
Function
Create Object
Edit Object
Rename Object
Delete Object
Execute Program
List Object(s)
List Subroutines Used
Help
Exit
Type .. _
Name .. ________________________________
Command ===>
Enter-PF1---PF2---PF3---PF4---PF5---PF6---PF7---PF8---PF9---PF10--PF11--PF12--Help Menu Exit
Canc
Natural 2
>
Top
0010
0020
0030
0040
0050
0060
0070
0080
0090
0100
0110
0120
0130
0140
0150
0160
0170
0180
0190
0200
> + Program
SAEPG100 Lib SINARM
....+....1....+....2....+....3....+....4....+....5....+....6....+....7..
** ------------------------------------------------------------------ **
** PGM. QUE CHAMA O MENU DE MANUTENCAO DO SISTEMA
- 16/12/91 **
** ------------------------------------------------------------------ **
DEFINE DATA
GLOBAL USING SAEGL001
LOCAL
1 #DADOS-CALL
2 #COD-ORGAO-P
(N05)
2 #MAT-ALT-P
(N07)
2 #AUT-ALTERA
(A01)
2 #DADOS-P
3 #ISN-PROP-P
(P8)
3 #ISN-ARMA-P
(P8)
3 #COD-ARMA-P
(P9)
3 #COD-VEND-P
(N09)
3 #COD-PROP-P
(N09)
3 #TIPO-PROP-P
(A01)
3 #GUARDA-IDENT
(A15)
3 #GUARDA-NOME
(A50)
3 #GUARDA-DTNASC
(N08)
....+....1....+....2....+....3....+....4....+....5....+... S 185 L 1
.In
para criar n linhas em branco abaixo da linha onde
est o comando;
.I
para criar dez linhas em branco abaixo da linha onde
est o comando
.X
para marcar o incio de um bloco (conjunto) de linhas;
.y
para marcar o final de um bloco (conjunto) de linhas;
.C
para copiar (duplicar) uma linha;
.CX
para copiar a linha marcada com X, para a linha abaixo
da linha deste comando
.CX-Y
para copiar o bloco de linhas marcados por X e Y para
abaixo da linha deste comando;
.D
elimina uma linha;
.DX
elimina a linha marcada com X;
.DX-Y
elimina o bloco de linhas marcado por X e Y;
.P
posiciona a linha onde est este comando como a
primeira linha da tela do editor;
.L
desfaz as alteraes da linha onde est este comando;
.MX
move a linha marcada com X para a linha abaixo da
que est este comando;
Natural 2
.MX-Y
move o bloco de linhas marcado por X e Y para a linha
abaixo da que est este comando.
Alguns comandos usados na linha de comandos do editor:
TOP
posiciona no incio do objeto que est sendo editado;
BOTTOM
posiciona no final do objeto que est sendo editado;
LET
desfaz as alteraes em curso, as no confirmadas com
ENTER, da pgina do editor;
Code .. E
2001-01-16
Library SINARM
Function
--------------------------------Field and Variable Definitions
Edit Map
Initialize new Map
Initialize a new Help Map
Maintenance of Profiles & Devices
Save Map
Test Map
Stow Map
Help
Exit
Name .. SAETL170
Profile .. SYSPROF_
Command ===>
Enter-PF1---PF2---PF3---PF4---PF5---PF6---PF7---PF8---PF9---PF10--PF11--PF12--Help
Exit Test Edit
Natural 2
15:25:25
Delimiters
----------------Cls Att CD Del
T
D
BLANK
T
I
?
A
D
_
A
I
)
A
N
M
D
&
M
I
:
O
D
+
O
I
(
Format
--------------------------Page Size ...... 23
Line Size ...... 79
Column Shift ... 0 (0/1)
Layout ......... ________
dynamic ....... N (Y/N)
Zero Print ..... N (Y/N)
Case Default ... UC (UC/LC)
Manual Skip .... N (Y/N)
Decimal Char ... ,
Standard Keys .. N (Y/N)
Justification .. L (L/R)
Print Mode ..... __
Control Var .... ________
2001-01-19
Context
-------------------------Device Check .... ________
WRITE Statement
_
INPUT Statement
X
Help ____________________
as field default N (Y/N)
Automatic Rule Rank 1
Profile Name .... SYSPROF
Filler Characters
-----------------------Optional, Partial ....
Required, Partial ....
Optional, Complete ...
Required, Complete ...
Enter-PF1---PF2---PF3---PF4---PF5---PF6---PF7---PF8---PF9---PF10--PF11--PF12--Help
Exit
Let
Natural 2
Ob _
Ob D CLS ATT DEL
CLS ATT DEL
.
.
T D
Blnk
T I
?
.
.
A D
_
A I
)
.
.
A N
M D
&
.
.
M I
:
O D
+
.
.
O I
(
.
.
001
--010---+----+----+---030---+----+----+---050---+----+----+---070---+---+XXXXXXXXXXX ?SINARM ?- ?SISTEMA?NACIONAL?DE?ARMAS
+XXXXXXXX
+XXXXXXXX
SAETL170
----------------------------(XXXXXXXXXXXXXXXXXXXXXXXXX -----------------------
RAZAO SOCIAL:&XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
C.G.C.
:&00000000000000
+XXXXXX &XXXXXX
ENDERECO
::XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
BAIRRO
::XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
MUNICIPIO
::XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX U.F.::XX +99999
C.E.P.
::00000000
Enter-PF1---PF2---PF3---PF4---PF5---PF6---PF7---PF8---PF9---PF10--PF11--PF12--Help Mset Exit Test Edit -+
Full <
>
Let
..D
..Dn
..I
..In
..C
..R
..Rn
..P
.D
.E
.M
cursor;
.A
.P
10
Natural 2
Local
SAE-JURI Library SINARM
DBID
200 FNR
9
Command
> +
I T L Name
F Leng Index/Init/EM/Name/Comment
Top - -------------------------------- - ---- --------------------------------V 1 SAE-JURI
SAE-JURIDICA
2 COD-PROPRIETARIO
P 9,0
2 CATEGORIA-PJ
N 1,0
G 2 CGC
3 CGC1
P 8,0
3 CGC2
P 4,0
3 CGC3
P 2,0
2 SFPC
A
6
G 2 RAZAO
3 RAZAO1
A
20
3 RAZAO2
A
30
2 ENDERECO
A
40
2 BAIRRO
A
30
2 CIDADE
P 5,0
2 UF-END
A
2
2 CEP
P 8,0
2 TEL
A
13
----------------------------------------------------------------- S 24
L 1
11
Natural 2
2001-01-17
Page 1
2001-01-17
Page 1
-----------------------------------------------------------------------------GENERAL SYNTAX
-----------------------------------------------------------------------------IF logical-condition
THEN statement ...
ELSE statement ...
END-IF
Note: If no action is to be performed if condition met, specify statement
IGNORE in THEN clause.
-----------------------------------------------------------------------------More ...
Enter-PF1---PF2---PF3---PF4---PF5---PF6---PF7---PF8---PF9---PF10--PF11--PF12--Help Menu Exit
+
Canc
12
Natural 2
LAST
LOGON
P007779
LOGON SINARM
HELP U 100
HELP 3017
HELP IF
? 3021
HELP IF
L P *
LIST P *
2001-01-17
Command ===>
Enter-PF1---PF2---PF3---PF4---PF5---PF6---PF7---PF8---PF9---PF10--PF11--PF12--Help Print Exit
Updat
Canc
13
Natural 2
Name
*________
##ACERTO
AAAPG210
AAAPG220
AAAPG230
AAAPG240
AAAPG260
AAAPG630
AAATL145
AAATL635
AAPARAMT
ANDREWK
ANT-OCOR
ANTPG000
Type
*__________
Program
Program
Program
Program
Program
Program
Program
Map
Map
Parameter
Program
Local
Program
S/C
*__
S/C
S/C
S/C
S/C
S/C
S/C
S/C
S/C
S/C
S/C
S
S/C
S/C
SM
*
S
S
S
S
S
S
S
S
S
S
S
Version
*______
2.2.06
2.3.03
2.2.06
2.2.08
2.2.08
2.2.08
2.2.08
2.3.03
2.3.03
2.2.06
2.3.03
2.2.06
2.2.08
User ID
*________
FREITAS
P007779
FREITAS
P007779
P007779
P007779
P007779
P007779
P007779
IRENE
ANDRE
IRENE
P007779
2001-01-17
Date
Time
*__________ *________
1997-12-16 14:45:16
1999-08-17 16:26:00
1997-12-03 15:59:08
1999-07-02 16:32:41
1999-03-26 12:09:59
1999-03-31 09:24:37
1999-05-27 13:20:20
2000-01-03 17:52:23
2000-01-03 17:50:36
1995-11-24 14:11:58
2000-10-06 10:40:52
1995-11-24 14:14:42
1999-07-02 15:51:41
14 Objects found
Top of List.
Command ===>
Enter-PF1---PF2---PF3---PF4---PF5---PF6---PF7---PF8---PF9---PF10--PF11--PF12--Help Print Exit
-+
++
Canc
Name
*________
##ACERTO
AAAPG210
AAAPG220
AAAPG230
AAAPG240
AAAPG260
AAAPG630
ANDREWK
ANTPG000
ANTPG240
AUTORIZ
BACADEL
BACAEMPR
S/C
*__
S/C
S/C
S/C
S/C
S/C
S/C
S/C
S
S/C
S/C
S/C
S/C
S/C
SM
*
S
S
S
S
S
S
S
S
S
S
S
S
S
Version
*______
2.2.06
2.3.03
2.2.06
2.2.08
2.2.08
2.2.08
2.2.08
2.3.03
2.2.08
2.3.03
2.2.06
2.2.06
2.2.06
User ID
*________
FREITAS
P007779
FREITAS
P007779
P007779
P007779
P007779
ANDRE
P007779
P007779
MAGNO
FREITAS
ANDRE
2001-01-17
Library SINARM
Date
Time
*__________ *________
1997-12-16 14:45:16
1999-08-17 16:26:00
1997-12-03 15:59:08
1999-07-02 16:32:41
1999-03-26 12:09:59
1999-03-31 09:24:37
1999-05-27 13:20:20
2000-10-06 10:40:52
1999-07-02 15:51:41
1999-08-13 07:56:16
1997-02-20 15:15:39
1997-12-16 10:04:27
1997-11-13 17:17:08
14 Objects found
Top of List.
Command ===>
Enter-PF1---PF2---PF3---PF4---PF5---PF6---PF7---PF8---PF9---PF10--PF11--PF12--Help Print Exit
-+
++
Canc
14
Natural 2
Name
S*_______
SAE-RELA
SAE-RELB
SAE-RELC
SAE-RN
SAE-RN2
SAE-RN3
SAE-RN4
SAEARMA
SAEARMA1
SAEBAT01
SAECGARM
SAECGAR2
SAECLEXT
SAECLEX1
S/C
*__
S/C
S/C
S/C
S/C
S/C
S
S/C
S/C
S/C
S
S/C
S/C
S/C
S/C
SM
*
S
S
S
S
S
S
S
S
S
S
S
S
S
S
Version
*______
2.2.08
2.2.08
2.2.08
2.2.08
2.2.08
2.2.08
2.2.08
2.2.06
2.2.06
2.3.03
2.2.08
2.2.08
2.2.06
2.2.06
User ID
*________
P007779
P007779
P007779
P007804
P007804
P007804
P007804
FREITAS
FREITAS
P007779
P007779
ANDRE
ANDRE
ANDRE
2001-01-17
Library SINARM
Date
Time
*__________ *________
1999-06-15 09:49:01
1999-06-15 09:49:55
1999-06-15 09:50:39
1998-11-09 15:10:13
1998-11-09 10:21:52
1998-11-06 15:29:30
1998-11-09 10:41:57
1997-12-16 10:31:27
1997-12-16 10:31:56
1999-08-17 09:21:20
1999-04-22 10:19:39
1998-11-10 11:05:38
1997-10-08 09:36:46
1997-11-10 15:55:53
14 Objects found
Top of List.
Command ===>
Enter-PF1---PF2---PF3---PF4---PF5---PF6---PF7---PF8---PF9---PF10--PF11--PF12--Help Print Exit
-+
++
Canc
15
Natural 2
17:50:11
User P007779
Code ...........
Scan value .....
Replace value ..
Library ........
Object name ....
Object type ....
Absolute scan ..
2001-01-17
Library SINARM
Function
Statistic
List modules containing scan value
List found scan values
Help
Exit
_
________________________________
________________________________
SINARM__
_________
Selection list .. N
______________
N
Trace ........... N
Command ===>
Enter-PF1---PF2---PF3---PF4---PF5---PF6---PF7---PF8---PF9---PF10--PF11--PF12--Help Menu Exit
Observaes:
Trace - para evitar que ocorra o erro 1009 (time-out) informe sempre
s.
Limpando a rea do editor Natural
Para limpar a rea de edio do editor corrente do Natural. Esse
comando pode ser acionado da rea de comando do editor ou da linha de
comando do Natural.
Exemplo: CLEAR
Editando um objeto Natural (EDIT)
Para editar e/ou criar um objeto Natural, devemos chamar seu editor
especfico utilizando o comando EDIT: caso o objeto exista na biblioteca,
informe EDIT <nome do objeto>; caso contrrio informe EDIT n (onde n
16
Natural 2
EDIT SAETL100
17
Natural 2
STOW
18
Natural 2
CHECK
>
All
0010
0020
0030
0040
0050
0060
0070
0080
0090
0100
0110
0120
0130
0140
0150
0160
0170
0180
0190
> + Program
CURSO
Lib SINARM
....+....1....+....2....+....3....+....4....+....5....+....6....+....7..
DEFINE DATA
LOCAL
1 CAMPOS
2 CAMPO-1
(A1)
2 CAMPO-2
(N5)
END-DEFINE
RESET CAMPO-1
REPEAT
IF CAMPO-1 = 'X'
WRITE 'EH IGUAL A X'
ELSE
IF CAMPO-1 = ' '
WRITE 'ESTAH EM BRANCO'
ELSE
WRITE 'TEM OUTRA COISA'
END-IF
END-IF
END-REPEAT
END
....+....1....+....2....+....3....+....4....+....5....+... S 19
L 1
19
Natural 2
SYSERR
11:35:23
2001-01-19
Function
---------------------------------------Add new messages
Delete messages
Display messages
Modify messages
Print messages
Scan in messages
Select messages from a list
Translate messages into another language
Help
Exit
---------------------------------------Message type .... US
Library ......... SINARM__
Message number .. 1___ - 9999
Language codes .. 1________
(Executa
o
programa
SAEPG001)
Rodando um programa a partir do seu fonte (RUN)
Para executar um programa a partir do seu fonte, utilizamos o
comando RUN. Este comando deve ser emitido de dentro do editor de
programas, com o programa a ser executado sendo editado.
Exemplo: RUN
20
Natural 2
Programao Natural
Modos de programao
H duas formas de programar no Natural 2: a primeira, a forma
como o Natural foi criado a partir de sua primeira verso, em Reporting
Mode; e a Segunda, em structured Mode. A diferena entre os dois
modos que em um, o Structured Mode, algumas instrues possuem as
respectivas instrues de finalizao e uma rea de definio de dados
obrigatria para definio de variveis e views utilizadas, enquanto no
outro, o Reporting Mode, pode no existir a rea de dados para definio
das variveis, pois qualquer varivel pode ser definida em qualquer lugar e
quando for necessrio, e o agrupamento de instrues dentro de uma outra
feito utilizando as instrues DO/DOEND.
Neste curso vamos abordar somente o Structured Mode, pois o
Reporting Mode j est praticamente em desuso.
Variveis de usurio
Nome
O nome de uma varivel definida pelo usurio pode Ter de um a 32
caracteres, entre letras, numerais e alguns caracteres especiais: - hfen,
@ arroba, _ sublinhado, / barra, $ cifro, & e comercial, # hash, +
sinal de mais, somente se for o primeiro caracter.
Como primeiro caracter podemos utilizar um dos seguintes smbolos:
qualquer letra; #; + ;&.
Formato
H vrios formatos de variveis disponveis no Natural, dos quais,
conheceremos alguns. Os demais podem ser conhecidos atravs de leitura
de manuais do Natural.
A
- alfanumrico de 1 at 253 posies.
B binrio de 1 at 126 posies.
C controle de atributo (veremos no item Trabalhando com tela)
D varivel de data.
L varivel lgica.
N numrico de 1 a 29 posies.
P numrico compactado de 1 a 29 posies.
T hora
21
Natural 2
Definio
No modo estruturado, a definio de variveis pode ser feita dentro
do fonte do objeto ou fora, em uma rea de dados. Em ambos os casos, h
a necessidade de que ou a varivel ou a rea de dados seja informada
dentro da DEFINE DATA do programa.
>
All
0010
0020
0030
0040
0050
0060
> + Program
CURSO
Lib SINARM
....+....1....+....2....+....3....+....4....+....5....+....6....+....7..
DEFINE DATA
LOCAL
1 #NUMERO
(N05)
1 #NOME
(A30)
1 #MATRIZ
(B2/1:10)
END-DEFINE
....+....1....+....2....+....3....+....4....+....5....+... S 19
L 1
Redefinio
A redefinio permite que uma varivel que foi definida com um
formato possa ser redefinida com outro formato. Permite tambm que uma
varivel definida com um tamanho, possa ser dividida, criando outras
variveis, que so subdiviso da primeira.
A instruo utilizada para redefinir uma varivel o REDEFINE.
>
All
0010
0020
0030
0030
0030
0040
0040
0040
0040
0040
0040
0040
0040
0040
0040
0040
0040
0050
0060
> + Program
CURSO
Lib SINARM
....+....1....+....2....+....3....+....4....+....5....+....6....+....7..
DEFINE DATA
LOCAL
1 #NUMERO
(N05)
1 REDEFINE #NUMERO
2 #NUM-RED (A05)
1 #NOME
(A10)
1 REDEFINE #NOME
2 #LETRA-1 (A01)
2 #LETRA-2 (A01)
2 #LETRA-3 (A01)
2 #LETRA-4 (A01)
2 #LETRA-5 (A01)
2 #LETRA-6 (A01)
2 #LETRA-7 (A01)
2 #LETRA-8 (A01)
2 #LETRA-9 (A01)
2 #LETRA-0 (A01)
1 #MATRIZ
(B21:10)
END-DEFINE
....+....1....+....2....+....3....+....4....+....5....+... S 19
L 1
Inicializao
(INIT)
A inicializao consiste em colocar um contedo inicial na varivel,
no momento da sua definio.
>
All
0010
0020
0030
0050
0070
0080
> + Program
CURSO
Lib SINARM
....+....1....+....2....+....3....+....4....+....5....+....6....+....7..
DEFINE DATA
LOCAL
1 #NUMERO
(N05) INIT <386>
1 #NOME
(A10) INIT <'EDIVALDO'>
1 #MATRIZ
(B2/1:10)
END-DEFINE
....+....1....+....2....+....3....+....4....+....5....+... S 8
L 1
22
Natural 2
Manipulao de variveis
Limpando (RESET)
A instruo RESET elimina o contedo de uma varivel, deixando-a
com o valor adequado a seu formato. Se a varivel for numrica (formato N
ou P), fica com valor zero, se for alfanumrica (formato A) fica em branco.
>
> + Program
CURSO
Lib SINARM
All
....+....1....+....2....+....3....+....4....+....5....+....6....+....7..
0010 DEFINE DATA
0020 LOCAL
0030 1 #NUMERO
(N05) INIT <386>
0040 *
0050 1 #NOME
(A10) INIT <'EDIVALDO'>
0060 *
0070 1 #MATRIZ
(B2/1:10)
0080 END-DEFINE
0090 RESET #NUMERO
0100 RESET #NOME
0110
0120
0130
....+....1....+....2....+....3....+....4....+....5....+... S 10
L 1
> + Program
CURSO
Lib SINARM
....+....1....+....2....+....3....+....4....+....5....+....6....+....7..
DEFINE DATA
LOCAL
1 #CAMPO1
(A10)
1 #CAMPO2
(A10)
1 #CAMPO3
(N05)
1 #CAMPO4
(N05)
END-DEFINE
MOVE 'APRENDER' TO #CAMPO1
MOVE #CAMPO1
TO #CAMPO2
*
MOVE 38415
TO #CAMPO3
MOVE #CAMPO3
TO #CAMPO4
*
END
....+....1....+....2....+....3....+....4....+....5....+... S 14
L 1
23
Natural 2
> + Program
CURSO
Lib SINARM
....+....1....+....2....+....3....+....4....+....5....+....6....+....7..
DEFINE DATA
LOCAL
1 #GRUPO1
2 #CAMPO1
(A10)
2 #CAMPO2
(N05)
2 #CAMPO3
(N05)
1 #GRUPO2
2 #CAMPO1
(A10)
2 #CAMPO2
(N05)
2 #CAMPO3
(N05)
END-DEFINE
MOVE BY NAME #GRUPO1 TO #GRUPO2
*
END
....+....1....+....2....+....3....+....4....+....5....+... S 14
L 1
Operaes Matemticas
As instrues matemticas permitem: Adicionar (ADD); Subtrair
(SUBTRACT); Multiplicar (MULTIPLY); Dividir (DIVIDE). No caso de existir
a necessidade de se trabalhar com uma expresso aritmtica, o ideal
montar uma expresso, utilizando a instruo COMPUTE.
>
All
0010
0020
0030
0040
0050
X 0060
Y 0070
0080
0090
0100
0110
0120
0130
0140
0150
0160
0170
0180
0190
0200
> + Program
CURSO
Lib SINARM
....+....1....+....2....+....3....+....4....+....5....+....6....+....7..
DEFINE DATA
LOCAL
1 #CAMPO1
(N05)
1 #CAMPO2
(N03)
END-DEFINE
ADD 8 TO #CAMPO1
/* SOMA 8 AO CONTEUDO DE #CAMPO1
COMPUTE #CAMPO1 = #CAMPO1 + 8
/* SOMA 8 AO CONTEUDO DE #CAMPO1
*
SUBTRACT 5 FROM #CAMPO2
/* SUBTRAI 5 DO CONTEUDO DO #CAMPO2
COMPUTE #CAMPO2 = #CAMPO2 - 5
/* SUBTRAI 5 DO CONTEUDO DO #CAMPO2
*
MULTIPLY #CAMPO1 BY 7
/* MULTIPLICA O CONTEUDO
COMPUTE #CAMPO1 = #CAMPO1 * 7
/* DE #CAMPO1 POR 7
*
DIVIDE 2 INTO #CAMPO2
/* DIVIDE O CONTEUDO DE #CAMPO2 POR 2
COMPUTE #CAMPO2 = #CAMPO2 / 2
/* DIVIDE O CONTEUDO DE #CAMPO2 POR 2
*
COMPUTE #CAMPO1 = 10 * ((#CAMPO1 + #CAMPO1) / 2) - 5
END
....+....1....+....2....+....3....+....4....+....5....+... S 19
L 1
24
Natural 2
> + Program
CURSO
Lib SINARM
....+....1....+....2....+....3....+....4....+....5....+....6....+....7..
DEFINE DATA
LOCAL
1 #NOME
(A10)
1 #SOBRENOME
(A15)
1 #NOME-COMPLETO (A20)
1 #TEXTO
(A30)
END-DEFINE
MOVE 'JOAQUIM'
TO #NOME
MOVE 'FERREIRA'
TO #SOBRENOME
*
COMPRESS #NOME #SOBRENOME INTO #NOME-COMPLETO
COMPRESS 'NOME=' #NOME-COMPLETO INTO #TEXTO LEAVING NO
END
....+....1....+....2....+....3....+....4....+....5....+... S 13
L 1
25
Natural 2
Testes Condicionais
So instrues que permitem tomada de decises verificando o
contedo das variveis.
A instruo DECIDE ON
A instruo DECIDE ON utilizada para especificar mltiplas
opes a serem executadas dependendo do valor contido em uma varivel.
>
All
0010
0020
0030
0040
0050
0060
0070
0100
0110
0120
> + Program
CURSO
Lib SINARM
....+....1....+....2....+....3....+....4....+....5....+....6....+....7..
DECIDE ON FIRST VALUE OF *PF-KEY
VALUE 'ENTR' WRITE 'TECLOU ENTER'
VALUE 'PF01' WRITE 'TECLOU PF 1'
VALUE 'PF02' WRITE 'TECLOU PF 2'
VALUE 'PF03' WRITE 'TECLOU PF 3'
VALUE 'PF04' WRITE 'TECLOU PF 4'
VALUE 'PF05' WRITE 'TECLOU PF 5'
NONE
WRITE 'TECLA NAO PREVISTA'
END-DECIDE
END
....+....1....+....2....+....3....+....4....+....5....+... S 12
L 1
>
All
0010
0020
0030
0040
0050
0060
0070
0080
0110
0120
0130
> + Program
CURSO
Lib SINARM
....+....1....+....2....+....3....+....4....+....5....+....6....+....7..
DEFINE DATA
LOCAL
1 #ESTADO-CIVIL
(N01) INIT <2>
END-DEFINE
DECIDE ON FIRST VALUE OF #ESTADO-CIVIL
VALUE 1 WRITE 'CASADO'
VALUE 2 WRITE 'SOLTEIRO'
VALUE 3 WRITE 'DIVORCIADO'
NONE
WRITE 'ERRO NO ESTADO CIVIL'
END-DECIDE
END
....+....1....+....2....+....3....+....4....+....5....+... S 13
L 1
A instruo IF
A instruo IF utilizada para controlar a execuo de uma instruo
ou um conjunto de instrues de acordo com uma condio lgica.
As condies lgicas permitidas e os conectores so: igual a (=);
diferente de (NE); menor que (<); maior que (>); menor ou igual a (LE);
maior ou igual a (GE). possvel utilizar os seguintes conectivos: OR e
AND.
>
> + Program
CURSO
Lib SINARM
All
....+....1....+....2....+....3....+....4....+....5....+....6....+....7..
0010 DEFINE DATA
0020 LOCAL
0030 1 #ESTADO-CIVIL
(N01) INIT <2>
0040 END-DEFINE
0050 IF #ESTADO-CIVIL = 1
0060
WRITE 'CASADO'
0070 END-IF
0080 IF #ESTADO-CIVIL = 2
0090
WRITE 'SOLTEIRO'
0100 ELSE
0110
WRITE #ESTADO-CIVIL
0120 END-IF
0130 END
....+....1....+....2....+....3....+....4....+....5....+... S 13
L 1
26
Natural 2
> + Program
CURSO
Lib SINARM
....+....1....+....2....+....3....+....4....+....5....+....6....+....7..
DEFINE DATA
LOCAL
1 #ESTADO-CIVIL
(N01) INIT <2>
END-DEFINE
IF #ESTADO-CIVIL = 1
WRITE 'CASADO'
END-IF
ON ERROR
WRITE 'ERRO NR:' *ERROR-NR 'NA LINHA:' *ERROR-LINE
'DO PROGRAMA:' *PROGRAM
END-ERROR
END
> + Program
CURSO
Lib SINARM
....+....1....+....2....+....3....+....4....+....5....+....6....+....7..
DEFINE DATA
LOCAL
1 #NOME
(A30)
1 #CPF
(N11)
END-DEFINE
INPUT USING MAP 'MAPA01'
END
> + Program
CURSO
Lib SINARM
....+....1....+....2....+....3....+....4....+....5....+....6....+....7..
DEFINE DATA
LOCAL
1 #NOME
(A30)
1 #CPF
(N11)
END-DEFINE
INPUT WITH TEXT 'MENSAGEM' USING MAP 'MAPA01'
END
27
Natural 2
Reexecutando o Mapa
A instruo REINPUT usada para retornar e reexecutar o ltimo
INPUT. Geralmente a utilizamos com dois complementos: uma mensagem
e um indicador (MARK) da varivel onde o cursor deve ser posicionado.
>
All
0010
0020
0030
0040
0050
0060
0070
0080
> + Program
CURSO
Lib SINARM
....+....1....+....2....+....3....+....4....+....5....+....6....+....7..
DEFINE DATA
LOCAL
1 #NOME
(A30)
1 #CPF
(N11)
END-DEFINE
INPUT WITH TEXT 'MENSAGEM' USING MAP 'MAPA01'
REINPUT 'MENSAGEM' MARK *#NOME
END
> + Program
CURSO
Lib SINARM
....+....1....+....2....+....3....+....4....+....5....+....6....+....7..
DEFINE DATA
LOCAL
1 #NOME
(A30)
1 #CPF
(N11)
END-DEFINE
SET KEY ALL
/* TODAS AS PFS DISPONIVEIS
SET KEY PF3
/* APENAS A PF3 DISPONIVEL
SET KEY PF1=HELP
/* INDICA QUE A PF1 EH O HELP
*
INPUT WITH TEXT 'MENSAGEM' USING MAP 'MAPA01'
*
REINPUT 'MENSAGEM' MARK *#NOME
END
Testando a PF pressionada
A varivel de sistema do Natural que contm a PF pressionada a
*PF-KEY (alfanumrico de 4 posies) e para test-la usamos as instrues
de teste condicional.
Os valores possveis da *PF-KEY so: ENTR (enter); PA1 a PA3;
PF1 a PF48 e CLR (clear).
0010
0020
0030
0040
0050
0060
0080
0100
0110
0120
0130
0140
0150
0160
0170
0180
0190
0200
DEFINE DATA
LOCAL
1 #NOME
(A30)
1 #CPF
(N11)
END-DEFINE
SET KEY ALL
/* TODAS AS PFS DISPONIVEIS
INPUT WITH TEXT 'MENSAGEM' USING MAP 'MAPA01'
IF *PF-KEY = 'PF1'
REINPUT 'PRESSIONOU A PF1' MARK *#NOME
END-IF
* OU ...
DECIDE ON FIRST VALUE OF *PF-KEY
VALUE 'PF1' REINPUT 'PRESSIONOU A PF1'
VALUE 'PF2' REINPUT 'PRESSIONOU A PF2'
VALUE 'PF3' REINPUT 'PRESSIONOU A PF3'
NONE
REINPUT 'PRESSIONOU TECLA NAO PREVISTA'
END-DECIDE
END
28
Natural 2
--010---+----+----+---030---+----+----+---050---+----+----+---070---+----
29
Natural 2
>
All
0010
0020
0030
0040
0050
0060
0070
0080
0090
0100
0110
X 0120
Y 0130
0140
0150
0160
0170
> + Program
CURSO
Lib CURSO
....+....1....+....2....+....3....+....4....+....5....+....6....+....7..
DEFINE DATA
LOCAL
1 #CONTROLE
(N03)
1 #INICIO
(N03) INIT <01>
1 #FINAL
(N03) INIT <16>
1 #INCREMENTO
(N03) INIT <02>
END-DEFINE
FOR #CONTROLE #INICIO #FINAL STEP #INCREMENTO
...
FOR #CONTROLE 1 10
/* #CONTROLE VARIA DE 1 A 10 INCREMENTADO DE
...
/* 1 EM 1
FOR #CONTROLE 1 10 STEP 2 /* #CONTROLE VARIA DE 1 A 10 INCREMENTADO DE
...
/* 2 EM 2
FOR #CONTROLE 10 1 STEP -2 /* #CONTROLE VARIA DE 10 A 1 DECREMENTADO DE
...
/* 2 EM 2
END-FOR
END
....+....1....+....2....+....3....+....4....+....5....+... S 17
L 1
A instruo REPEAT
a instruo usada para gerar um processamento repetitivo
controlado. Possui dois complementos , o UNTIL e o WHILE.
O REPEAT pode ser usado tambm sem nenhum complemento e
desta forma, o bloco de instrues que estiver dentro do REPEAT ser
executado at encontrar uma instruo ESCAPE BOTTOM.
Na forma REPEAT UNTIL <condio lgica>, o bloco de instrues
que estiver dentro do REPEAT, ser executado at que seja satisfeita a
condio lgica ou seja interrompido por uma instruo ESCAPE BOTTOM.
Na forma REPEAT WHILE <condio lgica>, o bloco de instrues
que estiver dentro do REPEAT ser executado enquanto a condio lgica
estiver sendo satisfeita ou at ser interrompido por uma instruo ESCAPE
BOTTOM.
>
All
0010
0020
0030
0040
0050
0060
0070
0080
0090
0100
Y 0110
0120
0130
0140
0150
0160
0170
0180
> + Program
CURSO
Lib CURSO
....+....1....+....2....+....3....+....4....+....5....+....6....+....7..
DEFINE DATA
LOCAL
1 #CONT
(N03)
1 #FINAL
(N03) INIT <16>
END-DEFINE
REPEAT UNTIL #CONT > #FINAL
ADD 1 TO #CONT
END-REPEAT
REPEAT WHILE #CONT < #FINAL
ADD 1 TO #CONT
END-REPEAT
REPEAT
ADD 1 TO #CONT
IF #CONT > #FINAL
ESCAPE BOTTOM
END-IF
END-REPEAT
END
....+....1....+....2....+....3....+....4....+....5....+... S 18
L 1
30
Natural 2
A instruo ESCAPE
A instruo ESCAPE BOTTOM serve para encerrar o loop que est
ativo no momento. O computador passa a executar a instruo que est na
linha seguinte ao END-xx , onde xx o comando que gerou o loop.
A instruo ESCAPE TOP volta a seqncia de execuo ao incio
do loop ativo.
Apresentao de informaes
Uma das grandes facilidades do Natural a possibilidade de gerao
de relatrios quer para apresentar no monitor de vdeo ou em papel. A
facilidade est na definio do lay-out do relatrio e na sua produo.
H dois comandos que permitem gerar relatrio: o DISPLAY e o
WRITE. Ambos os comandos geram o ttulo do relatrio, composto do
nmero da pgina, da data e da hora da gerao do relatrio, que pode ser
suprimido pelo complemento NOTITLE para qualquer uma das instrues.
A instruo DISPLAY mais usada para apresentar variveis num
relatrio. Para cada varivel apresentada gera automaticamente o header
(cabealho) da varivel com o seu nome.
A instruo WRITE muito utilizada para gerar relatrios formatados.
Exemplo
>
> + Program
CURSO
Lib SINARM
All
....+....1....+....2....+....3....+....4....+....5....+....6....+....7..
0010 DEFINE DATA
0020 LOCAL
0030 1 #CAMPO1
(N05) INIT <28649>
0040 1 #CAMPO2
(A30) INIT <'EDSON ARANTES DO NASCIMENTO'>
0050 END-DEFINE
0060 DISPLAY NOTITLE #CAMPO1 #CAMPO2
X 0070 WRITE
NOTITLE #CAMPO1 #CAMPO2
0080 END
0090
....+....1....+....2....+....3....+....4....+....5....+... S 8
L 1
Resultado
#CAMPO1
#CAMPO2
------- -----------------------------28649 EDSON ARANTES DO NASCIMENTO
28649 EDSON ARANTES DO NASCIMENTO
MORE
31
Natural 2
NA LINHA 9 E COLUNA 9
#MATRICULA:
PRINCESA ISABEL
MORE
32
Natural 2
> + Program
CURSO
Lib CURSO
....+....1....+....2....+....3....+....4....+....5....+....6....+....7..
FORMAT PS=11
/* DEFININDO UMA PAGINA COM 10 LINHAS APENAS
AT TOP OF PAGE
/* QUANDO FOR INICIO DA PAGINA
WRITE NOTITLE NOHDR
01T 'TESTANDO O CABECALHO DE UM RELATORIO'
/ 01T 'INFORMANDO A DATA DE EMISSAO :' *DATX (EM=DD/MM/YYYY)
/ 01T 'INFORMANDO A HORA DE EMISSAO :' *TIMX (EM=HH/II/SS)
/ 01T 'INFORMANDO O NUMERO DA PAGINA:' *PAGE-NUMBER (EM=ZZZ.ZZ9)
END-TOPPAGE
AT END OF PAGE
/* QUANDO FOR FIM DE PAGINA
WRITE // 1T 'ESTA E" A LINHA DE RODAP'
END-ENDPAGE
WRITE / 10T 'LINHA FONTE 1'
WRITE / 10T 'LINHA FONTE 2'
WRITE / 10T 'LINHA FONTE 3'
WRITE / 10T 'LINHA FONTE 4'
WRITE / 10T 'LINHA FONTE 5'
WRITE / 10T 'LINHA FONTE 6'
WRITE / 10T 'LINHA FONTE 7'
END
33
Natural 2
> + Program
CURSO
Lib CURSO
All
....+....1....+....2....+....3....+....4....+....5....+....6....+....7..
0010 DEFINE DATA
0020 LOCAL
0030 1 #CAMPO1
(A70)
0040 1 #CAMPO2
(A11)
0050 1 #CAMPO3
(N08,2)
0060 END-DEFINE
0070 MOVE ALL 'X'
TO #CAMPO1
0080 MOVE '00011111111' TO #CAMPO2
0090 MOVE 3863,54
TO #CAMPO3
0100 WRITE #CAMPO1 (AL=30)
/* SOMENTE AS 30 PRIMEIRAS POSICOES
0110
#CAMPO2 (EM=XXX.XXX.XXX-XX)
0120
#CAMPO3 (EM=ZZ.ZZZ.ZZ9,99)
0130 END
0140
....+....1....+....2....+....3....+....4....+....5....+... S 13
L 1
Page
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 000.111.111-11
01-01-25
19:06:55
3.863,54
MORE
34
Natural 2
Page
01-01-25
19:20:01
CABECALHO TO TOP-PAGE
IMPRESSAO DE UMA LINHA DETALHE
MORE
35
Natural 2
> + Program
CURSO
Lib SINARM
....+....1....+....2....+....3....+....4....+....5....+....6....+....7..
DEFINE DATA
LOCAL USING SAE-FISI
END-DEFINE
READ SAE-FISI
write cpf-proprietario (em=999.999.999-99) nome-pes
END-READ
END
1
000.000.000-00
000.000.000-00
000.000.000-00
000.000.000-00
000.000.000-00
000.000.000-00
604.490.719-87
000.000.000-00
127.535.219-72
000.000.000-00
004.826.175-00
000.000.000-00
000.000.000-00
000.000.000-00
000.000.000-00
000.000.000-00
000.000.000-00
000.000.000-00
000.000.000-00
000.000.000-00
000.000.000-00
MORE
01-01-26
16:37:02
36
Natural 2
READ LOGICAL
O Read Logical
recupera os
registros na ordem de uma
determinada chave descritor/superdescritor/ subdescritor - . permite que
os registros sejam recuperados a partir de um determinado valor e pode ser
utilizado com quaisquer outras instrues de atualizao, sem problema
nenhum.
>
> + Program
CURSO
Lib SINARM
All
....+....1....+....2....+....3....+....4....+....5....+....6....+....7..
0010 DEFINE DATA
0020 LOCAL USING SAE-FISI
0030 END-DEFINE
0040 READ SAE-FISI BY CPF-PROPRIETARIO
0050
write cpf-proprietario (em=999.999.999-99) nome-pes
0060 END-READ
0070 END
....+....1....+....2....+....3....+....4....+....5....+... S 8
L 1
000.000.001-91
000.000.217-84
000.001.063-40
000.001.227-00
000.001.401-04
000.001.591-15
000.002.211-04
000.002.561-53
000.003.371-53
000.004.185-87
000.004.782-10
000.005.396-19
000.005.402-00
000.006.123-91
000.006.479-34
000.006.739-35
000.007.119-69
000.007.379-25
000.008.412-34
000.008.761-00
000.008.842-00
MORE
01-01-26
16:24:14
A instruo HISTOGRAM
A instruo HISTOGRAM usada para ler os valores de um campo
do banco de dados que foi definido como descritor, superdescritor ou
subdescritor. Os valores so lidos diretamente da Lista Invertida e so
apresentados na ordem crescente.
possvel dentro do loop gerado pelo HISTOGRAM utilizar as
seguintes variveis do Natural: *NUMBER, que recupera a quantidade de
registros que possuem o valor da chave; e *COUNTER, que contm o
nmero de valores j lidos.
37
Natural 2
>
> + Program
CURSO
Lib SINARM
All
....+....1....+....2....+....3....+....4....+....5....+....6....+....7..
0010 DEFINE DATA
0020 LOCAL
0030 1 SAE-FISIX VIEW OF SAE-FISICA
0040 2 DATA-NASC
0050 END-DEFINE
0060 HISTOGRAM SAE-FISIX DATA-NASC
0070
WRITE *NUMBER *COUNTER DATA-NASC (EM=9999/99/99)
0080 END-HISTOGRAM
0090 END
....+....1....+....2....+....3....+....4....+....5....+... S 9
L 1
150
01-01-26
3
4
4
4
3
1
2
1
3
2
1
2
4
3
1
2
3
6
1
2
1
3130
3131
3132
3133
3134
3135
3136
3137
3138
3139
3140
3141
3142
3143
3144
3145
3146
3147
3148
3149
3150
17:01:39
1914/03/01
1914/03/02
1914/03/03
1914/03/04
1914/03/05
1914/03/06
1914/03/07
1914/03/08
1914/03/09
1914/03/10
1914/03/12
1914/03/13
1914/03/14
1914/03/15
1914/03/16
1914/03/17
1914/03/18
1914/03/19
1914/03/20
1914/03/21
1914/03/22
MORE
A instruo FIND
A instruo FIND usada para selecionar um conjunto de registros
de um arquivo de acordo com um critrio de pesquisa definido para suas
chaves.
Os critrios de pesquisa possveis entre uma chave e um valor so:
igual a (=); diferente de (NE); menor que (<); maior que (>); menor ou igual
a (LE); maior ou igual a (GE). possvel utilizar os seguintes conectivos
entre as chaves: OR e AND.
O FIND pode ser codificado de muitas formas, e vamos destacar aqui
as quatro mais utilizadas.
Como h a possibilidade de que nenhum registro satisfaa o critrio
de pesquisa estabelecido, o Natural permite que se d tratamento para
esses casos utilizando as seguintes instrues: IF NO RECORDS ou IF
*NUMBER.
A instruo IF NO RECORDS deve estar contida dentro do FIND e
deve ter obrigatoriamente a instruo ESCAPE BOTTOM para evitar que
execute os comandos dentro do FIND erradamente.
O IF *NUMBER deve ser colocado aps a instruo que finalizar o
FIND (END-FIND).
38
Natural 2
>
> + Program
CURSO
Lib SINARM
All
....+....1....+....2....+....3....+....4....+....5....+....6....+....7..
0010 DEFINE DATA
0020 LOCAL USING SAE-FISI
0030 LOCAL
0040 1 #CPF
(N11) INIT <9706623191>
0050 END-DEFINE
0060 FIND SAE-FISI WITH CPF-PROPRIETARIO = #CPF
0070
IF NO RECORDS FOUND
0080
WRITE 'NAO ACHEI CPF=' #CPF
0090
ESCAPE BOTTOM
0100
END-NOREC
0110
WRITE CPF-PROPRIETARIO (EM=999.999.999-99)
0120
DATA-NASC (EM=9999/99/99) NOME-PES
0130 END-FIND
0140 END
....+....1....+....2....+....3....+....4....+....5....+... S 14
L 1b
01-01-26
17:59:45
39
Natural 2
> + Program
CURSO
Lib SINARM
....+....1....+....2....+....3....+....4....+....5....+....6....+....7..
DEFINE DATA
LOCAL USING SAE-FISI
END-DEFINE
FIND NUMBER SAE-FISI WITH DATA-NASC = 19551121
WRITE 'ENCONTRADOS=' *NUMBER
END
....+....1....+....2....+....3....+....4....+....5....+... S 6
L 1
> + Program
CURSO
Lib SINARM
....+....1....+....2....+....3....+....4....+....5....+....6....+....7..
DEFINE DATA
LOCAL USING SAE-FISI
END-DEFINE
FIND NUMBER SAE-FISI WITH DATA-NASC = 19551121 RETAIN AS 'LISTA8'
WRITE 'ENCONTRADOS=' *NUMBER
END
....+....1....+....2....+....3....+....4....+....5....+... S 6
L 1
> + Program
CURSO
Lib SINARM
....+....1....+....2....+....3....+....4....+....5....+....6....+....7..
DEFINE DATA
LOCAL USING SAE-FISI
END-DEFINE
FIND SAE-FISI WITH 'LISTA8'
IF NO RECORDS FOUND
RELEASE SET 'LISTA8'
REINPUT '*** NAO HA REGISTRO PARA ESTA PESQUISA ***' ALARM
END-NOREC
/*...
END-FIND
END
....+....1....+....2....+....3....+....4....+....5....+... S 11
L 1
40
Natural 2
A instruo GET
A instruo GET usada para ler um registro atravs do seu ISN.
Essa instruo no gera loop. O ISN de um registro pode ser obtido
atravs da varivel do sistema *ISN.
All
0010
0020
0030
0040
0050
0060
0070
0080
0090
0100
0110
0120
0130
0140
0150
0160
0170
....+....1....+....2....+....3....+....4....+....5....+....6....+....7..
DEFINE DATA
LOCAL USING SAE-FISI
LOCAL
1 #CPF
(N11) INIT <9706623191>
1 #ISN
(N08)
END-DEFINE
FIND SAE-FISI WITH CPF-PROPRIETARIO = #CPF
IF NO RECORDS FOUND
WRITE 'NAO ACHEI CPF=' #CPF
ESCAPE BOTTOM
END-NOREC
MOVE *ISN
TO #ISN
WRITE CPF-PROPRIETARIO (EM=999.999.999-99)
DATA-NASC (EM=9999/99/99) NOME-PES
END-FIND
GET SAE-FISI #ISN
END
Atualizao de Registros
As instrues que efetuam atualizao de registros UPDATE e
DELETE em um arquivo Adabas necessitam, obrigatoriamente, que os
registros tenham sido selecionados anteriormente pelo FIND ou GET ou
READ.
A instruo UPDATE
A instruo UPDATE usada para atualizar uma ou varveis de um
registro de um arquivo Adabas.
0010
0020
0030
0040
0050
0060
0070
0080
0090
0100
0110
0120
0130
0140
DEFINE DATA
LOCAL USING SAE-FISI
LOCAL
1 #CPF
(N11) INIT <9706623191>
END-DEFINE
FIND SAE-FISI WITH CPF-PROPRIETARIO = #CPF
IF NO RECORDS FOUND
WRITE 'NAO ACHEI CPF=' #CPF
ESCAPE BOTTOM
END-NOREC
MOVE 'EDSON TEIXEIRA DA SILVA' TO NOME-PES
UPADATE
END-FIND
END
41
Natural 2
A instruo DELETE
A instruo DELETE usada para excluir um ou mais registros de
um arquivo Adabas.
0010
0020
0030
0040
0050
0060
0070
0080
0090
0100
0110
0120
0130
DEFINE DATA
LOCAL USING SAE-FISI
LOCAL
1 #CPF
(N11) INIT <9706623191>
END-DEFINE
FIND SAE-FISI WITH CPF-PROPRIETARIO = #CPF
IF NO RECORDS FOUND
WRITE 'NAO ACHEI CPF=' #CPF
ESCAPE BOTTOM
END-NOREC
DELETE
END-FIND
END
A instruo STORE
A instruo STORE usada para incluir registros em um arquivo
Adabas.
>
> + Program
CURSO
Lib SINARM
All
....+....1....+....2....+....3....+....4....+....5....+....6....+....7..
0010 DEFINE DATA
0020 LOCAL USING SAE-FISI
0030 END-DEFINE
0040 MOVE 21425248691
TO CPF-PROPRIETARIO
0050 MOVE 'ERMENEGILDO COSTA'
TO NOME-PES
0060 MOVE '244364'
TO NUM-IDENT
0070 MOVE 'SSP/DF'
TO ORGAO-IDENT
0080 MOVE 'DF'
TO UF-IDENT
0090 MOVE 19900520
TO DATA-EXP-IDENT
0100 MOVE 'GILDO COSTA'
TO NOME-PAI
0110 MOVE 'GILDA COSTA'
TO NOME-MAE
0120 MOVE 19801021
TO DATA-NASC
0130 MOVE 'M'
TO SEXO
0140 STORE SAE-FISI
0150 END
....+....1....+....2....+....3....+....4....+....5....+... S 15
L 1
42
Natural 2
>
All
0010
0020
0030
0040
0050
0060
0070
0080
0090
0100
0110
0120
0130
0140
0150
0160
>
All
0010
0020
0030
0040
0050
0060
0070
0080
0090
0100
0110
0120
0130
0140
0150
0160
> + Program
CURSO
Lib SINARM
....+....1....+....2....+....3....+....4....+....5....+....6....+....7..
DEFINE DATA
LOCAL USING SAE-FISI
LOCAL
1 #CPF
(N11)
1 #NOME
(A30) INIT <'JOAO PEDRO PEREIRA'>
END-DEFINE
FIND SAE-FISI WITH CPF-PROPRIETARIO = 21425248691
IF NO RECORDS FOUND
WRITE 'NAO ACHEI CPF=' #CPF
ESCAPE BOTTOM
END-NOREC
MOVE #NOME TO NOME-PES
UPDATE
END-FIND
END TRANSACTION
END
....+....1....+....2....+....3....+....4....+....5....+... S 16
L 1
> + Program
CURSO
Lib SINARM
....+....1....+....2....+....3....+....4....+....5....+....6....+....7..
DEFINE DATA
LOCAL USING SAE-FISI
LOCAL
1 #CPF
(N11)
1 #NOME
(A30) INIT <'JOSE CALIXTO'>
END-DEFINE
FIND SAE-FISI WITH CPF-PROPRIETARIO = 21425248691
IF NO RECORDS FOUND
WRITE 'NAO ACHEI CPF=' #CPF
ESCAPE BOTTOM
END-NOREC
MOVE #NOME TO NOME-PES
UPDATE
END-FIND
BACKOUT TRANSACTION
END
....+....1....+....2....+....3....+....4....+....5....+... S 16
L 1
A instruo RETRY
A instruo RETRY deve ser usada dentro do bloco da instruo ON
ERROR, para verificar novamente a possibilidade de atualizar um registro
que est sendo atualizado por outro usurio.
Quando se tenta atualizar um registro que j est sendo atualizado
por outro, o Adabas devolve um erro 3145, que deve ser tratada no ON
ERROR.
Trabalhando com arquivos WORK
Ha 4 instrues para gerao/leitura de arquivos work: READ WORK
FILE; READ WORK FILE ONCE; WRITE WORK FILE; CLOSE WORK FILE.
As instrues READ e WRITE possuem os complementos <n> e
<campos>: <n> o nmero do arquivo relacionado ao carto //cmwkfnn do
JCL; <campos> a relao de campos que formam o lay-out do registro do
arquivo.
43
Natural 2
> + Program
CURSO
Lib CURSO
....+....1....+....2....+....3....+....4....+....5....+....6....+....7..
DEFINE DATA
LOCAL
1 #REGISTRO
2 #MATRICULA
(N07)
2 #NOME
(A30)
END-DEFINE
READ WORK FILE 1 #REGISTRO
...
END-WORK
END
> + Program
CURSO
Lib CURSO
....+....1....+....2....+....3....+....4....+....5....+....6....+....7..
DEFINE DATA
LOCAL
1 #REGISTRO
2 #MATRICULA
(N07)
2 #NOME
(A30)
END-DEFINE
WRITE WORK FILE 1 #REGISTRO
...
END
....+....1....+....2....+....3....+....4....+....5....+... S 10
L 1
DEFINE DATA
LOCAL
1 #REGISTRO
2 #MATRICULA
(N07)
2 #NOME
(A30)
END-DEFINE
PERFORM ROT-MOVIMENTACAO
** ...
DEFINE SUBROUTINE ROT-MOVIMENTACAO
MOVE 'PEDRO PEREIRA' TO #NOME
MOVE 7777777
TO #MATRICULA
END-SUBROUTINE
END
44
Natural 2
Usando Subprograma
O subprograma um objeto Natural que pose ser acionado pela
instruo CALLNAT a partir de outro objeto, com passagem de parmetros
que podem ser alterados pelo subprograma e devolvidos ao objeto
chamador. A sua sintaxe CALLNAT <subprograma> <parmetros>.
Os parmetros so recebidos via rea de comunicao do
subprograma chamada de PARAMETER e nela as variveis devem ter o
mesmo formato e tamanho e estarem na mesma ordem da passada pelo
objeto chamador.
Programa Chamador:
0010
0020
0030
0040
0050
0060
0070
0080
0090
DEFINE DATA
LOCAL
1 #MATRICULA
(N07)
1 #NOME
(A30)
END-DEFINE
MOVE 'PEDRO PEREIRA' TO #NOME
MOVE 7777777
TO #MATRICULA
CALLNAT 'CURSOSUB' #MATRICULA #NOME
END
Programa chamado
0010
0020
0030
0040
0050
0060
0070
0080
DEFINE DATA
PARAMETER
1 #MATRICULA
1 #NOME
END-DEFINE
WRITE #NOME
WRITE #MATRICULA
END
(N07)
(A30)
DEFINE DATA
LOCAL USING SAE-FISI
LOCAL
1 #I
(N03)
1 #QTD-PARTES
(N01)
1 #NOME-P
(A15/1:10)
1 #NOME
(A50) INIT <'PAULO AMORIM
'>
END-DEFINE
CALLNAT 'SAEN0001' #NOME #NOME-P(1:10) #QTD-PARTES
IF #QTD-PARTES = 0
REINPUT 'ARGUMENTO DE PESQUISA INSUFICIENTE' MARK *#NOME ALARM
END-IF
FIND NUMBER SAE-FISI WITH NOME-PHON EQ #NOME-P(1) RETAIN AS 'LISTA'
FOR #I EQ 2 TO #QTD-PARTES
FIND NUMBER SAE-FISI WITH NOME-PHON EQ #NOME-P(#I)
AND 'LISTA' RETAIN AS 'LISTA'
END-FOR
**-----------------------------------------------------------------FIND SAE-FISI WITH 'LISTA'
IF NO RECORDS FOUND
WRITE 'NAO CONSTA NO BANCO DE DADOS'
ESCAPE BOTTOM
END-NOREC
WRITE CPF-PROPRIETARIO (EM=999.999.999-99)
DATA-NASC (EM=9999/99/99) NOME-PES
END-FIND
RELEASE SET 'LISTA'
END
45