Os objetos Natural (programas, mapas, áreas de dados, etc.) são armazenados em bibliotecas (“Libraries”), que estão em um file no Adabas (seja FNAT ou o FUSER). Os programas Natural, fontes e objetos são identificados por nomes com formação igual aos nomes das bibliotecas, ou seja, até 8 caracteres, sendo o primeiro alfabético.
Os programas fontes são formados por linhas de até 72 posições, numeradas por 4 dígitos. Esta numeração é gerada pelo Natural durante a criação do programa e é usada pelo Compilador e Editores, e tem importantes funções lógicas dos programas.
Dentro das linhas, a disposição das instruções (statements ou comandos de programas) é livre, não havendo instruções nem parâmetros posicionais.
Tela dos programas;
Abaixo será destacado os comandos que podem ser executados dentro do Natural;
Comandos de Manipulação de Programas Fontes
CHECK
Checa a sintaxe do objeto atualmente na área de trabalho. Pode ser substituído por apenas ‘C’.
SAVE
Salva o programa fonte. Pode-se especificar o nome desejado logo após o comando. Pode ser substituído por apenas “SA”.
PURGE
O comando ‘PURGE’ é usado para deletar um ou mais programas fontes do Natural System File. O conteúdo existente em work-área não é alterado. Se o program-name não for especificado, será exibido um mapa com os programa fontes existentes no Natural System File, para especificação individual.
CATALOG
Cataloga o programa fonte da área de trabalho. Este comando checa a sintaxe e grava a versão executável do programa. Não grava o fonte. Pode ser substituído por apenas ‘CAT’.
Apaga apenas o módulo carga, mantendo o módulo fonte.
O programa TERM2 tem o programa fonte/objeto;
STOW
Checa a sintaxe do programa fonte da área de trabalho, salva e cataloga. Este comando executa internamente as funções dos comandos CHECK, SAVE e Catalog. Porém, ele somente salva o programa fonte se este não contiver nenhum erro.
Apaga o fonte e o módulo carga informado logo após o comando. Pode ser substituído por ‘SCR’.
READ
Lê e transfere para a área de trabalho o programa fonte definido após o comando.
Estou em um programa vamos dar um comando para ver outro programa;
Limpa a área de trabalho.
Renumera as linhas do programa fonte que estiver na work-area, em incrementos de 10.
Pesquisa um determinado ‘STRING’ dentro de um ou de todos os objetos de uma biblioteca.
RUN
Executa o programa atualmente da área de trabalho. O comando compila o programa antes de executá-lo. Pode ser substituído por apenas “R”.
GLOBALS
Exibe menu que está definido com uma série de ações e atributos que afetam tanto o resultado dos comandos como o resultado das instruções.
As principais funções dos parâmetros são:
· Definir característica dos relatórios e mapas;
· Estabelecer limites p/quantidades de registros lidos, de páginas de relatórios, etc.;
· Definir caracteres de controle.
Permite a exibição de mensagens de erro e comandos do Natural. Também pode ser acesso teclando “?”. Ambas as opções permitem a passagem do código diretamente (? 3148, por exemplo, exibe o conteúdo do código de erro 3148).
Mostra a profile de segurança corrente para o usuário.
Os programas fontes são formados por linhas de até 72 posições, numeradas por 4 dígitos. Esta numeração é gerada pelo Natural durante a criação do programa e é usada pelo Compilador e Editores, e tem importantes funções lógicas dos programas.
Dentro das linhas, a disposição das instruções (statements ou comandos de programas) é livre, não havendo instruções nem parâmetros posicionais.
Tela dos programas;
15:34:19 ***** NATURAL LIST COMMAND ***** 27/10/2015
User X105510 - LIST Objects in a Library - Library NAT2CUR
Cmd Name Type S/C SM Version User ID Date Time
--- T>_______ *__________ *__ * *______ *________ *__________ *________
__ TERM1 Map S/C S 3.1.05 U300293 2003-11-04 16:10:06
__ TERM2 Program S S 2.2.08 U801298 1998-07-24 17:20:24
__ TERM3 Program S S 2.2.08 U900459 1998-01-30 10:48:02
__ TERM4 Program S S 2.2.08 U801298 1998-07-30 15:27:40
__ TEST Program S/C S 4.1.04 U301693 2006-10-04 11:58:58
__ TESTE Program S/C S 2.2.08 U803198 1999-07-23 15:22:10
__ TESTETE Program S S 3.1.05 U300493 2003-11-10 14:58:59
__ TESTE01 Program S/C R 3.1.05 U105510 2004-09-27 11:01:47
__ TESTE02 Program S/C S 3.1.05 U105510 2004-10-01 15:31:50
__ TESTE1 Local S/C 2.2.08 U600169 1998-01-19 16:22:28
__ TESTE2 Program S/C S 3.1.05 U300993 2003-11-04 14:36:24
__ TESTE3 Subprogram S S 3.1.05 U300993 2003-10-14 10:49:09
__ TESTE4 Program S/C S 3.1.05 U300993 2003-11-04 14:49:55
__ TESTE5 Program S/C S 3.1.05 U300993 2003-11-04 14:51:21
14 Objects found
Top of List.
Command ===>
Enter-PF1---PF2---PF3---PF4---PF5---PF6---PF7---PF8---PF9---PF10--PF11--PF12---
Help Print Exit Sort -- - + ++ > Canc
Os tipos de objetos naturais são definidos abaixo.
- COPYCODE
Pedaço de código fonte, que pode ser aproveitado em vários programas. Único objeto Natural que não é compilado. Nos programas aonde o COPYCODE vai ser aproveitado, através do comando INCLUDE, ele será compilado, juntamente com o programa. - GLOBAL
Objeto utilizado para definição de variáveis. Todos os objetos que se referenciarem a uma GLOBAL, terão as mesmas variáveis, e estas manterão os valores após o término de um objeto, permitindo que um objeto altere valores e outro reconheça as alterações. - LOCAL
Objeto utilizado para definição de variáveis. A diferença entre uma LOCAL e uma GLOBAL é que valores das variáveis locais somente serão reconhecidos pelo objeto onde foram declaradas, deixando de existir quando do término do mesmo. - PARAMETER
Objeto utilizado para definição de variáveis que serão utilizadas entre programas e subprogramas. - MAP
Utilizado para entrada e exibição de dados. Permite a definição de Regras de Validação para os campos, inclusive com acesso à Base de Dados. - Helproutine
Tipo de objeto que permite ser definido como ajuda a um campo de entrada de dados. Quando o cursor estiver posicionado num campo e for teclado “?”, será chamada a HELPROUTINE que estiver associada ao campo. - PROGRAM
Principal objeto Natural. É a partir dele que são chamados os outros componentes. - SUBPROGRAM (N)
Objeto chamado por outro, com passagem de parâmetros, que permite o retorno de dados ao objeto chamador. - SUBROUTINE
Uma sub-rotina é um pedaço de código geralmente executado mais de uma vez ou de diversas partes de um programa. Pode ser interno, definido dentro de um programa ou fora dele (externo). Quando se escolhe a segunda opção, o tipo de objeto que conterá as sub-rotinas é o SUBROUTINE. As letras sublinhadas nos nomes dos objetos podem ser utilizadas logo após o comando EDIT, evitando a digitação completa do tipo de objeto.
Abaixo será destacado os comandos que podem ser executados dentro do Natural;
CHECK
Checa a sintaxe do objeto atualmente na área de trabalho. Pode ser substituído por apenas ‘C’.
NAT0169 Error in format/length or in EM, HD, PM definition.
> check > + Program TERM2 Lib NAT2CUR
Top ....+....1....+....2....+....3....+....4....+....5....+....6....+....7..
0010 DEFINE DATA
0020 LOCAL USING AAEL001
0030 LOCAL
0040 01 #INDICE (N2)
0050 01 #QUANT(N2)
0060 01 #SALARIO (N10)
E 0070 01 #SALARIO-MEDIO (N405)
0080 01 #EXTENSO (A50)
0090 END-DEFINE
0100 FORMAT PS=20 LS=133
0110 READ EMPLOYEES-VIEW BY PERSONNEL-ID
0120 DISPLAY SALARY(1:12)
0130 #SALARIO := 0
0140 #QUANT := 0
0150 #SALARIO := 0
0160 FOR #INDICE 1 TO 12
0170 IF SALARY(#INDICE) NE 0
0180 #SALARIO := #SALARIO + SALARY(#INDICE)
0190 ADD 1 TO #QUANT
0200 END-IF
....+....1....+....2....+....3....+....4....+....5....+... S 34 L 1
SAVE
Salva o programa fonte. Pode-se especificar o nome desejado logo após o comando. Pode ser substituído por apenas “SA”.
> save > + Program TERM2 Lib NAT2CUR
Top ....+....1....+....2....+....3....+....4....+....5....+....6....+....7..
0010 DEFINE DATA
0020 LOCAL USING AAEL001
0030 LOCAL
0040 01 #INDICE (N2)
0050 01 #QUANT(N2)
0060 01 #SALARIO (N10)
0070 01 #SALARIO-MEDIO (N4)
0080 01 #EXTENSO (A50)
0090 END-DEFINE
0100 FORMAT PS=20 LS=133
0110 READ EMPLOYEES-VIEW BY PERSONNEL-ID
0120 DISPLAY SALARY(1:12)
0130 #SALARIO := 0
0140 #QUANT := 0
0150 #SALARIO := 0
0160 FOR #INDICE 1 TO 12
0170 IF SALARY(#INDICE) NE 0
0180 #SALARIO := #SALARIO + SALARY(#INDICE)
0190 ADD 1 TO #QUANT
0200 END-IF
....+....1....+....2....+....3....+....4....+....5....+... S 34 L 1
PURGE
O comando ‘PURGE’ é usado para deletar um ou mais programas fontes do Natural System File. O conteúdo existente em work-área não é alterado. Se o program-name não for especificado, será exibido um mapa com os programa fontes existentes no Natural System File, para especificação individual.
> purge TERM2 > + Program TERM2 Lib NAT2CUR
Top ....+....1....+....2....+....3....+....4....+....5....+....6....+....7..
0010 DEFINE DATA
0020 LOCAL USING AAEL001
0030 LOCAL
0040 01 #INDICE (N2)
0050 01 #QUANT(N2)
0060 01 #SALARIO (N10)
0070 01 #SALARIO-MEDIO (N4)
0080 01 #EXTENSO (A50)
0090 END-DEFINE
0100 FORMAT PS=20 LS=133
0110 READ EMPLOYEES-VIEW BY PERSONNEL-ID
0120 DISPLAY SALARY(1:12)
0130 #SALARIO := 0
0140 #QUANT := 0
0150 #SALARIO := 0
0160 FOR #INDICE 1 TO 12
0170 IF SALARY(#INDICE) NE 0
0180 #SALARIO := #SALARIO + SALARY(#INDICE)
0190 ADD 1 TO #QUANT
0200 END-IF
....+....1....+....2....+....3....+....4....+....5....+... S 34 L 1
Deletado; MORE
15:57:21 ***** NATURAL PURGE COMMAND ***** 27/10/2015
Library NAT2CUR - Delete Sources - DBID 220 FNR 15
Number Source Message
------ -------- ---------------------------
1 TERM2 deleted
• Comandos de Manipulação de Programas Objetos
CATALOG
Cataloga o programa fonte da área de trabalho. Este comando checa a sintaxe e grava a versão executável do programa. Não grava o fonte. Pode ser substituído por apenas ‘CAT’.
> CATALOG > + Program TERM2 Lib NAT2CUR
Top ....+....1....+....2....+....3....+....4....+....5....+....6....+....7..
0010 DEFINE DATA
0020 LOCAL USING AAEL001
0030 LOCAL
0040 01 #INDICE (N2)
0050 01 #QUANT(N2)
0060 01 #SALARIO (N10)
0070 01 #SALARIO-MEDIO (N5)
0080 01 #EXTENSO (A50)
0090 END-DEFINE
0100 FORMAT PS=20 LS=133
0110 READ EMPLOYEES-VIEW BY PERSONNEL-ID
0120 * DISPLAY SALARY(1:12)
0130 #SALARIO := 0
0140 #QUANT := 0
0150 #SALARIO := 0
0160 FOR #INDICE 1 TO 12
0170 IF SALARY(#INDICE) NE 0
0180 #SALARIO := #SALARIO + SALARY(#INDICE)
0190 ADD 1 TO #QUANT
0200 END-IF
....+....1....+....2....+....3....+....4....+....5....+... S 34 L 1
UNCATALOGApaga apenas o módulo carga, mantendo o módulo fonte.
O programa TERM2 tem o programa fonte/objeto;
16:07:47 ***** NATURAL LIST COMMAND ***** 27/10/2015
User X105510 - LIST Objects in a Library - Library NAT2CUR
Cmd Name Type S/C SM Version User ID Date Time
--- TERM2>___ *__________ *__ * *______ *________ *__________ *________
__ TERM2 Program S/C S 4.1.04 U105510 2015-10-27 16:07:45
__ TERM3 Program S S 2.2.08 U900459 1998-01-30 10:48:02
__ TERM4 Program S S 2.2.08 U801298 1998-07-30 15:27:40
__ TEST Program S/C S 4.1.04 U693016 2006-10-04 11:58:58
__ TESTE Program S/C S 2.2.08 U198031 1999-07-23 15:22:10
__ TESTETE Program S S 3.1.05 U493004 2003-11-10 14:58:59
__ TESTE01 Program S/C R 3.1.05 U105510 2004-09-27 11:01:47
__ TESTE02 Program S/C S 3.1.05 U105510 2004-10-01 15:31:50
__ TESTE1 Local S/C 2.2.08 U600169 1998-01-19 16:22:28
__ TESTE2 Program S/C S 3.1.05 U300993 2003-11-04 14:36:24
__ TESTE3 Subprogram S S 3.1.05 U300993 2003-10-14 10:49:09
__ TESTE4 Program S/C S 3.1.05 U300993 2003-11-04 14:49:55
__ TESTE5 Program S/C S 3.1.05 U300993 2003-11-04 14:51:21
__ TESTE6 Program S/C S 3.1.05 U300993 2003-11-04 16:22:51
14 Objects found
Top of List.
Command ===>
Enter-PF1---PF2---PF3---PF4---PF5---PF6---PF7---PF8---PF9---PF10--PF11--PF12---
Help Print Exit Sort -- - + ++ > Canc
O TERM2 tem fonte(s) e objeto(c) 16:07:47 ***** NATURAL LIST COMMAND ***** 27/10/2015
User 0105510 - LIST Objects in a Library - Library NAT2CUR
Cmd Name Type S/C SM Version User ID Date Time
--- TERM1>___ *__________ *__ * *______ *________ *__________ *________
__ TERM1 Map S/C S 3.1.05 U293002 2003-11-04 16:10:06
__ TERM2 Program S/C S 4.1.04 U105510 2015-10-27 16:07:45
__ TERM3 Program S S 2.2.08 U900459 1998-01-30 10:48:02
__ TERM4 Program S S 2.2.08 U801298 1998-07-30 15:27:40
4 Objects found
Top of List.
Command ===> UNCATALOG TERM2
Enter-PF1---PF2---PF3---PF4---PF5---PF6---PF7---PF8---PF9---PF10--PF11--PF12---
Help Print Exit Sort -- - + ++ > Canc
Deletado o objeto MORE
16:09:13 ***** NATURAL UNCAT COMMAND ***** 27/10/2015
Library NAT2CUR - Delete Objects - DBID 230 FNR 15
Number Object Message
------ -------- ---------
1 TERM2 deleted
Agora o TERM2 não tem mais o objeto (C);
16:09:59 ***** NATURAL LIST COMMAND ***** 27/10/2015
User 0105510 - LIST Objects in a Library - Library NAT2CUR
Cmd Name Type S/C SM Version User ID Date Time
--- TERM*____ *__________ *__ * *______ *________ *__________ *________
__ TERM1 Map S/C S 3.1.05 U293002 2003-11-04 16:10:06
__ TERM2 Program S S 4.1.04 U105510 2015-10-27 16:07:45
__ TERM3 Program S S 2.2.08 U900459 1998-01-30 10:48:02
__ TERM4 Program S S 2.2.08 U801298 1998-07-30 15:27:40
4 Objects found
Top of List.
Command ===>
Enter-PF1---PF2---PF3---PF4---PF5---PF6---PF7---PF8---PF9---PF10--PF11--PF12---
Help Print Exit Sort -- - + ++ > Canc
Comandos de Manipulação Mista de Programas
STOW
Checa a sintaxe do programa fonte da área de trabalho, salva e cataloga. Este comando executa internamente as funções dos comandos CHECK, SAVE e Catalog. Porém, ele somente salva o programa fonte se este não contiver nenhum erro.
> stow > + Program TERM2 Lib NAT2CUR
Top ....+....1....+....2....+....3....+....4....+....5....+....6....+....7..
0010 DEFINE DATA
0020 LOCAL USING AAEL001
0030 LOCAL
0040 01 #INDICE (N2)
0050 01 #QUANT(N2)
0060 01 #SALARIO (N10)
0070 01 #SALARIO-MEDIO (N5)
0080 01 #EXTENSO (A50)
0090 END-DEFINE
0100 FORMAT PS=20 LS=133
0110 READ EMPLOYEES-VIEW BY PERSONNEL-ID
0120 * DISPLAY SALARY(1:12)
0130 #SALARIO := 0
0140 #QUANT := 0
0150 #SALARIO := 0
0160 FOR #INDICE 1 TO 12
0170 IF SALARY(#INDICE) NE 0
0180 #SALARIO := #SALARIO + SALARY(#INDICE)
0190 ADD 1 TO #QUANT
0200 END-IF
....+....1....+....2....+....3....+....4....+....5....+... S 34 L 1
SCRATCHApaga o fonte e o módulo carga informado logo após o comando. Pode ser substituído por ‘SCR’.
> scratch > + Program TERM2 Lib NAT2CUR
Top ....+....1....+....2....+....3....+....4....+....5....+....6....+....7..
0010 DEFINE DATA
0020 LOCAL USING AAEL001
0030 LOCAL
0040 01 #INDICE (N2)
0050 01 #QUANT(N2)
0060 01 #SALARIO (N10)
0070 01 #SALARIO-MEDIO (N5)
0080 01 #EXTENSO (A50)
0090 END-DEFINE
0100 FORMAT PS=20 LS=133
0110 READ EMPLOYEES-VIEW BY PERSONNEL-ID
0120 * DISPLAY SALARY(1:12)
0130 #SALARIO := 0
0140 #QUANT := 0
0150 #SALARIO := 0
0160 FOR #INDICE 1 TO 12
0170 IF SALARY(#INDICE) NE 0
0180 #SALARIO := #SALARIO + SALARY(#INDICE)
0190 ADD 1 TO #QUANT
0200 END-IF
....+....1....+....2....+....3....+....4....+....5....+... S 34 L 1
Comandos de Transferência/Limpeza de Work-Area
READ
Lê e transfere para a área de trabalho o programa fonte definido após o comando.
Estou em um programa vamos dar um comando para ver outro programa;
> read term3 > + Program TERM2 Lib NAT2CUR
Top ....+....1....+....2....+....3....+....4....+....5....+....6....+....7..
0010 DEFINE DATA
0020 LOCAL USING AAEL001
0030 LOCAL
0040 01 #INDICE (N2)
0050 01 #QUANT(N2)
0060 01 #SALARIO (N10)
0070 01 #SALARIO-MEDIO (N5)
0080 01 #EXTENSO (A50)
0090 END-DEFINE
0100 FORMAT PS=20 LS=133
0110 READ EMPLOYEES-VIEW BY PERSONNEL-ID
0120 * DISPLAY SALARY(1:12)
0130 #SALARIO := 0
0140 #QUANT := 0
0150 #SALARIO := 0
0160 FOR #INDICE 1 TO 12
0170 IF SALARY(#INDICE) NE 0
0180 #SALARIO := #SALARIO + SALARY(#INDICE)
0190 ADD 1 TO #QUANT
0200 END-IF
....+....1....+....2....+....3....+....4....+....5....+... S 34 L 1
Feito, estamos em outro programa; > > + Program TERM3 Lib NAT2CUR
Top ....+....1....+....2....+....3....+....4....+....5....+....6....+....7..
0010 DEFINE DATA
0020 LOCAL
0030 01 #TEXTO (A100)
0040 01 REDEFINE #TEXTO
0050 02 #LINHA1 (A50)
0060 02 #LINHA2 (A50)
0070 01 REDEFINE #TEXTO
0080 02 #LETRA(A1/100)
0090 01 #INDICE(N3)
0100 01 #QTDE(N3)
0110 END-DEFINE
0120 REPEAT
0130 SET KEY PF3
0140 INPUT
0150 10/10 'TEXTO:' #LINHA1 (AD=M)
0160 11/10 ' ' #LINHA2 (AD=M)
0170 IF *PF-KEY EQ 'PF3'
0180 STOP
0190 END-IF
0200 #INDICE := 0
....+....1....+....2....+....3....+....4....+....5....+... S 33 L 1
CLEARLimpa a área de trabalho.
> clear > + Program TERM2 Lib NAT2CUR
Top ....+....1....+....2....+....3....+....4....+....5....+....6....+....7..
0010 DEFINE DATA
0020 LOCAL USING AAEL001
0030 LOCAL
0040 01 #INDICE (N2)
0050 01 #QUANT(N2)
0060 01 #SALARIO (N10)
0070 01 #SALARIO-MEDIO (N5)
0080 01 #EXTENSO (A50)
0090 END-DEFINE
0100 FORMAT PS=20 LS=133
0110 READ EMPLOYEES-VIEW BY PERSONNEL-ID
0120 * DISPLAY SALARY(1:12)
0130 #SALARIO := 0
0140 #QUANT := 0
0150 #SALARIO := 0
0160 FOR #INDICE 1 TO 12
0170 IF SALARY(#INDICE) NE 0
0180 #SALARIO := #SALARIO + SALARY(#INDICE)
0190 ADD 1 TO #QUANT
0200 END-IF
....+....1....+....2....+....3....+....4....+....5....+... S 34 L 1
Feito, depois do clear; > > + Program Lib NAT2CUR
All ....+....1....+....2....+....3....+....4....+....5....+....6....+....7..
0010
0020
0030
0040
0050
0060
0070
0080
0090
0100
0110
0120
0130
0140
0150
0160
0170
0180
0190
0200
....+....1....+....2....+....3....+....4....+....5....+... S 0 L 1
RENUMBER (n)Renumera as linhas do programa fonte que estiver na work-area, em incrementos de 10.
> RENUMBER > + Program TERM2 Lib NAT2CUR
Top ....+....1....+....2....+....3....+....4....+....5....+....6....+....7..
0010 * -------------------------------------------------------------
0010 * RENUMBER - teste para ver o que faz este comando natural
0010 * -------------------------------------------------------------
0010 DEFINE DATA
0020 LOCAL USING AAEL001
0030 LOCAL
0040 01 #INDICE (N2)
0050 01 #QUANT(N2)
0060 01 #SALARIO (N10)
0070 01 #SALARIO-MEDIO (N5)
0080 01 #EXTENSO (A50)
0090 END-DEFINE
0100 FORMAT PS=20 LS=133
0110 READ EMPLOYEES-VIEW BY PERSONNEL-ID
0120 * DISPLAY SALARY(1:12)
0130 #SALARIO := 0
0140 #QUANT := 0
0150 #SALARIO := 0
0160 FOR #INDICE 1 TO 12
0170 IF SALARY(#INDICE) NE 0
....+....1....+....2....+....3....+....4....+....5....+... S 37 L 1
Reordenou a ordem das linhas; > > + Program TERM2 Lib NAT2CUR
Top ....+....1....+....2....+....3....+....4....+....5....+....6....+....7..
0010 * -------------------------------------------------------------
0020 * RENUMBER - TESTE PARA VER O QUE FAZ ESTE COMANDO NATURAL
0030 * -------------------------------------------------------------
0040 DEFINE DATA
0050 LOCAL USING AAEL001
0060 LOCAL
0070 01 #INDICE (N2)
0080 01 #QUANT(N2)
0090 01 #SALARIO (N10)
0100 01 #SALARIO-MEDIO (N5)
0110 01 #EXTENSO (A50)
0120 END-DEFINE
0130 FORMAT PS=20 LS=133
0140 READ EMPLOYEES-VIEW BY PERSONNEL-ID
0150 * DISPLAY SALARY(1:12)
0160 #SALARIO := 0
0170 #QUANT := 0
0180 #SALARIO := 0
0190 FOR #INDICE 1 TO 12
0200 IF SALARY(#INDICE) NE 0
....+....1....+....2....+....3....+....4....+....5....+... S 37 L 1
SCANPesquisa um determinado ‘STRING’ dentro de um ou de todos os objetos de uma biblioteca.
> scan JUSTIFIED > + Program TERM2 Lib NAT2CUR
Top ....+....1....+....2....+....3....+....4....+....5....+....6....+....7..
0010 DEFINE DATA
0020 LOCAL USING AAEL001
0030 LOCAL
0040 01 #INDICE (N2)
0050 01 #QUANT(N2)
0060 01 #SALARIO (N10)
0070 01 #SALARIO-MEDIO (N5)
0080 01 #EXTENSO (A50)
0090 END-DEFINE
0100 FORMAT PS=20 LS=133
0110 READ EMPLOYEES-VIEW BY PERSONNEL-ID
0120 * DISPLAY SALARY(1:12)
0130 #SALARIO := 0
0140 #QUANT := 0
0150 #SALARIO := 0
0160 FOR #INDICE 1 TO 12
0170 IF SALARY(#INDICE) NE 0
0180 #SALARIO := #SALARIO + SALARY(#INDICE)
0190 ADD 1 TO #QUANT
0200 END-IF
....+....1....+....2....+....3....+....4....+....5....+... S 34 L 1
Mostra o que achou, linha 0300 e a 320 tem a palavra JUSTIFIED > > + Program TERM2 Lib NAT2CUR
Bot ....+....1....+....2....+....3....+....4....+....5....+....6....+....7..
0150 #SALARIO := 0
0160 FOR #INDICE 1 TO 12
0170 IF SALARY(#INDICE) NE 0
0180 #SALARIO := #SALARIO + SALARY(#INDICE)
0190 ADD 1 TO #QUANT
0200 END-IF
0210 END-FOR
0220 IF #SALARIO NE 0
0230 #SALARIO-MEDIO := #SALARIO / #QUANT
0240 ELSE
0250 #SALARIO-MEDIO := 0
0260 END-IF
0270 PERFORM EXTENSO #SALARIO-MEDIO #EXTENSO
0280 WRITE PERSONNEL-ID 6X FIRST-NAME 1X #EXTENSO
0290 END-READ
S 0300 WRITE TITLE LEFT JUSTIFIED // 30T 'RELACAO DE SALARIO MEDIO'
0310 / / 1T 'IDENTIFICACAO' 'NOME'17X 'SALARIO MEDIO'
S 0320 WRITE TRAILER LEFT JUSTIFIED
0330 'ADABASP1' 68T 'PAG' *PAGE-NUMBER
0340 END
....+....1....+....2....+....3....+....4....+....5....+... S 34 L 15
Comandos de Execução de Programas
RUN
Executa o programa atualmente da área de trabalho. O comando compila o programa antes de executá-lo. Pode ser substituído por apenas “R”.
> run > + Program TERM2 Lib NAT2CUR
Top ....+....1....+....2....+....3....+....4....+....5....+....6....+....7..
0010 DEFINE DATA
0020 LOCAL USING AAEL001
0030 LOCAL
0040 01 #INDICE (N2)
0050 01 #QUANT(N2)
0060 01 #SALARIO (N10)
0070 01 #SALARIO-MEDIO (N5)
0080 01 #EXTENSO (A50)
0090 END-DEFINE
0100 FORMAT PS=20 LS=133
0110 READ EMPLOYEES-VIEW BY PERSONNEL-ID
0120 * DISPLAY SALARY(1:12)
0130 #SALARIO := 0
0140 #QUANT := 0
0150 #SALARIO := 0
0160 FOR #INDICE 1 TO 12
0170 IF SALARY(#INDICE) NE 0
0180 #SALARIO := #SALARIO + SALARY(#INDICE)
0190 ADD 1 TO #QUANT
0200 END-IF
....+....1....+....2....+....3....+....4....+....5....+... S 34 L 1
Feito, foi rodando; MORE
PAG 3
1054 BRUNNO
1055 CRISTIAN
1056 CLAUDETE
11 WILLIAN TRINTA
11100102 EDGAR QUARENTA E CINCO MIL E OITOCENTOS E TRINTA E
11100105 JUNIOR ARAUJO SESSENTA E SETE MIL
11100106 REINER QUARENTA E SEIS MIL E SEISCENTOS E VINTE E C
11100107 HELGA TRINTA E QUATRO MIL
11100108 WOLFGANG QUARENTA E QUINHENTOS
11100109 CHRISTA TRINTA E SEIS MIL E SETECENTOS E CINQUENTA
11100110 GEORG SESSENTA E SETE MIL E CENTO E SESSENTA E SEI
11100111 GABRIELE TRINTA E SETE MIL E DUZENTOS E CINQUENTA
11100112 GERHARDT CINQUENTA E TREZENTOS E SETENTA E CINCO
11100113 KLAUS QUARENTA E NOVE MIL E SETECENTOS E CINQUENTA
11100114 KLAUS QUARENTA E NOVE MIL E QUINHENTOS
11100115 MARION TRINTA E SETE MIL
11100116 ROLAND QUARENTA E CINCO MIL E QUINHENTOS
11100118 ROLF QUARENTA E UM MIL E SETECENTOS E CINQUENTA
Comandos de Processos Especiais
GLOBALS
Exibe menu que está definido com uma série de ações e atributos que afetam tanto o resultado dos comandos como o resultado das instruções.
As principais funções dos parâmetros são:
· Definir característica dos relatórios e mapas;
· Estabelecer limites p/quantidades de registros lidos, de páginas de relatórios, etc.;
· Definir caracteres de controle.
> GLOBALS > + Program TERM2 Lib NAT2CUR
Top ....+....1....+....2....+....3....+....4....+....5....+....6....+....7..
0010 DEFINE DATA
0020 LOCAL USING AAEL001
0030 LOCAL
0040 01 #INDICE (N2)
0050 01 #QUANT(N2)
0060 01 #SALARIO (N10)
0070 01 #SALARIO-MEDIO (N5)
0080 01 #EXTENSO (A50)
0090 END-DEFINE
0100 FORMAT PS=20 LS=133
0110 READ EMPLOYEES-VIEW BY PERSONNEL-ID
0120 * DISPLAY SALARY(1:12)
0130 #SALARIO := 0
0140 #QUANT := 0
0150 #SALARIO := 0
0160 FOR #INDICE 1 TO 12
0170 IF SALARY(#INDICE) NE 0
0180 #SALARIO := #SALARIO + SALARY(#INDICE)
0190 ADD 1 TO #QUANT
0200 END-IF
....+....1....+....2....+....3....+....4....+....5....+... S 30 L 1
Resultado
16:35:23 ***** NATURAL GLOBALS COMMAND ***** 27/10/2015
- Session Parameters -
(CC) Cond.Prog.Execution ....... OFF (MT) Max.CPU Time ....... ______60
(CF) Term.Control Character .... % (NC) Nat.Sys.Commands ........ OFF
(DC) Dec. Character .............. , (OPF) Overw.Prot.Fields ...... ON
(DFOUT) Date Format Output ....... S (PD) Page Dataset ............ _50
(DFSTACK) Date Format Stack Cmd .. S (PM) Print Mode ............... RP
(DFTITLE) Date Format Title ...... S (PS) Page Size ............... _23
(DU) Dump Generation ......... OFF (REINP) Reinput on Error ..... ON
(EJ) Page Eject ................ ON (SA) Sound Alarm ............. OFF
(FS) Default Format ............ ON (SF) Spacing Factor ........... _1
(FCDP) FC on Dyn.Prot.Fields ... ON (SL) Source Line Length ...... _72
(IA) Input Assign ................ = (SM) Structured Mode ......... ON
(ID) Input Delimiter ............. | (TS) Translate Sys.Prog ...... OFF
(IM) Input Mode .................. F (WH) Wait on Hold ............ OFF
(LE) Limit Error ............... OFF (ZD) Zero Division ........... ON
(LS) Line Size ................. _80 (ZP) Zero Printing ........... ON
(LT) Limit .............. __99999999
Command ===>
Enter-PF1---PF2---PF3---PF4---PF5---PF6---PF7---PF8---PF9---PF10--PF11--PF12---
Help Print Exit Updat Canc
HELPPermite a exibição de mensagens de erro e comandos do Natural. Também pode ser acesso teclando “?”. Ambas as opções permitem a passagem do código diretamente (? 3148, por exemplo, exibe o conteúdo do código de erro 3148).
> HELP > + Program TERM2 Lib NAT2CUR
Top ....+....1....+....2....+....3....+....4....+....5....+....6....+....7..
0010 DEFINE DATA
0020 LOCAL USING AAEL001
0030 LOCAL
0040 01 #INDICE (N2)
0050 01 #QUANT(N2)
0060 01 #SALARIO (N10)
0070 01 #SALARIO-MEDIO (N5)
0080 01 #EXTENSO (A50)
0090 END-DEFINE
0100 FORMAT PS=20 LS=133
0110 READ EMPLOYEES-VIEW BY PERSONNEL-ID
0120 * DISPLAY SALARY(1:12)
0130 #SALARIO := 0
0140 #QUANT := 0
0150 #SALARIO := 0
0160 FOR #INDICE 1 TO 12
0170 IF SALARY(#INDICE) NE 0
0180 #SALARIO := #SALARIO + SALARY(#INDICE)
0190 ADD 1 TO #QUANT
0200 END-IF
....+....1....+....2....+....3....+....4....+....5....+... S 30 L 1
Resultado
16:35:51 ***** NATURAL HELP UTILITY ***** 27/10/2015
- Natural Program Editor -
------------------------------------------------------------------------------
Code Function
C Command Line
E Edit Commands
L Line Commands
K Special PF-Key Functions
S Cursor-Sensitive Commands
. Exit
Code .. _
------------------------------------------------------------------------------
Enter-PF1---PF2---PF3---PF4---PF5---PF6---PF7---PF8---PF9---PF10--PF11--PF12---
Help Menu Exit - + Canc
PROFILEMostra a profile de segurança corrente para o usuário.
> PROFILE > + Program TERM2 Lib NAT2CUR
Top ....+....1....+....2....+....3....+....4....+....5....+....6....+....7..
0010 DEFINE DATA
0020 LOCAL USING AAEL001
0030 LOCAL
0040 01 #INDICE (N2)
0050 01 #QUANT(N2)
0060 01 #SALARIO (N10)
0070 01 #SALARIO-MEDIO (N5)
0080 01 #EXTENSO (A50)
0090 END-DEFINE
0100 FORMAT PS=20 LS=133
0110 READ EMPLOYEES-VIEW BY PERSONNEL-ID
0120 * DISPLAY SALARY(1:12)
0130 #SALARIO := 0
0140 #QUANT := 0
0150 #SALARIO := 0
0160 FOR #INDICE 1 TO 12
0170 IF SALARY(#INDICE) NE 0
0180 #SALARIO := #SALARIO + SALARY(#INDICE)
0190 ADD 1 TO #QUANT
0200 END-IF
....+....1....+....2....+....3....+....4....+....5....+... S 30 L 1
Resultado
16:36:17 ***** NATURAL EDITORS ***** 27/10/2015
- Editor Profile -
Profile Name .. X105510_
PF and PA Keys
PF1 ... HELP___________ PF2 ... _______________ PF3 ... EXIT___________
PF4 ... _______________ PF5 ... _______________ PF6 ... _______________
PF7 ... -______________ PF8 ... +______________ PF9 ... _______________
PF10 .. SC=____________ PF11 .. _______________ PF12 .. CANCEL_________
PF13 .. _______________ PF14 .. _______________ PF15 .. MENU___________
PF16 .. _______________ PF17 .. _______________ PF18 .. _______________
PF19 .. --_____________ PF20 .. ++_____________ PF21 .. _______________
PF22 .. _______________ PF23 .. _______________ PF24 .. _______________
PA1 ... _______________ PA2 ... SCAN___________ PA3 ... _______________
Automatic Functions
Auto Renumber .. Y Auto Save Numbers .. 0__ Source Save into .. EDITWORK
Additional Options .. N
Command ===>
Enter-PF1---PF2---PF3---PF4---PF5---PF6---PF7---PF8---PF9---PF10--PF11--PF12---
Help Exit AddOp Save Flip Del Canc
Clique Aqui - Clique Aqui
0 comentários:
Enviar um comentário